What is DID?
政府官邸が主導するデジタル市場競争会議(第4回)において中期展望レポートが公表され、Society5.0におけるデジタル市場のあり方として、我が国が今後目指すべき方向性の中で、DID(分散型ID)への言及がなされた。
レポートでは、短期的にはデジタルトランスフォーメーション(DX)、そして中長期の取り組みとして、アーキテクチャ自体のリデザイン、すなわち現行のインターネット構造の上に「データ・ガバナンス」レイヤーを追加し、データ社会における「信頼」を再構築したTrusted Webを実現する事を目指すとされ、IDの設計はその中核となるだろうと示されている。
以下の抜粋を読めば、DIDは大変便利なものになりそうだと分かる。すでに世界経済フォーラムではデジタルIDの議論やDIDを使ったパスポートの電子化などのパイロットプロジェクトなども進んでおり、これから分散型IDの議論がますます活発になってゆくであろうと予想される。
分散型 IDにおいては、IDの発行主体が個人 (あるいは法人・デバイス)となる。個人が管理するこの IDに複数の IDを紐づけることで、各種サ ービスの利用用途に応じた情報の提供など、分散管理されたパーソナル・データのアクセスをコントロールすることが可能となる。
また、トラストアンカーとなるマイナンバーカード(公的個人認証)や法人番号を紐づけることで公的サービスの利用を促進することや、本人確認用 IDと結びつけることでKYC(Know Your Customer)済みIDとしてあらゆるサービスのログインに用いるなど、サービスごとの本人確認の手間を削減できる可能性がある。
ID はあらゆるサービスの利用と帰属するデータの管理・利活用の鍵となり、 Trusted Webの中核となり得るものである。
本稿では、こうしたデジタルIDの議論の土台となるよう、DIDの国際的な枠組みに触れ、その中で積極的に取り組むMicrosoftのプレゼンテーションから技術的な背景を学び、実際にDIDを作成して使えるデモを紹介してゆく。
DIF
設立根拠
DID(分散型ID)は、Decentralized Identity Foundation (DIF)が中心となって進めている分散型ID基盤。メンバーシップによって構成され、米国IRSの501(c)(6) tax codeによる免税を受ける非営利組織。
501(c)(6)組織の例
- Chambers of Commerce
- Trade Associations
- Real estate Boards
- Professional associations
- Pro Football leagues
- Boards of trade
- Business leagues
DIFメンバー(抜粋)
Consensys, Microsoft, IBM, Accenture, RSA, MasterCard, Enterprise Ethereum Alliance, NEC, Sovrin
活動内容
DIDのオープンなエコシステムと参加者すべてのインターオペラビリティを達成するための基盤を整備する。具体的には次の3ステップを取る。以下でSidetree, ION, Elementについて説明する。
- Technical Specifications (Sidetree)
- Reference Implementations(ION, Element)
- Industry Coordination
ワーキンググループ
以下の6つのワーキンググループに分かれて活動が行われている。本稿では5に着目して掘り下げてゆく。
- Identifiers and Discovery
- Authentication
- Claims and Credentials
- DID Communication
- Sidetree Development & Operating Group
- Secure Data Storage
Sidetree, ION, Element
W3CのDIDに準拠するMethod(Create/Read/Update/Deactivate)などに関して、Sidetreeでより詳細な要件であるSpecを決め、それをBitcoin blockchain上に展開したのがION、Ethereum blockchain上に展開したのがElement。
Sidetreeはどのようなブロックチェーンにも適用できるようにDIDの取り扱いに関する一般的な要件を定めている。
IONとElementはスケーラブルなLayer 2オーバーレイネットワークとしてDIDを作成、管理できる。
ION, Element以外にもSovrin(世界経済フォーラムのデジタルIDパートナー)など多くのプロジェクトがSidetreeプロトコルを実装したDIDサービスを提供しており、それらを一元的に扱えるUniversal Resolverもある。
IONの紹介
IPFS Community Meetup (Wed, June 17th)にてMicrosoftのDaniel Buchner氏(Sidetree working group chair)によるIONとSidetreeの紹介があり、興味深い内容だったので抜粋してゆく。エネルギーに満ちた素晴らしいプレゼンテーションなので、ぜひ動画でも見て頂きたい。
ION(アイオン)はMicrosoftがコントリビュートを始めたもので、スケーラブルなDIDを実現しようとしています。
DIDとは、これからW3Cで標準化される予定のもので、URIに似た形のstring文字列をDIDとして使えるようにどのように表現するべきかなどが定められています。
DIDはDecentralizedバージョンのEメールアドレスやユーザー名だといえます。ユーザーはいくつものIDを作ることができ、それは企業や組織によって所有されるものではありません。
DIDは鍵と外部サービスへのエンドポイントが結びつけられており、DNSのように働きます。DNSには、ドメイン名やDNSゾーンファイルや、セキュリティ面においてはCertificate Authority(CA: 認証局)のシステムがあります。
IONではこうしたDNSの仕組みから中央の機関や当局を取り除きます。これは非常に大切なことだと考えます。個人がIDを所有することは、Decentralized Web TechnologyやDAppsの素晴らしいメリットを活用できるようにするからです。とりわけ、人生に関わるようなセンシティブな情報や証明などを企業がコントロールするユーザーIDにすべて結びつけることは人権やモラルの問題にも繋がりかねません。
私達はもっと強くてcensorship resistantなシステムを構築したいと考えました。IONはSidetree protocol(これは適用するBlockchainを選ばないプロトコルです)に従って、Bitcoinの上に作られています。そして、IPFSをキーコンポーネントとして使っています。
なぜ我々MicrosoftがIONを作ろうと思ったのでしょうか?まず、W3Cの定義にしたがって単純にDIDを作って使い捨てるようなものであれば誰にでもごく簡単に作ることができます。しかし我々は、DIDに結びついている鍵を交換したり、エンドポイントを変更したりでき、かつスケーラブルなDIDシステムを構築して世界に受け入れられるようにしたいのです。
分散化、スケーラビリティ、セキュリティの3つすべてを最大限に満たすようにしたいと考えています。
スケーラビリティに関して、我々以外のDIDにはもっと簡単なものもあり、企業や政府のみにDIDを割り当てて、個人が使えないようなものもあります。確かにそれなら数十億から数百万にスケールダウンさせることができるかもしれませんが、我々は違った方法をとります。
我々はすべての人々がIDを持ち、分散型のソーシャルサービスなどに使えるようにしたいと考えています。つまり、数十億人が使えるようなシステムを考える必要があるということです。これは、我々Microsoftにとっては現実の問題なのです。すでに数十億のユーザーを抱えているため、リリース初日からこうしたスケールでサービスを提供しなければなりません。
また、DIDは人間に限った話ではありません。それはデバイスでも構わないし、仮想エンティティを代表するものとしてDIDを使うこともできます。
IONではDIDを使ったDecentralized Public Key Infrastructure (DPKI)を構築します。では、何が求められているのでしょうか?Blockchainはいうまでもありませんが、グローバルで不可変で、追加のみできるログが必要です。つまりステートの変化を記録しておく必要があります。例えばAliceが自分のDIDを作成したときはState 1で、彼女は携帯電話にある公開鍵や、自分の個人データの置いてある外部エンドポイントとDIDを結びつけたりします。もし電話を買い替えた場合は、キーを交換したいでしょうし、このようなステート変更の履歴を誰もが安全に確認できるような、グローバルなログが欲しいでしょう。また現在の中央集権システムによるPKIで保証できる以上の耐検閲性を実現します。
大きなポイントとして、PKIおよびDPKIにおける問題は、ブロックチェーンが解決するような二重支払いの問題とは性質が異なるということです。つまり、DID自身のレイヤーにおいては新たなコンセンサスメカニズムやブロックチェーンは必要でないということです。必要なことは、変更履歴が正確であるということです。ブロックチェーンのようにステートの変更が正確に反映される必要があるものの、Aliceは自身のIDを消費したり、暗号通貨のように売買に使用されることはありません。そこで、我々は既存のブロックチェーンをレールとして、その上にDIDシステムを構築すれば良いことに気づきました。
これから技術的なオーバービューに入ってゆきます。IONはどんなブロックチェーンにも対応できるSidetreeプロトコルをBitcoinの上に実装したものです。また、Ethereumの上に実装されたElementというのもあります。他には既存のTrusted Authorityモデルを使ったものもありますが、我々はそうしたものを目指してはいません。IONはTrusted Authorityを使いませんし、独自のトークンも持っていません。バリデータや署名権者もおらず、Microsoftはコントロール権を持っていません。Microsoftは多くのコードで貢献しているというだけのことです。
技術的な前提として、セカンダリコンセンサスは必要なく、Bitcoinと、IPFSにデータがあれば十分です。セカンドレイヤーにおいて新たなコンセンサス・アルゴリズムを用意することなく、ステート変更の履歴を数学的に合意することが可能です。決定論的なルールに従い、ステートのコンフリクトが起きないようにします。(後述)そして、先程説明したように、IDのトランスファーは行われません。
では、システムとしてIONはどのようになっているのでしょうか。ここでIPFSが登場します。
まず、だれでもノードを走らせることができます。ノードの中には3つのコンポーネント(Txn writer, Processing logic, IPFS Node)があります。アンダーライイングとしてBitcoin blockchainがあります。
Node 1はBitcoinに1–10,000のIDオペレーション(Create, Update, Recover, etc…)をアンカリングすることができます。
もし、自分自身でself-sovereign trustな方法で使いたければ、自分でノードを走らせ、DIDオペレーションのファイルをIPFSに保存し、そのハッシュを使ってトランザクションを作成し、Bitcoinにアンカリングします。もしも一つのバッチに自分のオペレーションしか含めていないのであれば、自分がビットコインのマイニングフィーを負担しなければなりません。これには誰の許可も必要ありません。
実際は、多くの人が他のノードにオペレーションを送信し、まとめて処理されるでしょう。この場合にも送信者が管理する鍵による署名がついており、安全に運用されます。すでにMicrosoftやそのほかのDIFメンバー企業などでこうしたノードを運営しています。
Bitcoinに書き込まれるハッシュはIPFSのCID(Content ID)になります。IPFSのCIDはアンカーファイルと、詳細なオペーレーションを示したバッチファイルにリンクしています。
Node 2はビットコインの中にあるこのようなハッシュを常に探しています。素早く見つけ次第、自分のノードに複製し、他のノードに伝えます。次に、Processorが決定論的なルールセットを用いて処理し、すべてのノードで同じステートに更新されるようになります。(Strongly Eventual Consistency — Conflict-free Replicated Data Type (CRDT)を使っています。)
オペレーションの詳細をみるとIPFSが出てきます。
Bitcoinのブロックの中にTxnがあり、その中にアンカーファイルへリンクするIPFSハッシュがあります。アンカーファイルはバッチファイルにリンクしています。
アンカーファイルは証明をするためのもので小さなサイズです。バッチファイルは細かなPKIオペレーションを書いた大きなサイズです。
アンカーファイルだけを持ったライトノードと、バッチファイルも含めてもつフルノードがあります。
ノードを走らせるのに必要となるハードウェアの目標は2017 Core-i5, 500GBストレージ, 4GB RAMで、自宅にある通常のコンピュータでも走らせることができます。
最後の技術的なスライドです。一言でSidetreeのDIDとは何かというのを説明すると、一つの巨大なCRDT(Conflict-free Replicated Data Type )ということになります。CRDTはさまざまなコラボレーションアプリ(Google Docsなど)で使われる技術です。
CRDTは基本的に、参加者のオペレーションを差分のデルタとして捉えます。図に示すように、オペレーションごとに増加する通し番号をもっており、コーディネートサーバーが、論理的かつ決定論的な方法で一つにまとめます。
伝統的なCRDTはベクタークロックをもっています。それは、参加者が信用をおいて、一方向に増加する性質をもっています。そして、コーディネーター(GoogleやMicrosoftなど)が一つにまとめた結果を信用します。
ここでBitcoinが提供することは、一つの大きなベクタークロック・オラクルです。すなわち、一つの、前方加算のみ行うベクタークロックです。これはブロック高の増加に伴ってもたらされます。これは決定論的なものです。
よって、IONの参加者は何をベクターとするかに関して他者を信用する必要はなく、コーディネーターをおいて信頼する必要もありません。なぜならシステムとして決定の仕方が決まっているからです。つまり、IONはCRDTシステムからcentralized intermediaryを取り除きました。
我々が実現するものは、強力なスケーラビリティです。数万オペレーション/秒をテスト環境で実現しています。これはDIDのオペレーションとしては大変に大きなものです。スケール感を試算すると、年間500億のDIDをシステムに取り込むことができます。これが実現すれば、すべての人がDIDを手にすることができ、コミュニティとしては成功だと考えています。
10,000オペレーションを1つのビットコイントランザクションで扱えるため、コスト効率に優れています。
パーミッションレスで使えます。我々は自分自身の存在をできるだけ無くするよう努力しています。我々は、Microsoftをゲートキーパーのようなものにもしたくありません。IONはMicrosoftから完全に独立した形で運用されることを望みます。
我々は、堅牢なネットワークシステムにするために、3ステージを考えています。最初は大きな組織で安定的にフルノードを走らせ、徐々に裾野を広げてゆきます。
すべての取り組みはDIFにおいて行われます。SidetreeとIONはどちらもDIFのプロジェクトであり、Microsoftのオープンソースリポジトリにはなく、我々はコミュニティへのコントリビューターです。我々はIPFSと緊密に連携して、最新の状態を保っています。ぜひIONとIPFSに参加してみてください。
ION, Elements Demo
PKIの復習用
https://www.ipa.go.jp/security/pki/index.html
IONのWebアプリ
ElementのWebアプリ
Universal Resolver
様々なDIDから公開鍵を入手できる。例えばElementのWebアプリで作った次のDIDも使える。
did:elem:ropsten:EiDbQ-LU_v3B5ut3L4WzAIdNMipkfppT9wnA3FaTwK0yAw
もう一つの例として、Sovrin FoundationのDIDを使ってResolveしてみる。
did:sov:CYQLsccvwhMTowprMjGjQ6
すると次のようにパブリックキーと、外部サービスエンドポイントの情報が得られる。ここでは公証サービス(notary.ownyourdata.eu)にリンクされている。このような仕組みを活用すれば、DIDと国が提供するIDなどのトラストアンカーと紐付けることができるため、冒頭で紹介した、我が国の中期展望レポートにおけるTrusted Webにおいて中核となるIDの認証やKYCなどの効率化に役立つであろうと考えられ、今後の発展が注目される。
Microsoft JapanのMatsuzakiさんによる記事
Walkthrough of Decentralized Identity (DID) Implementation (ION)
今回は少し長くなってしまいましたが、いかがでしたでしょうか?DIDの雰囲気を掴んでいただけたら嬉しいです。今回の記事は、隔週で開かれているWeb3勉強会において筆者が解説した内容を転記したものです。もしこれをきっかけにTrusted WebやWeb3、IPFS、DIDのコンセプトが気に入ったり、興味を持って頂けたらと思います。
また、この夏は一冊の本を通読し、金融理論を体系的に学ぶためのオンライン勉強会を企画しています。揺るぎない理論的な基礎を身につけて、新しい時代においてTrusted Web、Web3、Decentralized Finance、ブロックチェーン開発などに活かしていただければ幸いです。また詳細はTwitterにて告知いたします。