很高興,我們在2022年7月25日發布了OlaVM ,一個EVM兼容的ZKVM方案。由於ZKEVM本身一直是個熱門的賽道,所以OlaVM一經發布,就很榮幸的受到了行業內大佬們的一些關注。

在這裡,我們首先非常感謝Daira Hopwood大佬(也是Zcash協議的主要作者)針對OlaVM的設計提出的一些問題。其中,比較核心的一點是ECDSASchnorr簽名算法裡Hash的選擇問題,具體的表述如下圖所示:

關於Sinsemilla哈希函數在OlaVM中的應用

Daira Hopwood的意思可以簡單理解為: Sinsemilla Hash安全級別只有collision-resistant, 因此不能當做一個random oracle(RO);而在ECDSASchnorr簽名算法中,為了足夠的安全,需要要求這個Hash可以當做random oracle(RO)。為了能更好的理解,我們需要先了解一些概念。

1.cryptographic hash function (CHF)的安全屬性有哪些?

根據論文Cryptographic Hash-Function Basics裡的定義可知,CHF對應的安全屬性有以下3類:

preimage-resistance — 基本上對於所有預先指定輸出,要找到任何散列到該輸出的輸入,在計算上是不可行的,例如,當給定任意未知輸入的y 時,要找到使h(x ')=y 的所有原像(preimage) x'。

2nd-preimage resistance — 要找到與任何指定輸入具有相同輸出的任何第二輸入,在計算上是不可行的,例如,給定x,要找到一個第二原像x' = x,使h( x') = h(x)。

c ollision resistance — 要找到任意兩個散列到相同輸出的不同輸入,在計算上是不可行的,例如,使h(x') = h(x)。

需要注意的是:

a. 2nd-preimage resistance可以歸約為collision resistance, 即collision resistance滿足,則2nd-preimage resistance必定滿足。

b. preimage-resistance不可以歸約為collision resistance, 即collision resistance滿足,則preimage resistance未必滿足。

2. 什麼是random oracle(RO)?

random oracle(RO)用以下模型來描述:

• 有一個黑盒子。盒子裡住著一個侏儒,還有一本大書和一些骰子。

• 我們可以向盒子裡輸入一些數據(任意比特序列)。

• 給定侏儒一些事先沒有看到的輸入,他用骰子在一些常規空間(oracle輸出空間)中均勻且隨機地生成一個新的輸出。侏儒還會在書中寫下輸入和新生成的輸出。

• 如果給定侏儒一個已經看到的輸入, 他就用書來恢復他上次返回的輸出,並再次返回。

簡單來概括下RO的行為,假設輸入為x:

• 如果x 之前輸入過,則直接返回對應的H [x].

• 如果x 未曾輸入過,則RO會在完全隨機的在值域裡生成一個由0,1組成的字符串。

需要注意的是:

• 這裡的完全隨機意味著,連RO自己都不知道最終會是一個什麼值,它是沒有規則可循的,這是和Hash的主要區別,任何Hash都是有自己的計算規則的。

但是在現實的世界中,實現一個真正的RO是很困難的;因此,我們需要為RO尋找一個潛在候選者,需要盡可能的使得輸出看起來是隨機的。 Hash函數是一個不錯的選擇,一個安全的Hash函數需要滿足preimage-resistance、2nd-preimage resistance、collision resistance。一個可以當做RO的Hash是肯定要滿足這三個屬性的,但是滿足這三個屬性的Hash不一定就可以當做RO ;它們之間是一種必要不充分關係。更多的細節可以參考What is the "Random Oracle Model" and why is it controversial?

3. Hash在ECDSA和Schnorr簽名算中的要求?

在論文On the security of ECDSA with additive key derivation and presignaturesOn the Exact Security of Schnorr-Type Signatures in the Random Oracle Model中提到,ECDSA和Schnorr簽名算法裡的Hash函數都需要可以被認為是RO,才是安全的。根據前面的描述,則這個Hash需要滿足CHF的所有安全屬性preimage-resistance、2nd-preimage resistance、collision resistance。

關於Sinsemilla哈希函數在OlaVM中的應用

關於Sinsemilla哈希函數在OlaVM中的應用

4. 關於Sinsemilla哈希函數?

Sinsemilla哈希函數是由Daira Hopwood 和Sean Bowe一起設計,底層依賴ECDLP(Elliptic Curve Discrete Logarithm Problem) 。在固定長度的輸入下,Sinsemilla哈希函數滿足collision resistance,不滿足preimage resistant屬性,原因可以參考Daira Hopwood回答

根據Zcash協議說明書,設計Sinsemilla哈希函數的初衷是為了在零知識證明算法Halo2的執行過程中,充分利用Lookup-friendly的優勢,來提高Halo2的執行效率;因此,Sinsemilla哈希函數是一個Lookup- friendly的哈希函數,它更適合用於承諾的計算和Merkle tree root的計算。

關於Sinsemilla哈希函數在OlaVM中的應用

5. 總結

再次感謝Daira Hopwood的指導,讓我們對cryptographic hash function (CHF)的使用有了更深的認知。我們將繼續廣泛聽取意見,在高效性和安全性方面對設計方案進行持續優化。

Sinsemilla哈希函數會仍然用於Olavm設計中的其他合適模塊;簽名部分的Hash函數,我們將會在安全的哈希函數中,擇優選擇,比如Poseidon哈希函數、 Reinforced Concrete哈希函數等。

引用

1. OlaVM:https://ethresear.ch/t/whitepaper-olavm-an-ethereum-compatible-zkvm/13144

2. Daira Hopwood:https://twitter.com/feministPLT

3. Zcash協議:https://zips.z.cash/protocol/protocol.pdf

4. ECDSA:https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm

5. Schnorr:https://en.wikipedia.org/wiki/Schnorr_signature

6. Sinsemilla Hash:https://zips.z.cash/protocol/protocol.pdf

7. Cryptographic Hash-Function Basics:https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=C7364E9082B2726A10E1C712B476C82A?doi=10.1.1.3.6200&rep=rep1&type=pdf

8. random oracle(RO):https://en.wikipedia.org/wiki/Random_oracle

9. What is the "Random Oracle Model" and why is it controversial:https://crypto.stackexchange.com/questions/879/what-is-the-random-oracle-model-and-why-is-it- controversial

10. On the security of ECDSA with additive key derivation and presignatures:https://www.shoup.net/papers/2021-1330.pdf

11. On the Exact Security of Schnorr-Type Signatures in the Random Oracle Mode:https://eprint.iacr.org/2012/029.pdf

12. ECDLP(Elliptic Curve Discrete Logarithm Problem):https://link.springer.com/referenceworkentry/10.1007/978-1-4419-5906-5_246

13. 回答:https://twitter.com/feministPLT/status/1551856467145269249

14. Poseidon:https://eprint.iacr.org/2019/458.pdf

15. Reinforced Concrete:https://eprint.iacr.org/2021/1038.pdf

關於我們

Sin7Y成立於2021年,由頂尖的區塊鏈開發者和密碼學工程師組成。我們既是項目孵化器也是區塊鏈技術研究團隊,探索EVM、Layer2、跨鏈、隱私計算、自主支付解決方案等最重要和最前沿的技術。

微信公眾號:Sin7Y

GitHub:Sin7Y

Twitter:@Sin7Y_Labs

Medium:Sin7Y

Mirror:Sin7Y

HackMD:Sin7Y

HackerNoon:Sin7Y

Email:contact@sin7y.org