Mac
是否有任何經過身份驗證的流密碼對 MAC 和密碼使用相同的 PRF?
PRF既可用於生成用於流密碼的密鑰流,也可用於構造 MAC 以進行身份驗證。然後可以將兩者結合起來,例如在一個通用的 encrypt-then-MAC 結構中,以創建一個經過驗證的流密碼,對兩者使用相同的 PRF(具有獨立的密鑰)。這實際上是在任何真實世界的經過身份驗證的加密方案中完成的嗎?我看到了像 Salsa20/ChaCha20 流密碼與 Poly1305(安全 MAC,但不是 PRF)相結合的結構。大概您可以將 ChaCha20 與Blake2結合起來,後者在內部基於相同的輪函式,但即使在這裡,PRF 也存在差異(據我所知)。是否有任何實際案例中兩者都使用完全相同的 PRF?如果沒有,有沒有理由不這樣做?
我能想到的一種類似的現實世界結構是CCM模式,其中在 CBC-MAC 和 CTR 模式中都使用相同的*分組密碼(例如 AES)。*這提供了一些程式碼大小優勢,因為相同的程式碼可用於兩種操作(並且您也只需要 AES 的加密方向)。對於使用相同 PRF 生成密鑰流和 MAC 的經過身份驗證的流密碼,大概可以提出類似的論點。
Keccak 的雙工結構(現在標準化為 SHA-3)以這種方式工作。
見: http ://sponge.noekeon.org/SpongeDuplex.pdf
和
http://keccak.noekeon.org/KeccakDIAC2012.pdf
我相信這其中的一些變體正在 NIST 的標準化過程中,但我還沒有看到草案。看:
http://csrc.nist.gov/groups/ST/hash/sha-3/Aug2014/documents/sonmez-turan_sha3_2014_workshop.pdf