在設備中的何處儲存敏感密鑰?
我正在研究一些安全功能,這些功能應該由消費設備的韌體執行,其與伺服器的通信必須是安全的。
任何數據交換都基於對稱密碼學,密鑰由“橢圓曲線 Diffie Hellman 密鑰協議”創建。
由於成本原因,省略了專用硬體安全模組 (HSM)。取而代之的是,所有加密算法都在闆卡韌體中執行,另外還由 MCU 上的強大硬體加速器直接支持以處理 AES 和 ECC。
- 所有 RAM 和使用的快閃記憶體都在 MCU 內部。
- JTAG 介面被禁用。
- 不使用外部儲存器。
- 除了直接在韌體中執行之外,所有加密算法都是最先進的。
懸而未決的問題是,在哪裡儲存敏感密鑰:
從安全的角度來看,將私鑰和對稱密鑰保存在 MCU 的快閃記憶體中是否可以*接受,因為除了將功耗監控作為側通道攻擊之外,沒有辦法從外部滲透?*為了更安全,所有這些密鑰都由唯一的設備密鑰額外加密,將在工廠啟動時創建。然而,我覺得,因為這個設備密鑰也只保存在內部快閃記憶體中,所以這只能提供很少的額外安全性。
應考慮哪些因素來驗證這種方法是否滿足標準安全要求?不使用專用 HSM 的正確方法是什麼?
由於您的限制,沒有辦法安全地儲存密鑰,這是從硬體的角度來看的。如果它們存在於記憶體中,則幾乎有辦法將它們取出。如果你有辦法更新韌體,我可以在裡面弄點東西把鑰匙拿出來。如果您有一個定制的 IC,那麼添加一個硬體核心的成本將不到一分錢。(我一直和商學院的男孩們討論這個問題,因為違規的成本比在 IC 中投入硬體的成本更高,而且它總是一個導致信任問題的軟體問題)
當我製作一個硬體核心時,關鍵區域是只寫的(e-fuses),所以一旦它們被寫入,就沒有辦法取出密鑰,因為硬體實際上並不存在。
假設您完全在 FLASH 中,獲取密鑰的方法是您選擇更新韌體(除非您不驗證它)。我也從未見過無法重新啟用的 JTAG 介面,因為我們需要在切割前對晶圓上的 IC 進行程式。
另外,我可以在連接上打開你的 IC 和 FIB 以讀出 FLASH。(在大學實驗室大約需要 4 小時)
我只是想不出一種方法來隱藏你的鑰匙,而我無法把它們拿出來。