Panoramica della crittografia in AT Protocol
AT Protocol adotta la crittografia a curva ellittica (ECC) in modo esteso per realizzare una rete sociale decentralizzata. Gli usi principali sono i seguenti.Classi delle coppie di chiavi
AbstractKeypair
AbstractKeypair è la classe base comune per P256 / K256. Internamente utilizza phpseclib3.
P256 (secp256r1)
OAuthKey estende P256 e carica la chiave privata da config('bluesky.oauth.private_key').
È disponibile anche un comando Artisan per generare una nuova chiave privata OAuth.
K256 (secp256k1)
DidKey
La classeDidKey codifica e decodifica una chiave pubblica nel formato did:key.
Cos’è il formato did:key
In AT Protocol una chiave pubblica è rappresentata come stringadid:key:z.... È l’aggiunta di un identificatore di curva alla chiave pubblica, seguita da una codifica multibase in Base58btc.
Codifica di una chiave pubblica in did:key
Parsing della chiave pubblica dal DID Document
JsonWebToken (JWT)
La classeJsonWebToken fornisce codifica e decodifica di JWT.
DPoP (Demonstrated Proof of Possession)
DPoP è un meccanismo di sicurezza che lega un access token OAuth a una specifica coppia di chiavi del client. Previene gli attacchi di replay del token. La classeDPoP è utilizzata internamente e normalmente non serve invocarla direttamente. Il middleware OAuthAgent applica automaticamente gli header DPoP.
Signature (conversione formato firma)
AT Protocol utilizza il formato di firma compatto a 64 byte, mentre phpseclib3 restituisce firme in formato ASN.1 DER. La classeSignature gestisce questa conversione.
JsonWebKey
JsonWebKey è la classe che rappresenta una JWK (JSON Web Key). Viene usata nella generazione delle proof DPoP.
OAuthKey
OAuthKey è una classe di chiave dedicata a OAuth che estende P256 e usa il valore di config('bluesky.oauth.private_key') come chiave privata.
Link di riferimento
Source: src/Crypto/