在嵌入式设备上存储敏感数据最安全的方法是什么?
在我的工作中,我正在为消费者市场开发一款产品,它将拥有一张eMMC卡,其中包含非常有价值的数据。我想知道保护这些数据的最佳方法是什么,即让某人无法理解其内容。 (ps:这不是代码,这是一个实际的数据集)
我想象设计的方法是将数据放在eMMC上,用AES加密(128位密钥就够了吗?)。密钥将存储在MCU的闪存中。我使用的MCU提供了防止闪存读出和闪存覆盖的功能。但是,如果eMMC只是将eMMC硬连接到计算机,那么带有数据(但没有加密密钥)的eMMC将可供黑客使用。 因此,解密的数据只会暂时存在于系统的RAM中。
因此,如果我正确使用我的MCU的功能锁定闪存,它会安全吗?或者,如果受到保护,是否有其他方法可以获取闪存内容(嵌入到MCU中)?像硬件模块或类似的东西。或者即使我成功地将密钥隐藏在闪存中,也可以制作一些数据吗?
请避免像" ... 这样的答案。"我想知道最糟糕的情况。
作为参考,这里是我们使用的MCU的读出/写保护功能,但我的问题是通用的,不一定与一个MCU相关。 http://www.st.com/content/ccc/resource/technical/document/application_note/89/12/c5/e2/0d/0e/45/7f/DM00186528.pdf/files/DM00186528.pdf/jcr:content/translations/en.DM00186528.pdf
答案 0 :(得分:3)
我曾与信用卡机器的开发合作,最常见的攻击是:
这是我所知道的最常见攻击的顺序。
你可以随时使用安全芯片,安全引导程序和篡改陷阱来清除滥用行为。
答案 1 :(得分:2)
这完全取决于您设备的功能(或您的安全信息)。 通常,AES-128位加密足以实现嵌入式设备的合理安全等级。 但是将密钥存储在非受保护的存储器(处理器的闪存)中会导致严重的安全问题。有许多物理/逻辑方法可以从非易失性存储器中提取数据。
您可以将密钥存储在一般的SRAM内存中,并使用篡改检测密钥保护系统,或使用内置加密协处理器和安全密钥存储的MCU(例如lpc18s,lpc43s等)或使用外部密码学芯片像TPM或SAM一样可以提高您的安全级别。 但正如之前所说,你必须决定如何&什么时候你需要/解密 数据,是否需要在不安全的数据线中传输明文数据(解密信息)? 您可以在我刚才提到的以下链接中收到更多信息: https://electronics.stackexchange.com/questions/198274/storing-a-secure-key-in-an-embedded-devices-memory
答案 2 :(得分:1)
安全成本取决于它所保护的数据的价值。如果真的那么有价值的是Secure Cryptoprocessor防篡改。
基本上是设备以某种方式“破坏”事件物理篡改,并试图防止间接嗅探信号。
答案 3 :(得分:1)
这取决于您的数据的使用情况。
如果您的嵌入式设备还需要使用对称密钥所需的数据。
如果您只想存储数据,但设备本身不再需要阅读,则应使用不对称密钥。 然后,即使闪存的全部内容,也无法恢复数据 它并不是用一个好的库来实现这一点。
但是还有问题 在生成数据时仍然可以获取数据 如何避免这种情况取决于您的系统设计。