【问题标题】:Are SHA1 fingerprints secure enough to check device public keys in IoT Hub?SHA1 指纹是否足够安全以检查 IoT 中心中的设备公钥?
【发布时间】:2018-04-21 04:53:02
【问题描述】:

如您所知,SHA1 去年被破坏 (https://shattered.io)。

但是,在 Azure IoT 中心和 DPS SHA1 指纹用于检查设备公钥是否可靠。

理论上,攻击者可以找到与存储在 IoT 中心/DPS 上的真实指纹匹配的与真实指纹不同的一对私钥/公钥值。

这个过程合适吗? 为什么不升级到 SHA256?

提前致谢

【问题讨论】:

    标签: security sha1 azure-iot-hub


    【解决方案1】:

    理论上,攻击者可以找到一对与存储在 IoT 中心/DPS 上的真实指纹匹配的与真实指纹不同的私钥/公钥值。

    首先:这并不容易。生成一对冲突消息是一回事;生成一对公钥具有相同哈希的私钥是另一回事。请记住,公钥是从私钥生成的;无法直接控制。

    第二:即使你生成了一对冲突的公钥,那又如何?我无法立即想到这会破坏服务提供商的安全性。如果您尝试注册两个密钥对可能会感到困惑,但仅此而已。

    【讨论】:

    • 攻击场景可能如下: 1.我使用一个私钥创建消息,其公钥指纹与geniune冲突。 2. IoT Hub 收到消息后,检查提供的公钥的指纹是否与它在注册步骤中存储的指纹相同(请注意 IoT Hub 只存储指纹,而不是整个公钥。 3. IoT Hub 验证指纹并接受(错误地)消息。
    • 当前针对 SHA-1 的攻击只允许创建碰撞对。还没有原像攻击;您不能针对您无法控制的消息(或密钥)创建冲突。
    【解决方案2】:

    DPS 和 Azure IoT Hub 都支持 SHA256 指纹。

    【讨论】:

    • docs.microsoft.com/en-us/azure/iot-hub/… 中声明:“指纹代表 X.509 证书的 SHA-1 哈希(使用二进制 DER 编码存储)。”
    • 感谢您指出这一点。我们将修复文档以显示 IotHub 接受 SHA256 指纹。支持 SHA-1 指纹以实现向后兼容性。
    • 感谢您的澄清,但我仍然有一些我不明白的地方,在文档中出现了这个例子:PrimaryThumbprint = "921BC9694ADEB8929D4F7FE4B9A3A6DE58B0790B" 这是一个 SHA-1,而不是 SHA-256!
    • 再次感谢。我们已修复示例以显示 SHA-256 指纹而不是 SHA-1。
    【解决方案3】:

    我找到了这个澄清资源:

    https://blogs.msdn.microsoft.com/kwill/2015/02/16/azure-cloud-services-only-support-sha-1-thumbprint-algorithm/

    它指出了签名算法和指纹算法之间的关键区别。 SHA-1 漏洞只影响签名算法,不影响指纹!

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      相关资源
      最近更新 更多