比特幣區塊鏈中的每個塊包含一個或多個交易。交易由一個要使用的現有輸入列表、一個要建立的輸出列表以及輸入的所有者批准將其比特幣轉移交易的證明組成。
在比特幣中,大多數輸入都需要一個數字簽名形式的密碼證明才能使用。這就有可能導致會有許多不同型別的支出標準,這被稱為任何人都可以支出的產出。
快速介紹數字簽名
目前最流行的簽名演算法是Rivest-Shamir-Adleman (RSA)和Digital Signature Algorithm (DSA)。RSA是為加密和簽名而構建的,而DSA最初只是為簽名而構建的,但後來也被修改為支援加密。這兩種演算法依賴於不同的密碼假設:RSA依賴於因式分解,DSA依賴於離散對數問題。
這兩種技術都需要公鑰對和私鑰對。私鑰用於對訊息簽名,而公鑰用於驗證簽名。關鍵是在技術上會涉及大量的數字來進行計算。這些計算中可能值的一組數字稱為欄位或組。
目前,比特幣使用橢圓曲線數字簽名演算法(ECDSA),這是DSA的一個改進,用於橢圓曲線。該曲線定義了用於計算的數學組,它規定了金鑰格式和密碼術操作的一組值。ECDSA的優點是由於橢圓曲線加密的效率,您可以用更小的金鑰大小實現與RSA相同的安全性。 這使得ECDSA成為比特幣的明智選擇,因為較小的金鑰總體上佔用的空間更小,導致資料更少,操作更快。
Schnorr簽名
Schnorr簽名可以適用於任何滿足離散對數問題的數學組。幸運的是,比特幣中的橢圓曲線secp256k1符合這一特性。這意味著在比特幣中,同樣的私鑰和公鑰可以與Schnorr簽名一起使用。Schnorr簽名比ECDSA簽名有更多優點:
1. Schnorr簽名更小。大多數ECDSA簽名是71或72位元組。所有Schnorr簽名都是64位元組。
2. 他們允許更緊湊的多重團體。比特幣目前的m-of-n簽名方案需要m個簽名的表示和驗證。Schnorr multisig只需要一個簽名就可以代表所有m方。
3. 跨多個聯合簽名!我們不僅可以將一個多sig輸入的簽名壓縮為一個簽名,還可以將多個輸入的簽名聯合為一個簽名。當與CoinJoin相結合時,這可以使交易更便宜、更私密。即使沒有CoinJoin,這也可以大大減少交易的大小和成本。將Schnorr簽名引入比特幣的主要工程師Pieter Wuille估計,只要讓使用者在不同輸入之間聯合簽名,比特幣區塊鏈就能縮小25-30%。
4. 沒有指令碼的指令碼!透過巧妙地使用遠遠超出本文範圍的Schnorr簽名,我們實際上可以透過使用一個特殊的過程來建立所需的簽名來實現不同的開銷條件。利用Schnorr簽名的線性特性——沒有指令碼的指令碼,以特定的方式組合部分簽名,可以滿足開銷標準。Blockstream的安德魯·波爾斯特拉(Andrew Poelstra)對這種可能性做了一些偉大的研究。
5. Schnorr簽名被證明是不可塑的。ECDSA簽名可以在不訪問建立它們的私鑰的情況下更改。當簽名被包含在生成交易id時,這對比特幣來說是一個大問題。隔離證人透過分離簽名(也稱為證人)減少了這個問題,但擁有一致的簽名仍然很好。
有什麼缺點嗎?
Schnorr簽名強調了當前ECDSA系統已經存在的一個弱點。這些簽名方案使用一個nonce值,這個值只能使用一次,必須隨機選擇,或者至少是不可預測的,否則攻擊者可以對私鑰進行反向攻擊。2011年,索尼(Sony)就發生過這種著名的情況,當時PS3上使用的ECDSA方案顯示,根本不隨機選擇這個nonce。結果,一個團體釋出了索尼的私鑰,允許使用者安裝自己的作業系統。
使用ECDSA,由於不存在聯合簽名,nonce可以根據正在簽名的內容進行確定。這就是比特幣沒有問題的地方。然而,當引入聯合簽名時,我們將需要一個真正的隨機熵源來建立簽名。問題是,當多個參與方聯合起來建立簽名時,惡意參與方可以使用相同的nonce和相同的輸入啟動對兩個多簽名的請求。它們會在請求完成之前中止請求,但是可能已經建立了正確的條件來反向工程受害者的私鑰。
接下來是什麼?
Schnorr簽名實現的一個障礙是它們還沒有標準化。Bitcoin Core 開發者Pieter Wuille,為單一簽名的實現提供一個標準化草案。該草案目前正在比特幣社羣接受同行審查。
聯合簽名另一個複雜性問題是,使用精心設計的nonces可能會受到攻擊。Blockstream在這個問題上做了一些有趣的工作,他們提出被稱為MuSig的解決方案。MuSig目前透過在簽名建立過程中新增更多的輪數來解決這個問題,以確保沒有人能夠透過操縱nonce值來傷害其他人。目前,MuSig協議需要與聯合簽名進行三輪協調。第一輪要求每個人都生成惟一的輸入,這些輸入將雜湊值並在一起,以確保從不使用相同的nonce來簽署相同的訊息。
目前正在進行最佳化聯合簽名的研究。Blockstream的希望是,他們將能夠透過使用零知識證明,以確保適當的熵,將溝通從三輪減少到兩輪。Schnorr簽名似乎不太可能在今年進入比特幣市場,但它們正在穩步前進,如果運氣好的話,有望在2020年把比特幣的下一個區塊獎勵減半。