Alice 和 Bob 从没见过面,他们之间只有一条 Eve 能看到每一个字节的公开信道。1976 年之前,这件事在数学上做不到——而没有它,互联网只能是个公告板,不可能是市场。下面这个开关把它关掉。
关掉的不是一行代码,是一个前提:允不允许双方在没有预先见过面的情况下建立共享秘密。切到「对称加密时代」,你可以亲手试——在那条 Eve 全程围观的信道上,你没有任何办法把密钥送过去。
这不是「难」,是数学上做不到。而打开开关之后,同一条信道、同样每个字节都被看见,秘密却建立起来了。先让人相信它不可能,再让他看见它发生。
她跑的是大步小步算法(Baby-step Giant-step),求离散对数,步数约 2√p。这不是演戏:把位数滑到 32,她几十毫秒就把 Alice 的私钥挖出来;滑到 40,约半秒;滑到 44 就不行了。
⚠ 而她先撞上的不是时间,是内存——大步小步用空间换时间,那张表要存 √p 个元素。44 位时是 400 多万条,浏览器先受不了。这也是它比朴素穷举强的全部理由,以及它的天花板。
右边那张「真实规模」表里有一件容易看漏的事:2048 位 RSA 和 256 位椭圆曲线,人们通常都当成「够安全」——可 RSA 那档是 2¹¹²,用全球比特币算力要 23.5 万年;ECC 那档是 2¹²⁸,要 1.12 倍宇宙年龄。
差 65536 倍——正好是 2¹⁶,因为两档的安全强度差 16 位。23.5 万年当然也够远,但它和「比宇宙还老」完全不是一个量级的承诺——「够安全」这三个字,不带上那个指数就是没有意义的。
① Shor 算法给了它保质期。量子计算机上离散对数和大数分解都是多项式时间的,2¹²⁸ 那道墙会塌——这正是各国在推后量子密码的原因。
② 公钥很慢。真实的 HTTPS 只用它交换一个对称密钥,之后全走 AES。它不是用来加密数据的,是用来交换钥匙的——这一点几乎所有人都搞错。
③ 它挡不住中间人:Eve 若能改写信道而不只是偷看,就能分别和两边各做一次交换。这就是证书和 CA 存在的理由。