feistel加密
❶ Feistel加密中最後一步交換左右分組有什麼作用
Feistel加密中最後一步交換左右分組是為了提高安全性
Feistel結構就是交搏褲替使地使用替換和置換。替換和置基睜簡換地定義如下:
替換:每個明文元素或元素組被唯一地替換為相應地密文元素或元素組。
置換:明文元素地序列被替換為該序列地一個置換,序列里沒有添加新元素,但是元素出現的順序變了。
分組密碼,是將整個長明文分成若干組,以組為單位進行加密。分組越長意味著安全性越高,但是會降低加密解密的速度。為了簡化加密過程,我們設定每個分組長早纖度都相等,不足則補上空格。
將明文分成若乾等長分組,對於每個分組進行以下加密:
取分組後KSIZE位字元生成子密鑰,將子密鑰與前 (PSIZE - KSIZE)為進行異或加密,再將子密鑰拼接到異或得到的密文後,得到與原分組長度相等的密文C1,再對問C1進行柵欄密碼的加密,最終得到該分組加密的密文。
❷ 04.現代常見分組加密演算法
1.Triple DES
2.IDEA
3.RC6
4.RC6
5.ASE
其實就是有3個密鑰k1,k2,k3,如果m表示明文,C表示密文,他們是這樣操作的:
DES1(m)=>C1
DES2(C1)=>C2
DES3(C3)=>C3
DES密鑰太短是其短板,3DES密鑰長度為k1+k2+k3 = 56*3 = 168bit
既然都Triple自然就有double,為什麼不用Double DES呢?
我們先來看下double des:
首先根據DESC密鑰太短的特點,的確是有了double desc,可用中間相遇攻擊破解(老師坑爹沒講什麼是中間相遇攻擊,日後補上),經過加密有2^64個可能的密文,密鑰長度為112bit(56+56),所以選擇密鑰的可能性達到2^112,於是對給定一個明文P加密成密文有2^112/2^64 = 2^48種可能,對於給定兩個明文密文對,虛警率降為2^(46-64)=2^-16,用中間相遇攻擊大概可用2^57 可暴力破解
那麼如何解決中間相遇攻擊呢?於是設計出了Triple des,它一共有四種模式:
1.DES-EEE3:3個不同的密鑰,順序用三次加密演算法
2.DES-EDE3:3個不同的密鑰, 加密-解密-加密
3.DES-EEE2:兩個不同的密鑰,k1,k2,k1,依次k1加密,k2加密,k1加密
4.DES-EDE2:兩個不同的密鑰,k1,k2,k1,依次k1加密,k2解密,k1加密
這里我們著重介紹第四種,DES-EDE2
同DES相比有如下特點:
1.3DES安全性高,密鑰長度大於DES
2.3DES可抵抗中間相遇攻擊
3.可向下兼容,我們設k2=k1,則密鑰均為k1,上圖中A過程加密後在B過程解密,最後在C過程又加密,相當於僅用k1加密一次,兼容了DES,解密同理
4.相比於DES效率低些
要求:1.效率比3DES高
2.至少和3DES一樣安全,數據分組長度128bit
它有如下特點:
1.不屬於Feistel結構,屬於SP網路
2.加密,解密相似但不對稱
3.支持128/32=Nb數據塊大小
4.支持128/192/256(/32=Nk)密鑰長度
5.結構簡單速度快
什麼是Feistel結構?
Feistel 的優點在於:由於它是對稱的密碼結構,所以對信息的加密和解密的過程就極為相似,甚至完全一樣。這就使得在實施的過程中,對編碼量和線路傳輸的要求就減少了幾乎一半
什麼是SP網路結構?
在這種密碼的每一輪中,輪輸入首先被一個由子密鑰控制的可逆函數S作用,然後再對所得結果用置換(或可逆線性變換)P作用,S和P分別被稱為混亂層和擴散層,主要起混亂和擴散作用
通過置換和替換迭代加密(最後一輪沒有列混淆)
❸ 什麼是Feistel密碼結構,其有什麼作用
Feistel 密碼結構,在密碼學研究中,Feistel 密碼結構是用於分組密碼中的一種對稱結構。以它的發明者 Horst Feistel 為名,而Horst Feistel 本人是一位物理學家兼密碼學家,在他為 IBM 工作的時候,為Feistel 密碼結構的研究畢銷謹奠定了基礎。很多密碼標准都採用了Feistel 結構,其中包括DES。Feistel 的優點在於:由於它是對稱的密碼結構,所以對信息的加密和解密的過程就手基極為相似,甚至完全一樣。這就使得在實施的過程中,對編碼量和線路傳斗亂輸的要求就減少了幾乎一半。
❹ Feistel結構為什麼是加解密互逆
密碼的意思。
在密碼學中,一個密碼是一旦改種分組密碼的結構對稱的結構,命名為德國IBM Horst Feistel密碼;它通常也被稱為Feistel網路。一個大的塊密碼的使用方案,包括數據加密標准(DES)。
Feistel結構的優點是加密和解激逗密操作是非常相似的,在某些情況下,即使是相同的,只需要一個反轉的關鍵時間表。因此需要實現這樣一個密碼的代碼或電路尺寸的一半。
性質使得硬體更容易實現明遲賣密碼Feistel結構迭代。
,- -
❺ feistel密碼解密相當於對密文進行加密運算,但秘鑰編排方案要逆序使用
搜一下:feistel密碼解密相當於對密文進行加密運算,但秘鑰編排方案要逆序使用
❻ 為什麼說研究Feistel密碼很重要
事實上,現在使用的大多頌余數對寬如稱分組加密演算法都是基於Feistel分組密碼結構的。因為這個原慎櫻啟因,研究Feistel密碼的設計原理就很重要了.
❼ 密碼技術(三、二)之對稱密碼(DES)
——用相同的密鑰進行加密和解密
此次主要介紹比特序列運算和XOR(異或)運算。這兩種運算在計算機數據處理中經常出現,因此大家應該在此屬性他們。
DES(Data Encryption)是1977年美國聯邦信息處理標准(FIPS)中所採用的一種對稱密碼(FIPS46-3)。DES一直以來被美國及其他國家的政府和銀行等廣泛使用。
隨著計算機的進步,現在DES已經能夠被暴力破解,強度大不如前了。20世紀末,RSA公司舉辦過破譯DES密鑰的比賽,我們可以看一看RSA公司官方公布的比賽結果:1997年的DES Challenge I 中用了96天破譯密鑰,1998年的DES Challenge II-1中用了41天,1998年的DES Challenge II-2中用了56小時,1999年的DES Challenge III 中只用了22小時15分鍾。
由於DES的密文可以在短時間內被破譯,因此除了用它來解密一起的密文以外,現在我們不應該再使用DES了。
DES是一種將64比特的明文加密成64比特的密文的對稱密碼演算法,它的密鑰的長度是56比特。盡管從規格上來說,DES的密鑰長度是64比特,但由於每隔7比特會設置一個用於錯誤檢查的比特,因此實質上其密鑰長度是56比特。
DES 是以64比特的明文(比特序列)為一個單位來進行加密的,這個64比特的單位稱為 分組 ,一般來說,以分組為單位進行處理的密碼演算法稱為 分組密碼 ,DES就是分組密碼的一種。
DES每次只能加密64比特的數據,如果要加密的明文比較長,就需要對DES加密進行迭代(反復),而迭代的具體方式就稱為 模式 。
DES的基本結構是由Horst Feistel設計的,因此也稱為 Feistel網路(Feistel network) 、Feistel結構(Feistel structure)或者Feistel密碼(Feistel cipher)。這一結構不僅被用於DES,在其他很多密碼演算法中也有應用。
Feistel網路中,加密的各個步驟稱為輪,整個加密過程就是進行若干次輪的循環,下圖,展現的是Feistel網路中一輪的計算流程。DES是一種16輪循環的Feistel網路。
但是,這樣看來,「右側」根本沒有加密,因此我們需要用不同的子密鑰對一輪的處理重復若干次,並在沒兩輪處理指間將左側和有責的數據對調。
上圖展現了一個3輪的Feistel網路,3輪加密計算需要進行兩次左右對調。對調只在兩輪指間進行,租後一輪結束不需要對調。
那麼,Feistel網路如何解密呢?
如上圖所示,通過上述操作都能夠將密文正確的還原明文。
有多輪的情況也是一樣的,也就是說,Feistel網路的解密操作,只要按照相反的順序來使用子密鑰就可以完成了,而Feistel網路本身的結構,在加密和解密都是完全相同的。
該系列的主要內容來自《圖解密碼技術第三版》
我只是知識的搬運工
文章中的插圖來源於原著
❽ 什麼是feistal cipher
feistal cipher是一種密碼Feistel密碼用於構造的對稱結構。分組密碼,以德國-出生猛歷物沒知歲理學家和cryptographer霍斯特·Feistel在為的工作的同時,誰做了開拓性的研究ibm(美國);它也通常被稱為Feistel網路.密碼使用該方案,包括數據加密標准(Des)。在結構具有以下優點:加密和解密操作非常相似,甚至在某些情況下是枯睜相同的,只需要反轉關鍵進度表因此,實現這種密碼所需的代碼或線路的大小幾乎減半。
一種網路是一種迭代密碼,其內部函數稱為圓函數。
❾ 【密碼學筆記】第3部分 對稱密碼
跟諸位大牛相比,筆者閱歷尚淺、經驗不足,筆記中若有錯誤,還需繼續修正與增刪。歡迎大家的批評與指正。
查看上一篇請點擊以下鏈接: 【密碼學筆記】第2部分 歷史上的密碼
1. XOR運算
2. 一次性密碼本
3. 對稱密碼演算法
3.1 DES
3.2 三重DES
3.3 AES
3.4 Rijndael
4. 對稱密碼的選擇
5. 對稱密碼的評價
參考書目
XOR運算,又稱為 異或 運算,運算結果是 同0異1 。
對同一個比特序列進行兩次XOR之後就會回到最初的狀態,因此XOR運算可用於對稱密碼的加密和解密。
一次性密碼本(又稱為 維納密碼 )是一種非常簡單的密碼,它的原理是「 將明文與一串隨機的比特序列進行XOR運算 」。
一次性密碼本是無法破譯的。 這是因為在對它嘗試解密的過程中,所有的排列組合都會出現,既會包含規則字元串,也會包含英文單詞,還會包含亂碼。由於明文中所有可能的排列組合都會出現,因此 我們無法判斷其中哪一個才是正確的明文 。
一次性密碼本是一種非常不實用的密碼。 原因如下:
a. 密鑰的配送 。( 最大的問題 )如果能夠有一種方法將密鑰安全地發送出去,那麼就可以用同樣的方法安全地發送明文。
b. 密鑰的保存 。 密鑰的長度必須和明文的長度相等。 如果能夠有辦法安全保存與明文一樣長的密鑰,那就有辦法安全保存明文本身。
c. 密鑰的重用 。在一次性密碼本中絕對不能重用過去用過的隨機比特序列,因為作為密鑰的比特序列一旦泄露,過去所有的機密通信內容將全部被解密。
d. 密鑰的同步 。在通信過程中,發送者和接收者的密鑰的比特序列不允許有任何錯位,否則錯位的比特後的所有信息都將無法解密。
e. 密鑰的生成 。一次性密碼本需要生成大量的隨機數,這里的隨機數並不是通過計算機程序生成的偽隨機數,而必須是無重現性的真正隨機數。
DES是一種將64比特的明文加密成64比特的密文的對稱密碼演算法,它的密鑰長度是56比特。
DES是以64比特的明文(比特序列)為一個單位來進行加密的,這個64比特的單位稱為 分組 。以分組為單位進行處理的密碼演算法稱為 分組密碼 。
DES每次只能加密64比特的數據,如果要加密的明文比較長,就需要對DES加密進行迭代,而迭代的具體方式就稱為 模式(mode) 。
DES的基本結構又稱為 Feistel網路 ,這一結構不僅被用於DES,在其他很多密碼演算法中也有應用。在Feistel網路中,加密的各個步驟稱為 輪(round) ,整個加密過程就是進行若干次輪的循環。下圖展現的是Feistel網路中一輪的計算流程。DES是一種16輪循環的Feistel網路。
一輪的具體計算步驟 如下:
a. 將輸入的數據等分為左右兩部分;
b. 將輸入的右側直接發送到輸出的右側;
c. 將輸入的右側發送到輪函數;
d. 輪函數根據右側數據和子密鑰,計算出一串看上去是隨機的比特序列;
e. 將上一步得到的比特序列與左側數據進行XOR運算,並將結果作為加密後的左側。
我們需要用不同的子密鑰對一輪的處理重復若干次,並在每兩輪處理之間將左側和右側的數據對調。
Feistel網路的解密操作只要按照相反的順序來使用子密鑰就可以完成了。
Feistel網路的性質 :
a. 輪數可以任意增加;
b. 加密時無論使用任何函數作為輪函數都可以正確解密(即使該函數不存在反函數);
c. 加密和解密可以用完全相同的結構來實現。
綜上所述,無論是任何輪數、任何輪函數,Feistel網路都可以 用相同的結構實現加密和解密 ,且加密的結果必定能夠正確解密。
三重DES是為了增加DES的強度,將DES重復3次所得到的一種密碼演算法,也稱為 TDEA ,通常縮寫為 3DES 。
明文經過三次DES處理才能變成最後的密文,由於DES密鑰的長度實質上是56比特,因此三重DES的密鑰長度就是168比特。
三重DES並不是進行三次DES加密,而是 加密→解密→加密 的過程,目的是 讓三重DES能夠兼容普通的DES ,當所有密鑰都相同時,三重DES也就等同於普通的DES。
盡管三重DES目前還被銀行等機構使用,但其處理速度不高,除了特別重視向下兼容性的情況以外,很少被用於新的用途。
AES是取代其前任標准(DES)而成為新標準的一種對稱密碼演算法。全世界的企業和密碼學家提交了多個對稱密碼演算法作為AES的候選,最終選出了一種名為 Rijndael 的對稱密碼演算法,並將其確定為AES。
AES的選拔並不僅僅考慮一種演算法是否存在弱點,演算法的速度、實現的容易性等也都在考慮范圍內。此外,這種演算法還必須能夠在各種平台上有效工作。
Rijndael是由比利時密碼學家設計的 分組密碼演算法 ,被選為新一代的標准密碼演算法——AES。
和DES一樣,Rijndael演算法也是由多個 輪 構成的,其中每一輪分為 SubBytes 、 ShiftRows 、 MixColumns 和 AddRoundKey 共4個步驟。DES使用Feistel網路作為其基本結構,而Rijndael使用的是 SPN結構 。
加密過程 :
a. 首先,需要 逐個位元組 地對16位元組的輸入數據進行SubBytes處理,即以每個位元組的值(0~255)為索引,從一張擁有256個值的 替換表 (S-Box)中查找出對應值( 類似於簡單替換密碼 )。
b. 進行ShiftRows處理,即以4位元組為單位的 行(row) 按照一定的規則向左平移,且每一行平移的位元組數是不同的。
c. 進行MixColumns處理,即對一個4位元組的值進行比特運算,將其變為另外一個4位元組值。
d. 最後,將MixColumns的輸出與輪密鑰進行 XOR ,即進行AddRoundKey處理。至此,Rijndael的一輪就結束了。實際上,在Rijndael中需要重復進行10~14輪計算。
在SPN結構中, 輸入的所有比特在一輪中都會被加密 。和每一輪都只加密一半輸入的比特的Feistel網路相比,這種方式的優勢在於 加密所需要的輪數更少 。此外,這種方式還有一個優勢,即 SubBytes、ShiftRows和MixColumns可以分別以位元組、行和列為單位進行並行計算 。
在Rijndael的 加密 過程中,每一輪所進行的處理為:
SubBytes→ShiftRows→MixColumns→AddRoundKey
而在 解密 時,則是按照相反的順序來進行的,即:
AddRoundKey→InvMixColumns→InvShiftRows→InvSubBytes
解密過程 :
Rijndael演算法背後有著 嚴謹的數學結構 ,即從明文到密文的計算過程可以全部用公式來表達,這是以前任何密碼演算法都不具備的性質。如果Rijndael的公式能夠通過數學運算來求解,那也就意味著Rijndael能夠通過數學方法進行破譯,這也為新的攻擊方式的產生提供了可能。
(1) 因為現在用暴力破解法已經能夠在現實的時間內完成對DES的破譯, DES不應再用於任何新的用途 。但是也需要保持與舊版本軟體的兼容性。
(2) 盡管在一些重視兼容性的環境中會使用三重DES,但 我們也沒有理由將三重DES用於新的用途 ,它會逐漸被AES所取代。
(3) 現在應該使用的演算法是AES(Rijndael) ,因為它安全、快速,而且能夠在各種平台上工作。
(4) AES最終候選演算法應該可以作為AES的備份 ,因為這些密碼演算法也都經過了嚴格的測試,且沒有發現任何弱點。
(5) 一般來說, 我們不應該使用任何自製的密碼演算法 ,而是應該使用AES。
優點 :
使用一種密鑰空間巨大,且在演算法上沒有弱點的對稱密碼,就可以通過密文來確保明文的機密性。 巨大的密鑰空間能夠抵禦暴力破解,演算法上沒有弱點可以抵禦其他類型的攻擊。
不足 :
a. 用對稱密碼進行通信時,還會出現 密鑰的配送問題 ,即如何將密鑰安全地發送給接受者。為了解決密鑰配送問題,需要 公鑰密碼技術 。
b. 盡管使用對稱密碼可以確保機密性,但僅憑這一點還並不能完全放心。 例如發送者可能發送偽造的密文,並利用解密時返回的錯誤來盜取信息。
衷心感謝您的閱讀。
查看下一篇請點擊以下鏈接: 【密碼學筆記】第4部分 分組密碼的模式
❿ 證明DES解密過程是加密過程的逆過程
問題:證明DES解密過程是加密過程的逆運算
證明:
對於DES演算法來說,其基本結構和Feistel密碼的結構相同,只不過多了個S盒子。
結論①:Feistel密碼的解密過程是加密過程的逆過程。
說明如下:
在DES演算法中,其用到了Feistel密碼的經典結構,如下:
Li=Ri-1
Ri=Li-I(XOR)F(Ri-1,Ki)
下面是具體的圖說明:
在Feistel加密的最後一輪,也就是i=16時,輸入為LE15||RE15,而輸出為:
LE16=RE15
RE16=LE15(XOR)F(RE15,K16)
而後交換R和L作為密文輸出
即:LE17=RE16,RE17=LE16
而在Feistel解密的第一輪,即i=1時,先將輸出的密文交換回來作為輸入,即LD0=LE17=RE16,RD0=RE17=LE16
之後再按上圖進行運算,
即LD1=RD0=LE16=RE15;
RD1=LD0 (XOR) F(RD0,K16)=RE16 (XOR) F(RD0,K16)=LE15 (XOR) F(RE15,K16) (XOR) F(RD0,K16)=LE15,所以解密的第一輪輸出為RE15||LE15,這正是加密過程第16輪輸入左右敏局敗部分互換的值。
結論:所以對於Feistel密碼來說,其解密過程正是加密過程的逆過程。
故而我們有第二個結論:
結論②:對於採用了Feistel密碼為基礎結構的DES密碼來橋顫說,其解密過程正是加密過程的逆運算。
只不過在DES密碼中,在進行(XOR)運算後會通過S盒子進行代替和臘鉛選擇,不過這個不是證明要點,故而證明到此結束。