Side-Channel-Attack
加密算法的恆定時間實現
為了防止記憶體攻擊(側通道攻擊),通常建議使用恆定時間加密實現。在某些情況下,DJB 發布了考慮到這一點(作為目標之一)設計的新算法 (chacha)。如果是這樣 -
- 對於所有流行的算法,恆定時間實現是否可行?我問是因為 AES、RSA、SHA*、EC* 和 DSA 算法(至少其中一些)在設計時並未考慮到側通道攻擊。鑑於此,這些在軟體中使用是否安全?(我知道安全在這裡是一個載入的術語,但我嚴格來說是從側面通道的角度來看的)。
- 所有標準庫都支持這種恆定時間實現嗎?我希望看到一個可以與沒有的實現進行比較的實現。
- 我知道在硬體中使用算法是要走的路。當加密算法“在硬體中實現”時,通常是指它完全在硬體中實現還是部分在微碼中實現?我知道 AES 可能完全是在硬體中實現的,那麼 ECDSA 或者更複雜的東西呢?
- 任何功能都可以抵抗定時攻擊,並且可能更昂貴。即,可以通過使用硬體模擬的恆定時間電路進行查找(也許更神奇)來使 AES 變得安全。
如果您需要 AES:在軟體中使用具有恆定時間回退的硬體。如果您不需要AES,則更喜歡硬體,然後協商使用快速軟體密碼,例如 chacha20。
- 我還沒有調查(因為我不使用這些“標準庫”)。我們在標準中包含哪些庫?開放SSL?自由SSL?無聊的SSL?鈉?
- AES輪函式在硬體中實現。這使呼叫者能夠決定模式,即 CTR、CBC、GCM 等。最後我檢查了 AESNI 包括 sha1 和 sha2,但沒有任何 ECDSA、ECDH、EdDSA 或 RSA。硬體可以實現這些中的任何一個,但是,並非所有功能都具有顯著的硬體加速,因此首選使用硬體。