现在说回当年,德国数学家高斯把数论捧成了数学界的皇后。后来计算机登场,这个“纯数学”突然变得和打仗有关。德军在二战用爱尼格玛机发密电,图灵这帮人搞出统计学的办法破解了转子设置,提前把解密规则写进纸带,这下德军的动向全被英军看得一清二楚。有人说,要是没这套数学反谍战,战争起码还得再打十年。 传统密码挺麻烦,一把钥匙管全部门户。军方把密钥和电文混在一起发过去,密钥一旦泄露就全完蛋了。更何况密钥运输比情报本身还危险,还特别长难管。“密钥比密码更重要”成了大家最头疼的地方。 到了1976年,斯坦福大学的赫尔曼、迪菲还有默克勒三个人想出个新法子:把加密和解密分开来。他们提出来的公钥密码体制就是这么干的——公钥随便谁都能用它加密;私钥藏得严严实实只有自己留着。还有数字签名技术也上线了:用私钥签个名、公钥一验就知道是真是假。 接下来是MIT的里维斯特、沙米尔、阿德尔曼这几位大佬在1978年搞出了RSA算法。他们盯着“整数分解”这个难题不放。给你一个大整数n,要是能找出两个素数p和q让n=pq,这就挺难办的。现在最快的算法——波拉德数域筛法——要分解200位以上的n,估计得算几亿年都不一定行得通。 加密公式是C=Me(mod n),解密公式是M=Cd(mod n)。只要p和q守口如瓶,那个d就永远也算不出来。这时间成本太高了,谁也不想花上几亿年去试。 RSA的安全基础是“大数难分解”,可现在有一种更厉害的ECC(椭圆曲线密码)在有限域上的椭圆曲线上做文章。给定曲线y²=x³+ax+b和两个点P、Q,让你求个整数k让Q=kP,这就是椭圆曲线离散对数问题。现在的算法还没找到子指数级的解法。而RSA那个整数分解马上就要碰到量子霸权的墙了。 同样长的密钥下,ECC比RSA更稳当。芯片上用160 bit的ECC相当于3072 bit的RSA的防护力,但带宽和功耗都少了很多。所以现在从银行卡到物联网芯片,ECC正默默地守护着每一笔交易。 回头看现代公钥体系里的DHM(这个我没记错吧?)、RSA还是ECC,最底下全都是数论难题:整数分解、离散对数、椭圆曲线离散对数。这些难题越难破解密码就越硬;数学学得越深日子就过得越踏实。 当年陈省身先生主张把数论归入应用数学的时候挺前卫的。现在看来他更像个先知——数论不光被用到了极致,还一直在创造新的安全奇迹。