2009年4月11日星期六

WTF: Symmetric Encryption

ref:http://support.oss.org.tw/wiki/index.php/Symmetric_Encryption

常用的加密演算法

說到常用的對稱式加密演算法,大概就是 DES、Triple DES、IDEA、Blowfish、RC5、AES 這一些演算法了。
這一些演算法的處理方式,大概都不會跳脫上面部分所提到的那幾種模式,也就是 Substitution 以及 Transposition 的交互運用,其中的差異僅在於其複雜度而已。
演算法的細節在這邊就不進行說明了,網路上有很多資料可以查,以下大概僅簡介一下:

DES (Data Encryption Standard)
DES 屬於 block cipher,每個區塊的大小為 64 bits,所使用的金鑰長度為 56 bits(其實原本的金鑰長度為 64 bits,但是有 8 bits 會被捨棄不用),經過一連串複雜的 substitution 以及 transposition 的運算處理過程,產生出 64 bits 的 cipher text
加密過程可以參考此網頁。
其實 DES 已經是個強度很強的加密演算法,以目前電腦的運算能力進行破解,也要花上很多年。

Triple DES
DES 雖然加密強度已經很強,不過當未來出現了運算能力更強的電腦,或是平行運算技術更加成熟後,難保不會在短時間內被破解,因此就有人提出 Triple DES 的演算法。
顧名思義,Triple DES 即是將 plain text 進行三次 DES 的運算處理,有兩種方式:
使用三把金鑰(K1, K2, K3)
這個部分比較容易瞭解,很單純的在三次 DES 加密的過程中,分別使用不同的三把金鑰。
使用兩把金鑰(K1, K2)
這個部分則是有些變化,大概說明其運作步驟:
(1) 第一次 DES 加密使用金鑰 K1,假設產生的加密結果為 C1
(2) 第二次則是以金鑰 K2 對 C1 進行解密,假設產生 C2
(3) 最後一次則是再以金鑰 K1 對 C2 進行加密
透過此種多重加密的方式,確保 Triple DES 的安全性再更上一層! (當然也要多花點運算處理的時間.....)

IDEA (International Data Encryption Algorithm)
IDEA 亦屬於 block cipher,其加密強度比起 DES 更強,因為所使用的金鑰為 128 bits,而每一次處理的區塊資料長度一樣為 64 bits。
不過由於這是有專利的,因此相較於 DES,並沒有這麼普及。
運作原理大致上跟 DES 不會差異太多,只是一些細節的部分有所差異,詳細過程可以參考以下兩篇文章:
International Data Encryption Algorithm
IDEA 密碼系統

RC5
RC5 也是屬於 block cipher,此演算法是相當有彈性的,不僅可以自訂每個加密區塊的長度,也可以自訂加密的回合數與金鑰的長度,加上只使用了電腦的基本運算(加法、XOR ... etc),因此不僅彈性很大,速度也很快。
由於 RC5 演算法相較於其他演算法,所需要的記憶體比較少,因此也可以用在可攜式的裝置上
其他詳細的說明及演算法的運作方式可以參考以下文章:
RC5
RC5 密碼系統
RC5 操作模式

Blowfish
Blowfish 演算法優點在於速度快、記憶體花費少、加解密的過程簡單(僅使用到基本運算)、可自訂金鑰長度。
而此演算法適合用在通訊連結上,因此像是 VPN 連線的加密,就有使用 Blowfish 演算法

AES (Advanced Encryption Standard)
由於對於暴力破解法,DES 有可能被破解的風險,因此美國政府提出了一個強度更強的演算法,進而想要將加解密演算法標準化,準備當電腦運算能力發展到很強,DES 必須被淘汰時的候補演算法標準,這就是 AES 的由來。
相較於 DES,AES 演算法中所使用的區塊長度為 128 bits金鑰長度也提高到 128 bits 以上,因此 cipher text 被破解的機會便更低了。
若要瞭解 AES 詳細的運作方式,可以參考以下文章:
AES 基本架構
AES 加密演算法 - 加密編碼
AES 加密演算法 - 金鑰擴充
AES 解密演算法

没有评论:

发表评论