IT 论文精读 · PAPER 40

RSA 公钥密码体制

Rivest, Shamir, Adleman · MIT · CACM 1978

EN →

这篇论文干了什么?

你在浏览器地址栏见过那把小锁、在网上付过款、发过一条没人能偷看的消息——这些背后几乎都站着 RSA。1977 年,MIT 的三个人(Rivest、Shamir、Adleman)造出了第一套真正能用的「公开锁、私藏钥」加密法:锁可以到处发、钥匙只有你有。今天全球的 HTTPS、数字签名、安全支付,源头都能追到这一篇。

旧世界的痛

在它之前,加密像一把普通的锁:锁门和开门用的是同一把钥匙。于是有个死结——你想给一个陌生人发密信,得先想办法把那把钥匙安全地交到他手上;可要是你们之间已经有条安全通道能传钥匙,那还加什么密?「想安全通信,得先安全通信」,鸡生蛋、蛋生鸡。全世界几亿对陌生人两两之间都得预先偷偷换钥匙,根本转不动。

那个点子

RSA 把一把钥匙拆成了两半:一把公开锁、一把私藏钥,而且锁上的只能用钥开、不能用锁再开回去。你把公开锁像发名片一样满世界散出去;任何人想给你发密信,就用你的锁把消息「咔哒」锁进盒子——但锁上之后连他自己也打不开了,只有攥着私藏钥的你能打开。从此两个素不相识的人,不用事先换任何秘密,也能安全通信。死结解开了。

它凭什么锁得住?

秘密藏在一个小学生都懂、却难倒最快超级计算机的算术事实里:把两个很大的质数乘起来,一瞬间就算完;可给你那个乘积,让你反推是哪两个质数乘出来的,几乎没人算得动。就像把两种颜料一搅就成新色、想再分开却无从下手。

你的「公开锁」本质上就是那个巨大的乘积;你的「私藏钥」就是那对只有你知道的质数。别人拿乘积能把消息搅乱(上锁),但没有那对质数就理不清、还原不回来(开锁)。数字越大越安全——如今用的数字大到,就算全世界的电脑一起算到宇宙尽头也拆不开。

反过来用,就是签名

这套锁钥还能倒着玩:你用私藏钥给一份文件「盖个章」,别人用你满世界发的公开锁一验,就能确认「这真是你盖的、且一个字没被改过」——因为只有你有那把私钥。这就是数字签名,网上合同、软件更新、证书全靠它证明「我是我」。

一句话记住

把钥匙拆成「公开锁 + 私藏钥」,锁能随便发、只有你能开——靠的是「两个大质数相乘容易、把乘积拆回质数极难」。陌生人不用先换秘密就能安全通信,倒过来用还能签名。代价是它算得慢(只用来锁一把小钥匙),而且未来的量子计算机可能把它拆开。

想看公钥/私钥的数据流图、真实公式和那道「陷门」的原理? → 切到精读版