Public-Key

通過考慮生成時間來猜測 libsodium 的私鑰有多可行?

  • June 19, 2021

因此,假設您在本地執行此操作(因此沒有網路噪音),並且也知道您的處理器的確切細節。根據生成密鑰對所需的時間來計算 libsodium 生成的私鑰(同時可以訪問公鑰)是否可行?

那麼其他算法呢,一般來說這有多可行?

因此,假設您在本地執行此操作(因此沒有網路噪音),並且也知道您的處理器的確切細節。

好的。這是一個看似合理的攻擊模型,例如,如果攻擊者在您的瀏覽器中執行 JavaScript 廣告,或者在同一云上擁有一個位於同一位置的虛擬機。

根據生成密鑰對所需的時間來計算 libsodium 生成的私鑰(同時可以訪問公鑰)是否可行?

Libsodium 使用Curve25519橢圓曲線鍵。Curve25519 私鑰是一定長度的隨機位串。(它被擴展為一個字節字元串,其中某些位具有固定值,但這並沒有添加定時側通道。)所以私鑰生成過程是微不足道的。唯一可能的側通道是隨機發生器本身。

一些隨機生成算法使用易受時序側通道影響的原語。特別是 CTR_DRBG 依賴於 AES,如果以天真的快速方式在軟體中實現,它很容易受到記憶體定時攻擊。CTR_DRBG 經常輪換 AES 密鑰,這使得它比在對手可以觀察到使用相同 AES 密鑰的加密的情況下更不容易受到攻擊。然而,這樣的攻擊是可行的,至少在理想條件下是這樣

使用其他流行的 DRBG 算法(例如 Hash_DRBG 或 HMAC_DRBG),使用基於非表的 AES 實現(例如使用硬體加速,如 AES-NI,或使用軟體中的位切片),或者如果 DRBG 經常讀取熵(這在具有專用 TRNG 的現代硬體上是可行的,例如 Intel 處理器上的 RDRAND 或各種智能手機處理器上的等價物),對 RNG 的定時攻擊不是問題。

可能更容易受到攻擊的是從私鑰計算公鑰。Curve25519 使得在沒有時序側通道的情況下實現算術相對容易,但這不是給定的。

那麼其他算法呢,一般來說這有多可行?

對於 Weierstrass 橢圓曲線和有限域 Diffie-Hellman,私鑰是介於 $ 2 $ 和 $ P-2 $ . 除了前面討論的 RNG 攻擊之外,密鑰生成過程的自然實現不易受到定時攻擊。但是,如果在沒有預防措施的情況下實施,公鑰的計算容易受到定時攻擊。

使用 RSA,密鑰生成是一個複雜的過程,涉及(偽)素性測試和一些可能容易受到定時攻擊的額外算術。具體來說,在實踐中,似乎最容易發生洩漏的步驟是進行 GCD 計算以檢查 $ p-1 $ 和 $ q-1 $ 與公共指數互質。

引用自:https://crypto.stackexchange.com/questions/91657