Protocol-Design
用“喜歡代替喜歡”通常可以嗎?
在加密協議中用“like for like”替換通常可以嗎?
例如,許多 lattice 協議出於各種目的使用 SHAKE 和 SHA3。但是,這兩者在軟體中都相對較慢。
如果我分別用 Blake2X 和 Blake2b 替換它們,那么生成的(不兼容的)協議是否仍然安全?同樣,如果一個協議需要 AEAD,並指定 AES-GCM,我可以用 ChaCha20-Poly1305 代替,並且仍然獲得安全協議嗎?
從廣義上講,如果協議被設計為模組化並且不依賴於底層算法的任何特定屬性,則答案是肯定的。
如果協議具有抽象底層原語的安全證明(即,如果定理語句包含類似“讓 $ blah $ 是一個 AEAD 方案”並且證明包含對 AEAD 安全性的減少 $ blah $ ) 這個證明應該或多或少地成立。如果沒有安全證明,您有兩種選擇:(a)寫一個並確保減少通過或(b)只是做出有根據的猜測。我推薦(一)。
當使用不同的原語時,一些細節,特別是確切的安全界限,可能會略有變化。例如,與 AES-CTR-HMAC-SHA256 之類的東西相比,AES-GCM 的真實性界限相對較低。僅當您計劃使用相同的密鑰加密大量非常大的消息時,這才真正重要,但仍然值得檢查。
顯然,關於側通道和類似內容的標準警告適用。
編輯:剛剛看到您的問題也詢問了雜湊函式。雜湊函式有時更難以推理,尤其是在涉及隨機預言模型的情況下。如果協議只是降低散列函式的抗碰撞性,將一個好的散列函式換成另一個可能沒問題。但是,如果雜湊函式用於實例化隨機預言機,則需要確保要交換的雜湊函式與隨機預言機不可區分。因此,例如,通常不能使用 SHA256 代替 SHA3,因為前者與隨機預言機並非不可區分。