Nimbus JOSE JWT 加密与 RSA、私钥和公钥
Posted
技术标签:
【中文标题】Nimbus JOSE JWT 加密与 RSA、私钥和公钥【英文标题】:Nimbus JOSE JWT Encryption with RSA, Private and Public Key 【发布时间】:2017-05-11 18:50:51 【问题描述】:对示例代码中应用的一个概念有疑问“JSON Web Token (JWT) with RSA encryption”
参考见:http://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-rsa-encryption
示例代码提供了一个基于使用公钥的RSAEncrypter
类,以及一个使用相反的私钥的RSADencrypter
类。
从更实际的角度来看,我无法理解为什么 JSON Web Token 会以这种方式生成,因为加密信息通常会使用 JWE 格式发送给客户端。同时,客户端从共享源(如数字证书存储或 JWK 存储)中提取公钥,然后从 JWE 数据中解密信息。
我的问题:为什么客户端使用私钥?为什么不在 Encrypter 类中使用私钥,在 Decrypter 类中使用公钥?
欢迎澄清此 RSA 示例代码的概念方面。
【问题讨论】:
【参考方案1】:如示例中所述,加密的目标是机密性:确保数据仅由预期的接收者读取
公钥加密的一个基本安全方面是确保数据是为预期的接收者加密的,而不是为其他方加密的,这可能会损害数据的机密性。
为各方之间的身份验证而颁发的 JSON Web 令牌未加密,使用私钥进行数字签名。对方可以用公开的公钥验证真实性和完整性。但内容并没有隐藏。观察者可以读取消息但不能修改它。
加密是使用收件人的公钥完成的。只有匹配私钥的所有者才能解密 JWT 的内容。由于使用 RSa 密钥加密的数据的大小限制,在示例中生成了 AES 对称加密密钥。消息将使用 AES 密钥加密,而此密钥使用 RSA 公钥加密并嵌入到 JWT 中。收件人将使用 RSA 私钥解密 AES 密钥
【讨论】:
感谢您对有关 RSA 密码学原理的概念性观点的澄清,即使使用 JWE 实施它会带来一些挑战。安全地分发和存储在 RESTful 对等通信的最后解密步骤中使用的私钥。 在哪里可以获得整个过程的java示例代码? 看看网站的示例页面:connect2id.com/products/nimbus-jose-jwt/examples以上是关于Nimbus JOSE JWT 加密与 RSA、私钥和公钥的主要内容,如果未能解决你的问题,请参考以下文章
无法解析 nimbus-jose-jwt 库中的符号“加密”
编码实战2022年还在用jjwt操作jwt?,推荐你使用nimbus-jose-jwt,爽到飞起~
在 nimbus-jose-jwt 中,lifespan 和 refreshTime 有啥区别?