确保已部署软件的 public 密钥安全

Ensure public key safety on deployed software

我想用我自己的 public 密钥将我的应用程序发送给我的客户。当我的客户需要从我的应用程序导出 IP 数据以进行调试时,将使用此密钥。这些数据只需要我自己可读。假设客户无法读取我的代码,也无法访问我的应用程序的内存,但能够在应用程序中识别我的 public 密钥,并可能将其替换为他们的密钥,从而使他们可以读取导出。在开始导出之前,我有哪些选项可以确保我的 public 密钥实际上是我自己的私钥的一对?

如果 我们假设 OP 的威胁模型,特别是攻击者没有 调试 应用 and/or 以某种方式搞乱运行 时间内进程的内存,应用程序应在执行加密之前验证 public 密钥,无论 public 密钥可能来自何处。

强度递减顺序:

  • 来自 public 证书颁发机构的数字签名(将支付),依赖于系统受信任的根
  • 使用 OP 拥有的另一个私钥进行数字签名(在应用程序中对 public 密钥进行硬编码)
  • 具有硬编码密钥的 public 密钥的 HMAC
  • public 键的哈希值

对于 RSA 密钥,模数几乎可以识别 public 密钥。我熟悉的大多数 RSA 供应商实现中的 public 指数无论如何都硬编码为 65537。