比特幣現金的Rabin簽名
在本文中,我們將向您展示如何在比特幣現金指令碼中直接簽署和驗證任意訊息,而無需引入新的操作碼(例如提議的OP_CHECKDATASIG(也稱作OP_DATASIGVERIFY))。通過利用Rabin簽名的簡單代數結構,我們可以對交易中的任何資料進行簽署 – 即使資料來自比特幣現金區塊鏈之外。
Rabin 簽名
Rabin數字簽名(RDS)演算法是邁克爾•拉賓(Michael Rabin)在1979年開發的數字簽名方案中的一個相對不太為人們所瞭解的早期例子[1]。它的安全性依賴於一項關鍵觀察,即計算模組化平方根與整數因子分解是同樣困難的。基於這個原因,它有很多跟RSA相同的功能,但他們之間也有一些值得探索的有趣差異。
Rabin密碼系統設定類似於RSA,通過識別具有相似量級的兩個質數 和 來啟動金鑰生成。但是,與RSA不同,它還有另外一個要求,即 及 。該組合(p,q)一起形成具有相應公鑰 的私鑰。
為了對訊息進行簽名,需要識別一個 ,使得雜湊值 是一個二次剩餘模數 。換句話說,存在一個 使得:
. (1)
的組合就是 Rabin 簽名。
通過找到右側的平方根來偽造簽名跟 的整數因子分解一樣困難。另外,如果 和 已知,則根據孫子剩餘定理:
and . (2)
由於我們已經選定 且 ,可以使用Tonelli-Shanks演算法的簡化版本來計算:
. (3)
要驗證簽名是否有效,需要檢查(1)是否成立。其成立的條件為,當且僅當有一個整數 在 的範圍內且:
. (4)
因子 可以安全地包含在簽名中,因此可以公開的資訊是 的組合。在這種情況下,要驗證簽名,需要檢查(4)是否成立。這比驗證(1)更容易實現。
Rabin簽名方案有如下三種有趣的特點:
a)簽名的生成從計算方面上講是比較昂貴的,而簽名的驗證在計算上是比較便宜的。
b)簽名的安全性僅依賴於整數因子分解的難度。因此,Rabin簽名在存在性上是不可偽造的(與RSA不同)。
c)雜湊函式 必須與公鑰 具有相似的量級。
為確保128位安全級別,Rabin(或RSA)公鑰 必須為3072位,明顯大於橢圓曲線加密中類似金鑰所需的256位。因此,雜湊函式 的摘要和簽名的 部分也必須是3072位的。
比特幣現金的實現
驗證方程(4)的簡單代數結構有助於在比特幣現金指令碼中實現,該指令碼僅允許某些基本的算術運算。計算上比較昂貴的簽名本身的生成是在塊外進行計算的。

其一項重要的應用是驗證任意訊息 的簽名。此訊息可能包含來自比特幣現金區塊鏈之外的資料。將其與現有操作碼OP_CHECKSIG進行比較可以發現,現有操作碼僅可驗證已獲得ECDSA簽名的特定型別的訊息(即交易雜湊)。
可以考慮以下形式的贖回指令碼:
OP_DUP OP_HASH160 < > OP_EQUALVERIFY OP_MUL OP_SWAP OP_2 OP_ROLL OP_CAT FUNC_HASH3072 OP_ADD OP_SWAP OP_DUP OP_MUL OP_EQUAL
其中, 是簽署人的公鑰。當且僅當它有下列輸入時,才會被評估為成立:
< > < > < > < > < >
其中 是任意訊息,而 是該訊息的有效Rabin簽名。或者,如果需要預定訊息的簽名,則可以在贖回指令碼中包括< >。
直接實現上述贖回指令碼存在兩個障礙,但是這些都可以克服,而無需引入新的操作碼。
i)比特幣現金指令碼沒有具有3072位摘要的雜湊函式,我們用FUNC_HASH3072將其表示為 一個佔位符 。
ii)算術運算OP_MUL和OP_ADD限制在32位輸入。這與Rabin簽名方案中的3072位整數衝突。
為了解決(i)的問題,我們可以將一個256位的雜湊摘要對映為3072位。例如,我們可以首先應用OP_HASH256,將結果拆分為12塊,然後用OP_HASH256再次對每個塊執行雜湊計算,最後合併結果。
(ii)的一項解決方案是將每個整數分成32位的塊,然後應用Karatsuba演算法。另外可以通過在執行中直接驗證等式兩側的每個塊來提高效率。一旦資料被壓縮成合適的形式,這個過程將帶來主演算法的96個迴圈,必須在比特幣現金指令碼中進行解壓縮。請注意,該解決方案需要刪除201個操作碼的限制。
(ii)的另一種解決方案是提高比特幣現金算術位長度以考慮更大的整數。在這種情況下,必須格外小心,以設計一個安全的解決方案。
結論
通過利用Rabin簽名的屬性,我們已經瞭解瞭如何進行任意訊息的簽署,以及如何在比特幣現金指令碼中直接驗證簽名而不引入新的操作碼。所有計算上昂貴的操作(金鑰生成、簽名構造)都是在塊外執行的。在指令碼中執行的只有用來驗證(4)成立的簡單步驟。
該解決方案在存在性上難以偽造的特點,可以為比特幣現金平臺帶來額外的功能,而無需犧牲網路的安全性,或改變核心協議本身。
我們將繼續使用Rabin簽名開發此解決方案,並將尋求與其他人合作開展此項工作。 nChain不打算為其在解決方案上的努力尋求專利保護;相反,nChain將釋出在該領域的研究成果,供公眾查閱和使用。
歐文•沃恩(Owen Vaughan)
參考文獻
[1] Michael O. Rabin, “Digitalized signatures and public-key functions as intractable as factorization”, Technical Report 212, MIT Laboratory of Computer Science, Cambridge, 1979.
Read the full nChain article on Rabin signatures here .
Note: Tokens on the Bitcoin Core (segwit) Chain are Referred to as BTC coins. Bitcoin Cash (BCH) is today the only Bitcoin implementation that follows Satoshi Nakamoto’s original whitepaper for Peer to Peer Electronic Cash. Bitcoin BCH is the only major public blockchain that maintains the original vision forBitcoin as fast, frictionless, electronic cash.