密碼學(二):現代密碼學
對稱加密、非對稱加密
十九世紀學者們體認到加密法的演算法並非理智或實在的防護。適當的密碼學機制應該保持安全,即使敵人知道了使用何種演算法。對好的加密法來說,金鑰的秘密性理應足以保障資料的機密性,這邊就須先提到柯克霍夫原則:
柯克霍夫原則(Kerckhoffs’ principle)
這個原則首先由奧古斯特·柯克霍夫(Auguste Kerckhoffs)提出, 強調即使密碼系統的任何細節已為人悉知,只要密鑰(key)未洩漏,它也應是安全的
A cryptosystem should be secure even if everything about the system, except the key, is public knowledge
- 資訊理論始祖克勞德·艾爾伍德·香農(Claude Shannon)重述:「敵人知道系統。」
現代密碼學可分為對稱加密與非對稱加密
對稱加密( Symmetric Encryption)
簡單來說對稱加密即在加密與解密時都是使用同一把金鑰,缺點就是要是被有心人士知道金鑰,之後只要欄截訊息就可被破解
對稱式加密可分為區塊加密法與串流加密法
區塊加密法(Block cipher)
將明文分成多個等長的模組(block),使用確定的演算法和對稱金鑰對每組分別加密解密,如DES、AES
DES( Data Encryption Standard)
- 分組長度為64位元
- 金鑰: 56位金鑰 ( 56位被實際用於演算法,其餘8位元可以被用於奇偶校驗)
- DES加密算法是對密鑰進行保密,只要掌握了和發送方相同密鑰的人才能解讀由DES加密算法加密的密文數據。因此,破譯DES加密算法實際上就是搜索密鑰的編碼。對於56位長度的密鑰來說,如果用窮舉法來進行搜索的話,其運算次數為2^56,已用22小時15分鐘被破解
AES ( Advanced Encryption Standard)
- 分組長度為128位
- 金鑰: 最少支持為128、192、256位
串流加密法( Stream cipher)
對明文一個位元一個位元地加密,就好像是明文不斷的流動進入加密器中加密,加密快速,因此能夠做到及時(real time response)的效果,適合用在語音傳輸加密
XOR Cipher
例如:Wiki(01010111 01101001 01101011 01101001)
key: 11110011
加密:
解密:
非對稱加密( Asymmetric Encryption)
1976年,惠特菲爾德·迪菲與馬丁·赫爾曼發表: 一對不同值但數學相關的金鑰 (key pair),公開金鑰( public key)與私密金鑰(private key or secret key), 在公鑰系統中,由公開金鑰推算出配對的私密金鑰於計算上是不可行的
如圖,今天Alice如果想傳訊息給Bob,就必須使用Bob的公鑰加密後將密文傳給Bob,Bob即可用自己的私鑰去解密
- 但使用非對稱運算速度比對稱式加密慢很多,故會改採用混合對稱式加密(Hybrid cryptosystem)
假設今天Alice 要傳訊息給 Bob
Alice會透過對稱式演算法,產生出一把對稱式加密用的金鑰(session key)
接著 Alice 使用 Bob 的公鑰,將這把session key加密並跟用session key加密後的訊息一併傳給 Bob
Bob 收到後,使用自己的私鑰解密,取得這把session key,在解密訊息,
之後雙方訊息的往來,都使用這把session加解密傳訊
RSA Algorithm
對極大整數做因數分解的難度決定了RSA演算法的可靠性。到目前為止,世界上還沒有任何可靠的攻擊RSA演算法的方式。只要其鑰匙的長度足夠長,用RSA加密的訊息實際上是不能被破解的
選擇兩個大質數 P & Q
計算 N = P * Q
選擇公鑰(public key) E,使它不為 (P-1) 或 (Q — 1) 的因數
選擇私鑰(private key) D,讓右邊算式成立:(D * E) % [(P — 1) * (Q — 1)] = 1
加密過程為:密文(CT) = 明文(PT^E) % N
解密過程為:明文(PT) = 密文(CT^D) % N
>下一篇: 密碼學(三):數位簽章