第二章 數位簽章、身份認證協定與互動式證明系統
第三節 零知識互動式證明系統及知識簽章
在我們的協定中,數位簽章的安全性是建立在一個很重要的基礎上,
那就是互動式證明系統(Interactive Proof System)。如下圖所示,在互動式 證明系統的架構中,有一個證明者(Prover)與一個驗證者(Verifier),證
明者要向驗證者證明或說服(Convince)他知道某個秘密值,而且證明者 不希望洩漏任何跟這個秘密值有關的資訊。
互動式證明系統
一個互動式證明系統基本上又可以分為兩類,一種是證明者希望向驗 證者證明他知道一個語言的關係(Proof of membership of language),而另 一種術語知識的證明(Proof of Knowledge of predicates)則是證明者要向 驗證者證明知道秘密值的實際值如上圖所示,而我們所定義的零知識互動 式證明系統是屬於後者。接下來我們引用[17]的定義,其中:
y = gx
Prover Verifier r∈RZq, a
p g
a
= r modc c∈R{0,1}
w=r-cx mod q w
verify if
p y
g
a
=? w ⋅ c mod‧ PPTM 表 示 機 率 的 多 項 式 時 間 杜 林 機 器 ( Probabilistic polynomial-time Turing machine)
‧ Q 是一個二元的術語,使得任何擁有正確型式的 x 值,都有一個 秘密值ρ,使得 Q(x, ρ)=1。
定義1、 <P(ρ),V>(x)為 P 與 V 的一個互動式證明系統,使得 x 是一般公 開的輸入值,而ρ 是 P 私有的輸入值。
17
-定義2、 讓 P,V 皆為 PPTM,我們說對於 Q 的<P,V>這一個零知識互
2. 完美性(Soundness):存在一個機率多項式時間的知識擷取者
(Probabilistic polynomial-time knowledge extractor)E,使得對於任 何的x屬於Dom(Q)(Q的定義域)以及任何的P*,滿足下面的式子: 器(Simulator)MV*,使得下面兩個分佈(Distribution)在多項式 時間內不可分辨(Polynomial-time indistinguishable):
‧ {<P(ρ),V*>(x)}x ∈Dom(Q),Q(x, ρ)=1
-於任何一個驗證者V*,都能造出一個輸入為x的模擬器MV*,使得MV*
的分 佈與原本的互動式證明系統的分佈一樣,而這兩個分佈一樣代表著一件 事,那就是攻擊者無法分辨這些傳遞的訊息是來自於真正協定的分佈或者 是來自於模擬器MV*
所造出來的分佈,那也就代表當實際執行互動式證明 系統的協定時,從溝通訊息以及公開值中,是無法得知ρ這個秘密值的任 何資訊。
知識簽章也就是滿足零知識條件的非互動式證明系統(Non-interactive proof system),而在非互動式證明系統中,證明者在不與驗證者互動的情 況下,產生一個字串來取代互動式證明系統所該擁有的性質,此外這個字 串還得代替互動式證明系統在驗證者端所做的挑戰(Challenges),在非互 動式的證明系統中取代挑戰的方式有兩種,分別是隨機信號模式(Random Beacon model)與安全雜湊函數模式(Secure Hash function model)。知識 簽章是利用安全雜湊函數模式來達到取代挑戰的目的。下面是關於知識簽 章的定義,引用自[17]:
定義1、 抗碰撞雜湊函數(Collision-resistant hash function):H={hn: {0,1}*→{0,1}n},則對於所有的PPTM M,所有的多項式p(.),以 及所有足夠大的n,
) ( )] 1 ( ) ( ), , ( ) 1 (
Pr[ 1 2 1 2
n x p
h x h x x
M
n = n = n < ,左式的機率是根據M的隨機位元來決定。
定義2、 G=<g>是一個g為原生根的循環群,y∈G為相對於基底(Base)
g的離散對數值x∈Z,它們之間的關係式為y=gx,另外H:
{0,1}*→{0,1}k是一個將任意長度的二元字串對應到長度為k的二 元字串的抗碰撞雜湊函數。那麼我們說配對(c,s)是一個y=
gx相對於基底g在訊息m∈{0,1}*上離散對數值的知識簽章。驗證 者可以用
c
=H
(y
||g
||g
sy
c ||m
)等式來驗證。由上面的定義我們可以知道簽名者(Signer)可以證明他知道 y 相對於
19
-基底 g 的離散對數值 x,因為只有知道 x 的人,才能用下面的方式產生離 散對數的知識簽章,因此我們說知識簽章具有不可偽造性。
1. 亂數選取
t ∈ Z
2. 計算
c
=H
(y
||g
||g
t ||m
) 3. 計算 s=t-cx mod q4. 輸出配對(c,s)為知識簽章