STM32加密库
STM32提供了加密库X-Crypto-lib对之前提到的三大类算法的支持,甚至包括一些近几年才出现的算法ChaCha20以及Poly。STM32加密库包括几乎所有的分组模式,例如ECB,CBC,GCM等等。
STM32加密库通过了美国密码算法认证体系认证,在实现上安全性得到了保证,也适合用在一些有认证需求的MCU产品上。
密码技术可以由软件实现,也可以由硬件加速。软件加密库可以运行在所有的STM32平台上。STM32特定型号有常用的算法加速,可以减轻内核负载,降低功耗。
除了STM32加密库,如果用户对认证等级要求不高,也可以采用一些第三方或者开源的加密实现。例如mbedTLS就包含了所有流行的加解密算法的实现。
算法工具
在STM32 MCU安全开发过程中,有时候需要和确认自己对MCU加密库的调用是否正确。这个时候就需要一个工具对他进行比较。在这里推荐PC上的工具OpenSSL。OpenSSL是PC上的一个命令行工具,支持所有主流算法,很容易的用来进行结果比较,也可以用来理解算法参数。
如果觉得命令行方式不大方便,在网络上也有网站,可以用来生成非对称密钥对,也可以用来对加解密结果进行对照比较。
智能锁需要的加解密算法
我们从前面的安全分析中可以知道,智能锁最需要保护的有用户开锁的权利,制造商的知识产权,以及用户的隐私。
开锁的权利事实上就是如何在系统中产生一把数字化的钥匙。这把钥匙可以不需要保密,但必须完整可靠。那么数字签名技术肯定是必须。对于MCU,推荐使用椭圆曲线算法以及SHA256来实现数字签名技术。
知识产权保护一个涉及到固件安装或者升级时的保密,肯定是需要一个对称加密技术,推荐使用AES算法。同时,在启动时要检测固件是否已经被破坏,则需要数字签名技术,推荐使用椭圆曲线算法以及SHA256来实现。
保护用户隐私,则应当使用对称密钥技术。推荐使用AES来实现对数据的加密保护。
另外,对于外界,包括云端必须进行通讯,而通讯安全这一块则必须依赖TLS实现,而TLS则几乎需要所有种类的加解密算法。
智能锁中如果实现密码锁,考虑到密码容易被别人窃听,建议实现一个有有效期的密码服务。例如,访客可以进入这个房间,但密码会在1天之内自动失效。
相关文章