密码学是科学而非工程学

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 托马斯.普塔切克曾经发过一条Twitter“如果你不是编写攻击代码的时候学习的密码学,那么你可能根本没有在学密码学”。 从Twitter上对这条信息的关注及其引用数来看,它似乎得到了很多人的认同。尽管我很尊重托马斯,但我绝对不同意他的观点。我认为学习密码学,不仅不需要写代码,而且编写攻击代码对于学习现代密码学根本毫无用处。学习现代密码学最好的方式是研究数学论证。

image.png

托马斯.普塔切克曾经发过一条Twitter“如果你不是编写攻击代码的时候学习的密码学,那么你可能根本没有在学密码学”。 从Twitter上对这条信息的关注及其引用数来看,它似乎得到了很多人的认同。尽管我很尊重托马斯,但我绝对不同意他的观点。我认为学习密码学,不仅不需要写代码,而且编写攻击代码对于学习现代密码学根本毫无用处。学习现代密码学最好的方式是研究数学论证。


如果我们仍然是处在20世纪90年代的话,我会同意托马斯的观点。当时的密码学充满了漏洞,你能想到的最浪漫的事就是了解你的工具是如何崩溃的,因为之后你就可以去解决它们的问题。那时,DES和RC4加密算法,尽管有很多已知的缺陷,却被广泛地使用;那时,人们避免使用CTR模式去转换块密码到序列密码,因为他们担心如果所提供的输入数据块中包含有很多相同(0)数据的话,脆弱的块密码会被破解;那时,人们关心块密码的误差传播能力,这关系到在密文中有少量的位发生未知变化后,对于解密数据的正确性会产生多少影响;那时,人们通常建议在加密数据前,先对其进行压缩,因为这将会“压缩”信息熵使得攻击者即使得到了秘钥也很难理解密文。因此,诞生于这个时代的SSL,有很多很多的缺陷,也就不足为奇了。


但是,从2010年开始密码学变得完全不同了。现在,我们开始有了可以高度信赖的的基础构件——比如:块密码已被确信是近似随机排列,并且已经从数学上证明它是足够安全的,可以抵御某些类型的攻击——比如:AES是已知的可以抵御差分密码分析的加密算法。我们以这些组件为基础,利用已被证明是不会引入漏洞的机制创建高阶的系统。例如,如果你在CTR模式下,使用类随机排列的块加密算法(比如,AES)对数据加密,从而产生一个有序的分组序列,并使用分组序列号作为CTR随机数,然后追加一个不易伪造的针对被加密数据的MAC地址(比如,HMAC-SHA256)及分组序列号,那么这些分组既可以保密数据,也可以禁止任何未声明的篡改(包括报文重放和重新排序)。一旦Keccak(即SHA-3)得到更加广泛地检验和信任,生活甚至会变得更加美好,因为它类似海绵的弹性结构去构造大量重要的加密构件,这已经被证明是安全的了。


在20世纪90年代的密码学就像是在尝试建一种桥,你花了许多时间确保你的桥能屹立不倒,并且为此忧心忡忡,即使有一些地方焊接的不够完美,一些螺丝生锈了,由于周期性的负载导致的金属疲劳,等等。虽然从理论上讲量身定制可以有很好效果,但你知道的实际总是与理论不符,因此这座桥实际是建在了安全与不安全的边界上,这使得桥的构造成本更高,也更加复杂。这就是纯粹的工程学。


但是,现代密码学是截然不同的,它不是在建造一座桥,而是像规划一个依靠重力辅助的星际的轨道。当然,这是复杂的,你必须正确的掌握所有的细节。但是,如果你做到了,一旦开始运行,使你无法到达目的地的唯一可能就是物理或数学定理改变了。现代密码学已经充分地发展到理论与实际相符,因此,相比通过观察桥的倒塌进行学习,理论学习就已经十分有效了,然后你需要遵从一个简单的原则:只做数学告诉你你能做的事情。这就是纯粹的科学。


我相信托马斯所做的事情,以及他在实施密码攻击上所积累的经验是非常有用的。毕竟,他是以挖掘应用缺陷为生,但他所遇到的绝大多数加密方法很可能是20世纪90年代的加密方法,那是一个已经逝去的时代。因此对于开发者,我推荐以一个更加现代化的方法学习密码学,那就是学习理论并设计出你能证明是安全的系统。

相关文章
|
6月前
|
安全 算法 量子技术
密码学系列之十:量子密码
密码学系列之十:量子密码
|
6月前
|
机器学习/深度学习 算法 安全
密码学系列之六:公钥密码体制
密码学系列之六:公钥密码体制
|
17天前
|
算法 安全 量子技术
量子计算与密码学:加密技术的新挑战
【10月更文挑战第29天】本文探讨了量子计算对密码学的影响,分析了现有加密技术面临的挑战,并展望了未来的发展趋势。量子计算的快速发展对传统公钥加密算法(如RSA和ECC)构成巨大威胁,同时也催生了后量子加密算法和量子密钥分发等新技术。文章强调了多元化、标准化和国际合作在构建量子安全加密体系中的重要性。
|
2月前
|
算法 安全 搜索推荐
深入理解密码学技术
深入理解密码学技术
34 1
|
2月前
|
安全 算法 量子技术
密码学:保护信息的艺术与科学
【8月更文挑战第31天】
68 0
|
6月前
|
供应链 安全 算法
区块链密码学:基础知识、应用与未来发展
区块链密码学:基础知识、应用与未来发展
357 0
|
存储 安全 算法
为什么人人都要懂点密码学
人类进入二十一世纪以来,随着计算机和移动设备的普及高速发展,我们的社会已经高度信息化,为了防止信息被窃取、修改,就需要对信息的存储、传递进行加密处理,而加密就需要使用到加密算法,解密需要使用密码才可以看到原文。
231 1
|
存储 算法 安全
【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学
【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学
215 0
|
算法 安全 Java
常用密码学算法及其工程实践
在工程实践中,加解密算法、单向散列函数、消息认证码、数字签名等密码学内容经常出现。由于我之前对密码学一知半解,经常有摸不着头脑的情况。 比如我遇到过以下两种情况,我相信很多对密码学不熟悉的同学可能也有跟我一样的疑惑: 情况一,同样的明文,同样的密钥,每次加密生成的密文居然不一样?不一样的密文为什么能解密为同样的明文?我在开发友盟+数擎一体机时,在加密数据库中发现了这样的情况,当时非常不理解。
622 0
常用密码学算法及其工程实践
|
Rust 算法 JavaScript
【密码学】密码学相关资料整理
感觉我也写了不少的文章了,这里整理一下,之后这个整理会佛系更新,手动狗头,具体的链接查看原文获取吧,因为这个链接好像加不进去。
【密码学】密码学相关资料整理
下一篇
无影云桌面