什么是JWA?深入解析JSON Web算法
JWA定义
JSON Web算法(JWA)是一个提供加密算法列表的规范。它是JSON对象签名与加密(JOSE)标准家族的重要组成部分。JOSE包括JSON Web令牌(JWT)、JSON Web签名(JWS)和JSON Web加密(JWE)等。
JWA为多种加密算法提供了定义,这些算法支持各种用途。
在本指南中,您将学习以下内容:
- 如何解码JWA短名称
- 有哪些JWA算法
- 为什么JWA对OpenID Connect很重要
JSON Web算法的结构
JWA规范为每个算法定义了唯一的名称。这些名称是短字符串,编码了特定的算法家族和哈希算法。大多数签名算法都有SHA-256、SHA-384和SHA-512的变体。
JWA规范中定义的最常见算法名称包括:
| 算法名称 | 算法描述 |
|---|---|
| HS256 | 使用SHA-256的HMAC |
| RS256 | 使用SHA-256的RSA签名 |
| ES256 | 使用P-256和SHA-256的ECDSA |
| RSA-OAEP | 使用默认参数的RSAES OAEP |
| A128KW | 使用128位密钥的AES密钥包装 |
RFC 7518定义了基本的JSON Web算法。JOSE IANA注册表提供了支持的算法的完整列表。这些唯一引用允许接收者识别正确的加密过程,它们是JOSE头部的一部分。
JSON Web算法的不同类型
JWA规范定义了许多加密算法,支持各种用例,包括:
- 使用JSON Web签名(JWS)进行签名,确保令牌在传输过程中的完整性
- 使用JSON Web加密(JWE)进行加密,保护令牌负载的机密性
- 使用JSON Web密钥(JWK)进行分发,实现分布式JWT验证
所有JSON Web算法要么是对称的,要么是非对称的。
理解对称密钥算法
基于哈希的消息认证码(HMAC)是用于签名JWT的流行算法类别。像HS256这样的HMAC提供了一种使用共享密钥对消息进行签名的方法。它们属于对称加密算法家族。
对称算法需要所有相关方都知道相同的密钥。当所有客户端都能保证共享密钥的机密性时,它们很有用。它们的宽松性质允许所有密钥持有者创建和验证JWT。HMAC最适合在具有一个中央颁发者/验证者的设置中使用。
深入探讨非对称密钥算法
JWA指定了两个非对称加密和数字签名算法家族——RSA和ECDSA。公钥-私钥对构成了非对称算法的基础。它们能够将令牌的验证或解密与能够伪造新令牌分离开来。这对于分布式令牌验证场景至关重要。它允许在OAuth 2.0和OpenID Connect(OIDC)中进行分散式授权决策。
JWA的实际应用
一个广泛使用的用例是对非对称签名JWT进行分散式令牌签名验证。这是OpenID Connect的关键推动因素。
这种实际应用的前沿是一个中央授权服务器。这个令牌颁发者持有私钥签名密钥,并公开其公钥材料。需要验证令牌的客户端从知名的JWK端点获取公钥。基于JWT头部携带的加密元信息,客户端识别匹配的密钥和JWA。这样,依赖方可以验证令牌的完整性,而无需集中式内省。
结论
JWA是JSON Web令牌(JWT)技术套件的一部分。它是一个加密算法的集合。作为每个JWT的重要组成部分,JWA为整个JOSE工具箱提供动力。这些JOSE技术构建了可以轻松互操作的安全系统。OpenID Connect是这种框架的一个著名示例。
请注意,每个JSON Web算法都有其安全影响。适当的用例取决于实现的具体情况。选择最符合您特定安全要求的算法至关重要。