❶ 密碼技術(四、三)之分組模式(CFB模式)
CFB模式的全稱是Cipher FeedBack (密文反饋模式)。在CFB模式中,前一個密文分組會被送回密碼演算法的輸入端。所謂反饋,這里指的就是返回輸入端的意思。
CFB模式中,明文分組並沒有通過密碼演算法直接進行加密。明文分組和密文分組之間並沒有經過「加密」這一步驟。在CFB模式中,明文分組和密文分組之間只有一個XOR。
在生成第一個密文分組時,由於不存在前一個輸出的數據,因此需要使用初始化向量來替代,這一個點和CBC模式相同的。一般來說,我們需要在每次加密時生成一個不同的隨機比特序列用作初始化向量。
其實CFB模式模式的結構與我們前面介紹的一次性密碼本非常相似的。一次性密碼本是通過將「明文」與「隨機比特序列」進行XOR運算生成「密文」的。而CFB模式則是通過將「明文分組」與「密碼演算法的輸出」進行XOR運算來生成「密文分組」的。在通過XOR來進行加密這一點,兩者是非常相似的。
在CFB模式中,密碼演算法的輸出相當於一次性密碼本中的隨機比特序列。由於密碼演算法的輸出是通過計算得到的,並不是真正的隨機數,因此CFB模式不可能像一次性密碼本那樣具備理論上不可破譯的性質。
CFB模式模式中由密碼演算法所生產的比特序列稱為 密鑰流 。在CFB模式中,密碼演算法就相當於用來生成密鑰流的偽隨機數生成器,而初始化向量就相當於味素技術生成器的「種子」。
在CFB模式中,明文數據可以被逐比特加密,因此我們可以將CFB模式看作是一種使用 分組密碼來實現流密碼 的方式。
CFB模式解密過程,上圖已經展示,CFB模式解密時,需要注意的是分組密碼演算法依然執行加密操作,因為密鑰流是通過加密操作來生成的。
有一天,Alice向Bob發送了一條消息,這兩條消息是由4個密文分組組成的。主動攻擊者Mallory將該消息中額後3個密文分組保存了下來。轉天,Alice又向Bob發送了內容不同的4個密文分組(我們假設使用了相同的密鑰)。Mallory用昨天保存下來的3個密文分組將今天發送的後3個密文分組進行了替換。
於是,在Bob解密時,4個分組中就只有第1個可以解密成正確的明文,第2個會出錯,,而第3和第4個則變成了Mallory替換的內容(也就是昨天發送的明文的內容)。Mallory沒有破解密碼,就成功地將以前的的電文混入了新的電文中。而第2個分組出錯到底是通信錯誤,還是被人攻擊所造成?Bob是無法做出判斷的。
該系列的主要內容來自《圖解密碼技術第三版》
我只是知識的搬運工
文章中的插圖來源於原著
❷ 密碼技術(四、二)之分組模式(CBC模式)
CBC模式是指將前一個密文分組與當前明文分組的內容混合起來進行加密,這樣就可以避免ECB模式的弱點。
CBC模式的全稱Cipher Block Chaining 模式(密文分組組鏈接模式),之所以叫這個名字是因為密文分組是像鏈條一樣相互連接在一起。
在CBC模式中,首先將明文分組與前一個密文分組進行XOR運算,然後再進行加密。
ECB模式 和 CBC模式比較
當加密第一個明文分組是,由於不存在「前一個密文分組」,因此需要事先准備一個長度為一個分組的比特序列來替代「前一個密文分組」,這個比特序列稱為 初始化向量 ,通常縮寫為IV。每次加密時都會隨機產生一個不同的比特序列來作為初始化向量。
明文分組在加密之前一定會與「前一個密文分組」進行XOR運算,因此即便明文分組1和2的值是相等的,密文分組1和2的值也不一定是相等的。這樣一來,ECB模式的缺陷在CBC模式中就不存在了。
在CBC模式找那個,我們無法單獨對一個中間的明文分組進行加密。例如,如果要生成密文分組3,則至少需要湊齊明文分組1、2、3才行。
假設CBC模式加密的密文分組中有一個分組損壞了。在這種情況下,只要密文分組的長度沒有發生編號,則解密時,最多隻會影響2個分組受到數據損壞的影響。
假設CBC模式的密文分組中有一些比特缺失了,那麼此時即便只缺失了1比特,也會導緻密文分組的長度發生變化,此後的分組發生錯位,這樣一來,缺失比特的位置之後的密文分組也就全部無法解密了。
假設主動攻擊者Mallory的目的是通過修改密文來操縱解密後的明文。如果Mallory能夠對初始化向量中的任意比特進行反轉,則明文分組中相應的比特也會被反轉。這是因為在CBC模式的解密過程中,第一個明文分組會和初始化向量進行XOR運算。
這樣,Mallory 就可以對初始化向量進行攻擊,但是想要對密文分組也進行同樣的攻擊就非常困難了。
填充提示攻擊 (Padding Oracle Attack)是一種利用分組密碼中的填充部分來進行攻擊的方法。在分組密碼中,當明文長度不為分組長度的整數倍時,需要在最後一個分組填充一些數據使其湊滿一個分組的長度。在填充提示攻擊中,攻擊者會反復發送一段密文,每次發送時都對填充的數據進行少許改變。由於接收者在無法正確解密時會返回一個錯誤消息,攻擊者通過這一錯誤消息就可以獲得一部分與明文相關的信息。這一攻擊方式並不僅限於CBC模式,而是適用於所有需要進行分組填充的模式。2014年對SSL3.0造成重大影響的POODLE攻擊實際上就是一種填充攻擊。要防禦這種攻擊,需要對密文進行認證,確保這段密文的確是由合法的發送者在制定明文內容的前提下生成的。
初始化向量必須使用不可預測的隨機數。然後在SSL/TSL1.0的版本協議中,初始向量並沒有使用不可預測的隨機數,而是使用了上一次CBC模式加密時的最後一個分組。為了防禦攻擊者對此進行攻擊,TSL1.1以上的版本中改為了必須顯式得傳送初始化向量。
確保互聯網安全的通信協議之一SSL/TSL,就是使用CBC模式來確保通信的機密性的,如使用CBC模式三重DES的3DES_EDE_CBC以及CBC模式256比特AES的AES_256_CBC等。
分組密碼中海油一種模式叫作CTS模式(Cipher Text Stealing模式)。在分組密碼中,當明文長度不能被分組長度整除時,最後一個分組就需要進行填充。CTS模式是使用最後一個分組的其哪一個密文分組數據來講信息填充的,它通常和ECB模式以及CBC模式配合使用。根據最後一個分組的發送順序不同,CTS模式有幾種不同的變體(CBC-CS1、CBC-CS2、CBC-CS3)。
該系列的主要內容來自《圖解密碼技術第三版》
我只是知識的搬運工
文章中的插圖來源於原著
❸ 什麼是分組密碼和序列密碼
分組密碼是將明文消息編碼表示後的數字(簡稱明文數字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數字(簡稱密文數字)序列。
序列密碼也稱為流密碼(Stream Cipher),它是對稱密碼演算法的一種。序列密碼具有實現簡單、便於硬體實施、加解密處理速度快、沒有或只有有限的錯誤傳播等特點,因此在實際應用中,特別是專用或機密機構中保持著優勢,典型的應用領域包括無線通信、外交通信。 1949年Shannon證明了只有一次一密的密碼體制是絕對安全的,這給序列密碼技術的研究以強大的支持,序列密碼方案的發展是模仿一次一密系統的嘗試,或者說「一次一密」的密碼方案是序列密碼的雛形。如果序列密碼所使用的是真正隨機方式的、與消息流長度相同的密鑰流,則此時的序列密碼就是一次一密的密碼體制。若能以一種方式產生一隨機序列(密鑰流),這一序列由密鑰所確定,則利用這樣的序列就可以進行加密,即將密鑰、明文表示成連續的符號或二進制,對應地進行加密,加解密時一次處理明文中的一個或幾個比特。
❹ 分組密碼
(1)分組密碼演算法只負責固定長度消息的加、脫密;
(2)工作模式負責長消息的處理方式;
(3)短塊處理方式負責短塊處理方式的約定
也稱塊密碼,它是將明文消息經過編碼表示後的二進制序列m0,m1,......,mi,......劃分成若干個固定長度(p)的組(或塊)m=(m0,m1,......,mn),各組分別在密鑰K=(K0,K1,......,Kt-1)的控制下轉換成長度為n的密文分組C=(C0,C1,......,Cn-1)。其本質是一個從明文空間(m長的比特串的集合)P到密文空間(n長的比特串的集合)C的一一映射。(一般而言,p=n)
當分組長度較小時候,攻擊者通過窮舉明文空間,得到密碼變換規律,難以抵擋選擇明文攻擊。
如果密鑰量小,攻擊者可以有效地通過窮舉密鑰,對密文進行解密,來得到有意義的明文,難以抵擋唯密文攻擊。
使攻擊者出了窮舉法攻擊以外,找不到其它有效地數學破譯方法。
便於軟體和硬體的實現,性能好。
使用迭代方式,由簡單得、容易實現的模塊搭建出抗破譯能力強的分組密碼演算法;
每個模塊各司其責、互相彌補對方的缺點,合作完成分組密碼演算法的搭建工作。
擴散是指要將演算法設計成明文每一比特的變化盡可能多的影響到輸出密文序列的變化,以便隱蔽明文的統計特性。形象地稱為雪崩效應。
擴散的另外一層意思是密鑰每一位的影響盡可能迅速地擴展到較多的密文比特中去。即擴散的目的是希望密文中的任一比特都要盡可能與明文、密鑰相關聯,或者說,明文和密鑰中的任一比特值發生改變,都會在某種程度上影響到密文值得變化,以防止將密鑰分解成若干個孤立小部分,然後各個擊破。
混亂,指在加解密變換過程中明文、密鑰以及密文之間的關系盡可能地復雜化,以防密碼破譯者採用解析法(即通過建立並求解一些方程)進行破譯攻擊。
混亂可以用「攪拌機」來形象地解釋,將一組明文和一組密鑰輸入到演算法中,經過充分混合,最終變成密文。同時要求,執行這種「混亂」作業的每一步都必須是可逆的,即明文混亂以後能得到密文,反之,密文經過逆向的混亂操作後能恢復到明文。(按照混亂原則,分組密碼演算法應該有復雜的非線性因素)
依次使用兩個或者兩個以上的基本密碼,所得結果的密碼強度將強於所有單個密碼的強度,即乘積密碼是擴散和混亂兩種基本密碼操作的組合變換,這樣能夠產生比個子單獨使用時更強大的密碼系統。選擇某個較為簡單的密碼變換(包含多個基本密碼),在密鑰控制下以迭代方式多次利用它進行加密變換,就可以實現預期的擴散和混亂效果。
SP網路是由多重S變換和P變換組合成的變換網路,它是乘積密碼的一種。其基本操作是S變換(代替)和P變換(換位),前者稱為S盒,後者稱為P盒。S盒起到混亂作用,P盒起到擴散的作用。SP網路的構造及S盒、P盒的構造如下圖所示:
SP網路具有雪崩效應。所謂雪崩效應是指,輸入(明文或密鑰)即使只有很小的變化,也會導致輸出產生巨大的變化現象。
能夠抵禦選擇明文攻擊
能夠抵禦唯密文攻擊
輪函數F是分組密碼的核心,是分組密碼中單輪加密解密函數,其基本准則:
其主要性能指標是:安全性、速度、靈活性。
子密鑰的生成也是也是迭代分組演算法的一個重要組成部分,是從初始(種子)密鑰產生迭代的各輪要使用的子密鑰的演算法。也就是說,輪函數F的功能是在子密鑰的參與和控制下實現的子密鑰的生成很重要,其評價指標:
1.實現簡單、速度滿足要求;
2.種子密鑰的所有比特對每個字密鑰比特的影響應大致相同;
3.沒有弱密鑰或弱密鑰容易確定。
分組密碼一般採用簡單的、安全性弱的加密函數進行多輪迭代運算,使得安全性增強。一般來說,分組密碼迭代輪數越多,密碼分析越困難,但也不是追求迭代數越多越好,過多迭代輪數會使加密演算法的性能下降,而安全性增強不明顯。決定迭代輪數的准則:使密碼分析的難度大於簡單窮舉搜索攻擊的難度。分組密碼迭代輪數一般採用8,10,12,16,20的居多。
❺ 分組密碼加密模式選擇有哪些
加密一般分為對稱加密(Symmetric Key Encryption)和非對稱加密(Asymmetric Key Encryption)。對稱加密又分為分組加密和序列密碼。分組密碼,也叫塊加密(block cyphers),一次加密明文中的一個塊。是將明文按一定的位長分組,明文組經過加密運算得到密文組,密文組經過解密運算(加密運算的逆運算),還原成明文組。序列密碼,也叫流加密(stream cyphers),一次加密明文中的一個位。是指利用少量的密鑰(制亂元素)通過某種復雜的運算(密碼演算法)產生大量的偽隨機位流,用於對明文位流的加密。解密是指用同樣的密鑰和密碼演算法及與加密相同的偽隨機位流,用以還原明文位流。在分組加密演算法中,有ECB,CBC,CFB,OFB這幾種演算法模式。ECB(Electronic Code Book)/電碼。簡單,有利於並行計算,誤差不會被傳送;不能隱藏明文的模式;repetitions in message may show in cipher text/在密文中出現明文消息的重復。可能對明文進行主動攻擊;加密消息塊相互獨立成為被攻擊的弱點/weakness e to encrypted message blocks being independent. CBC(Cipher Block Chaining) 這個詞在分組密碼中經常會用到,它是指一個明文分組在被加密之前要與前一個的密文分組進行異或運算。當加密演算法用於此模式的時候除密鑰外,還需協商一個初始化向量(IV),這個IV沒有實際意義,只是在第一次計算的時候需要用到而已。採用這種模式的話安全性會有所提高。不容易主動攻擊,安全性好於ECB,適合傳輸長度長的報文,是SSL、IPSec的標准。each ciphertext block depends on all message blocks/每個密文塊依賴於所有的信息塊thus a change in the message affects all ciphertext blocks/明文消息中一個改變會影響所有密文塊need Initial Vector (IV) known to sender & receiver/發送方和接收方都需要知道初始化向量 。
❻ 請簡述什麼是序列密碼與分組密碼,它們的區別是什麼
序列密碼(Stream Cipher):
又稱流密碼,將明文消息按字元逐位進行加密。
分組密碼(Block Cipher):
在分組密碼中將明文消息分組(每組有多個字元),逐組進行加密。
❼ 關於分組密碼CBC模式與CTR模式的對比
在對稱分組密碼體制中 CBC模式(密文分組鏈接模式) 與 CTR模式(計數器模式) 是安全性最高且最常用的兩種模式,在這兩種模式中前一分組會以不同的形式影響下一分組的加密過程,因此這兩種模式的安全性相對較高。
在項目研發過程中,需求是要在嵌入式節點間實現實時安全通信,而CTR模式能夠支持並行加解密過程計算,因而 在項目中選擇CTR模式的SM4對稱加密演算法。
以下對於分組密碼中CBC模式以及CTR模式的原理進行簡單介紹:
CBC模式的全稱是Cipher Block Chaining模式(密文分組鏈接模式),之所以叫這個名字,是因為密文分組像鏈條一樣相互連接在一起。首先將明文分組與前一個密文分組進行XOR運算,然後再進行加密。 註:對於第一個分組需要構造一個長度為分組長度的初始向量IV。
1)能夠隱蔽明文的數據模式,相同的明文對應的密文一般是不同的;
2)無法單獨對中間的明文分組進行加密。例如,如果要生成密文分組3,必須按序生成密文分組1和密文分組2。
CTR模式全稱counter模式(計數器模式)。CTR模式通過對逐次累加的計數器加密來生成密鑰分組與明文分組異或產生密文分組。
CTR模式的解密過程將明文分組與密文分組位置調換即可。
從原理圖中可以看出:
1)能夠隱蔽明文的數據模式,相同的明文對應的密文一般是不同的;
2)CTR模式中可以以任意順序對分組進行加密和解密,能夠以任意順序處理分組,意味著能夠實現並行計算。使用並行計算,CTR模式的加解密是非常快的。