DIDとは
XSL Labsは、分散型ID(Decentralized Identity)であるSDIを開発する。ここでは、DIDのような新たなツールの性質や技術的な特性、将来的なユースケースについて読者の理解を深めるため、一連の記事でそれぞれ異なる側面から議論を行っていく。Web3.0において、もっとも革新的である一方で、まだあまり知られていないこのツールに光を当てていきたい。
まず最初に、DIDはまだ初期の段階にあり、この記事において紹介された機能は、出来るだけ一般的なものであることを意図している。そのため、紹介されたものの異種となる技術や、全く異なる技術を使用しているDIDもあるかもしれない。
この記事の目的は、読者が分散型IDの基本的な原則を理解することであり、様々な種類のDIDにおける差異にはこだわらない。また、この記事は技術的な詳細をまとめたものを意図しているわけではなく、一般的な情報を伝える記事であり、多くの人々への読みやすさを目的としている。
私たちは、XSL Labsのプロジェクトをサポートする全ての人々に、我々が構築しようとしている安全なデジタルID、DIDの機能について、分かりやすく説明するためにこの記事を制作した。
記事では、分散型IDの概念に慣れ親しんでもらい、IDソリューションがもたらすものや「インターネットの明日」において分散型IDがもたらすユースケースについて紹介していきたい。
ブロックチェーン、非中央集権化とデータセキュリティ
W3Cによると、分散型識別子、あるいはDIDとは、「分散型台帳技術(DLT)やその他分散型ネットワークによって登録されることで、中央集権型の登録機関を必要としないグローバルに固有な識別子」とされる。
既存のID管理システムは、彼らのサービスの全ユーザーのIDデータを、大きなデジタル保管庫と表現できる「巨大な中央集権型のデータベース」で保管しており、中央集権型の組織に依存している。また、それらの保管庫を守る様々なセキュリティシステムにもかかわらず、どれ一つとして強靭なハッカーの攻撃には耐えられない。
銀行の保管庫のように何千もの預金者からなる預金を一つの場所に置けば、もし攻撃者が保管庫を守るシステムを打ち破る方法を見つけた場合、彼らは一つの場所で管理しているため、全ての預金へアクセスができる。同様に、中央集権型のデータベースを攻撃するインターネットのハッカーは、一回の試みで多くのユーザーのあらゆるデータを取得するチャンスがある。
DIDの中核技術であるブロックチェーンは、識別可能なエンティティのID情報を分散化することによって、我々をこの中央集権型のID管理から解放する。このシステムでは、エンティティは分散型識別子(DID)によって識別され、様々な証明(デジタル署名、KYCのようなプライバシー保護の生体認証プロトコルなど)によって認証される。また、データは様々な種類の分散型サーバーによって保管される。
さらに、ハッカーは分散型ネットワークで暗号化されたデータと特定のユーザーを結び付けることは決してできない。このデータを復号できるエンティティは、データを復号化するのに必要なキーをただ一人持っているDIDの本人だ。
このため、個人のIDデータを手に入れて、それを売るか、あるいは違法な使い方をしようとしているハッカーは、ユーザー個人のデバイスに侵入することでしかできなくなる。このプロセスでは、タスクの複雑さと実行時間に対して、得られる利益が少なすぎる結果に終わるだろう。それはまた、全ての顧客の預金が保管された単一の銀行の金庫のセキュリティシステムを突破した場合と同じ利益を得るために、泥棒がそれぞれの家に侵入し個人の金庫を探し、それらを一つ一つ開けていかなければならないようなものだ。
また、分散化は、情報が不変に保たれることを可能にする。もし、ハッカーが集権型のサーバーで情報を手に入れられたら、保存されているサーバーで自由にデータを修正することも可能だ。これは、ブロックチェーンのおかげで不可能となっている。情報は違うブロックでも手に入るため、もしそれらの中の一つが手を加えられたとしても、他すべてが不正な情報を取り入れることに異を唱え、真の情報を復元することができる。
次のセクションでは、DIDのベースとなる技術について議論する。特に、証明可能な証明や公開鍵暗号の概念を取扱う。
DIDテクノロジーとは
DIDは、URI(Uniform Resource Identifier)の特別な種類であり、特有の識別子を構成する文字列がそれぞれのユーザーに割り当てられる。SYLメソッドを用いたDIDの例は“did:syl:6fb56ca533abb42”といった形になる。
この識別子は証明の発行者によって作られたその人物に関する全ての認証が結びつけられ、ユーザーのウォレットIDやIPFSの分散されたサーバーで保存される。
検証可能な証明と公開鍵暗号
これらの文書は検証可能な証明(Verifiable Credentials)と呼ばれ、全てのエンティティがDIDの本人に関する認証の検証を求めることができる。つまり、DIDの保有者はそれらが正確であることを検証できる。DID本人に関する認証は、信任を得た信頼されたサードパーティーによって作成されるかもしれない。
これは、情報の信用の連鎖とみなすことができる。この鎖を基に、国家機関、学校、病院、企業といった信頼される情報発行者のリストを作成することも可能だ。
作成される当初のDIDは、それら(リスト内)のものになり、その後、それらの機関は他のDIDユーザーへの彼ら自身の情報が含まれた検証可能な証明を発行することが出来るようになる。さらにその後、検証可能な証明を受け取ったDIDユーザーは、信頼できる情報として自身の持つ情報を提出できるようになり、検証され、他のDIDユーザーが検証可能になる。
発行体の一つによって発行される証明は、公開鍵、秘密鍵のシステムに関わる信頼されたサードパーティーによる暗号証明を添えることによって検証可能になる。これらの鍵は一方向暗号関数を通した情報の暗号化を可能にする。
このような関数によって、二つある鍵のもう片方を知らないと複合することが出来ない、数学的関数の二つの鍵の一つを使って情報を暗号化することが容易だ。
DIDのケースでは、DIDを持つそれぞれのエンティティは、公開鍵という、DIDドキュメントと呼ばれるスマートコントラクトで求められる鍵と、秘密鍵と呼ばれる、DID本人だけが保有しておく鍵を持つ。
暗号ハッシュ関数
証明に署名するには、本人であることを確かめるための、二つのプロセスがある。それが公開鍵暗号の使用と、暗号ハッシュ関数だ。
ハッシュ関数は一方向の関数で、データのセットを表すバイト(ハッシュ)の並びを得るために使用される。どの最初のデータセットでもハッシュは常に同じだ。デジタル署名においては、私たちは特に暗号ハッシュ関数に関心をもっている。これらは、他のセットと同じハッシュを与えるデータセットを作成する可能性が著しく低い。よって、この関数を文書の整合性を確認するために使用する。
暗号ハッシュ関数と非対称性公開鍵暗号の組み合わせによって、署名の5つの特性(本物、偽造耐性、再利用付加、改変不可、回復不可)を確保することが出来る。
暗号署名の例
例えば、エンティティAは、DIDユーザーBに発行された証明の発行者であり著者であることを、暗号署名を添えることで保証したいと考えている。
エンティティAはハッシュ関数を用いて証明を含むドキュメントのハッシュを生成し、秘密鍵を使ってこのハッシュを暗号化する。エンティティAは、ドキュメントの終わりに添えられたドキュメントの署名を得て、ユーザーBにドキュメントを送る。
ドキュメントを検証するには、BはAの公開鍵を使って署名を復号しなければならない。もしこれが上手くいかなかったら、ドキュメントはAから送られたものではない。
上手くいけば、BはAの署名がある受け取った文書のハッシュを生成しなければならず、それはAが使用したハッシュ関数を用いる。生成されたハッシュと署名からのハッシュを比較する。
もしこの二つのハッシュが同一だったら、署名は検証されたことになり、Aが送った文書は署名されて以降改変されていないことが確かめられる。
そして、この暗号署名は、紙と同等の、本物であることの証明における法的な価値を持つ。
DIDテクノロジーに関するこの新しい知識が得られたところで、次の記事では、DIDを使用してユーザーのデータの分散を回避する方法と、なぜDIDが巨大インターネット企業に対する強力な対抗手段となるかについて説明する。
XSL LabsのSDIの詳細については、Webサイトwww.xsl-labs.org を参照できる。XSL Labsによって開発されたエコシステム、およびプロジェクトのホワイトペーパーを紹介するビデオと説明が記載されている。
関連:ゲーム業界と非中央集権型デジタルID(DID)の相性とは|XSL Labs寄稿