【问题标题】:Signature verification for firmware固件签名验证
【发布时间】:2018-09-18 17:00:29
【问题描述】:

如何验证固件(.bin 文件)是否已签名,是否有可以使用的工具或脚本,据我所知 sigcheck 不适用于固件,对此有何帮助?

【问题讨论】:

    标签: binary cryptography reverse-engineering firmware


    【解决方案1】:

    bin 文件通常只是一个二进制文件。固件文件没有(单一)标准。毫无疑问,该文件内部具有结构,但对我们而言,无法分辨它是什么。一般来说,一个工具只适用于特定的协议。

    RSA 签名本身是使用公共指数进行模幂运算的结果。然后将结果转换为 几乎 与随机无法区分的字节数组。大小具有模数的大小,与密钥大小相同,以字节为单位。 RSA 可以用于各种格式,例如带有 PKCS#1 v1.5 填充的 RSA 或带有 PSS 填充的 RSA;然而,输出看起来是一样的。存在其他签名类型,例如与 RSA 完全不同的 ECDSA 签名。它们具有不同(更小)的大小,并且可以动态和静态地调整大小。如果需要在资源受限的硬件上检查签名,ECDSA 就很有意义。

    通常签名是在最后一步计算的,因此 .bin 文件的最后一个字节通常是签名。如果幸运的话,签名是使用标准执行的,例如PGP 兼容签名或 CMS 兼容签名。对于 CMS 签名,您可以检查文件是否包含所谓的 ASN.1 结构。这些是使用称为 BER 的东西编码的,可以解析(例如使用 openssl asn1parse -inform BER)。

    所以这一切都取决于协议。没有单一的工具可以检查某些东西是否已签名,协议太不同了,签名本身看起来就像随机数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      相关资源
      最近更新 更多