Public-Key
定時攻擊:對稱與非對稱算法
有一種說法,我不能給出參考;
“由於對稱算法的時序特性不像非對稱算法那樣依賴密鑰,因此它們更能抵抗時序攻擊。”
這是真的嗎?
“由於對稱算法的時序特性不像非對稱算法那樣依賴密鑰,因此它們更能抵抗時序攻擊。”
這在很大程度上是但並非絕對正確。
數據相關(包括密鑰相關)的時序特性主要來自
- 條件執行,*如果設置了秘密指數/乘數的這個位,那麼……*在 RSA 和 ECC 中很常見。在對稱算法中很少有這樣的事情,並且當有可能進行這樣的條件執行時(例如,在 AES 中,當設置了一個位移出時,與固定多項式進行異或),沒有簡單的替代方案。
- 乘法,在許多 CPU 上需要時間取決於參數。對稱算法中很少有這樣的事情(例外:IDEA),但這是 RSA 和 ECC 的核心(二進製曲線除外)。
- 除法(在對稱加密中很少使用,在非對稱加密中也在指令級別使用,因為它很慢,尤其是在沒有硬體支持的情況下)。
- 數據相關的旋轉;這是罕見的(例外:RC5,RC6)。
- 表查找(例如替換錶),由於記憶體的影響。這在一些對稱算法中很常見,包括 DES 和 AES,也是最重要的例外。然而,在許多其他算法中沒有表查找,包括散列(例如 SHA-256)和Chacha流密碼。並且依賴於記憶體的時序依賴性很小,因此很難遠端利用(當對手涉足 CPU 時,這是另一回事:他們可以更準確地進行時序測量,並且可以刷新記憶體;他們還可以探測記憶體,但這不再是純粹的定時攻擊)。
注意:引用表明只有與鍵相關的時序變化很重要。這並不完全正確:理論上,對非公開數據的任何時間依賴性都可能是潛在的攻擊媒介,因為它可能會洩露數據資訊。