基于哈希的數字簽名方案是后量子數字簽名的一個類別。與目前用于驗證區塊鏈交易的數字簽名方案不同,哈希函數為量子計算機提供的可利用結構要少得多,而且廣泛認為它是量子安全的。
目前區塊鏈基礎設施上廣泛使用的數字簽名,如BLS和ECDSA,都是基于離散對數問題。
對于那些不熟悉數字簽名的人來說,一個簽名方案由四部分組成:系統生成,密鑰生成,簽名生成,以及簽名驗證。
例如,在ECDSA中,公鑰Pk是通過橢圓曲線群上的生成點G來生成的,私鑰Sk滿足Pk=Sk*G。給定Pk,利用經典算法很難找到Sk。
BLS簽名方案是在配對群
上構建的。公鑰/密鑰對滿足
量子算法善于尋找某些函數的周期性,它能發現經典難題的特殊結構,如因式分解和離散對數。當擁有數千個邏輯量子位的量子計算機出現時,BLS、ECDSA和其他依靠因式分解和離散對數問題的簽名方案將不再安全。
例如,求一個數N=p*q的素因子可以簡化為
求一個函數的周期。其中c是N的互素數。一旦找到周期,那么可以通過計算、
和找到兩個互素因子。使用著名的輾轉相除法可以很快找到最大公除數,它可以在經典的計算機上運行。反之,在經典計算機上很難找到D(x)的周期,但QPU可以在多項式時間內完成。
盡管當今的量子計算機只有幾百個噪聲的物理量子位,但量子計算機的建造者確實擁有大量的路線圖來實現大規模的量子計算機。像IBM和RigettiComputing這樣的超導量子計算機制造商正在向1000個物理量子位的量子計算機邁進,并使用可疊加的模塊以獲得更多數量的邏輯量子位。除此之外,在可預見的未來,還有其他幾種方法可以帶來有意義的量子計算系統,包括離子阱、中性原子和基于測量的量子計算。
動態 | 最近一周ETH?Dapp交易額環比上升32.03%:據RatingDapp和RatingToken大數據監測顯示,最近一周EOS/ETH/TRON三大主流公鏈平臺Dapp活躍用戶分別:EOS(159300)>TRON(83763)>ETH(66861);新增用戶分別為:ETH(32887)>TRON(18890)>EOS(13855)。從交易額來看,最近一周EOS?dapp交易額為17052,245EOS,環比上周下降16.96%;ETH dapp交易額為375,902ETH,環比上周上升32.03%;TRON?dapp交易額為6,055,961,104TRX,環比上周上升20.05%。[2019/8/19]
但是,到目前為止,還沒有發現有效的量子算法來破解哈希函數,而量子計算機只是將生日攻擊速度提高到
而在經典計算機上的生日攻擊速度為
現在讓我們來看看如何使用哈希函數來構建數字簽名,以及如何處理基于哈希的量子安全簽名。
一次性簽名方案
首個基于哈希的簽名是于1979年首次推出的Lamport簽名。一個Lamport簽名密鑰只能安全地簽署一條信息,因此這是一個一次性簽名方案。該簽名方案的工作原理如下:
對于每條信息,簽名者需要準備兩組密鑰對。
PKs是通過哈希SKs計算的。假設我們使用256位的加密哈希函數來產生消息摘要,每組密鑰對由256個密鑰和公鑰組成。總的來說,我們需要準備512個密鑰和512個公鑰來簽署任何一條消息。
動態 | EOS?Dapp日交易額大幅下降,三大公鏈Dapp日交易額趨于相近:據RatingDapp和RatingToken大數據監測顯示,近一個月,EOS?Dapp日交易額震蕩中大幅下降,ETH震蕩中小幅上漲。昨日,EOS/ETH/TRON三大主流公鏈平臺Dapps交易額分別為: EOS($13012099.77)>TRON($11734302.07)>ETH($9954762.58),Dapp日交易額非常相近。此前EOS Dapp日交易額較ETH、TRON多處于高位水平,為后兩者近兩倍,5月31日更是達到近三倍(EOS-$31669086.51,TRON-$12210858.33,ETH-$11509226.51)。[2019/6/6]
要對一個消息簽名,首先將消息散列成一個256位的隨機數;然后,根據散列數的位值,相應地選擇SK。
請注意,我們將始終對消息h(m)的摘要進行簽名,而不是對任意長度的消息進行簽名。為了簡化標記,我們在本文的剩余部分將使用m代替h(m)。當你看到m,即表示著h(m)。
圖片注釋:簽名是
和消息本身。
為了驗證簽名,首先計算H(m),然后根據簽名計算
,驗證PK是否確實是來自SKs散列的結果,并且驗證索引是否正確。
在對任何消息進行簽名之后,該過程都會公開一半的密鑰。因此密鑰對只能使用一次,否則攻擊者將能夠使用公開的密鑰來驗證消息。
使用MerkleTrees管理OTS密鑰
從21世紀加密用戶的視角來看,Lamport簽名方案乍一看可能很奇怪、很混亂。寫下一次私鑰或助記詞可能就已經給人帶來壓力和煩惱,如果私鑰只能簽署一份信息,而每份消息都要共享不同的公鑰,這不讓人抓狂嗎?
動態 | 5月EOS?Dapp?周活躍用戶呈下降趨勢,ETH呈逐周上升趨勢:據RatingDapp和RatingToken大數據監測顯示,EOS/ETH/TRON三大主流公鏈平臺Dapps活躍用戶在5月份的四個周次呈現出如下規律:(1)EOS?Dapp?周活躍用戶呈小幅下降趨勢,由月初197575活躍用戶(5月1日-5月7日)將至月末164425(5月22日-5月28日);(2)ETH Dapp周活躍用戶逐周小幅上升;(3)TRON Dapp周活躍用戶震蕩波動較大,最高為158895(5月15日-5月21日),最低101159(5月22日-5月28日)。[2019/6/4]
事實證明,如果我們能夠適當地引入管理密鑰的機制和工具,OTS簽名方案也不是那么糟糕。
因為LamportOTS和WinternitzOTS一次只能簽署一條消息,如果需要簽署多條消息,就必須有多個密鑰。MerkleTree的簽名方案是由RalphMerkle發明的,用于管理LamportOTS密鑰。
其基本原理是使用MerkleTree的葉子來存儲LamportOTS密鑰。因為MerkleTree是二叉樹,高度為h的MerkleTree有
的葉子。如果使用葉子來管理LamportOTS密鑰的摘要,那么MerkleTree可以管理
的LamportOTS密鑰對。
當簽署消息時,需要從樹上摘取一個之前從未使用過的Lamport密鑰對。簽名由葉子的索引、Lamport公鑰、Lamport公鑰摘要和該葉子的認證路徑組成。
密鑰對,從而將空間從
分析 | 近一個月EOS/ETH/TRON?Dapp總交易筆數均呈下降趨勢:據RatingDapp和RatingToken大數據監測顯示,最近一個月, EOS 月交易筆數大于零Dapp343款,總計交易筆數111331934,環比上月下降1.35%;ETH 月交易筆數大于零Dapp489個,總計交易筆數2092381,環比上月下降1.77%;TRON 月交易筆數大于零Dapp295個,總計交易筆數34913991,環比上月下降13.76%。[2019/5/15]
減少到O(1)。這意味著,安全地交換一個Merkle根就允許多個簽名驗證。
使用MerkleTree的結果是,每次簽名都必須包括認證路徑,這是一個更大空間,而且驗證者要對O(h)計算更多的哈希值來驗證每個簽名。
WinternitzOTS
LamportOTS的另一個問題是,Lamport公鑰和Lamport簽名太長。RobertWinternitz提供了一個改進的簽名方案,大大減少了簽名的大小。
WinternitzOTS不是為每一條消息準備私鑰和公鑰對,而是將哈希的消息分成幾塊。如果一個信息被分成N個塊,并且每個塊有1個比特,那么我們就得到了lenth(m)=N*L。我們將在本文中使用相同的$l,N&符號,以便于閱讀。
假設我們仍然在信息上使用256位哈希函數,并獲得信息的256位摘要。在這種情況下,N*L=256
使用上面的例子,m被分割成64個塊,每個塊有4位。所以,WOTS只需要準備64個私有密鑰sk0,…,sk64。公鑰是通過對每個私鑰上應用
動態 | 近一個月ETH?Dapp單筆平均交易額環比上漲達34.79%:據RatingDapp和RatingToken大數據監測顯示,最近一個月?EOS/ETH/TRON三大主流公鏈平臺Dapps?交易額分別為EOS($728945752.64)>TRON($387566154.16)>ETH($253931932.08)。從各公鏈Dapp單筆平均交易額來看,EOS 6.52美元,環比上月上漲0.57%;ETH121.84美元,環比上月上漲34.79%;TRON 11.03美元,環比上月下降29.37%。[2019/5/14]
次哈希函數來計算的。
一個WOTS簽名的生成方法如下。
1、計算消息摘要中每個塊的十進制值。例如,第一塊的十進制值是5。
2、通過將相應的私鑰哈希運算計算第
i個區塊的簽名。在上面的示例中,sk0將被哈希運算次
3、對N個塊應用和并生成簽名
圖片注釋:每個公鑰是通過對相應的私鑰哈希運算
次來獲得的。
為了驗證簽名,驗證者將首先對信息進行哈希運算,得到一個256位的摘要m。然后驗證者將m分成幾塊,得到每組的十進制值。
然后驗證者將簽名的每個值哈希運算
次,得到
。如果
與公鑰集pk相同,則簽名有效,否則簽名被拒絕。
WOTS的折衷方案是在簽名生成和驗證中增加了更多的計算量。因此,WOTS的簽名將明顯比Lamport的簽名小得多。
值得注意的是,WOTS仍然是一個一次性的簽名方案,因為一旦使用了密鑰對,只要塊的十進制值小于原始值,攻擊者就可以為每個塊生成有效消息。因此,多次使用WOTS根本不安全。
WOTS+
WOTS+為WOTS增加了隨機性。它首先向公鑰集
元素匹配pk,則該簽名有效,否則拒絕簽名。
盡管WOTS和WOTS的一些變體使用簡單的哈希鏈,但它們的迭代方法也很常見和簡單。然而,WOTS+有一些特殊的迭代模式,可以實現嚴密的安全性證明,而不需要使用的哈希函數族具有抗沖突性。
擴展的MerkleTree簽名方案
因為WOTS+仍然是一個一次性簽名方案,如果有多條消息需要簽名,那么密鑰管理就非常重要。
擴展的MerkleTree簽名方案使用MerkleTree來管理WOTS+密鑰,其方式類似于MSS使用MerkleTree來管理Lamport密鑰。
我們已經知道MSS是如何使用Lamport密鑰對的,所以讓我們先看看頂層的MerkleTree。
圖片注釋:用顏色標記驗證最終XMSS公鑰的認證路徑
在XMSS中,公鑰是XMSSMerkle根。MerkleTree的每個葉子都是WOTS+公鑰集的Merkle根。為了說明這一點,從上面“擴展”
我們將有一棵“子”MerkleTree連接到上面的葉
上。這棵樹在文獻中也稱為“L-tree”。
圖片注釋:一個由L-tree管理的WOTS+密鑰集。實際樹高取決于WOTS+密鑰集的大小。
位掩碼用于L-tree。在每次將哈希函數應用于兩個節點之前,兩個底部值將使用相應的位掩碼進行異或運算。L-tree的每一層都有兩個位掩碼值
它們將該層的左、右節點進行異或運算。因此,一棵高度為h的L-tree總共需要2h的位掩碼。
圖片注釋:L-trees是如何計算的——在進入哈希函數之前,將一個值與一個位掩碼進行異或運算。
現在沿著L-tree向下移動——L-tree的葉子是WOTS+公鑰。每片葉子代表一個WOTS+公鑰,該公鑰是使用WOTS+中描述的私鑰的哈希值鏈創建。
圖片注釋:L-trees是如何計算的——在進入哈希函數之前,將一個值與一個位掩碼進行異或。
要對消息m簽名,首先從XMSS樹中選擇一個由i索引的葉子,并確保該葉子以前從未被使用過。然后我們知道該葉子是WOTS+公鑰集的一個Merkle根。WOTS+私鑰可以用來對消息進行簽名,并得到消息m的WOTS+簽名
。XMSS簽名
和使用i索引的WOTS+公鑰,然后使用
的正確性。
使用XMSS,可以管理和驗證多個WOTS+密鑰。
拓展閱讀
本文介紹的簽名方案是基于哈希的簽名方案的基本構建塊。AndreasHülsing等人在該論文中對基于哈希的簽名方案的算法特性進行了更深入的分析。
還有其他以前NIST推薦的簽名方案和多樹方差和多樹XMSS)。NIST最近的第三輪后量子密碼學標準化過程目前不推薦這些簽名方案以及本文第一部分所介紹的簽名方案。然而,了解這些簽名方案的細節非常重要,因為更新的、通常更復雜的簽名方案是根據這些算法思想設計的。
本文的第二部分將介紹基于哈希的簽名方案的最新發展,包括SPHINCS/SPHINCS+,以及工程和開源軟件的現狀。
去中心化超抵押穩定幣USDD已獲9個區塊鏈支持,包括波場網絡、以太坊網絡、幣安鏈、BitTorrentChain、雪崩網絡、Fantom網絡、Polygon網絡、Arbitrum網絡和Auror.
1900/1/1 0:00:00區塊鏈是獨立于現實世界運行的系統。加密世界的數據在鏈上產生,也在鏈上繼續被使用。鏈外世界的數據無法直接傳遞到區塊鏈上.
1900/1/1 0:00:00如果你初來乍到Web3的世界,你要學習的第一件事是:保持懷疑,保持敬畏,保持對求知欲;路途自由美好,但路邊也險象環生.
1900/1/1 0:00:00以太坊合并正式完成!據Tokenview瀏覽器顯示,以太坊PoW最后一個區塊于14:42:42由F2Pool魚池挖出.
1900/1/1 0:00:00Polkadot生態研究院出品,必屬精品波卡一周觀察,是我們針對波卡整個生態在上一周所發生的事情的一個梳理,同時也會以白話的形式分享一些我們對這些事件的觀察.
1900/1/1 0:00:00凡是過去,皆為序章。2021年以來逐步發酵的以Solana、Avalanche等為代表的新一輪競爭公鏈,無論是在技術架構創新的基本框架層面,還是在DApp玩法完善的實際應用層面,都已經完全走出了.
1900/1/1 0:00:00