K書筆記本-Cryptography(04)

前一篇文章特別有提到symmetric key運作方式有分為stream ciphers及block ciphers,也有提到兩種的差別
其中Stream的運作方式對於一般的統計法,是很難找出其邏輯,並且產生出來的ciphertext是絕對的公正
在Stream cipher運作中,最重要的一個元素就是Keystream,它是用來作用於加密過程,以XOR來建立密文的程序…

前一篇文章特別有提到symmetric key運作方式有分為stream ciphers及block ciphers,也有提到兩種的差別
其中Stream的運作方式對於一般的統計法,是很難找出其邏輯,並且產生出來的ciphertext是絕對的公正
在Stream cipher運作中,最重要的一個元素就是Keystream,它是用來作用於加密過程,以XOR來建立密文的程序
而Keystream的代表作就是RC4更重要的是它是非常適合裝載在硬體上及網路通訊上使用。
下圖是Keystream的運作示意圖

image

而block ciphers則是以相同的大小切段(例如以8bits;ASCII 或16bits;Unicode),也是以XOR演算後產出密文
相當適合用於較大型的資料,並且對於所有的後續的處理比起strame更加的有效率。下圖是block ciphers運作方式…
image

以上是兩種對稱式加密的基本模式,但是,提到對稱式加密就不得不提DES(Data Encryption Standard;資料加密標準)
身世之謎是來自於1960年由IBM所設計發展,後來被美國國家標準局及美國國家標準協會承認,在DES家族相當的龐大
光是DES本身就包含了相當多種的運作模式,不過,這個設計之下,Block size是64bit,key的size是56bit及8bits Parity
總共演算16rounds,DES的運作模式共有五種,以Block Modes及Stream Modes來區分如下:
Block Modes:Electronic Code Book(ECB)、Cipher Block Chaining(CBC)
Stream Modes:Cipher Feed Back(CFB)、Output Feed Back(OFB)、Counter(CTR)

ECB Mode;電子密碼書模式:平行運作,並且具有較高的容錯性,相當的節省處理的時間,ECB只適合用於短訊息的內容,因此相同的明文內容
會產生相同的密文內容,雖然無法直接以暴力破解法來解開,但是透過Separately attack就可以輕易的分析出來。
下圖為ECB的運作方式:
image 

CBC Mode密文區段連續模式:它的運作方式就比較複雜了一些,第一個明文的block先以XOR與IV演算,
接下來的每一個明文都先與前一段密文加上IV後再與金鑰加密。非常的適合用於較長的訊息,而且可容錯,
適合用於IPsec, SSH, VPN, Datastorage。但每一個運作的回合之下,都必須耗費較多的資源去演算
因為它必須作用於full sized blocks且每一個運作都是連續的。下圖為CBC Mode的運作模式:
image 

CFB Mode;密文反饋模式:與CBC相當的相似,但是CFB將IV加密後加入與下一段明文做演算。適用於較長的訊息,亦具有容錯的能力
它每一個運作都必須是連續的,當發生錯誤時會擴散至其後的block中,雖然它比CBC發生的錯誤的機率還低,是最常用的Stream mode。
下圖為CFB Mode的運作模式:
image 

OFB Mode;輸出反饋模式:其運作模式相當接近於CFB,但不同的是它先把IV加密後加入爾後的每一個金鑰中,再經過加密加入訊息演算中
非常適合用於較長的訊息中,某些的運作是平行的,接送雙方必須保持同步,必須透過一些回復機制來確保雙方是同步的
否則當發生錯誤時是可能造成串聯的。下列是OFB的運作模式:
image

CTR Mode;計數器模式:與OFB類似,但是加秷的是計數器的內容而不是反饋出來的資料。因為是平行處理因此效率相當的好
必須確保不會重用到key或count內容值,否則還是會被破解,即使它的安全性與其它的模式相同的安全,被拿來做為無線網路的標準
及後來成為AES(Advanced Encryption Standard)的Key演算概念。下圖為CTR的運作模式:

 

 

image 

以上的五種模式是DES的運作的主要模式,下表為以上五種模式的比較表:

Mode

Block / Stream Mode

Long / Short Messages

Serial / Parallel operation possible

Effect of an error

Work that can be done in advance

ECB

Block

Short

Fully parallel

Contained

Keys

CBC

Block

Long

Fully serial

Contained

Keys and IV

CFB

Stream

Long

Fully serial

Contained

Keys and IV

OFB

Stream

Long, but errors are a problem

Partially serial and parallel

Cascades

Most encryption

CTR

Stream

Long

Fully parallel

Contained

Most encryption

有了上面的這張表,大家知道怎麼去選擇合適的模式了吧!

當然DES並不是只有一種,還有Double DES及Triple DES,一樣都是以56bits為基礎的金鑰長度
Double DES的金鑰長度就是112bits以兩把key做加密演算,而Double DES(DDS)一出來隨即被Meet-in-the-middle破解
不是man-in-the-middle喔!這種Meet-in-the-middle就是以「已知明文」的方法來找出key及演算的過程順利的破解了DDES
下圖是DDES的運作示意圖
image 


下圖則為Meet-in-the-middle的運作示意圖:
image

而對於 triple DES則又分為有兩把金鑰及三把金鑰的差別
2把金鑰:DES-EEE2(也叫2TDES-EEE), DES-EDE2(也叫2TDES-EDE)
3把金鑰:DES-EEE3(也叫3TDES-EEE), DES-EDE3(也叫3TDES-EDE)
其中EDE Mode是比EEE Mode來的更強,不論是三把金鑰或是兩把金鑰都是為了加強其運作的強度
3TDES的Block長度是64bits, key的長度是168bits,其它與DES相同,2TDES則是與DDES雷同,
只是Bock是切割為三次演算。但DES是一種早就被破解的私鑰加密系統。

下面是幾個常見的Symmetric Key Cryptography:
IDEA(International Data Encryption Algorithm ):於1991年發佈,是參照DES而來Block size是64bit,128bit key,跑8rounds
AES(Advanced Encryption Standard又稱為Rijndael):於1998年發佈block size可介於128~256bits,Key則可選擇128、192、265
並且可自定運作演算次數。其組合由4個步驟AddRoundKey, SubBytes, ShiftRow, MixColumn
RC5:於1994年發佈Block可以有32, 64, 128 bits, key的長度更可提升至2040bits,最多可跑255個rounds
RC6:Based on RC5。
Blowfish: 於1993年發佈,block為64bit, key介於32~448bits。
Twofish:block size 128bits, key最高可到256bits,相同以128bit的key比AES來得慢。

Symmetric key的優點
非常的快Very fast
破解密文非常難(Very difficult to break cipher text)
演算法及工具可以免費取得(Algorithms and tools are freely available)
Stream ciphers確保了極高效率(Stream ciphers ensure highly-efficient)
Block ciphers也有多種modes可供使用(Block ciphers offer multiple modes)

Symmetric key的缺點
key的交換及散發可能是個問題(Key Negotiation / Exchange / Distribution)
延展性差(Poor Scalability)
維持了最基本的安全(Limited Security)

曾經有人問過Jason,到底同步與非同步金鑰那個比較安全,其實,在這裡的比較我們可以看到,同步金鑰比非同步快
這個是唯一被明確點出來的,而至於那個安全呢??非同步被破解的也是不少呀,而簡單的多跑個幾次還是會安全的嘛!
所以,兩者相較,並沒有話一定是同步或非同步就比較安全喲,以上提供給大家參考。


Anything keeps Availability.
Anywhere keeps Integrity.
Anytime keeps Confidentiality.
keep A.I.C. = Information Security