公開鑰匙加密演算法 密碼學大革命 public key所想要解決的問題 public key密碼系統特性 RSA演算法 key管理
密碼學大革命 密碼理論兩大革命 幾個錯誤的觀念 旋轉加解密機:擺脫手工加解密的束縛,可以使用 複雜的加解密方法。 Public Key方法:擺脫取代和重排的方法,且使用 兩把不對稱的key。 幾個錯誤的觀念 public key比傳統加密法更安全(事實上這跟key 長度與破密的計算量有關) public key可以淘汰傳統加密法(因為計算量太大, 所以不適合大量的保密工作) public key會讓key交換變成非常簡單(不一定如 此)
public key所想要解決的問題 解決key分送的問題:KDC可能成為密碼系統的大漏 洞,可否不透過KDC交換key。 解決數位簽章的問題:如何可以確定某份文件就是某 個人發出來的?
public key密碼系統特性 用一把key來加密,用另一把不同但相關的key來解密。 知道加密演算法與加密key,無法求出解密的key。 RSA演算法則具備兩把key中的任一把都可以拿來加密, 而用另一把解密。 因為取得公開key不能算出私密的key,所以只要用公開 key能夠解開密文,就表示加密的人擁有私密的key(可 以用來身份確認)。參考運作模型三 不過如果要身份確認,就必須保存密文全文,太過浪費空間。 通常會將本文用雜湊函數所產生的一段資料拿來做簽章。
與傳統加密法的比較 public key加密法的運作要求 傳統加密法的運作要求 2.不能或很難在沒有其他資料的情況下解密 3.對於演算法、密文與其中一把key的資料必須不足以找出另一把key 傳統加密法的保密要求 1.key必須保密 2.不能或很難在沒有其他資料的情況下解密 3.對於演算法與密文的知識必須不足以找出key
public key密碼系統運作模型(一) KEYa KEYb KEYc KEYd Public KEYb Private KEYb Encryption Algorithm (e.q. RSA) Decryption Algorithm (reverse of encryption algorithm) 傳送用的密文 Plaintext 明文 Plaintext 明文 A B
public key密碼系統運作模型(二) 安全性模型 X 意圖 破密者 KRb 加密演算法 解密演算法 信息 來源 X Y X 收信端 A 保密密碼 KRb B 加密密碼 KUb 密碼對 來源
public key密碼系統運作模型(三) 確認性模型 但不安全 X 意圖 破密者 KRb 加密演算法 解密演算法 信息 來源 X Y X 收信端 B A 保密密碼 KUa 加密密碼 KRa 密碼對 來源
public key密碼系統運作模型(四) 又安全又可以身份確認 X 加密 演算法 加密 演算法 解密 演算法 解密 演算法 信息 來源 Z Y X Y 收信端 KRb A KUb B KUa KRa 密碼對 來源 密碼對 來源
RSA演算法(一) 1977年由Ron Rivest, Adi Shamir和Len Adleman發展出來。 是一個區段加密法 key的長度如果要阻止暴力破解法,計算速度就 會太慢,難以用在一般的傳輸加密中。 基本原理 保密區段是k個位元,2k<n<2k+1,明文區段M,密文區 段C C=Me mod n M=Cd mod n=Med mod n Med mod n=M必須成 立 由e n算出d必須很困難
RSA演算法(二) Mk(p-1)(q-1)+1=M mod n d=e-1 mod (p-1)(q-1) 所以RSA機制如下 如果有兩個質數p q, n=pq,k是任意正整數 Mk(p-1)(q-1)+1=M mod n 也就是 ed=k(p-1)(q-1)+1 d=e-1 mod (p-1)(q-1) 但d,e必須與 (p-1)(q-1)互質 所以RSA機制如下 選定 p q兩質數,n=pq 選定與(p-1)(q-1)互質的e 私密key就是{dn} 公開key就是{en} 公開 私密
RSA演算法(三) 找大質數(其實多半是測試亂數值是否是質數),計算 最大公因數,是RSA產生key的重要運算。 目前RSA的key長度應該定在1024-2048 bit間比較合理。 其他注意事項如下: p,q長度不可差異太大 p-1與q-1 都應含有一個很大的質因數 p-q與q-1的最大公因數應該要很小
key管理(一) public key的分送 直接公開散佈:駭客可以冒名散發public key(說他 自己的public key是某某人的public key) 利用key管理中心來負責維護、分送。使用者註冊 public key時是透過安全的通訊方式。 使用憑證 certificate(這是目前比較常用的方法)
key管理(二) CA=EKRauth[T,IDA,KUa] public key憑證的要求: 任何使用者可以讀取憑證來取得擁有者的名稱 (IDA) 與 public key(KUa) 任何使用者可以檢查憑證是否由憑證管理中心發出 只有憑證管理中心可以產生並更新憑證 任何使用者都可以檢查憑證的有效期限(T) CA=EKRauth[T,IDA,KUa] KRauth是憑證管理中心的Private key。使用者可 以透過管理中心的Public key來解密取得資料, 且認證這是來自管理中心的憑證
key管理(三) 可以利用運作模型四的方法來傳送傳統加密法的 session key,達成保密與確認的要求。真正傳 送大量資料時,則使用傳統加密法配合該 session key來運作。 橢圓曲線(Elliptic Curve)密碼學:因為用比較短 的key就可以達成與RSA相當的安全性,所以 最近開始受注意。