I learned about Kerckhoffs’ principle–that a secure system should be secure even when known by an adversary–in in my undergrad education and it’s a great guiding principle. I didn’t realize until recently, however, that he had more to say about security schemes than that. One of his principles, “…the system must be easy to use and should not be stressful to use or require its users to know and comply with a long list of rules,” is still very relevant. I wish equal or greater emphasis were placed on this point considering that so many people have accepted risky security postures simply because they don’t understand how to implement a scheme properly.
Of course, there are those valiant engineers and designers working to help people keep control of their privacy and security by making strong cryptographic tools accessible to people who have other things to worry about than technical details of a protocol. However, the fact that we feel compelled to highlight the efforts of these tool-makers only underscores the need for instilling the principle of usability in software engineering or computer science education. It’s not like there’s no room for it in the curriculum since we teach “Current Issues” courses and the like, and anyway just teaching the theory is never enough. Students have to learn how to make practical systems as well.