Provable-Security

密碼原語中可證明安全性的簡單設計

  • October 7, 2017

我們可以說一個密碼原語有 $ n $ 位安全性,如果它不能在少於以下的時間內破壞一種攻擊 $ 2^n $ 時間(在某些情況下是時區乘積)。密碼原語可以說是 $ n $ 如果最快的可能攻擊(包括相同類型的理論和未來攻擊)至少需要 $ 2^n $ 時間。

為了做出這樣的安全證明,我們需要分析我們的加密原語。如果我們有更複雜的設計,我們可能會擁有更多開箱即用的安全性(和性能,以及其他任何需要的東西),但我們無法證明這一點。

例子:

  • 根據 Wikipedia的Salsa20/15對差分密碼分析是 128 位安全的,並且僅使用add、rotate、xor和**add的非線性
  • SHA3​​ 有 24 輪 $ n $ 輸出位是 $ \frac{n}{2} $ -bit在一些合理的假設下安全地防止衝突,並且只使用旋轉、異或、非,並且具有來自**和的非線性

所以我們可以使用更簡單的設計,從而使密碼分析變得足夠容易,我們可以製作安全證明。這樣,我們就可以準確地知道需要多少輪,並且只使用那麼多輪。相比之下:

  • AES-128 在創建時 6 輪對所有攻擊都是 128 位安全的,添加了 4 輪作為安全邊際,總共 10 輪,使用s-box、xor、shift、添加 非線性主要來自s -盒子
  • SHA-256 有 64 輪(沒有理由?)並且是 128 位安全的,可以防止47 輪的衝突,使用add、rotate、xor 和(對於選擇/多數)具有來自add 的非線性,以及

我們希望通過更精細的設計,它們更高效,需要更少的輪次來獲得相同的安全性並提供更好的性能。它們的複雜性使得設計針對它們的攻擊變得更加困難。

現在有什麼更好的做法,簡單地設計一些東西以便證明它是安全的,或者設計一些更複雜的東西並依賴它在其生命週期內不會被破壞?


未來總是有可能出現新的攻擊,並破壞已被證明可以抵禦當時已知的所有類型攻擊的安全工具。但沒有什麼可以真正防禦這一點。

此外,這裡比較的是設計——將 256 位流密碼與 128 位塊密碼放在一起,將海綿散列與 Merkle-Damgard 散列放在一起是不公平的。也恰好是 Salsa20 和 SHA3 比 AES 和 SHA2 更新。

簡單地設計一些東西,以便證明它是安全的

如果不做一些假設,我們目前無法證明任何東西的安全性(嗯,除了資訊安全的東西,如 OTP)。我們能做的最好的就是:

  • 這是安全的,假設這個抽象問題很困難(但這並沒有說明抽象問題是否真的很困難)。公鑰密碼系統往往屬於這一類。
  • 這對這些類型的攻擊是安全的(但這並沒有說明其他類型的攻擊)。AES 屬於這一類,因為我們有針對線性和差分密碼分析的安全性證明。

並希望它在有生之年沒有壞掉?

我們不知道如何在簡單或複雜系統中避免這種情況。

引用自:https://crypto.stackexchange.com/questions/52080