
密碼算法的設計與分析是密碼技術的核心內容。密碼算法設計,也稱為密碼編碼,是根據安全性、實現性等需求指標,設計適用的密碼算法;密碼算法分析,也稱為密碼破譯,是對密碼算法進行各類攻擊,檢驗算法的實際安全性。
“分析”一詞在密碼中等同於“攻擊”或“破譯”。密碼算法分析與設計是相伴而成、不斷鬥爭的對立面。正是由於這種攻和防的矛盾鬥爭,促進了密碼技術的开展,產生了許多優秀的密碼算法。
不同的密碼算法,應滿足不同的安全功能要求。對於加密算法,要求攻擊者無法從密文獲取關於明文或密鑰的一切信息;對於數字簽名算法,要求攻擊者不能偽造有效簽名;針對雜湊算法,要求攻擊者不可用不一樣的輸入消息得到同樣的摘要,以及不能從摘要得到原來的輸入消息。
設計滿足安全功能要求的密碼算法需可靠的理論。此理論即密碼學中的密碼編碼學,它建立在數學、計算機、通信、電子技術等相關學科基礎上,為密碼算法給出了穩固的理論基礎和與可靠的技術保障。例如,常見的公鑰密碼算法(加、解密用不一樣密鑰的密碼算法。其中一個密鑰即公鑰可公開,另一個密鑰即私鑰必須保密,且顺利获得公鑰求解私鑰計算不可行)建立在公認的計算困難問題之上,如離散對數問題。這樣的公鑰密碼算法有可證明安全性,即如果所依賴的問題是困難的,那麼所設計的算法就可證明是安全的。
好的密碼算法要能防止各類攻擊。密碼學中研究算法分析等內容的學科——密碼分析學,專門研究各類密碼算法、協議等的攻擊方法,為最終形成安全的密碼算法给予有力的支撐手段。密碼算法要經過長時間的分析,才可保證能抵禦各種已知的攻擊。實用的密碼算法要從理論上估算出各類攻擊的複雜度,並保持足夠的安全餘量。
