• 沒有找到結果。

2. 背景知識

2.3. Schnorr 協議

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

12

DOI:10.6814/THE.NCCU.CS.021.2018.B02

圖 4:隱式憑證之安全模型 安全性

在[2]中提出可證明安全性之隱式憑證機制,並提出安全性證明,因此我們可以得到 下兩個理論。

理論 1 [2]在 Random Oracle Model 下,如果離散對數問題在⟨𝔾𝔾⟩下是難解的,則 ECQV 機制為安全的隱式憑證生成機制

2.3. Schnorr 協議

2.3.1. Schnorr

身分驗證協議

(Schnorr Identification Protocol)

Schnorr 身分驗證協議[19]裡面需要一個金鑰鑑別中心(Key Authentication Center , KAC),詳細流程如下

初始階段:KAC 需選定以下參數

(1) 兩個質數 𝑝𝑝 , 𝑞𝑞,且𝑝𝑝 ≥ 2512, 𝑞𝑞 ≥ 2140, 𝑞𝑞|(𝑝𝑝 − 1) (2) 𝛼𝛼𝑞𝑞 ∈ ℤ𝑝𝑝,也就是 𝛼𝛼𝑞𝑞 = 1 (mod p),且 α ≠ 1 (3) 單向雜湊函數 ℎ: ℤ𝑝𝑝× ℤ → {0, … , 2𝑡𝑡− 1}

(4) KAC 的公私鑰對

(5) KAC 會將 𝑝𝑝 , 𝑞𝑞, 𝛼𝛼, ℎ 和公鑰公開

註冊階段:使用者擁有公私鑰對 (𝑠𝑠, 𝑣𝑣), 𝑣𝑣 = 𝛼𝛼𝑠𝑠(𝑚𝑚𝑚𝑚𝑑𝑑 𝑝𝑝)向 KAC 進行註冊,

KAC 辨別身分後,會產生識別碼 𝐼𝐼,以及對識別碼 𝐼𝐼以及使用者公鑰 𝑣𝑣 簽署 的簽章 𝑆𝑆。並將 𝐼𝐼 以及 𝑆𝑆 回傳給使用者。

鑑別階段:使用者欲向驗證者證明自己的身分,如圖 5 所示。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

13

DOI:10.6814/THE.NCCU.CS.021.2018.B02

(1) 使 用者 選 定一 隨機 亂數𝑟𝑟 ∈𝑅𝑅 [1, … , 𝑞𝑞 − 1],並計算𝑥𝑥 = 𝛼𝛼𝑟𝑟(𝑚𝑚𝑚𝑚𝑑𝑑 𝑝𝑝),將 𝐼𝐼, 𝑣𝑣, 𝑆𝑆, 𝑥𝑥 傳送給驗證者。

(2) 驗證者驗證簽章𝑆𝑆後,選一隨機亂數𝑠𝑠 ∈𝑅𝑅 [1, … , 2𝑡𝑡− 1],將 𝑠𝑠 傳送給使用 者。

(3) 使用者接收到𝑠𝑠之後,計算𝑦𝑦 = 𝑟𝑟 + 𝑠𝑠𝑠𝑠(𝑚𝑚𝑚𝑚𝑑𝑑 𝑞𝑞),將𝑦𝑦傳送給驗證者。

(4) 驗證者驗證𝑥𝑥 == 𝛼𝛼𝑦𝑦𝑣𝑣𝑒𝑒是否成立,成立則驗證通過。[𝑥𝑥 = 𝛼𝛼𝑟𝑟(𝑚𝑚𝑚𝑚𝑑𝑑 𝑝𝑝),

𝛼𝛼𝑦𝑦𝑣𝑣𝑒𝑒 = 𝛼𝛼𝑟𝑟+𝑠𝑠𝑒𝑒𝛼𝛼𝑠𝑠𝑒𝑒 = 𝛼𝛼𝑟𝑟(𝑚𝑚𝑚𝑚𝑑𝑑 𝑝𝑝)]。

圖 5:Schnorr 身分驗證協議

Schnorr 身分驗證協議為零知識證明的一種,利用只有自己擁有的參數以

及對方回傳的參數𝑠𝑠作為驗證根據,即可在不洩漏自己私鑰的情況下,讓對方

相信自己擁有相應的私鑰。

2.3.2. Schnorr 簽名

協議

(Schnorr Signature Protocol)

Schnorr 簽名協議[19][20]和上述 Schnorr 身分驗證協議相似,但不需先向 KAC 註 冊,而是使用者本身的公私鑰去進行簽章的動作。Schnorr 簽名協議同樣為零知識 證明的一種,利用雜湊值作為驗證根據,即可在不洩漏自己私鑰的情況下,讓對方 驗證簽章,確認訊息的正確性。詳細流程如下。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

14

DOI:10.6814/THE.NCCU.CS.021.2018.B02

圖 6:Schnorr 簽名協議

初始階段:使用者需要選定以下參數,並將(𝑔𝑔, 𝑞𝑞, 𝐻𝐻, 𝑦𝑦)公開 (1) 選擇一個群:𝔾𝔾(ℤ𝑞𝑞,∗),⟨𝔾𝔾⟩ = 𝑔𝑔。

(2) 單向雜湊函數:𝐻𝐻: {0,1} ∗× 𝔾𝔾 → ℤ𝑞𝑞。 (3) 產生公私鑰對:𝑆𝑆𝐾𝐾 : 𝑥𝑥 ∈ ℤ𝑞𝑞 , 𝑃𝑃𝐾𝐾 : 𝑦𝑦 = 𝑔𝑔𝑥𝑥

簽章階段:使用者欲將訊息𝑚𝑚 ∈ {0,1}傳送給驗證者,並對訊息𝑚𝑚進行簽章,證 明訊息𝑚𝑚為使用者所傳送,且未被更改。則使用者會進行以下步驟

(1) 選擇一隨機亂數𝑎𝑎 ∈𝑅𝑅 [1, … , 𝑞𝑞 − 1],並計算𝑟𝑟 = 𝑔𝑔𝑎𝑎(𝑚𝑚𝑚𝑚𝑑𝑑 𝑝𝑝)。

(2) 計算 𝐸𝐸 = 𝐻𝐻(𝑚𝑚, 𝑟𝑟),將訊息𝑚𝑚和亂數𝑟𝑟丟入雜湊函數中產生𝐸𝐸,𝐸𝐸為簽章驗證 的依據。

(3) 計算 𝑠𝑠 = 𝑎𝑎 + 𝐸𝐸𝑥𝑥(𝑚𝑚𝑚𝑚𝑑𝑑 𝑞𝑞)。

(4) 將訊息𝑚𝑚及簽章(𝑠𝑠, 𝐸𝐸)傳送給驗證者。

驗證階段:驗證者接收到簽章後,即可執行以下動作確認簽章是否正確 (1) 計算 𝑟𝑟= 𝑔𝑔𝑠𝑠𝑦𝑦−𝑐𝑐

(2) 計算 𝐸𝐸′ = 𝐻𝐻(𝑚𝑚, 𝑟𝑟′)。

(3) 確認 c == 𝐸𝐸′ 是否成立,若成立則表示簽章正確,訊息𝑚𝑚為使用者傳送且 未被竄改。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

15

DOI:10.6814/THE.NCCU.CS.021.2018.B02

2.3.3. 安全性

叉分引理 (Forking lemma)

叉分引理:若有一攻擊者(隨機機率圖靈機)從任一種分布中選取一個值作為輸入,

且輸出具有某種特性,則當我們以相同的分布不同輸入的值再次執行這個攻擊者時,

輸出也具有該特性[21][22]。

叉分引理通常用於簽章的安全性證明中,底下以一個基本的簽章模式為例。假

設𝒜𝒜為一個隨機機率多項式時間的圖靈機,輸入為所有簽章系統中的公開參數及資

料,若𝒜𝒜有不可忽略的機率可以找到一個合法的簽章(𝑚𝑚, 𝜎𝜎1, ℎ, 𝜎𝜎2),則當我們以相 同的參數再次執行這個圖靈機時,有不可忽略的機率我們可以找到第二個合法的簽 章(𝑚𝑚, 𝜎𝜎1, ℎ, 𝜎𝜎2′),其中ℎ ≠ ℎ

圖 7:分叉引理[23]

安全性證明 定義 2.3.3.1 [24]

定義有一偽造者ℱ,是一個機率圖靈機,會在𝐶𝐶𝐹𝐹時間內將訊息𝑚𝑚和簽章的公開參數 作為輸入, ℱ最多可以詢問𝑞𝑞次,且ℱ有至少εF的機率會輸出合法的簽章(𝑠𝑠, 𝐸𝐸),則 (𝐶𝐶𝐹𝐹, 𝑞𝑞, 𝜀𝜀𝐹𝐹)-偽造者 ℱ為成功的偽造者。

理論 2.3.3.1[24]

假設有一個(𝐶𝐶𝐹𝐹, 𝑞𝑞, 𝜀𝜀𝐹𝐹)-偽造者ℱ,可以在隨機預言模型下(Random Oracle Model)下 破解在群(𝔾𝔾, 𝑞𝑞, 𝑝𝑝)下的 Schnorr 簽章架構,再假設𝜀𝜀𝐹𝐹 ≥ 𝑚𝑚𝑎𝑎𝑥𝑥(𝑞𝑞+12 ,16𝑞𝑞𝑞𝑞)。則有一個

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

16

DOI:10.6814/THE.NCCU.CS.021.2018.B02

(𝐶𝐶𝑅𝑅, 𝜀𝜀𝑅𝑅)𝒮𝒮可以破解在相同群下的離散對數問題,其中𝐶𝐶𝑅𝑅 ≅ (16𝑞𝑞+ 2)𝐶𝐶𝐹𝐹/𝜀𝜀𝐹𝐹,𝜀𝜀𝑅𝑅 >

0.099。

證明[24]

𝒮𝒮的輸入為𝑦𝑦 ∈ 𝔾𝔾, 輸出為𝑦𝑦的離散對數解。首先固定一不定長度的訊息𝑚𝑚 ∈ {0,1}, 接著分成兩個階段執行

(1) 𝒮𝒮的公鑰y = gx,並隨機選擇一個隨機紙帶(random tape)ω,將𝑚𝑚、 𝑦𝑦以及 ω作為ℱ的輸入值。ℱ會一直重複執行,直到輸出正確的偽造值(ℓ, s, c),其 中ℓ ∈ [1, … , 𝑞𝑞],最多執行N1次。

(2) ℱ會以相同的y、ω以及相同的前ℓ − 1詢問值(c1, … , cℓ−1)和不同的詢問值 (c, … , cqh)再重新執行,ℱ會一直重複執行,直到輸出正確的偽造值 (ℓ, s′, c′),其中𝐸𝐸 ≠ 𝐸𝐸′。

則𝒮𝒮可以計算𝑥𝑥 = (𝑠𝑠 − 𝑠𝑠′)/(𝐸𝐸 − 𝐸𝐸′) 𝑚𝑚𝑚𝑚𝑑𝑑 𝑞𝑞。

如果ℱ在多項式時間內執行,且有不可忽略的機率會成功的話,則𝒮𝒮也會有不可

忽略的機率成功,因此破解離散對數問題,但此結果和前提矛盾,因此攻擊者ℱ不

存在。

相關文件