大家好,我是大老李。這期節目是上期有關量子密鑰分發協議的補充。上期節目中我介紹了使用量子糾纏協議的密鑰分發機制,也是墨子號衛星實驗中所使用的協議。
但也有一類量子密鑰分發協議不使用量子糾纏機制,被稱為「基於製備和測量的」量子密鑰分發(Quantum Key Distribution,簡稱QKD),比如BB84協議。之前每次聊到量子物理,就必談量子糾纏,讓我們暫時忘掉這一點,其實不用量子糾纏,單個粒子就可以有很好的性質,可被利用作密鑰分發。
還是以自旋方向為例,有一個方法,可以使得對粒子自旋方向的測量結果總是得到我們預期的結果。
我們可以在測量前,讓量子通過一個裝置進行某種準備,這個裝置的關鍵參數就是方向屬性。這個方向屬性與測量時所使用的測量方向本質上是同一個東西,所以都被叫做測量基(measurement basis,也可簡稱為「基底」)。而對裝置來說,另一個輸入就是我們所期望的自旋方向測量結果,這個結果只有兩種選擇,我們就用0和1來表示。而整個準備過程稱為對量子的一次「製備」。
製備的效果就是,如果測量時,選擇的測量基方向與製備時一致,則測量結果可以得到你製備時輸入的結果。比如我們如果希望測量某個粒子自旋方向是0,那我們我們就把粒子送入製備裝置,選擇目標結果為0和某個測量基方向,進行製備。
之後測量時,我們選擇同樣的測量基方向,則理論上我們可以以100%的概率得到自旋方向為0的結果。
而如果測量時,我們選擇了其他一些測量基方向,那結果就帶有隨機性了。特別是某些特定的測量基夾角情況下,測量結果是一半對一半的隨機結果,也就是製備時量子自旋信息完全丟失了。
以上這個關於量子自旋的製備和測量性質可以這樣來直觀的比喻:
如果把粒子比作硬幣,自旋方向表示硬幣哪一面向上。那麼製備的過程就是製備方把硬幣放入一個箱子裡,箱子外面有兩個小孔,分別表示一個測量基。這兩個小孔的形狀可以想像成一個是➕,一個是✖️。
(上圖:兩組測量基可選的方向,以上兩組測量基可以滿足BB84協議所需效果。)
原版BB84論文裡兩組測量基的符號也是用➕和✖️表示,因為這兩個符號的方向確實是兩組測量基可以取的方向。另外,我可以控制放入箱子後,硬幣是正面還是背面向上。製備過程就是我選擇一個硬幣方向和小孔,把硬幣從那個小孔放入箱子,並且我知道現在硬幣是哪一面向上。
那對觀察者來說,這個箱子有個奇妙性質:如果製備方從➕小孔投入硬幣,那麼只有當從➕孔觀察硬幣,你才能確切知道製備方把硬幣哪一面朝上放置了。如果你從✖️孔觀察,那麼箱子會自動重新擲一次硬幣,這樣你觀察到的結果就是一個純50%機率的結果了,反之亦然。這個性質是不是很神奇?
有這麼奇妙寶箱,要進行密鑰分發就簡單了。一種思路就是製備方先製備一系列粒子,以下簡稱為「量子位」(雖然此處不是用這些粒子做典型的量子計算,但某種程度上它也具有量子比特性質),對每一個粒子,都隨機選擇一個測量基,把這些量子位通過這些測量基後,發送給接收方。然後再通過傳統信道,把自己選擇的測量基順序發送給接收方。接收方按這些測量基順序去測量這些量子位,那麼雙方就能得到相同的一組隨機二進位。
但以上過程中,有個不太理想的步驟,即通過傳統信道發送隨機測量基方向的過程。如果有人能截取到這個信息,那麼他就可以提前測量,然後重新製備一組同樣的量子位給接收方測量,那麼雙方無法察覺,而這個人就同樣得到了密鑰。
所以需要改進一下。讓發送方仍然發送一些列量子位,但接收方對每個量子位進行測量時,隨機從兩個測量基中選擇一個進行測量。然後雙方通過傳統信道,交換自己的測量基方向信息。那麼如果在某一位上,雙方選擇了相同的測量基,雙方應該測得相同的隨機位。理論上,雙方就可以選取那些位置的量子位作為密鑰開始通信。
但為了加強安全性,雙方再從那些相同的測量基方向中,選取一部分子集作為校驗,雙方比對這些位置上的測量結果是否一致,如果誤差率過大,表示這次通信收到幹擾和攻擊,結果不可信。如果一致,那麼餘下的位置就是雙方的通信密鑰。
(上圖,一次BB84協議會話的例子:在接收方收到粒子,且雙方選擇了相同測量基位置(6個OK的位置),雙方選擇兩位作為校驗,餘下四位即為分享的密鑰。(圖片取自BB84原始論文))
這種方式下,要進行如之前所述的中間人攻擊就難了,即使你完全劫持了雙方的量子通信和傳統通信信道,但因為接收方是隨機選取測量基方向,並且雙方還要選取隨機位置進行校驗,那麼你作為攻擊者,事前就不知道該製備什麼樣的量子位給接收方才能不被發現。以上就是BB84量子密鑰分發協議的大致過程。
在發表BB84協議的同一篇的論文中,兩位作者還提出了一個很有意思的「量子猜硬幣協議」(Quantum Coin Tossing)。「量子猜硬幣協議」是解決這樣一個問題:在不同地點的兩個人,如何公平的進行猜硬幣遊戲?就是一個人丟硬幣,另一個人來猜。
這裡,兩個人之間是完全沒有信任的,哪怕視頻連線,猜硬幣的一方都懷疑丟硬幣的一方是不是準備好了兩套視頻,以保證自己能贏。所以,我們希望有一套能夠確保公平的,雙方都能接受的遠程猜硬幣協議。
大老李很早有關密碼學的節目中介紹過一些解決此類問題的思路,基本方法就是用哈希算法,確保擲硬幣一方無法抵賴。但用前面有關量子製備和測量的過程,也能達到這一目的。我們來看看,BB84協議作者是如何設計這個量子擲硬幣協議的,我還是用之前的那個箱子打比方,並且甲是擲硬幣方,乙是猜硬幣方。
首先,甲準備一系列那個具有神奇性質的箱子和硬幣。然後他從兩個小孔選擇一個小孔,作為對方要猜測的結果。所以這裡量子猜硬幣協議,實質上是「量子猜測量基協議」。
甲選定好某個測量基後,比如是「➕」,再隨機產生一串二進位,比如1000位的隨機二進位。根據這1000位隨機二進位,他把1000枚硬幣從➕小孔放入1000個箱子,並且使硬幣方向與這組二進位匹配。然後把這組箱子給乙。
乙拿到箱子後,可以從任何一個小孔去觀察每一個箱子。這樣他也得到1000位二進位,同時記錄觀察每個箱子時所選擇的小孔。
測量結果得到後,甲就可以對接收方說:好了,現在請你猜我當初是從哪個小孔放入硬幣的。
乙以任何依據給出猜測結果後,甲就可以宣布,猜對了或是猜錯了。並且,他要把自己當初的1000位隨機二進位序列發給乙驗證。
乙得到那1000位二進位後,可以比對甲所宣布的結果和自己測量的結果是否一致,以確認甲沒有說謊。
(上圖,一次量子擲硬幣協議會話過程:Alice選擇了➕測量基,並產生一組隨機二進位。Bob隨機選擇了測量基後,猜對了➕測量基。並且他可以驗證,在每一個他選擇"R"測量基的位置,其測得得二進位與Alice給出的相同。)
以上就是這個猜硬幣協議的全過程。當然,你可能有的疑問是,甲方有欺詐會如何?比如明明乙猜對了,硬說對方猜錯了,乙能發現嗎?
另一方面,乙有沒有辦法根據觀察到的結果,使得自己能以超過50%的概率猜對硬幣嗎?這一點還是比較好驗證的。稍微分析下,你會發現乙無論如何選擇自己觀察箱子的小孔,也不能使自己猜硬幣的成功率大於50%。
所以我們重點分析下,甲方欺詐會如何。甲方要欺詐,有兩次機會,一次是製備粒子時,一次是在對方給出猜測結果後,發送校驗信息的時候。
我們先看看有沒有機會在對方給出猜測結果後欺詐。比如甲方把硬幣都從➕孔放入,對方也猜了➕,但甲方硬說放的是✖️孔。
乙方說:「那請你把你最初準備的1000位二進位發給我」。此時甲方就犯難了,因其不知道乙觀察箱子時,對每個箱子所選擇的孔。因為甲說是其選擇的是✖️孔,乙方就會驗證在每個他選擇✖️孔的位置,是否觀察到與甲同樣的二進位。但甲不知道哪些位置,以及那些位置上乙觀察的結果,乙一比對就能發現甲欺詐,甲行不通。
那甲有沒有辦法在製備階段就作弊?比如製備粒子時,一半箱子箱子選擇➕,一半箱子選擇✖️放入硬幣?但這樣情況會更糟了,無論乙最後猜了➕還是✖️,甲都沒法證明他贏了,因此更沒法設計最後的校驗序列了。
綜上所述,用以上方式,即可完成一次遠程的猜硬幣過程,而且結果是公平的,不可抵賴的。但是作者同時也指出,理論上利用EPR效應,也就是量子糾纏,以上協議就有漏洞了。
我們之前說要忘記量子糾纏,現在還是要回到量子糾纏。糾纏粒子的性質大致就是,用同方向測量基測量,測量結果總是相反。那我們看看如何用量子糾纏,實現對猜硬幣方的欺騙。
方法是這樣,甲方在製備粒子的同時,保留一個這個粒子的糾纏對象在手上。然後還是如同之前協議進行。如果乙方猜錯了,那麼甲方就如標準協議進行。如果乙猜對了,那麼甲方馬上對這些手上留下的糾纏例子在另一個測量基上進行測量。然後宣布對方猜錯了,並把測量結果翻轉後發送給乙方校驗。
比如,如果甲方當初製備時用的是➕測量基,對方也猜了➕,那甲對手裡的糾纏粒子在✖️測量基上進行一次測量,並且把這次測量結果翻轉後發送給接收方,那麼接收方是無法分辨出我是否有欺詐的。
比如對方在第100號箱子上用✖️測量基觀察了硬幣是正面向上,那麼我對100號粒子的糾纏伴侶用✖️測量基進行一次測量,把翻轉後結果告訴對方,那麼對方的校驗結果也是正常的。所以,對方無法發現我進行了欺詐。
這種欺詐方式甚至於乙方先猜方向,再觀察盒子,都無法識破,請大家自行分析下為什麼這樣。
好了,以上就簡單介紹了一下如何用基於製備和測量的方式進行量子密鑰分發和遠程猜硬幣。我們可以看到即使不用量子糾纏,量子都有一些很神奇的性質。而量子糾纏則更進一步,使神奇性質越發神秘。
參考文獻:
https://researcher.watson.ibm.com/researcher/files/us-bennetc/BB84highest.pdf https://zhuanlan.zhihu.com/p/29860637