科學人/量子電腦問世後…世上還有不可破解的加密法? 密碼攻防史一次看

量子电脑示意图。图/Ingimage

如果说加密就像是把递送的包裹上锁,好让持有钥匙的收件人才能打开,那么只能说世界上没有绝对安全的锁,无论加密的一方再多加上几道锁,伺机而动的解密者总是能够逐一找到开锁的方法。

近代最著名的例子,就是二次大战时德军所使用的谜码机(Enigma,或者音译为「恩尼格玛机」),总共有26×26×26×6=10万5456种电路变化,相当于有一万兆以上的加密方式,号称无法破解。但最后还是在图灵(Alan M. Turing)等英国学者的合力下,缩小排列组合的可能范围,再利用计算机成功找出密钥,破译谜码机加密的电报。

千年以来,加密阵营面对破译阵营的一波波攻击,不断节节败退,直到公钥密码学的出现才得以扭转劣势。1976年,美国数学家迪菲(Whitfield Diffie)与赫尔曼(Martin Hellman)以及墨克(Ralph Merkle)三人发表了石破天惊的概念,指出利用模算术(modular arithmetic)建构出的某种单向函数,可用来进行加密,而密钥大可公诸于世,也不怕遭到破译。因为这种函数容易计算,却很难从结果反推出原来的数值,只能够以试误法逐一验算;当数值很大时,算到地老天荒也可能都还没有结果。

隔年(1977),瑞维斯特(Ronald Rivest)、希米尔(Adi Shamir)、艾德曼(Leonard Adleman)三人结合质因数分解,打造出更难反推的单向函数,以他们三人姓氏第一个字母为名的RSA加密演算法有效又好用,除了国防外交上的加密用途,更进入我们的日常生活之中,广泛用于网路通讯、认证、金融交易等方面,而无须担心遭到骇客窃取资料。即使电脑运算速度不断提升,逐渐缩短破译的时间,只要再增加密钥的长度,让电脑破译速度追赶不上就好。

不过这对传统电脑有效,但对量子电脑就不尽然了。美国数学家修尔(Peter W. Shor)在1994年便提出修尔演算法,证明量子电脑可以在足够短的时间之内完成因数分解,代表现在广泛使用的公钥加密法,在未来恐怕就不再安全。

难道好不容易得以喘息数十年的加密阵营又要败下阵吗?其实有个保证永远不会被破解的加密法,那就是量子加密。有趣的是,这个构想的起源并不是为了对抗修尔演算法才提出的,而是早在1969年,美国哥伦比亚大学的物理博士生魏斯纳(Stephen Wiesner)所写的博士论文。这篇题为〈共轭编码〉(Conjugate Coding)的论文描述如何利用光子的偏振,打造绝对无法仿冒的「量子货币」。无奈他投稿期刊遭到退稿,就连指导教授也认为这不是「正经的科学」,这篇论文从此无人闻问,倒是他的室友班奈特(Charles Bennett)念念不忘,不时在脑中反复思索。

直到15年后,班奈特终于茅塞顿开,和加拿大蒙特娄大学的布拉萨(Gilles Brassard)想出如何用光子随机产生一次性密钥。因为密钥从不重复,也就不可能被破解;倘若有人试图监听偷窥,也会因此改变光子的偏振方向而遭发现。这个BB84协定(代表两人姓氏以及对外发表的1984年)可保证绝对安全的量子加密与量子通讯,终于为千年的加密∕破译攻防战画上句点。别以为这还在纸上谈兵的阶段,近年来包括我国在内的许多国家纷纷都已完成可行性实验。

只不过量子加密固然牢不可破,成本却太过昂贵,加上全球亿万台终端装置仍是传统电脑,在可见的未来也不可能采用量子加密,因此在实务面,还是有必要开发能抵抗量子电脑、又适用于传统电脑与网路的加密演算法,也就是所谓的「后量子密码学」。其中由美国电脑科学家艾以泰(Miklós Ajtai)与德沃克(Cynthia Dwork)共同提出的「晶格密码学」(lattice-based cryptography),因为涉及在N维空间中找出最近向量的问题够复杂,所产生的密钥长度又不会太长,目前最受到瞩目;若想了解其基本原理,请见62页〈倒数2030,量子电脑与晶格加密的顶尖对决〉。

延伸阅读

(本文出自2024.07.01《科学人》网站,未经同意禁止转载。)