DIDの基本
こんにちは!Recept代表の中瀬です。
今日はDIDについて書いてみようと思います。
DIDとは
SSIを実現するために新しく提唱された、「グローバルにユニークなID」です。
DIDは以下のような形式をしています。
did:example:123456abcdef…
Schemeは、URIで表現される識別子の種類を指すもので、DIDの場合は常にdidとなります。
DID Methodは、レジストリに対する読み書きなどの操作の方式を定めています。
DID Method-Specific Identifierは、一意のIDを示します。
DIDの役割をより詳細に言うと、「DIDサブジェクトとDIDドキュメントを関連付けるURI」となります。
DIDの特徴
DIDはW3Cによって提唱されるもので、W3Cは以下のようにDIDの設計目的を表しています。
【翻訳バージョン】
・分散化
グローバルに一意な識別子、公開検証キー、サービス、その他の情報の登録を含む、識別子管理における中央集権的な当局や単一障害点の要件を排除する。
・コントロール
人間であれ非人間であれ、エンティティに、外部当局に依存することなく、デジタル識別子を直接コントロールする力を与える。
・プライバシー
エンティティが、属性やその他のデータの最小限の開示、選択的な開示、段階的な開示など、情報のプライバシーを管理できるようにする。
・セキュリティ
要求者が要求される保証レベルをDID文書に依存するのに十分なセキュリティを可能にする。
・証明ベース
DID管理者が他のエンティティとやりとりする際に、暗号学的証明を提供できるようにする。
・発見可能性
エンティティが他のエンティティのDIDを発見し、それらのエンティティの詳細を知ったり、それらのエンティ
・相互運用性
相互運用可能な標準を使用し、DIDインフラストラクチャが、相互運用性のために設計された既存のツールやソフトウェアライブラリを利用できるようにする。
・移植性
システムおよびネットワークに依存せず、DIDおよびDIDメソッドをサポートするあらゆるシステムで、エンティティがデジタル識別子を使用できるようにする。
・単純性
技術を理解し、実装し、展開しやすくするために、単純な機能のセットを減らす。
・拡張性
相互運用性、移植性、単純性を大きく妨げない限り、可能な限り拡張性を認める。
DIDがどのように活用されるのか
「DIDが新しいIDみたいなものってことは分かったからどう使われるのか教えてくれ!」
という感じだと思うので、実際にSSIなシステムでどのようにDIDが活用されるかを見ていきましょう。
例えば、A大学の卒業証書のVC(VCについては別記事で解説するので、一旦デジタルデータくらいの認識で)を交付してもらい、次の就職先に卒業証書のデータを提出するシナリオとします。
まず、卒業証書の保持者(生徒)にはDIDという識別子が与えられます。これは通常システムの利用開始時などで与えられます。
このDIDと一緒にDIDドキュメントがレジストリに登録されます。
レジストリはDIDではブロックチェーンで語られることが多いですが、ブロックチェーンでなくても何かしらの保管場所になります。
DIDドキュメントには保持者の公開鍵とDIDが書いてあります。
このように外部に公開されるレジストリにDIDと公開鍵をのみを置くことで、保持者は自分の氏名や大学名、年齢などを公開することなく他者に自分がA大学出身であることを証明することができるのです。
では、例えばB会社がこの保持者がもつ卒業証明書を確認したいときはどのようにするのでしょうか。
B会社は保持者からVCの提示を受けます。VCが交付されるときに、A大学はA大学の秘密鍵で署名がされています。
A大学の公開鍵は保持者と同様にレジストリに保存されているので、A大学の公開鍵を用いて保持者に提出されたVCの署名を検証します。
これで保持者が偽装していないことがわかりますし、A大学出身であることも検証できます。
この仕組みでは、B会社とA大学の間にやりとりがありません。
本来であれば、保持者が本当にA大学出身かを知るためにはA大学に問合わせる必要がありましたが、DID/VCを使った検証ではその必要はないのです。
この仕組みで何がよくなるの?
・検証の際に発行者に直接問い合わせる必要がない。
・保持者しかVCを持っていない。つまり個人情報は保持者しか持ちえない。(システムによってはアカウント登録など、検証の際に個人情報を一部検証者に渡す場合もあります)
・発行者(大学)がなくなってもデータは生き続ける。(ブロックチェーンの場合)