因此,我试图使用X25519来为内容加密密钥(CEK)和用于内容的AES-256-GCM来生成JWE。
但是,我的问题是,NaCl需要一个IV (在NaCl中为nonce),用于密钥的非对称加密和内容的对称加密。
看看其他的例子,比如ietf-何塞食谱,(X25519,A128GCM),它们只有一个“顶级”IV。
对x25519和A256GCM都使用相同的IV可以吗?
如果没有,x25519的IV在哪里放置在JWE中?
或者还有什么是我完全错过的?
{
header: {
enc: "A256GCM",
alg: "ECDH-ES",
epk: {
crv: "X25519",
kty: "OKP",
x: ephemPublicKey
iv: "Perhaps we stuff the X25519 iv here?",
},
iv: "Perhaps we stuff the X25519 iv here?",
encrypted_key,
},
ciphertext,
tag,
iv: "iv for the A256GCM only or both?",
}
发布于 2020-06-17 15:03:57
因此,感谢@kelalaka的评论,答案是X25519不需要iv。我使用的不仅仅是X25519,而是通过TweetNaCl.js使用的x25519-xsalsa20-poly1305。
实际上不需要使用x25519-xsalsa20-poly1305来封装AES-256-GCM密钥,因为"xsalsa20是流密码,poly1305是用于相互身份验证的。“
关于JWE,没有一种方法可以在JWE中使用x25519-xsalsa20-poly1305,因为JWE需要经过身份验证的加密附加数据(AEAD),而salsa只具有身份验证加密(AE)。
因此,我使用JWE的选项是切换到只使用x25519 + AES-256-GCM或只使用x25519-xsalsa20-poly1305而不使用JWE (或者至少不使用符合标准的JWE)。
https://crypto.stackexchange.com/questions/81378
复制相似问题