如何使用 IFTTT 生成基于时间的一次性密码?

物联网 安全 伊夫特 一次性密码
2021-06-08 01:57:50

我最近注册了IFTTT,这似乎是一项很棒的服务,可以将事件链接在一起以创建智能家居或自动化各种服务。

我刚刚找到了Maker 频道,它允许您发出简单的 HTTP 请求(例如 GET 和 POST),我希望使用它来安全地向我正在运行的正在等待任何 API 请求的 Raspberry Pi 发送消息在某条路线上(例如,比方说POST /foo)。

我链接Makezine 文章提出了这种安全方法:

现在我在上面所做的非常不安全,我基本上向世界公开了一个脚本——换句话说,一个网络应用程序——可以切换控制我家灯的开关。这显然不是您想要做的事情,但这就是 IFTTT 的服务提供将更多信息传递给远程服务的功能的原因。

例如,在两者之间设置一个经过 TOTP验证的链接,或者令牌或密钥交换,并保护您的 IFTTT 帐户本身并不困难他们刚刚添加了两因素身份验证。

在维基百科上阅读了更多关于基于时间的一次性密码的信息,这似乎表明为了生成一次性密码需要进行计算。

由于 IFTTT 不支持任务链或任何脚本,我如何按照文章中的建议生成 TOTP?是否有可能这样做,因为需要进行一些计算并且似乎没有办法做到这些?

1个回答

链接的文章有点误导。IFTTT 提供的接口不是完全开放的,它需要在请求中提供一个密钥。由于请求是使用 HTTPS 发出的,因此无法直接观察到机密(前提是您的客户端始终可靠地连接到 IFTTT,而不是 mitm 代理)。

制造商频道信息页面(特定于用户)

触发事件 发出 POST 或 GET Web 请求以:

https://maker.ifttt.com/trigger/ {event}/with/key/my-secret-key 带有可选的 JSON 主体:

{ "value1" : "", "value2" : "", "value3" : "" }

数据是完全可选的,您也可以将 value1、value2 和 value3 作为查询参数或表单变量传递。此内容将传递到您的食谱中的操作。

您也可以从命令行使用 curl 来尝试。

curl -X POST https://maker.ifttt.com/trigger/ {event}/with/key/my-secret-key

现在密钥只是低熵,因此可能会从监视您的请求中逆转(除非您用高质量的噪音填充它们),但在这种情况下,处理 HTTPS 通道设置的 TLS 满足了每个会话安全性的请求.

为了使通信更加安全,需要 IFTTT 专门支持端点身份验证,但这似乎超出了应用于其他服务端链接的安全性。这意味着您通往 IFTTT 的创客渠道目前与通往家用电器的 IFTTT 渠道同样安全。