加密算法与协议

在保证系统安全时,加密算法与协议通常是必需的,特别是在通过Internet一类不可靠网络进行通信时。如果可能,使用过程加密来防止过程拦截,并隐藏认证信息,这样还同时支持了对隐私的保护。

要使加密算法与协议变得正确是困难的,所以不要创建自己的加密算法与协议。作为替代,应当使用现有的遵从标准的协议,如SSL、SSH、IPSec、GnuPG/PGP和Kerberos。只使用公开发表并经受了多年攻击考验的加密算法(比如三重DES,它还不受专利的困扰)。特别是不要创建你自己的加密算法,除非你是密码学专家而且知道自己在做什么;创建这样的算法是专家才能胜任的工作。

与之相关的一个注意事项是,如果必须创建自己的通信协议,应该检查一下此前出现过什么问题。Bellovin [1989]对TCP/IP协议族安全问题的评论一类的经典文献可能会有所帮助,同样的文献还有Bruce Schneier [1998]和Mudge对Microsoft的PPTP实现的破坏以及随后的工作。当然,要确保任何新的协议都接受了广泛的审阅,并尽量重用已有的工作。

对于背景信息和代码,可能应该看一下经典文献“应用密码学”[Schneier 1996]。Linux特有的资源包括Linux加密HOWTO http://marc.mutz.com/Encryption-HOWTO/