Encryption
為什麼是Hash(x⊕y)Hash(x⊕y)operatorname{Hash}(x oplus y)不是安全的工作量證明算法?
$ x $ 是挑戰弦樂, $ y $ 是證明字元串。 $ \operatorname{H} $ 是工作量證明 (pow) 函式,找到一個 $ y $ 這樣 $ H(x,y)<2^{256}/D $
- $ x ,y = { 0, 1 }^{512} $
- $ \operatorname{H}(x,y) = \operatorname{SHA-256}(x \oplus y) $
- 找到 $ y $ 這樣 $ \operatorname{H}(x,y)<2^{256}/D $
問題是要證明:
如果困難 $ D $ 提前修復,攻擊者可以找到 $ y $ 用最少的時間一次 $ x $ 已發布。(攻擊者可以在 x 發布之前完成大部分工作)
我的直覺是:
- 預計算攻擊與異或操作有關。例如 $ 1101 \oplus 1111 =0101, 0000 \oplus 0101 = 0101 $ .
- 在雜湊函式之前有一些衝突。 $ x \oplus y = x’ \oplus y’ $ , $ \operatorname{H}(x \oplus y )=\operatorname{H}(x’ \oplus y’) $ .
我努力學習了一整天的預計算攻擊或原像攻擊,但最終沒有進展。如果您能提供一些線索,我將不勝感激。
原題連結: https : //cs251.stanford.edu/hw/hw1.pdf (這是斯坦福課程cs251作業,但我不是在校生,我自己學的。我試圖完成作業和項目,以確保我了解主題細節。此外,作業逾期,所以我認為它沒有違反一些校規。如果問得不恰當,請告訴我)
所謂的證明者可以預先計算一個 $ u $ 這樣 $ H(u) $ 滿足工作量證明的條件。
面臨挑戰 $ x $ ,證明者可以輸出 $ x \text{XOR} u $ 作為作弊的證據。