Feistel cipher
出自KMU Wiki
(修訂版本間差異)
在2008年3月19日 (三) 17:55所做的修訂版本 (編輯) Jo7577 (對話 | 貢獻) ←上一個 |
在2008年3月19日 (三) 17:57所做的修訂版本 (編輯) (撤銷) Jo7577 (對話 | 貢獻) 下一個→ |
||
第42行: | 第42行: | ||
<br> | <br> | ||
+ | |||
這個加密演算法的輸入有長度為 2w 位元的明文區塊,以及一把金鑰 K。 | 這個加密演算法的輸入有長度為 2w 位元的明文區塊,以及一把金鑰 K。 | ||
- | + | 這個明文區塊首先會被分成等長的兩半,L0與R0。然後這兩個等長的資料會經由n個回合(pass)的處理,最後再合併在一起形成相對應的密文區塊。 | |
- | |||
- | 然後這兩個等長的資料會經由n個回合(pass)的處理, | ||
- | |||
- | 最後再合併在一起形成相對應的密文區塊。 | ||
| | ||
- | |||
- | |||
- | | ||
第62行: | 第56行: | ||
- | + | | |
- | + | ||
- | | + | |
每一回合都是相同的結構。左半部的資料會經過一次替換的動作,這個動作是藉由先對右半部分的資料進行回合函數F(round function F)的處理,再將結果與左半部分做XOR。每一回合所使用的round function 都是類似的基本結構,但會因為所使用的子金鑰Ki不同而有所不同。在這個替換動作後,接著會將左右兩半的資料做互換的重新排列。<br> | 每一回合都是相同的結構。左半部的資料會經過一次替換的動作,這個動作是藉由先對右半部分的資料進行回合函數F(round function F)的處理,再將結果與左半部分做XOR。每一回合所使用的round function 都是類似的基本結構,但會因為所使用的子金鑰Ki不同而有所不同。在這個替換動作後,接著會將左右兩半的資料做互換的重新排列。<br> | ||
- | + | <br> | |
<br> | <br> |
在2008年3月19日 (三) 17:57所做的修訂版本
<Feistel Cipher> 費斯特密文
什麼是feistel密碼
.
Feistel cipher 是由Feistel在1973所提出,這是個重要的方法,(它是利用不斷更新和替換的密碼檢索表來達到diffusion及confusion)
幾乎所有block的加密方法都是架構於這個方法之上。
內容
Feistel 暗號 是一個 分組密碼 以一個特殊結構(以 Feistel 網路著名) 。
Feistel 網路和相似的建築結合多個圓重覆
- 位元拖曳
- 簡單的非線性作用(經常叫做 S 箱子)
- 線性混合(在模件代數感覺) 使用 XOR
導致一個作用與很多什麼克勞德Shannon 描述了作為"混亂和擴散" 。
這個加密演算法的輸入有長度為 2w 位元的明文區塊,以及一把金鑰 K。
這個明文區塊首先會被分成等長的兩半,L0與R0。然後這兩個等長的資料會經由n個回合(pass)的處理,最後再合併在一起形成相對應的密文區塊。
每一回合,以第i回合為例,其輸入會有Li-1以及Ri-1,而這兩個部分都是由上一回合所產生出來的結果,而子金鑰(subkey)Ki 則是完全由K經特定方式所產生出來的。一般而言,每一把子金鑰都互不相同,也不會與金鑰K相同,他們都是金鑰K透過一個子金鑰產生演算法(subkey generation algorithm)所產生出來的。
每一回合都是相同的結構。左半部的資料會經過一次替換的動作,這個動作是藉由先對右半部分的資料進行回合函數F(round function F)的處理,再將結果與左半部分做XOR。每一回合所使用的round function 都是類似的基本結構,但會因為所使用的子金鑰Ki不同而有所不同。在這個替換動作後,接著會將左右兩半的資料做互換的重新排列。