量力學的量子力學(家庭版): 量子密鑰分發(fā)


在上一篇文章量力學的量子力學(家庭版):非局域游戲中,我們用通俗的語言為大家介紹過了非局域游戲。在這里我們就以3×3魔方游戲為例,為大家介紹如何通過非局域游戲構(gòu)造一個量子密鑰分發(fā)協(xié)議。在當今的密碼學領(lǐng)域,有一句名言:“密碼學家很少能睡好,他們的職業(yè)生涯建立在有關(guān)計算復雜度的假設(shè)上,這些假設(shè)可能第二天早上起來就轟然倒塌?!比欢芯苛孔用荑€分發(fā)協(xié)議的密碼學家除外,因為它是據(jù)我所知少數(shù)可以不依賴計算復雜度的假設(shè)就可以保證安全的協(xié)議——這樣的安全性是我們最希望得到的,因為它只依賴于物理定律的正確性,而不依賴于某些不知真假的假設(shè)。同時,它也是量子信息領(lǐng)域最接近商用化的協(xié)議了,目前已經(jīng)有商業(yè)上較為成熟的量子密鑰分發(fā)的硬件和軟件——也許明天你就能從華為買到這些設(shè)備了!

那量子密鑰分發(fā)能夠解決什么問題呢?先舉個例子,大家小時候都看過《潛伏》吧?每次余則成從電臺上接受指令的時候,他都是先從電臺上聽到一串數(shù)字,之后再利用一本書來將這串數(shù)字翻譯成一段話。在密碼學里,這串數(shù)字就是密文,這段話就是明文,這本書就是密碼本,上面記載著密鑰。只要有了密碼本,我們就可以在密文和明文之間來回翻譯。然而,一定長度的密碼本只能安全地將相同長度的明文加密為密文——如果用很短的密碼本加密很長的明文,那得到的密文就非常的不安全。

量子信息領(lǐng)域的明日之星Renato Renner教授曾經(jīng)在課上講過一個笑話:美蘇冷戰(zhàn)期間,蘇聯(lián)駐美國大使館曾經(jīng)從蘇聯(lián)空運了一架飛機的磁帶到美國,這些磁帶就記錄著蘇聯(lián)情報人員需要的密碼本——如果這些密碼本只被使用一次,那沒有人能破譯蘇聯(lián)的秘密。然而,美國情報人員很快就發(fā)現(xiàn)他們同行的愚蠢之處——這些蘇聯(lián)情報人員很快就把這些密碼本用過了一遍,然而他們懶得再從國內(nèi)運磁帶過來了,于是他們又接著用了這些密碼本一遍又一遍。很快他們的密碼本就被猜的差不多了,他們的機密情報也很快就被破譯干凈了。

量子密鑰分發(fā)就可以精確的解決密碼本長度過短這個痛點。具體來說,量子密鑰分發(fā)協(xié)議可以安全的在兩方之間建立共享的隨機數(shù)序列,同時保證沒有任何第三方能夠通過竊聽猜到這串隨機數(shù)序列。這串隨機數(shù)序列可以被用作密碼本上的密鑰。通俗的講,量子密鑰分發(fā)協(xié)議可以通過遠程通信手段無中生有地創(chuàng)造出來密碼本——大家就再也不需要用飛機運送記錄著密碼本的磁帶啦!

那量子密鑰分發(fā)是怎么實現(xiàn)的呢?我們這里將不介紹最先提出的量子密鑰分發(fā)協(xié)議,比如BB84協(xié)議和EK91協(xié)議,而介紹基于非局域游戲的設(shè)備無關(guān)的量子密鑰分發(fā)協(xié)議。這里我們回憶一下上回書說到的雙方的3×3魔方游戲。在包含張三和李四雙方的3×3游戲中,我們要面對張三和李四兩個神棍。我們會要求張三在魔方中的第一列,第二列或者第三列填入或為0或為1的數(shù)字,要求李四在魔方中的第一行,第二行或者第三行填入或為0或為1的數(shù)字。我們額外要求每一列有奇數(shù)個1,每一行有偶數(shù)個1。張三和李四的獲勝條件是,他們填入的行和填入的列交叉處的數(shù)字相同。經(jīng)典科技只能讓張三和李四獲勝的概率為89%,但量子科技可以讓張三和李四獲勝的概率為100%?,F(xiàn)在,我們不再考驗張三和李四是否擁有量子科技,轉(zhuǎn)而將張三和李四視為進行加密通訊的兩個好人,他們用量子科技各自產(chǎn)生隨機數(shù),并且他們兩方產(chǎn)生的隨機數(shù)必須相同。張三和李四就可以直接使用他們在非局域游戲中輸出的行與列交叉處的數(shù)字。因為在非局域游戲中,張三和李四的獲勝概率為100%,所以他們產(chǎn)生的隨機數(shù)必然是相同的。這樣,通過這種非局域游戲,張三和李四得到了一列共享的隨機數(shù)。

那這串共享的隨機數(shù)是否有可能泄露給竊聽者呢?答案是會泄露一些,但不會全部泄露。這里我們回憶一下上回書說到的三方的3×3魔方游戲。在包含張三、李四和王二麻子三方的3×3游戲中,我們對張三和李四的要求和之前的那個雙方的3×3游戲完全一樣——也就是說,我們要求張三(李四)往魔方里填某一列(某一行),并且要求魔方中的每一列(每一行)有奇數(shù)個(偶數(shù)個)1;同時,我們要求王二麻子給出張三填入的那列和李四填入的那行交叉的那個位置的數(shù)。張三、李四和王二麻子獲勝的條件是,張三、李四和王二麻子能夠一致給出一個相同的數(shù),填在張三填的列和李四填的行的交叉位置。經(jīng)典科技和量子科技都只能讓張三、李四和王二麻子獲勝的概率為89%。同樣,現(xiàn)在,我們不再考驗張三、李四和王二麻子是否擁有量子科技。我們將張三和李四視為進行加密通訊的兩個好人,王二麻子視為竊聽者,我們要求張三和李四兩個好人用量子科技產(chǎn)生隨機數(shù),并且張三和李四產(chǎn)生的隨機數(shù)必須相同;王二麻子這個竊聽者也用量子科技進行竊聽,并且王二麻子能猜中張三和李四產(chǎn)生的隨機數(shù)。這樣,張三和李四就可以直接使用他們在非局域游戲中輸出的行與列交叉處的數(shù)字作為他們產(chǎn)生的隨機數(shù),而王二麻子就可以用非局域游戲中同樣的方法猜交叉位置的那個數(shù)。在這種情況下,三個人給出相同數(shù)字的概率只有89%。

下面,我們考慮張三和李四這兩個好人之間進行了很多輪魔方游戲,并且他們不知道是否有王二麻子這個竊聽者也參與了這些輪魔方游戲。于是他們將從這些魔方游戲得到的隨機數(shù)序列挑一些數(shù)字出來進行一下比對。這時候我們就需要分情況討論:如果張三和李四的數(shù)字相同,那么這些魔方游戲既可能是雙方的,也可能是三方的,但即使這魔方游戲是三方的,王二麻子猜中張三和李四數(shù)字的概率也只有89%,平均9個數(shù)字有1個數(shù)字猜不中,那張三和李四就可以通過簡單的操作,用這9個王二麻子可能猜中一些的數(shù)字算出來1個王二麻子很難猜中的數(shù)字,然后張三和李四這兩個好人就可以用這個數(shù)字作為他們安全的共享隨機數(shù);如果張三和李四的數(shù)字不同,那么張三和李四就可以立刻斷定,他們并沒有在進行雙方的魔方游戲,一定有竊聽者在偷聽,需要另擇良辰吉日,無人偷聽的時候,再進行通訊! 綜上所述,如果張三和李四沒有發(fā)現(xiàn)竊聽者,那他們就可以用剩下的隨機數(shù)創(chuàng)建安全的共享隨機數(shù)序列。這些隨機數(shù)序列就可以作為密碼本上的密鑰了!
?
注釋:
(設(shè)備無關(guān)的)量子密鑰分發(fā),(device-independent) quantum key distribution
?
參考文獻:
Joe Kilian. "Founding crytpography on oblivious transfer."?Proceedings of the twentieth annual ACM symposium on Theory of computing. 1988.
Renato Renner. "Security of quantum key distribution."?International Journal of Quantum Information?6.01 (2008): 1-127.