4

对示例代码中应用的概念“带有 RSA 加密的 JSON Web Token (JWT)”的概念有疑问

参考见:http ://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-rsa-encryption

示例代码提供了一个RSAEncrypter基于使用公钥的类,以及一个RSADencrypter使用相反的类,即私钥。

从更实际的角度来看,我无法理解为什么 JSON Web Token 会以这种方式生成,因为加密信息通常会使用 JWE 格式发送给客户端。同时,客户端从共享源(如数字证书存储或 JWK 存储)中提取公钥,然后从 JWE 数据中解密信息。

我的问题:为什么客户端使用私钥?为什么不在 Encrypter 类中使用私钥,在 Decrypter 类中使用公钥?

欢迎澄清此 RSA 示例代码的概念方面。

4

1 回答 1

4

如示例中所述,加密的目标是机密性:确保数据仅由预期的接收者读取

公钥加密中一个重要的安全方面是确保数据是为预期的接收者加密的,而不是为其他方加密的,这可能会损害数据的机密性。

为各方之间的身份验证而颁发的 JSON Web 令牌未加密,使用私钥进行数字签名。对方可以用公开的公钥验证真实性和完整性。但内容并没有隐藏。观察者可以阅读该消息但不能修改它。

加密是使用收件人的公钥完成的。只有匹配私钥的所有者才能解密 JWT 的内容。由于使用 RSa 密钥加密的数据的大小限制,在示例中生成了 AES 对称加密密钥。消息将使用 AES 密钥加密,而此密钥使用 RSA 公钥加密并嵌入到 JWT 中。接收者将使用 RSA 私有密钥解密 AES 密钥

于 2016-12-27T16:08:49.153 回答