分散型識別子(DID)v1.1

中核アーキテクチャ、データモデル、および表現

W3C勧告候補スナップショット

この文書の詳細
このバージョン:
https://www.w3.org/TR/2026/CR-did-1.1-20260305/
最新公開バージョン:
https://www.w3.org/TR/did-1.1/
最新編集者草案:
https://w3c.github.io/did/
履歴:
https://www.w3.org/standards/history/did-1.1/
コミット履歴
テストスイート:
https://github.com/w3c/did-test-suite/
実装報告:
https://w3c.github.io/did-test-suite/
編集者:
Manu Sporny (Digital Bazaar) (v1.0, v1.1)
Dmitri Zagidulin (招待専門家) (v1.1)
旧編集者:
Amy Guy (Digital Bazaar) (v1.0)
Markus Sabadello (Danube Tech) (v1.0)
Drummond Reed (Evernym/Avast) (v1.0)
著者:
Manu Sporny (Digital Bazaar)
Dave Longley (Digital Bazaar)
Markus Sabadello (Danube Tech)
Drummond Reed (Evernym/Avast)
Orie Steele (Transmute)
Christopher Allen (Blockchain Commons)
フィードバック:
GitHub w3c/did (プルリクエスト, 新しい課題, 未解決の課題)
public-did-wg@w3.org 宛てに、件名行を [did-1.1] … メッセージのトピック … として送信してください(アーカイブ
関連文書
DIDのユースケースと要件
DID拡張
DID Core実装報告

概要

分散型識別子(DID)は、 検証可能で分散型のデジタル・アイデンティティを可能にする新しい種類の 識別子である。DIDは、 DIDのコントローラによって決定される任意の 主体(例:人、組織、物、データモデル、抽象的実体など) を参照する。典型的な連合型識別子とは対照的に、 DIDは、 中央集権的なレジストリ、アイデンティティ・プロバイダ、および認証局 から切り離せるように設計されている。具体的には、 DIDに関連する情報の発見を可能にするために 他の当事者が利用される場合がある一方で、この設計は DIDのコントローラが、 他のいかなる当事者からの許可も必要とせずに、そのDIDに対する制御を証明できるようにする。 DIDは、 URI であり、DID主体DID文書と関連付け、 その主体に関連する信頼可能なやり取りを可能にする。

DID文書は、暗号材料、検証 メソッド、またはサービスを表現でき、それらは DIDコントローラDIDの制御を証明できるようにする 一連の機構を提供する。サービスは、 DID主体に関連する 信頼できるやり取りを可能にする。DIDは、 DID主体がデータモデルなどの情報資源である場合、 DID主体そのものを返す手段を提供することがある。

この文書は、DID構文、共通データモデル、中核プロパティ、 シリアライズされた表現、DID操作、および DIDをそれらが表す資源へ解決するプロセスの説明を規定する。

この文書のステータス

この節は、公開時点におけるこの 文書のステータスを説明する。現在のW3C 公開文書およびこの技術報告の最新版の一覧は、 W3C標準および草案 索引で確認できる。

W3C分散型識別子ワーキンググループは、 この文書をW3C勧告候補として公開し、 ソフトウェア開発者およびDIDメソッド仕様の著者に対して、 この文書のすべての機能の実装可能性をテストするために設計された 実験的実装を提供するよう求めている。

実装者は、課題トラッカーに一覧されている 未解決の クラス1、2、または 3の課題が、仕様の変更につながる可能性があることに注意されたい。

W3C勧告候補段階を終了するために、W3CDIDワーキンググループは 次の事項を要求する:

  1. 機械的にテスト可能な規範的記述については、機能ごとに少なくとも2つの適合 実装があること。すなわち、適合生成者が ある機能を実装する場合、少なくとも2つの適合消費者が その機能を消費でき、消費されるすべての機能について、少なくとも2つの適合生成者がその機能を生成していること。
  2. 機械的にテストできない規範的記述については、機能ごとに少なくとも2つの 実装の実証があること。
  3. 分散型識別子解決(DID Resolution)v0.3仕様が、 W3C勧告候補段階の終了基準を満たしていること。

機能とは、仕様における1つ以上の機能的に関連する規範的記述として定義される。 この仕様では、相互運用性は、データモデルのプロパティおよびその値に言及するものなどの 規範的記述が、異なる2つのDIDメソッド間で同じ方法で解釈されることとして定義される。

特定のDIDメソッドの解決はこの仕様の範囲外であり、 分散型識別子解決(DID Resolution) v0.3仕様で扱われる。

この文書は、分散型識別子 ワーキンググループにより、 勧告トラックを用いた 勧告候補スナップショットとして公開された。

勧告候補としての公開は、 W3Cおよびその会員による承認を意味しない。 勧告候補スナップショットは 広範なレビューを受けており、 実装経験を収集することを意図しており、 ワーキンググループのメンバーから、実装に対する ロイヤリティフリー・ライセンス の確約を得ている。

この勧告候補は、2026年4月5日より前に 勧告へ進むことは予定されていない。

この文書は、 W3C 特許 ポリシーの下で運営されるグループによって作成された。 W3Cは、 グループの成果物に関連して行われた 特許開示の公開一覧 を維持しており、そのページには 特許を開示するための手順も含まれている。個人が、 その個人が必須クレーム を含むと信じる特許について実際の知識を有する場合、その個人は W3C特許ポリシー第6節に従って その情報を開示しなければならない。

この文書は、 2025年8月18日版W3Cプロセス文書に準拠する。

1. はじめに

この節は非規範的である。

個人としても組織としても、私たちの多くは、非常に幅広い文脈でグローバルに一意な識別子を 使用している。それらは、通信アドレス(電話番号、メールアドレス、ソーシャルメディア上の ユーザー名)、ID番号(パスポート、運転免許証、納税者番号、健康保険)、および製品識別子 (シリアル番号、バーコード、RFID)として機能する。URI(Uniform Resource Identifiers)は Web上の資源に使用され、ブラウザで閲覧する各Webページには、グローバルに一意な URL(Uniform Resource Locator)がある。

これらのグローバルに一意な識別子の大多数は、私たちの制御下にはない。それらは、それが 誰または何を参照するのか、いつ失効させられるのかを決定する外部機関によって発行される。 それらは特定の文脈でのみ有用であり、私たちが選んだわけではない特定の団体によってのみ 認識される。組織の破綻によって、それらは消滅したり有効でなくなったりする可能性がある。 それらは個人情報を不必要に明らかにする可能性がある。多くの場合、それらは悪意のある 第三者によって不正に複製され主張される可能性があり、これは一般に「アイデンティティ窃盗」 として知られている。

この仕様で定義される分散型識別子(DID)は、新しい種類のグローバルに一意な識別子である。 それらは、個人および組織が、自分たちが信頼するシステムを使用して独自の識別子を生成できる ように設計されている。これらの新しい識別子は、デジタル署名などの暗号学的証明を用いて 認証することにより、エンティティがそれらに対する制御を証明できるようにする。

分散型識別子の生成および主張はエンティティによって制御されるため、各エンティティは、 アイデンティティ、ペルソナ、およびやり取りの望ましい分離を維持するために必要な数だけ DIDを持つことができる。これらの識別子の使用は、異なる文脈に応じて適切にスコープ化できる。 それらは、エンティティが自分自身、または自分が制御する物を識別する必要がある他の人々、 機関、またはシステムとのやり取りをサポートし、識別子の継続的な存在を保証する中央機関に 依存することなく、どれだけの個人データまたは私的データを明らかにすべきかを制御できるようにする。 これらの考え方は、DIDユースケース文書 [DID-USE-CASES] で検討されている。

この仕様は、DIDの生成、永続性、解決、または解釈を支える特定の技術または暗号方式を 前提としない。たとえば、実装者は、連合型または中央集権型のアイデンティティ管理システムに 登録された識別子に基づいて分散型識別子を作成できる。実際、ほぼすべての種類の識別子システムは DIDのサポートを追加できる。これにより、中央集権型、連合型、および分散型の識別子の世界の間に 相互運用性の橋渡しが作られる。また、実装者は、分散台帳、分散型ファイルシステム、 分散データベース、ピアツーピア・ネットワークなど、自分たちが信頼する計算インフラストラクチャで 動作する特定の種類のDIDを設計できるようになる。

この仕様は、次の人々のためのものである:

この仕様に加えて、読者は 分散型識別子のユースケースと要件 [DID-USE-CASES] 文書も有用だと考えるかもしれない。

1.1 単純な例

この節は非規範的である。

DIDは、3つの部分からなる単純なテキスト文字列である: 1) did URIスキーム識別子、2) DIDメソッドの識別子、 3) DIDメソッド固有の識別子。


DIDの各部分を示す図。最も左の文字は青色で「did」と綴られており、
上から水平の括弧で囲まれ、その括弧の上に「scheme」と書かれたラベルがある。
「did」の文字の後には灰色のコロンが続く。中央の文字はマゼンタ色で
「example」と綴られており、下から水平の括弧で囲まれ、その括弧の下に
「DID Method」と書かれたラベルがある。DID Methodの後には灰色のコロンが続く。
最後の末尾の文字は緑色で「123456789abcdefghi」と書かれており、下から水平の括弧で囲まれ、
その括弧の下に「DID Method Specific String」と書かれたラベルがある。
1 分散型識別子(DID)の単純な例

上の例のDIDは、DID文書へ解決される。DID文書には、 DIDに関連する情報、たとえば DIDコントローラを暗号学的に認証する方法などが含まれる。

1: 単純なDID文書
{
  "@context": "https://www.w3.org/ns/did/v1.1",
  "id": "did:example:123456789abcdefghi",
  "authentication": [{
    // did:...fghi として認証するために使用される
    "id": "did:example:123456789abcdefghi#keys-1",
    "type": "Multikey",
    "controller": "did:example:123456789abcdefghi",
    "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
  }]
}

1.2 設計目標

この節は非規範的である。

分散型識別子は、 Verifiable Credentialsエコシステム [VC-DATA-MODEL] などの より大きなシステムの構成要素であり、これはこの仕様の設計目標に影響を与えた。 分散型識別子の設計目標をここに要約する。

目標 説明
分散化 グローバルに一意な識別子、公開検証鍵、サービス、 およびその他の情報の登録を含む、識別子管理における中央集権的な機関または単一障害点の 要件を排除する。
制御 人間および非人間の双方のエンティティに、外部機関に依存する必要なく、 自らのデジタル識別子を直接制御する能力を与える。
プライバシー 属性またはその他のデータの最小限の開示、選択的開示、段階的開示を含め、 エンティティが自分の情報のプライバシーを制御できるようにする。
セキュリティ 要求者が、必要な保証レベルに応じてDID文書に依拠できるだけの十分なセキュリティを 可能にする。
証明ベース DIDコントローラが、他のエンティティと やり取りする際に暗号学的証明を提供できるようにする。
発見可能性 エンティティが、他のエンティティについてさらに知ったり、またはそれらと やり取りしたりするために、他のエンティティのDIDを発見できるようにする。
相互運用性 DIDインフラストラクチャが、 相互運用性のために設計された既存のツールおよびソフトウェアライブラリを利用できるように、 相互運用可能な標準を使用する。
移植性 システムおよびネットワークから独立しており、エンティティがDIDおよびDIDメソッドをサポートする任意のシステムで 自分のデジタル識別子を使用できるようにする。
単純性 技術を理解、実装、展開しやすくするため、簡潔な機能の縮小された集合を優先する。
拡張性 可能な場合には、相互運用性、移植性、または単純性を大きく妨げない限り、 拡張性を可能にする。

1.3 アーキテクチャ概要

この節は非規範的である。

この節は、分散型識別子アーキテクチャの主要な構成要素の基本的な概要を示す。


DIDとDID文書は検証可能データレジストリに記録される。DIDはDID文書へ解決される。
DIDはDID主体を参照する。DIDコントローラはDID文書を制御する。
DID URLはDIDを含む。DID URLはDID文書の断片または外部資源へ参照解除される。
2 DIDアーキテクチャと基本構成要素の関係の概要。 関連項目: 説明的な記述

図には、内部ラベル付きの6つの形状が現れ、それらの間にラベル付きの矢印がある。 それらは次のとおりである。図の中央にはDID URLとラベル付けされた長方形があり、 その中に小さな等幅テキストで「did:example:123/path/to/rsrc」と書かれている。 図の中央上部には「DID」とラベル付けされた長方形があり、小さな等幅テキストで 「did:example:123」と書かれている。図の左上には「DID Subject」とラベル付けされた 楕円がある。下部中央には「DID document」とラベル付けされた長方形がある。 左下には「DID Controller」とラベル付けされた楕円がある。図の中央右には、 「Verifiable Data Registry」とラベル付けされた円柱の二次元表現がある。

「DID URL」長方形の上部から「contains」とラベル付けされた矢印が上方に伸び、 「DID」長方形を指している。「DID URL」長方形の下部からは、「refers, and dereferences, to」とラベル付けされた矢印が下方に伸び、 「DID document」長方形を指している。「DID」長方形からは 「resolves to」とラベル付けされた矢印が下方に向かい、 「DID document」長方形を指している。「DID」長方形からは「refers to」とラベル付けされた 矢印が左に向かい、「DID subject」楕円を指している。「DID controller」楕円からは 「controls」とラベル付けされた矢印が右に向かい、「DID document」長方形を指している。 「DID」長方形からは「recorded on」とラベル付けされた矢印が右下方向に向かい、 「Verifiable Data Registry」円柱を指している。「DID document」長方形からは、 「recorded on」とラベル付けされた矢印が右上方向に向かい、「Verifiable Data Registry」円柱を指している。

DIDとDID URL
分散型識別子、すなわちDIDは、3つの部分で構成される URIである: スキームdid:、メソッド識別子、およびDIDメソッドにより 指定される一意でメソッド固有の識別子。DIDは、 DID文書へ解決可能である。 DID URLは、 特定の資源、たとえばDID文書内の暗号学的公開鍵、または DID文書の外部にある資源を 位置付けるために、path、query、fragmentなどの他の標準的な URI構成要素を組み込むよう、基本的な DIDの構文を拡張する。 これらの概念は、3.1 DID構文および 3.2 DID URL構文で詳述される。
DID主体
DIDの主体とは、定義上、 そのDIDによって識別されるエンティティである。 DID主体は、 DIDコントローラでもあり得る。 何であってもDIDの主体になり得る: 人、グループ、組織、物、または概念である。これは5.1.1 DID 主体でさらに定義される。
DIDコントローラ
コントローラとは、 DIDについて、 DIDメソッドにより 定義されるとおり、DID文書に変更を加える能力を持つエンティティ (人、組織、または自律的ソフトウェア)である。この能力は、通常、コントローラの代理として 動作するソフトウェアによって使用される暗号鍵の集合の制御によって主張されるが、 他の機構によって主張されることもある。DIDは複数のコントローラを持つ場合があり、 DID主体DID コントローラ、またはその1つであり得ることに注意。この概念は5.1.2 DID コントローラで文書化されている。
検証可能データレジストリ
DID文書へ解決可能であるために、 DIDは通常、何らかの基盤となるシステムまたは ネットワークに記録される。使用される具体的な技術にかかわらず、DIDの記録、およびDID 文書を生成するために必要なデータの返却をサポートするそのようなシステムは、 検証可能データレジストリと呼ばれる。 例には、分散台帳、 分散型ファイルシステム、あらゆる種類のデータベース、ピアツーピア・ネットワーク、および その他の形式の信頼できるデータストレージが含まれる。この概念は 7. メソッドでさらに詳述される。
DID文書
DID文書には、DIDに関連する情報が含まれる。 それらは通常、暗号学的公開鍵などの検証メソッド、および DID主体とのやり取りに関連する サービスを表現する。 DID文書でサポートされる汎用プロパティは、 5. 中核プロパティで規定される。DID文書は バイトストリームへシリアライズできる(6. 表現を参照)。DID文書に存在するプロパティは、 7. メソッドで概説される適用可能な操作に従って更新できる。
DIDメソッド
DIDメソッドは、特定の種類の DIDおよびそれに関連する DID文書が作成、解決、更新、および無効化される機構である。 DIDメソッドは、7. メソッドで定義されるとおり、別個の DIDメソッド仕様を使用して定義される。
DIDリゾルバとDID解決
DIDリゾルバは、DIDを入力として受け取り、適合する DID文書を出力として生成する システム構成要素である。このプロセスは DID解決と呼ばれる。特定の種類の DIDを解決する手順は、 関連するDIDメソッド仕様によって定義される。 DID解決のプロセスは、[DID-RESOLUTION] で詳述される。
DID URL参照解除器とDID URL参照解除
DID URL参照解除器は、 DID URLを入力として受け取り、資源を出力として生成する システム構成要素である。このプロセスはDID URL参照解除と呼ばれる。 DID URL参照解除のプロセスは、 [DID-RESOLUTION] で詳述される。

1.4 適合性

非規範的と示された節に加えて、この仕様内のすべての作成指針、図、例、および注記は 非規範的である。この仕様内のそれ以外のすべては規範的である。

この文書におけるキーワードMAYMUSTMUST NOTRECOMMENDEDSHOULD、およびSHOULD NOTは、 ここに示されるようにすべて大文字で現れる場合に限り、 BCP 14 [RFC2119] [RFC8174] に記述されているように解釈されるものとする。

この文書には、JSONおよびJSON-LDコンテンツを含む例が含まれている。 これらの例の一部には、インラインコメント(//)や、例にほとんど価値を加えない 情報を示すための省略記号(...)の使用など、無効な文字が含まれている。 実装者は、その情報を有効なJSONまたはJSON-LDとして使用したい場合には、この内容を 削除するよう注意されたい。

一部の例には、この仕様で定義されていない用語、すなわちプロパティ名および値の両方が 含まれている。これらはコメント(// external (property name|value))で示される。そのような用語は、DID文書で 使用される場合、正式な定義とJSON-LDコンテキストの両方へのリンクとともに、DID拡張の リポジトリ [DID-EXTENSIONS] に登録されることが 期待される。

DIDおよびDID文書の 実装の相互運用性は、この仕様に適合するDIDおよびDID文書を作成および解析する実装の能力を評価することによって テストされる。DIDおよびDID文書の生成者と消費者の相互運用性は、 DIDおよびDID文書が適合することを保証することで提供される。 DIDメソッド仕様の相互運用性は、各DIDメソッド仕様内の詳細によって提供される。Webブラウザが 既知のすべてのURIスキームを実装する必要がないのと同じように、 DIDを扱う適合ソフトウェアも、 既知のすべてのDIDメソッドを実装する必要はないと理解される。ただし、 あるDIDメソッドのすべての実装は、そのメソッドについて 相互運用可能であることが期待される。

適合DIDとは、3. 識別子で規定される規則の任意の具体的表現であり、その節の関連する規範的記述に 準拠するものである。

適合 DID文書とは、この仕様で説明されるデータモデルの任意の具体的表現であり、 4. データモデルおよび5. 中核 プロパティの関連する規範的記述に準拠するものである。適合文書のシリアライズ形式は、 6. 表現で説明されるように、決定的で、双方向で、損失がない。

適合生成者とは、ソフトウェアおよび/または ハードウェアとして実現され、適合DIDまたは適合DID文書を生成し、 6. 表現の関連する規範的記述に準拠する 任意のアルゴリズムである。

適合消費者とは、ソフトウェアおよび/または ハードウェアとして実現され、適合DIDまたは適合DID文書を消費し、 6. 表現の関連する規範的記述に準拠する任意のアルゴリズムである。

適合DIDメソッドとは、 7. メソッドの関連する規範的記述に 準拠する任意の仕様である。

1.5 想定読者

この節は非規範的である。

この仕様には2つの主要な想定読者がいる。適合DIDメソッドの実装者、およびDIDとやり取りし インターフェイスしたいシステムおよびサービスの実装者である。想定読者には、ソフトウェア アーキテクト、データモデラー、アプリケーション開発者、サービス開発者、テスター、 運用者、およびユーザー体験(UX)専門家が含まれるが、これらに限定されない。分散型 アイデンティティ、Verifiable Credentials、およびセキュアストレージに関連する幅広い 標準化活動に関わる他の人々も、この仕様を読むことに関心を持つかもしれない。

2. 用語

この節は非規範的である。

この節は、この仕様および 分散型識別子インフラストラクチャ全体で使用される用語を定義する。 これらの用語へのリンクは、 この仕様内でそれらが現れるたびに含まれる。

増幅攻撃
攻撃者が、小さく有効な入力をシステムに与えることにより、 対象システムのCPU、ストレージ、ネットワーク、またはその他の資源を枯渇させようとする攻撃の分類。 その入力は、入力自体よりも指数関数的に処理コストの高い有害な影響を生じさせる。
分散型識別子(DID)
中央集権的な登録機関を必要とせず、多くの場合、暗号学的に生成および/または登録される、 グローバルに一意で永続的な識別子。DIDの汎用形式は3.1 DID構文で定義される。特定のDIDスキームは、 DID メソッド仕様で定義される。多くのDIDメソッドは、すべてではないが、 分散台帳技術(DLT)またはその他の形態の分散型 ネットワークを利用する。
DID コントローラ
DID文書に変更を加える能力を持つエンティティ。 DIDは複数のDIDコントローラを持つことがある。 DIDコントローラは、 DID文書の最上位にある任意のcontrollerプロパティで示すことができる。 DIDコントローラはDID 主体であり得ることに注意。
DID委任先
DIDコントローラが、 検証 メソッドを使用する許可を与えたエンティティ。この検証メソッドは、DIDに関連付けられ、DID文書を介する。 たとえば、子どものDID文書を制御する親が、子どもに 認証のために個人用デバイスを使用することを許可する場合がある。 この場合、その子どもがDID委任先である。子どもの個人用デバイスには、 その子どもが 認証するために必要な秘密の暗号材料が含まれ、 DIDを使用できるようにする。ただし、その子どもは 親の許可なく他の個人用デバイスを追加することは許可されない場合がある。
DID文書
DID主体との暗号学的に検証可能なやり取りを可能にするデータの集合。 これには、暗号学的公開鍵など、DID主体またはDID委任先が 自らを認証し、 DIDとの関連を証明するために使用できる機構が含まれる。 DID文書は、表現を1つ以上持つことがあり、 それらは6. 表現または W3C 分散型識別子拡張で定義される。
DIDフラグメント
DID URLのうち、最初の #文字 (U+0023 NUMBER SIGNに続く部分。DIDフラグメント構文は URIフラグメント構文と同一である。
DIDメソッド
特定のDIDメソッドスキームがどのように実装されるかの定義。 DIDメソッドはDIDメソッド仕様によって定義され、その仕様は、 DIDおよびDID文書が 作成、解決、更新、 および無効化される正確な操作を規定する。7. メソッドを参照。
DIDパス
DID URLのうち、最初の /文字 (U+002F SOLIDUSで始まり、それを含み、 ?文字 (U+003F QUESTION MARK#文字 (U+0023 NUMBER SIGN、 またはDID URLの終端のいずれかの前で終わるが、それらを含まない部分。 DIDパス構文はURIパス構文と同一である。 パスを参照。
DIDクエリ
DID URLのうち、最初の ?文字 (U+003F QUESTION MARKに続き、それを含む部分。 DIDクエリ構文はURIクエリ 構文と同一である。クエリを参照。
DID解決
DIDと解決オプションの集合を入力として受け取り、 適合する表現DID文書に加えて、追加メタデータを返すプロセス。 このプロセスは、適用されるDIDメソッドの「Read」操作に依存する。 このプロセスの入力と出力は、[DID-RESOLUTION]で定義される。
DIDリゾルバ
DIDリゾルバは、 DIDを入力として受け取り、適合する DID文書を出力として生成することにより、 DID解決機能を実行するソフトウェアおよび/またはハードウェア構成要素である。
DIDスキーム
分散型識別子の正式な構文。 汎用DIDスキームは、3.1 DID構文で定義されるように、接頭辞did:で始まる。 各DIDメソッド 仕様は、その特定のDIDメソッドで機能する 特定のDIDメソッドスキームを定義する。特定のDID メソッドスキームでは、DIDメソッド名は最初のコロンに続き、2番目のコロンで終了する。 例: did:example:
DID主体
DIDによって識別され、 DID文書によって記述されるエンティティ。 DID主体には何でもなり得る。人、グループ、組織、物理的な物、 デジタルの物、論理的な物などである。
DID URL
DIDに加えて、 3.2 DID URL構文の定義に適合する 任意の追加の構文要素。これには、先頭の /文字 (U+002F SOLIDUSを伴う任意のDID パス、 先頭の ?文字 (U+003F QUESTION MARKを伴う任意のDIDクエリ、 および先頭の #文字 (U+0023 NUMBER SIGNを伴う任意のDIDフラグメントが含まれる。
DID URL参照解除
DID URLと入力メタデータの集合を入力として受け取り、 資源を返すプロセス。この資源は、追加メタデータを伴う DID 文書DID文書内に含まれる二次資源、または DID文書の完全に外部にある資源であり得る。このプロセスは、 DID URL内に含まれる DIDによって示される DID文書を取得するために DID解決を使用する。その後、参照解除プロセスは DID文書に追加処理を行い、 DID URLによって示される参照解除された資源を返すことができる。 このプロセスの入力と出力は、 [DID-RESOLUTION]で定義される。
DID URL 参照解除器
指定されたDID URLまたはDID文書について、 DID URL参照解除機能を実行するソフトウェアおよび/またはハードウェアシステム。
分散台帳(DLT)
イベントを記録するための非中央集権型システム。これらのシステムは、 参加者が他者によって記録されたデータに依拠して運用上の判断を行うために十分な信頼を確立する。 通常は、異なるノードがコンセンサスプロトコルを使用して、暗号学的に署名された トランザクションの順序を確認する分散データベースを使用する。 デジタル署名されたトランザクションが時間とともに連結されることで、 台帳の履歴は事実上不変になることが多い。
資源
[RFC3986]で定義されるように、 URIによって識別されるもの。同様に、任意の資源は、 DIDによって識別される DID主体として機能し得る。
表現
[RFC9110]で定義される、 資源の具体的表現: 「指定された資源の過去、現在、または望まれる状態を反映することを意図した情報であり、 プロトコルを介して容易に伝達できる形式のもの。表現は、表現メタデータの集合と、 潜在的に無制限の表現データのストリームからなる。」DID文書は、 DID主体との暗号学的に検証可能なやり取りを可能にする情報の表現である。 6. 表現を参照。
表現固有エントリ
DID文書内のエントリで、その意味が特定の 表現に固有のもの。 4. データモデルおよび 6. 表現で定義される。
サービス
1つ以上のサービスエンドポイントを介して、 DID主体または 関連エンティティと通信またはやり取りするための手段。 例には、発見サービス、エージェントサービス、ソーシャルネットワーキング サービス、ファイルストレージサービス、および検証可能クレデンシャル・リポジトリサービスが含まれる。
DIDサービス エンドポイント
HTTP URLなど、サービスDID主体の代理として動作するネットワークアドレス。
統一資源識別子(URI)
[RFC3986]で定義される、 World Wide Web上のすべての資源の標準識別子形式。DIDはURIスキームの一種である。
検証可能データレジストリ
分散型識別子および DID文書の作成、検証、更新、および/または 無効化を容易にするシステム。検証可能データレジストリは、 検証可能 クレデンシャルなど、その他の暗号学的に検証可能なデータ構造にも使用されることがある。 詳細については、W3C Verifiable Credentials仕様 [VC-DATA-MODEL]を参照。
検証可能タイムスタンプ
検証可能タイムスタンプにより、第三者は、データオブジェクトが特定の時点に存在していたこと、 およびその時点以降に変更または破損されていないことを検証できる。 その時点以降に データ完全性が合理的に変更または破損され得た場合、そのタイムスタンプは検証可能ではない。

上記の用語に加えて、この仕様では、 データモデルを形式的に定義するために、[INFRA]仕様の用語も使用する。[INFRA]の用語が使用される場合、たとえば 文字列集合、およびマップなどは、その仕様へ直接リンクされる。

3. 識別子

この節は、DIDおよびDID URLの正式な構文を説明する。 「汎用」という用語は、ここで定義される構文を、それぞれの仕様で特定の DIDメソッドによって定義される構文と区別するために使用される。 DIDおよび DID URLの作成プロセスとそのタイミングは、7.2 メソッド 操作および B.2 DIDの作成で説明される。

3.1 DID構文

汎用DIDスキームは、[RFC3986]に適合する URIスキームである。ABNF 定義を以下に示す。これは [RFC5234]の構文と、対応する ALPHAおよび DIGITの定義を使用する。以下のABNFで定義されていないその他すべての規則名は、 [RFC3986]で定義される。 すべてのDIDは、DID構文ABNF規則に MUST適合しなければならない。

DID構文ABNF規則
did                = "did:" method-name ":" method-specific-id
method-name        = 1*method-char
method-char        = %x61-7A / DIGIT
method-specific-id = *( *idchar ":" ) 1*idchar
idchar             = ALPHA / DIGIT / "." / "-" / "_" / pct-encoded
pct-encoded        = "%" HEXDIG HEXDIG

DID構文に関係する DIDメソッドの要件については、 7.1 メソッド構文節を参照。

3.2 DID URL構文

DID URLは、特定の 資源のネットワーク位置識別子である。これは、 DID主体の表現、検証メソッドサービスDID文書の特定の部分、またはその他の資源などを取得するために使用できる。

以下は、[RFC5234]の構文を使用したABNF定義である。 これは、3.1 DID構文で定義されるdidスキームの上に構築される。 path-abemptyquery、およびfragment構成要素は、 [RFC3986]で定義される。 すべてのDID URLは、DID URL構文ABNF規則に MUST適合しなければならない。DIDメソッドは、7.1 メソッド構文で説明されるように、これらの規則をさらに制限できる。

DID URL構文ABNF規則
did-url = did path-abempty [ "?" query ] [ "#" fragment ]
注記: セミコロン文字は将来の使用のために予約されている

セミコロン(;)文字は DID URL構文の規則に従って使用できるが、この仕様の将来の版では、 [MATRIX-URIS]で説明されるように、 パラメータのサブ区切り文字として使用される可能性がある。将来の衝突を避けるため、 開発者はこれを使用しないことが望ましい。

パス

DIDパスは、汎用URIパスと同一であり、 RFC 3986、第3.3節path-abempty ABNF規則に適合する。 URIと同様に、パスの意味論は DIDメソッドによって指定でき、さらにそれによって DIDコントローラがそれらの意味論をさらに特殊化できる場合がある。

did:example:123456/path

クエリ

DIDクエリは、汎用URIクエリと同一であり、 RFC 3986、第3.4節query ABNF規則に適合する。

did:example:123456?versionId=1
注記: 複数のクエリパラメータを含む DID URLの比較を避けること

実装者は、その目的のために特別に設計された仕様がない場合、 複数のクエリパラメータを持つDID URLの同等性を 比較することを避けるよう強く求められる。この仕様はクエリパラメータの正規化規則を定義せず、 DIDメソッド仕様またはアプリケーション層で定義される任意のクエリパラメータ正規化規則も、 普遍的に認識される規則ではない。

フラグメント

DIDフラグメントの構文および意味論は、汎用URI フラグメントと同一であり、RFC 3986、第3.5節fragment ABNF規則に適合する。

DIDフラグメントは、 DID文書または外部資源へのメソッド非依存の参照として使用される。 DIDフラグメント識別子の例を以下に示す。

4: DID文書内の一意な検証メソッド
did:example:123#public-key-1
5: DID文書内の一意なサービス
did:example:123#service-5
注記: 表現をまたぐフラグメントの意味論

相互運用性を最大化するため、実装者は DIDフラグメント表現をまたいで同じ方法で解釈されるようにすることが強く求められる (6. 表現を参照)。たとえば、 JSON Pointer [RFC6901]は DIDフラグメントで使用できるが、 非JSONの表現をまたいで同じ方法で解釈されるわけではない。

この節の意味論と互換性があり、その上に重ねられるフラグメント識別子の追加の意味論は、 メディアタイプ記述で規定される(E.1 application/did節を参照)。 DIDフラグメントを参照解除する方法については、 分散型識別子解決(DID Resolution)v0.3仕様を参照。

3.2.1 相対DID URL

相対DID URLとは、DID文書内のURL値であり、 did:<method-name>:<method-specific-id>で始まらないものをいう。 より具体的には、 3.1 DID構文で定義されるABNFで始まらない任意のURL値である。このURLは、 同じDID 文書内の資源を参照することが期待される。相対DID URLは、相対パス構成要素、クエリパラメータ、 およびフラグメント識別子を含んでもMAYよい。

相対DID URL参照を解決する場合、 RFC3986 Section 5: Reference Resolution で規定されるアルゴリズムを使用MUSTしなければならない。 base URI値は、DID主体に関連付けられたDIDである。 5.1.1 DID 主体を参照。schemedidである。 authority<method-name>:<method-specific-id>の組み合わせであり、 pathquery、およびfragment の値は、それぞれパスクエリ、およびフラグメントで定義される値である。

相対DID URLは、絶対 URLを使用する必要なしに、検証メソッド およびサービスDID文書内で 参照するためによく使用される。ストレージサイズが考慮事項となる DIDメソッドは、 DID 文書のストレージサイズを削減するために相対URLを使用する場合がある。

6: 相対DID URLの例
{
  "@context": "https://www.w3.org/ns/did/v1.1",
  "id": "did:example:123456789abcdefghi",
  "verificationMethod": [{
    "id": "did:example:123456789abcdefghi#key-1",
    "type": "Multikey", // external (property value)
    "controller": "did:example:123456789abcdefghi",
    "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
  }, ...],
  "authentication": [
    // 上記の検証メソッドを参照するために使用される相対DID URL
    "#key-1"
  ]
}

上記の例では、相対DID URL値は、 絶対DID URLdid:example:123456789abcdefghi#key-1へ変換される。

4. データモデル

この仕様は、DID文書と その内部データ構造を表現するために使用できるデータモデルを定義し、それを具体的な表現へ シリアライズできる。この節では、データモデルの高水準の説明、 データモデルにおいて異なる種類のプロパティが表現される方法の説明、 およびデータモデルを拡張するための指示を示す。

DID文書は、マップで構成されるエントリであり、各エントリは キー/値のペアで構成される。DID文書データモデルは、 5. 中核プロパティ節で規定されるプロパティを含む。

DID文書データモデル内のすべてのエントリキーは文字列である。すべてのエントリ値は、 下表のデータ型のいずれかを使用して表現され、各表現は、 各データ型の具体的なシリアライズ形式を規定する。

データ型 考慮事項
マップ Infra標準で規定される、 キーが2回現れない有限の順序付きキー/値ペア列。マップは、 Infra 標準では 順序付きマップと呼ばれることもある。
リスト Infra標準で規定される、 アイテムの有限の順序付き列。
集合 Infra標準で規定される、 同じアイテムを2回含まないアイテムの有限の順序付き列。集合は、 Infra 標準では 順序付き集合と呼ばれることもある。
日時 [XMLSCHEMA11-2] で規定されるdateTimeで表現可能な すべての値を損失なく表現できる日付および時刻の値。
文字列 Infra標準で規定される、 人間が読める言語を表すためによく使用されるコード単位の列。
整数 [XMLSCHEMA11-2] で規定される小数部を持たない実数。 相互運用性を最大化するため、 実装者は RFC8259、第6節: Numbersにおける 整数に関する助言に注意することが強く求められる。
倍精度数 [XMLSCHEMA11-2] で規定される、任意の実数を近似するためによく使用される 小数部を持つ実数。 相互運用性を最大化するため、実装者は RFC8259、第6節: Numbersにおける 倍精度数に関する助言に注意することが強く求められる。
真偽値 Infra標準で定義される、 trueまたはfalseのいずれかの値。
null Infra 標準で定義される、値の欠如を示すために使用される値。

データモデルInfra 標準の用語を使用して定義されている結果として、 リストマップ、および集合など、 複数のアイテムを含むことができるプロパティ値は明示的に順序付けられている。 Infra 標準内のすべてのリスト状の値構造は、 その順序が重要であるかどうかにかかわらず順序付けられている。 この仕様の目的上、特に明記されない限り、 マップまたは集合の順序は重要ではなく、 実装が決定的に順序付けられた値を生成または消費することは期待されない。

4.1 拡張性

データモデルは2種類の拡張性をサポートする。

  1. 最大限の相互運用性のため、拡張は 分散型識別子拡張の リポジトリを使用することがRECOMMENDEDされる。 新しいプロパティまたはその他の拡張にこの機構を使用することは、 2つの異なる表現が連携できることを保証する、 唯一の規定された機構である。
  2. 表現は、 分散型識別子拡張 リポジトリの使用を必要としないものを含め、その他の拡張機構を定義してもMAYよい。 そのような拡張機構は、他の任意の適合表現への損失のない変換をサポートするSHOULDである。 表現の拡張機構は、 すべてのプロパティおよび表現構文の、 DID文書データモデルおよびその 型システムへのマッピングを定義するSHOULDである。
注記: 未登録の拡張は信頼性が低い

2つの特定の実装が、帯域外で合意し、 分散型識別子拡張の リポジトリに記録されていない、相互に理解された拡張または表現を使用することは常に可能である。 そのような実装とより大きなエコシステムとの間の相互運用性は、信頼性が低くなる。

5. 中核プロパティ

DIDは、 DID文書に関連付けられる。これは、 Controlled Identifiers v1.0で定義される 制御識別子 文書の拡張である。 DID文書は、 データモデルを使用して表現され、 表現へシリアライズできる。 以下の節では、DID文書内の プロパティを定義する。これには、それらのプロパティが必須であるか任意であるかも含まれる。 これらのプロパティは、DID主体とプロパティの値との間の 関係を記述する。

以下の表は、この仕様で定義される中核プロパティについて、 期待される値、およびそれらが必須かどうかを含む参考情報の参照を含む。 表内のプロパティ名は、各プロパティの規範的定義およびより詳細な説明へリンクされている。

注記: 異なる型のマップで使用されるプロパティ名

プロパティ名idtype、および controllerは、制約に違いがあり得る異なる型のマップに存在できる。 たとえば、DID文書の最上位にあるidはDIDであることが要求される一方で、 serviceマップ内の idはURLであり得る。

プロパティ 必須? 値の制約 定義
id はい 文字列であり、 3.1 DID構文節で定義される規則に適合するもの。 5.1.1 DID主体節。
controller いいえ 文字列、または 集合文字列であり、それぞれが 3.1 DID構文節で定義される規則に適合するもの。 5.1.2 DIDコントローラ節。
alsoKnownAs いいえ 集合文字列であり、それぞれがURL構文または 3.1 DID構文節に適合するもの。 Controlled Identifiers v1.0仕様の 第2.1.3節: Also Known As
service いいえ 集合サービス マップ Controlled Identifiers v1.0仕様の 第2.1.4節: Services
verificationMethod いいえ 集合検証メソッドマップ 5.2 検証メソッド節。
authentication いいえ データの集合であり、各要素は 文字列3.1 DID構文節で定義される規則に適合するもの、または マップ検証メソッドについて 5.2 検証メソッド節で定義される規則に適合するもののいずれかである。 Controlled Identifiers v1.0仕様の 第2.3.1節: Authenticationおよび 5.2 検証メソッド節。
assertionMethod いいえ データの集合であり、各要素は 文字列3.1 DID構文節で定義される規則に適合するもの、または マップ検証メソッドについて 5.2 検証メソッド節で定義される規則に適合するもののいずれかである。 Controlled Identifiers v1.0仕様の 第2.3.2節: Assertionおよび 5.2 検証メソッド節。
keyAgreement いいえ データの集合であり、各要素は 文字列3.1 DID構文節で定義される規則に適合するもの、または マップ検証メソッドについて 5.2 検証メソッド節で定義される規則に適合するもののいずれかである。 Controlled Identifiers v1.0仕様の 第2.3.3節: Key Agreementおよび 5.2 検証メソッド節。
capabilityInvocation いいえ データの集合であり、各要素は 文字列3.1 DID構文節で定義される規則に適合するもの、または マップ検証メソッドについて 5.2 検証メソッド節で定義される規則に適合するもののいずれかである。 Controlled Identifiers v1.0仕様の 第2.3.4節: Capability Invocationおよび 5.2 検証メソッド節。
capabilityDelegation いいえ データの集合であり、各要素は 文字列3.1 DID構文節で定義される規則に適合するもの、または マップ検証メソッドについて 5.2 検証メソッド節で定義される規則に適合するもののいずれかである。 Controlled Identifiers v1.0仕様の 第2.3.5節: Capability Delegationおよび 5.2 検証メソッド節。

検証メソッドのプロパティ

プロパティ 必須? 値の制約 定義
id はい 文字列であり、 3.2 DID URL構文の規則に適合するもの。 Controlled Identifiers v1.0 仕様の 第2.1.1節: Subjectsおよび 5.1 識別子節。
type はい 文字列 Controlled Identifiers v1.0 仕様の 第2.2節: Verification Methods
controller はい 文字列であり、 3.1 DID構文の規則に適合するもの。 Controlled Identifiers v1.0 仕様の 第2.2節: Verification Methods
publicKeyMultibase いいえ Multibaseエンコードされた公開鍵に適合する文字列 Controlled Identifiers v1.0 仕様の 第2.2.2節: Multikey
publicKeyJwk いいえ JSON Web Keyを表すマップ Controlled Identifiers v1.0 仕様の 第2.2.3節: JsonWebKey

サービスのプロパティ

プロパティ 必須? 値の制約 定義
id はい URL Standard標準、または3.1 DID 構文節のいずれかの規則に適合する文字列 Controlled Identifiers v1.0 仕様の 第2.1.1節: Subjects
type はい 文字列または 集合文字列 Controlled Identifiers v1.0 仕様の 第2.1.4節: Services
serviceEndpoint はい 単一の文字列、単一の マップ、または 1つ以上の 文字列および/または マップで構成される集合。 各文字列 値は、URL Standardに適合する有効なURLでMUSTなければならない。 Controlled Identifiers v1.0 仕様の 第2.1.4節: Services

5.1 識別子

この節は、DID文書DID主体およびDID コントローラの識別子を含める機構を説明する。

5.1.1 DID主体

特定のDID主体DIDは、 DID文書内の idプロパティを使用して表現される。このプロパティは、 Controlled Identifiers v1.0仕様の 第2.1.1節: Subjectsで定義され、この仕様により、 3.1 DID構文節で定義される 分散型識別子を含むように拡張される。

{
  "id": "did:example:123456789abcdefghijk"
}
注記: 中間表現

DIDメソッド仕様は、たとえば 分散型識別子検証可能データレジストリに登録されている場合、 またはDIDリゾルバDID解決を実行している場合などに、 DID文書の中間表現を作成できる。 これらの中間表現にはid値が含まれない場合があり、 または特定のidプロパティに暫定値が含まれる場合がある。 DID文書が完全に解決されると、最終的な id値が決定され、 DID文書全体で暫定値の代わりに配置される。

5.1.2 DIDコントローラ

DIDコントローラとは、 DID文書に変更を加える権限を与えられたエンティティである。 このプロパティは、 Controlled Identifiers v1.0仕様の 第2.1.2節: Controllersで定義され、 この仕様により、3.1 DID構文節で定義されるDIDを含むように拡張される。 DIDコントローラを認可するプロセスは、 DIDメソッドによって定義される。

8: controllerプロパティを持つDID文書
{
  "@context": "https://www.w3.org/ns/did/v1.1",
  "id": "did:example:123456789abcdefghi",
  "controller": "did:example:bcehfew7h32f32h7af3"
}

5.1.3 識別子の制約

DID文書内で DID主体またはDID コントローラを識別するために使用される識別子は、クエリパラメータまたはフラグメント識別子を 使用できない。実装者は、 3.1 DID構文節にある許可文字一覧に 特に注意することが強く求められる。この一覧はこの要件を明確にしており、 構文には?文字も#文字も含まれない。これは、 DID文書内で 検証 メソッドまたはサービスを識別するために使用される識別子とは対照的である。 それらは3.2 DID URL構文節の構文規則に従い、 クエリパラメータおよびフラグメント識別子の使用を許可する。それでも、 DIDエコシステム向けに作られる 長期的な正準識別子でクエリパラメータを使用することは推奨されない。 これは、DID解決ソフトウェアの複雑性を増し、 より大きなセキュリティ攻撃面につながる可能性があるためである。 フラグメント識別子も、特定のDID文書内で一意であることが期待され、 実装者は、同じDID文書内の2つの異なる 検証メソッドなど、 時間の経過とともに異なる資源を参照するためにそれらを再利用しないことが推奨される。

5.2 検証メソッド

DID文書は、 Controlled Identifiers v1.0第2.2節: Verification Methodsで 定義される検証メソッドを表現できる。 ただし、追加の制約として、(a) id値は 3.2 DID URL構文節または3.2.1 相対 DID URL節にMUST適合しなければならず、(b) controller値は3.1 DID構文節に MUST適合しなければならない。 検証メソッドの説明については、 Controlled Identifiers v1.0仕様の 第2.2節: Verification Methodsを参照。

5.3 検証関係

DID文書は、 Controlled Identifiers v1.0仕様の 第2.3節: Verification Relationshipsで定義される 検証関係を表現できる。 検証 メソッドの説明については、 Controlled Identifiers v1.0仕様の 第2.3節: Verification Relationshipsを参照。

5.4 サービス

DID文書は、 Controlled Identifiers v1.0 仕様の第2.1.4節: Servicesで定義される サービスを表現できる。 サービスで使用される識別子は、 3.1 DID構文節、または 3.2 DID URL構文節に従って表現できる。 サービスの説明については、 Controlled Identifiers v1.0 仕様の第2.1.4節: Servicesを参照。

6. 表現

この仕様におけるDID文書の具体的なシリアライズは、 表現と呼ばれる。表現は、 生成と呼ばれる プロセスを通じてデータモデルをシリアライズすることで作成される。表現は、 消費と呼ばれる プロセスを通じてデータモデルへ変換される。 生成および消費 プロセスは、ある表現から 別の表現への情報の変換を可能にする。この仕様はJSON用に単一の 表現を定義し、これは JSON-LD処理を行うプロセッサとも互換性がある。 以下の節では、生成および 消費の一般規則、ならびにJSON表現を定義する。

6.1 生成と消費

この仕様で定義される表現に加えて、実装者はその他の 表現を使用できる。ただし、それぞれの 表現が適切に規定されていることを条件とする (DID拡張 [DID-EXTENSIONS] のリポジトリに 記載されていないプロパティの相互運用可能な扱いに関する規則を含む)。詳細については、4.1 拡張性を参照。

すべての表現に対する要件は次のとおりである:

  1. 表現は、4. データモデルで規定されるすべてのデータ型について、 決定的な生成規則および消費規則を定義MUSTしなければならない。
  2. 表現は、IANAに登録されたメディアタイプと一意に 関連付けられていMUSTなければならない。
  3. 表現は、そのメディアタイプについて、 フラグメントで 定義されるフラグメント処理規則に適合するフラグメント処理規則を 定義MUSTしなければならない。
  4. 表現は、データモデルの データ型の字句表現を使用するSHOULDである。たとえば、JSONおよび JSON-LDは、日時を表すためにXML Schema dateTimeの 字句シリアライズを使用する。表現は、消費プロセスによる データモデルへの復元が損失なしである限り、異なる字句 シリアライズを使用してデータモデルのデータ型をシリアライズすることを 選択してもMAYよい。たとえば、一部のCBORベースの 表現は、Unixエポックからの秒数を表す整数を使用して 日時値を表現する。
  5. 表現は、 表現固有エントリを定義しても MAYよい。これらは、生成および消費 プロセス中に使用するために、表現固有エントリ マップに格納される。 これらのエントリは、損失のない変換を確保する助けとして、消費または生成時に使用される。
  6. 相互運用性を最大化するため、表現仕様の著者は、自身の 表現を DID拡張 [DID-EXTENSIONS] のリポジトリに 登録するSHOULDである。

すべての適合生成者に対する要件は次のとおりである:

  1. 適合生成者は、 DID文書データモデルおよび 表現固有エントリ マップを、 生成プロセスへの入力として受け取ら MUSTなければならない。 適合生成者は、 生成プロセスへの入力として追加オプションを 受け取ってもMAYよい。
  2. 適合生成者は、 生成される表現について明示的な処理規則を持たない DID文書データモデル内のすべてのエントリ、および 表現固有エントリマップを、 その表現のデータ型処理規則のみを使用して シリアライズし、生成プロセスの完了後に そのシリアライズを返さMUSTなければならない。
  3. 適合生成者は、 生成プロセスの完了後に、 表現に関連付けられたメディアタイプの 文字列を返さ MUSTなければならない。
  4. 適合生成者は、非適合のDIDまたはDID 文書を生成してはMUST NOTならない。

すべての適合消費者に対する要件は次のとおりである:

  1. 適合消費者は、 表現および メディアタイプ文字列を、 消費プロセスへの入力として受け取ら MUSTなければならない。適合消費者は、 消費プロセスへの入力として 追加オプションを受け取ってもMAYよい。
  2. 適合消費者は、 メディアタイプ入力文字列を使用して、 DID文書表現を判定MUSTしなければならない。
  3. 適合消費者は、既知のすべての 表現にわたって 任意の表現固有 エントリを検出し、そのエントリを 表現固有エントリマップへ配置しなければならない。 このマップは消費プロセスの完了後に返される。 既知のすべての表現固有 エントリの一覧は、 DID拡張 [DID-EXTENSIONS] のリポジトリで利用できる。
  4. 適合消費者は、 消費される表現について明示的な処理規則を持たない すべての非表現固有 エントリを、 その表現のデータ型処理規則のみを使用して、 DID文書データモデルに追加し、 消費プロセスの完了後に DID文書データモデルを返さ MUSTなければならない。
  5. 適合消費者は、非適合の DIDまたはDID 文書を消費するとき、エラーを生成MUSTしなければならない。

データモデルの表現が、JSONおよびJSON-LDを含めて、どのように生成され
消費されるかを示す図。
3 表現の生成と消費。 関連項目: 説明的な記述

図の左上の象限には、灰色の破線の輪郭を持つ長方形があり、その中に 青い輪郭の長方形が上下に2つ含まれている。 上側の大きい長方形は、青色で「Core Properties」とラベル付けされ、 次のINFRA表記を含む:

«[
  "id""example:123",
  "verificationMethod" → « «[
    "id": "did:example:123#keys-1",
    "controller": "did:example:123",
    "type": "Multikey",
    "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
    ]» »,
  "authentication" → «
    "did:example:123#keys-1"
  »
]»
下側の小さい長方形は、青色で「Core Representation-specific Entries (JSON-LD)」とラベル付けされ、次の等幅のINFRA表記を含む:
«[ "@context""https://www.w3.org/ns/did/v1.1" ]»

灰色の輪郭の長方形から、3組の矢印が3つの異なる黒い輪郭の長方形へ伸びている。 それぞれは、図の右上、右下、左下に1つずつ配置されている。各矢印の組は、 灰色の輪郭の長方形から対応する黒い輪郭の長方形へ向かう「produce」とラベル付けされた 青い矢印と、逆方向を指す「consume」とラベル付けされた赤い矢印で構成される。 右上の黒い輪郭の長方形は「application/did+cbor」とラベル付けされ、16進データを含む。 右下の長方形は「application/did」とラベル付けされ、 次のJSONデータを含む:

{
  "id": "did:example:123",
  "verificationMethod": [{
    "id": "did:example:123#keys-1",
    "controller": "did:example:123",
    "type": "Multikey",
    "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
  }],
  "authentication": [
    "did:example:123#keys-1"
  ]
}

左下の長方形は「application/did」とラベル付けされ、 次のJSON-LDデータを含む:

{
  "@context": "https://www.w3.org/ns/did/v1.1",
  "id": "did:example:123",
  "verificationMethod": [{
    "id": "did:example:123#keys-1",
    "controller": "did:example:123",
    "type": "Multikey",
    "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
  }],
  "authentication": [
    "did:example:123#keys-1"
  ]
}
注記: 表現間の変換

実装は、元の表現に対して消費規則を使用して データモデルを得たうえで、生成規則を使用して データモデルを対象表現へシリアライズすること、または同じ対象表現を もたらすその他の機構により、表現間を変換することが期待される。

6.2 JSON

この節は、JSON表現生成規則および消費規則を定義する。

6.2.1 生成

DID文書、DID文書データ構造、および 表現固有エントリマップは、次の 生成規則に従ってJSON 表現へ シリアライズされMUSTなければならない:

データ型 JSON表現型
マップ JSONオブジェクト。 各エントリは、エントリキーをJSON文字列のメンバー名とし、 エントリ値をこの表で定義されるその型に従って、JSONオブジェクトのメンバーとして シリアライズされる。
リスト JSON配列。 リストの各要素は、この表で定義されるその型に従って、順序どおりに配列の値として シリアライズされる。
集合 JSON配列。 集合の各要素は、この表で定義されるその型に従って、順序どおりに配列の値として追加される。
日時 UTC 00:00:00に正規化され、小数秒の精度を持たない XML Datetimeとして シリアライズされたJSON文字列。 例: 2020-12-20T19:17:47Z
文字列 JSON文字列
整数 小数または小数部を持たないJSON数値
倍精度数 小数および小数部を持つJSON数値
真偽値 JSON真偽値
null JSON nullリテラル

JSON 表現を生成する 適合生成者を作成するすべての実装者は、 自身のアルゴリズムが [INFRA] 仕様の JSON シリアライズ規則および JSON [RFC8259] 仕様の数値に関する精度の助言に 合致することを確保するよう助言される。

DID文書のすべてのエントリは、 ルートJSONオブジェクトに 含まれMUSTなければならない。エントリは、上の一覧の値表現規則に従う 追加のデータ部分構造を含んでもMAYよい。 DID文書をシリアライズする場合、 適合生成者は、下流のアプリケーションに対して application/didのメディアタイプを指定しMUSTなければならない。

9: JSON表現のDID文書の例
{
  "@context": "https://www.w3.org/ns/did/v1.1",
  "id": "did:example:123456789abcdefghi",
  "authentication": [{
    "id": "did:example:123456789abcdefghi#keys-1",
    "type": "Multikey",
    "controller": "did:example:123456789abcdefghi",
    "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
  }]
}

6.2.2 消費

DID文書およびDID文書データ構造のJSON 表現は、次の消費規則に従って データ モデルへデシリアライズされMUSTなければならない:

JSON表現型 データ型
JSONオブジェクト マップ。JSONオブジェクトの各メンバーは、 マップへエントリとして追加される。各エントリキーはJSONオブジェクトのメンバー名として設定される。 各エントリ値は、この表で定義されるJSON表現型に従ってJSONオブジェクトの メンバー値を変換することで設定される。JSONオブジェクトでは順序が規定されないため、 挿入順序は保証されない。
JSON配列で、 データモデルのエントリ値がリストまたは未知である場合 リスト。JSON配列の各値は、 この表で定義される配列値のJSON表現型に基づいて変換され、順序どおりにリストへ追加される。
JSON配列で、 データモデルのエントリ値が集合である場合 集合。JSON配列の各値は、 この表で定義される配列値のJSON表現型に基づいて変換され、順序どおりに集合へ追加される。
JSON文字列で、 データモデルのエントリ値が 日時である場合 日時
JSON文字列で、 データモデルのエントリ値型が 文字列または 未知である場合 文字列
小数または小数部を持たない JSON数値 整数
小数および小数部を持つJSON数値、 または小数部の有無にかかわらずエントリ値が 倍精度数である場合 倍精度数
JSON真偽値 真偽値
JSON nullリテラル null値。

適合生成者または適合消費者を作成するすべての実装者は、 自身のアルゴリズムが [INFRA] 仕様の JSON 変換規則および JSON [RFC8259] 仕様の数値に関する精度の助言に 合致することを確保するよう助言される。

メディアタイプ情報が適合消費者に利用可能であり、 メディアタイプ値がapplication/didである場合、消費されるデータ構造は DID文書であり、ルート要素は オブジェクトのすべてのメンバーがDID文書のエントリである JSON オブジェクトMUSTなければならない。JSON 表現適合消費者が、ルート要素が JSONオブジェクトではない DID文書を消費する場合、エラーを報告 MUSTしなければならない。

6.2.3 JSON-LDプロセッサ

JSON-LDは、Linked Dataを シリアライズするために使用されるJSONベースの形式である。一部の実装は、標準の JSON-LD処理アルゴリズムを使用してDID 文書を処理することが期待される。相互運用性を最大化するため、実装者は 標準準拠のライブラリを用いたJSON-LD処理が妨げられないようにすることを強く助言される。 DID文書の 意味論は、標準準拠のライブラリを用いたJSON-LD処理が実行されるかどうかにかかわらず同じである。 意味論に差異がある場合、それは実装またはDIDメソッド仕様のいずれかにおける誤りである。

JSON-LD処理が行われるためには、JSON-LD 1.1仕様で規定される 規則に従って、@contextプロパティが指定されMUSTなければならない。

@context
JSON-LDコンテキストは、 文字列、または文字列および/または順序付き マップの任意の組み合わせを含むリストのいずれかである。

DID文書、DID文書データ構造、および 表現固有エントリマップは、6.2 JSONで定義されるJSON 表現生成規則に従って、 JSON表現へ シリアライズされMUSTなければならない。

JSON表現 生成規則の使用に加えて、生成は @contextエントリを含めMUSTなければならない。 @contextのシリアライズされた値は、 JSON 文字列https://www.w3.org/ns/did/v1.1、または最初のアイテムが JSON文字列 https://www.w3.org/ns/did/v1.1であり、後続のアイテムがJSON 生成規則に従って シリアライズされるJSON配列MUSTなければならない。

10: 単純な@contextエントリの有効なシリアライズ
{
  "@context": "https://www.w3.org/ns/did/v1.1",
  ...
}
11: 階層化された@contextエントリの有効なシリアライズ
{
  "@context": [
    "https://www.w3.org/ns/did/v1.1",
    "https://did-method-extension.example/v1"
  ],
  ...
}

JSON-LDとして処理されることを意図した 表現を生成または消費する 適合消費者を作成する すべての実装者は、自身のアルゴリズムが有効なJSON-LD文書を生成することを確保するよう助言される。 無効なJSON-LD文書は、JSON-LDプロセッサを停止させ、エラーを報告させる。

異なる表現間の相互運用性を実現するため、 すべてのJSON-LDコンテキストおよびその用語は、 分散型識別子拡張の リポジトリに登録されるSHOULDである。

JSON-LD表現を生成する 適合生成者は、 @contextを介して定義されていない用語を含む DID文書を 生成するSHOULD NOTである。これは、 適合消費者が 未知の用語を削除することが期待されるためである。DID 文書のJSON-LD表現をシリアライズする場合、 適合生成者は、 下流のアプリケーションに対してapplication/didのメディアタイプを指定 MUSTしなければならない。

JSON-LD表現を処理する 適合消費者は、 @contextを介して定義されていないすべての用語を DID文書から削除する SHOULDである。

6.2.4 リモート資源の完全性

実装は、https://www.w3.org/ns/did/v1.1に配置されている ベースコンテキスト値を、すでに取得済みとして扱わ MUSTなければならない。 次の値は、ベースコンテキストファイルの16進数でエンコードされたSHA2-256ダイジェスト値である: ea216ecc1cb02cd39b693dba2250141e270ba0bf95890be107dd9a9e8e43de85。 現代的なUnixコマンドラインインターフェイスから次のコマンドを実行することで、 上記の暗号学的ダイジェストを確認できる: curl -s https://www.w3.org/ns/did/v1.1 | openssl dgst -sha256

実装者は、URLを介してリンクされる資源など、 DID文書内から参照されるその他のデータが、 既定では暗号学的に保護されないことに警告される。 永続的にキャッシュされたファイルおよび/または暗号学的ハッシュの使用を通じて、 DID文書のセキュリティに 重要な任意のURLに対して同種の保護が提供されることを確保するのがベストプラクティスと みなされる。最終的に、リンクされた外部コンテンツの暗号学的ダイジェストを知ることで、 アプリケーションは、そのコンテンツがDID コントローラが意図したものと同じであることを確認できる。

注記: ハッシュ値の変更が検出された場合は正誤表を参照

この仕様で暗号学的ハッシュ値が関連付けられているファイルが変更される可能性は極めて低い。 しかし、仕様に重大な正誤が見つかり、エコシステムの安定性を確保するために修正が必要となる場合、 暗号学的ハッシュ値が変更される可能性がある。そのため、ファイルのHTTPキャッシュ時間は 無限には設定されておらず、実装者は、暗号学的ハッシュ値の変更が検出された場合には 正誤表を確認するよう助言される。

6.3 メディアタイプ

[RFC6838]で定義される メディアタイプは、DID文書を表現するために使用される構文、およびその他の有用な 処理指針を識別する。

この仕様のデータモデルを表現するために使用される構文は、メディアタイプによって識別される SHOULDであり、DID文書で メディアタイプを定義または使用する場合には、この節で概説される慣例に従う SHOULDである。

中核データモデルに関連付けられたメディアタイプは1つあり、 E. IANAに関する考慮事項節に記載されている: application/did

6.3.1 メディアタイプの精度

この節は非規範的である。

開発者またはシステムは、DID文書を伝達するために、低精度のメディアタイプを 使用することがある。低精度のメディアタイプが使用される理由には、次のようなものがある:

  • Webサーバーが、ファイル拡張子が利用できずメディアタイプを判定できない場合に、 既定でtext/plainまたはapplication/octet-streamを使用する。
  • 開発者が、ファイルの内容よりも具体性の低いメディアタイプにつながるファイル拡張子を 追加する。たとえば、.jsonapplication/jsonという メディアタイプになり、.jsonldapplication/ld+jsonというメディアタイプになる場合がある。
  • プロトコルが特定のトランザクションに対して、より低精度のメディアタイプを要求する。 たとえば、application/didではなくapplication/jsonである。

使用されたメディアタイプが当該プロトコルで許容される場合、ペイロードから意図された メディアタイプを判定できるなら、実装者はエラーを発生させないことが推奨される。 たとえば、アプリケーションがapplication/didメディアタイプに関連付けられた 規則に適合するペイロードのみを受け入れるが、ペイロードがより低精度の application/jsonまたはapplication/ld+jsonでタグ付けされている場合、 アプリケーションは、ペイロードがより高精度のメディアタイプにも適合するかどうかを判定するために、 次の手順を実行することがある:

  1. ペイロードをJSON文書として解析する。
  2. @contextプロパティの最初の要素が https://www.w3.org/ns/did/v1.1に一致することを確認する。
  3. JSON文書が、3.1 DID構文節の規則に適合する識別子を含む最上位の idプロパティを含む場合、application/didメディアタイプを仮定する。

可能な限り、実装者はこの仕様で定義されるすべてのペイロードについて、 最も精密な(最高精度の)メディアタイプを使用することが助言される。 また、低精度のメディアタイプでタグ付けされたペイロードが、高精度の型でタグ付けするために 必要な規則を満たしていないことを意味するわけではないことを認識するよう助言される。 同様に、高精度のメディアタイプでタグ付けされたペイロードが、そのメディアタイプに関連付けられた 要件を満たすことを意味するわけではない。ペイロードの受信者は、関連付けられた メディアタイプにかかわらず、ペイロードが特定のシステムでの使用要件に適合することを 確保するため、適切な検査を行うことが期待される。

HTTPクライアントおよびサーバーは、DID 文書に関連付けられたメディアタイプを、 Accept:ヘッダーおよびコンテンツタイプを示す際に使用する。実装者は、 HTTPサーバーがAccept:ヘッダーを無視して別のコンテンツタイプを返したり、 415 Unsupported Media Typeなどのエラーコードを返したりする可能性があることに警告される。

7. メソッド

適合DIDメソッドは、実装者がこの仕様で説明される 機能をどのように実現できるかを定義する。DIDメソッドは、多くの場合、特定の 検証可能データレジストリに関連付けられる。新しいDIDメソッドは、同一の DIDメソッドの異なる実装間の相互運用性を可能にするため、 それぞれ独自の仕様で定義される。

概念的には、この仕様とDIDメソッド仕様との 関係は、IETFの汎用 URI 仕様 [RFC3986] と、http スキーム [RFC9110] などの特定のURI スキーム [IANA-URI-SCHEMES] との関係に似ている。 特定のDIDスキームを定義することに加えて、DIDメソッド 仕様は、特定の種類の 検証可能データレジストリを用いて、DIDおよびDID文書を 作成、解決、更新、および無効化するための機構も定義する。また、DIDに関連するすべての実装上の 考慮事項、ならびにセキュリティおよびプライバシーに関する考慮事項も文書化する。

この節は、DIDメソッド 仕様を作成するための要件を規定する。

7.1 メソッド構文

メソッド固有のDID構文を定義する際の、すべてのDIDメソッド仕様に対する要件は次のとおりである:

  1. DIDメソッド仕様は、3.1 DID構文method-name規則で規定される、正確に1つのメソッド名によって識別される、 正確に1つのメソッド固有のDIDスキームを定義 MUSTしなければならない。
  2. DIDメソッド仕様は、DIDmethod-specific-id構成要素を生成する方法を規定 MUSTしなければならない。
  3. DIDメソッド仕様は、 method-specific-idの値の大文字小文字の扱いおよび正規化を定義 MUSTしなければならない。
  4. method-specific-id値は、DIDメソッド内で一意で MUSTなければならない。method-specific-id値自体が グローバルに一意である場合もある。
  5. DIDメソッドによって生成される任意のDIDは、グローバルに一意で MUSTなければならない。
  6. method-nameの衝突の可能性を減らすため、DIDメソッド 仕様はDID拡張 [DID-EXTENSIONS] のリポジトリに登録される SHOULDである。
  7. DIDメソッドは、複数の method-specific-id形式を定義してもMAYよい。
  8. method-specific-id形式はコロンを含んでもMAYよい。 コロンの使用は、構文上、method-specific-id ABNF規則に準拠 MUSTしなければならない。
  9. DIDメソッド仕様は、パスにおける汎用規則よりも制限的なDIDパスのABNF規則を 規定してもMAYよい。
  10. DIDメソッド仕様は、この節における汎用規則よりも制限的な DIDクエリのABNF規則を 規定してもMAYよい。
  11. DIDメソッド仕様は、この節における汎用規則よりも制限的な DIDフラグメントのABNF規則を 規定してもMAYよい。
注記: method-specific-id内のコロン

method-specific-id内のコロンの意味は完全にメソッド固有である。 コロンは、DIDメソッドによって、階層的に分割された名前空間の確立、 検証可能データレジストリの特定のインスタンスまたは 部分の識別、またはその他の目的のために使用されることがある。 実装者は、すべてのDIDメソッドに汎用的に適用可能な、コロンに関連する意味や 振る舞いを仮定しないよう助言される。

7.2 メソッド操作

メソッド操作を定義する際の、すべてのDIDメソッド仕様に対する要件は次のとおりである:

  1. DIDメソッド仕様は、必要な暗号学的プロセスを含む すべての操作を実行するために認可がどのように行われるかを定義 MUSTしなければならない。
  2. DIDメソッド仕様は、DIDコントローラDIDおよびそれに関連付けられたDID文書をどのように作成するかを規定 MUSTしなければならない。
  3. DIDメソッド仕様は、DIDリゾルバDIDを使用してDID文書を解決する方法を規定 MUSTしなければならない。これには、DIDリゾルバが応答の真正性を検証できる方法も含まれる。
  4. DIDメソッド仕様は、 DID文書の更新を構成するもの、およびDID コントローラDID文書を更新できる方法を規定 MUSTしなければならない。または、更新が不可能であることを述べなければならない。
  5. DIDメソッド仕様は、DIDコントローラDIDを無効化できる方法を 規定MUSTしなければならない。または、無効化が不可能であることを 述べなければならない。

操作を実行するための認可を行う当事者の権限は、DIDメソッドに固有である。たとえば、DIDメソッドは —

メソッド操作を実行する場合、DIDメソッドは、必要とする任意のデータ構造を 使用できる。これには、中間的、部分的、または一時的なDID文書が含まれるが、 それらがDIDメソッドの内部に保持され、メソッド操作によって返されるDID文書が 1.4 適合性で定義されるように 完全に適合している限りにおいてである。

7.3 セキュリティ要件

Security Considerations節を作成する際の、すべてのDIDメソッド仕様に対する要件は次のとおりである:

  1. DIDメソッド仕様は、DIDメソッド仕様で定義されるDID操作について、 RFC3552: Writing Security Considerations Sectionsで提供されるすべての指針および規範的文言に従わ MUSTなければならない。
  2. Security Considerations節は、DIDメソッド仕様で定義される DID操作について、 次の攻撃形態を文書化MUSTしなければならない: 盗聴、リプレイ、メッセージ挿入、削除、改ざん、サービス拒否、 増幅、および中間者攻撃。その他の既知の 攻撃形態も文書化するSHOULDである。
  3. Security Considerations節は、脅威緩和策が展開された後における、関連プロトコルの侵害、 不正確な実装、または暗号から生じるリスクなどの残余リスクを論じ MUSTなければならない。
  4. Security Considerations節は、7.2 メソッド 操作で要求されるすべての操作について、完全性保護および更新認証を提供 MUSTしなければならない。
  5. 認証が関与する場合、特にユーザー・ホスト認証の場合には、その認証方式のセキュリティ特性が 明確に文書化されMUSTなければならない。
  6. Security Considerations節は、DIDが一意に割り当てられていることを証明する ポリシー機構を論じMUSTなければならない。
  7. メソッド固有のエンドポイント認証は論じられMUSTなければならない。DIDメソッドが、必要な計算資源を減らすために light nodeまたは thin client 実装として提供されることもある、さまざまなネットワークトポロジを持つ DLTを使用する場合、そのDIDメソッドの実装で利用可能な トポロジのセキュリティ上の前提を論じMUSTなければならない。
  8. プロトコルが暗号学的保護機構を組み込む場合、DIDメソッド仕様は、データのどの部分がどの保護によって 保護されるかを明確に示しMUSTなければならず、 その暗号学的保護が影響を受けやすい攻撃の種類を示す SHOULDである。例には、完全性のみ、機密性、およびエンドポイント認証がある。
  9. 秘密に保持されるべきデータ(鍵材料、乱数シードなど)は、 明確にラベル付けされるSHOULDである。
  10. DIDメソッド仕様は、該当する場合、DID文書への署名の実装を説明および規定する SHOULDである。
  11. 既知のすべてのDLTの場合など、 DIDメソッドがピアツーピア計算資源を使用する場合、 それらの資源に期待される負荷は、サービス拒否との関係で論じられる SHOULDである。
  12. 5.4 サービスで説明されるように、新しい認証サービス タイプを導入するDIDメソッドは、サポートされる認証プロトコルの セキュリティ要件を考慮するSHOULDである。

7.4 プライバシー要件

Privacy Considerations節を作成する際の、すべてのDIDメソッド仕様に対する要件は次のとおりである:

  1. DIDメソッド仕様のPrivacy Considerations節は、 メソッド固有の形で適用され得る [RFC6973] の第5節の任意の小節について 論じMUSTなければならない。考慮すべき小節は、監視、保存データの侵害、 望まれないトラフィック、誤帰属、相関、識別、二次利用、開示、および排除である。

8. セキュリティに関する考慮事項

この節は非規範的である。

この節には、分散型識別子を使用する人々が、この技術を本番環境に展開する前に検討することを 助言される、さまざまなセキュリティ上の考慮事項が含まれている。読者は、この節を読む前に、 Controlled Identifiers v1.0仕様の Security Considerations節を 読むことが強く求められる。DIDは、多くのIETF標準で使用され、 [RFC3552] に文書化されている 脅威モデルの下で動作するよう設計されている。この節は、 [RFC3552] における多くの考慮事項に加え、 DIDアーキテクチャに固有のその他の考慮事項について詳述する。

8.1 DIDリゾルバの選択

DID拡張 [DID-EXTENSIONS] のリポジトリには、 DIDメソッド名と、それに対応するDIDメソッド仕様の参考情報一覧が含まれている。実装者は、 特定のDIDメソッド名とともにどの DIDメソッド仕様を使用すべきかを命じる中央機関が存在しないことに 留意する必要がある。特定のDIDリゾルバDIDメソッドを 正しく実装しているかどうかに疑問がある場合、DID Specification Registriesを使用して登録済み仕様を 調べ、どのDIDリゾルバ 実装を使用するかについて十分な情報に基づく判断を行うことができる。

8.2 否認防止

DIDおよびDID文書更新の否認防止は、次の場合にサポートされる:

8.3 トラストレス システムにおける失効

トラストレスシステムとは、すべての信頼が暗号学的に証明可能な主張から導出され、 より具体的には、暗号システムの外部のメタデータが、そのシステムにおける信頼の判断に 組み込まれないシステムである。トラストレスシステムで失効済みの 検証メソッドに対する 証明の署名を検証するためには、DIDメソッドは、 versionIdまたはversionTimeのいずれか、またはその両方に加えて、 updatedおよび nextUpdateの両方のDID文書メタデータプロパティをサポートする 必要がある。検証者は、次のすべてが真である場合に限り、 失効した鍵の署名または証明を検証できる:

暗号学的入力を構成するものを超えるメタデータを受け入れる意思のあるシステムでも、 同様の信頼を達成できる場合がある。しかしこれは常に、署名イベントの瞬間に DID文書の内容が期待される内容を 含んでいたかどうかについて、慎重な判断を必要とする。

8.4 DID復旧

復旧とは、デバイスの喪失などによりDID操作を実行する能力を失ったコントローラが、 DID操作を実行する能力を取り戻せるようにする、事後対応型のセキュリティ対策である。

DID復旧の使用を検討する際には、 次の考慮事項が有用である可能性がある:

8.5 人間に分かりやすい 識別子の役割

DIDは、中央登録機関を必要とせずに グローバルな一意性を達成する。これは、人間にとっての記憶しやすさを犠牲にしている。 グローバルに曖昧さのない識別子を生成できるアルゴリズムは、人間にとって意味を持たない ランダムな文字列を生成する。このトレードオフはしばしば Zookoの 三角形と呼ばれる。

人間に分かりやすい識別子から出発してDIDを発見することが望ましいユースケースがある。 たとえば、自然言語の名前、ドメイン名、または携帯電話番号、メールアドレス、ソーシャルメディアの ユーザー名、ブログURLなどの、DID コントローラの従来型のアドレスである。しかし、人間に分かりやすい識別子を DIDへマッピングし、それを検証可能かつ信頼できる方法で 行う問題は、この仕様の範囲外である。

この問題に対する解決策は、この仕様を参照する [DNS-DID] などの 別個の仕様で定義される。そのような仕様は、次の事項を慎重に考慮することが強く推奨される:

8.6 拡張URNとしてのDID

DIDコントローラが望む場合、DIDまたはDID URLは、 永続的で場所に依存しない資源識別子として機能できる。 この種の識別子はUniform Resource Names(URN)に分類され、[RFC8141] で定義される。 DIDは、デジタル資源に対して暗号学的に安全で 場所に依存しない識別子を提供しつつ、取得を可能にするメタデータも提供する、URNの拡張形である。 DID文書DID自体との間に間接参照があるため、 DIDコントローラは、DIDを変更することなく、資源の実際の場所を 調整すること、または資源を直接提供することさえできる。 この種類のDIDは、取得された資源が実際に識別された資源であることを 決定的に検証できる。

この目的でDIDを使用する意図のあるDIDコントローラは、 [RFC8141] の セキュリティに関する考慮事項に従うよう助言される。特に:

8.7 不変性

多くのサイバーセキュリティ上の悪用は、現実と、合理的で善意の行為者の仮定との間の すき間を悪用することに依存している。DID文書の 不変性は、一定のセキュリティ上の利益を提供し得る。個々のDIDメソッドは、 不要な振る舞いや意味論を排除する制約を検討すべきである。同じ機能集合を提供しつつ、 DIDメソッドがより固定化されているほど、 悪意のある行為者によって操作されにくくなる。

例として、DID文書に 1回編集を加えるだけで、その文書のルートidプロパティ以外は何でも変更できると考えてみる。 しかし、サービスが定義後に typeを変更できることは実際に望ましいのだろうか。あるいは鍵がその値を変更できることは 望ましいのだろうか。それとも、オブジェクトの特定の根本的なプロパティが変化した場合には、 新しいidを要求する方がよいのだろうか。Webサイトの悪意ある乗っ取りは、 サイトがホスト名識別子を保持したまま、その下層が微妙に変更される結果を狙うことが多い。 IPアドレスに関連付けられたASNなど、 サイトの特定のプロパティが仕様によって不変であることを要求されていれば、異常検知は容易になり、 攻撃の実行ははるかに難しく、費用も高くなる。

真実のグローバルな情報源に結び付けられたDIDメソッドでは、DID文書の 最新バージョンを直接かつジャストインタイムに検索することが常に可能である。しかし、最終的には DIDリゾルバとその真実の情報源との間にキャッシュ層が置かれる可能性が高い。 その場合、DID文書内のオブジェクトの属性が 実際には微妙に異なる状態であるにもかかわらず、ある状態であると信じることは、悪用を招く可能性がある。 これは、一部の検索が完全なDID文書に対するものであり、 他の検索が、より大きな文脈が仮定される部分データに対するものである場合に特に当てはまる。

8.8 DID文書内の暗号化データ

暗号化アルゴリズムは、暗号技術および計算能力の進歩により破られることが知られている。 実装者は、DID文書内に置かれた任意の暗号化データが、最終的には その暗号化データを利用できる同じ対象者に対して平文で利用可能になる可能性があると 仮定することが助言される。これは、DID文書が公開されている場合に特に重要である。

DID文書の全部または一部を暗号化することは、 長期的にデータを保護するための適切な手段ではない。同様に、 暗号化データをDID文書に置くことは、個人データを保護するための 適切な手段ではない。

上記の注意点を踏まえ、暗号化データがDID文書に 含まれる場合、実装者は、その暗号化データと関連当事者との関係を推測するために使用され得る 相関可能な情報を関連付けないよう助言される。相関可能な情報の例には、受信側当事者の公開鍵、 受信側当事者の制御下にあることが知られているデジタル資産への識別子、または受信側当事者の 人間が読める説明が含まれる。

8.9 同等性プロパティ

equivalentIdおよびcanonicalId プロパティはDIDメソッド自身によって生成されるため、 DID文書idフィールドに存在する解決済みのDIDに適用されるものと同じセキュリティおよび 正確性の保証が、これらのプロパティにも適用される。 alsoKnownAsプロパティは、同等性を正確に述べるものとは保証されず、 DID文書の 解決を超える検証手順を実行せずに依拠すべきではない。

equivalentIdおよびcanonicalId プロパティは、同じDIDメソッドによって生成された単一のDIDの変種に対する同等性主張を表し、 要求当事者がそのDIDメソッドならびに適合生成者および リゾルバを信頼する範囲で信頼できる。

alsoKnownAsプロパティは、同じDIDメソッドによって管理されていない URIに対する 同等性主張を許可し、管理するDIDメソッドの外部で検証手順を実行しない限り信頼できない。 追加の指針については、 Controlled Identifiers v1.0仕様の 第2.1.3節: Also Known Asを参照。

DID文書内の 他のセキュリティ関連プロパティと同様に、DID文書内の 任意の同等性記述に依拠する当事者は、適切な検証が実行された後に、これらのプロパティの値が 攻撃者によって置換されることを防御すべきである。検証が実行された後、メモリまたはディスクに保存された DID文書への任意の書き込みアクセスは、 DID文書が 再検証されない限り、検証を回避し得る攻撃ベクトルである。

8.10 永続性

DIDは、コントローラが 自身の識別子を維持するために、単一の信頼された第三者または管理者に依存する必要がないよう、 永続的であるように設計されている。理想的な場合、管理者はコントローラから制御を奪うことも、 認証、認可、証明などの特定の目的のための識別子の使用を妨げることもできない。 第三者は、コントローラの代理として、 そのコントローラの同意なしにエンティティの識別子を 削除したり使用不能にしたりすることはできない。

しかし、暗号学的な制御証明を可能にするすべてのDIDメソッドでは、秘密の暗号材料を移転することによって、 制御を証明する手段を常に別の当事者へ移転できることに注意することが重要である。 したがって、識別子の長期的な永続性に依拠するシステムは、その識別子が実際に意図された 当事者の制御下にまだあることを確認するため、定期的にチェックすることが不可欠である。

残念ながら、特定の検証 メソッドに関連付けられた秘密の暗号材料が侵害されたかどうかを、暗号だけから判断することは 不可能である。期待されるコントローラが 依然として秘密の暗号材料へアクセスでき、そのため検証プロセスの一部として制御証明を実行できる一方で、 同時に悪意ある行為者も同じ鍵またはそのコピーにアクセスできる、ということは十分にあり得る。

そのため、暗号学的な制御証明は、重要度の高いシナリオで必要とされる身元保証レベルを評価する際の 1つの要素としてのみ使用されることが期待される。DIDベースの認証は、暗号学的秘密をシステム間で送信せずに その秘密に対する制御を判断できる能力のおかげで、ユーザー名とパスワードよりもはるかに高い保証を 提供する。しかし、それは完全ではない。機微性が高い、高価値である、または生命に関わる操作を含む シナリオでは、必要に応じて追加要素を使用することが期待される。

異なるコントローラによる使用から生じる潜在的な曖昧さに加え、 一般に、特定のDIDが任意の時点で同じ主体を参照して使用されていることを 保証することは不可能である。コントローラがDIDを異なる主体に再利用することは技術的に可能であり、 より微妙には、主体の正確な定義が時間とともに変化したり、誤解されたりすることも可能である。

たとえば、個人事業のために使用され、金融取引に使用されるさまざまなクレデンシャルを受け取る DIDを考える。 コントローラにとって、 その識別子はその事業を参照していた。事業が成長するにつれて、最終的に有限責任会社として法人化される。 コントローラは同じDIDを使い続ける。 なぜならその人にとって、そのDIDは事業を指すからである。しかし州、税務当局、 および地方自治体にとって、そのDIDはもはや同じエンティティを 指していない。この意味の微妙な変化が信用供与者または供給者にとって重要かどうかは、 必然的にそれらの判断に委ねられる。多くの場合、請求が支払われ、回収が執行できる限り、 その変化は重要ではない。

これらの潜在的な曖昧さのため、DIDは絶対的ではなく 文脈的に有効であるとみなされるべきである。その永続性は、 それらがまったく同じ主体を参照することを意味せず、同じコントローラの 制御下にあることも意味しない。代わりに、DIDが作成された文脈、それがどのように使用されるかを理解し、 意味の変化の可能性を考慮し、潜在的かつ不可避な意味論上の漂流に対処するための手順および ポリシーを採用する必要がある。

8.11 競合する 考慮事項の評価

この節は非規範的である。

この仕様は、特定の種類の 検証可能データレジストリの使用を要求または提案しない。 異なるユースケースは異なる要件をもたらす可能性がある。異なる要件は、異なるトレードオフを伴う 異なる考慮事項を示唆する可能性がある。たとえば、計算(エネルギー使用)、信頼 (権威への依拠)、調整(ネットワーク帯域幅)、またはメモリ(物理ストレージ)の間の トレードオフは、特定のユースケースに適切な場合もあればそうでない場合もある。他のユースケースは 同じトレードオフを行わない場合がある。自らのユースケースについて異なる基準を検討する必要がある者は、 DID Method Rubricを参照されたい。これは、特定の DIDメソッドが自らのユースケースに適しているかどうかを意思決定者が 判断するのに役立つ評価基準を提供する。

9. プライバシーに関する考慮事項

この節は非規範的である。

DIDおよびDID文書は、 DIDコントローラによって直接管理されるように 設計されているため、Privacy by Design [PRIVACY-BY-DESIGN] の原則を、 分散型識別子アーキテクチャのあらゆる側面に 適用することが極めて重要である。これら7つの原則はすべて、この仕様の開発全体を通じて 適用されている。この仕様で使用される設計は、追加のプライバシー保護策を推奨または適用する 登録機関、ホスティング会社、またはその他の中間サービスプロバイダの存在を前提としない。 この仕様におけるプライバシーは、事後的な救済ではなく予防的なものであり、組み込みの既定である。 この節を読む前に、読者は Controlled Identifiers v1.0仕様の Privacy Considerations節を読むことが 強く求められる。そこには、DIDにも適用される、より一般的なプライバシー上の 考慮事項が含まれている。この節の残りでは、分散型識別子に固有であり、 Controlled Identifiers v1.0仕様で提供される指針に加わる、プライバシー上の考慮事項を扱う。

9.1 グループプライバシー

DID主体がグループ内の他者と区別できない場合、 プライバシーは利用可能である。他の当事者と私的に関わるという行為それ自体が 認識可能な標識である場合、プライバシーは大きく損なわれる。

DIDおよびDIDメソッドは、 グループプライバシーを改善するよう取り組む必要がある。特に、それを正当に最も必要とする人々のためである。 匿名性および仮名性を既定で保護する技術および人間向けインターフェイスを選択すること。 デジタル フィンガープリントを減らすため、要求当事者の実装間で共通設定を共有し、 ワイヤプロトコル上の交渉済みオプションを最小限に保ち、暗号化されたトランスポート層を使用し、 メッセージを標準長へパディングすること。

A.

この節は非規範的である。

A.1 DID文書

この節は非規範的である。

任意の拡張およびその他の検証メソッド型については、 Verification Method Types [DID-EXTENSIONS] を参照。

注記

これらの例は情報提供のみを目的としている。複数の目的に同じ検証メソッドを使用しないことが、 ベストプラクティスとみなされる。

12: 1つの検証メソッド型を持つDID文書
  {
    "@context": "https://www.w3.org/ns/did/v1.1",
    "id": "did:example:123",
    "authentication": [
      {
        "id": "did:example:123#z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu",
        "type": "Multikey", // external (property value)
        "controller": "did:example:123",
        "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
      }
    ],
    "capabilityInvocation": [
      {
        "id": "did:example:123#z6Mkvtac9bidSz9bBttzn7Yg3oCDHvMY2FtkFLs6SXRQGdQR",
        "type": "Multikey", // external (property value)
        "controller": "did:example:123",
        "publicKeyMultibase": "z6Mkvtac9bidSz9bBttzn7Yg3oCDHvMY2FtkFLs6SXRQGdQR"
      }
    ],
    "capabilityDelegation": [
      {
        "id": "did:example:123#z6MknxsdF4CGVxhRNsx6TvXPFczaHEkajKBBwu75uwBmgpom",
        "type": "Multikey", // external (property value)
        "controller": "did:example:123",
        "publicKeyMultibase": "z6MknxsdF4CGVxhRNsx6TvXPFczaHEkajKBBwu75uwBmgpom"
      }
    ],
    "assertionMethod": [
      {
        "id": "did:example:123#z6MkgYhVuWq4hyc7ZKBGhsY7pb5Bc8V6VPXGPG3EPja8JBFR",
        "type": "Multikey", // external (property value)
        "controller": "did:example:123",
        "publicKeyMultibase": "z6MkgYhVuWq4hyc7ZKBGhsY7pb5Bc8V6VPXGPG3EPja8JBFR"
      }
    ]
}
13: 多くの異なる鍵型を持つDID文書
{
  "@context": "https://www.w3.org/ns/did/v1.1",
  "id": "did:example:123",
  "verificationMethod": [
    {
      "id": "did:example:123#key-0",
      "type": "JsonWebKey",
      "controller": "did:example:123",
      "publicKeyJwk": {
        "kty": "OKP", // external (property name)
        "crv": "Ed25519", // external (property name)
        "x": "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ" // external (property name)
      }
    },
    {
      "id": "did:example:123#key-1",
      "type": "JsonWebKey",
      "controller": "did:example:123",
      "publicKeyJwk": {
        "kty": "OKP", // external (property name)
        "crv": "X25519", // external (property name)
        "x": "pE_mG098rdQjY3MKK2D5SUQ6ZOEW3a6Z6T7Z4SgnzCE" // external (property name)
      }
    },
    {
      "id": "did:example:123#key-2",
      "type": "JsonWebKey",
      "controller": "did:example:123",
      "publicKeyJwk": {
        "kty": "EC", // external (property name)
        "crv": "secp256k1", // external (property name)
        "x": "Z4Y3NNOxv0J6tCgqOBFnHnaZhJF6LdulT7z8A-2D5_8", // external (property name)
        "y": "i5a2NtJoUKXkLm6q8nOEu9WOkso1Ag6FTUT6k_LMnGk" // external (property name)
      }
    },
    {
      "id": "did:example:123#key-3",
      "type": "JsonWebKey",
      "controller": "did:example:123",
      "publicKeyJwk": {
        "kty": "EC", // external (property name)
        "crv": "secp256k1", // external (property name)
        "x": "U1V4TVZVMUpUa0ZVU1NBcU9CRm5IbmFaaEpGNkxkdWx", // external (property name)
        "y": "i5a2NtJoUKXkLm6q8nOEu9WOkso1Ag6FTUT6k_LMnGk" // external (property name)
      }
    },
    {
      "id": "did:example:123#key-4",
      "type": "JsonWebKey",
      "controller": "did:example:123",
      "publicKeyJwk": {
        "kty": "EC", // external (property name)
        "crv": "P-256", // external (property name)
        "x": "Ums5WVgwRkRTVVFnU3k5c2xvZllMbEcwM3NPRW91ZzN", // external (property name)
        "y": "nDQW6XZ7b_u2Sy9slofYLlG03sOEoug3I0aAPQ0exs4" // external (property name)
      }
    },
    {
      "id": "did:example:123#key-5",
      "type": "JsonWebKey",
      "controller": "did:example:123",
      "publicKeyJwk": {
        "kty": "EC", // external (property name)
        "crv": "P-384", // external (property name)
        "x": "VUZKSlUwMGdpSXplekRwODhzX2N4U1BYdHVYWUZsaXVDR25kZ1U0UXA4bDkxeHpE", // external (property name)
        "y": "jq4QoAHKiIzezDp88s_cxSPXtuXYFliuCGndgU4Qp8l91xzD1spCmFIzQgVjqvcP" // external (property name)
      }
    },
    {
      "id": "did:example:123#key-6",
      "type": "JsonWebKey",
      "controller": "did:example:123",
      "publicKeyJwk": {
        "kty": "EC", // external (property name)
        "crv": "P-521", // external (property name)
        "x": "VTI5c1lYSmZWMmx1WkhNZ0dQTXhaYkhtSnBEU3UtSXZwdUtpZ0VOMnB6Z1d0U28tLVJ3ZC1uNzhuclduWnplRGMx", // external (property name)
        "y": "UW5WNVgwSnBkR052YVc0Z1VqY1B6LVpoZWNaRnliT3FMSUpqVk9sTEVUSDd1UGx5RzBnRW9NV25JWlhoUVZ5cFB5" // external (property name)
      }
    },
    {
      "id": "did:example:123#key-7",
      "type": "JsonWebKey",
      "controller": "did:example:123",
      "publicKeyJwk": {
        "kty": "RSA", // external (property name)
        "e": "AQAB", // external (property name)
        "n": "UkhWaGJGOUZRMTlFVWtKSElBdENGV2hlU1F2djFNRXh1NVJMQ01UNGpWazlraEpLdjhKZU1YV2UzYldIYXRqUHNrZGYyZGxhR2tXNVFqdE9uVUtMNzQybXZyNHRDbGRLUzNVTElhVDFoSkluTUhIeGoyZ2N1Yk82ZUVlZ0FDUTRRU3U5TE8wSC1MTV9MM0RzUkFCQjdRamE4SGVjcHl1c3BXMVR1X0RicXhjU253ZW5kYW13TDUyVjE3ZUtobE80dVh3djJIRmx4dWZGSE0wS21DSnVqSUt5QXhqRF9tM3FfX0lpSFVWSEQxdERJRXZMUGhHOUF6c24zajk1ZC1zYU" // external (property name)
      }
    }
  ]
}
14: 異なる検証メソッド型を持つDID文書
{
  "@context": "https://www.w3.org/ns/did/v1.1",
  "id": "did:example:123",
  "verificationMethod": [{
    "id": "did:example:123#key-0",
    "type": "Multikey",
    "controller": "did:example:123",
    "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
  }, {
    "id": "did:example:123#key-1",
    "type": "Multikey",
    "controller": "did:example:123",
    "publicKeyMultibase": "z6MtTjFFxQ4sQKS2wmozFAn5cxukmM46WR7e2vxfqZQsv4eh"
  }, {
    "id": "did:example:123#key-2",
    "type": "EcdsaSecp256k1VerificationKey2019",
    "controller": "did:example:123",
    "publicKeyMultibase": "zns2aFDq25fEV1NUd3wZ65sgtht4j5QjFW8JCAHdUJfLwfodt"
  }, {
    "id": "did:example:123#key-3",
    "type": "JsonWebKey",
    "controller": "did:example:123",
    "publicKeyJwk": {
      "kty": "EC", // external (property name)
      "crv": "P-256", // external (property name)
      "x": "Er6KSSnAjI70ObRWhlaMgqyIOQYrDJTE94ej5hybQ2M",
      "y": "pPVzCOTJwgikPjuUE6UebfZySqEJ0ZtsWFpj7YSPGEk"
    }
  }]
}
15: 相対DID URLを使用するDID文書
  {
    "@context": "https://www.w3.org/ns/did/v1.1",
    "id": "did:example:123",
    "verificationMethod": [
      {
        // 絶対DID URL値 did:example:123#key-1 に変換される相対DID URL
        "id": "#key-1",
        "type": "Ed25519VerificationKey2020",
        "controller": "did:example:123",
        "publicKeyMultibase": "z6MkmM42vxfqZQsv4ehtTjFFxQ4sQKS2w6WR7emozFAn5cxu"
      }
    ],
    "authentication": [
      "#key-1"
    ],
    "capabilityInvocation": [
      "#key-1"
    ],
    "capabilityDelegation": [
      "#key-1"
    ],
    "assertionMethod": [
      // 相対DID URL #key-1 の使用は、絶対DID URL値 did:example:123#key-1 の使用と同等である
      "did:example:123#key-1"
    ]
}

A.2 証明

この節は非規範的である。

注記

これらの例は情報提供のみを目的としている。追加の例については、Verifiable Credentials Data Model v2.0を参照。

16: Multikey型の検証メソッドにリンクされた 検証可能クレデンシャル
{
  // external (all terms in this example)
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/citizenship/v4rc1"
  ],
  "type": [
    "VerifiableCredential",
    "PermanentResidentCardCredential"
  ],
  "issuer": {
    "id": "did:key:zDnaeYGXycLmAn5m9akGtdL6rqBspGQPM7QZXW2CvJ3k9c2Bz",
    "image": "data:image/png;base64,iVBORw0KGgo...5CYII="
  },
  "name": "Permanent Resident Card",
  "description": "Government of Utopia Permanent Resident Card.",
  "credentialSubject": {
    "type": [
      "PermanentResident",
      "Person"
    ],
    "givenName": "JANE",
    "familyName": "SMITH",
    "gender": "Female",
    "image": "data:image/png;base64,iVBORw0KGgoAA...kJggg==",
    "residentSince": "2015-01-01",
    "commuterClassification": "C1",
    "birthCountry": "Arcadia",
    "birthDate": "1978-07-17",
    "permanentResidentCard": {
      "type": "PermanentResidentCard",
      "identifier": "83627465",
      "lprCategory": "C09",
      "lprNumber": "999-999-999"
    }
  },
  "validFrom": "2025-01-04T00:00:00Z",
  "validUntil": "2026-01-04T23:59:59Z",
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-01-04T15:02:36Z",
    "verificationMethod": "did:key:zDnaeYGXycLmAn5m9akGtdL6rqBspGQPM7QZXW2CvJ3k9c2Bz#zDnaeYGXycLmAn5m9akGtdL6rqBspGQPM7QZXW2CvJ3k9c2Bz",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5CK4DPN7...Jpqwp"
  }
}
17: JsonWebKey型の検証メソッドにリンクされた 検証可能クレデンシャル
{  // external (all terms in this example)
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/citizenship/v4rc1"
  ],
  "type": [
    "VerifiableCredential",
    "PermanentResidentCardCredential"
  ],
  "issuer": {
    "id": "did:example:123#key-1",
    "image": "data:image/png;base64,iVBORw0KGgo...5CYII="
  },
  "name": "Permanent Resident Card",
  "description": "Government of Utopia Permanent Resident Card.",
  "credentialSubject": {
    "type": [
      "PermanentResident",
      "Person"
    ],
    "givenName": "JANE",
    "familyName": "SMITH",
    "gender": "Female",
    "image": "data:image/png;base64,iVBORw0KGgoAA...kJggg==",
    "residentSince": "2015-01-01",
    "commuterClassification": "C1",
    "birthCountry": "Arcadia",
    "birthDate": "1978-07-17",
    "permanentResidentCard": {
      "type": "PermanentResidentCard",
      "identifier": "83627465",
      "lprCategory": "C09",
      "lprNumber": "999-999-999"
    }
  },
  "validFrom": "2025-01-04T00:00:00Z",
  "validUntil": "2026-01-04T23:59:59Z",
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-01-04T15:02:36Z",
    "verificationMethod": "did:example:123#key-1",
    "cryptosuite": "ecdsa-jcs-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5m9akGtdL...6rqBspGQP"
  }
}
18: bls12381検証メソッドにリンクされた 検証可能クレデンシャル
{  // external (all terms in this example)
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/citizenship/v4rc1"
  ],
  "type": [
    "VerifiableCredential",
    "PermanentResidentCardCredential"
  ],
  "issuer": {
    "id": "did:key:zUC7DojAAkoD8WpSS87KG6iuMSBd4wH1fZzmcwmakx4JfaXN7RLSES4wNCfWboHvULxGxRwiSsj6UYSgq1dWGusdwrrJsjUQQEb1oid3igF4hbSFzFjf9aWTJSphhu63vHGoAVE",
    "image": "data:image/png;base64,iVBORw0KGgoAA...CYII="
  },
  "name": "Permanent Resident Card",
  "description": "Government of Utopia Permanent Resident Card.",
  "credentialSubject": {
    "type": [
      "PermanentResident",
      "Person"
    ],
    "givenName": "JANE",
    "familyName": "SMITH",
    "gender": "Female",
    "image": "data:image/png;base64,iVBORw0KGgoAAA...3dgg==",
    "residentSince": "2015-01-01",
    "commuterClassification": "C1",
    "birthCountry": "Arcadia",
    "birthDate": "1978-07-17",
    "permanentResidentCard": {
      "type": "PermanentResidentCard",
      "identifier": "83627465",
      "lprCategory": "C09",
      "lprNumber": "999-999-999"
    }
  },
  "validFrom": "2025-01-04T00:00:00Z",
  "validUntil": "2026-01-04T23:59:59Z",
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC7DojAAkoD8WpSS87KG6iuMSBd4wH1fZzmcwmakx4JfaXN7RLSES4wNCfWboHvULxGxRwiSsj6UYSgq1dWGusdwrrJsjUQQEb1oid3igF4hbSFzFjf9aWTJSphhu63vHGoAVE#zUC7DojAAkoD8WpSS87KG6iuMSBd4wH1fZzmcwmakx4JfaXN7RLSES4wNCfWboHvULxGxRwiSsj6UYSgq1dWGusdwrrJsjUQQEb1oid3igF4hbSFzFjf9aWTJSphhu63vHGoAVE",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQik2d4...pc3N1ZXI"
  }
}
19: bls12381検証メソッドにリンクされた、検証可能 クレデンシャルの選択的開示ゼロ知識証明
{
  // external (all terms in this example)
  "@context": "https://www.w3.org/ns/credentials/v2",
  "type": "VerifiablePresentation",
  // holder did:keyは相関を避けるためドメインごとにペアワイズである
  "holder": "did:key:z6MkveKdpgkQ1pwNktQ5Lc19epBrzFjMUeNMUZGFvezFF2dX",
  "verifiableCredential": {
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://w3id.org/citizenship/v4rc1"
    ],
    "type": [
      "VerifiableCredential",
      "PermanentResidentCardCredential"
    ],
    "issuer": {
      "id": "did:web:unlinkable.example",
      "image": "data:image/png;base64,iVBORw0KGgoAA...CYII="
    },
    "credentialSubject": {
      "type": ["PermanentResident", "Person"],
      // countryのみが選択的に開示される
      "birthCountry": "Arcadia"
    },
    "proof": {
      "type": "DataIntegrityProof",
      "verificationMethod": "did:web:vcplayground.org#zUC7EwMqo9vCjFmj7ArU2SivcbeccAY6hd4nw5fVD6xD4W2vm9eVy6VqVnciAZRmPLXnuxuka5JTJVmgz66CxDno6eqZmvUViCckCcKg8A4s1R4i2JjyzrdTQs5zrfY4jJCHFCp",
      "cryptosuite": "bbs-2023",
      "proofPurpose": "assertionMethod",
      "proofValue": "u2V0DhV...3JnIn0"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2025-01-04T15:10:39Z",
    "verificationMethod": "did:key:z6MkveKdpgkQ1pwNktQ5Lc19epBrzFjMUeNMUZGFvezFF2dX#z6MkveKdpgkQ1pwNktQ5Lc19epBrzFjMUeNMUZGFvezFF2dX",
    "proofPurpose": "authentication",
    "challenge": "QZVVFcXlMPStFmpXTSktv",
    "domain": "https://unlinkable.example",
    "proofValue": "z5tXmHk...x2GvTt3bF"
  }
}
20: デコードされたJWTとしての検証可能クレデンシャル
{ // external (all terms in this example)
  "protected": {
    "kid": "did:example:123#_Qq0UL2Fq651Q0Fjd6TvnYE-faHiOpRlPVQcY_-tA4A",
    "alg": "EdDSA"
  },
  "payload": {
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://w3id.org/citizenship/v4rc1"
    ],
    "type": [
      "VerifiableCredential",
      "PermanentResidentCardCredential"
    ],
    "issuer": {
      "id": "did:key:zUC7Do...oAVE",
      "image": "data:image/png;base64,iVBORw0KGgoAA...CYII="
    },
    "name": "Permanent Resident Card",
    "description": "Government of Utopia Permanent Resident Card.",
    "credentialSubject": {
      "type": [
        "PermanentResident",
        "Person"
      ],
      "givenName": "JANE",
      "familyName": "SMITH",
      "gender": "Female",
      "image": "data:image/png;base64,iVBORw0KGgoAAA...3dgg==",
      "residentSince": "2015-01-01",
      "commuterClassification": "C1",
      "birthCountry": "Arcadia",
      "birthDate": "1978-07-17",
      "permanentResidentCard": {
        "type": "PermanentResidentCard",
        "identifier": "83627465",
        "lprCategory": "C09",
        "lprNumber": "999-999-999"
      }
    },
    "validFrom": "2025-01-04T00:00:00Z",
    "validUntil": "2026-01-04T23:59:59Z",
  },
  "signature": "qSv6d...bJRAw"
}

A.3 暗号化

この節は非規範的である。

注記

これらの例は情報提供のみを目的としている。JWEヘッダーで不要な情報を開示しないことが、 ベストプラクティスとみなされる。

21: kidを介して検証メソッドにリンクされたJWE
{ // external (all terms in this example)
  "ciphertext": "3SHQQJajNH6q0fyAHmw...",
  "iv": "QldSPLVnFf2-VXcNLza6mbylYwphW57Q",
  "protected": "eyJlbmMiOiJYQzIwUCJ9",
  "recipients": [
    {
      "encrypted_key": "BMJ19zK12YHftJ4sr6Pz1rX1HtYni_L9DZvO1cEZfRWDN2vXeOYlwA",
      "header": {
        "alg": "ECDH-ES+A256KW",
        "apu": "Tx9qG69ZfodhRos-8qfhTPc6ZFnNUcgNDVdHqX1UR3s",
        "apv": "ZGlkOmVsZW06cm9wc3RlbjpFa...",
        "epk": {
          "crv": "X25519",
          "kty": "OKP",
          "x": "Tx9qG69ZfodhRos-8qfhTPc6ZFnNUcgNDVdHqX1UR3s"
        },
        "kid": "did:example:123#zC1Rnuvw9rVa6E5TKF4uQVRuQuaCpVgB81Um2u17Fu7UK"
      }
    }
  ],
  "tag": "xbfwwDkzOAJfSVem0jr1bA"
}

B. アーキテクチャ上の考慮事項

この節は非規範的である。

B.1 詳細なアーキテクチャ図

この節は非規範的である。

以下は、4. データモデル5. 中核プロパティ7. メソッド、および [DID-RESOLUTION] の 関係を示す図である。


  DIDおよびDID文書は検証可能データレジストリに記録される。DIDはDID文書へ解決される。
  DIDはDID主体を参照する。DIDコントローラはDID文書を制御する。
  DID URLはDIDを含む。DID URLはDID文書フラグメントまたは外部資源へ
  間接参照される。DIDリゾルバはresolve関数を実装する。DID URLデリファレンサは
  dereferencing関数を実装する。DIDメソッドは検証可能データレジストリを操作する。
  DIDリゾルバおよびDID URLデリファレンサはDIDメソッドに指示する。
4 DIDアーキテクチャおよび基本構成要素の関係の詳細な概要。

B.2 DIDの作成

この節は非規範的である。

DIDの作成は、 各DIDメソッドによって定義されるプロセスである。 did:keyなど、一部のDIDメソッドは 純粋に生成的であり、単一の暗号材料を適合する表現へ変換することで、DIDおよびDID文書が生成されるようなものである。 その他のDIDメソッドでは、 検証可能データレジストリの使用が必要になる場合があり、 それぞれのDIDメソッドによって定義されるように、 登録が完了した場合にのみ、第三者によってDIDおよびDID文書が 存在すると認識される。その他のプロセスが、それぞれのDIDメソッドによって 定義される場合もある。

B.3 DID主体の決定

この節は非規範的である。

DIDはURI(Uniform Resource Identifier)の特定の種類であるため、 DIDは任意の資源を参照できる。 [RFC3986] によれば:

「resource」という用語は、URIによって識別され得るものすべてについて一般的な意味で使用される。 [...] 資源は必ずしもインターネット経由でアクセス可能である必要はない。

資源はデジタルでも物理的でも、抽象的でも具体的でもあり得る。URIを割り当てられる任意の資源には、 DIDを割り当てることができる。 DIDが参照する資源が DID主体である。

DIDコントローラは、DID主体を決定する。 DID主体DID自体を見ることで 判断できるとは期待されない。なぜなら、DIDは一般に、人間ではなく機械にとってのみ 意味を持つためである。DIDDID主体に関する情報を 含む可能性は低い。そのため、DID主体に関する追加情報は、DIDDID文書へ解決すること、DIDに関する検証可能クレデンシャルを取得すること、 またはDIDのその他の記述を通じてのみ発見できる。

取得されたDID文書内のidプロパティの値は、 解決されるDIDと常に一致しなければならないが、 DIDが参照する実際の資源が時間とともに 変化できるかどうかは、DIDメソッドに依存する。たとえば、DIDメソッドDID主体の変更を許可する場合、特定の役割の現在の 就任者—たとえば会社のCEO—のためのDIDを生成するために使用でき、その役割を占める 実際の人物は、そのDIDが解決される時点に よって異なり得る。

B.4 DID文書の参照

この節は非規範的である。

DIDは、DID主体を参照し、(DIDメソッドによって指定されるプロトコルに従って) DID文書解決されるDID文書は、 DID主体とは別個の資源ではなく、 DIDとは別のURI を持たない。むしろ、DID文書は、DID主体との暗号学的に検証可能な相互作用を可能にする目的で、 DIDコントローラによって制御される DID解決の成果物である。

この区別は、下に示すグラフモデルによって例示される。


DIDコントローラがDID主体を参照するためにDIDを割り当て、
DID主体を記述するDID文書へ解決する方法のグラフモデルを示す図。
5 DIDは、DIDコントローラによって、DID主体を参照し、 DID文書へ解決されるように割り当てられる識別子であり、 そのDID文書は DID主体を記述する。DID 文書DID 解決の成果物であり、DID主体とは別個の資源ではない。 関連項目: 説明的な記述
図の上部には、塗りつぶされた黒い円が2つあり、左側の1つは "DID Controller"、右側の1つは"DID Subject"とラベル付けされている。 下部には、右下の角が内側に折れ曲がって小さな三角形を形成する長方形があり、 "DID Document"というラベルが含まれている。矢印はこれら3つの項目の間を次のように結んでいる。 赤い実線の矢印は、DID Controllerの円から右方向にDID Subjectの円へ直接向かい、 上に大きなフォントで"DID"、下に小さな斜体フォントで"Identifies"とラベル付けされている。 他の矢印ラベルも小さな斜体フォントである。"Resolves to"とラベル付けされた赤い点線の矢印は、 DID Controllerから始まり、最初の矢印と同じ線から下へ曲がってDID Documentの長方形を指す。 "Controls"とラベル付けされた緑の矢印は、DID ControllerからDID Documentへ直接向かう。 "Controller"とラベル付けされた緑の矢印は反対方向、DID DocumentからDID Controllerへ向かい、 図の左側へ外向きの弧を描く。"Describes"とラベル付けされた青い矢印は、DID Documentから DID Subjectへ直接向かう。

B.5 DID文書内の記述

この節は非規範的である。

DID文書内の各プロパティは、 DIDコントローラによる記述であり、次のものを記述する:

DID文書で唯一必須のプロパティは idであるため、これはDID文書内に 存在することが保証される唯一の記述である。この記述は、5で、DIDDID主体との直接リンクとして示されている。

B.6 DID主体に ついての追加情報の発見

この節は非規範的である。

DID主体に ついての追加情報を発見するための選択肢は、DID文書内に存在するプロパティに依存する。 serviceプロパティが存在する場合、サービスエンドポイントから 追加情報を要求できる。たとえば、DID主体を記述する1つ以上の主張 (属性)について、検証可能クレデンシャルをサポートするサービスエンドポイントに問い合わせることによってである。

もう1つの選択肢は、DID文書内に存在する場合、alsoKnownAs プロパティを使用することである。DID コントローラは、それを使用して、同じDID主体を参照するその他のURI(他のDIDを含む)の一覧を提供できる。 これらのURIを解決または間接参照すると、下の図に示すように、DID主体の その他の記述または表現が得られる場合がある。


          別の資源を表す別ノードへの弧を持つalsoKnownAsプロパティを含み、
          その別資源がDID主体の別の記述へ間接参照されるグラフモデルを示す図。
6 DID文書は、alsoKnownAsプロパティを使用して、 別のURI(他のDIDを含むが、必ずしもそれに限らない)が 同じDID主体を参照することを主張できる。 関連項目: 説明的な記述
図には、塗りつぶされた小さな黒い円が3つ、角が折れた長方形が2つ、それらの間の矢印、 およびラベルが次のように含まれる。左上には"DID Controller"とラベル付けされた円がある。 右上には"DID Subject"とラベル付けされた円がある。右下中央にはラベルのない円がある。 右下には"Description"とラベル付けされた長方形がある。図の中央には"DID Document"と ラベル付けされた長方形がある。DID Documentの長方形内では、そのラベルの下に 2行のコード、"alsoKnownAs: ["と"URI]"がある。黒い矢印は2行目から右へ伸び、 長方形の境界を横切って、図の右側にあるラベルのない円を指す。この矢印は上に大きなフォントで "URI"、下に斜体で"Identifies"とラベル付けされている。黒い矢印はラベルのない円から下方向に Descriptionの長方形へ向かい、"Dereferences to"とラベル付けされている。"Describes"と ラベル付けされた青い矢印は、Descriptionから右側に弧を描いてDID Subjectへ上向きに指す。 同じく"Describes"とラベル付けされた青い矢印は、図の中央の"DID Document"とラベル付けされた 長方形から右上のDID Subjectの円へ直接向かう。"alsoKnownAs"とラベル付けされた赤い矢印は、 DID Subjectからラベルのない円へ下向きに指す。上部には、赤い矢印が左から右へ、 DID ControllerからDID Subjectへ向かい、上に大きなフォントで"DID"、下に斜体で "Identifies"とラベル付けされている。赤い点線は同じ場所から始まるが分岐して下方へ曲がり、 図中央のDID Documentの長方形を指す。"Controls"とラベル付けされた緑の矢印は、 DID ControllerからDID Documentへ直接向かう。別の緑の矢印は反対方向を指し、"Controller"と ラベル付けされ、図の左側へ外向きに曲がってDID DocumentからDID Controllerへ向かう。

B.7 DID主体の表現を 提供する

この節は非規範的である。

DID主体がインターネットから取得可能なデジタル資源である場合、 DIDメソッドは、DID URLを構築して、 DID主体自体の表現を返すことを選択できる。 たとえば、永続的で暗号学的に検証可能な識別子を必要とするデータスキーマに DIDを割り当て、 指定されたパス またはクエリを渡すことを、 そのスキーマの表現を取得する標準的な方法として使用できる。

同様に、DIDは、 (画像などの)デジタル資源を参照するために使用でき、その機能が該当するDIDメソッドで サポートされている場合、そのデジタル資源は検証可能データレジストリから直接返され得る。

B.8 既存のWeb資源への DIDの割り当て

この節は非規範的である。

Webページまたはその他のWeb資源のコントローラが、それに永続的で暗号学的に検証可能な識別子を 割り当てたい場合、そのコントローラはそれにDIDを 与えることができる。たとえば、ブログホスティング会社(そのホスティング会社のドメイン配下)で ホストされるブログの著者は、そのブログのためのDIDを 作成できる。DID文書で、著者はブログの現在のURLを指す alsoKnownAsプロパティを含めることができる。例:

"alsoKnownAs": ["https://myblog.blogging-host.example/home"]

その後、著者がブログを別のホスティング会社(または著者自身のドメイン)へ移動した場合、 著者はDID文書を 更新して、ブログの新しいURLを指すようにできる。例:

"alsoKnownAs": ["https://myblog.example/"]

DIDは、事実上ブログURLに対する間接参照の層を追加する。 この間接参照の層は、ブログホスティング会社などの外部の管理権限ではなく、著者の制御下にある。 これにより、DIDは、ネットワーク上の場所が 時間とともに変化し得る情報資源の永続識別子である、拡張された URN(Uniform Resource Name)として効果的に機能できる。

B.9 DID コントローラとDID主体の関係

この節は非規範的である。

混乱を避けるため、DID主体を、DIDコントローラとの関係に基づいて、 互いに素な2つの集合に分類すると有用である。

B.9.1 集合 #1: DID主体はDIDコントローラである

この節は非規範的である。

7に示される最初のケースは、 DID主体DIDコントローラでもある一般的なシナリオである。 これは、個人または組織が自己識別のためにDIDを作成する場合に該当する。


DID主体からDIDコントローラへの同等性の弧を持つグラフモデルを示す図。
7 DID主体は、DIDコントローラと同じエンティティである。 関連項目: 説明的な 記述
図には小さな黒い円が2つあり、左上の1つは"DID Controller"、右上の1つは"DID Subject"と ラベル付けされている。赤い実線の矢印は、DID Controllerの円からDID Subjectの円へ伸び、 矢印の上に大きな太字で"DID"、下に小さな斜体で"Identifies"とラベル付けされている。 "Equivalence"とラベル付けされた赤い点線の両向き矢印は、2つの円の間および上方の空間で 弧を描いて伸びている。図の下部には、角の折れた黒い輪郭の長方形があり、 "DID Document"というラベルを含む。このDID Document長方形とDID ControllerおよびDID Subjectを表す小さな黒い円との間には、斜体ラベル付きの矢印が次のように向かう。 青い矢印はDID DocumentからDID Subjectへ向かい、"Describes"とラベル付けされている。 緑の矢印はDID ControllerからDID Documentへ向かい、"Controls"とラベル付けされている。 緑の矢印はDID DocumentからDID Controllerへ向かい、外向きの弧を描いて "Controller"とラベル付けされている。赤い点線の矢印は"Resolves to"とラベル付けされ、 DID Controllerから右方向に始まり、DID Subjectへの矢印から分岐して下へ曲がり、 DID Documentを指す。

グラフモデルの観点からは、7DIDコントローラおよびDID主体として 識別されるノードは別個であるが、それらを結び付けて意味論上の同等関係を表す論理的な弧が存在する。

B.9.2 集合 #2: DID主体はDIDコントローラではない

この節は非規範的である。

2番目のケースは、DID主体DIDコントローラとは別個のエンティティである場合である。 これは、たとえば、親が子どものためにDIDを作成し、 その制御を維持する場合、企業が子会社のためにDIDを作成し、 その制御を維持する場合、または製造者が製品、IoTデバイス、もしくはデジタルファイルのために DIDを作成し、その制御を維持する場合である。

グラフモデルの観点からは、集合1との唯一の違いは、DID主体DIDコントローラのノード間に同等性の弧の関係が 存在しないことである。

B.10 複数のDIDコントローラ

この節は非規範的である。

DID文書は、複数のDIDコントローラを持つ場合がある。これは2つの方法のうち いずれかで起こり得る。

B.10.1 独立制御

この節は非規範的である。

この場合、各DIDコントローラは単独で行動することが できる。すなわち、それぞれがDID文書を独立して更新する 完全な権限を持つ。グラフモデルの観点では、この構成では:

  • 追加される各DIDコントローラは、別個の 追加グラフノードである(自身のDIDによって識別される場合がある)。
  • DIDコントローラDID文書との間には、同じ弧("controls"および "controller")が存在する。

            3つのDIDコントローラが、それぞれDID文書との独立した
            制御関係を持つことを示す図
8 それぞれが独立して行動できる、複数の独立したDIDコントローラ。 関連項目: 説明的な 記述
左側に3つの黒い円が縦に並び、それぞれ"DID Controller"とラベル付けされている。 これらの各円から、緑の矢印のペアが図の中央、"DID Document"とラベル付けされた 1つの長方形へ伸びている。この長方形は、右下の角が切り取られて内側に折れ、 角がめくれた紙片を表すかのような小さな三角形を形成している。各緑の矢印のペアは、 黒い円から長方形へ向かい"Controls"とラベル付けされた1本の矢印と、反対方向、 すなわち長方形から黒い円へ向かい"Controller"とラベル付けされた1本の矢印で構成される。 長方形の右側からは、"Describes"とラベル付けされた青い矢印が伸び、 "DID Subject"とラベル付けされた黒い円を指す。

B.10.2 グループ制御

この節は非規範的である。

グループ制御の場合、DIDコントローラは、 複数のデジタル署名("multi-sig")またはしきい値数のデジタル署名("m-of-n")を必要とする 暗号アルゴリズムを使用する場合など、何らかの形で共同して行動することが期待される。 証明を検証するためのこれらの追加しきい値は、検証メソッド内で、 第5.2 検証メソッド節で説明されるように 表現できる。または、プライバシー上の理由から、特定のデジタル署名の生成に参加した DIDコントローラの数が隠されるような、 検証メソッドの 検証材料の本質的な一部であり得る。グループのメンバーによって実行される暗号操作の組み合わせに よって証明が生成されることを要求する検証メソッドは、DID文書の内容を制御するために使用できる。 これが正確にどのように実現されるかは、個々のDIDメソッド仕様に依存する。

機能的な観点からは、この選択肢は単一のDIDコントローラに似ている。なぜなら、 DIDコントローラグループ内の各 DIDコントローラはそれぞれ独自のグラフノードを持つが、 実際の制御は、9に示すように、DIDコントローラグループを表す単一の論理グラフノードへ 集約されるためである。


3つのDIDコントローラが、DID文書を制御する単一の
DIDコントローラグループとして共同することを示す図
9 DIDコントローラグループとして共同して行動することが 期待される複数のDIDコントローラ。関連項目: 説明的な記述
左側には3つの塗りつぶされた黒い円があり、左側の波括弧によって"DID Controller Group"と ラベル付けされている。これら3つの円それぞれから、緑の矢印が中央右へ伸びる。 これら3本の矢印は、塗りつぶされた単一の白い円へ収束する。この白い円の右側と、 "DID Document"とラベル付けされた、角のめくれたページの形をした長方形との間を、 水平な緑の矢印のペアが接続する。上側の矢印は白い円から長方形へ右向きに伸び、 "Controls"とラベル付けされている。下側の矢印は長方形から白い円へ左向きに伸び、 "Controller"とラベル付けされている。長方形の右側からは、"Describes"とラベル付けされた 青い矢印が伸び、"DID Subject"とラベル付けされた黒い円を指す。

この構成は、DID主体が 組織、企業、政府機関、コミュニティ、または単一の個人によって制御されないその他のグループである場合に 適用されることが多い。

B.11 DID主体の変更

この節は非規範的である。

DID文書は、DID主体を参照する、正確に1つのDIDを持つ。 DIDは、idプロパティの値として 表現される。このプロパティ値は、DID文書の存続期間中、不変である。

しかし、DIDによって識別される資源、すなわち DID主体が時間とともに変化する可能性はある。 これはDIDコントローラの排他的権限の下にある。 詳細については、8.10 永続性節を参照。

B.12 DIDコントローラの変更

この節は非規範的である。

DID文書DIDコントローラは、時間とともに変化する場合がある。 しかし、それがどのように実装されているかによっては、DID コントローラの変更は、DID文書自体の 変更によって明らかにならない可能性がある。たとえば、その変更が、検証 メソッドの1つ以上に使用される基礎となる暗号鍵またはその他の制御の所有権の移行を通じて 実装される場合、それは標準的な鍵ローテーションと区別できない可能性がある。

一方、その変更が controller プロパティの値を変更することで実装される場合、それは透明である。

DIDコントローラの変更を検証することが重要である場合、 実装者は、改訂されたDID文書内の 検証 メソッドに対して、新しいDIDコントローラ認証することが助言される。

C. 改訂履歴

この節は非規範的である。

この節には、この仕様がW3C First Public Working Draftとして 公開されて以降に行われた変更が含まれている。

DID v1.0 Recommendation以降の変更には、 次が含まれる:

DID v1.0 Second Candidate Recommendation以降の変更には、次が含まれる:

DID v1.0 First Candidate Recommendation以降の変更には、次が含まれる:

DID v1.0 First Public Working Draft以降の変更には、次が含まれる:

D. 謝辞

この節は非規範的である。

ワーキンググループは、議長であるBrent ZundelおよびDan Burnett、ならびに W3C Staff ContactであるIvan Hermanに対し、 ワーキンググループを生産的な方向へ導き続け、標準化プロセスの深く危険な水域を航行するための たゆまぬ尽力について、深い感謝と心からの謝意を表する。

ワーキンググループは、この仕様の作成につながった作業に感謝し、私たちの作業に深い影響を与えた 技術および仕様に取り組んだ個人に対して、誠実な感謝を表する。特に、これには1990年代および 2000年代におけるPhil Zimmerman、Jon Callas、Lutz Donnerhacke、Hal Finney、David Shaw、 Rodney Thayerによる Pretty Good Privacy (PGP)に関する作業が含まれる。

2010年代半ば、後にDecentralized Identifiersとなるものの初期実装は、Jeremie MillerのTelehashプロジェクト、 およびDave LongleyとManu Spornyが主導したW3C Web Payments Community Groupの作業と協力して 構築された。約1年後、XDI.org Registry Working Groupは、 既存の識別子レジストリを置き換えるための分散型技術の 探索を開始した。Decentralized Identifiersの概念を探索した最初期の 文書 論文の 一部は、Christopher Allenによって開催された最初の数回のRebooting the Web of Trustワークショップに 遡ることができる。その作業は、Christopher Allen、Drummond Reed、Les Chasen、Manu Sporny、 Anil Johnの間の重要な協力につながった。Anilはこの技術に可能性を見出し、この領域を探索するための 初期の政府資金を割り当てた。Anil Johnの支援と長年にわたる指導がなければ、Decentralized Identifiersが今日の位置に到達した可能性は低い。Rebooting the Web of Trustワークショップでの さらなる洗練により、Drummond Reed、Les Chasen、Christopher Allen、Ryan Grantが編集した 最初の 実装者向け文書が生まれた。貢献者にはManu Sporny、Dave Longley、Jason Law、Daniel Hardman、Markus Sabadello、Christian Lundkvist、Jonathan Endersbyが含まれた。この初期作業はその後、W3C Credentials Community Groupに統合され、さらにインキュベートされ、最終的にグローバル標準化のために W3C Decentralized Identifiers Working Groupへ移行した。

この仕様に関する作業の一部は、United States Department of Homeland Security's (US DHS) Science and Technology Directorateから、契約HSHQDC-16-R00012-H-SB2016-1-002およびHSHQDC-17-C-00019の下で、 ならびにUS DHS Silicon Valley Innovation Programから、契約70RSAT20T00000010、70RSAT20T00000029、 70RSAT20T00000030、70RSAT20T00000045、70RSAT20T00000003、および70RSAT20T00000033の下で 資金提供を受けた。この仕様の内容は、必ずしもU.S. Governmentの立場または政策を反映するものではなく、 公式な承認を推定すべきではない。

この仕様に関する作業の一部は、European UnionのStandICT.euプログラムから、サブグラント契約番号 CALL05/19の下でも資金提供を受けた。この仕様の内容は、必ずしもEuropean Unionの立場または政策を 反映するものではなく、公式な承認を推定すべきではない。

この仕様に関する作業は、Christopher Allen、Shannon Appelcline、Kiara Robles、Brian Weller、Betty Dhamers、Kaliya Young、Kim Hamilton Duffy、Manu Sporny、Drummond Reed、Joe Andrieu、Heather Vescentが促進したRebooting the Web of Trustコミュニティによっても支援された。 この仕様の開発は、Kim Hamilton Duffy、Joe Andrieu、Christopher Allen、Heather Vescent、 Wayne Changが議長を務めたW3C Credentials Community Groupによっても支援された。Phil Windley、Kaliya Young、Doc Searls、Heidi Nobantu Saulが促進したInternet Identity Workshopの参加者も、この仕様について 議論し、改善し、参加者を教育するために設計された多数の作業セッションを通じて、この作業を支援した。

ワーキンググループは、次の個人のこの仕様への貢献に感謝する(アルファベット順、Githubハンドルは @で始まり、姓としてソートされている): Denis Ah-Kang, Nacho Alamillo, Christopher Allen, Joe Andrieu, Antonio, Phil Archer, George Aristy, Baha, Juan Benet, BigBlueHat, Dan Bolser, Chris Boscolo, Pelle Braendgaard, Daniel Buchner, Daniel Burnett, Juan Caballero, @cabo, Tim Cappalli, Melvin Carvalho, David Chadwick, Wayne Chang, Sam Curren, Hai Dang, Tim Daubenschütz, Oskar van Deventer, Kim Hamilton Duffy, Arnaud Durand, Ken Ebert, Veikko Eeva, @ewagner70, Carson Farmer, Nikos Fotiou, Gabe, Gayan, @gimly-jack, @gjgd, Ryan Grant, Peter Grassberger, Adrian Gropper, Amy Guy, Daniel Hardman, Kyle Den Hartog, Philippe Le Hegaret, Ivan Herman, Michael Herman, Alen Horvat, Dave Huseby, Marcel Jackisch, Mike Jones, Andrew Jones, Tom Jones, jonnycrunch, Gregg Kellogg, Michael Klein, @kdenhartog-sybil1, Paul Knowles, @ktobich, David I. Lehn, Charles E. Lehner, Michael Lodder, @mooreT1881, Dave Longley, Tobias Looker, Wolf McNally, Robert Mitwicki, Mircea Nistor, Grant Noble, Mark Nottingham, @oare, Darrell O'Donnell, Vinod Panicker, Dirk Porsche, Praveen, Mike Prorock, @pukkamustard, Drummond Reed, Julian Reschke, Yancy Ribbens, Justin Richer, Rieks, @rknobloch, Mikeal Rogers, Evstifeev Roman, Troy Ronda, Leonard Rosenthol, Michael Ruminer, Markus Sabadello, Cihan Saglam, Samu, Rob Sanderson, Wendy Seltzer, Mehran Shakeri, Jaehoon (Ace) Shim, Samuel Smith, James M Snell, SondreB, Manu Sporny, @ssstolk, Orie Steele, Shigeya Suzuki, Sammotic Switchyarn, @tahpot, Oliver Terbu, Ted Thibodeau Jr., Joel Thorstensson, Tralcan, Henry Tsai, Rod Vagg, Mike Varley, Kaliya "Identity Woman" Young, Eric Welton, Fuqiao Xue, @Yue, Dmitri Zagidulin, @zhanb, and Brent Zundel.

E. IANAに関する考慮事項

この節は、この仕様がW3C Proposed Recommendationになった時点で、 IANAでのレビュー、承認、および登録のためにInternet Engineering Steering Group(IESG)へ提出される。

E.1 application/did

型名:
application
サブタイプ名:
did
必須パラメータ:
なし
任意パラメータ:
なし
エンコーディングに関する考慮事項:
RFC 8259、第11節を参照。
セキュリティに関する考慮事項:
DID Core v1.1、Security Considerationsを参照。
相互運用性に関する考慮事項:
該当なし
公開仕様:
https://www.w3.org/TR/did/
このメディアタイプを使用するアプリケーション:
分散型、永続的、暗号学的に検証可能、かつ解決可能な識別子を必要とする任意のアプリケーション。 アプリケーションは通常、暗号学的アイデンティティシステム、デバイスの分散型ネットワーク、 および検証可能クレデンシャルを発行または検証するWebサイトで構成される。
追加情報:
マジックナンバー:
該当なし
ファイル拡張子:
.did
Macintoshファイルタイプコード:
TEXT
詳細情報の連絡先メールアドレス:
W3C Decentralized Identifiers Working Group public-did-wg@w3.org
意図される用途:
一般
使用上の制限:
なし
著者:
Drummond Reed, Manu Sporny, Markus Sabadello, Dave Longley, Christopher Allen
変更管理者:
W3C

JSON-LD環境で使用されるフラグメント識別子は、 JSON-LD 1.1: application/ld+json media type [JSON-LD11] に関連付けられた規則に従って扱われる。 JSON環境で使用されるフラグメント識別子は、JSON-LD環境のものと同じ意味論上の解釈を持つ。 フラグメント解決を実行するためのアルゴリズムは、Controlled Identifiers v1.0仕様の 第3.4節: Fragment Resolutionで 提供されており、これはDecentralized Identifiers (DIDs) v1.1仕様によって拡張される。

F. 参考文献

F.1 規範的参考文献

[CID]
Controlled Identifiers v1.0. Michael Jones; Manu Sporny. W3C. 2025年5月15日. W3C Recommendation. URL: https://www.w3.org/TR/cid-1.0/
[DID-CORE]
Decentralized Identifiers (DIDs) v1.0. Manu Sporny; Amy Guy; Markus Sabadello; Drummond Reed. W3C. 2022年7月19日. W3C Recommendation. URL: https://www.w3.org/TR/did-core/
[INFRA]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[JSON-LD11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 2020年7月16日. W3C Recommendation. URL: https://www.w3.org/TR/json-ld11/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997年3月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC3552]
Guidelines for Writing RFC Text on Security Considerations. E. Rescorla; B. Korver. IETF. 2003年7月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc3552
[RFC3986]
Uniform Resource Identifier (URI): Generic Syntax. T. Berners-Lee; R. Fielding; L. Masinter. IETF. 2005年1月. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc3986
[RFC5234]
Augmented BNF for Syntax Specifications: ABNF. D. Crocker, Ed.; P. Overell. IETF. 2008年1月. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc5234
[RFC6838]
Media Type Specifications and Registration Procedures. N. Freed; J. Klensin; T. Hansen. IETF. 2013年1月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc6838
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017年5月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[RFC8259]
The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed. IETF. 2017年12月. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc8259
[URL]
URL Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://url.spec.whatwg.org/
[XMLSCHEMA11-2]
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes. David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron et al. W3C. 2012年4月5日. W3C Recommendation. URL: https://www.w3.org/TR/xmlschema11-2/

F.2 参考情報としての参考文献

[DID-1.1]
Decentralized Identifiers (DIDs) v1.1. Manu Sporny; Dmitri Zagidulin. W3C. 2026年2月21日. W3C Working Draft. URL: https://www.w3.org/TR/did-1.1/
[DID-EXTENSIONS]
Decentralized Identifier Extensions. Manu Sporny; Markus Sabadello. W3C. 2025年12月11日. W3C Working Group Note. URL: https://www.w3.org/TR/did-extensions/
[DID-RESOLUTION]
Decentralized Identifier Resolution (DID Resolution) v0.3. Markus Sabadello; Dmitri Zagidulin. W3C. 2026年2月8日. W3C Working Draft. URL: https://www.w3.org/TR/did-resolution/
[DID-RUBRIC]
DID Method Rubric v1.0. Joe Andrieu; Daniel Hardman. W3C. 2021年11月19日. W3C Working Group Note. URL: https://www.w3.org/TR/did-rubric/
[DID-USE-CASES]
Use Cases and Requirements for Decentralized Identifiers. Joe Andrieu; Phil Archer; Kim Duffy; Ryan Grant; Adrian Gropper. W3C. 2021年3月17日. W3C Working Group Note. URL: https://www.w3.org/TR/did-use-cases/
[DNS-DID]
The Decentralized Identifier (DID) in the DNS. Alexander Mayrhofer; Dimitrij Klesev; Markus Sabadello. 2019年2月. Internet-Draft. URL: https://datatracker.ietf.org/doc/draft-mayrhofer-did-dns/
[IANA-URI-SCHEMES]
Uniform Resource Identifier (URI) Schemes. IANA. URL: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
[MATRIX-URIS]
Matrix URIs - Ideas about Web Architecture. Tim Berners-Lee. 1996年12月. Personal View. URL: https://www.w3.org/DesignIssues/MatrixURIs.html
[PRIVACY-BY-DESIGN]
Privacy by Design. Ann Cavoukian. Information and Privacy Commissioner. 2011. URL: https://iapp.org/media/pdf/resource_center/pbd_implement_7found_principles.pdf
[RFC6901]
JavaScript Object Notation (JSON) Pointer. P. Bryan, Ed.; K. Zyp; M. Nottingham, Ed. IETF. 2013年4月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc6901
[RFC6973]
Privacy Considerations for Internet Protocols. A. Cooper; H. Tschofenig; B. Aboba; J. Peterson; J. Morris; M. Hansen; R. Smith. IETF. 2013年7月. Informational. URL: https://www.rfc-editor.org/rfc/rfc6973
[RFC8141]
Uniform Resource Names (URNs). P. Saint-Andre; J. Klensin. IETF. 2017年4月. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8141
[RFC9110]
HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed. IETF. 2022年6月. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[VC-DATA-MODEL]
Verifiable Credentials Data Model v2.0. Ivan Herman; Michael Jones; Manu Sporny; Ted Thibodeau Jr; Gabe Cohen. W3C. 2025年5月15日. W3C Recommendation. URL: https://www.w3.org/TR/vc-data-model-2.0/