【发布时间】: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