IT 论文精读 · PAPER 34
Whitfield Diffie & Martin Hellman · Stanford · IEEE IT · 1976
1976 年,斯坦福的两位研究者 Diffie 和 Hellman 写了一篇开头就说「我们正站在一场密码学革命的门槛上」的论文。他们提出了公钥密码学:一种全新的加密思路。今天你网购付款时浏览器地址栏那把小锁、登录网站、收发加密消息——背后守着这一切的,就是这篇论文开辟的那条路。
几千年来,密码有个甩不掉的死结:加密和解密用的是同一把钥匙。我给你发密信,得先想办法把这把钥匙偷偷交到你手上——可钥匙本身怎么安全送过去?派个信得过的信使?那如果我们俩素未谋面、隔着半个地球呢?更糟的是,一个网站要跟一百万个陌生用户各自保密通信,就得事先跟每个人单独约好一把钥匙——这根本转不动。钥匙怎么送,成了整套密码术的阿喀琉斯之踵。
他们的想法乍听像变魔术:把钥匙拆成两把,一把公开、一把私藏。公开的那把(公钥)像一把「敞开的挂锁」,你可以挂到门口、印在名片上,谁都能拿去锁上一个箱子寄给你;但锁上之后,只有你手里那把私钥能开。于是——能锁的人满世界都是,能开的只有你一个。钥匙不用再偷偷送了,因为公开的那把本来就不怕被人看见。
论文里最漂亮的一招,是让两个从没见过面的人,在所有人都在偷听的公开频道上,凭空约定出一个只有他俩知道的暗号。用调颜料来打比方:
先当众定一桶公共底色(黄色),谁都看得见。然后你我各自私藏一种颜色不告诉对方。各自把底色和自己的私藏色混一混,把混出来的颜色当众交换——反正颜料一旦混了,就没人能倒推出你私藏的是哪种色。拿到对方的混色后,我们再各自加进自己那份私藏色。神奇的是:你我手里最后调出的,是一模一样的颜色(都等于「底色+你的色+我的色」)。而全程偷听的人,只看到两桶中间混色,怎么也调不出这个最终色——因为「混颜料容易、拆颜料难」。这个共同的颜色,就是我俩的暗号。
密码术第一次不再需要「事先见面交钥匙」。两个素不相识的人,隔着公开的互联网,也能凭空商定出只有他俩知道的密钥,然后放心地说悄悄话。今天全球每一次 HTTPS 加密连接、每一次安全登录,本质上都在重演这一手。它还顺带催生了数字签名——用私钥「盖章」、任何人用公钥验章,证明「这确实是我发的、没被改过」。
把钥匙拆成「公开一把 + 私藏一把」,再靠「混容易、拆难」的单向运算,让两个陌生人在众目睽睽下也能约出只有他俩知道的暗号——从此加密不必先偷偷送钥匙。这就是今天整个互联网加密的地基。
诚实一句:这招保证的是「我俩共享了一个暗号」,但没保证对面就是你以为的那个人——万一中间有人两头冒充,它也拦不住。这个漏洞要靠后来的「证书」体系来补。
想看密钥交换的完整流程图、公式和它埋下的隐患? → 切到精读版
Diffie 和 Hellman 提出了公钥密码学(public-key cryptography):把加密与解密拆成一对公钥 / 私钥,公钥可公开、私钥自己留,从根本上绕开了「必须先安全地把密钥送给对方」这个千年死结。他们还给出第一个可用的具体协议——Diffie–Hellman 密钥交换,让两方在完全公开的信道上凭空协商出一个共享密钥;并首次提出了数字签名(digital signature)与单向陷门函数的概念框架。这篇论文开启了现代密码学,是今天所有安全通信(HTTPS、SSH、数字证书)的思想源头。
15 mod 12 = 3。绕圈会把结果搅乱、藏住原数,密码学常用它。g、模数 p 和结果 g^x mod p,反求指数 x——被广泛认为极难,是 DH 安全性的靠山。作者是 Whitfield Diffie 与 Martin Hellman,斯坦福大学,论文 1976 年发表于 IEEE Transactions on Information Theory。它站在信息论(Shannon)与计算复杂度理论的交叉口,把「难算」当成安全的地基;也吸收了 Ralph Merkle 几乎同期的独立构想(Merkle 谜题)。此文只提出了公钥体制的框架与一个密钥交换协议,却把「造一个真正的公钥加密系统」这道题留给了后人——两年后的 RSA(1978) 正是接棒之作。二人因此获 2015 年图灵奖。(后来解密的档案显示,英国 GCHQ 的 Ellis、Cocks、Williamson 在更早几年就秘密想到过类似思路,但从未公开。)
在 1976 年之前,所有密码都是对称的:发信人和收信人必须共享同一把密钥。这带来两个死结。
第一是密钥分发。你要给对方发密信,得先把密钥安全地交到他手上——可传密钥本身就是一次安全通信,成了「先有鸡还是先有蛋」。传统办法是靠可信信使(外交邮袋、保险箱)线下运送,昂贵、缓慢,还根本不适合两个素不相识的人临时保密。第二是规模爆炸。n 个人要两两保密通信,就需要约 n²/2 把不同的密钥;人一多,光是「谁和谁共享哪把钥匙」就管理不过来。作者一针见血:只要密钥还必须事先线下共享,密码术就永远进不了「陌生人随时能安全通信」的电子时代。
作者的第一个突破,是想象一种加密和解密用不同密钥的体制。每人生成一对钥匙:公钥 PK(公开,谁都能拿)和私钥 SK(自己私藏)。别人用你的公钥加密的消息,只有你的私钥能解;而从公钥推不出私钥。
直觉就是一把「敞开的挂锁」:你把开着的锁到处发(公钥),任何人都能拿它锁上箱子寄给你,但锁一旦扣上,只有你手里那把唯一的钥匙(私钥)能开。能加密的人满世界,能解密的只有你。密钥分发的死结就此解开——公钥本来就是拿来公开的,被偷看也无所谓。这套东西背后需要一种特殊的运算:单向陷门函数——正向(加密)好算,逆向(解密)除非你握有那个秘密「陷门」(私钥)否则算不动。本文只给出了这个概念,没造出具体的函数,这道题两年后由 RSA 补上。
如果反过来,用私钥处理消息、再让大家用公钥去验,会怎样?那就成了数字签名:只有握私钥的你能「盖」出这个章,而任何人都能用你的公钥验证它确实出自你、且内容没被改过。这第一次让「不可抵赖的电子签名」在原理上成为可能——今天的软件签名、证书、区块链交易,都建在这上面。
公钥加密当时还差一个具体函数,但作者给出了一个当场就能用的协议,解决「两个陌生人如何在公开信道上协商出共享密钥」。它的安全靠山是离散对数难题:算 g^x mod p 很快,但从结果反推 x 极难。
流程只有三步(g、p 是公开的大数):
a,公开发出 A = g^a mod p;b,公开发出 B = g^b mod p;B^a = g^(ba) mod p,Bob 算 A^b = g^(ab) mod p——两人得到同一个数 g^(ab) mod p,这就是共享密钥。偷听者只看得到 g、p、A、B,想算出 g^(ab) 就得先从 A 或 B 反推出 a 或 b——即解离散对数,做不到。这正是科普版「调颜料」比喻的数学版:底色 g、私藏色是指数 a/b、混色是取模幂运算——混(乘方取模)容易,拆(求离散对数)难。
要点在于:安全性建立在「计算上不可行」而非「信息上不可能」——这是本文对 Shannon「完美保密需要和消息一样长的密钥」框架的关键转向。密钥可以短、可以公开一半,只要反推的计算代价大到没人算得起,就够安全。现代密码学从此改用「计算安全」这把尺子。
这是一篇理论奠基之作,没有大规模实验数字,它的「结果」是几个此前不存在、此后成为标配的概念与协议:(1)提出公钥 / 私钥体制,把密钥分发从「必须线下共享」变成「公钥随便公开」;(2)给出可立即实现的 Diffie–Hellman 密钥交换,让公开信道上凭空协商密钥第一次成为现实;(3)提出数字签名与单向陷门函数的概念,指明了「造一个真正的公钥加密系统」的路线图。作者坦承自己还拿不出符合要求的陷门函数——这道悬念两年后被 RSA 兑现。仅这几页,就重划了整个领域的地图。
它是现代密码学的开端,把这门古老技艺从「政府与军队的秘术」变成一门公开的科学。今天你能安全地网购、登录、收发消息,全靠它开的路:每一次 HTTPS 握手、SSH 连接、VPN、加密即时通讯,底层都在做 Diffie–Hellman(或其椭圆曲线变体 ECDH)密钥交换;整个数字证书与公钥基础设施(PKI)建在公私钥与数字签名之上;就连比特币的地址与转账签名,也是这套思想的直系后代。RSA、ElGamal、椭圆曲线密码、乃至零知识证明,都从这篇论文长出。可以说,没有这一页,就没有可信的互联网商业。
① 一句话:把加解密拆成「公钥 + 私钥」一对,绕开「必须先安全送密钥」的千年死结——公钥可公开,私钥自留。
② 痛点:对称密码里密钥必须事先线下共享,既难安全送达、又随人数 n²/2 爆炸,进不了「陌生人随时保密通信」的时代。
③ 机制一:公钥像「敞开的挂锁」,人人能锁、唯你能开;反着用(私钥盖章、公钥验章)就是数字签名。
④ 机制二(可落地):Diffie–Hellman 密钥交换——各留秘密指数、只公开 g^a/g^b,双方一乘方殊途同归到 g^(ab);偷听者卡在离散对数上。
⑤ 范式转向:安全性从 Shannon 的「信息上不可能」改为「计算上不可行」——密钥可短可半公开,只要反推贵到算不起。
⑥ 结果:提出公钥体制、数字签名、单向陷门函数三大概念 + 一个可用协议;陷门函数的具体实例(RSA)两年后补上。
⑦ 影响:现代密码学开端,HTTPS / SSH / 证书 / 比特币的共同地基;作者获 2015 图灵奖。
⑧ 局限:安全性未获证明、基础版挡不住中间人(需 PKI)、公钥慢只作配角、量子计算是长期威胁。