【问题标题】:Encryption Key Management during a asynchronous call for a short-lived key异步调用短期密钥期间的加密密钥管理
【发布时间】:2021-03-25 07:22:30
【问题描述】:

以下是我需要管理的场景。非常感谢您对管理加密密钥的最佳方法的任何想法。

Bob,客户端需要从数据提供者 Alice 那里提取一些机密数据。 Bob 和 Alice 同意使用 Elliptic Curve Delffie-Hellman 密钥交换协议。因此,每当 Bob 向 Alice 请求一些数据时,首先使用 ECDH 交换密钥。发布 Alice 将准备数据,这需要几秒钟到几分钟才能完成。一旦数据准备好,Alice 使用从 ECDH 密钥交换中派生的对称密钥对数据进行加密,并向 Bob 发送通知以提取数据。 Bob 使用回调 API 从 Alice 那里提取数据并使用密钥解密。发布这个作为 ECDH 的一部分生成的密钥被销毁,因为要求密钥必须是临时的。

所以我的问题是,在 Bob 在初始数据请求和 ECDH 密钥交换之后等待数据到达时,将密钥安全地保存在 Bob 端几秒钟到几分钟的最佳和实用方法是什么?需要注意的是,Bob 可以从移动应用程序或任何受支持设备上的网络浏览器发送此类数据请求。

使用其中一个密钥管理系统听起来像是一种选择。但考虑到密钥的寿命很短,因为要求每笔交易都有一个新密钥,并且每天可能有 100 次这样的交易,不确定在这种情况下依赖 KMS 在财务上是否谨慎和实用。

请注意,由于某些原因,数据请求和履行的过程以及上面解释的加密算法是不可协商的。

想法?有什么建议吗?

【问题讨论】:

  • 为什么要自己重新实现 TLS 的一部分?只需使用它并完成它。
  • 谢谢@ArtjomB。我了解 DH 密钥交换也用于 TLS 级别。但是,就我而言,除了 TLS 1.3 提供的网络层加密之外,我还被要求在数据层上进行端到端加密(这就是我的意思 - cyware.com/news/…)。所以,这里我指的是数据层端到端加密。密钥将使用 ECDH 生成,AES256 算法将用于数据加密。

标签: asynchronous encryption cryptography ecdh


【解决方案1】:

由于 Bob 需要访问密钥才能解密数据,因此他应该以不会破坏密钥保护的数据存储的方式存储它。这意味着如果数据必须仅在接收时才存在于内存中,则密钥可以保存在内存中。当还必须存储它所保护的数据时,可以存储密钥。

请记住,您可以通过额外的加密层重新设计这个“问题”,从而将问题从 Bob 转移到 Alice。 Alice 生成一个随机密钥,用它加密数据并将密文存储在公共位置 (API) 上。然后发生密钥交换,从而产生第二个密钥。第二个密钥用于加密第一个密钥并将其发送给 Bob。现在 Bob 可以在收到加密的第一个密钥后立即解密数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多