• 沒有找到結果。

考慮 Z modulo n 的情形, 若 r ∈ Z 和 n 互質且 ordn(r) =ϕ(n), 則稱 r 為 modulo n 之下 的一個 primitive root

N/A
N/A
Protected

Academic year: 2022

Share "考慮 Z modulo n 的情形, 若 r ∈ Z 和 n 互質且 ordn(r) =ϕ(n), 則稱 r 為 modulo n 之下 的一個 primitive root"

Copied!
5
0
0

加載中.... (立即查看全文)

全文

(1)

Diffie-Hellman Key Exchange and ElGamal Encryption 都是運用 public key 概念的系統.

兩者皆與尚無法有效解決 discrete logarithm 的這個數學問題掛鉤. 前者是一個密碼交換系 統, 而後者只是直接將此交換系統運用在加密上所得的密碼系統.

4.1. Primitive Roots and Discrete Logarithm. 在一般的 cyclic group 上都可以談論 其 discrete logarithm 的問題. 在這裡我們僅談論以前談過整數上 modulo 的概念所產生的 cyclic group. 以後我們會進一步談論密碼學常利用的 cyclic groups 上的 discrete logarithm problems.

考慮 Z modulo n 的情形, 若 r ∈ Z 和 n 互質且 ordn(r) =ϕ(n), 則稱 r 為 modulo n 之下 的一個 primitive root. 我們對 primitive element 有興趣主要是 S ={ri| i = 1,...,ϕ(n)} 這 個集合的ϕ(n) 個元素皆在 modulo n 之下是相異的 (否則若存在 i̸= j 使得 ri≡ rj (mod n) 會造成 ordn(r) <ϕ(n) 之矛盾), 而 ri 皆與 n 互質, 表示 S 是一個 reduced residue system modulo n (即 S 中的元素除以 n 的餘數恰為所有小於 n 且與 n 互質的正整數).

Example 4.1. 在 modulo 11 之下 2 是一個 primitive element. 下表是 2i 在 modulo 11 的 情形.

i 1 2 3 4 5 6 7 8 9 10 2i (mod 11) 2 4 8 5 10 9 7 3 6 1

我們發現第二行 (即 2i 那一行) 中這 10 (=ϕ(11)) 個數在 modulo 11 之下皆相異, 而且因 2 和 11 互質所以自然 2i 和 11 互質, 因此知 {2,22, . . . , 210} 是一個 reduced residue system modulo 11. 這代表的意義是每個和 11 互質的數 a, 都可以找到 1≤ i ≤ 10 使得 a ≡ 2i (mod 11).

這裡我們僅將 i 列到 10 的原因是因為 210≡ 1 (mod 11), 如果 i = 10h+r 其中 0 ≤ r ≤ 9, 則 2i≡ 2r (mod 11). 也就是每 10 次方一循環, 所以列出 10 次就夠了.

要注意並不是對所有的 n 在 modulo n 之下皆有 primitive root. 例如在 modulo 15 之 下, 所有和 15 互質的數 a 皆有 a4≡ 1 (mod 15), 因此由 Lemma 2.7 (1) 知 ord15(a)≤ 4 <

ϕ(15) = 8. 事實上 Primitive Root Theorem 告訴我們只有在 modulo n = 2, 4, pm, 2pm, 其中 p 為奇質數這些情況之下會有 primitive root, 其他的情況就不會有 primitive root. 另外在 上述的 n 中雖然 modulo n 之下 primitive 存在, 但其 primitive root 並不唯一. 這是因為若 r 為 modulo n 之下的 primitive root, 則 ordn(r) =ϕ(n). 然而 primitive root 在 modulo n 之下和某個 ri 同餘, 所以由 Lemma 2.7 (2), ordn(ri) =ϕ(n)/ gcd(i,ϕ(n)) 知 gcd(i,ϕ(n)) = 1.

也就是說當 1≤ i <ϕ(n) 且與 ϕ(n) 互質時, 這些 ri 都會是 modulo n 的 primitive root, 其他的都不會是. 所以此時在 modulo n 之下總共會有 ϕ(ϕ(n)) 個 primitive root. 例如 ϕ(11) = 10 而小於 10 的正整數與 10 互質的有 1, 3, 7, 9 共 4 個 (ϕ(10) = 4), 故在 modulo 11 之下,21, 23, 27, 29 皆為 primitive root. 利用 Example 4.1 的列表, 我們找到 modulo 11 的 所有 primitive roots 為 2, 8, 7, 6.

16

(2)

那些數會是 modulo n 之下的 primitive root 其實是會因 n 而改變的. 例如我們已 知 2 在 modulo 11 之下是 primitive root; 但在 modulo 7 之下由於 23 ≡ 1 (mod 7), 知 ord7(2) = 3̸= 6 =ϕ(7), 故 2 不是 primitive root. 事實上要找到 modulo n 的 primitive root 並不容易, 不過若找到一個 primitive root 就可利用前面所提的方法找到 modulo n 其他的 primitive root.

Primitive root 可以幫助我們處理 modulo n 之下開根號的問題. 例如要處理 x2≡ 5 (mod 11). 在 Example 4.1 中我們知道 5≡ 24 (mod 11). 我們可以假設 x2≡ 5 (mod 11) 的 一解為 x≡ 2t (mod 11), 因此得 22t ≡ 24 (mod 11). 由於在 modulo 11 之下 2 的次方每 10 次一循環, 所以得 2t≡ 4 (mod 10). 因此得 t = 2,7, 亦即 x ≡ 22= 4 (mod 11) 與 x≡ 27≡ 7 (mod 11) 是 x2≡ 5 (mod 11) 的兩個解. 不過這樣的處理方式在 n 夠大時就顯得不切實 際了. 主要是當已知 r 是 modulo n 之下的 primitive root, 給定 a 和 n 互質, 雖然存在 i 使得 ri≡ a (mod n); 不過這樣的 i 是很難找到的, 這個難題就是所謂的 discrete logarithm problem.

在 Diffie-Hellman Key Exchange 和 ElGamal Encryption 中所涉及的 discrete logarithm problem 是考慮 modulo p 其中 p 是很大的質數的情形. 此時給定 modulo p 之下的一 個 primitive root r, 若 a∈ Z 滿足 p - a, 我們要找到整數 x 滿足 1 ≤ x ≤ p − 1 使得 rx≡ a (mod p). 這樣的 x 稱為 discrete logarithm of y, with respect to r. 不過要注意, 這一切都是 在 modulo p 之下, 所以也會和 p 有關, 這樣的解我們用 Dplogr(a) 來表示. 之所以稱之為 discrete 主要是它和實數上的 logarithm 有很大的不同: 實數上的 logarithm 是連續的, 然 而這裡的 logarithm 是離散的. 例如在實數我們有 log28 = 3, 所以 log29 會略大於 3. 不過 在 Example 4.1 中, 我們有 D11log28 = 3 但 D11log29 = 6. 不過 discrete logarithm 仍保有 一般 logarithm 的性質 (即對數律). 我們有以下的性質.

Question 4.1. 假設 p 為質數且 r 為 modulo p 之下的一個 primitive root. 設 a, b 皆與 p 互 質且 m∈ Z. 證明以下性質.

(1) Dplogr(a· b) ≡ Dplogr(a) + Dplogr(b) (mod p− 1).

(2) Dplogp(am)≡ mDplogr(a) (mod p− 1).

(3) 若 r 亦為 modulo p 之下的一個 primitive root, 則

Dplogr(r)· Dplogr(r)≡ 1 (mod p − 1).

4.2. Diffie-Hellman Key Exchange. 在 symmetric 的密碼系統中, key 的保存及交換是 重要的課題, 因為只要 key 被他人知道了就很容易被解密了. Asymmetric 的系統由於計算 複雜, 不利於加密一般冗長的資訊, 所以常用於 key 的交換. Public key 的概念便是起源於 此.

4.2.1. 執行步 . 在 Diffie-Hellman Key Exchange 系統中大家都用同一個很大的質數 p 以 及同一個在 modulo p 之下的 primitive root r. 也就是說 p, r 是大家都知道的 public key.

現若 A 要和 B 用同一個 key 加密通訊, A 先隨機選取 a∈ {1,..., p − 1} 並計算 ra 在除以 p 後之餘數 kA (即 kA≡ ra (mod p)). 將 kA 傳輸給 B 且將 a 秘密收存, 也就是說 a 是 A 的 private key. B 也做同樣的動作, 即隨機選取 b∈ {1,..., p − 1} 並計算 rb 在除以 p 後之餘

(3)

數 kB. 也將 kB 傳輸給 A 且保存 private key b. 最後當 A (resp. B) 分別接到對方傳輸的 kB (resp. kA) 後, 便計算 (kB)a (resp. (kA)b) 在除以 p 之下的餘數, 這便是 A, B 兩人共同的 key.

4.2.2. 正確性. Diffie-Hellman Key Exchange 並不是一個加密系統. 這裡的正確性, 我們要 說明的是 A 和 B 最後計算的 key 會是同一個數. 也就是說 A 計算 (kB)a 除以 p 的餘數 會和 B 計算 (kA)b 除以 p 的餘數相同. 這是因為 (kB)a≡ (rb)a (mod p), 而 (kA)b≡ (ra)b (mod p), 故由 (rb)a= ra·b= (ra)b 得證 (kB)a≡ (kA)b (mod p).

4.2.3. 效率性. 在 Diffie-Hellman Key Exchange 中每一個人須做兩次 exponentiation (升 到某一次方的運算), 不過其中一次是可以事前計算好的, 即 A 可以事先計算好 kA, 即 ra 在 modulo p 的情況. 比較要注意時效性的是 A 要計算 (kB)a 在 modulo p 的值. 這 裡雖然可以用 repeated-squaring 的方法. 不過和 RSA 比較起來, RSA 可以用 Chinese remainder theorem 增加計算的效率, 但 Diffie-Hellman Key Exchange 就沒有這個好處 (因 為只 modulo 一個質數).

4.2.4. 安全性. Diffie-Hellman Key Exchange 的重點是, 它不需要在一個機密的環境下進行 key 的傳輸. 甚至 A 可以公布他的 kA, 任何人, 例如 B 要和 A 共用 key 加密傳輸資料, 可 以傳輸 kB 給 A (或甚至公布他的 kB) 就可以和 A 共用一個 key 加密. 也就是說, 即使我們 知道 kA 和 kB 仍很難知道 (kA)b≡ (kB)a (mod p). 因為我們不知道 A, B 他們的 private key a, b.

由已知的 kA 和 kB 來求出在 modulo p 之下 (kA)b (也是 (kB)a) 之值, 這樣的問題稱為 Diffie-Hellman problem. 若我們能解出 rx≡ kA (mod p) 這一個 discrete logarithm problem 就能另用其解 x = a 得到 (kB)a. 也就是說, 解決 discrete logarithm problem 就能解決 Diffie-Hellman problem. 到目前為止還沒有人知道除了用 discrete logarithm 的方法外是否 有其他的方法處理 Diffie-Hellman problem. 不過由於目前仍無證明: 解決 Diffie-Hellman problem 就能解決 discrete logarithm problem, 所以目前尚無法確定 Diffie-Hellman problem 和 discrete logarithm problem 是否為等價的. 這個能否確保 Diffie-Hellman key exchange 相對安全性的問題, 仍是密碼學中一個重要的課題.

4.2.5. 注意事項. 由於有些特定的質數上的 discrete logarithm problem 是可以有效地用演 算法求出, 所以在 Diffie-Hellman Key Exchange 最好選擇質數的方式仍是隨機的選取夠大 的質數 p. 至於 primitive root 要升的次數 (即 private key) 也要隨機在 {1,..., p − 1} 中選 取.

Diffie-Hellman Key Exchange 另外要注意的是 C 選擇了 c∈ {1,..., p−1} 計算了 kC≡ rc (mod p) 而假冒 B 寄了 kC 給 A. 若 A 不察將要傳輸給 B 的資訊用 kA, kC 共同的 key (即 (kC)a) 加密傳輸出去, 此時 C 由於可計算 (kA)c≡ (kC)a (mod p) 就可以知道裡面的資訊了.

我們可以用 digital signature 來避免這種惡意的攻擊. 關於 digital signature 我們以後會進 一步探討.

(4)

4.3. ElGamal Encryption. 接下來我們要介紹的密碼系統 ElGamal Encryption System 就是利用 Diffie-Hellman Key Exchange 結合 Linear Encryption System 所得到的密碼系 統. 簡單來說就是利用 Diffie-Hellman Key Exchange 所得共同的 key k 用 linear encryption function Ek(m) = k· m 加密.

4.3.1. 執行步 . 首先如 Diffie-Hellman Key Exchange 系統中隨機選很大的質數 p 以及 在 modulo p 之下的 primitive root r. 接著隨機選 a∈ {1,..., p − 1} 然後計算 kA 為 ramodulo p 之下的餘數, 即 kA ≡ ra (mod p). 最後公布 (p, r, kA) 為 public key (a 是保持 祕密的 private key). 任何知道此組 public key 的人就可用以下的加密法將 plaintext m 加密傳輸過去. 首先隨機選取 b∈ {1,..., p − 1}, 再計算 kB 為 rb 在 modulo p 之下的餘 數. 接著計算 (kA)b 除以 p 之下的餘數 k (即 k≡ (kA)b (mod p)) 再將 plaintext m (需滿足 0≤ m < p − 1) 利用 encryption function Ek(m) = k· m 求出 Ek(m) 除以 p 之下的餘數 c (即 c≡ k · m (mod p)). 最後傳輸出去的 ciphertext 為 (kB, c).

當收到 (kB, c) 後, 首先利用 private key a 以及 kB 求出共同的 key k 為 kaB 在除以 p 之下 的餘數, 接著利用輾轉相除法求出 k 滿足 k· k≡ 1 (mod p). 最後計算 k· c 在除以 p 之下 的餘數, 即為 m.

4.3.2. 正確性. ElGamal 系統基本上是利用 linear map Ek(m) = k· m 在 modulo p 的情況.

由於這裡 k 基本上是 p 的 primitive root r 升到 a· b 次方所得, 而 r 與 p 互質, 故知 k 與 p 互質. 因此 Ek:M → C 確為一對一函數.

接下來我們說明, 若 k 滿足 (kB)a· k≡ 1 (mod p), 則 k· c ≡ m (mod p). 依加密的方法, 我們有 c≡ (kA)b· m (mod p), 故得

k· c ≡ k· ((kA)b· m) ≡ k· ((ra)b· m) ≡ (k· (rb)a)· m ≡ (k· (kB)a)· m ≡ m (mod p).

4.3.3. 效率性. 在 ElGamal 系統中, 接收資訊者在公布 public key 時需計算 kA, 即 ra 這一 個 exponentiation, 不過這可事先計算好. 有時效性的是接收到 kB 後要計算 (kB)a modulo p. 這個計算和 Diffie-Hellman Key Exchange 一樣, 比起 RSA 較花費時間. 最後計算 k 在 modulo p 之下的 inverse k 可用輾轉相除法處理, 而計算 k· m modulo p, 僅用到一次的乘 法. 相對上並無增加太大的計算量. 所以解密這個部分 RSA 執行效率相對較高.

至於加密部分, 和 Diffie-Hellman Key Exchange 一樣要做兩次 exponentiations rb 以及 (kA)b modulo p. 再加上一次乘法 k· m, 所以加密這個部分也是 RSA 執行效率相對較高.

另外 ElGamal 系統中要傳輸的 ciphertext (kB, c) 的長度是原來 plaintext m 的兩倍, 這 也是此系統較浪費資源的另一缺點.

4.3.4. 安全性. 我們將證明破解 ElGamal 系統和破解 Diffie-Hellman Key Exchange 是等價 的. 也因此能解決 discrete logarithm 問題便能破解 ElGamal System, 不過到目前為止並不 知破解 Elgamal System 是否表示能解決 discrete logarithm 問題.

假設有破解 Diffie-Hellman Key Exchange 的方法, 也就是說輸入質數 p, 及其 primitive root r, 和 kA, kb 便可解得 k. 現若在 ElGamal 系統中 A 的 public key 為 (p, r, kA), 而 B 發

(5)

送給 A 的 ciphertext 為 (kB, c), 則由於我們可算出 k, 且 c≡ k · m (mod p), 故只要解得 k 滿足 k· k ≡ 1 (mod p) 就可破解得 kc≡ k(k· m) ≡ m (mod p).

反之, 假設有破解 ElGamal 系統的方法, 即對任意的 public key (p, r, kA) 以及利用 plaintext m 所得的 ciphertext (kB, c), 我們都可解出 m. 現給定質數 p 以及其 primitive root, 對任意 kA, kB, 我們可定出 public key (p, r, kA) 並考慮 ciphertext (kB, 1) (即令 c = 1), 並利用可破解 ElGamal 系統的假設解出 m. 然而由於 k· m ≡ c = 1 (mod p), 故解得 k 為 1, . . . , p− 1 中唯一滿足 k · m ≡ 1 (mod p) 的數.

4.3.5. 注意事項. Elgamal 系統要注意的事項和 Diffie-Hellman Key Exchange 相同. 另外 要注意的是, 由於 ElGamal 系統用的 encryption function 是 linear map, 若常用同樣的 key 容易用過去提過的一些破解方法破解. 所以當 B 每次要傳送資料給 A 時不要為圖得方便 每次都選取同樣的 b, 以避免 encryption function 都用同樣的 key, 容易遭到破解.

參考文獻

相關文件

我建設佛光山之初,有一位國際的航運大王,發跡得比長榮集 團的張榮發早,也比香港海運大王董建華更早,他就是居住在美國

其實這個實習和專業上的相比是非常簡單的,主要的目的只是為了看 UA741 的 反應而已,但也因為很單純,所以接電路之前,請先將所有儀器設備包含

以下簡單介紹魔術三角形: 如圖 1, 若三角形每邊有 三個數且數字和都是定值, 稱為 3 階 (傳統) 魔術三角形; 如圖 2, 若每邊有三 個數且較大兩數和減最小數的差都是定值, 稱為

魔方陣是兩千多年前發現的數字方陣。 一個 n 階魔方陣的定義是把由 1開始的連續整數排 列成 一個方陣, 陣中每一橫排每一縱列及兩條對角線上 n 個數字之和均相同。 把一個魔方陣旋

Turnbull, Theory of Equations, Oliver and Boyd, Edinburgh and London, 1947.. —

不過若 一個 group 有上述這個性質我們就多給它一個名字稱之為 abelian group;而不符 合這性質的 group 就稱為 nonabelian group..

在 modulo p 時, 有一件事是很特殊的即 Theorem 4.1.3 告訴我們一個 n 次的整係數多項 式在 modulo p 之下最多有 n

由於 A 為方陣, 其 row 的個數和 column 的個數皆為 n, 此時很自然地可以將 Theorem 3.4.2 和 Theorem 3.4.6 相連結得到 invertible