Overzicht van cryptografie in het AT Protocol
Het AT Protocol gebruikt overal elliptische-krommecryptografie (ECC) om een gedecentraliseerd sociaal netwerk mogelijk te maken. De belangrijkste toepassingen zijn:Sleutelpaarklassen
AbstractKeypair
AbstractKeypair is de gemeenschappelijke basisklasse voor P256/K256. Intern wordt phpseclib3 gebruikt.
P256 (secp256r1)
OAuthKey erft van P256 en laadt de privésleutel uit config('bluesky.oauth.private_key').
Er is ook een Artisan-command om een nieuwe OAuth-privésleutel te genereren.
K256 (secp256k1)
DidKey
DeDidKey-klasse encodeert en decodeert publieke sleutels in het did:key-formaat.
Wat is het did:key-formaat?
In het AT Protocol wordt een publieke sleutel weergegeven als een string van de vormdid:key:z.... Dit is de publieke sleutel met een kromme-identifier, multibase-geëncodeerd met Base58btc.
Een publieke sleutel encoden als did:key
Een publieke sleutel parsen uit een DID Document
JsonWebToken (JWT)
DeJsonWebToken-klasse biedt JWT-encoding en -decoding.
DPoP (Demonstrated Proof of Possession)
DPoP is een beveiligingsmechanisme dat een OAuth-accesstoken bindt aan een specifiek client-sleutelpaar. Het voorkomt replay-aanvallen met tokens. DeDPoP-klasse wordt intern gebruikt; normaal hoef je deze niet rechtstreeks aan te roepen. De OAuthAgent-middleware voegt automatisch DPoP-headers toe.
Signature (conversie van handtekeningformaten)
Het AT Protocol gebruikt een compact handtekeningformaat van 64 bytes, maar phpseclib3 geeft het ASN.1 DER-formaat terug. DeSignature-klasse verzorgt deze conversie.
JsonWebKey
JsonWebKey is een klasse die een JWK (JSON Web Key) representeert. Deze wordt gebruikt bij het genereren van DPoP-proofs.
OAuthKey
OAuthKey is een OAuth-specifieke sleutelklasse die erft van P256 en de waarde van config('bluesky.oauth.private_key') als privésleutel gebruikt.
Referenties
Source: src/Crypto/