Loading...

现代密码学

标签:

聊到密码学,就得提起一位祖师爷——Shannon(香农)。他在 1949 年发表的《保密系统的通信理论》一书,用数学的方式将密码学划分为古典密码现代密码。但因为现代密码学的理论听起来太抽象了,甚至有点过于离谱,诞生后被晾了三十多年才被人挖到这块宝藏。

C.E. Shannon, “Communication theory of secrecy systems,” in The Bell System Technical Journal, vol. 28, no. 4, pp. 656-715, Oct. 1949, doi: 10.1002/j.1538-7305.1949.tb00928.x.

比如现代密码学中的柯克霍夫原则(Kerckhoffs’s principle)讲:密码系统应该被所有人都知道加密方式是什么。可能大家听了觉得这个观点多少有点抽象:加密方式都让人知道了,还研究什么呀。再比如 Vernam 提出的符合香农完善保密的一次一密理论,听起来更抽象,用一次密码就重新更换一次密码。

古典密码

古典密码的时代,密码学的概念是比较模糊的,尽管大量被用在军事领域,但加密方式更像是一种艺术行为。反正就一个理念:瞎换乱转,完全没科学理论支撑

古典密码被总结为替换式密码移项式密码又或者两者混合。顾名思义,前者就是将某些字符替换成其他的字符,而后者就是将字符原本所在位置向前向后移动某个位置,从而达到“加密”的作用。

但这样的古典密码存在一个致命的弱点,那就是太“对称”了。这个“对称”有两层含义,第一个是古典密码加密可逆的,一旦知道怎么加密,很容易就可以反推出怎么解密。另一个则是,不管你如何对明文进行替换,总会形成一种明文和密文的一一对应关系,但这也存在一个很大的弊端,那就是语言的使用是有规律性的。

比如在英语文章中,字母“E”在单词中的使用频率是比较高的,而像“Q”,“Z”这些字母使用频率比较低的。所以,古典密码其实存在很明显的缺陷,但是过去还没有人很好地解决这个问题。有兴趣的小伙伴可以了解下二战时期,古典密码的巅峰之作——恩格玛机(Enigma)。恩格玛机使用了“一次加密”的方法,也就是每加密一次,就换一次密码。在那个没有计算机的年代,想要靠暴力穷举来破解几乎是不可能的(要是用这种方法去破解,二战估计都要打完了。emmm 也有可能二战结束得更晚)。但了解二战的小伙伴都知道,恩格玛机最终还是被破解了,甚至没等到计算机的诞生。1940 年,计算机之父,英国数学家Turing(图灵)与众多科学家破解了恩格玛机。

现代密码学

现代密码学中有一个研究方向——非对称加密,也就是加密解密不是“对称”的

非对称加密

这种加密方式,在古典密码的基础上,引入了密钥的概念,将密钥分为公钥私钥,其中公钥用来加密私钥用来解密。这样即便是把加密方式公开出去,只要私钥仍然安全,这个加密系统就不会被破解。

这也说明了现代密码学家们公开加密方式的做法,其实是不会影响到加密系统安全性的。

Diffie 和 Hellman 在 1976 年的开创性论文 New Directions in Cryptography(密码学的新方向)。在《密码学新方向》一文中,Diffie 和 Hellman 展示了一种算法,表明非对称加密或是公共密钥加密是可行的。这个算法中,一个公钥不是秘密的、可以被自由分享(被用来进行加密),而一个永远不需要离开接收装置的私钥被用来进行解密。虽然公钥决定了私钥,但是这种不对称加密系统在设计时使得从公钥中计算私钥变成一件不可行的事。Diffie 和 Hellman 在这篇论文中指出了密码学的未来发展方向,并且论证了它们之间的关系:利用计算复杂性问题可以构造陷门单向函数,进一步可以构造公钥密码学,而公钥密码学可以实现加密和认证功能。后续的研究一步步地实现了这些功能。

补充:Diffie 和 Hellman 因以上这篇论文奠定了现代互联网安全协议的基础,因此荣获 2015 年图灵奖

非对称加密的理论支撑其实是数学。数学上一种特殊函数:陷门单向函数,这种函数正向计算非常容易,但想反推回去几乎是一件不可能的事情,不过如果知道某些关键信息,反推也会变得非常容易。通俗点说,就是正向的过程好比你把一颗生鸡蛋煮熟,而反向过程就是把熟鸡蛋“还原回”生鸡蛋,后者至少在目前的技术来看,几乎是不可能的事情。

在通信中,如何确保信息绝对的安全?

首先,我们不能保证信息在传输过程中的安全,因为在传输过程中,被监听是一件非常普遍的现象。在通信过程中,我们只要将公钥发送给对方,对方通过我们发送过来的公钥明文进行加密,形成密文,再将密文发送回来给我们。整个过程,监听者只能拿到公钥密文。但是不要担心,密文的解密需要靠私钥,而除了自己外,没人拥有私钥。而通信双方,只要互相发送公钥,自己保留私钥,我们就可以做到在公开的网络环境中,暴露的是都是加密用的公钥加密后的密文

比如 1977 年,MIT 的三位学者 R. Rivest,A. Shamir 和 L. Adleman 发明了著名的RSA密码体制(因此 2002 年三人获图灵奖)。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的”非对称加密算法”。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。银行,邮件,聊天软件几乎所有你能想到的涉及数字的领域都在它的保护之下,算的上妥妥的应用级了,它的加密原理使用的就是单项陷门函数。RSA算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,2013 年为止被破解的最长RSA密钥是 768 个二进制位。也就是说,长度超过 768 位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024 位的RSA密钥基本安全,2048 位的密钥极其安全。

总结

回看密码学发展的每个时代,似乎人一直都是严谨密码的最大漏洞。正如美国的密码学学者布鲁斯·施奈尔所说:“安全就像链条,它取决于最薄弱的环节”。在信息安全的世界里,技术可以构建起高墙,而在人类的世界里,富有情感成了安全里最大的漏洞。

虽然密码学很枯燥,但我们仍满怀热情,希望更多人知道,意识到,提高警惕保护好自己,这才是现代密码学的终门。