Descripción general de la criptografía en AT Protocol
Para construir una red social descentralizada, AT Protocol adopta ampliamente la criptografía de curva elíptica (ECC). Sus usos principales son los siguientes.Clases de par de claves
AbstractKeypair
AbstractKeypair es la clase base común para P256 / K256. Internamente utiliza phpseclib3.
P256 (secp256r1)
OAuthKey hereda de P256 y carga la clave privada desde config('bluesky.oauth.private_key').
También existe un comando Artisan para generar una nueva clave privada OAuth.
K256 (secp256k1)
DidKey
La claseDidKey codifica y decodifica claves públicas al formato did:key.
Qué es el formato did:key
En AT Protocol, las claves públicas se representan como una cadenadid:key:z.... Consiste en un identificador de curva más la clave pública comprimida, codificados en multibase con Base58btc.
Codificar clave pública a did:key
Parsear la clave pública desde el DID Document
JsonWebToken (JWT)
La claseJsonWebToken proporciona codificación y decodificación de JWT.
DPoP (Demonstrated Proof of Possession)
DPoP es un mecanismo de seguridad que vincula el token de acceso OAuth a un par de claves específico del cliente. Previene ataques de replay del token. La claseDPoP se usa internamente y normalmente no necesitas invocarla directamente. El middleware de OAuthAgent añade automáticamente la cabecera DPoP.
Signature (conversión de formatos de firma)
AT Protocol utiliza un formato de firma compacto de 64 bytes, pero phpseclib3 devuelve el formato ASN.1 DER. La claseSignature se encarga de esta conversión.
JsonWebKey
JsonWebKey es la clase que representa un JWK (JSON Web Key). Se usa para generar las pruebas DPoP.
OAuthKey
OAuthKey es una clase de clave específica de OAuth que hereda de P256 y utiliza el valor de config('bluesky.oauth.private_key') como clave privada.
Enlaces de referencia
Source: src/Crypto/