尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

加密算法:从竞争到标准化

加密算法:从竞争到标准化 上世纪七十年代加密是一个秘密。不是普通人不知道——是算法本身是秘密。美国政府的 DESData Encryption Standard数据加密标准由 IBM 设计NSA美国国家安全局审核。算法不公开密钥不公开加密强度靠「别人不知道你怎么加密的」。这种安全叫「靠隐藏活命」。一旦被逆向整个系统塌。但真正的转折不在 DES 本身在 DES 之后标准化的念头一旦开了就没人能收回去。AES 诞生史从竞争到标准DES 撑了二十年。56 位密钥90 年代末一台专用机几天就能穷举完。美国国家标准与技术研究院NIST在 1997 年公开征集 DES 的继任者——叫 AESAdvanced Encryption Standard高级加密标准。这是全球密码学史上最大的一次公开竞赛。任何国家的任何人交了算法就参选。没有审查没有暗箱——NIST 公开了所有参选算法的代码和设计文档全世界密码学家一起审视。第一轮收上来十五个算法——来自比利时、加拿大、以色列、韩国、日本、美国、德国、法国、澳大利亚、英国、挪威、哥斯达黎加。密码学历史上第一次真正意义上的全球竞赛。第二轮筛到五个Rijndael、Serpent、Twofish、RC6、MARS。第三轮2000 年NIST 宣布胜出者Rijndael两个比利时人设计的。AES 的诞生不是「NSA 说了算」是「全世界一起看、一起打、一起挑最后剩下谁用谁」。这个机制比算法本身更可贵——算法是透明的筛选是公开的信任是挣来的。今天的 SSL、HTTPS、Wi-Fi 密码——全是 AES。你每天用 AES 几十次不知道它在用。分组加密的暗面ECB 模式的教训AES 是分组加密把数据切成 128 位的块逐块加密。但逐块加密有一个天坑——同样的输入同样的输出。这叫 ECB 模式Electronic Codebook电子密码本。你把一张图片用 ECB 加密所有相同颜色的区域加密后还是相同的密文块——图片轮廓清晰可见。不是 AES 有漏洞是 ECB 模式有漏洞。AES 本身是安全的——但用 ECB 模式就等于把加密退化成了替换表同一段明文映射到同一段密文。信息没泄露信息模式全泄露。这是加密领域最重要的教训算法安全不等于用法安全。AES 赢了竞赛但没人会用 ECB 模式加密用户密码——你的密码和别人的密码同一个明文 同一个密文。攻击者不用破解 AES只要对比密文。实际工程中没人用 ECB。AES 的正确用法是 CBC、GCM、CTR——每个块加密前先和前一个块的密文做一次异或这样同一个明文块在不同位置产出不同密文块。信息模式被打散了攻击者猜不出来。RSA 与密钥交换加密的另一个世界AES 是分组加密——一段一段把数据打散成密文。但做这个之前还有一个没解决的问题密钥怎么给对方你给朋友发加密消息。你们得先统一一个密钥然后才能加密。但怎么把这个密钥给对方发邮件发消息那你传密钥的通道本身是不是加密的如果是那你已经有一个安全的通道——加密是多余的。如果不是那密钥是明文传的——被截获就全没了。这叫密钥分发问题密码学里最基础的盲区。对称加密AES的前提是双方已经共享了一个密钥。但怎么共享没人传得过去。RSARivest-Shamir-Adleman以三个数学家名字命名解决的就是这个问题——非对称加密。不共享密钥——一把公钥一把私钥。公钥加密的只有私钥能解开。公钥可以公开可以发在网站上可以写在邮件签名里——任何人截获了用公钥加密的东西只有你的私钥能解。截获等于白截。这种设计第一次把「密钥交换」从「事先见面」改成「公开宣布」。不需要先传密钥——公钥公开任何人拿到你的公钥就能给你发加密消息。私钥不出门不需要传。但 RSA 的暗面在速度。RSA 比 AES 慢两个数量级。大块数据用 RSA 加密——手机会热服务器会卡。所以工程上没人直接用 RSA 加密文件。RSA 的实际用途是密钥交换用 RSA 把 AES 的密钥安全地送到对方手上再用 AES 的密钥加密实际数据。RSA 贡献安全性AES 贡献速度。这就是 HTTPS 的握手浏览器拿到服务器的公钥浏览器生成一个临时的对称密钥用公钥加密发给服务器服务器用自己的私钥解出对称密钥两端现在共享同一个密钥开始高速加密RSA 解决了「密钥怎么给对方」AES 解决了「给了密钥之后怎么加密」。分工清晰各干各的。怎么选加密算法不是「哪个更先进」是「你的场景在哪一端」。你在本地加密文件、加密数据库、加密硬盘——AES-256。快放心硬件支持。BitLocker、FileVault、LUKS 全在用它。密钥 256 位暴力破解不可行。你在网络上加密传输对面是陌生人——RSA或 ECDH做密钥交换AES 做数据加密。HTTPS 就这么干的RSA 替你搞定密钥AES 搞定数据。你传的是结构化数据每条很短独立加密——AEAD 模式GCM、ChaCha20-Poly1305。不只要加密还要保证完整性——密文被改检测得出来。你在嵌入式、低功耗、资源紧张——ECC椭圆曲线加密。密钥更短跟 RSA 同样的安全性ECC 的密钥只有 256 位RSA 要 2048 位。手机、IoT、智能卡——全在用它。大部分场景选 AES-256。加密算法都用它生态全认硬件全支持。但永远记得算法安全不等于用法安全。AES 用 ECB 模式还是能被攻击者看出模式。RSA 用太短的密钥512 位已经被暴力破解了。选算法容易用对模式难——这才是加密的本质。
返回列表