分組密碼
一、分組密碼的模式
分組密碼:是每次只能處理特定長度的一塊資料的一類演算法,這裡的"一塊"就稱為分組。此外,乙個分組的位元數就稱為位元長度;des和3des分組長度都是64位元,aes的分組長度是128位元。
流密碼:對資料流進行連續處理的一類密碼演算法。流密碼中一般以1位元,8位元或32位元等為單位進行加密與解密。
模式:分組密碼演算法只能加密固定長度的分組,但是我們需要加密的明文長度可能會超過分組密碼的分組長度,這時就需要對分組密碼演算法進行迭代,以便將一段很長的明文全部加密。而迭代的方法就稱為模式。
模式有很多種,分組密碼的主要模式有以下5種
ecb模式:electronic codebook mode(電子密碼本模式)
cbc模式:cipher block chaining mode(密碼分組鏈結模式)
cfb模式:cipher feeback mode(密文反饋模式)
ofb模式:output feeback mode(輸出反饋模式)
ctr模式:counter mode(計數器模式)
在詳細介紹模式之前,我們先學習幾個術語
明文分組:是指分組密碼演算法中做為加密物件的明文。明文分組的長度與分組密碼的分組長度是相等的。
密文分組:是指使用分組密碼演算法將明文分組加密之後所生成的密文。
文章將會提到乙個詞mallory,攻擊者,也就是阿狗(如果你不知道阿狗是誰,請看看初入密碼世界那篇博文,這是鏈結位址
二.ecb模式
在ecb模式中,將明文分組加密之後的結果直接成為密文分組
對ecb模式的攻擊其實很簡單mallory只要將其中分組進行對調就會出現很大的問題。只要觀察一下密文,就知道明文是什麼樣的組合,可以以此為線索來破解密碼,故而ecb模式存在較大的風險。
三.cbc模式
初始化向量:當加密第乙個個明文分組時,由於不存在"前乙個密文分組",因此需要事先準備乙個長度為乙個分組的位元序列來代替"前乙個密文分組",這個位元序列就是初始化向量iv。
如果有乙個密文分組壞了,那麼解密之後將會影響兩個明文的內容;cbc模式中密文分組存在缺失位元時,之後所有的明文分組都會受到影響;初始化向量如果發生位元反轉,會使第乙個明文分組也會受到位元反轉。
三.cfb模式
密文反饋(cfb,cipher feedback)模式類似於cbc,可以將塊密碼變為自同步的流密碼;工作過程亦非常相似,cfb的解密過程幾乎就是顛倒的cbc的加密過程:
需要使用乙個與塊的大小相同的移位暫存器,並用iv將暫存器初始化。然後,將暫存器內容使用塊密碼加密,然後將結果的最高x位與平文的x進行異或,以產生密文的x位。下一步將生成的x位密文移入暫存器中,並對下面的x位平文重複這一過程。解密過程與加密過程相似,以iv開始,對暫存器加密,將結果的高x與密文異或,產生x位平文,再將密文的下面x位移入暫存器。
與cbc相似,平文的改變會影響接下來所有的密文,因此加密過程不能並行化;而同樣的,與cbc類似,解密過程是可以並行化的。
四.ofb模式
輸出反饋模式(output feedback, ofb)可以將塊密碼變成同步的流密碼。它產生金鑰流的塊,然後將其與平文塊進行異或,得到密文。與其它流密碼一樣,密文中乙個位的翻轉會使平文中同樣位置的位也產生翻轉。這種特性使得許多錯誤校正碼,例如奇偶校驗位,即使在加密前計算而在加密後進行校驗也可以得出正確結果。
每個使用ofb的輸出塊與其前面所有的輸出塊相關,因此不能並行化處理。然而,由於平文和密文只在最終的異或過程中使用,因此可以事先對iv進行加密,最後並行的將平文或密文進行並行的異或處理。
可以利用輸入全0的cbc模式產生ofb模式的金鑰流。這種方法十分實用,因為可以利用快速的cbc硬體實現來加速ofb模式的加密過程。
五.ctr模式
計數模式(ctr模式)加密是對一系列輸入資料塊(稱為計數)進行加密,產生一系列的輸出塊,輸出塊與明文異或得到密文。
ctr 模式被廣泛用於 atm 網路安全和 ipsec應用中,相對於其它模式而言,ctr模式具有如下特點:
硬體效率:允許同時處理多塊明文 / 密文。
軟體效率:允許平行計算,可以很好地利用 cpu 流水等並行技術。
預處理:演算法和加密盒的輸出不依靠明文和密文的輸入,因此如果有足夠的保證安全的儲存器,加密演算法將僅僅是一系列異或運算,這將極大地提高吞吐量。
隨機訪問:第 i 塊密文的解密不依賴於第 i-1 塊密文,提供很高的隨機訪問能力
可證明的安全性:能夠證明 ctr 至少和其他模式一樣安全(cbc, cfb, ofb, ...)
簡單性:與其它模式不同,ctr模式僅要求實現加密演算法,但不要求實現解密演算法。對於 aes 等加/解密本質上不同的演算法來說,這種簡化是巨大的。
無填充,可以高效地作為流式加密使用。
六.比較
公鑰加密 混合加密(對稱加密與非對稱加密)
根據秘鑰的使用方式,將密碼分為兩種 對稱加密 aes 非對稱加密 rsa 在對稱密碼中,加密 解密時使用的是同乙個金鑰 如下圖所示流程 對稱加密流程 在使用對稱加密時,我們不可避免的會遇到秘鑰的配送問題,假設我們alice要傳送乙個通過秘鑰加密過的訊息給到bob,那麼 只有將金鑰傳送給bob,bob...
非對稱加密演算法(公鑰與金鑰)
非對稱加密演算法傳送方使用公鑰,接收方使用私鑰。首先回顧一下非對稱加密演算法的相關知識,闡述一下自己的理解,再說明的原因。非對稱加密演算法 該演算法需要兩個金鑰 公開金鑰和私有金鑰。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密 如果用私有金鑰對資料進行加密,那...
對稱加密 單向加密和公鑰加密的概念和聯絡
下文主要從加密演算法的特徵 常用加密演算法和加密工具等方面,梳理和比較對稱加密 單向加密和公鑰加密的概念及其之間的聯絡。對稱加密 採用單鑰密碼的加密方法,同乙個金鑰可以同時用來加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。常用的單向加密演算法 單向雜湊加密 單向加密又稱為不可逆加密演算法,...