Gui*_*ean 2 cryptography aes stm32
我正在 STM32L4x6 上开发一个设备。它通过 BLE 连接到智能手机并与其交换加密数据。
加密是 AES-GCM,我使用的是 STMicro 提供的参考实现。
我在 Curve25519 上使用 Diffie-Hellman 协议实现了共享秘密交换机制。现在我直接使用这个共享密钥作为 AES 密钥。
然而我对两点感到困惑:
谢谢
至于派生会话密钥 - 您可能需要研究密钥派生函数 (KDF)主题。谷歌搜索它会返回许多与建立会话密钥相关的有用信息。您也可以在https://crypto.stackexchange.com/上提问。
至于在 STM32 中存储密钥 - 这取决于您的要求。密钥是否需要在会话之间保留,还是可以在每次建立连接时生成一个新密钥?每次建立新连接时生成新密钥会更安全,原因有两个:
每个连接都是不同的,因此即使有人设法从过去获取会话密钥,它也只能用于解密该会话。
如果您为每个新会话生成一个新密钥,则无需将其存储在闪存等任何地方,因为您可以仅将其保存在 RAM 中。关闭设备电源将擦除密钥。启用读保护可防止访问 RAM 以及内部闪存。
然而,关于第二点 - STM32 不被视为“安全微控制器”。它缺乏防止硬件攻击的硬件元素 - 电源电压故障检测、旁道预防、安全网格等。只要有足够的资源和决心,攻击者将能够获取您使用的加密密钥,例如通过磨碎芯片封装并光学读取您的数据。这涉及到设备的安全性如何——开发时间成本、硬件安全成本。使用STM32,您所能做的就是让它变得更难(将密钥保留在RAM中,仅在需要时才使用,然后用噪音覆盖它们)并限制攻击者的范围(尽可能频繁地更改会话密钥,例如每个会话) 。
| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |