Skip to main content
Crypto 屬於進階的內部實作。一般貼文、feed 取得、通知等操作不需使用。若要建置 AT Protocol 的低階簽章驗證或 OAuth 實作時再參考。

AT Protocol 中的加密概觀

AT Protocol 為實現去中心化社群網路,全面採用橢圓曲線密碼(ECC)。主要用途如下。

金鑰對類別

AbstractKeypair

AbstractKeypair 為 P256 / K256 共用的基礎類別。內部使用 phpseclib3

P256 (secp256r1)

用於 OAuth(DPoP / Client Assertion)。OAuthKey 繼承 P256,並從 config('bluesky.oauth.private_key') 載入私鑰。 也提供產生新 OAuth 私鑰的 Artisan 指令。

K256 (secp256k1)

用於 Feed Generator 與 Labeler 的認證。Bluesky 的 PDS / Relay 會以此曲線驗證簽章。

DidKey

DidKey 類別將公鑰編碼 / 解碼為 did:key 格式。

什麼是 did:key 格式

AT Protocol 中公鑰以 did:key:z... 字串表達。這是在公鑰上附加曲線識別碼後,以 Base58btc 進行 multibase 編碼的結果。

將公鑰編碼為 did:key

從 DID Document 解析公鑰


JsonWebToken (JWT)

JsonWebToken 類別提供 JWT 的編碼 / 解碼。

DPoP (Demonstrated Proof of Possession)

DPoP 是將 OAuth access token 綁定至特定 client 金鑰對的安全機制,可預防 token 重放攻擊。 DPoP 類別為內部使用,通常無需直接呼叫。OAuthAgent middleware 會自動附加 DPoP header。

Signature(簽章格式轉換)

AT Protocol 採用 64 位元組的緊湊簽章格式,但 phpseclib3 回傳的是 ASN.1 DER 格式。Signature 類別負責此轉換。

JsonWebKey

JsonWebKey 是代表 JWK (JSON Web Key) 的類別。用於產生 DPoP proof。

OAuthKey

OAuthKey 是繼承自 P256 的 OAuth 專用金鑰類別,使用 config('bluesky.oauth.private_key') 的值作為私鑰。
通常會在 Bluesky Socialite 內部自動處理。

參考連結

Source:src/Crypto/
最後修改於 2026年8月2日