Algorithm-Design
布爾函式如何在密碼學中使用?
我最近開始對布爾函式感興趣。因為它們被定義為 $ f: {0, 1}^n \rightarrow {0, 1} $ , 或者換句話說只是在 $ {0, 1} $ ,我猜它們可以以某種方式應用於密碼學。畢竟在密碼學中(在某種意義上),我們有一個可以定義為位的輸入,然後我們對這些位進行某種操作來打亂它們。
此外,許多算法(如 BLAKE、ChaCha20 等)使用ARX(加法旋轉異或)方法。只要我知道 AES 的某些部分也是如此。我已經讀過布爾函式對於 S-box 的設計很重要,但我想了解它們在密碼學中的更多應用。
那麼,在密碼學(用於設計算法或密碼分析)中使用布爾函式的****方式和位置(散列函式、分組密碼、流密碼、公鑰密碼系統等)是什麼?它們是否可以用於一些更複雜的算法,這些算法基於有限域算術、橢圓曲線、晶格等?
布爾函式的許多屬性用於流和分組密碼設計,例如,當它們用作過濾和組合函式時。一些重要的例子是:
- 非線性(布爾函式真值表與仿射函式的最小漢明距離)必須很高,才能抵抗線性/仿射逼近攻擊。
- 相關免疫(CI) 和彈性(CI 是所有Walsh-Hadamard 變換係數為非零的最大非零權重,並量化了對分而治之風格相關攻擊的抵抗力;彈性是 CI 加上平衡性)。CI和布爾函式的代數度之間存在折衷 $ f $ ,即 $ deg(f)+CI\leq n-1 $ , 為 $ n $ 可變布爾函式,由肖和梅西發現。
- 複數 DFT 的權重和序列的線性複雜度之間存在聯繫(並且所有序列都可以在選擇基數後表示為布爾函式 $ GF(2^n) $ 超過 $ GF(2) $ 並附加零)稱為 Blahut 定理。
- 最近有一本關於布爾函式在密碼學中的應用的精彩書籍,Stanica 和 Cusick 所著的“Cryptographic Boolean Functions and Applications”。較早的相關書籍包括Rueppel的《流密碼的分析與設計》和丁、山、肖的《流密碼的穩定性理論》。任何一期 Designs, Codes and Cryptography以及相當多的 Crypto 會議都會定期有關於這些主題的論文。參見IACR eprint伺服器。
最後,Sboxes 只是向量(向量輸出)布爾函式,參見 AES 提案中標題為傳播和相關的章節,該版本也出現在 Rijndael 設計師 Daemen 和 Rijmen 的“The Design of Rijndael”一書中。