DID が他の識別子と異なる点について説明する
2019 年 9 月に日本の福岡で開催された W3C DID Working Group 会議で言及されたように、分散化識別子 (DID) v1.0 のコア アーキテクチャ、データ モデル、および表現に関する W3C 推奨事項として現在公開されている DID 仕様の開発への資金提供による、4 つの理由がありました。
- "永久的 (永続的) 識別子" - DID は永続的になるように設計されています。 永続的とは、"DID は、DID のコントローラーの同意なしに、サードパーティによって削除したり操作不能にすることはできない" という意味です。
- "解決可能な識別子" - DID は解決可能な識別子です。つまり、それを検索して、その DID に関連付けられている何かを検出できます。たとえば、そのメタデータを検出できます。 DID が解決される情報は DID ドキュメントです。
- "暗号的に検証可能な識別子" - DID は暗号的に検証可能な識別子です。つまり、DID を制御するエンティティである DID コントローラーは、暗号化を使用して識別子の制御を証明できます。
- "分散化識別子" - DID は分散化識別子です。 つまり、DID を作成および管理する登録機関は 1 つもありません。 DID では、検証可能なデータ レジストリとも呼ばれる分散型ネットワークを使用して、トランザクションを登録および記録します。 これらのレジストリは、分散型台帳、ブロックチェーン、分散ファイル システム、またはその他の信頼されたデータ ストレージにすることができます。 DID で使用できる検証可能なデータ レジストリには、さまざまな種類があります。 採用されるアプローチは DID メソッドによって異なります。
これら 4 つの理由は、DID のコア プロパティとして機能します。 これらのプロパティの一部を満たすことができる既存の識別子がありますが、DID は、これらの 4 つのプロパティすべてを満たす最初の新しい種類の識別子です。
解決可能な DID と DID ドキュメント
識別子について一般的に考えると、情報を提供したり、対話や通信を有効にしたりできるアプリケーションのコンテキストで使用されるときに、値が提供されることになります。 たとえば、識別子の一種である URL は、実際には Web ブラウザーに入力され、使用できる Web ページを返す場合にのみ値を持ちます。 このコンテキストでは、URL は Web ページに解決されます。 同じ概念が DID に適用されますが、Web ブラウザーを使用して Web ページに解決されるのではなく、DID ではリゾルバーと呼ばれるソフトウェアまたはハードウェアを使用し、DID ドキュメントを返します。
DID ドキュメントは、DID サブジェクトと呼ばれる DID によって識別されるエンティティを説明する、公開されているデータ セットです。 分散化識別子 (DID) v1.0 の W3C 推奨事項では、DID ドキュメントのコア プロパティが定義されています。 コア プロパティには次のものが含まれます。
- 検証方法 - これには、暗号化公開キーと関連するメタデータが含まれます。 たとえば、デジタル署名の検証方法として暗号化公開キーを使用できます。
- サービス - サービスは、DID サブジェクトとの通信または対話に使用されます。 これには、サブジェクトで公開する必要がある情報が含まれる場合があります。 これらの例には、検証可能な資格情報リポジトリ サービス、ファイル ストレージ サービス、エージェント サービスなどが含まれる場合があります。 これらは、HTTP URL などのネットワーク アドレスとして示されるサービス エンドポイントとして表されます。
これらは、DID ドキュメントに一般的に含まれるデータのほんの数例です。 DID ドキュメントは、DID を採用するアプリケーションとサービスによって使用される公開されているドキュメントです (エンド ユーザーによる使用を目的としない)。 DID ドキュメントには、公開キー、サービス エンドポイントおよびその他のメタデータなど、DID サブジェクトを説明する情報が含まれていますが、サブジェクトに関する個人データを含めることはできません。 公開されているドキュメントとして、必要な対話または通信をサポートするために必要な最小限の情報を含めることをお勧めします。
DID と公開キー暗号化
DID コントローラーで識別子の制御をどのように証明できるかを理解するために、公開キー暗号化について少し理解しておくと役立ちます。
DID では非対称暗号化 (公開キー暗号化ともいう) が使用されます。 公開キー暗号化では、公開キーと秘密キーのペアが使用され、暗号化による情報のセキュリティ保護と、デジタル署名による信頼性と同意の証明の確立に使用されます。 詳細については、「暗号化の概念について説明する」を参照してください。 公開キー暗号化では、広範囲に共有される公開キーが、なりすましユーザーではなく、実際に予期したエンティティからのものであることを検証することが課題です。 言い換えると、公開キーをエンティティを表す識別子にバインドするにはどうすればよいかということです。 従来の公開キー暗号化では、その信頼は、一元化された公開キー インフラストラクチャ (PKI) を形成する信頼され一元化された証明機関 (CA) からのデジタル証明書を通じて確立されます。 しかし、DID のプロパティでは分散化されていると示されているため、CA に依存したくありません。 DID でこれに対処します。メソッド固有の識別子が、公開キーに関連する情報から直接または間接的に派生するためです。 これにより、DID は、一元化された CA なしで本質的に公開キーにバインドされます。 最終的に、DID を制御するエンティティは、暗号化を使用してその識別子の制御を証明できます。 そうすることで、DID では分散型の公開キー インフラストラクチャを有効にします。
DID が公開キーに基づくアプローチでは、セキュリティ上の目的で暗号化キーをローテーションする必要がある場合、DID を変更する必要があることが提案されます。 DID を変更する必要性は、DID が永続的であるというプロパティと矛盾しています。 DID ドキュメントでこの問題に対処します。 キーを変更する必要がある場合、DID のコントローラーから、新しい公開キーを含み、元の秘密キーで署名された更新内容を DID ドキュメントに発行できます。 元の公開キーは DID ドキュメントの元のバージョンまでさかのぼることができるので、DID ドキュメントの更新内容を認証できます。 このアプローチにより、更新内容全体で信頼チェーンが確立されます。 概念的には、これはソフトウェアのバージョン管理と似たものと考えることができます。ソフトウェアの現在のバージョンは 1 つのみですが、以前のバージョンをさかのぼって、更新内容を確認できます。