想象这样一个场景:你刚认识一个远方的朋友,想给他寄一封秘密信,但你俩从未见过面,也没有安全的渠道可以事先约定一把共同的钥匙。你该怎么办?
这是对称加密最核心的困境——密钥分发问题。几千年来,人们只能通过可靠的信使、复杂的信物,甚至亲自见面来交换密钥。但在互联网时代,我们每天都要和无数从未谋面的网站、服务器、陌生人交换信息,显然不可能为每一次通信都当面约定密钥。
这个看似无解的难题,在1976年被几个年轻人用一个疯狂的想法彻底颠覆了。
公钥思想:把锁公开,钥匙私藏
他们的想法简单得令人难以置信:能不能设计一种密码,让每个人都可以有一把“公开的锁”和一把“私人的钥匙”?任何人都可以用你的公开锁把信息锁起来,但只有你手里的私人钥匙才能打开。这样,你不需要事先和任何人约定秘密,只要把你的公开锁发给全世界,所有人就能安全地给你发消息。
这就是公钥密码学(非对称加密)的核心思想——加密和解密使用不同的密钥,一把公开,一把私密。它像给世界发了一把公共锁,而钥匙只有你自己有。
这个想法在当时被认为是天方夜谭。但迪菲和赫尔曼不仅提出了这个思想,还给出了一个巧妙的密钥交换方案。一年后, Rivest、Shamir和Adleman三人发现了第一个实用的公钥加密算法——RSA,以他们姓氏的首字母命名。从此,密码学进入了一个全新的时代。
RSA:用小学数学理解的神奇算法
RSA的原理基于一个小学数学知识:把两个大质数乘起来很容易,但要把乘积分解回原来的质数,却极其困难。比如,你能快速算出 17 × 19 = 323,但如果给你323,你能立刻说出它是哪两个质数的乘积吗?可能需要试好几次。
RSA利用这个“单向性”构建了一套加密系统。你的公钥是那个乘积(以及一个辅助数字),任何人都可以用它加密信息;你的私钥是两个质数本身,只有你知道,只有你才能解密。因为大数分解的困难,只要质数足够大(比如几百位),现有的计算机就无法破解。
这一章,我们会用最直观的方式讲解RSA,让你真正理解“用小学数学就能明白的加密”。
椭圆曲线:更短的钥匙,更强的安全
随着计算能力的提升,RSA需要的密钥长度越来越长(现在至少要2048位)。密码学家们又在寻找更高效的方案。椭圆曲线密码学(ECC)应运而生。
椭圆曲线是一种特殊的数学曲线,在上面定义了一种“加法”运算。利用这种运算的“单向性”——知道起点和终点很难反推出走了多少步——可以构建出和RSA同样安全的密码系统,但密钥长度却短得多(256位ECC就相当于3072位RSA)。这就是为什么比特币、区块链、以及现代的TLS协议都纷纷选择ECC——它让安全变得轻量又高效。
混合加密:TLS背后的完美搭档
非对称加密虽然解决了密钥分发问题,但它有一个明显的缺点:速度慢。RSA加密几百位的数据就要耗费大量计算,不适合加密大文件。因此,实际应用中,非对称加密从不单独使用。
混合加密应运而生:用非对称加密安全地交换一个临时的对称密钥,然后用这个密钥进行高效的对称加密(如AES)。这正是你在浏览网页时,HTTPS背后的工作方式——TLS协议先用非对称加密协商密钥,再用对称加密传输数据,既安全又高效。
这一章你将看到
在这一章,我们将一步步揭开非对称加密的神秘面纱:
- 6.1 难题:如何在不安全的信道上交换密钥——深入理解密钥分发问题的本质。
- 6.2 公钥思想的诞生(附:经典故事)——迪菲、赫尔曼、默克尔的故事,以及那篇改变世界的论文。
- 6.3 RSA算法:用小学数学理解的加密——用最直观的方式讲解RSA的加密解密过程,你不需要高等数学。
- 6.4 椭圆曲线(ECC):为什么比特币选择了它——椭圆曲线的直观理解,以及它在现代密码中的地位。
- 6.5 混合加密:TLS如何结合对称与非对称——看看HTTPS、SSH等协议是如何在实际中应用这些技术的。
准备好了吗?让我们从那个困扰人类几千年的难题开始,走进非对称加密的奇妙世界。