我需要使用 ECDH 密钥交换过程来加密/解密客户端和服务器之间的消息。
我使用jose4j库来实现加密功能。
我有本地密钥对(privatedC
和 public QC
),我有远程公钥QT
,我有transactionID
and referenceNumber
。
现在,我需要从所有这些详细信息中生成一个内容加密密钥 (CEK),并使用它来解密从服务器接收到的消息以及加密发送到服务器的消息。
我找不到应该怎么做。
规格:
Diffie-Hellman 密钥交换过程根据 JWA (RFC 7518) 在 Direct Key Agreement 模式下使用曲线 P-256,
dC
并QT
生成一对 CEK(每个方向一个),它们被标识为transactionID
. 为了从包含的 Concat KDF 函数中获取 256 位的密钥材料,假设 ECDH-ES+A256KW 的“enc”参数并假设 KDF 的 algorithmID 为空(注意,这仅使用 RFC 7518 进行密钥派生)。此版本规范支持的参数值为:
- “alg”:ECDH-ES
- “apv”:
referenceNumber
- “EPK”:
QТ
- {“kty”:“EC”“crv”:“P-256”}
- 所有其他参数:不存在
- CEK:“kty”:提取为 oct-256 位:
- CEK(a->s):256 位
- CEK(s->a):256 位
谢谢!