你完全可以理解量子信息(連載五)

十三、為什麼需要量子密碼術?

我們終於說到了量子信息的最後一個應用“量子密碼術”,也稱為“量子保密通信”或者“量子密鑰分發”。這是迄今唯一接近實用的量子信息應用,但這一個就具有極高的軍事和商業價值,足以證明各國對量子信息的大力投入是物有所值的。所以,我們也要用最多的篇幅來比較詳細地解釋它。

在科學界的術語中,量子通信是一個廣泛的研究領域,包括量子密碼術、量子隱形傳態和本文中沒有介紹的“超密編碼”等等。但由於量子密碼術是唯一接近實用的,所以當媒體報道“量子通信”的時候,他們往往實際上指的就是量子密碼術,即量子通信的一部分而非全部。這是我們在看新聞時需要注意的。

看“量子密碼術”這個名字,就能知道這是一種保密的方法。為什麼需要用量子力學的方法來保密呢?我們需要了解密碼學的基本原理,才能明白量子密碼術解決了傳統密碼術的什麼“痛點”,以及量子因數分解對傳統密碼術造成了什麼樣的挑戰。(敲黑板!)下面我們來上一堂簡短的密碼學課程。

把明文變換成密文,需要兩個元素:變換的規則和變換的參數。前者是編碼的算法,例如“在英文字母表上前進x步”。後者是密鑰,例如上述算法中的x這個數。如果取x = 1,明文的“fly at once”(立即起飛)就會變成密文的“gmz bu podf”。

一般人常常以為,我用一個你想不到的算法,就能保密。但事實上,把希望寄託在算法不洩露上,是靠不住的。同一個算法很可能有許多人在用,這些人當中任何一個人都可能洩露算法。如果算法用到機器(例如二戰中德國用的Enigma密碼機),那麼敵人只要得到一臺機器,就可以知道算法。

你完全可以理解量子信息(連載五)


打開網易新聞 查看更多精彩圖片

閃電戰創始人古德里安在指揮車上

左下方是Enigma密碼機

只要你知道有一個人或一臺機器洩露了算法,那麼所有人的算法就都要換,這個工作量大得驚人。如果你沒發現算法的洩露,那損失就更可怕了。例如在第二次世界大戰中,德國和日本的密碼系統早就被盟國破解了,而他們一直不知道,送上了無數機密。山本五十六的飛機,就是因為行程洩露被擊落的。

那麼,靠得住的是什麼呢?所有的保密方法都是通過隱藏某些東西來實現的,而最容易隱藏的是密鑰。同一個算法可以有很多個密鑰,使用同樣算法的每一組人都可以用單獨的密鑰。如果有人洩露了一組密鑰,用不著驚慌,只要更換一組密鑰就行。即使你沒發現密鑰洩露,也只是這一組人的情報失竊,不會拖累其他人。

因此,密碼學的一個基本原則是,在設計算法時,你必須假設敵人已經知道了算法和密文,唯一不知道的就是密鑰。密碼學的研究目標就是,讓敵人在這種情況下破譯不了密文。當然,你可以對算法保密,這可能會增加敵人的困難。但無論如何,不能把希望寄託在這上面。

最容易想到的保密框架,是通信雙方都知道同一組密鑰,A用它將明文轉換成密文,B用它將密文變換回原文。《紅燈記》、《潛伏》等諜戰片中情報人員捨死忘生、殫精竭慮保護和爭奪的密碼本,就是密鑰。由於通信雙方都知道同一組密鑰,所以這種方法叫做“對稱密碼體制”。

你完全可以理解量子信息(連載五)


《紅燈記》

對稱密碼體制究竟安全不安全呢?回答是:密碼本身可以是安全的,但密鑰的分發不安全。

我們先來解釋前一句話:密碼本身可以是安全的。信息論的創始人香農(Claude E . Shannon)證明了一個數學定理:密鑰如果滿足三個條件,那麼通信就是“絕對安全”的。這裡“絕對安全”是一個數學用語,它的意思是:敵人即使截獲了密文,也無法破譯出明文,他能做的最多也只是瞎猜而已。哪三個條件呢?一,密鑰是一串隨機的字符串;二,密鑰的長度跟明文一樣,甚至更長;三,每傳送一次密文就更換密鑰,即“一次一密”。滿足這三個條件的密鑰叫做“一次性便箋”。

稍微思考一下,就能理解香農的定理。比如說,你拿到的密文是一個8位的字符串DHDSBFKF,這其中每一位的原文都是另外一個字符,對應規則都是“在英文字母表上前進x步”,但x對每一位都單獨取值(這就需要密鑰的長度至少跟原文一樣,即第二個條件),而且是隨機的(第一個條件)。例如第一位的x = 1,把原文的C變成密文的D,第二位的x = 3,把原文的E變成密文的H。如果你是敵對方,你如何猜出原文?

有一個常用的辦法是基於英文中各個字母使用頻率的不同(最常見的前五位是E、T、A、O、I),統計密文中每個字母出現的頻率。但這隻適用於每一位的變換規則都相同的情況(即只有一個統一的x),而在這裡每一位都有自己隨機的x,這一招就用不上了。如果不是一次一密(第三個條件),你還可以連續截獲好幾份密文,然後在多份密文的同一個位置做這種頻率分析。但加上一次一密之後,連這個僅存的希望也破滅了。因此,你除了瞎蒙之外,還能幹什麼呢?

我們再來解釋後一句話:密鑰的分發不安全。香農的定理聽起來好像已經解決了保密通信的問題,但其實沒有。真正的難題在於,怎麼把密鑰從一方傳給另一方?

在現實生活中,需要第三方的信使來傳遞。而信使可能被抓(如《紅燈記》中的李玉和)或者叛變(如《紅巖》中的甫志高),這麻煩就大了。最好是不通過信使,通信雙方直接見面分享密鑰。但是如果雙方可以輕易見面,還要通信幹什麼?

為了解決密鑰配送的問題,聰明的數學家們想出了另外一套辦法,稱為“

非對稱密碼體制”或者“公鑰密碼體制”。現在不需要信使了,李鐵梅和餘則成可以光榮下崗了。為什麼可以做到這樣呢?請注意,解密只是接收方B的事,發送方A並不需要解密,他們只要能加密就行。

那好,B打造一把“鎖”和相應的“鑰匙”,把打開的鎖公開寄給A。A把文件放到箱子裡,用這把鎖鎖上,再公開把箱子寄給B。B用鑰匙打開箱子,信息傳輸就完成了。

如果有敵對者截獲了箱子,他沒有鑰匙打不開鎖,仍然無法得到文件。這裡的“鎖”是公開的,任何人都能得到,所以叫做“公鑰”,而“鑰匙”只在B手裡有,所以叫做“私鑰”。

這種巧妙的思想,實現的關鍵在於:有了私鑰可以很容易地得到公鑰,而有了公鑰卻很難得到私鑰。就是說,有些事情沿著一個方向操作很容易,逆向操作卻非常困難,“易守難攻”。因數分解就是一個典型例子。這就是因數分解能用於密碼術的原因,上文所述的RSA密碼體系就以此為基礎。

然而,公鑰密碼體制仍然不能保證絕對安全。無論是經典的還是量子的算法,都在不斷改進。RSA在理論上已經被量子的因數分解算法攻克了。你當然可以尋找其他的易守難攻的數學問題(這是一個活躍的研究領域),但誰也無法保證將來的算法進步是不是能破解這個問題,這會成為一場無窮無盡的貓捉老鼠的遊戲。更可怕的是,有可能敵對國家或組織已經找到解密的算法了,而你還不知道!

我們來總結一下傳統密碼術的困境。對稱密碼體制本身是安全的,但分發密鑰的信使是大漏洞。非對稱密碼體制不需要信使,但你又會擔心它被數學方法破解。兩難。

山重水複疑無路,柳暗花明又一村。噹噹噹噹噹,英雄閃亮登場的時候到了!不錯,我就是美貌與智慧並重,英雄與俠義的化身,……量子密碼術!

你完全可以理解量子信息(連載五)


我就是美貌與智慧並重,英雄與俠義的化身:唐伯虎

咳咳,量子密碼術做的是什麼呢?其實是回到對稱密碼體制,但取消信使。也就是說,不通過信使,就能讓雙方直接共享密鑰。這樣就吸收了對稱和非對稱兩種密碼體制的優點,克服了它們的缺點,實現了一種真正無懈可擊的保密通信。

怪哉,不通過信使怎麼共享密鑰?關鍵在於,這裡的密鑰並不是預先就有的,一方拿著想交給另一方。(地下黨組織:李玉和同志,這是密電碼,這個光榮而艱鉅的任務就交給你了。)在初始狀態中,密鑰並不存在!(地下黨組織:李玉和同志,我們沒有任何東西要交給你,解散!)

量子密鑰是在雙方建立通信之後,通過雙方的一系列操作產生出來的。利用量子力學的特性,可以使雙方同時在各自手裡產生一串隨機數,而且不用看對方的數據,就能確定對方的隨機數序列和自己的隨機數序列是完全相同的。這串隨機數序列就被用作密鑰。

量子密鑰的產生過程,同時就是分發過程,——這就是量子密碼術不需要信使的原因。

關於量子密鑰的特點,還可以再解釋得詳細一點。量子密鑰是一串隨機的字符串,長度可以任意長,而且每次需要傳輸信息時都重新產生一段密鑰,這樣就完全滿足了香農定理的三個要求(密鑰隨機,長度不低於明文,一次一密),因此用量子密鑰加密後的密文是不可破譯的。

雙方都有了密鑰之後,剩下的事情就跟經典的通信完全相同了:A把明文用密鑰編碼成密文,然後用任意的通信方式發給B。“任意的”通信方式的意思就是“怎麼都行”:可以用電話,可以用電報,可以用電子郵件,甚至用平信都行。香農的定理保證了這一步不怕任何敵人,因為截獲了也破譯不了。

因此,量子保密通信的全過程包括兩步。第一步是密鑰的產生,這一步用到量子力學的特性,需要特別的方案和設備。第二步是密文的傳輸,這一步就是普通的通信,可以利用任何現成的通信方式和設施。量子保密通信所有的奇妙之處都在第一步上,所以它又被叫做“量子密鑰分發”,這是業內人士常用的一個技術性的名稱。

十四、量子密碼術的實現方法

什麼樣的操作,能在通信雙方產生一段相同的隨機數序列呢?

如果你是一個真正聰明而細心的讀者,你就會想起本文前面關於EPR實驗的一句話:“A測量粒子1得到的是一個隨機數,B測量粒子2得到的也是一個隨機數,只不過這兩個隨機數必然相等而已。”

妙啊!那一段是解釋為什麼EPR實驗不能傳輸信息,但有了量子密碼術的背景知識,你就會領悟到,把這個過程重複多次,雙方得到的相同的隨機數序列就可以用作密鑰。然後你可以用這個密鑰傳輸信息。這和“EPR實驗不傳輸信息”並不矛盾,因為傳輸信息時用的是普通的通信方式,不是EPR實驗。

很好,利用量子糾纏,我們立刻就找到了一種量子密碼術的方案。這至少說明量子密碼術是可以實現的,證明了它的存在性。

你完全可以理解量子信息(連載五)


量子密碼術

但是,不少科普作品說量子密碼術離不開量子糾纏,這就大錯特錯了!這種說法造成了很多困擾。實際上,量子密碼術有若干種實現方案,有些用到量子糾纏,有些不用量子糾纏。量子糾纏是個可選項,而不是必要條件。

不僅如此,稍微想想你還會明白,量子糾纏是一種多粒子體系的現象,而對於實驗來說,操縱多個粒子肯定比操縱一個粒子困難。所以,只要有單粒子的方案,人們必然會優先用單粒子方案。實際情況正是如此,絕大多數量子密碼術的實驗都是用單粒子方案做的,這樣才能達到最優的效果。而基於量子糾纏的量子密碼術方案,就像用火箭送快遞一樣不實用,只具有理論意義。

當然,這不是說量子糾纏沒用。對於整個量子信息學科來說,量子糾纏非常有用,例如量子隱形傳態就以量子糾纏為基礎,但那是量子密碼術之外的應用了。正是因為量子密碼術可以不用量子糾纏,所以它的技術難度在量子信息的各種應用中是最低的(只是相對而言,絕對的難度還是很高),所以它發展得最快,最先接近了產業化。

不用量子糾纏,怎麼在雙方產生相同的隨機數序列?想想前面介紹的“三大奧義”,真正產生隨機數的是對疊加態的測量。所以只要充分利用疊加和測量這兩個手段,單個粒子就可以在雙方產生相同的隨機數。在“三大奧義”中,量子密碼術只需要前兩個(疊加、測量)就夠了,不需要第三個(糾纏)。

科學家們把量子密碼術的方案都稱為某某協議(就像計算機科學中的“TCP/IP協議”),上述利用EPR對的方案叫做EPR協議,而單粒子的方案包括BB84協議、B92協議、誘騙態協議等等。BB84協議是美國科學家Charles H. Bennett和加拿大科學家Gilles Brassard在1984年提出的,BB84是兩人姓的首字母以及年份的縮寫。BB84協議是最早的一個方案,而且目前最先進的誘騙態協議可以理解為它的推廣。所以只要理解了BB84協議,就理解了量子密碼術的精髓。

在BB84協議中,用到光子的四個狀態:|0>、|1>、|+>和|->。Hi,四位老朋友,又見面了~(|0>、|1>、|+>和|->:我們叫做“江南四大才子”!)在實驗上,這四個狀態是用光子的偏振(回顧一下,偏振方向就是電場所在的方向)來表示的,分別對應光子的偏振處於0度、90度、45度和135度。

你完全可以理解量子信息(連載五)


江南四大才子

讓我們回憶一下,|0>和|1>這兩個態構成一個基組,|+>和|->這兩個態構成另一個基組。在某個基組下測量這個基組中的狀態,比如說在|0>和|1>的基組中測量|0>,那麼結果不變,測完以後還是|0>這個態。在某個基組下測量這個基組之外的狀態,比如說在|0>和|1>的基組中測量|+>,那麼結果必然改變,以一半的概率變成|0>,一半的概率變成|1>。

好,現在我們來敘述BB84協議的操作過程。A拿一個隨機數發生器(通俗地說就是擲硬幣),產生一個隨機數0或者1(讓我們把它記作a),根據這個隨機數決定選擇哪個基組:得到0就用|0>和|1>的基組,得到1就用|+>和|->的基組。選定基組之後,再產生一個隨機數(記作a′),根據這第二個隨機數決定在基組中選擇哪個狀態:得到0就在|0>和|1>中選擇|0>或者在|+>和|->中選擇|+>,得到1就在|0>和|1>中選擇|1>或者在|+>和|->中選擇|->。經過這樣雙重的隨機選擇之後,A把選定狀態的光子發送出去。

B收到光子的時候,並不知道它屬於哪個基組。他怎麼辦呢?他可以猜測。B也拿一個隨機數發生器,產生一個隨機數(記作b),得到0的時候就在|0>和|1>的基組中測量,得到1的時候就在|+>和|->的基組中測量。B測得|0>或者|+>就記下一個0,測得|1>或者|->就記下一個1,我們把這個數記為b′。

看出來了吧?如果B猜對了基組,a = b,那麼光子的狀態就是B的基組中的一個,所以測量以後不會變,a′必然等於b′。而如果B猜錯了基組,a ≠ b,那麼光子的狀態就不是B的基組中的一個,所以測量後會突變,a′和b′就不一定相等了(有一半的概率不同)。

把這樣的操作重複若干次,雙方發送和測量若干個光子。結束後,雙方公佈自己的a和b隨機數序列(“公佈”的意思就是對全世界公開,就是這麼任性~),比如說a的序列是0110,b的序列是1100。然後找出其中相同的部分,在這個例子裡就是第二位(1)和第四位(0)。

現在我們知道了,在第二位和第四位,a′和b′必然是相同的!A和B把各自手裡第二位和第四位的a′和b′記下來,這個隨機數序列就可以用作密鑰。如果發送和接收n個光子,由於B猜對基組的概率是一半,就會產生一個長度約為n/2位的密鑰。至於a、b兩個序列中不同的部分,在這個例子中就是第一位(0對1)和第三位(1對0),它們對應的a′和b′有可能不同,所以我們就不去看它們了,這部分數據直接拋棄。

不過,到目前為止我們都假定只有A、B雙方在通信,沒有敵對方在竊聽。作為一個保密的方法,需要回答的下一個問題是:在有人竊聽的情況下,如何保證密鑰不被偷走?

讓我們把這個竊聽者稱為E(聯想英文單詞evil,“邪惡的”)。料敵從寬,我們還假設E非常神通廣大,A發給B的每一個光子都先落到了他手裡。BB84協議有一個辦法,使得即使在這種最不利的情況下,E也偷不走情報。

你完全可以理解量子信息(連載五)


量子密鑰分發

什麼辦法呢?站在E的角度上想一想。如果E只是把這個光子拿走,那麼他只是阻斷了A、B之間的通信,仍然拿不到任何信息。E希望的是,自己知道這個光子的狀態,然後把這個光子放過去,讓B去接收。這樣A和B看不出任何異樣,不知道E在竊聽,而在A和B公佈a和b序列後,E看自己手上的光子狀態序列,也就知道了他們的密鑰。

但是E的困難在於,他要知道當前這個光子處在什麼狀態,就要做測量。可是他不知道該用哪個基組測量,那麼他只能猜測。這就有一半的概率猜錯,猜錯以後就會改變光子的狀態。

例如A發出的狀態是|+>(這對應於a = 1, a′ = 0),E用|0>和|1>的基組來測量|+>,就會以一半的概率把它變成|0>,一半的概率把它變成|1>,然後B再去測量這個光子。如果B用的基組是|0>和|1>(b = 0),公佈後會發現這裡a ≠ b,這個數據就被拋棄。而如果B用的基組是|+>和|->(b = 1),公佈後會發現這裡a = b, 這個數據要保留。這時b′等於什麼呢?無論是|0>還是|1>,在|+>和|->的基組下測量時都以一半的概率變成|+>(b′ = 0),一半的概率變成|->(b′ = 1)。因此,a′和b′有一半的概率出現不同。

稍微想一下,你就會發現這是普遍的結果:只要E猜錯了基組,a′和b′就會有一半的概率不同。E猜錯基組的概率是一半,所以總而言之,在E做了測量的情況下a′和b′不同的概率是1/2 × 1/2 = 1/4。這就是竊聽行為的蛛絲馬跡

那麼,通信方的應對策略就呼之欲出了。為了知道有沒有竊聽,A和B在得到a′和b′序列後,再挑選一段公佈。這是BB84協議中的第二次公佈。你看,有時為了保密,我們必須要“公佈”,而且“公佈”會成為一個威力巨大的保密武器。假如在公佈的序列中出現了不同,那麼他們就知道有人在竊聽,這次通信作廢。

這樣做的效率怎麼樣呢?公佈一個字符,E矇混過關的幾率是3/4。公佈兩個字符,就是3/4的平方。如果公佈m個字符,E矇混過關的概率就是3/4的m次方。這個概率隨著m的增加迅速接近於0。因此,如果公佈了很長一段都完全相同,那麼就可以以接近100%的置信度確認沒有竊聽,通信雙方就把a′和b′序列中剩下的部分作為密鑰。

如果發現有竊聽,那麼該怎麼辦?最容易想到的,就是把竊聽者抓起來。但那是警察的任務,不屬於密碼術的範圍。至於密碼術本身,在發現竊聽時唯一能做的就是停止通信。因此,量子密碼術規定在發現竊聽時停止通信,就像諜戰片裡通信員被發現時第一件事就是把密碼本銷燬。這樣就不會生成密鑰,也不會發送密文,自然也就不會洩密。因此,即使在最不利的情況下,量子密碼術也可以保證不洩密。

媒體經常用“絕對安全”或“無條件安全”或諸如此類的說法,來形容量子密碼術。以前這些詞看著一頭霧水,現在你可以理解,量子密碼術的安全性表現在四個方面:一,如果成功生成了密鑰,那麼密文即使被截獲了也不會被破譯;二,沒有傳遞密鑰的信使;三,不會被計算技術的進步破解;四,如果在密鑰生成過程中有人竊聽,那麼會被通信方發現,仍然不會洩密

。這幾點是量子密碼術的本質特點,任何協議都是如此。

在這四個方面,傳統密碼術做得怎麼樣呢?從前面的介紹可以看出,傳統密碼術或者只能滿足第一點和第二點(非對稱密碼體制,第一點依賴於數學複雜性,不是嚴格滿足的),或者只能滿足第一點和第三點(對稱密碼體制),無論如何都無法滿足第四點。量子密碼術是目前所知唯一的既不需要信使、也不懼怕算法進步的保密方法,更是唯一的能發現竊聽的保密方法。一對比,就知道量子密碼術的優勢有多大了!

量子密碼術的安全性是物理原理的產物,建立在量子力學的基礎上。在有些人看來,量子力學似乎不是一個非常可靠的基礎。這種心理可以理解,因為就像“三大奧義”顯示的,量子力學跟日常生活經驗反差巨大,不是一個很容易接受的理論。但如果你想為了破解量子密碼術而推翻量子力學,那就掉到一個巨坑裡去了。如前所述,量子力學經過了上百年的考驗,其應用遍及現代生活的所有角落。如果你懷疑量子力學的原理,那麼你是不是應該先擔心自己的電腦不能工作、自己的手機打不出去呢?

對於軍事和金融這樣急需保密的領域,量子密碼術顯然具有非常高的戰略意義。如果說可以破解公鑰密碼體系的量子計算機是最強的矛,那麼能夠抵禦一切攻擊的量子密碼術就是最強的盾。以子之矛攻子之盾,誰勝?盾勝!


分享到:


相關文章: