Modular-Arithmetic

處理大數時如何避免側通道攻擊?

  • March 5, 2020

對於密碼學,平台的大小有限,只能進行 32 位或 64 位操作。我們肯定需要大數字來實現加密系統的加密/解密和數字簽名,如 RSA、橢圓曲線等。

由於時間差異或功率使用分析,我們已經看到了很多邊通道攻擊。

  • 在密碼學和密碼分析中如何處理大量數字?
  • 有哪些好的庫可以抵禦側通道攻擊,包括時間和功率分析?
  • 我們能否通過特定的大數字實現對聲學密碼分析採取對策?

我最近寫了一篇關於如何在BearSSL中實現大整數的大頁面。有幾種方法可以在 RAM 中表示整數並對其進行計算;另外,請注意,對於密碼學,我們通常需要大整數,這與大普通整數不同。BearSSL 的程式碼是恆定時間的,因此名義上不受時間攻擊(通常需要注意整數乘法操作碼在某些 CPU 上不是恆定時間)。

定時攻擊是物理測量基於經過時間的攻擊。它們的特殊之處在於它們可以遠端執行(通過測量網路上的響應時間,或者通過使用目標電腦自身知道目前時間的能力);所有其他側通道攻擊都要求攻擊者在目標系統的物理附近擁有特殊硬體。定時攻擊是您必須擔心整個星球的攻擊。有關定時攻擊的更多資訊,請參閱此頁面

智能手機有點混亂,因為它們有很多感測器可以被惡意程式碼利用,因此是“遠端”的;例如麥克風、攝像頭和加速度計。對於智能手機硬體,可以訪問其中一些感測器的名義上的沙盒應用程序可能會在手機中發生的其他操作上利用一些旁通道。不過,功耗分析不應該屬於這一類,因為智能手機不包括用於真正精確測量自身功耗的硬體。

BearSSL 沒有明確表示除了定時攻擊之外,對側通道攻擊做任何事情。恆定時間確實為功耗分析的某些方面提供了一定程度的保護(簡單的功耗分析可以揭示 CPU 遵循哪些程式碼分支,但恆定時間的要求之一是條件分支不依賴於秘密數據,所以這不會洩露任何秘密資訊)。差分功率分析可以利用在給定寄存器或記憶體插槽中寫入 0 或 1 之間的差異;你需要一些非常好的示波器來完成它。為了防止差分功率分析,通常的保護是添加隨機遮罩,這是一個複雜的過程,因為它不僅取決於計算的代數屬性,而且還需要良好的隨機性來源,

需要指出的重要一點是,差分功率分析和防禦在很大程度上取決於所涉及的精確硬體。因此,實際上不可能有“不受功率分析影響的軟體庫”這樣的東西。充其量,您擁有一個結合了軟體和某些特定硬體的系統,可以在一定程度上聲明它們具有彈性。智能卡製造商是您想就此類問題與之交談的人。

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