
一個好的分組密碼在確保足夠安全強度的前提下,還應有運行效率、存儲空間、不同運行平台可實現性及靈活性等相關因素考慮,分組密碼設計的基本原則基本如下。
1.安全設計原則
為確保分組密碼的安全強度,其在設計時應按照以下基本原則:
(1)分組長度夠長,避免明文窮舉攻擊。
(2)密鑰量夠大,也要儘可能不使用弱密鑰,避免密鑰窮舉攻擊,但因分組密碼體制有密鑰管理問題,密鑰量也不可太大。
(3)密鑰變換充分繁雜,可抵禦各種已經知道的攻擊,即攻擊者除窮舉攻擊外再找不到有效的攻擊方法。
(4)數據擴展夠小,通常無數據擴展。
(5)當加密或解密明文或密文包錯誤,對後面密文解密的影響盡最大程度的小。
2.實現設計原則
從分組密碼算法實現角度來看,分組密碼加密和解密的操作很簡單,有助於軟硬件高速實現。
1)硬件實現原則
分組密碼在硬件實現中,一般把密碼算法設計為一個密碼協處理器,加密和解密可以用加密協處理器快速完成。根據硬件實現特點,分組密碼設計應儘量滿足下述原則:
(1)應儘量使加密與解密算法結構一樣,僅密鑰使用方式不同,保證加密與解密用同一密碼協處理器,否則加密與解密算法必須用不同的協處理器。
(2)規則的編碼結構,使密碼有一個標準的組件,適應大規模集成電路實現,降低了成本。
(3)設計成疊代型。疊代型密碼可減少大規模集成電路實現時必需的硬件資源,降低成本。
(4)易於硬件實現的編碼結構。如比特置換,不複雜的非線性函數易於實現,但多變元的非線性函數一般很難實現。
2)軟件實現原則
分組密碼在軟件實現中,一般要求成本低,編程靈活,速度比硬件設計要求低,從軟件實現角度考慮,分組密碼設計應儘量符合下述原則:
(1)加密與解密結構相似,便於加密與解密過程軟件實現可方便調用子函數。
(2)儘量用既簡單也便於軟件實現的運算,如加法、乘法、移位運算。
(3)設計成疊代型。疊代型分組密碼有助於軟件實現中使用循環,代碼簡單。
(4)密碼算法中儘量用子塊運算,運算長度儘可能和軟件編程相適應,如8bit、16bit、32bit或64bit的單位長度。
