量子密碼術是密碼術與量子力學結合的產物,它利用了系統所具有的量子性質。首先想到將量子物理用於密碼術的是美國科學家威斯納。威斯納於1970年提出,可利用單量子態製造不可偽造的「電子鈔票」。但這個設想的實現需要長時間保存單量子態,不太現實。貝內特和布拉薩德在研究中發現,單量子態雖然不好保存但可用於傳輸信息。1984年,貝內特和布拉薩德提出了第一個量子密碼術方案,稱為BB84方案,由此迎來了量子密碼術的新時期。
量子密碼術是怎麼實現保密的呢?跟傳統密碼術一樣,也是通過算法和密鑰。實際上,量子密碼術用的算法還是個特別簡單的算法,簡單到三言兩語就能說清楚。
任何一串信息,都可以表示成一串二進位字符,即一串 0 和 1。對這個 01 字符串的每一位數字a,我們都給它一個對應的密鑰 k,這個k 也是一個 0 或 1 的數字。根據 a 和k,就可以算出對應的密文 b,它也是一個 0 或 1的數字。
對應的規則是:如果 k= 0,那麼 b就等於 a;如果k= 1,那麼b 就等於 0 和 1 中不等於 a 的那一個。也就是說,k = 0 就把 0 變成 0,1 變成 1,而 k =1就把 0 變成1,1 變成 0。再簡單一點說, k= 0 就不變, k= 1 就將 0 和1 互換。這個算法叫作「異或」。
你也許會感到奇怪,那麼多複雜的算法都保不了密,這個最簡單的算法憑什麼可以?
訣竅不在於算法,而在於密鑰。請注意,這裡的密鑰不是只有一位數字。如果只有一位數字,那當然完全沒有保密效果。實際情況是,對於原文的每一位,都相應地有一位密鑰。也就是說,如果原文的長度是n 位,那麼密鑰的長度也是n位。如果原文像《紅樓夢》那麼長,那麼密鑰也需要這麼長。
另外,這串密鑰的字符串還必須是個隨機的字符串。也就是說,每一位都是隨機的 0 或者 1,任意兩位數之間,沒有任何聯繫。
此外,這麼長的密鑰,還只能用一次。也就是說,你這次用n 位的密鑰傳輸 n位的原文,下次你傳同樣的內容,還必須從頭再來,重新構造 n位的密鑰,千萬不能把原來的密鑰再用一次。這叫作「一次一密」。
量子密碼術中的密鑰就是滿足這樣 3 個條件的字符串:長度跟明文相等,隨機,一次一密。
為什麼要這樣做呢?因為這樣就絕對不會被數學方法破譯。為什麼不可能被破譯?因為這樣的一段密文,可能對應任何的一段跟它等長的明文,而且概率相等。比如說,既可能對應「明天上午向東進攻」,也可能以同樣的概率對應「後天下午向西撤退」或「飛出地球移民宇宙」……
對這樣沒有任何偏向性的密文,數學分析完全無從下手,因為這裡根本就沒有一個讓你解決的數學問題。
長度跟明文相等、隨機、一次一密,滿足這 3 個條件的密鑰叫作「一次性便箋」。因此,密碼學中一個重要的定理就是:用一次性便箋加密的密文,是絕對不可破譯的。這條定理是資訊理論的創始人克勞德·香農證明的。
值得注意的是,一次性便箋中的 3 個條件缺一不可。無論是密鑰長度小於明文,還是密鑰的各位之間有聯繫,還是同一串密鑰用了兩次,都會導緻密文呈現某種結構,這樣對手就有了著力之處,就可能通過頻率分析之類的手段破解密碼。
一次性便箋方法早在第一次世界大戰的末期就發明了,但很少實際應用。原因是,傳送這樣大量的密鑰非常困難。如果像《紅燈記》《潛伏》等諜戰片一樣,派信使去傳密鑰,那麼一旦信使被抓或叛變,損失將十分巨大。因此,一次性便箋方法只用在不惜任何代價要保證信息安全的地方,例如國家元首之間的通話。
量子密碼術改變了這種狀況,它的辦法是:用量子力學的物理方法,在通信雙方之間產生一次性便箋密鑰。這裡的關鍵是:雙方同時獲得了密鑰!沒有第三者信使在中間傳輸!
這是非常巧妙的思想,是量子力學創造的奇蹟。量子密碼術的技術含量,就是表現在這裡。量子密鑰的產生過程,同時就是分發過程,因此量子密碼術又有個專業名稱,叫作「量子密鑰分發」。
那麼,量子密碼術是怎麼實現無信使的密鑰分發的呢?一個簡略的解釋是:量子密碼術利用了量子力學中的兩個原理,一個是疊加原理,另一個是測量可能導致狀態突變。基於這兩個原理,通過發射和接收一系列處於隨機狀態的單光子,來使通信雙方獲得一串相同的隨機字符串。這串隨機字符串就是一次性便箋密鑰。
通過一系列操作以後,雙方都獲得了一串隨機的 0 和 1,比如說0010111001001010101……最重要的是,雙方的這個字符串完全一樣。這就是最終的效果。
有了密鑰之後,就用「異或」加密算法,用密鑰把明文加密成密文,把密文發送出去。既然密文已經是不可破譯的了,這一步就不需要任何特別的設備,直接在傳統信道上大搖大擺地走就是了,敵方截獲也無妨。
一個常見的誤解,是以為最後的信息傳送要通過某種量子信道。當他們知道傳統信道就行的時候,就感到大惑不解,甚至以為搞量子通信的都是騙子。
另一個常見的誤解,是以為密鑰也要通過傳統信道傳輸。這是絕對不可能的,如果要將密鑰通過不安全的信道發出去,那就完全失去了保密的意義。任何密碼系統都不會愚蠢到這種程度。
總結一下,量子密碼術真實的做法是:用量子信道產生密鑰,用傳統信道傳送密文。你也許想問:既然量子信道可以保證不洩密,那為什麼不直接用量子信道傳輸信息,而只是傳輸密鑰呢?因為這種量子力學的操作只能產生隨機字符串,隨機字符串的信息量是零,所以這種操作本身不能傳輸信息。因此,這種方法的提出者在很長時間內想不出它有什麼用,直到發現這段隨機字符串可以作密鑰,才讓這種方法有了用武之地。