Lora Basics调制解调器和Lora Edge文档

加密引擎

介绍

加密引擎为基于AES-128的算法计算以及专用的RAM和闪存提供了专用的硬件加速器,以处理诸如加密键之类的敏感参数,而无需读取访问。

加密引擎提供了几个功能:

  • 由于其硬件加速器,提高了功率效率

  • 减少了记忆足迹,这要归功于其全面的API

  • 由于其专用的闪光灯和RAM组合,改进了安全性

  • 简化了Lorawan®标准实施,这要归功于直接适用于Lorawan消息的基础

兼容性

Lora Edge™LR1110收发器

逐步过程

上下文管理

加密上下文描述了可以通过加密引擎(键和参数)保存在Flash中的数据集。

为了确保所有数据准备就绪,最好的做法是在电动上方或离开睡眠模式时恢复加密环境而无需保留。

  1. 如有必要,恢复加密环境。这将通过闪光灯到RAM加载上下文cryptorestorefromflash()命令。

  2. 实施与应用程序相关的操作(例如,加密数据,计算AES-CMAC等)。

  3. 如果修改了加密环境,请保存加密环境。这将通过cryptostoretoflash()命令。

设置并使用钥匙

  1. 恢复加密环境。

  2. cryptosetkey()

  3. 保存加密环境。这可以在进入睡眠模式之前的任何时间进行,而无需保留或重置芯片。

  4. 执行加密操作(例如,cryptoAesencrypt())具有正确的密钥ID。

笔记

并非所有密钥都可以由用户设置。

设置并使用参数

  1. 恢复加密环境。

  2. 设置一个参数cryptosetparam()

  3. 保存加密环境。这可以在进入睡眠模式之前随时完成,而无需保留或重置芯片。

  4. 在需要时,可以阅读参数cryptogetParam()

深入的行为

加密操作

加密引擎实现了FIPS Pub 197和ISO/IEC 18033-3中定义的AES-128加密。

内存管理

加密引擎有自己的RAM和闪存区域。

专用RAM分为三个地址空间:

  • 一个受保护(仅写)地址空间存储密钥

  • 密码核心使用的受保护(读 /写)地址空间

  • 一个未保护的地址空间来存储设备参数(例如EUI)

专用的闪光灯在加密引擎的直接访问下。(CPU没有直接访问。)它用于存储受保护和未保护的RAM地址空间。这个专用的闪存区域的目的是使电路能够从低功率模式恢复其状态。

为了减少功耗并优化处理时间,所有操作均在RAM中执行。通过用户请求将上下文保存在闪存中。

当芯片进入睡眠模式并保留时,加密引擎的RAM将保留。

密钥管理

根据它们所提供的功能,将钥匙排列成几个组。

该安排决定了:

  • 哪些加密功能可以与组一起使用。

  • 其他键的其他组可以从键ID中得出。

Lorawan®

加密引擎在Lorawan上下文中提供了几种有用的功能:

  • cryptoprocessjoinaccept():解密并验证麦克风加入接受消息。仅当验证成功时,才返回解密数据。

  • cryptoaeesencrypt01():使用AES-128算法加密数据(第一个数据字节被迫0x01,请参阅第4.3.3节洛万规范1.0.3)。

  • cryptoderivekey():可用于推导AppSkey和NWKSKEY。

  • cryptocomputeaescmac():生成基于AES-CMAC麦克风

  • cryptoverifyaescmac():验证基于AES-CMAC麦克风

故障排除

  • 尽管有名字,但功能cryptocomputeaescmac()cryptoverifyaescmac()既不计算也不验证完整的AES-CMAC值。这两个功能实际上使用了麦克风,对应于AES-CMAC值的前四个字节。截断是按照所述完成的RFC 4493