如何设计最安全的加密机制
人类的聪明才智无法编制出人类智慧无法破译的密码。
----埃德加.阿兰.伯弈, 1841
构建无法破解的密码体系,是众多数学家、计算机科学家和工程师们所追求的极致目标。事实上,密码学的发展史与人类的文字史一样长,从古代的换位法(历史上能追溯的比较早的凯撒密码就是利用把字母移动一定的位数来实现加密和解密的),到工业时代的机械轮转法(工业时代的大多数密码机使用的方法,如二战时期著名的Enigma密码机),再到现代的高级密码标准的建立,密码学的发展也反映着人类智慧的进步。
正如信息论创始人香龙所说,设计一个“出色”的密码系统,仅仅依靠确信“标准的密码分析方法无法破译”是不够的,我们必须确保“任何方法都无法轻易破解”。这其实是一项非常艰难的任务,因为“任何方法”也包括我们今天尚未发现的方法。
实际上,只有一次一密乱码本才是真正不可破解的密码系统,也即无论密码分析者获得多少密文,无论密码分析者拥有多么强大的计算能力,他都没办法得出明文的任何信息。然而一次一密乱码本要求密钥的长度至少与明文一样长,密钥的传输和保存成了这种密码体系难以得到应用的关键。
在今天的密码学中,我们更关心在“计算上”不可破译的密码系统,也即一个密码系统在有限的时间和有限的计算资源的情况下难以破译,则我们认为这个密码系统是计算安全的。
在计算机科学中,“难以计算”往往指的是计算复杂度是与问题的规模成指数级的关系(也即问题的规模每增加一个点,计算复杂度则会翻倍),“易于计算”指的是计算复杂度与问题的规模是多项式级别的关系(也即问题的规模每增加一个点,计算复杂度则以线性或有