第四十七個知識點:什么是Fiat-Shamir變換?


第四十七個知識點:什么是Fiat-Shamir變換?

只要Alice和Bob同時在線,Sigma協議能快速的完成Alice向Bob證明的任務。Alice向Bob發送承諾,Bob返回一個挑戰,最后Alice給出一個回應。不幸的是,沒有進一步的修改,Sigma協議實際上不是零知識的:它們僅僅是誠實驗證者零知識的。

Fiat-Shamir變換是一種可以將Sigma協議變成非交互證明的技術。這不僅僅會讓Alice可以通過給Bob發送郵件完成證明(Bob可以稍后閱讀郵件而不必返回一個挑戰),而且它能把任何一個Simga協議變成一個數字簽名,簽名的含義就是“知道這個Sigma協議的秘密的人已經簽署了這個消息”。Alice能夠創造一個簽名一次然后無數次的進行分發,驗證者可以不必聯系Alice。同時零知識也變得容易了,因為Bob或者其它讀者不能做任何事情。

盡管菲亞特和沙米爾在1986年的論文中解釋了這種技術,但過去幾位著名的密碼學家曾指出,這種技術實際上是布魯姆在更早的著作中提出的,盡管我們還沒有能夠追蹤到這一點。

一個Sigma協議能夠通過四個算法實現:“承諾”,“挑戰”,“回應”,“驗證”。下面給出了解釋:

Alice                                Bob
-----                                -----
    
co,st = Commit(secret,public)
         ---------- co --------->
                                     c = Challenge()
         <--------- c  ----------
r = Respond(st,c)
         ---------- r  --------->
                                     Check(co,c,r)

Fait-Shamir變換中,Alice選擇了哈希函數\(H\),然后使用它創造挑戰:

Alice                                World
-----                                -----

co, st = Commit(secret,public)
c = H(public,co)
r = Respond(st,c)
         ------ co,r ----------->
                                     c = H(public,co)
                                     Check(co,c,r)

如果Alice想要簽署一個消息m,她需要讓c = H(public, co, m),然后把(m, co, r)公布出去作為消息。

為什么這個方法工作,因為\(H\)是一個隨機函數,挑戰是均勻隨機的被選擇,獨立於Alice的公開信息和承諾的。安全分析認為Alice不能訪問\(H\)內部的代碼,只能把\(H\)當作一個oracle。在這種情況下,Alice在不遵循協議的情況下做出正確響應的概率(特別是當她不知道必要的秘密時)與\(H\)的范圍的大小成反比。假設\(H\)的定義域和值域分別是\(X\)\(Y\),Alice為了偽造進行了\(q\)次調用。那么Alice獲得正確\(r\)的值的概率是\(q/|Y|\)。典型的\(Y = 2^n\),所以整個概率是可以忽略的。

有些人會告訴你,這種模式的安全分析被叫做隨機oracle模型是有嚴重缺陷的,因為那有一個反例--在隨機oracle模型中安全但是在任何人工hash函數都是不安全的。這個反例表明,如果你努力想要做一個愚蠢的方案,你就會得到一個愚蠢的方案。實際上,Fiat-Shamir早在1986年就已為人所知,並在若干實際應用中得到應用,至今仍完好無損(如果處理得當)。沒有人已經提出了一個可行的攻擊針對經過Fiat-Shamir轉換的Sigma協議的方案(不是故意設計為愚蠢的方案),這用於相當多的密碼方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM