0822562ccb753c0902adf5f49c3d64bf.ppt
- Количество слайдов: 49
公開金鑰密碼系統 Public Key Cryptosystem Plaintext 明文 → ↖ Public key ▽ Encrypt 加密 ↘ Decrypt 解密 ← Ciphertext 密文 △ Private key 最廣泛使用的 PKC: RSA (Rivest – Shamir – Adleman 1977) 逐漸受重視的 PKC: ECC (橢圓曲線 Elliptic Curve Cryptosystem) 2018/3/19 1
私密金鑰 與 公開金鑰 私密金鑰 Private Key 容易計算 非常困難 公開金鑰 Public Key 藉由數學 具達成此目的 2018/3/19 2
RSA方法 l l RSA加密演算法 是一種 非對稱加密演算法, 在 1977年 由 Ron Rivest、 Shamir與 Leonard Adleman一起提出 Adi 的。當時他們三人都在麻省理 學院 作。 RSA就是他 們三人姓氏開頭字母拼在一起組成的。 如果你想和別人祕密通訊,那麼你可以先選定兩個非 常巨大的質數 p, q作為 私鑰 ( private key,解密用的),然 後將 p, q的乘積作為加密用的 公鑰 (public key),你可以 把公開鑰匙公佈出去。別人要傳一封密函給你,他必 需要先得到你的公鑰,按照一個約定的方法將信件加 密後送出。你在收到密函後,再用你的私鑰就可以解 出密函原文。 RSA演算法的可靠性基於分解極大的整數是很困難的。 假如有人找到一種很快的分解因子的演算法的話,那 麼用 RSA加密的資訊的可靠性就肯定會極度下降。但 找到這樣的演算法的可能性是非常小的。 今天只有短的 RSA鑰匙才可能被強力方式解破。到 2008年為止,世界上還沒有任何可靠的攻擊 RSA演算 法的方式。只要其鑰匙的長度足夠長,用 RSA加密的資 3 訊實際上是不能被解破的。
Definition • For n 1, (n) --- 小於或等於 n且跟互質 n 的正整數個數. • (1)=1, (2)=1, (3)=2, (4)=2, (5)=4, (6)=2, (7)=6, (8)=5 • (n)= n -1 if and only if n is prime.
Theorem • If the integer n>1 has the prime factorization n=p 1 k 1 p 2 k 2…prkr, then
Theorem (Euler) • 給定正整數 n與整數 a且 gcd (a, n)=1, 則 a (n) 1 (mod n). • Fermat’s little theorem: • 令為 p質數且 a與 p互質 , 則 ap-1 1(mod p).
Example • Find the last two digits of 3256 • 100=22 52 • (100)=100(1 -1/2)(1 -1/5)=40 • 340 1 (mod 100) • 3256 (340)6 316 (mod 100) • 316 814 (-19)4 3612 21 (mod 100)
RSA方法 l l l Alice隨意選擇兩個大的相異 質數 p和 q,並計算出 n=pq。 任選擇一個小於 (p-1)(q-1)且與 (p-1)(q-1)互質的整數 E, 並計算出 d使得 Ed ≡ 1 (mod (p-1)(q-1)) 。 n和 E是公鑰 ,公開給大眾的。 d是私鑰 ,只有Alice 知道 。 假設 Bob想給 Alice送一個隱密的消息 M,他先將 M轉 換為一個比 較 小 的整數 P (必須小 於 n且與 n互質 ) ,比 如他可以將每一個字轉換為這個字的 unicode碼,然後 將這些數字連在一起組成一個數字。假如他的資訊非 常長的話,他可以將這個資訊分為幾段,然後將每一 段轉換為 P。 利用公鑰 N和 E及 PE C(mod n)這個式子將 P加密為 C。 Bob算出 C後就可以將它傳遞給 Alice。 Alice得到 Bob的訊息 C後就可以利用她的 私鑰 d及式子 Cd P (mod n)來解碼還原成 P。 8
如何產生公鑰 E和私鑰 d l l l Ø Ø Alice隨意選擇兩個大的相異 質數 p和 q,並計算出 n=pq。 任選擇一個小於 (p-1)(q-1)且與 (p-1)(q-1)互質的整數 E, 並計算出 d使得 Ed ≡ 1 (mod (p-1)(q-1)) 。 n和 E是公鑰 ,公開給大眾的。 d是私鑰 ,只有Alice 知道 。 依需求找出兩相異質數 。假設是 p=47, q=59 則 n=pq=47 * 59=2773 且 b=(p-1)(q-1)=2668 從與與 b互質的整數中依需求找出 E,假設找出的 E = 157 求出 Ex 1(mod b)的解。最小正整數解即為私鑰 d = 17。 9
加密 假設 Bob想給 Alice送一個隱密的消息 M,他先將 M轉換為 一個小於 n的整數 P。 利用公鑰 N和 E及 PE C(mod n)這個式 子將 P加密為 C。 Øn=pq=47 * 59=2773 且 E = 157 Ø 假設 Bob想給 Alice送一個隱密的消息 M=3。此時 P=M=3 PE 3157 (9)78 · 3 (mod 2773) (81)39 · 3 (mod 2773) (6561)19 · 81· 3 (mod 2773) (1015)19 · 81· 3 (mod 2773) (1030225)9 · 1015· 81· 3 (mod 2773) (1442)9 · 1015· 81· 3 (mod 2773) 441 (mod 2773) 10
解密 l l l Bob利用公鑰 N和 E及 PE C(mod n)這個式子將 P 加密為 C。 Alice如何還原出 P。 n為兩個相異 質數 p和 q的乘積 ,E為小於且互 質於 b=(p-1)(q-1)的整數 。 找出 Ex 1(mod b)的解。最小正整數解即為私鑰 d,所以 Ed = kb+1。 尤拉定理 (Euler Theorem)告訴我們對所有與 n 互質的正整數 a皆有 ab 1 (mod n). 所以 Cd (PE)d PEd Pkb+1 P (mod n) 11
RSA方法 l l l Alice隨意選擇兩個大的相異 質數 p和 q,並計算出 n=pq。 任選擇一個小於 (p-1)(q-1)且與 (p-1)(q-1)互質的整數 E, 並計算出 d使得 Ed ≡ 1 (mod (p-1)(q-1)) 。 n和 E是公鑰 , Alice將它們公開給大眾。 d是私鑰 ,只有 Alice 知道 。 Bob將隱密的消息 M分為幾段使得每段皆為 比較小的 整數 P (必須小於 n且與 n互質 )。然後他利用 PE C(mod n)這個式子將 P加密為 C。 Bob算出 C後就可以將它傳遞給 Alice。 Alice得到 Bob的訊息 C後就可以利用她的 私鑰 d及式子 Cd P (mod n)解碼。 12
Example l Ø Ø Ø Alice找出兩相異質數 p=29, q=41 則 n=pq=29 * 41=1189 且 b=(p-1)(q-1)=1120 從與與 b互質的整數中依需求找出 E = 101 求出 Ex 1(mod b)的解。最小正整數解即為私鑰 d = 621。 假設 Bob想給 Alice送一個隱密的消息 M=90。此時 P=M=90 他利用 PE C(mod n)這個式子將 P加密為 C。 13
Example Ø 他利用 PE C(mod n)這個式子將 P加密為 C=582。 90101 (902)50 · 90 (mod 1189) (9662)25 · 90 (mod 1189) (9802)12 · 980· 90 (mod 1189) 582 (mod 1189) 14
Example l Ø Ø Ø Alice找出兩相異質數 p=29, q=41 則 n=pq=29 * 41=1189 且 b=(p-1)(q-1)=1120 從與與 b互質的整數中依需求找出 E = 101 求出 Ex 1(mod b)的解。最小正整數解即為私鑰 d = 621。 假設 Bob想給 Alice送一個隱密的消息 M=90。此時 P=M=90 他利用 PE C(mod n)這個式子將 P加密為 C=582 。 Alice得到 Bob的訊息 C=582後就可以利用她的 私鑰 d = 621及式子 Cd P (mod n)解碼。 15
Example Ø Alice得到 Bob的訊息 C=582後就可以利用她的 私鑰 d = 621及式子 Cd P (mod n)解碼。 582621 (5822)310 · 582 (mod 1189) (10482)155 · 582 (mod 1189) (8572)77 · 857· 582 (mod 1189) 90 (mod 1189) 16
RSA 的安全性 l 分解 (Factoring): n 分解成兩個質數, 就能計算 (n) 及 d=e-1 mod (n). l 因此, 破 RSA 不會比 integer factoring (整數 分解) 難. l 然而, 要分解一個 160 -digit 的數並不容易 l 如果能將 17
l 暴力法 l l 試所有的 private keys 需要 O(d) 的時間 因此 d 應該要夠大, 例如 >sqrt(n) Mathematical attacks: l l 分析 n 的結構找 p 和 q 選擇好的質數(強質數) p-1 和 q-1 要有大的質因數 l gcd(p-1, q-1) 要小 l … l 18
Example Alice利用 RSA依代碼 a=00, b=01, …, z=25將明文字母各自轉換成數字後使用 公鑰 (n=1073, e=605)編碼得 (18, 0, 316) 並傳給 Bob。請問 (1)Alice所使用的質數 p, q為何 ? (2)密鑰 d為何 ? (3)傳送的訊息為何 ? 1. 19
(n=1073, e=605)編碼得 C=(18, 0, 316) l l l l n=1073=37 29 p=37, q=29 b= (n)=(37 -1) (29 -1)=1008=605+403 605=403+202 403=202+201 202=201+1 1=202 -201=202 2 -403=605 2 -403 3 =605 5 -1008 3 d=5 20
(n=1073, e=605)編碼得 C=(18, 0, 316) l l l n=1073=37 29 p=37, q=29 d=5 185 5832 182 (mod 1073) 467 182 (mod 1073) l 15 (mod 1073) 3165 795 210 (mod 1073) l 18 (mod 1073) (15, 0, 18) PASS 21
數位簽章 * 秘密性 (confidentiality) * 完整性 (Integrity) 2018/3/19 Digital Signature * 身份鑑別性 (Authentication) * 不可否認性 (Non-Repudiation) 22
數位簽章 Ø 當收到具有數位簽章的訊息時,接收者可以利用簽章來得知 傳送者的身分,進而確認訊息的內容是否已遭到竄改。 Ø 由於數位簽章具有不可否認的特性,所以若使用者在訊息上 使用了數位簽章,便無法逃避曾經撰寫過此訊息的事實。 Ø 數位簽章在數位訊息中扮演著鑑別的角色,它可以讓接收者 對於訊息的來源及其完整性更有信心。
RSA簽章 1. 選擇兩個大質數 p , q 2. 計算 n = p×q 3. 計算 ψ(n)=(p-1)×(q-1) 4. 找出一組數值 e×d≡ 1 mod ψ(n) 5. 將 (e, n)公開、其他數值保持秘密
RSA簽章 1. 選擇兩個大質數 p , q 2. 計算 n = p×q 3. 計算 ψ(n)=(p-1)×(q-1) 4. 找出一組數值 e×d≡ 1 mod ψ(n) 5. 將 (e, n)公開、其他數值保持秘密 6. 此時任何人交付明文 m要求簽章
RSA簽章 6. 此時任何人交付明文 m要求簽章 7. 用秘密的 d 值,就可簽署明文為 s = m d mod n
RSA簽章 7. 用秘密的 d 值,就可簽署明文為 s = m d mod n 8. 用公開的 (e, n),即可驗證簽章 s e mod n = (m d)e mod n = m
RSA簽章 1. 選擇兩個大質數 p , q 2. 計算 n = p×q 3. 計算 ψ(n)=(p-1)×(q-1) 4. 找出一組數值 e×d≡ 1 mod ψ(n) 5. 將 (e, n)公開、其他數值保持秘密 6. 此時任何人交付明文 m要求簽章 7. 用秘密的 d 值,就可簽署明文為 s = m d mod n 8. 用公開的 (e, n),即可驗證簽章 s e mod n = (m d)e mod n = m
RSA簽章 1. 選擇兩個大質數 p , q 所謂簽章就是 證明你是你, 而如果能做出 一件事是只有 你做得出來, 那就是最好的 證明,而這個 過程正是如此 2. 計算 n = p×q 3. 計算 ψ(n)=(p-1)×(q-1) 4. 找出一組數值 e×d≡ 1 mod ψ(n) 5. 將 (e, n)公開、其他數值保持秘密 6. 此時任何人交付明文 m要求簽章 7. 用秘密的 d 值,就可簽署明文為 s = m d mod n 8. 用公開的 (e, n),即可驗證簽章 s e mod n = (m d)e mod n = m
RSA簽章的實例 1. 選擇 p = 622354832383 q = 38895514943 2. 計算 n =24206811682801236799169 3. 計算 ψ(n)=24206811682139986451844 4. 找出一組數值 e×d≡ 1 mod ψ(n) e=31, d=19521622324306440686971 5. 將 (e, n)公開、其他數值保持秘密
RSA簽章的實例 1. 選擇 p = 622354832383 q = 38895514943 2. 計算 n =24206811682801236799169 3. 計算 ψ(n)=24206811682139986451844 4. 找出一組數值 e×d≡ 1 mod ψ(n) e=31, d=19521622324306440686971 5. 將 (e, n)公開、其他數值保持秘密 6. 此時任何人交付明文 m要求簽章
RSA簽章的實例 公鑰 : e=31, n=24206811682801236799169 密鑰 : d=19521622324306440686971 • 假設要假設要簽署的明文 m為 ‘bob cracked rsa’, • 依代碼 □= 0, a= 1, b=2, …, z=26將明文編成 27進制 的數值,即可得下列明文 m值 : m = (2, 15 , 2, 0, 3, 18, 1, 3, 11, 5, 4, 0, 18, 19, 1)27 = 2× 2714+15× 2713+2× 2712+3× 2710+18× 279+1× 278 +3× 277 +11× 276 +5× 275 +4× 274 +18× 272+ 19× 27+1 = 279927250081200479782 6. 此時任何人交付明文 m要求簽章 32
RSA簽章的實例 公鑰 : e=31, n=24206811682801236799169 密鑰 : d=19521622324306440686971 • 假設要假設要簽署的明文 m為 ‘bob cracked rsa’, • 依代碼 □= 0, a= 1, b=2, …, z=26將明文編成 27進制 的數值,即可得明文 m = 279927250081200479782 • 有秘密的 d 值,就可以將明文簽署成下列的 s 值 : S = md (mod n) 19521622324306440686971 = 279927250081200479782 (mod 24206811682801236799169) = 17083178691394655337512 7. 用秘密的 d 值,就可簽署明文為 s = m d mod n 33
RSA簽章的實例 公鑰 : e=31, n=24206811682801236799169 密鑰 : d=19521622324306440686971 8. 用公開的 (e, n),即可驗證簽章 s e mod n = (m d)e mod n = m • 假設要假設要簽署的明文 m為 ‘bob cracked rsa’, • 依代碼 □= 0, a= 1, b=2, …, z=26將明文編成 27進制 的數值,即可得明文 m = 279927250081200479782 • • 有秘密的 d 值,就可以將明文簽署成下列的 s 值 : 有 公 開 的 e, n值 , 何 人 均 可 驗 證 簽 章 是 否 可 經 下 任 列計算得出明文 : m = se (mod n) =1708317869139465533751231 (mod 24206811682801236799169) =279927250081200479782 = 2× 2714+15× 2713+2× 2712+3× 2710+18× 279+1× 278+3× 277+11× 276 +5× 275 +4× 274 +18× 272+ 19× 27+1 = (2, 15, 2, 0, 3, 18, 1, 3, 11, 5, 4, 0, 18, 19, 1)27 即為 ‘bob cracked rsa’ 34
RSA簽章的實例 1. 選擇 p = 622354832383 q = 38895514943 2. 計算 n =24206811682801236799169 3. 計算 ψ(n)=24206811682139986451844 4. 找出一組數值 e×d≡ 1 mod ψ(n) e=31, d=19521622324306440686971 5. 將 (e, n)公開、其他數值保持秘密 6. 此時任何人交付明文 m要求簽章 7. 用秘密的 d 值,就可簽署明文為 s = m d mod n 8. 用公開的 (e, n),即可驗證簽章 s e mod n = (m d)e mod n = m RSA
RSA簽章的可能偽造方法與解決方案 RSA簽章有 "乘法代 數性質 ",所以是有 可能被偽造的唷! 1. 選擇 p = 622354832383 q = 38895514943 2. 計算 n =24206811682801236799169 3. 計算 ψ(n)=24206811682139986451844 4. 找出一組數值 e×d≡ 1 mod ψ(n) e=31, d=19521622324306440686971 5. 將 (e, n)公開、其他數值保持秘密 6. 此時任何人交付明文 m要求簽章 7. 用秘密的 d 值,就可簽署明文為 s = m d mod n 8. 用公開的 (e, n),即可驗證簽章 s e mod n = (m d)e mod n = m
RSA簽章的可能偽造方法與解決方案 1. 選擇 p = 622354832383 q = 38895514943 RSA簽章有 "乘法代數性 假設 s 1=m 1 d mod n , s 2=m 2 d mod 質 ",所以是有可能被偽 2. 計算 n =24206811682801236799169 n 代表對兩份明文 m 1 與 m 2 所做的簽章 s 1 與 s 2 造的唷! 3. 計算 ψ(n)=24206811682139986451844 可是,把這兩個簽章相乘 4. 找出一組數值 (m d mod n) . (m d mod n) s 1 . 2 = e×d≡ 1 mod ψ(n) s 1 2 e=31, d=19521622324306440686971 d mod n = (m 1.m 2) 5. 將 (e, n)公開、其他數值保持秘密 令兩個簽章的相乘值為 s 3,而假設有心人花了很 6. 此時任何人交付明文 m要求簽章 大的功夫找出一個有意義的明文 m 3 ,而且 m 3 = m 1 . 2 , m 那麼 s 3 即為 m 3 的正確簽章, 7. 用秘密的 d 值,就可簽署明文為 也就是說,雖然只有簽過兩份明文 m 1 與 m 2,但卻 s = m d mod n 可能冒出第三份明文 m 3 號稱也被簽署過 而且兜出來的簽章 s 3 也是正確的。 8. 用公開的 (e, n),即可驗證簽章 s e mod n = (m d)e mod n = m
RSA簽章的可能偽造方法與解決方案 RSA簽章有 "乘法代數性 質 ",所以是有可能被偽 造的唷! 若要防止這種偽造的發生,最簡單的方法就是用 密鑰對明文做簽章前,先用雜湊函數 (Hash function)對明文做摘錄,而且確定摘錄值相乘不 會有 "乘法代數性質 " : H(m 1.m 2 ) ≠ H(m 1 ).H(m 2 ) 所以,也就是說 : s 1 . 2 = (H(m 1 ) d mod n) . (H(m 2 ) d mod n) s ≠ (H(m 1 .m 2 )) d mod n 如此就不可能冒出第三份明文 m 3 號稱也被簽署 過,而且被兜出一個正確的簽章 s 3。
RSA簽章的可能偽造方法與解決方案 RSA簽章有 "乘法代數性 質 ",所以是有可能被偽 造的唷! 至於什麼是雜湊函數 (Hash function)?就如同 中文譯名的 "雜湊 " 二字,可以隨興設計一個 亂湊出來的方式,把不論多長的明文都摘錄成一 個不太大的數值。 譬如,在報章雜誌常見的生命靈數命理方法 : 西元出生年 +月份 +日期 =生命靈數,如果算出來是兩位數,則再 將 十位數加個位數,一直簡化到個位數字為止。例如 1980年 8月 23日 的生命靈數是: 1+ 9+ 8+ 0+ 0+ 8+ 2+ 3= 31,再做 3+ 1= 4。 可以說就是一種 Hash function,你也可以發明一套 更亂的公式,不只是加法,還把各種運算融入, 甚至把身份字號、電話號碼、門牌號碼都一起算 進來,反正最後就是出來一個數值,然後你就可 以依據這個數值幫大家算命,亂掰一下囉!
數位簽章與雜湊函數合併使用 Ø 數位簽章通常會和雜湊函數合併使用,以增進簽章的運算效能。 Ø 雜湊函數的設計必須具備無法找出相同雜湊值的能力。 Ø 假設 A要發送一封具有簽章的訊息給 B,則A必須先對所發送的整 篇訊息執行雜湊函數( Hash Function)運算,產生一個訊息摘要。 Ø 這個訊息摘要可以看成是整封訊息的「數位指紋」,若此訊息的任 一部份遭到修改,則雜湊函數的運算結果就會不同。
Ø 完成訊息摘要後, 可以用他的私密金鑰對此訊息摘要進行簽 A就 署的動作, 簽署過的訊息摘要就是整封訊息的數位簽章, 著 此 接 A再將訊息以及數位簽章寄送給 B。 Ø 當 B收 到 A所 傳 送 來 的 訊 息 及 數 位 簽 章 後 , 了 要 查 驗 此 訊 息 , 為 B 必 須 先 將 收 到 的 訊 息 使 用 與 A相 同 的 雜 湊 函 數 計 算 出 另 一 個 訊 息 摘 要 後 , 使 用 A的 公 開 金 鑰 來 針 對 訊 息 摘 要 做 驗 證 , 兩 者 再 若 驗 證 結 果 相 符 , 代 表 訊 息 確 實 來 自 A, 證 明 訊 息 的 內容 在 A簽 則 且 章過後就沒有遭到修改。
進一步衍生的電子憑證 念 1. 若交付簽章的明文 (Certificate)概 m是身份資料 2. 具有公信力的憑證中心以密鑰 d d mod n 簽署明文摘錄值 s = H(m) 3. 用憑證中心公開的 (e, n),任何人 均可驗證某人的身份資料之簽章 s e mod n = (H(m) d)e mod n = H(m)
進一步衍生的電子憑證 念 (Certificate)概 具有公信力的憑證中心簽署某人 身份資料的明文與簽章組成憑證 就是可證明其身份的電子身份證 Certificate
混合式密碼系統 B Public key A Private key A B Private key A Public key B
同時達到秘密通訊與數位簽署 A 欲傳送資訊給 B l 數位簽署 A 以自己的 private key 加密,若 B 能以 A 的 public key 解開,則可驗證為 A 所發。 l 秘密通訊 A 以 B 的 public key 加密,B 以自己的 private key 解開(同前)。
優缺點比較(非對稱) l l 優點 資訊機密性高 (加密機制較嚴密) 鑰匙方便管理 (一公一私) 不可否認性 (數位簽署認證) 缺點 運算複雜耗時長,速度慢
網路安全應用實例 : SSL l l l SSL(Secure Socket Layer)是 Netscape所提出來的 資料保密協定,採用了 RC 4、 MD 5,以及RSA等 加密演算法 。 如果 您想登入的網站具有 SSL功能那麼 您與網 站之間所傳的資料都可以使用 SSL協定來保密, 除非能破解傳輸密碼,否則其他任何人都無法 得到這些機密資料。 那 SSL的密碼會被破解嗎?答案是 『 非常非常 不容易 』 ,而且保密鑰匙的長度( key-length)越 長,安全度越高 !
網路安全應用實例 : SSL l 使用 SSL 安全方法時,使用者產生一把對 稱金鑰(session key),將待傳送的資料「 加密」成亂碼,網站接收資料後再使用同 一把對稱金鑰「解密」出原來的資料。為 了將使用者產生的這一把加解密用的對 稱金鑰安全地傳給伺服器, SSL 於使用 者傳送這一把對稱金鑰前,先使用伺服 器的公開金鑰( publickey)將對稱金鑰「 加密」成亂碼,網站接收資料後再使用伺 服器的私密金鑰( private key)「解密」出 原來的對稱金鑰。
Remark l l l 加密過程越複雜,安全性更高,但相對的速度 也越慢 (trade off) 安全性 → 即使破祕者知道加密演算法,也無 法輕易破解密文 沒有絕對破解不了的演算法 (假如有無限時間 ),只要相對安全即可 (10^16 年 ……)
0822562ccb753c0902adf5f49c3d64bf.ppt