如果攻擊者恢復由流密碼生成的密鑰流,是否存在任何安全問題?
我了解到,像 ChaCha20 這樣的流密碼會生成一個密鑰流,該密鑰流與明文進行異或以獲得密文……如果攻擊者知道明文,他可以簡單地與密文進行異或以獲得相應的密鑰流。這有什麼安全問題嗎?我意識到這是因為 XORing 操作很容易實現。有沒有更好的方法來使用密鑰流加密明文而不使用 XOR,這也有助於消息身份驗證?
首先,現代流密碼結構沒有問題——無論是使用 AEAD 分組密碼操作模式(如 GCM),還是 Google 已試驗並隨後以 Internet RFC 文件形式形式化的 ChaCha20-Poly1305 的組合。
正如人們可以推斷的那樣,流密碼基本上是能力降低的一次性密碼:流密碼密碼流只有與密鑰一樣多的可能值,而一次性密碼是真正隨機的。這很好,因為物理上可建構的電腦(包括那些假設的量子電腦)在能力上是有限的——在時間和空間維度上。
其次,該領域的新趨勢是使用 Duplex 構造從排列中建構 AEAD(我承認這些不是您可能從學校學習或可能在電視節目或報紙中遇到的流行知識)。
事實上,ChaCha20 和 Poly1305 是作為 AES 等的“備份”引入的獨立原語。甚至最初提出 Poly1305 的論文也將其引入為 AES-Poly1305。
大致描述一下這個概念:
回想一下 SHA3 散列函式是基於在 Sponge 模式下執行的 1600 位 Keccak 排列 - 排列被劃分為 2 部分,1 部分用於吸收數據並擠出散列摘要,另一部分作為安全容量保密.
Duplex 是類似的,除了數據在進入時被讀取。添加一些仔細的設計,您可以從單個原語 - 排列中獲得 AEAD。
這些類型的密碼範例包括 Gimli、Xoodyak 等。您可以在NIST 輕量級密碼學項目頁面上找到更多資訊。