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로 멀티베이스 인코드한 것입니다.
공개 키를 did:key로 인코드
DID Document에서 공개 키를 파싱
JsonWebToken (JWT)
JsonWebToken 클래스는 JWT의 인코드·디코드를 제공합니다.
DPoP (Demonstrated Proof of Possession)
DPoP는 OAuth 액세스 토큰을 특정 클라이언트 키 페어에 결부시키는 보안 메커니즘입니다. 토큰의 리플레이 공격을 방지합니다.DPoP 클래스는 내부에서 사용되며, 일반적으로 직접 호출할 필요가 없습니다. OAuthAgent 미들웨어가 자동으로 DPoP 헤더를 부여합니다.
Signature (서명 포맷 변환)
AT Protocol은 64바이트의 컴팩트 서명 형식을 사용하지만, phpseclib3은 ASN.1 DER 형식을 반환합니다.Signature 클래스는 이 변환을 담당합니다.
JsonWebKey
JsonWebKey는 JWK(JSON Web Key)를 나타내는 클래스입니다. DPoP 프루프 생성에 사용됩니다.
OAuthKey
OAuthKey는 P256을 상속한 OAuth 전용 키 클래스이며, config('bluesky.oauth.private_key') 값을 비밀 키로 사용합니다.
참고 링크
Source: src/Crypto/