Side-Channel-Attack

使用側通道攻擊模組化反演操作?

  • May 12, 2021

我正在建構一個使用秘密模數執行模組化反轉的設備。我想知道是否可以通過側通道(時序、功率、EMR 等)恢復全部或部分該模量。

我發現的所有與模算術中的側通道相關的資訊都適用於模冪運算。

用於反演的算法是標準的擴展歐幾里得算法。

例如,攻擊者可能能夠測量計算時間。他無權訪問輸出,也無權訪問模數。他只知道將被反轉的值。

更新:找到相關參考

因為擴展歐幾里得算法取決於輸入的時間(尤其是兩者的複雜函式,取決於表示為連續分數的比率),因此可能存在一些洩漏。

然而,我想到有一個非常簡單的對策。假設您要反轉的秘密模數是 $ p $ ,並且您要反轉的值是 $ x $ :

  • 選擇一個隨機數 $ r $ 那是 $ 0 < r < p $ 並且是相對質數 $ p $ (如果後一種條件是微不足道的 $ p $ 是素數)
  • 計算 $ blind = r \times x \mod p $
  • 計算模數倒數 $ blindinv = blind^{-1} \mod p $ (使用擴展歐幾里得算法)
  • 返回值 $ result = r \times blindinv \mod p $

很容易看出,這正確計算了模反函式,並且賦予基礎模反函式的值與原始值不相關 $ x $ (並且與模逆的成本相比,兩個模乘的額外成本微不足道)。

這真的需要嗎?我不知道; 但是,在我看來,以上內容是如此便宜,即使有可能出現弱點,這種隨機化看起來也是有道理的。

現在,這隱藏了攻擊者反轉的值,但它沒有應用致盲因子 $ p $ ; 然而,雖然 EE 算法平均花費的時間(給定未知輸入)確實會根據模數有所不同,但它是一個弱得多的函式(並且提供的資訊要少得多)。致盲 $ p $ 會貴很多;您是否願意這樣做取決於任何此類洩漏的風險(例如,如果是該國的導彈防禦程式碼,您可能願意支付額外費用),以及您能負擔多少額外費用。

如果您願意支付額外費用,顯而易見的方法是選擇一個值 $ r’ $ 這是相對重要的 $ x $ (例如,一個大於 $ p $ ),然後在第二步和第三步中,計算

$ blind = r \times x $

$ blindinv = blind^{-1} \mod (p \times r’) $

(並且算法的其餘部分保持不變; $ \bmod $ 下一步的操作將丟棄包含的額外資訊 $ r’ $ 因素)

假設你選擇 $ r’ $ 值大約相同的大小 $ p $ (或稍大),您的成本大約會增加一倍。

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