2018-07-28

Schnorr 簽名

Schnorr 簽名由來

Schnorr 源于 Claus-Peter Schnorr 的發(fā)明,是一種簽名策略:一系列連接私鑰、公鑰和簽名的數(shù)學規(guī)則。很多密碼學家認為 Schnorr 簽名在相關(guān)應用中是最好的,具備相當高水平的正確性,沒有延展性問題,驗證速度快,最重要是支持多重簽名,即把多個簽名聚合成為一個新的簽名。比特幣協(xié)議使用的是另一種類型的簽名策略 ECDSA 橢圓曲線數(shù)字簽名算法。Schnorr 簽名基于與 ECDSA 相同的安全假設,并與比特幣已使用的橢圓曲線 secp256k1 兼容。這意味著 Schnorr 簽名可以使用相同的私鑰創(chuàng)建,并與當前使用的密鑰派生方案兼容。

?但截至目前,Schnorr 簽名尚不能在比特幣中使用,除非硬分叉。大家都知道的 SegWit 隔離見證,會把所有的簽名數(shù)據(jù)轉(zhuǎn)移到某個交易上的獨立空間:見證數(shù)據(jù) witness 將不被嵌入從前比特幣協(xié)議中。有了腳本版本控制,所有見證中的規(guī)則通過軟分叉改變,包括 Schnorr 簽名策略。

為交易騰出更多容量

Schnorr 對比特幣最大的好處是多重簽名聚合。很多比特幣交易包含多個輸入,這些輸入記錄著這些比特幣的地址來源,這些輸入需要有各自的簽名。這意味著即使一筆交易,也必須包含所有簽名,網(wǎng)絡必須傳輸所有這些簽名,同時一個區(qū)塊也必須包含所有這些簽名。這就好像你把零錢湊在一起,去買個百元的大件商品。假如使用 Schnorr 簽名,所有輸入只需要一個合并簽名即可完成。這可以為交易騰出更多空間。__比較目前的狀況,重點看下方的數(shù)字簽名,_Schnorr 簽名聚合_預示著效率提升從目前來看,ECDSA 簽名的大小各不相同,大多數(shù)字符長度為 71-73 個字節(jié),最大為 75 個字節(jié),理論上最小為 8 個字節(jié)。Schnorr 簽名比 ECDSA 簽名更高效、更緊湊。每個簽名的最大長度是 64 個字節(jié)。再比如 Bitcoin Core 給出的隔離見證方案,讓所有的見證數(shù)據(jù)大小減少 75%,1MB 見證數(shù)據(jù)可以壓縮至 0.25MB,在原來的區(qū)塊多騰出了 0.75MB 空間。然后,聚合的 Schnorr 簽名又可以減少見證數(shù)據(jù)量,按照 1MB 可以減少 0.5MB 計算,通過這兩次,見證數(shù)據(jù)可以壓縮到 0.125MB,相當于區(qū)塊容量提升約 17%,能騰出多少空間取決于區(qū)塊中所包含的交易類型。比特幣核心開發(fā)者 Eric Lombrozo 估算,Schnorr 簽名最終會把總?cè)萘刻岣咧辽?40%,且是在隔離見證增加 60% 至 100% 容量之后。

多重簽名問題

上述的容量提升只針對一般交易,也就是包含多個輸入的交易。在多重簽名交易中,Schnorr 的威力更加強大。多重簽名交易中,一個輸入需要多個簽名,通常這些簽名又來自不同的人。像正常的交易一樣,多重簽名交易只需要單個簽名替代多個簽名,無論原本需要多少簽名,也不管這個交易涉及的人有多少。為更為復雜的智能合約架構(gòu)敞開了大門,且只需要一點點的數(shù)據(jù)需求量。不管是多重簽名交易類型是 2/3、3/15,或者 100/100,所有類型需要的簽名數(shù)據(jù)量相同,與單簽名交易類型所需量一致。

CoinJoin 隱私強化

Schnorr 簽名同時滿足隱私保護。如上文所述,一個交易可以包括多個輸入,通常情況下,與這些輸入相連的地址都屬于同一個人。比特幣核心開發(fā)者 Gregory Maxwell 提出一種隱私強化方法 CoinJoin,讓不同的用戶把他們的交易組合進一個交易。這個交易包含來自不同交易的多個輸入,然后把錢發(fā)送的多個輸出中,傳送給不同的收款人。這好比一群人,把各自的錢、硬幣放在一起,去不同的商店購物。每一個體不必各自去購買,但也會得到各自付出相應價格的商品。如進展順利,CoinJoin 將成為在比特幣協(xié)議中加強隱私的一種方式,但這是后話。Schnorr 簽名可以為 CoinJoin 帶去優(yōu)勢,讓所有 CoinJoin 交易的參與者不僅可以組合他們的交易,而且可以組合他們的簽名。交易體積比所有個體交易組合要小得多,這也意味著礦工打包的費用也會小得多。

難以預料的攻擊

據(jù) Blockstream 聯(lián)合創(chuàng)始人 Pieter Wuille 這次在斯坦福的演講所述,Schnorr 簽名在過去的幾年中經(jīng)歷了幾次「不容易被發(fā)現(xiàn)的挑戰(zhàn)」。2017 年,在 Schnorr 簽名實施時,發(fā)現(xiàn)了「流氓密鑰攻擊」,即參加交易的一方使用一把特別制作的密鑰來盜竊資金。這個問題對于簡單的多重簽名是很好解決的,只需進行一個注冊程序,讓密鑰自己進行簽名,但是要支持一筆轉(zhuǎn)賬中的多個交易輸入就必須要使用公鑰,這個辦法也就行不通了。他們遞交了可能要進行的修訂,但被學會駁回,此后 ANSSI 密碼學專家 Seurin 加入了比特幣核心開發(fā)組,與 Pieter Wuille、比特幣核心開發(fā)者 Gregory Maxwell 及 Blockstream 數(shù)學家 Andrew Pwolstra 共同完成了更安全的構(gòu)造改進。但隨后又發(fā)現(xiàn)了另一問題。Blockstream 工程師 Russell O’Connor 發(fā)現(xiàn)了另一種攻擊,有多個參與者的交易中,其中一名參與者可以宣稱擁有其他人的密鑰,從而使用他人的交易輸出。Wuille 稱之為「Russell 攻擊」,并表示在有多個參與者的交易中,攻擊模型非常微妙?,F(xiàn)在有幾個比特幣改進建議 BIPs 正在起著作用,一個代碼的實施,在發(fā)展過程中需要很長時間,如果上述情況持續(xù)下去的話,Schnorr 代碼的完成不會花很長的時間。比特幣核心開發(fā)者 Nicolas Dorier 表示,Schnorr 簽名添加到比特幣協(xié)議上可能要花去很多年的時間。Wuille 也承認有必要用相當長的時間去充分推敲。

轉(zhuǎn)載鏈接:https://www.chainnews.com/articles/053513188565.htm。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容