學術向丨量子計算與區塊鏈抗量子演算法
譯者認為,需要密切關注,但無需太過擔心,到了實在緊急的情況,社群可通過硬分叉的方式,替換掉比特幣等區塊鏈所使用的加密演算法,而區塊鏈行業的一些研究者,也在不斷研究相關的抗量子加密演算法,而來自聯盟鏈團隊R3的研究團隊,在分析了相關攻擊向量的同時,提出了一種抗量子簽名方案,從結果來看,這一方案更適合用於R3的Corda以及超級賬本Fabric。

以下為論文譯文:
區塊鏈後量子(PQ)簽名
作者: Konstantinos Chalkias∗ , James Brown† , Mike Hearn‡, Tommy Lillehagen§,Igor Nitto¶, Thomas Schroeterk (R3)
聯絡方式:Email: ∗[email protected], † [email protected], ‡[email protected], § [email protected], ¶[email protected], k [email protected]
摘要 -受區塊鏈架構及現有基於默克爾樹(Merkle tree)簽名方案的靈感激發,我們提出了BPQS,一種可擴充套件後量子(PQ)抵抗數字簽名方案,它最適用於區塊鏈和分散式賬本技術(DLT)。該協議的一個獨特特徵在於,它可利用專用鏈或影象結構,以減少金鑰生成、簽名、驗證的成本,以及簽名的大小。相比最近出現的其他改進方案,當一個金鑰被重用於合理數量的簽名時,BPQS會優於現有的雜湊演算法,如果有需要的話,它還支援一種回滾機制,可允許實際數量不限的簽名。我們提供了該協議的開源具體實施方案,並對其進行了基準(benchmark)測試。
本論文相關術語: 後量子加密,數字簽名,分散式賬本,區塊鏈,默克爾樹(Merkle tree)
一、引言
量子計算領域的最新進展,及其對古典密碼學的威脅,促發了更多人對後量子(PQ)研究的興趣。
更具體地說,由於Shor演算法 [1], 量子計算機可以很容易地在多項式時間內分解大整數因子,從而有效地破解RSA。Shor演算法的啟用,可解決離散對數問題,以及今天的數字簽名(例如DSA,ECDSA以及EdDSA),使得它們變得無效[2]。
建立量子計算機的競賽已經開始了。像谷歌、微軟、IBM、D-Wave以及英特爾這樣的公司,已經處在了領先位置。然而,截至目前,我們還未能建立一個具有數千個穩定量子位的計算機,可使經典公鑰密碼技術變得過時。然而,該領域已經有了顯著進展,一些樂觀的人預測稱,在接下來的10到20年 [3], [4]內,一臺大型量子計算機可能能夠破解非對稱加密。而破解公鑰加密系統,其會帶來的安全影響將是巨大的,幾乎所有的東西都來自HTTPS、VPN以及PKI,而這就涉及到了RSA或橢圓曲線加密演算法(ECC)的安全性。而區塊鏈領域同樣會被衝擊到,並且它可能是受影響最大的領域之一,因為黑客們可以從中獲得經濟激勵,他們可以匿名地訪問區塊鏈賬戶。
為了解決金鑰洩露的問題,後量子密碼學(PQ cryptography)開始興起,它將保護我們免受量子霸權的衝擊。而我們提出的BPQS解決方案,是基於XMSS方案[5]的一個修改版本。它實際上使用了一個單一的認證路徑;因此,它是一條鏈,而不是一顆樹,它只要關注 {一次性和少次}金鑰,即它通常最適用於區塊鏈(因為我們想要保持匿名,並儘量減少跟蹤)。與現有方案相比,當只需要簽名一次或少量次數時,我們的方案表現會更優。與一次性簽名方案(OTS)不同的是,BPQS方案提供了一種回滾機制,可輕鬆支援多次簽名。 據我們所知,這是第一個可利用現有區塊鏈或圖形結構,來減少簽名成本的簽名方案(即使我們計劃簽署多次也是如此)。這使得現有的多次狀態簽名方案對於區塊鏈應用而言會變得過時。而且,事實上, BPQS完全基於雜湊函式,因此其實施不需要特殊的數學理論,這使得它成為了現有或新區塊鏈應用的有力簽名方案候選者。
二、 量子計算
受市場對更高效計算及解決先前不切實際問題能力的需求推動,量子計算從基礎理論研究,到現實研究的程序正在快速移動。10年之前,很少有實用量子計算機的證據。然而到了2018年,谷歌推出了Bristlecone[6],一種新的擁有72量子位的量子計算晶片,它比IBM在2017年公佈的50量子位處理器領先22個量子位。我們也應該提一下D-Wave這家公司,其最近宣佈了一個2000量子位的處理器[7],然而,有報道稱D-Wave的量子加速分析是值得商榷的[8]。總而言之,儘管我們仍然需要更多的研究和實驗,才能使量子晶片保持穩定且具有低的錯誤率,但量子計算的技術在進步,這已經是一個不爭的事實。
A. 對密碼學的影響
量子技術帶來了新的安全挑戰,如上所述,它會弱化經典密碼學的前景。由於Shor演算法,廣泛使用的基於離散對數的公鑰密碼系統,被認為在後量子(PQ)時代是會被破解的。根據一些估計[3],到2031年,RSA和ECC演算法被破解的概率大約為50%。此外,Grover演算法 [9]也可能影響對稱加密和雜湊,但目前我們不知道如何獲得相對傳統計算機更多的二次加速,從而,可通過增加金鑰/輸出大小來保證PQ的安全性。我們也應該重視量子技術的發展,有懷疑論者 [10]認為,量子霸權將永遠達不到數千可用量子位[2]的級別(即能夠打破經典密碼學所需要的程度)。儘管量子計算機何時可達到這種程度,目前仍然是存在不確定性的,但學術界和業界的研究及開發仍然是有意義的。也有人在嘗試結合經典和後量子演算法[11], [12],以更好地為量子啟示錄(假設它會發生的話)做好準備。這裡還應該提到標準化機構,比如 NIST,它已經開始研究標準化的後量子(PQ)演算法[13], [14]。歐洲電信標準研究所(ETSI)則會更加謹慎一些,該機構建議,任何需存檔加密資料至2025年(或更久)的組織,都應該擔心量子計算機的威脅 [15]。而在區塊鏈和分散式賬本領域的人們,更應該關注量子計算,因為公鑰所持有的資產/幣,可能會經歷幾十年的時間。
B. 對區塊鏈和分散式賬本技術(DLT)的影響
傳統的區塊鏈,如比特幣和以太坊,採用了經典的公鑰加密技術來簽署交易,而這些網路被認為是容易受到量子計算攻擊影響的。其他系統,例如zCash和Quorum,嚴重依賴於特殊的橢圓曲線以提供零知識證明功能,而一次橢圓曲線演算法違約(ECC breach),便會威脅到這些賬本的完整性 [16].
這將是重大的安全隱患,它會導致網路被全面破解,而大多數區塊鏈使用了公鑰密碼雜湊生成的地址來減輕這種威脅( 譯者注:例如比特幣使用了雙重SHA256 )。
這個安全性的附加層,意味著公鑰只有在其參與第一筆交易(即花費比特幣)發生後,它才會暴露給賬本。直到這一點,只有雜湊接收方金鑰(地址)被暴露,因此像Shor演算法攻擊並不適用於這個階段。
但是,以下攻擊向量仍然是適用的,即使當雜湊金鑰被利用時:
1、 地址重用 :當一筆交易被簽名時,公鑰就會被揭露,因此,與其相關聯的地址就不再是安全的了。儘管我們可建議每交易一次使用新的地址/金鑰,但舊的比特幣客戶端和某些礦池仍然會重複使用地址; 2、 被遺棄的幣/資產 :如果它們的相關地址不是通過雜湊生成的,這些舊地址的公鑰就會被暴露,例如2012年之前的比特幣; 3、 正在進行當中的交易 :一旦你把一筆交易廣播到網路上,並且它還沒有被區塊鏈所接受,那麼這些交易就很容易受到攻擊。當然,這個攻擊的視窗機會是有限的,但理論上還是可能的,在交易被合法執行之前,攻擊者可恢復私鑰,然後用其簽名另一筆交易,將資產轉移到自己的地址當中; 4、 交易被拒/失敗的情況 :如果簽名的一筆交易沒有通過,例如,由於給出的交易費過低,或者有惡意方阻止交易中繼,或在驗證過程中出現指令碼錯誤,那麼金鑰將會受到攻擊; 5、 多重簽名交易/混合交易 :如果使用CoinJoin協議 [17],這會在交易完成之前向其他各方揭示公鑰;
6、 單個地址的公告 :公告和使用相同的地址,例如籌集資金,將會暴露第一次消費交易的公鑰,因此會將後續資金收益置於風險之中。
通常社群會建議的解決方案,是升級簽名演算法,使其能夠抵抗量子計算。然而,這總是會導致一次區塊鏈的硬分叉,而這會引入各種複雜性。也有一些區塊鏈解決方案已經支援了後量子技術,例如量子抵抗賬本 (QRL) [18]、IOTA [20] 以及Corda[22] ,而應用BPQS簽名方案,可減少簽名大小,同時提供了一種回滾機制,以允許用相同的金鑰簽名多次。
三、使用相同金鑰進行簽名的場景
OTS雜湊方案要求只使用金鑰一次,否則安全性就會受損。然而,在區塊鏈當中,有很多是需要使用相同金鑰進行多重簽名的場景:
1、如上一節內容當中所述,交易可能會失敗或被拒絕,這就需要額外的簽名來進行解決。 2、金鑰所有權的證明,其中甲方需要去簽署一則由(挑戰性)乙方提供的訊息,然後讓乙方驗證這個所有權; 3、償付能力證明,所需最小數量資產的所有權證明,而不會洩露任何進一步的資訊。而解決這一問題的辦法,在於進行獨立審計,並用所有者的私鑰記錄在一筆“傳送給自己”的交易當中; 4、分叉區塊鏈,其中地址(以及相關聯的金鑰)會在分叉鏈上被複制,隨後在每個分叉鏈中使用,來自相同地址的重複交易(使用OTS方案進行簽名)就違反了一個金鑰只能使用一次的條件,因此,OTS簽名方案的強度將會減半。
5、資產的戰略性雙重支出,它可導致交易被拒絕,這種情況也可能是故意鎖使一筆等待的交易被拒絕。這種情況有可能會在意外支出的場景下發生。用相同金鑰簽名一筆複製交易,可導致兩筆交易同時失敗,且它會導致不良的後果,即金鑰被重複使用。
四、基於雜湊的後量子(PQ)數字簽名
A.一次性簽名(OTS)
基於雜湊的簽名方案可追溯到1979年,這得益於Lamport OTS(一次性簽名)方案 [24]。
Lamport方案背後的邏輯是明確的:簽名者生成每個位元所需要被簽名的隨機值對,以及形成私鑰的對。公鑰是 由這些值的雜湊形成的。而要簽署一則訊息,簽名者按位讀取訊息,並顯示一個值,每個祕密對取決於位元值。然後,驗證者可驗證所有祕密值的雜湊,是否與公鑰中的相應雜湊值相等。雖然Lamport OTS雜湊計算被認為是快速的,但其金鑰和簽名大小則相對較大。例如,如果SHA256被用作底層雜湊函式,則公鑰是由512個256位的雜湊輸出組成的(每個位1個雜湊對),而簽名是由256個祕密值組成的(每個256位)。如果我們總計一下金鑰和簽名資料,它們就需要佔用24.5 kB,類似的,如果運用的是SHA512演算法,則大約會佔用98 kB;
對原始演算法的進一步增強[19],[25], [26],可顯著減小金鑰大小。目前,WOTS演算法[19]及其變體被認為是最為有效的金鑰和簽名壓縮方法,而Bleichenbacher和Maurer的圖形方案 [26],嘗試在簽名大小,以及每個訊息位的雜湊函式求值數方面,達到最好的效率,
作為註釋,OTS方法之間的主要區別之一,在於需要的安全假設是否與抗雜湊函式相抵抗,以及是否使用額外的位掩碼。目前,WOTS-T [27]被證明在QROM模型當中是安全的,其被認為是WOTS系列方案[19]最有希望的候選者,因為只有一個額外的種子值需要和公鑰一起,用於計算所需的位掩碼,而其安全性不會受到“生日悖論”的影響,它還引入了所有雜湊的鍵控函式呼叫,以防止多目標進行第二次原像攻擊。後者會導致更短的公鑰和雜湊輸出大小。
B. 少次和多次性簽名
雖然當前有很多方法將一次性簽名方案轉變為多次性簽名方案[5], [28]–[30],一種流行的方法,是使用默克爾認證樹(Merkle authentication tree)。使用默克爾樹,可釋出的簽名總數是在金鑰生成時定義的。而這樣做的主要好處,在於它的短簽名輸出以及快速驗證,而缺點是相對較長的金鑰生成時間,並且它們是有狀態的。圖1描繪了一個4次(最大值)默克爾樹簽名方案。
圖1:最多能簽名4則訊息的默克爾樹簽名方案,如果我們用OTS1方案簽名,暗節點就表示所需的認證路徑。
而轉向無狀態的少次簽名方案,就需要額外的複雜性,以及更大的簽名輸出。HORS [29] (及其擴充套件HORST [23])方案是目前使用最多的多次無狀態簽名方案,例如SPHINCS [23]。
多次雜湊簽名方案可通過結合上述的 {一次性和少次性}方案進行構建,並且它們可被分為兩類:有狀態的(例如XMSS,LMS)[31]和無狀態的(例如SPHINCS,SPHINCS +,Gravity,Simpira,Haraka)[23],[32] - [35]。有狀態的方案通常會產生較短的簽名,但它們需要一種機制來保持狀態(已使用了哪些路徑/金鑰)。另一方面,無狀態的方案是從頂部適度大小的默克爾樹或樹層開始,而不是在底部使用OTS簽名,它們使用了一種少次性簽名方案。後者允許它們隨機選取索引,因此不需要跟蹤路徑狀態。而無狀態方案的不足之處在於它們的簽名大小,例如,在SPHINCS-256 [23]方案當中,每個簽名的大小會有 41 kB。
少次性和多次性雜湊簽名方案之間,並不總是很清楚的。在文獻當中,少次性簽名方案通常指無狀態方案,例如BiBa [28], HORS [29] 以及 HORST [23],但在很多實際應用當中,這些簽名還是不夠的。另一方面,多次性簽名方案可以被配置,以允許高度互動的環境下,重用相同的金鑰對(可以用很多年)。Gravity SPHINCS [33]方案的作者稱1萬億(2^40)次簽名是合理的上限,而SPHINCS-256 [23] 簽名方案則允許最多1千萬億(2^50)次簽名。而在實踐當中,人們可以引數化一個多次簽名方案,以支援幾次或多次簽名。
C.雜湊函式的速度和安全性
對於擬議專案的整體安全性而言,底層雜湊演算法顯然是非常重要的。幾個因素會影響演算法的選擇,包括 速度 、 安全性水平 以及 可用性;例如,可以運用什麼硬體功能來改善執行時的效能。然而,要建立的第一件事,就是演算法需對後量子(PQ)攻擊具有抵抗力。SHA-2和SHA-3演算法支援多種摘要大小,即224, 256,384和512位[36],[37]。我們通過Grover演算法提供的改善搜尋速度,來觀察這一點,碰撞阻力可以從所選摘要的一半大小減少到三分之一。因此,在存在大規模量子計算機的情況下, 384位版本的SHA-2和SHA-3演算法將提供128位防碰撞安全性。而256位的版本,只能提供85位安全性 [4]。
此外,我們觀察到,針對256位版本SHA-2和SHA-3演算法的量子原像攻擊,可分別通過2^153.8和2^146.5次程式碼迴圈完成[38]。
通過這兩個觀察,基於雜湊安全性方面的考慮,SHA256演算法其實已經不太合適了,但它仍然是相對安全的。 還需要提到的是,後量子(PQ)演算法相對於經典van Oorschot和Wiener雜湊碰撞演算法,在價效比上會更糟糕,即使是在樂觀的量子計算機發展速度假設下 [39]。
根據eBACS [40]中提供的效能測量,我們已經評估了SHA-2、SHA-3以及 BLAKE2演算法在通用CPU上的相對效能。我們特意選擇了英特爾、AMD和ARM處理器來覆蓋典型的桌面和移動計算機。
我們從表1可看出,每個位元組的週期數隨輸入的大小而減小,而當輸入超出區塊大小時,下降率自然會變平。
還需要注意的是,不同版本的SHA-3,通常其表現會比它們的SHA-2對手要差。其中的一個原因,在於SHA-1和SHA-2都有現代處理器更多的硬體支援(例如英特爾®SHA擴充套件提供的指令集擴充套件)。請注意, 儘管SHA-2演算法沒有提供針對長擴充套件攻擊的保護,但它提供的位安全性與SHA-3是類似的。通常而言,基於雜湊的後量子簽名方案(包括BPQS),不容易發生此類攻擊,因此,就SHA-2和SHA-3之間的比較,我們會考慮使用SHA-2,因為它有更好的效能優勢。
如果效能很重要,我們也可以考慮採用獲較少支援的BLAKE2b [41] 演算法。但我們要強調的是,這種演算法與上述演算法相比,會缺少廣泛的庫支援。
表1:SHA-2、SHA-3和Blake的效能度量

a:基於ECRYPT II在eBACS中報告的數字[40]; - Intel - amd64, genji122, supercop-20171020 - AMD - amd64, genji262, supercop-20171020 - ARM - armeabi, odroid, supercop-20160806
五、為一次性金鑰定製的區塊鏈化後量子簽名
大多數(如果不是所有的)少次雜湊簽名方案都使用了默克爾樹(Merkle tree)。一個基本默克爾樹(Merkle tree)簽名方案最多可簽名的資訊數量是2^h,其中h是樹的高度。此外,所有子葉(金鑰)應該是在金鑰生成期間計算以形成根。由於上述原因,要構建一棵高度為h = 40的樹,這樣的金鑰生成將被認為是不切實際的,因為我們需要計算2^40 個OTS金鑰,而每個OTS金鑰都需要很多雜湊呼叫(例如Lamport OTS就需要512雜湊呼叫,或者當使用SHA256的WOTS (w = 16)時就需要67雜湊呼叫)。保持金鑰生成時間切實可行的同時,還可以允許大量簽名使用一棵多層次樹。
BPQS是XMSS類協議[5]的一個簡化單鏈變體,字面上講,它是基礎默克爾樹簽名方案(見圖1)的一種擴充套件。 BPQS理論上可簽名很多次,但其設計著眼於短和快速的一次性簽名,如果有需要的話,有額外的選項可重新簽名。以上的要求是典型的區塊鏈或分散式賬本技術(DLT)所需要的,因為使用一次性金鑰可保持匿名性。但是,很多事情可能會出錯,例如,一筆交易可能無法通過,或者區塊鏈中可能會出現分叉,在這種情況下,應該能夠在不損害安全性或凍結資產的情況下籤署多次(見IOTA的問題[21], [42])
此外,BPQS的另一個好處在於,它對於相反要求(用同一個金鑰簽名多次)而言也是一個理想的候選方案,這個有趣的屬性是因為,區塊鏈和分散式賬本系統的底層圖形結構,較其他基於雜湊的後量子(PQ)解決方案而言,它以最小的代價有效地允許多次簽名。這是通過引用過去已被使用的相同BPQS金鑰的區塊(或交易)來實現的。簡而言之,只有一小部分的新簽名是需要被提交的。實際上,因為先前的交易已經在賬本上得到了驗證,因此驗證者們不需要驗證路徑的其餘部分,因為它在過去已經被驗證過了。這個特性使得BPQS對基於公證的分散式賬本特別有用,例如Corda [22]以及Fabric [43],因為公證節點通常會用相同已知的金鑰來簽名交易。
A. BPQS方案
BPQS需要一個基層的OTS方案。理論上,任何OTS方案都是可應用的,但我們的方案與 XMSS系列協議的邏輯是相同的,因此我們會選擇WOTS [19]變體,使用L樹以及位掩碼的生成定義了安全假設以及證明,類似於XMSS [5],其多級版本XMSS-MT[44]以及XMSS-T [27]。此外,根據[39],使用量子演算法的碰撞阻力實際上會更便宜,因此它類似於Gravity SPHINCS [33]方案,而位掩碼和L樹可能會被省略。
你也可以說BPQS是XMSS系列方案的一個子集,它主要面向的是快速一次性簽名。其中存在的主要區別在於,XMSS通過使用雜湊樹克服了每個金鑰對訊息的限制,其會減少很多OTS驗證金鑰對一次公共XMSS根金鑰的真實性;相反,BPQS使用了一個包含小型2子葉默克爾樹的鏈。從幾何定義上,XMSS在寬度和高度上都會增長(見圖1),而BPQS僅在鏈高度上成長(見圖2)。總而言之,我們強調,BPQS是一個通用的區塊鏈結構,其中的區塊是“微小”的默克爾樹,這意味著,根據應用的要求,它是可被引數化的。如果遮掩碼得到應用,它們的確定性生成應該遵循與相應XMSS系列方案相同的邏輯。
BPQS簽名方案有兩個基本構建部分:
- BPQS-FEW :其嚴格支援少次性簽名,如圖2所示(左側);
- BPQS-EXT :理論上可擴充套件到支援多次性簽名,見圖2(右側);
在BPQS-FEW當中,所有的金鑰都是在金鑰生成過程中預先計算的,每個額外簽名的懲罰,僅僅是1個額外的雜湊輸出,但它不能擴充套件到實際支援“無限的”簽名。
另一方面,BPQS-EXT最初只需要兩個OTS金鑰,這與BPQS-FEW形成了對比,在一個OTS回滾金鑰的每個2子葉默克爾樹的左側葉,當有需要時,它可被用於簽署下一個區塊。不幸的是,可擴充套件屬性是需要付出代價的,每個新簽名都需要一個額外的WOTS金鑰。
圖片2 :BPQS-FEW(左側),一個少次性簽名方案。BPQS-EXT(右側),一個線性可擴充套件多次性簽名方案;
完整的BPQS方案通過一種方式(其中BPQS-FEW鏈中的最後一個子葉在一個BPQS-EXT回滾金鑰中),從而結合了BPQS-FEW以及BPQS-EXT。這種技巧,允許我們把少次簽名方案變體轉換為多次簽名方案。實際上,BPQS-EXT可以被認為是BPQS的一個特例,其中它沒有初始的BPQS-FEW鏈。
圖3: 完整的BPQS協議,其具有高度為3的BPQS-FEW頂層和一個BPQS-EXT回滾金鑰,以允許擴充套件性。
BPQS的引數包括:
1、使用的WOTS變體(例如,WOTS-T [27]); 2、Winternitz引數(例如w = 16),其定義解釋初始雜湊的基礎。類似於XMSS [5],w 定義了每個WOTS鏈的實際大小,這反過來會影響簽名大小。請注意,文獻中對Winternitz引數的說明沒有達成一致。例如,在 LMS [45]當中,它被定義為2^w,因此 wBPQS = 16 = 2^4 這就相當於wLMS = 4, 3、底層雜湊函式(例如SHA384); 4、預先計算的OTS金鑰的數量,即初始值高度(例如,h = 4);
B. 混合型BPQS
BPQS的可擴充套件性屬性,可實現各種自定義結構。 BPQS可被用作一個構建塊,將任何雜湊簽名方案轉換成一種 {一次性或少次}優化方案。例如,在圖4當中,BPQS-FEW被用作第一個(較短的)簽名,然後它回滾到另一個後量子(PQ)方案。雖然在描述的方法當中,回滾(其它)後量子(PQ)方案的金鑰對應該是先驗已知的和預先計算的,你也可使用類似的方式來應用BPQS-EXT,所以,這不一定是一個要求,而“其他”後量子(PQ)金鑰僅在(幾次性)簽名耗盡時才會被生成。
而且,如果“其他”後量子(PQ)方案是無狀態的,比如說SPHINCS,那麼最終的協議差不多就是一個“啟動時有狀態,然後轉到無狀態”的方案。
應該強調的是,“其他”後量子(PQ)方案可能會是另一個BPQS方案,所以最終可以建立一個不同BPQS方案的鏈。後者會導致較短的簽名,以及每次僅使用BPQS-EXT來擴充套件它。
關於“其他PQ關鍵引數”,則如圖4所示,重要的是,需要一些方案發布位掩碼(或者在XMSS-T [27]中的種子)作為初始公告公鑰的一部分。否則,它將允許敵對方在一次偽造活動中選擇種子/位掩碼。然而,如果BPQS使用具有更大輸出的雜湊函式(例如SHA384 或者SHA512),這可能就不是必需的,因為其所提供的抗量子碰撞攻擊安全性,仍然足以防止此類攻擊。
圖4: 一種通用的BPQS協議(BPQS-VERS1),其帶有高度為3的頂層BPQS-FEW,其最後的一個根是另一個後量子(PQ)方案(例如XMSSMT [44] 或SPHINCS+ [32])的公鑰。
C. 組合後量子(PQ)方案
如前所述,如果有需要的話,BPQS可以回滾到另一個後量子(PQ)方案,通過應用一個類似的邏輯,圖5展示了將多個後量子(PQ)方案組合成一個方案的多種定製模型。方法是非常簡單的,但它允許非常有用的結構,例如在圖5 A和B當中的“有狀態和無狀態”方案,或者在圖5 C中的“帶有無狀態回滾的有狀態”方案。後者為叢集環境(其中多個節點需要在簽名狀態上達成共識)提供了一個解決方案,而回滾機制,是當共識由於某些原因失敗,而確保系統能夠繼續運作(保持功能)的一個先決條件。
圖5: 使用並行BPQS邏輯將多種方案組合成一個實用後量子(PQ)方案的各種推薦設計。注意,如果底層方案需要額外的引數(如位掩碼),這些應該和根公鑰一起釋出,類似圖4所示 這三種描述到的方案,關於以下兩個因素時,提供了不同程度的靈活性:
- 在金鑰生成時間和簽名大小之間選擇一個平衡;
- 在稍後的時間裡,決定是否允許選擇底層演算法;
例如,選項B需要生成兩個PQ金鑰,以形成待公告的組合公鑰,同時選項A實際上是一個BPQS-EXT,它會被用於簽署“即將到來”的PQ方案。沿著同樣的路線,選項C是組合了A和B,但是左PQ方案不需要通過A-priori(先驗)演算法選擇和計算。
注意,我們甚至還可以把兩個不同的有狀態的或無狀態的方案結合起來,例如,如果出於相容性需要,在兩個不同的區塊鏈中使用相同的金鑰時,一個支援原有的SPHINCS-256 [23] 方案,而另一個則支援它的變體(或者其標準化版本)。
六、 實驗結果
本節內容,將基於廣泛的實驗,展示BPQS方案的效能分析,並和一系列最先進的簽名方案進行對比。選擇這種對比方式,是因為它非常流行於今天的PKI和區塊鏈社群。我們的實驗結果,基於了一個可用BPQS簽名方案的原型實現 [46],其中包括瞭如何重現基準測試的細節。
我們所選用的系統規格,包括八核的英特爾酷睿i7-7700HQ處理器(2.80GHz),15.5GB的記憶體,而系統執行的環境為 Linux 4.13.0-38以及JRE 1.8.0_161。關於實施方案,標準JCE已經用於雜湊函式呼叫,而用於其他方案的實現,則分別基於BouncyCastle (ECDSA,RSA, SPHINCS-256) [47]以及 i2p (EdDSA) [48]庫。
效能比較
表2 比較了各種簽名方案的效能,包括使用SHA256和SHA384作為底層雜湊函式的BPQS簽名方案(w = 4和w = 16這兩種情況)。報告結果的平均執行時間,以毫秒為單位。我們選擇一個訊息列表,而不是選擇單個或少量資訊的主要原因,是為了避免簽名及驗證操作當中可能出現的任何偏見現象。
表2:金鑰對生成時間(單位:ms),簽名和驗證第一條訊息的時間(單位:ms)。

需要強調的是,目前我們實施的BPQS方案是沒有對並行處理進行優化的,它也不會快取WOTS雜湊迭代的中間結果。而快取金鑰祕密可大幅加快簽名的處理速度,這已是公認的[33] 。在實踐過程當中,因為BPQS簽名方案最好是用於僅簽名一次或幾次的應用,因此OTS金鑰的路徑和數量相對較小,並且很容易放入記憶體當中。如果所有完整的WOTS結構,在金鑰生成期間存入了記憶體當中,則簽名無非就是一些記憶體查詢,它不會涉及執行任何雜湊操作,這就排除了前面所需的訊息雜湊。
即使沒有實現並行化或快取,BPQS簽名方案和經典及後量子(PQ)數字簽名演算法的表現都是比較靠近的。需要強調的是,最簡單的BPQS形式(BPQS-EXT),已被用於上述比較,其中會生成兩個WOTS系列金鑰,其中一個是簽署第一則訊息,另一個金鑰則負責簽署回滾操作。我們希望,一個區塊鏈金鑰的平均使用次數為1,而額外的簽名只有在罕見和特殊的情況下才會進行,因此我們的比較也集中於第一次簽名操作。在實踐當中,我們期望區塊鏈錢包都能夠實現快取和並行化,以進一步提升效能。
關於簽名大小,所有BPQS模式,在前(log2(h) − 1) 次簽名的表現都要優於XMSS簽名方案,BPQS簽名大小隨金鑰被重用次數而線性增長,因此簽名輸出的長度是動態的。它開始會很小,但會隨著簽名數的增長而增長。引數應該在初始金鑰生成成本和簽名大小之間進行權衡。在最好的情況下,簽名的大小會隨每個額外簽名的一次雜湊輸出大小的增長而增長,而最壞的情況,則是隨一次WOTS [19]的大小而變化。
圖6: 不同模式BPQS和XMSS [5]簽名方案支援32個OTS金鑰的簽名大小對比。所有方案的簽名輸出為 |W OT S| + x |H|,其中x是完全簽名路徑所需的額外雜湊數。在這個圖表當中,X軸代表簽名的數量,而y軸代表x; 在大多數BPQS模式中,第一次簽名輸出的大小為 |W OT S| + |H|,而對XMSS而言,它的簽名輸出大小為| W OT S | + h×| H |,其中h是所用默克爾樹的高度。當最為常用之一的WOTS(w = 16)被用作底層OTS方案時,則每個WOTS的大小為 |W OT S|,這就等於67 × |H|,其中 |H|是底層雜湊函式的摘要大小(例如對於SHA256而言,就等於256位)。圖6描繪了對於以下方案,每個額外簽名的簽名大小:
- BPQS-FEW (圖2左側),其中 h = 32;
- XMSS [5],h = 5,其中h代表樹高;
- BPQS-VERS1 (圖4),回滾到XMSS,高度h均為5;
- BPQS-GEN-B (圖 5 B),右側是BPQS-FEW,左側是XMSS,倆者高度都為5;
七、結論及未來的工作
在這篇論文當中,我們介紹了BPQS簽名方案及其擴充套件方案,以支援 {一次性和少次性}優化後量子(PQ)簽名方案。我們還提出了區塊鏈和分散式賬本技術即將面臨的安全挑戰,然後解釋了為什麼我們不建議將純OTS方案作為抗量子計算的替代品。如上所述, BPQS較傳統的非量子簽名方案(例如RSA、ECDSA以及EdDSA)會更具一些優勢,它可以提供更可靠的量子安全性,這是因為它的加密雜湊函式會更安全。
其中,BPQS協議的主要特徵包括:
1、更短的簽名、更快的金鑰生成,當簽名只進行一次或少數次數時,其簽名和驗證時間會比XMSS [5]和SPHINCS[23] 系列後量子(PQ)協議也會更短,而在區塊鏈系統當中,這樣做也可以實現更好的匿名性; 2、它在計算上與非量子方案相當。人們可以利用易於應用的多雜湊鏈WOTS並行化和快取,以提供幾乎即時的簽名和更快的驗證; 3、其可擴充套件性屬性,允許多次簽名,它也可以很容易地進行定製,如果需要的話,它也可以回滾到另一種多次簽名方案; 4、將其應用於區塊鏈和分散式賬本應用時,它可以通過引用先前的交易(其中相同的金鑰會被重用),從而利用底層鏈或圖結構的優勢。這可能意味著,每個新的BPQS簽名,只需要一次OTS方案的努力,因為其餘到根的簽名路徑已經在賬本當中了,因此可省略它們; 5、它可被用作一個構建塊,用於實施新穎的PQ方案,例如同時的“有狀態和無狀態”方案,其可能會使叢集環境受益,當共識消失時,其中的節點可回滾到無狀態方案;另外,這樣的方案可以用於向前和向後相容的目的,或者當要求在兩個獨立和不相容的區塊鏈中重用一個金鑰時;
這種原始BPQS協議的主要缺點在於,其簽名輸出大小是會隨簽名數量線性增長的。但是,我們可使用一種組合PQ方案或利用區塊鏈應用當中現有的圖形結構來減輕這種影響。總而言之,BPQS存在的可定製、快取以及可擴充套件性屬性,使其成為區塊鏈理想的候選簽名方案,它可以作為無狀態、有狀態以及其他PQ方案之間的一個橋樑協議。
論文引用
[1] P. W. Shor, “Algorithms for quantum computation: discrete logarithms and factoring”, 35th FOCS, pp. 124-134, 1994.
[2] J. Proos, and C. Zalka, “Shor’s discrete logarithm quantum algorithm for elliptic curves”, Quantum Information & Computation, v.3 i.4, 2003.
[3] M. Mosca, “Cybersecurity in an era with quantum computers: will we be ready?”, QCrypt, 2015.
[4] “The Quantum Countdown. Quantum Computing And The Future Of Smart Ledger Encryption”, Long Finance, http://longfinance.net/DF/ Quantum_Countdown.pdf, February 2018.
[5] J. Buchmann, E. Dahmen, and A. Hülsing, “XMSS – A Practical Forward Secure Signature Scheme Based on Minimal Security Assumptions”, PQCrypto 2011: Post-Quantum Cryptography, pp. 117-129, 2011.
[6] J. Kelly, “A Preview of Bristlecone, Google’s New Quantum Processor,” Google Research Blog, https://research.googleblog.com/2018/03/apreview-of-bristlecone-googles-new.html, March 2018.
[7] D-Wave, “Temporal Defense Systems Purchases the First DWave 2000Q Quantum Computer”, D-Wave Press Release, https://www.dwavesys.com/press-releases/temporal-defense-systemspurchases-first-d-wave-2000q-quantum-computer, January 2017.
[8] T. F. Rønnow, Z. Wang, J. Job, S. Boixo, S. V. Isakov, D. Wecker, J. M. Martinis, D. A. Lidar, and M. Troyer, “Defining and Detecting Quantum Speedup”, Science vol. 345, issue 6195, pp. 420-424, July 2014.
[9] L. K. Grover, “A fast quantum mechanical algorithm for database search”, STOC, 1996.
[10] R. Anderson, and R. Brady, “Why quantum computing is hard-and quantum cryptography is not provably secure”, arXiv:1301.7351, 2013.
[11] “CECPQ1 post-quantum cipher suite,” Wikipedia article, https://en. wikipedia.org/wiki/CECPQ1, 2016.
[12] “The Post-Quantum PKI Test server”, http://test-pqpki.com/, 2018.
[13] L. Chen, S. Jordan, Y-K. Liu, D. Moody, R. Peralta, R. Perlner, and D. Smith-Tone, “NISTIR 8105 Report on Post-Quantum Cryptography”, NIST, 2016.
[14] NIST, “Post-Quantum Cryptography Standardization”, https: //csrc.nist.gov/Projects/Post-Quantum-Cryptography/Post-QuantumCryptography-Standardization, 2017.
[15] “Quantum Safe Cryptography and Security – An introduction, benefits, enablers and challenges”, ETSI, http://www.etsi.org/images/files/ ETSIWhitePapers/QuantumSafeWhitepaper.pdf, 2015.
[16] E. Ben-Sasson, I. Bentov, Y. Horesh, and M. Riabzev, “Scalable, transparent, and post-quantum secure computational integrity”, IACR Cryptology ePrint Archive: Report 2018/046, 2018.
[17] T. Ruffing, P. Moreno-Sanchez, and A. Kate, “CoinShuffle: Practical Decentralized Coin Mixing for Bitcoin”, ESORICS, 2014.
[18] P. Waterland, “The QRL Whitepaper”, https://theqrl.org/whitepaper/ QRL_whitepaper.pdf, 2011.
[19] A. Hülsing, “W-OTS+ – Shorter Signatures for Hash-Based Signature Schemes”, IACR Cryptology ePrint Archive: Report 2017/965, 2017.
[20] S. Popov, “The Tangle”, https://iota.org/IOTA_Whitepaper.pdf, 2017.
[21] “How bad is reusing an address?”, IOTA forum, https://forum.iota.org/ t/how-bad-is-reusing-an-address/1277, 2017.
[22] R. G. Brown, J. Carlyle, I. Grigg, and M. Hearn, “Corda: An Introduction”, https://docs.corda.net/_static/corda-introductory-whitepaper.pdf, 2016.
[23] D. J. Bernstein, D. Hopwood, A. Hülsing, T. Lange, R. Niederhagen, L. Papachristodoulou, M. Schneider, P. Schwabe, and Z. Wilcox-O’Hearn, “SPHINCS: practical stateless hash-based signatures”, EUROCRYPT 2015, pp. 368-397, 2015.
[24] L. Lamport, “Constructing digital signatures from a one-way function”, Technical Report CSL98, SRI International, 1979.
[25] R. C. Merkle, “A Digital Signature Based on a Conventional Encryption Function”, CRYPTO 1987 pp. 369-378, 1987.
[26] D. Bleichenbacher, and U. Maurer, “On the efficiency of One-Time Digital Signatures”, ASIACRYPT, 1996.
[27] A. Hülsing, J. Rijneveld, and F. Song, “Mitigating Multi-Target Attacks in Hash-based Signatures”, PKC 2016 pp. 387-416, 2016.
[28] A. Perrig, “The BiBa one-time signature and broadcast authentication protocol”, 8th ACM Conference on Computer and Communication Security, pp. 28-37, 2001.
[29] L. Reyzin, and N. Reyzin, “Better than BiBa: Short One-time Signatures with Fast Signing and Verifying”, ACISP 2002, pp. 144-153, 2002 .
[30] J.Buchmann, E. Dahmen, E. Klintsevich, K. Okeya, and C. Vuillaume. “Merkle Signatures with Virtually Unlimited Signature Capacity”, ACNS, 2007.
[31] P. Kampanakis, and S. Fluhrer, “LMS vs XMSS: Comparion of two Hash-Based Signature Standards”, IACR Cryptology ePrint Archive: Report 2017/349, 2017.
[32] D. J. Bernstein, C. Dobraunig, M. Eichlseder, S. Fluhrer, S-L. Gazdag, A. Hülsing, P. Kampanakis, S. Kölbl,
[33] J-P. Aumasson, and G. Endignoux, “Improving Stateless Hash-Based Signatures”, IACR Cryptology ePrint Archive: Report 2017/933, 2017.
[34] S. Gueron, and N. Mouha “SPHINCS-Simpira: Fast Stateless Hashbased Signatures with Post-quantum Security”, IACR Cryptology ePrint Archive: Report 2017/645, 2017.
[35] S. Kölbl, M. Lauridsen, F. Mendel, and C. Rechberger, “Haraka v2 – Efficient Short-Input Hashing for Post-Quantum Applications”, IACR Cryptology ePrint Archive: Report 2016/098, 2016.
[36] Federal Information Processing Standards Publication 180-4, “Secure Hash Standard (SHS)”, Information Technology Laboratory, National Institute of Standards and Technology, March 2012.
[37] G. Bertoni, J. Daemen, M. Peeters, and G. Van Assche, “The KECCAK SHA-3 submission, Version 3”, 2011.
[38] M. Amy, O. Di Matteo, V. Gheorghiu, M. Mosca, A. Parent, J. Schanck, “Estimating the Cost of Generic Quantum Pre-image Attacks on SHA-2 and SHA-3”, IACR Cryptology ePrint Archive: Report 2016/992, 2016.
[39] D. J. Bernstein, “Cost analysis of hash collisions: Will quantum computers make SHARCS obsolete?”, SHARCS 2009, 2009.
[40] “Measurements of hash functions, indexed by machine“, eBACS: ENCRYPT Benchmarking of Cryptographic Systems, http://bench.cr.yp.to/ results-hash.html, accessed: 21 February 2018.
[41] M-J. Saarinen, and J-P. Aumasson, “The BLAKE2 Cryptographic Hash and Message Authentication Code (MAC): IETF RFC 7693.”, Internet Engineering Task Force. DOI: 10.17487/RFC7693, 2015.
[42] “IOTA ERROR: PRIVATE KEY REUSE DETECTED“, IOTA github, https://github.com/iotaledger/wallet/issues/928, 2018.
[43] C. Cachin, “Architecture of the Hyperledger Blockchain Fabric”, https: //www.zurich.ibm.com/dccl/papers/cachin_dccl.pdf, 2016.
[44] A. Hülsing, S-L. Gazdag, D. Butin, and J. Buchmann, “Hash-based Signatures: An Outline for a New Standard”, NIST Workshop on Cybersecurity in a Post-Quantum World, 2015.
[45] D. McGrew, and M. Curcio. “Hash-Based Signatures”, https:// datatracker.ietf.org/doc/draft-mcgrew-hash-sigs, accessed: April 2018.
[46] “BPQS library”, https://github.com/corda/bpqs, accessed: April 2018.
[47] “Bouncy Castle Crypto APIs”, v2.1.1, release: 1.59, 2017.
[48] “EdDSA-Java”, v0.2.0, https://github.com/str4d/ed25519-java, 2018.