流密碼和分組密碼在網路數據加密中的使用
流密碼通常用於流數據加密,例如語音,也用於低層數據加密。例如,MACSec 使用 AES-GCM 加密。在 L3 和 L4 安全協議(IPSec 和 SSL)中,首選分組密碼(AES-CBC)。
- 為什麼流密碼在低層加密中被認為比分組密碼更好,而在高級加密中分組密碼被認為更好?
- 是什麼讓語音數據(即應用層數據)適用於流密碼?將語音流分成塊並用塊密碼加密不是更容易嗎?
在 L3 和 L4 安全協議(IPSec 和 SSL)中,首選分組密碼(AES-CBC)。
呃,沒有。最初,SSL 使用 RC4(這是一種流密碼);然後添加了 CBC 模式(首先是 DES/3DES,然後是 AES)。在最新版本(TLS 1.3)中,他們完全放棄了 RC4 和 CBC 模式,轉而支持 AEAD 模式(GCM 和 Chacha20/Poly1305)。
至於 IPsec,它最初只是 CBC 模式(首先是 DES/3DES,然後是 AES)。後來他們加入了AEAD模式,相信是目前最常見的。
因此,您關於首選 AES-CBC 的說法目前並不准確,因此您的第一個問題背後的假設並不相關。
您的部分問題仍然很有趣:
- 是什麼讓語音數據(即應用層數據)適用於流密碼?將語音流分成塊並用塊密碼加密不是更容易嗎?
對於語音,它們往往對加密成本非常敏感;VoIP 數據包本身非常小(平均大約 20 個字節,IIRC),因此與 TLS 相比,固定數量的成本在總成本中所佔的比例更大。此外,VoIP 經常通過無線傳輸,它們對那裡的頻寬特別敏感(很大程度上是因為功率;傳輸更多字節會消耗更多功率)。這意味著 VoIP 加密協議(例如 sRTP)旨在最大限度地減少加密成本,而不是任何其他考慮。
因此,需要填充的模式(例如 AES-CBC)將被徹底拒絕,而支持不需要填充的模式(例如 AES-CTR)。
- 為什麼流密碼被認為在低層加密中優於分組密碼,而分組密碼被認為更適合更高級別的加密?
傳統上,這似乎是這種情況,但不再是必然的。 TLS 1.3使用 ChaCha。在這一點上,ChaCha 的安全性並不比 AES 低。
- 是什麼讓語音數據(即應用層數據)適用於流密碼?將語音流分成塊並用塊密碼加密不是更容易嗎?
以 ChaCha 為例,我們需要生成 512 位的密鑰,然後我們可以逐字節處理。使用分組密碼,我們需要處理整個塊。處理進出塊的聲音會增加延遲。
假設沒有糾錯 - 如果有 1 位的錯誤,它會影響一位。用人類的耳朵,我們什麼都聽不到。根據塊密碼模式,我們最終可能會混淆整個塊。
如果流密碼更快(很可能),那麼它也是一個明顯的好處。