
設計密碼系統的2個基本方法為擴散與混淆,為的是抵抗敵手給密碼系統實施統計分析。擴散是散發明文的統計性質至密文里,它的實現方式是讓明文的每一位影響密文多位的值,等同於密文中每位都被明文中多位影響;混淆是把密文與密鑰的統計關係接近充分繁雜,為不讓敵手得到密鑰。
Horst Feistel在20世紀70年代初,設計了Feistel網絡結構,提出用乘積密碼能得到淺易的代換密碼,乘積密碼指依次進行2個或多個基本密碼系統。
Feistel網絡里每輪的結構均一致,每輪的右半數據被用在輪函數f後,和左半數據異或,此過程就是代換。每輪的輪函數結構均一樣,不過用不一樣的子密鑰K做參數。實現代換後,將左半與右半的數據進行交換,此過程叫做置換。此結構是Shannon提的代換-置換網絡的專有形式。
實現Feistel網絡和如下參數與特性存在關係。
1.分組大小
分組越是大那麼安全性就越為高,不過加密速度也越低。設計分組密碼用的最廣的分組大小即為64bit。
2.密鑰大小
密鑰越長安全性越高,不過加密速度就會越低。現在一般用128比特的密鑰。
3.輪數
單輪結構遠遠無法確保安全性,多輪結構有充分的安全性。典型地,輪數設為16。
4.子密鑰產生算法
此算法越繁雜,那麼密碼分析則越難。
5.輪函數
輪函數越是複雜,密碼分析則越難。
