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′),其中𝐸𝐸 ≠ 𝐸𝐸′。
則𝒮𝒮可以計算𝑥𝑥 = (𝑠𝑠 − 𝑠𝑠′)/(𝐸𝐸 − 𝐸𝐸′) 𝑚𝑚𝑚𝑚𝑑𝑑 𝑞𝑞。
如果ℱ在多項式時間內執行,且有不可忽略的機率會成功的話,則𝒮𝒮也會有不可
忽略的機率成功,因此破解離散對數問題,但此結果和前提矛盾,因此攻擊者ℱ不
存在。