對稱塊加密演算法加密模式詳解 (轉)
標題:對稱塊演算法加密詳解
作者:DragonKing
E: ">wzhah@263.net
原發網站:中國open專業論壇
版權宣告:未經作者允許,不能轉載和在出版物中使用本文
在openssl或其他密碼相關的資料中,我們經常看到對稱加密演算法有ECB、CBC之類加密模式的簡稱,到底這些加密模式是什麼呢?它們之間有什麼不同呢,今天就是為大家解開這個迷。
在現有的對稱加密演算法中,主要有4種加密處理模式,這4種加密處理模式一般是針對塊加密演算法而言的,如DES演算法。這4種加密模式羅列如下:
模式中文描述 英文名稱(Openssl縮寫)
電子密碼本模式 Electronic Code Book(ECB)
加密塊鏈模式 Cipher Block Chaining(CBC)
加密反饋模式 Cipher Feeack Mode(CFB)
輸出反饋模式 Output Feedback Mode(OFB)
下面我們分別介紹這4種加密模式。
【電子密碼本模式】
這種模式是最早採用和最簡單的模式,它將加密的資料分成若干組,每組的大小跟加密金鑰長度相同,然後每組都用相同的金鑰進行加密。比如DES演算法,一個64位的金鑰,如果採用該模式加密,就是將要加密的資料分成每組64位的資料,如果最後一組不夠64位,那麼就補齊為64位,然後每組資料都採用DES演算法的64位金鑰進行加密。下圖:
_______________________
My name |is Drago|nKing
-----------------------
上圖“My name is DragonKing”這句話每8個字元(64位)作為一塊,然後使用一個相同的64位的金鑰對每個塊進行加密,最後一塊不足64位,就補齊後再進行加密。
可以看到,因為ECB方式每64位使用的金鑰都是相同的,所以非常容易獲得密文進行密碼,此外,因為每64位是相互獨立的,有時候甚至不用破碼,只要簡單的將其中一塊替換就可以達到目的。
【加密塊鏈模式】
該模式如下圖所示:
P0 P1 C0 C1
| | | |
| | |----| |--->...
IV--->XOR |--->XOR |--->... Key Dec | Dec
| | | | | | |
| | | | | | |
Key Enc | Enc | IV--->XOR |--->XOR
|-----| |-----| | |
| | | |
C0 C1 P1 P2
加密過程 解密過程
從這兩個圖中大家可以看到,CBC模式的加密首先也是將明文分成固定長度(64位)的塊(P0,P1...),然後將前面一個加密塊輸出的密文與下一個要加密的明文塊進行XOR(異或)操作計算,將計算結果再用金鑰進行加密得到密文。第一明文塊加密的時候,因為前面沒有加密的密文,所以需要一個初始化向量(IV)。跟ECB方式不一樣,透過連線關係,使得密文跟明文不再是一一對應的關係,破解起來更困難,而且克服了只要簡單調換密文塊可能達到目的的。
但是該加密模式的缺點是不能實時解密,也就是說,必須等到每8個位元組都接受到之後才能開始加密,否則就不能得到正確的結果。這在要求實時性比較高的時候就顯得不合適了。所以才有了下面兩種加密模式。
【加密反饋模式】
加密反饋模式為了克服必須等待8個位元組全部得到才能進行解密的缺點,採用了一個64位(8個位元組)的位移暫存器來獲得密文,如下圖所示:
C2|C3|C4|C5|C6|C7|C8|C9 ------------------------------- | ------------------------------- |
| | | |
| | | |
Key--->Enc |C10 Key--->Enc |C10
| | | |
| | | |
取最左一個位元組 | 取最左一個位元組 |
| | | |
| | | |
P10--->XOR----------------->C10 C10--->XOR----------------)--->P10
|______________|
加密過程 解密過程
上面兩個圖中C2、C3以及P10等都是一個位元組(8位)的資料,所以能夠實現字元的實時加密和解密,不用再等到8個位元組都接受到之後再進行解密。圖示是在進行第10個位元組資料的加密和解密過程,在該過程中,先從移位暫存器取8個位元組的資料(C2到C9)用金鑰進行加密,然後取加密資料最左邊的一個位元組跟輸入的明文P10進行XOR(異或)操作,得到的值作為輸出密文C10,同時將C10送入到移位暫存器中。
需要注意的是,如果其中有一個位元組的密文在傳輸的時候發生錯誤(即使是其中的一位),那麼它出現在移位暫存器期間解密的8個位元組的資料都會得不到正確的解密結果,當然,這8個位元組過去之後,依然可以得到正確的解密結果。但是一個位元錯誤就影響到8個位元組(64個位元)的正確結果,導致魯棒性太差,所以就又提出了下面的加密模式OFB。
【輸出反饋模式】
輸出反饋模式OFB跟CFB幾乎是一樣的,除了其以為暫存器的輸入資料稍微有一點不同之外,如下圖:
S2|S3|S4|S5|S6|S7|S8|S9 ------------------------------- | ------------------------------- |
| | | |
| | | |
Key--->Enc |S10 Key--->Enc |S10
| | | |
| | | |
取最左一個位元組 | 取最左一個位元組 |
|______________| |_____________|
| |
P10--->XOR----------------->C10 C10--->XOR------------------->P10
加密過程 解密過程
可以看到,這種方法因為沒有采用密文作為加密的資料,所以克服了由於傳輸過程中由於單個位元導致64個相關位元解密失敗的情況,在本模式下,如果一個位元發生錯誤了,那麼只會影響其本身對應的一個位元,而不會影響別的。但是相對於其它模式,因為資料之間相關性小,這種加密模式是比較不的,所以在應用的時候除非特別需要,一般不提倡應用OFB模式。
【參考資料】
1.中國openssl專業論壇
2.Computer Networks
3.《應用密碼學》
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998844/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 加密原理詳解:對稱式加密VS非對稱式加密加密
- 對稱加密演算法----DES加密演算法加密演算法
- 對稱加密與非對稱加密加密
- 資料加密(對稱加密和非對稱加密)加密
- 加密解密技術—對稱演算法加密加密解密演算法
- 編碼與加密(對稱加密與非對稱加密)加密
- 對稱加密、非對稱加密、RSA(總結)加密
- 對稱加密和非對稱加密(一)初步理解加密
- 理解區塊鏈的非對稱加密區塊鏈加密
- Android 安全加密:對稱加密Android加密
- Android安全加密:對稱加密Android加密
- 應用加密1;非對稱加密演算法揭祕加密演算法
- https中的對稱加密和非對稱加密HTTP加密
- 一文搞懂對稱加密:加密演算法、工作模式、填充方式、程式碼實現加密演算法模式
- 非對稱加密演算法的思考加密演算法
- 第四篇:非對稱加密及RSA加密演算法加密演算法
- Android 安全加密:非對稱加密Android加密
- Android安全加密:非對稱加密Android加密
- 非對稱加密演算法-RSA演算法加密演算法
- Java安全之對稱加密、非對稱加密、數字簽名Java加密
- Java加密技術(七)——非對稱加密演算法最高階ECCJava加密演算法
- RSA非對稱加密演算法淺析加密演算法
- 對稱加密體系加密
- openssl之EVP系列之2---對稱加密演算法概述 (轉)加密演算法
- 區塊鏈入門及非對稱加密技術區塊鏈加密
- 非對稱加密-區塊鏈核心技術之一加密區塊鏈
- 非對稱加密體系加密
- RSA 非對稱加密&解密加密解密
- 非對稱加密與OpenSSL加密
- ssh與非對稱加密加密
- DES對稱資料加密加密
- 非對稱加密與 jwt加密JWT
- JWT令牌生成採用非對稱加密演算法JWT加密演算法
- DES--------Golang對稱加密之模式問題實戰Golang加密模式
- RSA 非對稱加密&解密,超長字串分塊處理加密解密字串
- Linux系統中對稱加密和非對稱加密區別是什麼?Linux加密
- Linux SSH是什麼?對稱加密和非對稱加密有何區別?Linux加密
- HTTPS詳解-加密演算法(一)HTTP加密演算法