<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    A.4 一個例子

    考慮下面的例子,它是Fiat-Shamir機制[3]的一個簡化方案。這里,我們給定了一個模數n和一個關于模n的數,稱作y。在這個方案中,A的陳述是“我知道y關于模n的一個平方根”。注意到x是y關于模n的一個平方根,當且僅當x2 mod n=y.
    A和B之間的會話將如下進行:
    重復t次:
    1.A隨機選擇r(這里2≤r≤n-1),將其模n平方并發送給B。
    2.B隨機選擇比特b 等于0或1,發送給A。
    3.如果b等于0那么A發送
    z=r

    z=rx mod n,

    這里x是y關于模n的平方根,這是A所知道的。

    z2≡r2(mod n)。

    相應的,如果b等于1那么B檢查

        z2≡r2y(mod n)

    如果檢查是正確的就繼續,否則B拒絕并且終止程序。

    不難看出,如果AB都遵循上述程序,那么B將不會拒絕A;將z平方意味著把r或 rx平方,那將給出結果r2 mod n或(rx)2=r2x2=r2y mod n。
    另一方面,如果在t次迭代的任何一次中,A對于b=0和b=1都能夠提供正確的答案,這就意味著A能夠提供z0和z1 ,使得

                  z02=r2 mod n
    并且
                  z12=r2y mod n。
    通過將第一個方程式插入到第二個,可以直接地看出來數z1/z0 mod n是y的一個平方根(z0≠0并且z0必須以極大的概率和n互素)。如果A能夠計算出具有在這樣性質的z1和z0,那么他就能夠計算z1/z0,因此關于他知道y的一個平方根的陳述就是真實的。但是相反地,如果A是在欺騙,他并不知道y的平方根,在t次迭代的每一次中他必定不能正確回答b的至少一個值。因此一個欺騙的聲稱者使驗證者確信的概率至多為2-t。比如重復20次,我們就把這個概率縮小到約百萬分之一。從而也滿足了合理性的要求。至于零知識,注意到驗證者在會話結束之后所留下的是兩個數z和r2,滿足
    z2≡r2 (mod n)
    或者
    z2≡r2y (mod n)
    但是這些事情實際上驗證者不用與A會話,自己就可以生成。B只要選擇一個隨機的z,定義
    r2= z2 mod n
    或者
    r2=z2/y mod n。
    假如這樣的話,這種計算r2和z的方式不同于聲稱者的計算方式,但是這個事實是無關緊要的;二者的計算結果的分布是完全一樣的,也就是說,不可能分辨其差異。因此,除了得知A知道y的一個平方根這個事實之外,B不能得到任何他自己不能計算的信息。
    讓我們在這里預先考慮一個經常會提問到的問題。如果驗證者不掌握y的一個根就能夠自己生成很好的會話,那么為什么當聲稱者產生一個類似會話的時候,驗證者就應該確信他的話呢?答案是當B模擬這個協議的時候,他可以自由地以‘相反的方向’產生數字,也就是說,他首先選擇z然后尋找符合條件的r2。在協議的實際執行中,A沒有這個機會。驗證者期望在選擇b之前看到r2,然后聲稱者必須找到一個正確的z。
    盡管我們在這里已經解釋了幾個技術難點,但存在討論的要點:為什么機制具有零知識的特性。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类