Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

アイデンティティと検証

did:webによる紐付け

polkaは、ドメイン名と公開鍵を紐付ける仕組みとして、did:webを採用しています。

did:webとは

did:webは、W3Cが標準化したDecentralized Identifierの一種で、Webドメインを使ったDIDです。

did:web:example.com というDIDは、https://example.com/.well-known/did.json にあるDID Documentを指します。

DID Documentには、そのDIDに紐づく公開鍵とサービスエンドポイントが記載されています。

DID Documentの構造

DID Documentは、JSON形式で記述されます。polkaで使用される典型的なDID Documentは以下のような構造を持ちます。

verificationMethod

公開鍵のリストです。各公開鍵には一意のIDが付けられます。

assertionMethod

署名検証に使用する鍵のリストです。verificationMethod で定義された鍵のIDを参照します。

service

polkaリポジトリのサービスエンドポイントです。クライアントは、このエンドポイントからデータブロックを取得します。

idは#polkaである必要があります。(例:did:web:example.com#polka)

複数鍵対応の仕組み

polkaは、複数の公開鍵をサポートしています。

なぜ複数鍵が必要か

鍵のローテーション 秘密鍵が漏洩した可能性がある場合、新しい鍵に切り替える必要があります。複数鍵に対応していれば、古い鍵を無効化しながら新しい鍵を追加できます。

複数デバイスでの運用 デスクトップとモバイルで異なる鍵を使いたい場合、それぞれの鍵をDID Documentに登録できます。

検証の仕組み

クライアントがデータを検証する際、assertionMethod に含まれるいずれかの鍵で署名が検証できれば、そのデータを正当なものとして受け入れます。

すべての鍵で検証する必要はありません。1つでも検証に成功すれば十分です。

DID解決の流れ

polkaでのDID解決は、以下の手順で行われます。

1. DID DocumentのURL構築 did:web:example.com というDIDから、https://example.com/.well-known/did.json というURLを構築します。

2. HTTPS経由で取得 構築したURLに HTTPSリクエストを送り、DID Documentを取得します。

3. 公開鍵の抽出 verificationMethod から公開鍵を抽出し、assertionMethod で参照されている鍵のリストを得ます。

4. サービスエンドポイントの抽出 service から、polkaリポジトリのサービスエンドポイントを抽出します。idが #polka のサービスを探します。

5. データ取得と検証 サービスエンドポイントからデータを取得し、抽出した公開鍵で署名を検証します。