本系列为《密码故事》的书摘,共有上、中、下三篇,各篇链接及包含内容如下:
公开密钥
除了恩格玛机之外,德国还有一套更强大的加密法,称为洛伦兹密码(Lorenz cipher),用来加密希特勒和他的军官之间的通讯。布莱切利的两位破解员,约翰・蒂尔特曼(John Tiltman)和比尔・塔特(Bill Tutte)发现了洛伦兹密码的一个破绽,需要综合寻找、匹配、数据分析和谨慎的判断,而「炸弹」很难变通地应付洛伦兹密码的精妙之处。而布莱切利的数学家马克斯・纽曼(Max Newman)基于图灵的「万能机器」的概念,发明了可以针对不同问题进行自我调节的机器,现在我们称之为「可编程计算机」。1943 年,工程师汤米・弗劳尔斯(Tommy Flowers)无视布莱切利高级官员的怀疑,根据纽曼的蓝图,花了 10 个月时间,制造了科洛希斯(Colossus computer),其中总共有 1500 个电子管。事实上,科洛希斯正是现代数字计算机的前身。
然而,在二战结束后,汤米・弗劳尔斯根据命令将科洛希斯及其蓝图销毁,世界上第一台计算机的设计图就此消失。1945 年,宾夕法尼亚大学的约翰・墨西里(John Mauchly)和 J・蒲利斯普・埃克特(J. Presper Eckert)完成了 ENIAC,它含有 18000 个电子管,每秒能计算 5000 次。几十年来,ENIAC 而非科洛希斯被认为是计算机之母。
用计算机加密和机器加密只有三个重要的区别:
- 密码机受限于实际建造中的困难,而计算机可以模拟出任何无限复杂的机器。
- 速度上的区别:电子设备比机器的扰频器运转起来要快得多。
- 最重要的区别:计算机加密的是数字而非字母。
即便如此,加密过程仍然是按照古老的原则进行的,这些原则就是移位和替换。每次加密,无论多么复杂,都可以还原成一些简单操作的组合。
随着越来越多的公司采用计算机,公司之间的通讯加密也越来越频繁,就出现了加密标准化的问题。1973 年,美国国立标准局正式征求一套标准的加密方案,能够使企业之间进行秘密通讯。IBM 的托马斯・J・沃森实验室(Thomas J Watson)的霍斯特・菲斯特尔(Horst Feistel)发明卢斯福密码机(Lucifer cipher)。1976 年,56 位版本的卢斯福密码机被国家安全局正式采用,称之为数据加密标准(Data Encryption Standard,即 DES)。选用 56 位版本(密钥数目 1018)是因为国家安全局相信这样的密钥对民间通讯来说是安全的,因为没有一个民间组织拥有如此强大的计算机能够在一个合理的时间内检查每个密钥,但国家安全局拥有世界上最快的计算机资源,刚好能破解卢斯福的密钥。
卢斯福系统的加密步骤如下所述:首先,电文翻译成一长段二进制数字串。然后,以每 64 个数字为一个单位,分解这段数字串。每个单位数字串分别独立加密。第三步,我们把注意力集中在每个单位数字串上。把 64 个数字像洗牌那样分成两组,每组 32 个数字,分别把它们叫做左 0 和右 0。右 0 中的数字加入「切碎机函数」中进行复杂的替换。然后,把「切碎」后的右 0 加到左 0 上,形成新的一组 32 个数字的序列,称作右 1。把最开始的右 0 标记为左 1。这一系列的操作称为一个「回合」。然后整个操作又重复做一次,不同的只是这一次以右 1 和左 1 开始,得到的数字序列称为右 2 和左 2。加密过程总共要进行 16 个「回合」。这个过程就像是和面一样:试想在一大块面上写着信息,首先,将这块面分成 64 厘米长的小块;然后,挑出其中的一半碾压后折叠起来,再加到另一半上拉长,从而形成一个新的面块。这个过程不断地重复,直到消息文字彻底地被面块混合起来。经过 16 个回合的「揉面」后,密文发送出去。另一端的接收者收到密文后,将加密过程反过来进行,从而解码出明文。「切碎」的具体实施方法是可以变化的,它取决于发送者和接收者达成的密钥。换言之,只要密钥不同,同样的电文可以用成千上万种不同的方式加密。
除了加密标准化问题之外,密码通讯中存在的另一个问题是「密钥分发」。20 世纪 70 年代,银行尝试雇用专职的密钥分发员,他们带着一个锁着的箱子(padlocked briefcase)走遍全世界,亲手将密钥交给客户。二战时,德国高级指挥部每个月都需要分发《每日密钥》月刊给所有的恩格玛机操作员。美国政府的密钥是 COMSEC(通讯安全局)掌管和分发的。20 世纪 70 年代,COMSEC 每天分发的密钥数以吨计,当装载着 COMSEC 密钥的船靠港时,密码分发员会到甲板上收集各种卡片、纸带以及软盘和其他一切贮存密钥的介质,再把它们分发给客户。计算机改变了密码的实施方式,但 20 世纪密码学最伟大的革命是发明了密钥分发的技巧,这被认为是两千年来自单字母替换密码发明以后最伟大的成就。
维特福德・笛福(Whitfield Diffie) 对密钥分发问题的热情部分来源于他对未来有线世界的远见。当美国国防部的 APRA 网还处于它的幼年阶段时,笛福就非常有远见地看到信息高速公路和数字革命的到来。1974 年,他应邀到 IBM 的托马斯・J・沃森实验室做一次关于密钥分发战略方案的演讲,听众阿兰・科黑姆(Alan Konheim)告诉笛福不久前也有一位密码学家在这里做了关于密钥分发的演讲,这个人就是斯坦福大学教授马丁・赫尔曼(Martin Hellman)。当晚,笛福就驱车前往 5000 公里外的西海岸去会见赫尔曼。
在认识笛福之前,戴维・卡恩(David Kahn)的《密码破译者(The Codebreaker)》一直是赫尔曼唯一的研究伙伴。《密码破译者》首次详细论述了密码的发展,对一个正在成长的密码学家来说,是本非常不错的初级读本。因为赫尔曼没有多少资金,他无法聘请笛福作为研究员,所以笛福作为一句研究生被录取了。在研究过程中,拉尔夫・摩科尔(Ralph Merkle) 加入了他们的行列。摩科尔原来工作的研究组的教授对他想解决不可能的密钥分发问题毫无怜悯之心。
笛福和赫尔曼将注意力集中到单向函数(one-way function) 上。将颜料混合是单向函数,将鸡蛋打破也是一个单向函数。由打鸡蛋的例子,单向函数有时也称为汉普蒂・邓普蒂函数(Humpty Dumpty functions)。
注:Humpty Dumpty 是英文世界里的一个童话人物,其形象是一个拟人化的鸡蛋。有一首儿歌描绘了「蛋头先生」坐在墙头不慎摔下的场景:
Humpty Dumpty sat on a wall,
Humpty Dumpty had a great fall.
All the king’s horses and all the king’s men
Couldn’t put Humpty together again.
取模算术(Modular arithmetic),在学校中有时也称为时钟算术(clock arithmetic),是一个具有很多单向函数的数学领域。在常规的运算中,随着输入的变化,输出也跟着线性变化,因此从输出猜测输入时,可以通过不断地增加或减小输入而得到正确的输出。而取模算法中,线性变化的输入得到的却是不可捉摸的输出。唯一做取模运算函数的逆运算的方法是做一张输入与输出对应关系的表,但当数值变得很大时制表将变得非常困难。
经过两年的取模运算的单向函数研究,赫尔曼想到了解决密钥交换问题的方案,是基于形如 \(g^x (mod\ p)\) 的单向函数,密钥交换过程如下:
以上过程称为笛福—赫尔曼—摩科尔密钥交换(Diffie–Hellman–Merkle key exchange)。这个过程能够成功而秘密地交换密钥,是因为如下运算成立:
\(A^b (mod\ p) = g^{ab} (mod\ p) = g^{ba} (mod\ p) = B^a (mod\ p)\)
虽然笛福—赫尔曼—摩科尔密钥交换是一个巨大的进步,但这个系统很不方便,任何一方都需要等待对方将其密钥发送过来才能进一步加密,这延迟了 E-mail 的及时性。笛福又想出了「不对称密钥」的概念,任何人可以做出自己的一对密钥:一个公钥和一个私钥,然后把公钥公布出去,使用这个公钥加密的消息只有拥有对应的私钥的人才能解密。这个系统的巨大优点是不需要像笛福—赫尔曼—摩科尔密钥交换中那样来来回回地折腾了。
虽然笛福想出了不对称密钥的概念,但他并没有想出一个具体的实行方案。然而,仅仅是不对称密码的概念也是具有革命性的。笛福在 1973 年发表了他想法的大纲,希望其他的科学家加入寻找合适的单向函数的行列。远在 5000 公里外的美国西海岸的另一个研究组成功地发现了这种函数。
麻省理工大学计算机科学实验室的三位研究员罗・里维斯特(Ron Rivest)、埃迪・沙默尔(Adi Shamir) 和莱昂拉德・阿德尔曼(Leonard Adleman) 组成了一个完美的小组。里维斯特是一位计算机学家,能快速吸收新知识、新想法,并将它们运用到似乎不可能的地方;沙默尔也是一位计算机学家,能够从蛛丝马迹中看到问题的症结;阿德尔曼是一位数学家,负责挑出里维斯特和沙默尔的错误,以使他们在错误的道路上少浪费时间。1977 年 4 月,三人在一个学生家过逾越节,到了半夜才各自回家。里维斯特无法入睡,躺在沙发上阅读一本数学课本并思考不对称密码系统中的单向函数问题。经过一整夜的思考与演算,终于有了突破。这是三人一年多合作的结果,但阿德尔曼提议将自己的名字从论文中去掉,但里维斯特拒绝了。最终,三人达成一致,将阿德尔曼作为论文的第三作者。由此,这个系统称为 RSA(Rivest、Shamir、Adleman)而非 ARS,成为现代密码学中最有影响的密码系统。
RSA 算法基于分解质因数非常困难这一事实,其具体实现过程:
- 挑选两个非常巨大的质数 \(p\) 和 \(q\)。这两个质数应该足够大,但为简单起见,我们假设挑选了 \(p = 17\),\(q = 11\)。这两个质数必须保密。
- 将上述两个质数相乘得到另一个数 \(N\)。此例中 \(N = 187\)。接下来,挑选另一个数 \(e\),这个数必须与 \((p – 1) \times (q – 1)\) 互质。此例中,\(e = 7\)。
- 此时,将 \(e\) 和 \(N\) 公布出去,这两个数合在一起称为「公钥」。
- 加密时,密文 \(C = M^e (mod\ N)\)。例如,字母「X」对应的 ASCII 码为 88,也就是说 \(M = 88\),因此密文 \(C = 88^7 (mod\ 187) = 11\)。
- 解密时,先计算其「私钥」\(d\),以满足 \(e \times d = 1 (mod\ (p - 1) \times (q - 1))\)。此例中,\(d = 23\)。计算 \(d\) 的过程涉及欧几里得算法(Euclid’s algorithm)。
- 计算明文 \(M = C^d (mod\ N)\),同样得到 \(M = 88\)。
只要 p 和 q 足够大,RSA 是无法破解的。对于 RSA 加密系统唯一的警告是,在未来人们有可能发现更快的分解质因数的方法,那么 RSA 就变得无用了。RSA 于 1977 年 8 月公布。当时,马丁・加德纳(Martin Gardner)在《美国科学人》的数学游戏专栏中给读者提出了一个挑战,公布了密文及其公钥,挑战是解出密钥,奖金是 100 美元。17 年后的 1994 年 4 月,一个六百余志愿者的小组才破解成功,破译出的原文是一系列数字,转化成字母后,得到的文字是「具有魔力的词是易受惊的鱼鹰(The magic words are squeamish ossifrage)」。RSA 系统这么短时间内就被破解是因为马丁・加德纳所用的 N 相对较小,数量级只达到了 \(10^{129}\)(RSA-129)。另外还有一系列的 RSA 分解质因数挑战(RSA Factoring Challenge)。
实际上,1997 年英国政府声称,他们在政府通讯部门(GCHQ)很早就发明了公开密钥密码术。早在 1969 年,前英国政府的密码专家詹姆斯・埃利斯(James H. Ellis) 是从贝尔实验室的一篇报告中得到的启发。在电话线路中有意地夹杂噪音来掩盖发送者的讲话,而由于只有接收者知道加的是什么噪音,也只有他可以去除噪音。埃利斯证明了公开密钥是可能的,也发明了公钥和私钥的概念,也知道需要发现一种特殊的单向函数在某些特殊信息后可以逆转,与笛福在 1975 年一样,也陷入了找不到这样的单向函数的僵局,于是埃利斯对他的上司陈述了他的理论。
1973 年 9 月,年轻的数学家克利福德・科克斯(Clifford Cocks) 从其导师尼克・帕特森(Nick Patterson)得知埃利斯的理论后,只花了不到半个小时就解决了这个问题。他此前做过数论的研究,很自然地想到了单向函数,而质因数分解很自然地成了他的选择,这就是他的出发点。RSA 三人组在 1977 年发现了加密法,早在四年前,这位年轻的剑桥毕业生就做出了同样的发现。
1974 年,科克斯将他的工作介绍给同在 GCHQ 工作的剑桥校友马尔科姆・威廉姆生(Malcolm J. Williamson)。威廉姆生违反了 GCHQ 的规定,将工作带回家,试图证明科克斯是错的,他失败了,但却找到了另一种解决密钥分发问题的方法,对应笛福—赫尔曼—摩科尔密钥交换,与马丁・赫尔曼几乎在同一时间发现。有趣的是,GCHQ 是先发现 RSA,然后才发现笛福—赫尔曼—摩科尔密钥交换的。1982 年 9 月,笛福很可能是通过国家安全局听说了英国发现的传言,并与妻子亲自去英国核实这个传言,并与詹姆斯・埃利斯会面。埃利斯非常谦虚地回答笛福的询问说:「好,我不知道我该说多少。让我这么说吧,你们所做的要比我们做的多得多。」
虽然是 GCHQ 首先发明了公开密钥密码术,但这并不能贬低那些重新发现这个密码术的学者们的成就。在智力水平上,两次发现是等价的,且应互为注脚。
相当好的隐私
菲尔・齐默尔曼(Phil Zimmermann) 认为每个人都应该能够享用由 RSA 系统提供的安全加密,从而保护他们的隐私。他把他的政治热情都放在发明一种大众用的 RSA 加密系统上,设计一种经济而有效的产品,而且不超越个人计算机的计算能力,同时有着友好的界面,使得大众在不受密码专家指导的情况下就可以给自己的信息加密。他把他的计划称为 「相当好的隐私(Pretty Good Privacy)」,简称 PGP。这个名字源自于「相当好的杂货店」,是大草原家乡运动发起人之一拉尔夫主持的一个齐默尔曼喜欢的广播节目。
RSA 的加密和解密过程都需要大量的数学计算,如果信息过长的话,使用个人计算机运算加密和解密过程都需要几分钟的时间。为了加快 RSA 加密系统,齐默尔曼非常巧妙地把 RSA 不对称加密系统和原来的对称加密系统联合使用:选择一个密钥,使用对称加密系统(如齐默尔曼推荐使用的 IDEA)对原信息加密,再使用对方的公钥加密「对称加密系统的密钥」。对方接收到时,先使用自己的私钥解密得到「对称加密系统的密钥」,再使用此密钥解密得到原信息。
PGP 还加了很多友好的特性,比如产生公钥和私钥时需要生成两个很大的质数,PGP 中只需胡乱动一下鼠标即可生成随机数,保证每个 PGP 用户的密钥不会重复。PGP 的另一个特色是它为电子邮件提供了数字签名,是基于笛福和赫尔曼发明的原则。他们提出的公钥和私钥概念,使用公钥加密时,只能使用对应的私钥解密,解决了密码分发问题。反过来,使用私钥加密,只能使用对应的公钥解密,提供了身份认证的特性。
在 PGP 中没有任何东西是原创的,但齐默尔曼是第一个把这一切结合起来制造出如此运用简便产品的人,而且这个产品可以运用在一个中等的个人计算机上。
PGP 存在两个非技术的问题:
- RSA 是专利产品,专利局要求齐默尔曼在推出 PGP 产品之前,必须得到 RSA 数据安全公司的使用 RSA 的授权。齐默尔曼决定搁置此问题,他觉得 PGP 是针对个人的产品,与 RSA 数据安全公司没有利益上的竞争,他希望对方会给他免费使用 RSA 系统的授权。
- 美国参议院 1991 年反犯罪法案要求提供电子通讯服务的公司和电子通讯设备的制造者,应该保证通讯系统允许政府得到通讯内容的明文。RSA 数据安全公司、通讯工业和公民自由组织的力量迫使国会废除了这个条款。齐默尔曼担心政府迟早会卷土重来,他一直想卖出 PGP,但他决定与其等着 PGP 被政府封杀,不如先使每个人都能用到 PGP。1991 年 1 月,他让一个朋友把 PGP 公布在世界性的新闻组网络系统的公告板上,从此 PGP 在互联网上流传开来。
RSA 数据安全公司决定不给予齐默尔曼免费使用 RSA 系统的授权,并将 PGP 列为「盗版软件」,专利之争持续了好几年。除此之外,联邦调查局将加密系统视为武器,和导弹、迫击炮以及枪支一样,因此齐默尔曼被指控非法出品武器,指控持续了三年。
对菲尔・齐默尔曼和 PGP 的调查引发了一场关于在信息时代加密的积极作用和消极作用的争论。PGP 的传播激发了密码学家、政客、公民自由战士和法律执行者认真思考广泛传播加密技术的意义。一些人,比如齐默尔曼,认为广泛使用加密技术是对社会有利的,因为它能保证个人在他们的通讯中有隐私权。那些反对他们的人则认为加密对社会是一种威胁,因为犯罪分子和恐怖分子可以利用它来作安全的通讯。
奥姆真理教( Aum Shinrikyo)在 1995 年用毒气袭击了东京地铁,他们就是用 RSA 系统加密他们的文件的。拉姆齐・尤舍弗(Ramsey Yousef),一位参与了 1993 年世界贸易中心爆炸事件的恐怖分子,在他的笔记本电脑中保留着加密的未来恐怖活动的计划。
根据 UKUSA 协议(UKUSA Agreement),美国的国家安全局有一个国际合作的监听网络,其中包括与许多国家的合作,包括英国、澳大利亚、加拿大和新西兰,它们共享搜集到的信息。这个网络包括许多站点,比如在约克郡的孟威斯山信号情报基地(Menwith Hill Signals Intelligence Base),它是世界最大的谍报基地,其中涉及到了「埃斯农(ECHELON)」系统,能根据预设的关键词检查电子邮件、电传和电话。如果所有的信息是加密了的,「埃斯农」系统就没那么有效了。
通常,加密的安全取决于密钥的长度。在美国对密钥的长度没有任何的限制,但美国软件公司仍不准出品含有强大密码术的网络产品。因此,出口到其他国家的浏览器只能用长度较短的密钥,因此只能得到中度的安全保证。
折衷方案是一个叫做「第三方掌管密钥(key escrow)」的方案,以及第三信任方(Trusted Third Party,简称 TTP)提供的「密钥恢复」服务,都饱受争议。
1996 年,经过 3 年的调查后,美国律师总部放弃了针对齐默尔曼的案件。联邦调查局意识到 PGP 早已逃入互联网,起诉齐默尔曼不会有任何好处,且齐默尔曼受到了许多大机构的支持。另外,即使起诉齐默尔曼,他也很可能被判无罪,反而会引起一场关于隐私权的宪法的争议,大众也会同意广泛使用密码术。另外,齐默尔曼也从 RSA 公司处取得了使用 RSA 系统的授权,从而解决了专利问题。1997 年,齐默尔曼把 PGP 卖给了网络联盟,自己成为它的一位资深人员。虽然 PGP 卖给公司,但它提供给不做商业目的的个人免费使用。
量子的飞跃
密码破解术的最新的发展称为「暴风雨攻击」,其目的是侦查电子装置发出的电磁信号。例如 Eve 将一辆有篷货车停在 Alice 家的外面,她就能用灵敏的「暴风雨」仪器来分辨 Alice 在电脑上设定的每一个单独的按键。为了预防「暴风雨攻击」,一些公司已推出起防护作用的材料,将其用在屋子的墙上就能阻止电磁信号的外泄。在美国,必须取得政府的许可才能购买这种防护材料,这就暗示一些组织比如联邦调查局,一般是依靠「暴风雨」进行监视的。
量子力学的创始人之一尼尔斯・波尔的「警告」:「如果一个人读量子力学时不感到吃惊,那他就是没有理解量子力学。」18 世纪末托马斯・杨(Thomas Young)从池塘中两只并排游动的鸭子身后的水纹,回想起他在较早时做的「光的衍射」实验,并得出结论:光是以波的形式存在的。
光是以波的形式存在还是以粒子的形式存在,视条件而定。光的这种不确定性被称为光的「波粒二相性(Wave–particle duality)」。现代物理学思想认为一束光是由无数个独立的粒子组成的,这些粒子称为光子(Photon),光子表现波的性质。现代技术使得物理学家能用一根纤维重复杨的试验,这根纤维细到每次只能发出单个光子。由于一些特殊原因,甚至只有一个光子时,也能在屏幕上形成明暗相间的光斑,就像很多光子发生的干涉现象。为了解释这一现象,物理学家借助量子理论,但也分成了两个阵营:
- 重叠理论:光子以某种方式分离成两个「鬼光子」穿过两个狭缝。1933 年诺贝尔物理学奖获得者埃尔温・薛定谔(Erwin Schrödinger)创立了被称为「薛定谔的猫(Schrödinger’s cat)」的理论,经常被用来帮助解释重叠理论的概念。重叠状态仅仅是我们没有看着这个物体时发生的,这是一种描述物体处在不确定状态的方法。
- 多元宇宙论:离开纤维的光子在穿过狭缝的时刻,宇宙分成了两个宇宙,在一个宇宙中光子穿过的是左边的狭缝,在另一个宇宙中光子穿过的是右边的狭缝,这两个宇宙以某种方式互相干涉,这就说明了光斑的形成。
英国物理学家戴维・多伊奇(David Deutsch) 是研究量子计算机的先锋之一,他在 1985 年发表的一篇论文中描述了他设想的根据量子物理定律进行操作的量子计算机。量子计算机中表示数字的一种方法是利用自旋粒子的形式:当一个粒子自东向西自旋时,它就代表 1;当它自西向东自旋时,就代表 0。因为使用的都是基本粒子,所以它们遵守量子物理定律。因此,当一个粒子没有被观察时,它就处于重叠态,这就意味着它同时在两个方向都有自旋,所以它可同时代表 0 和 1。另一种选择是,这个粒子进入了两个不同的宇宙:在一个宇宙它自东向西自旋代表 1,而在另一个宇宙它自西向东自旋代表 0。
由于向粒子发射足够大的脉冲能量可以改变粒子的自旋方向,如果发出的是较弱一些的脉冲,那么粒子有时改变自旋方向,有时仍然保持原来的自旋方向,这就使得粒子达到重叠态。量子计算机的 0 和 1 称为「奎比特(qubit)」。量子计算机最大的障碍是怎样在整个计算过程中维持重叠态。重叠态只能在没被观测的情况下才会存在,从广义上讲,任何一种对重叠态的外部作用都属于观测。一个单独的偏离轨道的原子碰到某一个自旋的粒子,就会使重叠态遭到破坏,转变成一个独立的状态,使量子计算失败。
1994 年,新泽西 AT&T 贝尔实验室的彼特・肖尔成功勾勒出可用的量子计算机程序的雏形,其程序定义的一系列步骤,是在量子计算机上运行能质因数分解一个很大的数,这正是解开 RSA 密码所需要的。1996 年,贝尔实验室的洛夫・格罗弗编写了又一个强大的程序,能以难以想象的高速搜索一个列表,而这正是解开 DES 密码所需要的。尽管肖尔和格罗弗的程序让密码破解者看到了极为乐观的前景,但仍没有一台可工作的量子计算机能运行这些程序。
20 世纪 60 年代末,哥伦比亚大学的毕业生斯蒂芬・威斯纳(Stephen Wiesner) 提出奇特的量子货币(quantum money)的概念,很大程度上依赖于光子物理学。当一个光子在空间运动时,光子是振动的,称为光子的「偏振现象」。一个光球发出所有振动方向的光子。把问题简单化,假设光子只有四种偏振,表示为 →、↑、↗、↘。在光子的运动路径上放一个偏振滤光片,它只允许一束光中某一特定偏振方向的光子通过,也就是说,透过的光子具有相同的偏振方向。当对角方向偏振的光子面对垂直方向的偏振滤光片时,其处于「量子困境(quantum quandary)」,其中随机的一半被阻挡,另一半穿过偏振片,而那些穿过去的光子将变成垂直方向偏振。
威斯纳的想法是在钞票上设置 20 个陷光器,这种微型装置可以捕捉并保留住一个光子。他建议银行使用四个不同偏振方向的滤光片,并用一定顺序的 20 个偏振光子填满 20 个陷光器,每一张纸币上的顺序都不同,同时还会带有一个传统的序列号与之对应。银行需要保留一张原版的表,记录序列号和相对的偏振序列。测光子的偏振方向是一件众所周知的很困难的工作,这是测不准原理的一个方面。造假币者不能测出真币中的偏振方向序列,因为他不知道每一个陷光器中的光子是哪一种类型,因此也就不可能知道怎么才能正确设置偏振滤光片的方向进行测量。另一方向,银行就能检查真币的偏振方向序列,因为最初的序列是它设置的,所以银行知道在每一个陷光器应该用哪种偏振方向的滤光片。银行在检查钞票是真的之后,需要用适当的光子重新填满陷光器,再发放回流通领域中。
量子货币的概念由于技术和成本无法实行,威斯纳的论文也被多方退稿,只有威斯纳的一位老朋友查尔斯・贝内特(Charles H. Bennett) 意识到此概念的重要性。贝内特和另一位合作伙伴吉勒斯・布拉萨德(Gilles Brassard) 发现威斯纳的想法可能可以运用于密码学。当加密的信息用一序列的偏振光子表示和传送时,理论上,Eve 似乎是不能准确地读到这样加密的信息的,如果她不能读到这些加密信息,那她就不能破译这个信息。而且她只有一次机会准确地测量光子。一个光子是不可分割的,所以她不能把它分成两个光子,用两种类型的检测器检测。
然而,Bob 将和 Eve 一样,也无法知道 Alice 对每个光子的偏振方向是用什么方案决定的。一个明显的解决方法是,Alice 和 Bob 在每个光子上用哪种偏振方案达成一致,但又回到了密钥分发的老问题上了——Alice 必须以某种方式把偏振方案表安全地送给 Bob。1984 年,贝内特和布拉萨德在等火车时的闲聊中想到了解决方法,由此创立了量子密码术,被称为 BB84。其中的量子密钥交换(Quantum key distribution,简称 QKD)过程如下图所示:
量子密钥交换过程描述如下:
- Alice 任意发送一序列的 1 和 0(奎比特),任意选择直线式(水平和垂直方向偏振)和对角式偏振方案。
- Bob 要测出这些光子的偏振方向。由于不知道 Alice 对每个光子使用的哪一种偏振方案,只能交替尝试「+ 型检测器」和「× 型检测器」,因此有可能选择错误。
- Alice 通过普通的不安全的电话线打电话给 Bob,告诉 Bob 自己对每个光子使用的是哪一种偏振方案,但不告诉他每个光子具体的偏振方向。然后 Bob 告诉 Alice 他猜对了哪些奎比特的偏振方案。最后 Alice 和 Bob 舍去 Bob 用错误的方案测量的光子,把他用对了方案测出的光子集中起来。结果得到一个新的短一些的奎比特序列。
这个达成一致的随机产生的序列可以被用作一个「一次性便笺密码」的密钥。
量子密码术不仅实现了密钥的安全分发,还可以利用这个方法发现是否有人在窃听。因为每测一个光子都有可能改动光子的偏振方向,这些改动对 Alice 和 Bob 来说太明显了。当 Eve 用错的检测器测量光子时,她会使其中的某些光子的偏振方向发生转动,这就使 Bob 可能测错,甚至是他用了正确的检测器时他也会错。当双方进行短暂的错误检查程序时就能发现这些错误。
错误检查程序是在前面提到的三个步骤之后进行的。Alice 和 Bob 随机地检查最后集中起来的二进制序列的一部分(比如 1075 位中随机的 75 位),由于这一部分数是 Alice 和 Bob 公开讨论过的,所以必须舍去,这样最后的密钥长度变成 1000 位。但是如果 Alice 和 Bob 在这 75 个数中有前面提到的矛盾的地方,那么整个 1075 位二进制序列都要舍去,换一条新的线路,全部从头开始。
1989 年,贝内特和一个研究生约翰・斯莫林(John Smolin)成功组建了世界上第一个量子密码交换的演示系统,尽管两台计算机只相隔 30 厘米远。更有效地传输光子的媒介是通过光纤,1995 年,研究者在日内瓦大学成功实现了在长达 23 公里的光纤上把量子密码从日内瓦传到了尼永(Nyon)。而洛斯阿拉莫斯国家实验室的研究小组成功地在空气中将量子密码传出了 1 公里远。
量子密码术将标志着密码制造者和密码破解者之间的战争的结束,密码制造者是最后的胜利者。量子密码术是不可破解的加密系统。如果一条用量子密码保护的信息被破译了,这将意味着量子理论是有缺陷的,而物理学家就要推翻他们的理论,被迫重新思考他们对宇宙在最基本的层次运作原理的理解。如果量子密码系统能实现长距离操作,则密码的发展将会停止,隐私权的追求也就走到了尽头,剩下的问题就是政府是否允许我们使用这些技术。
以上。