第三章 使用通行碼的數位簽章協定
第一節 數學符號與假設
在執行這個協定時,有兩個主要的角色,分別是服務者(Server)與客戶 (Client),而 π 代表的是客戶的通行碼,另外 α,β 分別是客戶與服務者所 擁有的秘密資訊,而驗證用的公開金鑰則是z。
k和l是我們協定的安全參數,其中k是雜湊值的長度(例如:128 或是 160 個位元),而l是公開金鑰的長度,例如:1024 或 2048 個位元,在這邊的公 開金鑰是針對基於離散對數(Discrete log based)的公開金鑰系統而言,例如 ElGamal加密系統。{0,1}*表示所有有限長度的字串集合,{0,1}n表示長度 為n的字串集合。
p為一個長度為l的安全質數(Safe Prime),使得p=2q+1,其中q也是一個 長度為l的質數。在這樣的設定下,我們可以得到一個乘法群(Multiplicative group)Zp*
和 他 的 一 個 基 數 為 q 的 子 群 (Subgroup) , 稱 為 Gp,q(Gp,q={
x
|x
q ≡1modp
,x
∈Zp*}) , Gp,q是Zp*下 的 二 次 剩 餘 (Quadratic residuosity)所形成的集合,並且g1,g2,g3皆為Gp,q的原生根。我們需注意 的是所有協定中的值都是在Gp,q這個群中運作。H1,H2和h為雜湊函數,H1: Zq→ Zq,H2:Gp,q→ Gp,q,h:{0,1}*→{0,1}n。
接下來我們介紹密碼學上的一些問題定義和假設:
‧ 離散對數問題(Discrete logarithm problem,簡稱為DLP)是指給定一 串數值(y,p,g),p是一個安全質數,使得p=2q+1,其中q亦為一個質 數。g是一個在Zp*
下的原生根,
y
∈RG
p,q ,而要如何計算出x,。 ) (mod
log
y p
x
≡ g‧ 離散對數假設(Discrete logarithm assumption)是假設離散對數問題(DLP) 是一個在計算上很難解的問題。
‧ Diffie-Hellman判決問題(Decisional Diffie-Hellman Problem),在這 個問題中我們隨機選取兩個值X=gx mod p,Y=gy mod p,其中p是 一個安全質數,使得p=2q+1,q也是一個質數,而q是在Gp,q這個群 的原生根。這個問題是要去判別在Gp,q這個群的一串數值(X,Y,
Z ) 之 中 , Z 是 一 個 隨 機 的 值 還 是 X 與 Y 的 Diffie-Hellman 值 DH(X,Y)=gxy。
‧ DDH 假設(DDH Assumption)是假設 Diffie-Hellman 判決問題是一個在 計算上很難解的問題。
第二節 使用通行碼的數位簽章協定
在介紹我們所提出的“使用通行碼的數位簽章協定"PS之前,我們需 要注意一件事:服務者所擁有的秘密資訊是β’,而β是經過雜湊函數H1雜湊 後產生的值。我們提出的PS協定中包含了三個部分的演算法,分別是金鑰 產生演算法,簽署數位簽章演算法,以及驗證數位簽章演算法,演算法的 內容分別說明如下:
‧ KGen(金鑰產生演算法):在這個演算法中,輸入是安全參數以及 通行碼(k,l,π),而輸出則是公開的值p,q,g1,g2,g3以及公開金鑰
22
-與 私 密 金 鑰 值 組α , β , y , z , 其 中 p=2q+1 , ,
-2、 服務者收到客戶身份驗證的要求,利用服務者所擁有的秘密資訊β
-資訊,客戶秘密資訊,以及通行碼的數位簽章(
c
,w
1,w
2,w
3)。‧ Verify(驗證數位簽章演算法):這個驗證數位簽章的演算法的輸 入是數位簽章( ),以及公開金鑰z,驗證的方法是計算
出 之後比對 ,如果
等號成立則輸出”有效”,否則輸出”無效”。
3 2
1, ,
,
w w w c
) mod ,
, , , , , , (
' h m p g
1g
2g
3y z g
1 1g
2 2g
3 3z p
c =
w w w cc
'=?c
我們假設客戶端的行動裝置擁有一個秘密資訊α而使用者知道可記憶 的通行碼π,而客戶擁有的秘密資訊是β’(我們前面提過,對應於公開金鑰 y以及z的私密金鑰β=H1(β’)),由於我們的目的是正確的客戶端與服務者 端秘密資訊配合正確的通行碼才能產生合法的數位簽章,因此在產生數位 簽章之前,客戶與服務者都必須確認對方的身份,在確認身份成功之後,
才會產生出我們的數位簽章,身份認證的方法有許多種,大多數的通行碼 身份驗證的協定是使用通行碼進行身份認證的動作,而我們的協定則是利 用對應秘密資訊以及通行碼的公開金鑰來做認證的動作。
在簽署數位簽章的演算法中,我們可以分為幾個階段來看,首先是客 戶要求確認服務者的身份,第二步則是服務者要求確認客戶的身份,第三 步在前面兩個步驟都執行正確無誤,也就代表客戶與服務者的身份都正 確,才會產生數位簽章。
在第一個步驟中,客戶如何確認服務者的身份呢?我們知道服務者所 擁有的秘密資訊是β’,也就是說,服務者擁有 ElGamal 加密系統中公開金 鑰y 的對應私密金鑰,因此我們在客戶端隨機選一個訊息並且利用公開金 鑰加密隨機選的訊息之後,交給服務者,如果服務者能解出正確的訊息,
那麼表示他是正確的服務者,如果不能,那麼服務者便無法證明他的身 份。在第二個步驟中服務者要求確認客戶的身份時,也是利用相同的概 念,不過不同的地方在於,正確的客戶端所擁有的秘密資訊與通行碼相對
25
-應的公開金鑰 z 還包含了服務者端的秘密資訊,所以我們在做這一個步驟