分散型IDとは(後編)
前回の記事では、私たちはDIDの様々なユースケースを提示しました。本記事では、DIDが問題を解決する仕組みについて技術的な解説を行っていきます。
また、続いて、DIDがどのようにして、インターネットの巨人に対して対抗する存在になり得るのかを説明していきます。
関連:DID(分散型ID)とは 将来的なユースケースを解説【前編】|XSLラボ寄稿
(本記事はXSL LabsのDIDに関する記事のPart2・3を基にしているため、前半部分については前編と重複する内容があります)
今回は、DIDに使われている、暗号署名や公開鍵暗号、証明可能な証明(Verifiable Credentials)などについて紹介していきます。
DIDは統一資源識別子(URI)の特殊なタイプであり、各ユーザーに一連の文字から構成される匿名IDを割り当てることが出来ます。SYLメソッドを使用すると次のようになります。「did:syl:6fb56ca533abb42」。この識別子は証明の発行者が主張する内容にリンクされ、ユーザーのウォレットIDまたはIPFSの分散型サーバーに格納されます。
検証可能な証明と公開鍵暗号方式
これらの文書は検証可能な証明とよばれ、DIDの保有者による申し立ての検証を必要とする全てのエンティティが、その主張が正確であることを検証できるようになります。
DID保有者に関する主張は、信頼されたサードパーティーが代わりに行うことも可能です。これを情報の信頼が連鎖していると捉えることも可能です。この連鎖から、国家機関、学校、病院、企業などの信頼できる情報発行者のリストを作成することが出来ます。
最初のDIDは彼らのものでなければなりません。彼らはその後他のDIDユーザーに、彼ら自身に関する情報が含まれた検証可能な証明を発行することが可能になります。検証可能な証明はそのようにして、検証済みであり且つユーザーが検証可能な信頼できる情報を提示することが可能になります。
これらの発行者による証明書は、信頼された第三者による暗号署名によって検証可能になり、公開鍵・秘密鍵の仕組みが関わっています。これらの鍵は一方向性暗号を用いて情報の暗号化を可能にし、二つの鍵のうち一方の鍵に含まれる関数によって簡単に暗号化することが出来ます。同時に、もう一つの鍵を知らなければ、復号化することはできません。
DIDの場合、DIDを持つ各エンティティは、DIDドキュメントと呼ばれるスマートコントラクトで誰もが参照できる公開鍵と、DID保有者のみが保有する秘密鍵があります。
暗号化ハッシュ関数
証明書に署名するには、その正しさを保証するために、公開鍵暗号方式と、暗号ハッシュ関数という二つのプロセスが関わります。
ハッシュ関数とは、データを特徴づけるハッシュを得るために利用される一方向性の関数です。最初のデータセットがどのようなものであっても、結果として得られるハッシュは常に同じです。
デジタル署名では、特に暗号化されたハッシュ関数に着目しています。ハッシュ関数は、別のデータセットが同じハッシュを生成することが極めて低い可能性であることを保証するため、この関数を利用し、文書の完全性を確保することが可能です。暗号ハッシュ関数と非対称公開鍵暗号を組み合わせ、署名の5つの特徴である真正性、偽造防止、再利用不可、変更不可、取消不可を確保できます。
暗号署名の例
例えば、エンティティAはDID対象者Bに発効された証明の作成者および発行者であることを暗号署名を足すことで保証したいとします。
エンティティAはハッシュ関数を用いて証明を含むドキュメントのハッシュを生成し、このハッシュを秘密鍵を用いて暗号化します。エンティティAは、その文書の署名を取得し、文書の末尾に添付してから、DID保有者Bに送信します。
文書の正当性を確認するには、BはAの公開鍵を用いて署名を復号する必要があります。仮にこれがうまくいかない場合、そのドキュメントはAによって送信されたものではないということができます。
復号出来た場合、BはAが使用したのと同じハッシュ関数を使用して、Aの署名が平文出含まれている該当の文書のハッシュを生成します。
二つのハッシュが同一であれば、署名が検証され、Aが文書を送信したこと、署名後に修正が行われていなことが確認できます。この暗号署名は、紙の文書と同様に、文章を認証する法的価値を持つことになります。
続いて、DIDがどのようにして、インターネットの巨人に対して対抗していけるのかを説明していきます。
IDデータの散逸対策
サービスがDID保有者の特定のID情報を必要とする場合、検証可能な提示(Verifiable Presentation)と呼ばれる新しい検証可能な証明が発行されます。
この新しいタイプの証明は、一人以上の発行者が発行した、一つ以上の検証可能証明から抽出された、一つ以上のデータで構成されます。これには、暗号署名が施され、文書のみが情報を必要とする検証者と共有されます。
DID保有者はどのデータを共有したいかを選択するただ一人の存在になるため、共有される情報の範囲を完全に管理することが出来ます。
また、DID保有者は、自分のID情報が検証を要求するサービスの要件を満たしているか検証されている間は情報を開示しないことも可能です。
これらの新しい検証可能な証明あるいは検証可能な提示は、生年月日を含む証明書から、DID保有者の生年月日が特定の日付の前或いは後であることを、生年月日そのものを含まずに組み合わせることが出来るゼロ知識証明になります。
対抗勢力としてのDID
非中央集権的な認証情報は、FacebookやGoogleのようなインターネットの巨人が持つ力を弱めることにもなります。
これらの企業は、インターネット上でのユーザーの活動、データ、プライバシーをコントロールし、それらを利益や政治的目的のために利用しています。
このような個人データの集中化は、プライバシーとは相容れないものであり、GoogleやFacebookによって生活のありとあらゆる側面が支配されるという危険性があります。
IDを提供するサードパーティーサービスもまた、同様にユーザーの認識なしに彼らをサービスのデータベースがハッキングされるリスクにさらしながら、集権的なアカウントからデータを収集します。また、サードパーティーは、この種の攻撃に備えているテックジャイアントよりもさらに危険でもあります。
このように接続アカウントが一本化されることで、ユーザーはハッカーによるデータの盗用、データを預かる側の力が高まるという二重リスクにさらされています。
DIDはその分散化とユーザーが自分のアイデンティティに対して主権を持つことで、自分の情報がどのように使用されるかを選び取ることが出来、巨大企業に対抗する重要な力になっていきます。
DIDはユーザーが全てのサービスに接続出来る単一の識別子の実用性と、ユーザーのデータのセキュリティを兼ね備えています。DIDが社会的に重要になるにつれて、インターネット上の私たちのアイデンティティはますます安全なものになるでしょう。
XSL LabsのSDIは既存のDIDと同様に使用でき、相互運用が可能です。最終的に、多くの人が分散型の識別子を利用するようになれば、自分自身がDIDを所有していなければ情報へのアクセスを要求することはできなくなり、詐欺やデータ盗用といったリスクはゼロに近づくでしょう。
XSL LabsのSDIの詳細については、Webサイトwww.xsl-labs.org を参照できます。XSL Labsによって開発されたエコシステム、およびプロジェクトのホワイトペーパーを紹介するビデオと説明が記載されています。
関連:DID(分散型ID)とは 将来的なユースケースを解説(前編)|XSL Labs寄稿