0

以下是我需要管理的场景。任何有关管理加密密钥的最佳方法的想法都将受到高度赞赏。

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

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

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

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

想法?建议?

4

1 回答 1

0

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

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

于 2021-03-30T17:01:59.677 回答