AT Protocol 加密体系概览
为了实现分布式社交网络,AT Protocol 全面采用了椭圆曲线加密(ECC)。主要用途如下。密钥对类
AbstractKeypair
AbstractKeypair 是 P256 / K256 共同的基类。内部使用 phpseclib3。
P256 (secp256r1)
OAuthKey 继承自 P256,会从 config('bluesky.oauth.private_key') 加载私钥。
包中也提供了用于生成新 OAuth 私钥的 Artisan 命令。
K256 (secp256k1)
DidKey
DidKey 类负责将公钥在 did:key 格式之间进行编解码。
什么是 did:key 格式
AT Protocol 用形如did:key:z... 的字符串来表示公钥。它是在公钥之前加上曲线标识后,再用 Base58btc 做 multibase 编码得到的。
将公钥编码为 did:key
从 DID Document 解析公钥
JsonWebToken (JWT)
JsonWebToken 类提供了 JWT 的编解码。
DPoP (Demonstrated Proof of Possession)
DPoP 是一种把 OAuth access token 绑定到特定客户端密钥对上的安全机制,用于防止 token 被重放攻击。DPoP 类是内部使用的,通常不需要直接调用。OAuthAgent 中间件会自动附加 DPoP header。
Signature(签名格式转换)
AT Protocol 使用 64 字节的紧凑签名格式,而 phpseclib3 返回的是 ASN.1 DER 格式。Signature 类负责它们之间的转换。
JsonWebKey
JsonWebKey 是表示 JWK (JSON Web Key) 的类,用于生成 DPoP proof。
OAuthKey
OAuthKey 是继承自 P256、专门用于 OAuth 的密钥类,会将 config('bluesky.oauth.private_key') 的值作为私钥使用。
参考链接
Source: src/Crypto/