S-Boxes
依賴鍵的 S 盒是否使高效的恆定時間軟體實現幾乎不可能?
在我看來,像 Blowfish 和 Twofish 這樣的具有鍵相關 S-box 的算法幾乎不可能在沒有表查找的情況下實現,因此幾乎不可能在軟體中實現而不容易受到定時攻擊(除了通過大型線性搜尋數組,這要慢得多)。由於這些算法也不適合硬體實現(因為 S-box 必須儲存在 RAM 中),這似乎使算法對於所有目的都不是最優的。
這個評價正確嗎?能得出如此有力的結論,我覺得很奇怪。然而,我想不出任何方法來(合理地)在恆定時間內實現依賴鍵的 S-box,所以我的觀點似乎仍然成立。
問題中的觀點是有道理的,特別是如果僅限於可移植軟體實現。但:
- 小型或中等大型的恆定時間 RAM 表是合理、高效且(因此)常見的硬體建構塊。它們通常用於受 DPA 保護的 DES 和 AES 硬體協處理器。因此,我們不能消除硬體中依賴於鍵的 S 表。
- 當足夠了解和控制自己的 CPU 時,經常可以進行常數時間表查找(例如,如果沒有數據 RAM 記憶體,就像許多嵌入式 CPU 的情況一樣)。
- 還有其他可以想像的方法來防止純粹的定時攻擊,包括從計算開始以固定的延遲發布結果,例如在硬體定時器的幫助下(但是除了純定時之外,通常還有其他邊通道,這會使事情複雜化, 很多)。