Skip to content

Instantly share code, notes, and snippets.

@studioTeaTwo
Created September 18, 2022 11:47
Show Gist options
  • Save studioTeaTwo/7aead51aa7f3341eb96cc64ff87bd816 to your computer and use it in GitHub Desktop.
Save studioTeaTwo/7aead51aa7f3341eb96cc64ff87bd816 to your computer and use it in GitHub Desktop.
A Japanese translation of "Self Sovereign Identity, TBD, and Web5"(https://developer.tbd.website/blog/ssi-tbd-web5/)

Self Sovereign Identity(SSI)とは、2016年にクリストファー・アレン氏がそれまでアイデンティティコミュニティの人々の間で話し合われていたことから着想してブログ記事「Self-Sovereign Identityへの道」で詳細をまとめた、包括的な用語です。そのブログではSelf-Sovereign Identityの10の原則が定義されています。

  1. Existence ユーザーは独立した存在でなければならない。
  2. Control ユーザーは自分のアイデンティティをコントロールできなければならない。
  3. Access ユーザーは自分のデータにアクセスできなければならない。
  4. Transparency システムやアルゴリズムは透明でなければならない。
  5. Persistence アイデンティティは永続的なものでなければならない。
  6. Portability IDに関する情報およびサービスは持ち運び可能でなければならない。
  7. Interoperability IDは可能な限り広く使用できなければならない。
  8. Consent IDを使用するときに本人が同意しなければならない。
  9. Minimalization クレームの開示は最小限にとどめなければならない。
  10. Protection ユーザーの権利は保護されなければならない。

2016年以降、いろいろなことが起こりました!SSIの原則に基づいて、カンファレンス、議論、論文、標準規格、ソフトウェア、そして技術の業界全体での採用が相次ぎました。この領域は成熟過程にあり、成長する一方です。

Blockのミッションは、経済的なエンパワーメントです。これは、歴史を振り返ると、何百万もの商店が「支払いを受け、スタッフを管理し、店舗やオンラインでビジネスを行う」ことを可能にするSquareや、何百万もの、特に銀行口座を持たない人たちが「お金(とビットコイン!)を送り、使い、銀行に預け、投資できる」ようにするCashAppのような製品を開発してサービスを提供するといったことでした。2021年にBlockの新しいビジネスユニットであるTBDが結成されたとき、私たちはBlockのミッションを拡大し、「我々一人ひとりのファイナンス、データ、そしてアイデンティティの所有権とコントロールを取り戻す分散型未来」の創造を支援することに着手しました。TBDのミッションは、SSIの原則に強く合致しています。

このミッションを進めるために、TBDはWeb5を立ち上げました。Web5は、分散型アプリケーションとプロトコルを可能にするために、Webに新しいアイデンティティレイヤーを供給する分散型プラットフォームです。Web5は、SSIのコンセプト・標準規格・ソフトウェアを取り入れ、自己主権とデジタルアイデンティティの持つあらゆる可能性を内包したバンドルセットとして提供します。今日、TBDがWeb5のために構築しているたくさんのコンポーネントがあり、明日はもっとたくさん増えます。その中には、自己主権型アイデンティティのSDKと自己主権型アイデンティティサービス(SSI SDK、およびSSI Service)、分散型ウェブノード(DWN)、アイデンティティウォレットがあります。本稿執筆時点では、これらすべてのコンポーネントが活発に開発されています。これは、「open-by-default」モデルを採用し、Web5の開発に最初からコミュニティを参加させるという、チームの意図的な動きでした。

ここでは、Web5の重要なコンポーネントであるSelf Sovereign Identityに対するビジョンを説明します。特に、私たちTBDがSSIとWeb5の目標に向けて、コミュニティで標準ベースのソフトウェアをどのように構築しているかという点についてです。「SSI」を冠にした2つのプロジェクト(SSI Service、SSI SDK)が、その他多くのもの(分散型ウェブノード、アイデンティティウォレット、ユーザーインターフェースなど)と並んで、Web5スタックの標準ベースの構成要素として焦点を合わせています。

ソフトウェア・ミッション

TBDは、Web5上でSelf Sovereign Identityを実現するためにオープンソース、標準ベースのソフトウェアを開発していきます。

オープンスタンダード

SSI のビジョンは、オープンスタンダードによって実現されます。重要なことは、これらの標準規格は誰でも閲覧し、貢献することができるということです。ウェブブラウザ、使用するハードウェアとその基礎となるプロトコル、プログラミング言語、オーディオファイル、インターネットとBluetoothデバイス、テキストドキュメント、チャットアプリケーション、使用する暗号化などなど、意識していなくてもわたしたちは毎日オープンスタンダードと接しているのです。オープンスタンダードは、現代のコンピューティングのほぼすべての側面を円滑にしています。

SSI の分野では、SSI 標準規格の開発を促進する標準化団体がいくつか存在しています。IETFOpenID FoundationWorld Wide Web Consortium (W3C)Decentralized Identity Foundation (DIF)など、複数の組織で同じ目的の仕様群を取り扱うこともあります。TBDはこれまで、主にW3CとDIFを対象としてきました。

W3C

W3Cは、1994年にティム・バーナーズ=リー氏によって設立された、Webに関する最も著名な国際標準化団体の一つです。W3Cには、いくつかのグループがあります。コミュニティグループは、最もオープンなグループです。クレデンシャル・コミュニティグループはVerifiable Credentialsに焦点を当て、しばしばVerifiable Credentialsのデータモデル(すなわち、VC 仕様)を担当するVerifiable Credentialsワーキンググループの事前討論の場になります。Decentralized Identifierワーキンググループは、Decentralized Identifiers(すなわち、DID 仕様)を担当しています。

TBDはW3Cのメンバーであり、3つのグループのワークアイテムを積極的に活用し、各グループの資料作成に貢献しています。

DIF

Decentralized Identity Foundation(DIF)は、Decentralized Identityにフォーカスするため、2017年に設立されました。それ以来、Identifiers、Claims & Credentials、Sidetree、Secure Data Storage、Wallet Security、Interoperabilityなどの周りに多くのワーキンググループを置くまでに拡大しています。DIFは、技術仕様、参照実装(SidetreeとIONのケースのように)を作り、業界全体のプレイヤーのために標準規格とソフトウェア実装を調整します。

TBDはDIFのメンバーであり、定期的にワーキンググループに参加し、相互運用性の検証プロジェクト、仕様策定、技術的実装のすべてに貢献しています。

使用中の標準規格について

Web5で依存する標準規格のセットを特定のものに縛っているわけではありません。しかし、私たちは、どのような標準規格から始めるかについて土地勘を持っています。以下のリストはおそらくすぐに古くなるでしょうが、私たちが今取り組んでいることの道標にするための参考資料としてご覧ください。

(訳注: ステータスは各団体により定義が違うため最終段階に到達しているものには(確定)と補足しました。)

仕様 標準規格団体 仕様書名、または概要 ステータス
DID Core W3C Decentralized Identifier Working Group 「Decentralized Identifiers v1.0.」 勧告(確定)
DID ION DIF Sidetree Sidetreeプロトコルで構築された、Bitcoinのレイヤー2で動作するDIDネットワーク。 承認された仕様(確定)
DID Key W3C CCG 1つの暗号鍵を用いてDIDを作成するシンプルな方法。 非公式な草案
DID Web W3C CCG ウェブのドメインを利用してブートストラップすることができるDIDメソッド。 W3C内部文書 
DID Peer  DIF Identifiers & Discovery "安価、高速、拡張性、安全性 "を目的とした、中央のトラストソースから独立して使用できるDIDメソッド。 草案 
Verifiable Credentials Data Model  W3C Verifiable Credentials Working Group 「The Verifiable Credentials Data Model v1.1.」 勧告(確定) 
Data Integrity  W3C Verifiable Credentials Working Group デジタル署名のような構造化されたデジタル文書の真正性と完全性を保証するためのメカニズムを記述する。 編集者の草案 
JSON Web Signature 2020  W3C Verifiable Credentials Working Group Linked Data Proofsを用いたJSON Web Signaturesの証明書の作成と検証を目的とした暗号スイート。 編集者の草案 
Verifiable Credentials JSON Schema W3C CCG Verifiable CredentialsをバックするためにJSONスキーマを用いるメカニズム。 草案 
Status List 2021 W3C CCG Verifiable Credentialsの停止や取り消しなどのステータス情報を公開するための、プライバシー保護、容量効率、高性能なメカニズム。 コミュニティグループ草案報告
VC Proof Format Test Suite DIF Claims & Credentials Linked DataとJWT署名タイプによるVerifiable Credentials and Presentationの相互運用性テストとレポートを提供するテストスイート 非公式な草案
Presentation Exchange DIF Claims & Credentials 検証者が証明の要件を明確にし、保有者がその要件に従って証明を記述するための、クレーム形式および転送時の包み方に依存しない形式 ワーキンググループ草案
Credential Manifest DIF Claims & Credentials 対象者がクレデンシャルの評価と発行のために発行者に提供しなければならない入力情報、対象者がこれらの要件に対 する申請を行うための手段、および発行者がこのような申請を満たすための手段を記述するための共通のデータ フォーマット。 草案の前
Trust Establishment DIF Claims & Credentials 分散型ID環境において、当事者間で信頼関係の表明や関係性を伝達する手段。 草案の前
Decentralized Web Node DIF Secure Data Storage DWNはデータストレージとメッセージリレー機構で、エンティティは与えられたDIDに関連する公開または非公開の許可されたデータを配置するために使用することができます。DWNはマルチノード同期を提供し、所有するエンティティが集中的な要因なしに他の人とデータを秘密裡に管理し取引することを可能にします。 草案

簡潔にするために、Web5 の SSI スタックの基礎を構成する最も重要な仕様のうち 15 個だけを紹介しました。私たちのソフトウェアに含まれる、あるいは含まれる予定のものは、少なくともあと半ダースあります。

TBDコミュニティ

TBDは、コミュニティ主導のプロジェクトのためのスペースを用意し、コミュニティのメンバーがコミュニティのリソースへの更新権限を獲得し、Web5上に構築される幅広いユースケースに興味を持つ多様な貢献者を育てていくことに関心があります。

私たちは、標準化団体そのものになることに興味はありません。その代わり、私たちは Web5 をビルドし続けることに焦点を当てた自立したコミュニティを育成することに重点を置いています。これを促進するために、フォーラムのセクションの追加、新しいDiscordチャンネルの作成、新しい目的別のGitHubリポジトリの作成、アイデアボード、ジョブリストページ、Web5 wikiなどの新しいコラボレーションツールへの投資など、既存のツールを拡張していくことが可能です。Y CombinatorのようなWeb5のインキュベータを設立して、Web5を使った開発を促進することも考えています。未来の可能性は無限であり、私たちはコミュニティの進化に合わせてニーズに適応できるように願っています。

時には、もっと厳密な進め方が必要な場合もあります。そのため、私たちは Web5 コミュニティにおいて、意味のあるワーキンググループを形成することに関心を持っています。これらのグループの成果は、業界の調整、ユースケースの構築、ソフトウェア開発、あるいは既存の標準化団体に貢献できるような標準化関連の作業となる可能性があります。TBDは現在、クレデンシャルに関するこのようなグループを立ち上げ、まずKnow Your Customer(KYC)クレデンシャルのための道を作ることに焦点をあてています。このグループはすでに、GitHubにユースケース・ドキュメントを構築し、目的別のDiscordチャンネルフォーラム・カテゴリを持つなど、上述のパターンを踏襲しています。近いうちに、このグループをより「オフィスアワー」的な形式に変え、コミュニティの誰もが自分の仕事を披露したり、支援を求めたり、プロジェクトの開発ロードマップを形成する手助けができるようにする予定です。

今日、TBDチームによって運営されているGitHubの組織が一つあります。私たちは、コミュニティ管理のための役割を開放していきます。それは、プロジェクトやリポジトリをコミュニティのメンバーによってすべて立ち上げ、管理することに加え、コミュニティ主導のモデレーションやメンテナンス(プルリクエスト、イシュー、ラベル、マイルストーンの管理など)といった軽い進行を行うことまでを指します。そのようなアイデアの1つとして、コミュニティ主導の取り組みを促進し、ハイライトするために、「Web5コミュニティ」のための新しいGitHubの組織を検討しています。さらに、コミュニティで草の根的に始まった仕事を認識し、促進するための正式な道筋を示すインキュベーション・プログラムの立ち上げも検討しています。私たちのツールの残りもコミュニティ主導にすることを計画しています。今日はDiscordとフォーラムを意味しますが、明日はもっと多くのことをする予定です。

これは私たちが社内で重点的に取り組んでいることですが、コミュニティのメンバーとしてみなさんが提案や計画を立て、変化に直接影響を与えることができることは非常に重要なことです。Discordやフォーラムであなたのアイデアを募集してみてください。

オープンソース

Web5の基盤はオープンソースです。ソースコードが公開されていて、私たちは客室係(スチュワード)として外部からの貢献に頼っています。Web5は、グローバルコミュニティによる完全なイノベーションによってのみ成功するのです。確かに、様々な理由でコードをオープンソースにできない場合もあります。これは、TBDのビジネスにも、私たちのコミュニティのメンバーにも当てはまります。私たちはオープンソースを強制しているわけではありませんが、指針のひとつではあります。私たちはオープンの力、そしてそれに付随するすべてのものを信じています。Web5がよりオープンであればあるほど、より良いものになるはずです。

TBD GitHubにあるプロジェクトは、TBDから、またはコミュニティ(Discordやフォーラム)を通して発生することがあります。今日、TBDチームはすべてのプロジェクトの主要なスチュワードとメンテナーとして活動しています。コミュニティが成熟するにつれて、コミュニティがリードするようになり、TBDがより高いレベルのメンテナーの役割を担うようになることを期待しています。その結果、コミュニティ主導のプロジェクトが増え、コミュニティのメンバーはマージやモデレーションのアクセス権を獲得し、Web5上に構築される幅広いユースケースに興味を持つ多様な貢献者が増えていくと思われます。より広く言えば、TBDがWeb5の決定について唯一、あるいは最終的な発言権を持たない世界へと前進させたいと考えています。分散化はWeb5の開発における強みなのです。

ソフトウェア・ビジョン

TBDは、Web5上のSelf Sovereign Identityを促進するために、コミュニティ主導で、オープンソース、標準ベースのソフトウェア群を育成していきます。

私たちは、Web5 コミュニティのビジョンである「多様なニーズに対応する実用的な標準ベースのソフトウェアを構築する」ことを実現したいと考えています。このソフトウェアは、特定の団体に縛られることなく、また、正当な理由なく、SSI空間内の可能性を排除するものであってはなりません。機能の豊富さと複雑さの両方のバランスを取りながら、ユーザーと密接に協力して、Web5を望むすべての人のニーズを満たすソフトウェアをデザインする必要があります。そのために、目的別のツールで構成されるツールキットという観点で考えています。これらのツールキットは、パワフルで直感的、そして人間中心のソフトウェアを構築することができるように抽象的な階層に存在します。

ソフトウェアは、柔軟なモジュール方式で設計されなければなりません。これは、デフォルトの実装を1つか2つ備えつつ、多くのシステムとの統合を容易にするために拡張可能なインターフェースを意味します(例えば、必要に応じてデータベース、暗号化方法、クレデンシャル形式を交換する)。このソフトウェアは、SSI空間におけるオープン・スタンダードに基づいて構築されることを意図しています。標準規格の世界は急速に変化しており、定義やサポートが不十分な標準規格を使用する場合があるかもしれません。私たちは、標準規格と添い遂げる覚悟を持ちつつ、官僚主義的な標準規格よりも実用的で効果的な実装を優先させなければなりません。これらのソフトウェアを通して、標準規格の現状を超えるイノベーションを行い、既存の標準規格や標準化団体に貢献する機会を開くことができるかもしれません。

SSIのエコシステムが、競合する標準規格や開発中の標準規格で溢れていることを認識しています。しばしば、これは、変わり続ける機能セットの目標と約束に対して開発しているように感じられるかもしれません。理解すべき多くの情報があり、誰もが意見を持っています(これは良いことです!)。勝者を選ぶのは難しく、同じことをするように見える複数の標準規格の中から選ぶのはさらに難しいことです。私たちは、5種類のハサミが入ったスイスアーミーナイフを作りたいのではなく、仕事の99%の時間をうまくこなせる1つ(あるいは2つ)のハサミを望んでいます。機能や標準規格の追加をケースバイケースで評価し、十分な理由があり、熱心な開発者がいるものに注目することに賛成します。また、すでに使用されており、相互運用性が実証されている場合は、ボーナスポイントが加算されます。

また、SSIのエコシステムは、ウェブブラウザ、モバイルアプリケーション、バックエンドサーバ、台帳などで通じた、幅広いツール、言語、技術を使用していることも認識しています。言語については、強固な暗号サポート、スピード、WASMにコンパイルできること、そして何よりもシンプルであることから、Go(SSI SDKとSSI Serviceにおいて)から始めています。貢献を促すためには、私たちが書くコードが親しみやすいものであることが重要です。単純明快であることは、賢いことよりも常に好ましいことです。将来は多言語、マルチプラットフォームになります。多言語・マルチプラットフォームのサポートを向上させるためのイニシアチブを歓迎し、GitHubの組織でそれらを育成することに前向きです。

SSI SDK

ssi-sdkと名付けられたこのSDKは、Self Sovereign Identityに関連する一連の標準規格をカプセル化したものです。ssi-sdkは、コンポーネント間の依存関係を制限したモジュール方式で分散型アイデンティティ・アプリケーションを構築するために、標準規格ベースのプリミティブのセットに基づいて、柔軟な機能を提供することを意図しています。

主に、SDKはDecentralized IdentifiersとVerifiable Credentials、およびそれらに関連する標準規格をサポートする役割を担っています。Decentralized Identifiersとの連携は、識別子の解決、DID文書にある暗号鍵を使用したデータの署名、検証、暗号化、復号化といったことです。Verifiable Credentialsとの連携は、データ・スキーマの作成と使用、クレデンシャルの適用、発行、および交換を促進といったことです。

SDKはワークインプログレス(WIP)のステータスであり、TBDのGItHubで見ることができます。

SSI Service

Self Sovereign Identity Service (SSIS) は、DIDsVerifiable Credentialsに関連するあらゆることを一つの箱に詰めて容易にしたサービスです。このサービスは、より大きな分散型ウェブ・プラットフォームのアーキテクチャの一部です。SSI Serviceは、ssi-sdkをラップしたJSON-APIのウェブサービスで、Web5上でユーザーを中心とした相互作用を容易にするものです。このサービスは、ユーザーインタフェース、ウォレット、分散型ウェブノード、その他のウェブインフラと連携することを目的としています。

このサービスは、SDKが公開する低レベルの構成要素を利用することで、Web5スタックでの構築を検討している個人または組織にとっての参入障壁を大幅に下げることを目的としています。SDKと同様、特定のビジネスやユースケースにとらわれず、既存または新規の外部インフラにプラグインできるように設計されています。

このサービスは、単一の組織で実行され、外部の認証・認可が入ることを想定しています。インフラストラクチャの要件は想定しておらず、複数の導入モデル、データベース、鍵管理ソリューション、ユーザーインターフェイスに柔軟に対応します。様々なユーザーやユースケースがこのサービスを利用し、ビジネスロジックの処理やユーザーアカウントの処理などのための抽象化・仲介のレイヤーをこのサービスの上に作成することが期待されます。

このサービスはワークインプログレス(WIP)のステータスであり、TBDのGItHubで見ることができます。

機能の開発方法

私たちは、Web5 の初期段階にいます。意図的に、私たちのアイデアやプロジェクトは、正式リリース段階のアプリケーションに組み込むことはおろか、アルファ版リリースの準備も整っていない段階で発表してきました。透明性は、私たちの考えを共有し、私たちが構築しているものに対するマインドシェアを獲得するための資産です。そのため、多くの分かれ道(フォーク)が待ち構えています。これらの分かれ道を乗り越え、そしてその先の分かれ道を進むために、私は原理原則に基づいた意思決定の指針となるいくつかの簡単なプロセスを紹介します。

  1. ソクラテス・メソッドを用いて機能を開発する。すなわち、意見を表明し、疑問を投げかけ、「なぜとどのように(whyとhow)」を問いかけ、リスクや不確実性に知的に誠実であり、2次、3次、N次の作用を考慮する。
  2. すべての新機能の提案には、機能のあるべき姿、エンドユーザーの有用性、先行技術、改善余地と次のステップ、リスクと軽減方法、考慮事項、および未解決の質問を概説したライトデザイン文書を用意する。
  3. プロジェクトメンテナの定足数は、機能提案を適時にレビューし進行させられるだけの数を確保する。

上述のプロセスのテンプレートは、各 GitHub リポジトリに作成されています。ぜひ、GitHubのissueやForumの議論で考えを深め、デザインを修正した上で投稿していただければと思います。

機能開発に関するテンプレート、バージョン管理やリリースに関する考え方、その他の情報については、GitHubのドキュメントをご覧ください。

SSI Service GitHub Docs | SSI SDK GitHub Docs

ゴール

私は、野心的で「測定可能」な目標を公言することの効果を信じています。これは強力な自己鍛錬のメカニズムであると同時に、前進のための行動喚起でもあるのです。Web5の公式なタイムラインは、私たちのサイトに掲載されています。非公式ですが、私個人の野望はここに示します。

2023年1月1日までに、以下を達成します。

  • SSI SDKとSSI Serviceの最初のベータリリース(0.1.0)をリリースする。
  • 各SSIプロジェクトは、75%以上のテストカバレッジを持つ。
  • 各プロジェクトには、明確な例を示した堅牢なユーザーおよび開発者向けドキュメントを用意する。
  • SSI SDK は、少なくとも上記の 15 の規格すべてについて、完全な仕様の実装を備えている。
  • SSI Serviceは、インフラに依存しない方法で展開可能であり、2つ以上のプラットフォームで実証されている。
  • SSI Serviceは、以下のような実用的なエンドユーザ・フローを促進する。
    • 2つ以上のDIDメソッドを使用したDIDの作成と管理
    • JSON スキーマに裏付けられたVerifiable Credentialsの作成と発行
    • クレデンシャルマニフェストの作成、クレデンシャル申請の受付、およびクレデンシャル申請の実行
    • プレゼンテーション定義の作成、プレゼンテーション要求の送信、およびプレゼンテーションの提出の受理
    • クレデンシャル取り消しの作成、およびクレデンシャルとの照合
    • 信頼確立の文書の作成と処理
  • SSI SDK とSSI Serviceは Decentralized Web Node 仕様をサポートし、SSI Serviceは少なくとも 1 つの DWN と連動する。

おわりに

以上で、私たちがWeb5上のSSIソフトウェアをどのように考えているか、そしてその旅がどのように展開されるかについて、かなり良い感覚を持っていただけたと思います。最も重要なことは、ミッションがTBDだけのものではなく、コミュニティのものであるということです。私たちは、現実の人々のために現実のソフトウェアを構築し、何よりも実用主義を支持します。ここに書いたことは「現在の考え」であり、常に進化していくものです。SSIとWeb5を前進させ、新しい視点を得て、新しいユースケースを解決し、クールなものを作るためにあなたが参加するのを楽しみにしています。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment