2009年12月25日 星期五

基本密碼學

在網路通訊上
密碼學可以提供以下幾點安全防護

1. Keeping secrets (Confidentiality)
在將原始文件加密的情況下
可避免通訊內容被惡意的第三方竊聽 (eavesdropping)

2. Providing identity (Authentication)
文件可以加密達到保護內容不被竊聽的效果
可是如果惡意第三方不是以竊聽的方式
而是以假冒(Forgery and masquerade)的方式攻擊通訊呢
此時就需要身份認證的功能
以確定彼此通訊的雙方是想要通訊的對象

3. Verifying information (Message integrity)
假設惡意第三方有辦法更改通訊內容
造成通訊雙方的誤解
此時就需要驗證通訊內容的完整性
一般我們都是使用雜湊函數
來計算文件的message digest

--------
密碼學的加解密又分為兩個主軸
Secret Key Cryptography 和 Public Key Cryptography

1. Secret Key Cryptography (Symmetric)

此種加解密方式因為通訊雙方使用同一把key
所以又稱為對稱式加密
而這把共用的key因為不能讓通訊雙方以外的人知道
所以又稱為private key

2. Public Key Cryptography (Asymmetric)

此種加解密方式有兩把key
一把是public key,會公諸於大眾
一把是private key,只有自己能知道
由於傳送方加密的key與收受方解密的key不是同一把
因此此種加密方式又稱為非對稱式加密

以下舉一個例子來解釋public key cryptography

通訊雙方為Alice和Bob (密碼學界用到爛的梗 XD)
Alice有兩把key,分別為A.publickey以及A.privatekey
Bob也有兩把key,分別為B.publickey以及B.privatekey

因為public key是公諸於眾的
所以Alice知道B.publickey,而Bob也知道A.publickey
因此當Alice要跟Bob通訊的時候
就利用B.publickey加密她要傳輸的資料傳給Bob
而因為由B.publickey加密的內容只有B.privatekey能解
所以通訊內容也就只有擁有B.privatekey的Bob才可以看
同樣地
Bob想要回應Alice的通訊內容也可以經由A.publickey加密
這個加密的回應也只有Alice可以解密


了解了secret和public key cryptography的內容後
接下來我們來對其做個比較
並了解為何有這兩種加解密方式的需求

首先secret key cryptography (以下簡稱secret)
在加解密的效率上遠勝於public key cryptography (以下簡稱public)
但是secret有個嚴重的缺點是key的管理
使用secret的雙方需要在通訊前協議好要使用的key
但問題是這個協議的過程是沒有加密的
所以協議的內容也會被惡意的第三方竊聽走
因此之後的加解密也形同虛設
衍生出了『雞生蛋,蛋生雞』的問題

而public正好可以解決這個問題
因為加解密用的是不同的key
而加密使用的又是可以公諸於眾的public key
所以在key的管理上很安全
不過public的缺點也正好是private的優點
public加解密的效率遠遜於secret

看完以上的比較
我們就可以知道為什麼public與secret有著並存的理由
而實際的應用上
這兩著通常也是合作的
以著名的SSL為例
通訊的雙方一開始協議key的過程是使用public的方法
而key協議好之後,就開始使用secret的方法
等於是各取其優點來達成安全通訊通道的建立


[Reference]
SSL and TLS Essentials

沒有留言:

張貼留言