是否存在破壞對稱密碼的時空權衡攻擊?
是否有任何已知的技術可以使用時空權衡來加速對稱密碼破解?有點像彩虹表通過使用巨大的預計算表來加速破壞雜湊。
像 AES 這樣的對稱加密是否有類似的可能?如果不是,為什麼?在這方面,塊密碼和流密碼有區別嗎?難道你不能通過搜尋已經預先計算了很多明文“頭”的巨大表來至少在暴力破解方面占得先機嗎?
您的想法是:假設我們有一個已知的明文/密文對;我們可以使用預計算表來加速密鑰的恢復嗎?
好吧,如果您計算生成預計算表所花費的時間,那麼預計算表的主要問題實際上並沒有加快搜尋時間。表預計算所做的是(例如)生成大量密鑰/密文對(對於給定的明文),並將它們儲存在表中(以一種巧妙的方式使表比單獨儲存每個集合要小得多。這就是片語“時間/記憶體權衡”的真正含義;它不會減少使用記憶體所花費的時間,而是通過使表查找更加困難來減少記憶體量(就表空間而言)。
然後,當給定一個明文/密文對時,它會檢查表以查看該密文是否出現在密鑰/密文對中;如果是這樣,您對密鑰有一個可靠的猜測。
現在,如果密鑰/密文對在預計算階段從未出現過,您將不會在表中找到它;因此生成一個表,其中查找具有 $ 2^{-32} $ 找到 128 位 AES 密鑰的機率,您至少需要花費 $ 2^{96} $ 時間; 這並不比蠻力好;我們已經相信蠻力太難了。
所以,你說,我們為什麼要使用彩虹表?因為我們可以花時間計算這些表一次,然後多次使用同一個表。所以,如果我們有 $ 2^{32} $ 不同的加密文本 $ 2^{32} $ 不同的密鑰,每個加密文本都包含相同明文塊的加密(並且相同的明文塊將導致 $ 2^{32} $ 不同的密文),我們可以(與上述 $ 2^{96} $ 預計算)有很大的機會恢復其中一個會話的密鑰。
這不是有點好處嗎?好吧,理論上它可能會,但在實踐中,並沒有那麼多。請記住,我們通常在一個模式中執行諸如 AES 之類的密碼,並且該模式可能無法讓我們在會話中一致地訪問相同的明文。例如,對於 CBC 模式,我們呈現給 AES 分組密碼的明文是有效隨機化的;這意味著即使是兩個不同的會話,您也不太可能獲得相同的明文,因此彩虹表在這裡不是勝利;蠻力實際上更有效。