Überblick über die Kryptografie im AT Protocol
Das AT Protocol setzt für ein dezentrales soziales Netzwerk umfassend auf Elliptic-Curve-Cryptography (ECC). Die Hauptanwendungen sind:Schlüsselpaar-Klassen
AbstractKeypair
AbstractKeypair ist die gemeinsame Basisklasse für P256 / K256. Intern wird phpseclib3 verwendet.
P256 (secp256r1)
OAuthKey erbt von P256 und lädt den privaten Schlüssel aus config('bluesky.oauth.private_key').
Es gibt auch ein Artisan-Kommando zum Erzeugen eines neuen OAuth-Privatschlüssels.
K256 (secp256k1)
DidKey
Die KlasseDidKey codiert und decodiert öffentliche Schlüssel im did:key-Format.
Was ist das did:key-Format?
Im AT Protocol wird ein öffentlicher Schlüssel als Stringdid:key:z... dargestellt. Dabei wird der öffentliche Schlüssel um einen Kurven-Identifier ergänzt und multibase-encodiert in Base58btc.
Öffentlichen Schlüssel als did:key codieren
Öffentlichen Schlüssel aus einem DID-Document parsen
JsonWebToken (JWT)
Die KlasseJsonWebToken bietet Encoding/Decoding von JWTs.
DPoP (Demonstrated Proof of Possession)
DPoP ist ein Sicherheitsmechanismus, der OAuth-Access-Tokens an ein bestimmtes Client-Schlüsselpaar bindet. Er verhindert Replay-Angriffe mit den Tokens. Die KlasseDPoP wird intern verwendet und muss normalerweise nicht direkt aufgerufen werden. Die Middleware des OAuthAgent fügt den DPoP-Header automatisch hinzu.
Signature (Signaturformat-Konvertierung)
Das AT Protocol verwendet ein kompaktes 64-Byte-Signaturformat, während phpseclib3 ASN.1-DER zurückgibt. Die KlasseSignature übernimmt diese Umwandlung.
JsonWebKey
JsonWebKey repräsentiert einen JWK (JSON Web Key) und wird zur Erzeugung von DPoP-Proofs verwendet.
OAuthKey
OAuthKey ist eine OAuth-spezifische Schlüsselklasse, die von P256 erbt. Sie verwendet den Wert von config('bluesky.oauth.private_key') als privaten Schlüssel.
Weiterführende Links
Source: src/Crypto/