我正在为一个大项目研究 AWS IoT,我想更多地了解这项出色的服务,所以我在这里向您提出一个问题。
AWS IoT 文档中的每个示例都讨论了一个连接到此服务的设备,但如果我有数千个设备,该过程将如何工作?我是否必须为每个设备创建一个东西,在每个技术单位内创建和上传证书并将它们添加到正确的网关端点?
我想我应该编写一个脚本来生成所有这些资源并在组装阶段将它们上传到固件中。
将 AWS-IoT 用于大量设备的正确方法是什么?
我正在为一个大项目研究 AWS IoT,我想更多地了解这项出色的服务,所以我在这里向您提出一个问题。
AWS IoT 文档中的每个示例都讨论了一个连接到此服务的设备,但如果我有数千个设备,该过程将如何工作?我是否必须为每个设备创建一个东西,在每个技术单位内创建和上传证书并将它们添加到正确的网关端点?
我想我应该编写一个脚本来生成所有这些资源并在组装阶段将它们上传到固件中。
将 AWS-IoT 用于大量设备的正确方法是什么?
AWS 论坛上有一些我认为可以帮助您的建议:
我做了一个与此类似的程序......最初使用仅在生产期间使用的证书刷新每个设备。每个设备都可以使用相同的证书,它只需要在闪存中,而不是在 SOC 的密钥库中。由于您对闪存进行加密,因此可能会将其放入数据分区。这使您可以将相同的图像写入每个设备的闪存中。
向 AWS IOT 注册您自己的证书颁发机构。将其私钥放入 System Parameter Store 并尽可能保护它。在生产线上测试该单元。使用共享的生产密钥附加到 AWS IOT。发送包含芯片序列号的消息(大多数SOC中的硬件CPUID号)。使用 lambda 处理该消息,该 lambda 使用 CA 的安全私钥生成嵌入设备序列的新的唯一证书。将此证书的新生成的唯一密钥下载到设备中,并将私钥写入 SOC 上的 OTP 内存。删除生产过程中使用的证书。
您不必在生产过程中生成唯一的证书。相反,您可以在第一次从客户站点连接设备时执行此操作。在生产期间执行此操作的优势在于,您可以查看为其生成证书的序列号,并确保您的工厂不会意外“丢失”用于灰色市场的一千台设备。如果工厂测试 10,000 台设备,您就会知道并能够确保他们交付 10,000 台设备。
我们正在考虑添加 NXP A1006TL(0.30 美元)以提供比我们的 SOC 更好的加密支持。较旧的嵌入式 SOC 没有足够大的 OTP 存储来存储私钥。我们将唯一的私钥放在闪存中,然后在 OTP 中使用较小的密钥对其进行解密,但这并不完全安全,因为私钥在解密后可以访问。