为什么密码学中总有个假定,算法是对方已知的,密钥是可以更改的?

因为在很久以前,密码算法是靠人工运算的,更改算法每次都需要培训一堆人,很麻烦。所以变态的需求催生了变态的解法——算法彻底公开,靠密钥保密。

还记得很多谍战片中的“密码本”么?如果在现代,那就只一个记载着256个字符的纸条。因为整个过程其实地球人都知道,双方只是相差一个纸条上的256个字符而已。

觉得这点东西不靠谱,随便记忆一下就搞定了?你想想,以前的密码本也可以照相阿。是重建一个密码本,并且分发给各处安全,还是重建一个纸条并分发方便?

现代?其实还是很有意义的。因为很多遗留系统/硬件模块中的算法会长达10多年不变,如果依靠算法保密来保护安全性,哪天泄露了不是开玩笑的。上千万的硬件模块,没有人维护的遗留系统,都要整死人的。

而且算法本身也必须足够强,如果没有公开算法,“足够强”这个事情本身就是含糊不清的。没有人见过你这个算法,没有人讨论,谁知道是不是“够”安全呢?md5以前一直作为哈希的标准,我们都觉得够安全了,但是哈希碰撞的研究使得现在基本都推荐sha256了。同样,DES也不要再用了,换成AES吧。