presentation

Download Report

Transcript presentation

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