可用於幫助證明新系統安全性的策略?
我相信“證明”系統安全的公認策略是允許加密社區對其進行審查,如果在很長一段時間(5 或 6 年)內沒有發現漏洞,那麼可以接受新系統安全,除非另有證明。如果我錯了,請糾正我。
除此之外,開發人員是否有任何要求可以在公開發布之前主動測試他們的密碼系統?
我正在研究一個大密鑰(4096 位)、對稱加密系統,並且我正在盡我所能厭倦“任何人都可以進行他們自己無法破解的加密”的伎倆,即相信我的密碼是牢不可破的。
我可以在程序或輸出上執行什麼樣的測試?有沒有測量熵的好方法?加密一段數據後,我應該期待哪些統計數據?我知道不會有什麼神奇的功能可以證明我是安全的,但我當然不希望在公開發布之後立即被一些數據分析會發現的簡單問題所破壞。
- 證明對差分密碼分析的抵抗力。
例如,此展示文稿:針對不可能差分密碼分析的可證明安全性。或者這篇論文:ProvableSecurity Against a Differential Attack (1995) 2. 證明對線性密碼分析的抵抗力。
例如:關於測量對線性密碼分析的抵抗力 3. 對密碼執行一堆靜態測試。
實際證明某事的一種非常常見的方法是在已知組件上建構系統,然後在給定組件安全性的情況下證明組合系統的安全性。
大多數情況下,論文有一個定理,如
如果函式
F
具有屬性 Y,那麼這個新函式G
具有屬性 X。證明然後表明,如果有人可以攻擊 G 的屬性 X,這會攻擊 F 的屬性 Y。
然後我們取
F
一個已知的密碼原語,它已經被社區研究過,並且似乎具有必要的屬性。通常,這種證明甚至可以同時適用於整個算法系列。通過這種方式,我們可以從一組分組密碼(通過一種操作模式)中獲得一組流密碼,從雜湊函式(HMAC)中獲得一個密鑰 MAC 等。當使用的基本組件被破壞時,您可以簡單地切換給另一個。
在某些情況下,您甚至可以在多個組件上建構複合系統,這樣只破壞其中一個不會有助於破壞您的組合系統(即破壞您的複合系統意味著破壞所有組件)。
當然,這對於不基於任何東西的全新系統很可能無濟於事。