• 沒有找到結果。

數學符號與假設

第三章 使用通行碼的數位簽章協定

第一節 數學符號與假設

在執行這個協定時,有兩個主要的角色,分別是服務者(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 ≡1mod

p

,

x

Zp*}) , Gp,qZp*

下 的 二 次 剩 餘 (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

R

G

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

1

g

2

g

3

y z g

1 1

g

2 2

g

3 3

z p

c =

w w w c

c

'=?

c

我們假設客戶端的行動裝置擁有一個秘密資訊α而使用者知道可記憶 的通行碼π,而客戶擁有的秘密資訊是β’(我們前面提過,對應於公開金鑰 y以及z的私密金鑰β=H1(β’)),由於我們的目的是正確的客戶端與服務者 端秘密資訊配合正確的通行碼才能產生合法的數位簽章,因此在產生數位 簽章之前,客戶與服務者都必須確認對方的身份,在確認身份成功之後,

才會產生出我們的數位簽章,身份認證的方法有許多種,大多數的通行碼 身份驗證的協定是使用通行碼進行身份認證的動作,而我們的協定則是利 用對應秘密資訊以及通行碼的公開金鑰來做認證的動作。

在簽署數位簽章的演算法中,我們可以分為幾個階段來看,首先是客 戶要求確認服務者的身份,第二步則是服務者要求確認客戶的身份,第三 步在前面兩個步驟都執行正確無誤,也就代表客戶與服務者的身份都正 確,才會產生數位簽章。

在第一個步驟中,客戶如何確認服務者的身份呢?我們知道服務者所 擁有的秘密資訊是β’,也就是說,服務者擁有 ElGamal 加密系統中公開金y 的對應私密金鑰,因此我們在客戶端隨機選一個訊息並且利用公開金 鑰加密隨機選的訊息之後,交給服務者,如果服務者能解出正確的訊息,

那麼表示他是正確的服務者,如果不能,那麼服務者便無法證明他的身 份。在第二個步驟中服務者要求確認客戶的身份時,也是利用相同的概 念,不過不同的地方在於,正確的客戶端所擁有的秘密資訊與通行碼相對

25

-應的公開金鑰 z 還包含了服務者端的秘密資訊,所以我們在做這一個步驟

27

相關文件