關於密碼學 (Cryptography)
密碼學(在西歐語文中之源於希臘語kryptos,“隱藏的”,和graphein,“書寫”)是研究如何隱密地傳遞資訊的學科。在現代特別指對資訊以及其傳輸的數學性研究,常被認為是數學和電腦科學的分支,和資訊理論也密切相關。著名的密碼學者Ron Rivest解釋道:“密碼學是關於如何在敵人存在的環境中通訊”,自工程學的角度,這相當於密碼學與純數學的異同。密碼學是資訊安全等相關議題,如認證、訪問控制的核心。密碼學的首要目的是隱藏資訊的涵義,並不是隱藏資訊的存在。密碼學也促進了電腦科學,特別是在於電腦與網路安全所使用的技術,如訪問控制與信息的機密性。密碼學已被應用在日常生活:包括自動櫃員機的晶片卡、電腦使用者存取密碼、電子商務等等。
直到現代以前,密碼學幾乎專指加密(encryption)演算法:將普通資訊(明文,plaintext)轉換成難以理解的資料(密文,ciphertext)的過程;解密(decryption)演算法則是其相反的過程:由密文轉換回明文;加解密包含了這兩種演算法,一般加密即同時指稱加密(encrypt或encipher)與解密(decrypt或decipher)的技術。
加解密的具體運作由兩部分決定:一個是演算法,另一個是密鑰。密鑰是一個用於加解密演算法的秘密參數,通常只有通訊者擁有。歷史上,密鑰通常未經認證或完整性測試而被直接使用在密碼機上。
密碼協定(cryptographic protocol)是使用密碼技術的通信協議(communication protocol)。近代密碼學者多認為除了傳統上的加解密演算法,密碼協定也一樣重要,兩者為密碼學研究的兩大課題。在英文中,cryptography和cryptology都可代表密碼學,前者又稱密碼術。但更嚴謹地說,前者(cryptography)指密碼技術的使用,而後者(cryptology)指研究密碼的學科,包含密碼術與密碼分析。密碼分析 (cryptanalysis)是研究如何破解密碼學的學科。但在實際使用中,通常都稱密碼學(英文通常稱cryptography),而不具體區分其含義。
口語上,編碼(code)常意指加密或隱藏資訊的各種方法。然而,在密碼學中,編碼有更特定的意義:它意指以碼字(code word)取代特定的明文。例如,以‘蘋果派’(apple pie)替換‘拂曉攻擊’(attack at dawn)。編碼已經不再被使用在嚴謹的密碼學,它在資訊理論或通訊原理上有更明確的意義。
簡言之, 密碼學是用一些數學演算法, 將人類可以閱讀的明文轉換成無法閱讀內容的密文。
PGP 加密是一個非常典型的密碼學應用。
名詞說明
金鑰 (或稱密鑰, key): 在密碼學演算法裡所需要的一個輸入參數, 依不同演算法而會有不同的金鑰類型與長度. 在PGP 加密裡, 金鑰類型通常為RSA 或 DSA,長度則為1024~4096 bits。
本文件及系統內所用之PGP 金鑰名稱係指可以代表PGP金鑰的廣義稱呼, 它可能為使用者名稱(User Name)、電子郵件(eMail)、或使用者名稱加電子郵件 (以 “user name <email>”表示)、或金鑰代號 (Key ID, 是八碼 0-9, A-F組成)、或金鑰指紋(Key Fingerprint, 是20碼0-9, A-F組成)。
對稱式加密式 (Symmetric Algorithm)
加密解密使用相同金鑰的演算法, 稱為對稱式(Symmetric)加密演算法,,如下圖。

常見之對稱式加密演算法如 DES, Triple-DES, AES 等。
非對稱式加密(Asymmetric Algorithm)
加密解密使用不同的兩個金鑰,且此兩個金鑰是成對的(pair),其一為公鑰 (Public key), 另一為私鑰(Private Key),被公鑰加密的資料必須以相對應的私鑰才能解得開;反之,被私鑰加密的資料必須以相對應的公鑰才能解得開。如下圖

常見的非對稱式加密加密演算法如 RSA, DSA等。
加解密(Encryption and Decryption)是用來防範內容被窺視,若要確定內容沒有被竄改, 或證實內容來源, 則必須再使用以下方法。
雜湊函數(Hash Functions)
雜湊函數是一種數學演算法, 將大量的資料變成小量的亂數值, 如下圖

雜湊函數一定具有兩個特性
1. 不同的input 一定得出不同的hash value (或稱訊息摘要, Message Digest)
2. 無法從hash value 倒推得原來的input
Hash value的長度依不同雜湊函數而定,常見的雜湊函數如 MD2, MD5, SHA-1, SHA-128, SHA-256, SHA-512等。
簽章與驗章(Sign and verify)
簽章及驗章是利用雜湊函數及非對稱式加密的技術來達到確認文件來源(作者)及文件內容是沒被更動過的。如下圖簽章示意圖。

關於PGP加密
PGP 主要使用非對稱式加密,每個使用者都擁有一對私鑰(Private Key) 與公鑰(Public Key),資料使用公鑰加密後只能使用它相配對的私鑰解密,資料若使用私鑰簽章, 則任何公鑰的持有者可以驗證資料是否確定由私鑰的使用者所傳送。
由於非對稱式加密速度遠比對稱式加密慢很多, 所以只適合加密少量資料, PGP 實際上是使用一把對稱式的金鑰(如Session Key)來加密資料, 再用非對稱式之公鑰來加密此對稱式的金鑰。

PGP 解密則是先將加過密的Session Key 由私鑰解開, 再用此Session Key來解密資料

相關資料
玉山科技 版權所有 © Copyright AsiaPeak 2006, All Rights Reserved
|