Tls
為什麼 TLS 1.3 對 AEAD 使用看起來隨機的隨機數?
在 TLS 1.3 中,似乎 AEAD 的隨機數是通過將記錄的序列號與 server/client_write_IV (在握手期間生成)進行異或來構造的。因此,隨機數看起來是隨機的,並且隨著序列號單調增加而不能重複使用。
為什麼不只使用序列號?為 AEAD 提供一個看起來隨機的 nonce 是否有優勢?如果不是,如何解釋這種實現選擇?
正如@CodesInChaos 在評論中提到的,TLS 1.3 中隨機數隨機化的目的是對抗多使用者攻擊。也就是說,攻擊者同時攻擊多個使用者,只要它中斷至少一個使用者的連接就很高興,而不考慮具體是哪個使用者。這種動機在 RFC(附錄 E.2)中明確指出:
當相同的明文被不同的使用者使用相同的密鑰重複加密時,為了防止大規模密碼分析(這在 HTTP 中很常見),nonce 是通過將序列號與導出的每個連接的秘密初始化向量混合形成的交通密鑰。看
$$ BT16 $$分析這個結構。
隨機化隨機數的想法已在兩篇學術論文中得到分析: