保护未配置的 IoT 设备的首次连接

物联网 安全 aws-iot 网络套接字
2021-06-15 05:40:06

假设

  • 物联网设备实际上是一种可安装在支持的操作系统上的软件,例如 Windows 或 Linux。让我们将其命名为 Software-Device。
  • 软件设备可供注册客户下载。
  • 客户可以通过一些管理面板管理他们的软件设备群。
  • 对终端客户来说,下载和安装软件设备应尽可能免维护。
  • AWS IoT Core 将成为基础平台。

工作流程

客户下载软件设备,将其安装在计算机上并运行。当软件设备第一次运行时,它还没有连接到网络,也没有连接到客户的帐户。连接和管理将由 AWS IoT 处理,但为了连接到 AWS IoT,设备必须具有有效证书。

这个想法是显示客户必须在管理面板中输入的一些数字代码(就像将 Android TV 连接到您的 Google 帐户 - 电视显示您在 google.com/device 上输入的代码)。在后台系统将识别设备,附加到客户的帐户并提供它(设置证书、IoT 端点和任何其他配置)。

从技术角度来看,这可能如何?

  • 软件设备首先连接到 WebSockets 并发送元数据,包括显示给用户的数字代码
  • 当用户在管理面板中输入代码时,一些后台作业会验证它是否有效并生成证书并发送到软件设备(通过 WebSocket 连接)
  • 设备可以使用收到的证书连接到 AWS IoT
  • 客户可以管理他们的设备

关注

我正在考虑如何在尚未配置设备时保护与 WebSocket 的连接?我现在带来的:

  • 不要保护这个端点只是设置一些速率限制。
  • 在构建阶段设置一些令牌。
  • 在软件-设备源中包含一些证书(不同客户下载的所有软件-设备的一个证书)。
  • 在请求下载时使用专用证书生成自定义构建(构建需要一些时间,因此这可能会让客户感到沮丧)。

你怎么看待这件事?这应该如何正确处理或至少是最好的方式?

1个回答

在这种情况下,既然它是一个软件,为什么不让它有一个 UI,您可以在其中询问用户 ID、密码并进行 API 调用,然后您可以配置设备并获得 IoT 证书?如果出于某种原因,这必须是无头设备,您有两件事要做:

  • 您需要一个唯一的 ID。这可以只是一个指导。或者您可以调用 API 来获取 guid。
  • 您想要进行配置。这可以是另一组 API 调用,其中包括与 android 电视一样的唯一编号。以物联网证书结束。
  • 如果您想保护您的 API 免受 DoS 攻击,您可以在您的软件中放入一个通用证书。如果有人对其进行逆向工程,您可以更改它并创建新的下载。您可以更加努力地防止逆向工程。

同时搜索 jitp AWS IoT 配置