close

簡介

Symmetric Encryption - 對稱式加密,其特色在於加解密所使用的金鑰(key)是相同的!

兩方要進行秘密訊息的傳送之前,必須協議出一個共同的,用來加解密的金鑰(key)以及所使用的演算法;如此一來訊息一來一往之前才可以被正確的加解密。

當然這樣的方式會衍生出一些問題,因此才會有 Asymmetric Encryption(非對稱式加密) 的產生,來改善一些 Symmetric Encryption 的缺點;然而 Symmetric Encryption 在實際的應用上有其實用性,因此目前還是持續不斷的被使用當中。

在加解密運作的機制中,有兩大重要部分,除了金鑰(key)之外,另外一個即為加解密所使用的演算法(algorithm)

在實際應用上,金鑰(key)是一個檔案,內容為一群無意義的英文與數字的集合,長度範圍有可能介於 64~1024 bits (甚至更大) 之間,妥善由通訊雙方秘密保管好。

而演算法(algorithm)則是透明公開的,隨時可以從網路或是其他地方取得演算法的相關使用方法與規則。

演算法型態(Algorithm Type)

演算法在型態部分,有分成兩種,分別是:

Stream Cipher

此種方式是將 plain text 中的每一個 bit 逐一加密,然而此種方式在效率上並不好,因此目前比較為大家所熟悉且常用的演算法,都不是使用 stream cipher 的方式進行處理。

Block Cipher

此種方式將 plain text 分成多個 block(區塊) 後,一次針對一個 block 進行加密處理。

此種方式有個很明顯的問題存在,就是當所加密的 plain text 相同時,加密的結果也會相同;如此一來,有心人就可以根據加密的結果,判斷出訊息中的哪幾個部分是相同的,進而嘗試進行破解。

 

常用的加密演算法

說到常用的對稱式加密演算法,大概就是 DESTriple DESIDEABlowfishRC5AES 這一些演算法了。

這一些演算法的處理方式,大概都不會跳脫 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 的運算處理,有兩種方式:

  1. 使用三把金鑰(K1, K2, K3)
    這個部分比較容易瞭解,很單純的在三次 DES 加密的過程中,分別使用不同的三把金鑰。
  2. 使用兩把金鑰(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 不會差異太多,只是一些細節的部分有所差異,詳細過程可以參考以下兩篇文章:

  1. International Data Encryption Algorithm
  2. IDEA 密碼系統

RC5

RC5 也是屬於 block cipher,此演算法是相當有彈性的,不僅可以自訂每個加密區塊的長度,也可以自訂加密的回合數與金鑰的長度,加上只使用了電腦的基本運算(加法、XOR ... etc),因此不僅彈性很大,速度也很快。

而由於 RC5 演算法相較於其他演算法,所需要的記憶體比較少,因此也可以用在可攜式的裝置上。

其他詳細的說明及演算法的運作方式可以參考以下文章:

  1. RC5
  2. RC5 密碼系統
  3. RC5 操作模式

Blowfish

Blowfish 演算法優點在於速度快、記憶體花費少、加解密的過程簡單(僅使用到基本運算)、可自訂金鑰長度。

而此演算法適合用在通訊連結上,因此像是 VPN 連線的加密,就有使用 Blowfish 演算法。

AES (Advanced Encryption Standard)

由於對於暴力破解法,DES 有可能被破解的風險,因此美國政府提出了一個強度更強的演算法,進而想要將加解密演算法標準化,準備當電腦運算能力發展到很強,DES 必須被淘汰時的候補演算法標準,這就是 AES 的由來。

相較於 DES,AES 演算法中所使用的區塊長度為 128 bits,金鑰長度也提高到 128 bits 以上,因此 cipher text 被破解的機會便更低了。

若要瞭解 AES 詳細的運作方式,可以參考以下文章:

  1. AES 基本架構
  2. AES 加密演算法 - 加密編碼
  3. AES 加密演算法 - 金鑰擴充
  4. AES 解密演算法

 

資料來源:Symmetric Encryption

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 小必 的頭像
    小必

    David Liao's Blog

    小必 發表在 痞客邦 留言(0) 人氣()