

# 使用 适用于 LoRaWAN 的 AWS IoT Core 确保数据和传输安全
<a name="iot-lorawan-security"></a>

适用于 LoRaWAN 的 AWS IoT Core 使用以下方法保护 LoRaWAN 设备、网关和 适用于 LoRaWAN 的 AWS IoT Core 之间的数据和通信：
+ 设备在与 LoRaWAN 网关通信时应遵循的最佳安全实践，如白皮书 [LoRaWAN 安全性](https://lora-alliance.org/sites/default/files/2019-05/lorawan_security_whitepaper.pdf)中所述。
+ AWS IoT Core 用于将网关连接到 适用于 LoRaWAN 的 AWS IoT Core 并将数据发送到其他 AWS 服务的安全解决方案。有关更多信息，请参阅 [AWS IoT Core 中的数据保护](https://docs.aws.amazon.com/iot/latest/developerguide/data-protection)。

## 如何在整个系统中保护数据
<a name="lorawan-security-data-how"></a>

此图表标识了 LoRaWAN 系统中的关键元素，这些元素连接到 适用于 LoRaWAN 的 AWS IoT Core 以确定在整个过程中保护数据的方式。

![\[图片显示了 适用于 LoRaWAN 的 AWS IoT Core 数据如何从无线设备传递到 AWS IoT 和其他服务。\]](http://docs.aws.amazon.com/zh_cn/iot-wireless/latest/developerguide/images/iot-lorawan-data-flow.png)


1. LoRaWAN 无线设备在传输二进制消息之前会使用 AES128 CTR 模式对其进行加密。

1. 网关与 适用于 LoRaWAN 的 AWS IoT Core 的连接通过 TLS 得到保护，如[AWS IoT 中的传输安全性](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html)中所述。适用于 LoRaWAN 的 AWS IoT Core 对二进制消息进行解密，并将解密的二进制消息负载编码为 base64 字符串。

1. 生成的 base64 编码消息将作为消息负载发送到分配给设备的目标中所述的 AWS IoT 规则中。AWS 内的数据使用 AWS 拥有的密钥进行加密。

1. AWS IoT 规则将消息数据定向到规则配置中描述的服务。AWS 内的数据使用 AWS 拥有的密钥进行加密。

## LoRaWAN 设备和网关传输安全性
<a name="lorawan-security-devices"></a>

LoRaWAN 设备和 适用于 LoRaWAN 的 AWS IoT Core 存储预共享的根密钥。会话密钥由 LoRaWAN 设备和 适用于 LoRaWAN 的 AWS IoT Core 根据这些协议衍生得出。对称会话密钥用于标准 AES-128 CTR 模式下的加密和解密。还使用 4 字节的消息完整性代码 (MIC) 来检查遵循标准 AES-128 CMAC 算法的数据完整性。可以使用加入/重新加入进程更新会话密钥。

 LoRa 网关的安全实践在 LoRaWAN 规范中有所说明。LoRa 网关使用 [https://lora-developers.semtech.com/resources/tools/lora-basics/lora-basics-for-gateways/](https://lora-developers.semtech.com/resources/tools/lora-basics/lora-basics-for-gateways/) 通过 Web 套接字连接到 适用于 LoRaWAN 的 AWS IoT Core。适用于 LoRaWAN 的 AWS IoT Core 仅支持 `Basics Station` 2.0.4 及更高版本。

在建立 Web 套接字连接之前，适用于 LoRaWAN 的 AWS IoT Core 使用 [TLS 服务器和客户端身份验证模式](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html)对网关进行身份验证。为了确保 LoRaWAN 协议的机密性，使用了 [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) [版本 1.2](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2)。TLS 支持适用于许多编程语言和操作系统。AWS内的数据是由特定的AWS服务加密的。有关其他 AWS 服务上数据加密的更多信息，请参阅该服务的安全文档。

 适用于 LoRaWAN 的 AWS IoT Core 还维护一个配置和更新服务器（CUPS），该服务器配置和更新用于 TLS 身份验证的证书和密钥。