2009-02-26 134 views
4

通常我會通過在ROM映像中放置一些獨特隨機的東西來解決這個問題,並使用它作爲種子來加密EEPROM內容,以在映像模塊之後停止提取和重新編程。保護EEPROM數據免遭修改

一個明顯的缺陷似乎是,這不會停止以空白的替換EEPROM外部芯片的形式來篡改......哦,看起來回到第一次使用的狀態,讓我們要求鑰匙保存!


選擇組件不是我的選擇,硬件平臺已經定義好了。 EEPROM在器件的生命週期中被編程爲配置和狀態改變,因此斷開擦除線也是不可行的。

我正在尋求有關可能的解決方案的意見,以防止僞造處女(首次運行)狀態,因爲這將允許功能來保存敏感數據並解鎖設備。

我相信一個分組密碼(ECB模式)足以保護敏感數據,也許在頂層!這種方法以及多個副本,詆譭一個而不是另一個,應該使它在經濟上沒有回報地方投入資金和時間來應對這些措施。

+0

讀作由Randomness`愚弄,你就會知道如何隨機你的想法是'random`是:) – dirkgently 2009-02-26 18:28:54

+0

我認爲排位賽我的「隨機」,但覺得不需要不過看來我應該有。我會看看的建議,我一定要找到一些有趣的事情。但我完全知道什麼是隨機的,並且在加密RANDOM。 – Oliver 2009-02-26 20:15:21

回答

5

的幾點思考:如果「確保對修改」你的意思是,你可以檢測到這樣的篡改,那麼你就可以

  1. 產生在整個EEPROM的校驗和,只啓動你的應用程序如果校驗是確定
  2. 使用額外的芯片提供一個唯一的號碼,使用該號碼來加密eeprom的內容
  3. 將您的所有信息存儲在eeprom的多個位置(如果您只想檢測到更改,則爲兩次,如果是三次你想檢測和拒絕篡改值,並使用「仍然正確」的值)

但是,如果你想防止在首位篡改,你必須使用機械防護裝置 - 熱膠整個芯片,鎖定您的PCB的住房,...

3

將擦除引腳和環氧樹脂浮在板上?使用PROM?

如果你不想修改圖像,使其無法修改。

2

如果硬件措施都出來了,而且你堅持使用軟件方法,而讀取EEPROM的東西可以處理public-key algorithms,那麼你可以在EEPROM中使用一個公鑰簽名的數據塊(把你的EEPROM數據,在它之前是一個固定塊,包含數據的長度以及用私鑰加密的數據的安全哈希)。

這需要任何使用EEPROM內容來驗證它與相應的公鑰(顯然不要把它放在同一個eeprom中)。公鑰算法在計算上相當昂貴,所以要證明這種方法適用於微控制器有點困難。


如果你不能從硬件篡改阻止別人,但你可以選擇你使用的硬件,你也可以使用一個安全的EEPROM,如Maxim DS28CN01(雖然我得承認,我討厭馬克西姆因爲它們的零件價格昂貴且交付週期長,並且在有足夠的人下訂單以製造其零件之前經常是汽化器)或Atmel's AT88SC series