ブロックチェーンと身分証明の相性は良く、それに関連したさまざまなプロジェクトが進行しています。現状、あらゆるサービスを利用するときは運営会社等に個人情報を提供することになります。

ブロックチェーンを活用したデジタル身分証明では、繰り返し個人情報を入力することを省略し、安全な身分証明を実現しようとしています。

そこで、当記事ではイーサリアムブロックチェーンを活用して簡単かつ安全な身分証明を目指すuPortというプロジェクトについて解説していきます。

 

uPortとは

uPortとは、サービス利用時における身分証明をより安全かつより簡単に行えるようにするためのプラットフォームです。これは、イーサリアムのブロックチェーンをベースとしてスマートコントラクトを活用することにより機能しています。

私たちはオンライン、オフラインに限らずさまざまなサービスに対して、個人情報を提供することで利用しています。例えば、ネットショップを利用するときは住所やクレジットカード番号などのさまざまな情報を提供することになります。

また、仮想通貨取引所のアカウント開設においては本人確認をし、開設までに多くの時間がかかってしまったことがある人も多いはずです。

 

このようなサービス利用時における身分証明にはユーザーにとって以下のような問題があげられます。

  • 繰り返し同じ個人情報を登録しなければならない
  • ある特定の管理者が集中的に管理するので情報漏えいなどのリスクがある

つまり、個人情報を提供することは面倒でリスクのあることなのです。uPortではこのような問題点を解決することを目指しています。

 

uPortは個人情報をブロックチェーンで一元的に管理して、あらゆるサービスを利用するときスマホ等のデバイスでuPortを介して利用すれば、簡単に身分証明ができることを目指しているのです。

名前や生年月日などの情報だけでなく、税金の支払い情報、医療機関でのカルテ情報、車の所有情報などある特定の個人に関するあらゆる情報を一元的に管理することを最終的な目標にしています。

 

uPortで一元的に管理することは、面倒な個人情報の入力を何回も行うことを省略してくれるのでユーザーにとってとても便利な存在になると想像できます。

しかし、このような一元的な個人情報の管理を実現するためには厳格な安全性が求められることもイメージできるでしょう。あらゆる個人情報をデータとして保存することになるので、第三者が勝手に参照できないようにしなければなりません。

まとめると、uPortが解決することは身分証明での安全性と簡便性であると言えます。

 

安全性

従来のクライアントサーバーシステム(集中型システム)だと、あらゆる個人情報をある特定の管理者が管理することになるので、ハッキングリスクなど安全面で大きな懸念があります。

実際、膨大なユーザーの個人情報が流出するニュースはよく報道されています。

上述したようにuPortが個人のあらゆる情報を管理することを考えると、その情報が予期せぬ第三者に対して絶対に流出しないような仕組みであることが求められます。

 

また、「適切な相手に対して適切な情報だけを公開する、という柔軟な情報公開の許可を自分だけが行える」ということも求められます。例えば、保険会社に個人情報を求められたときに必要なデータだけ保険会社に提供し、その他のデータは公開しないという柔軟性が必要になります。

uPortはこのような身分証明で求めれる柔軟な安全性をブロックチェーンとスマートコントラクトを活用することで実現しようとしているのです。

 

簡便性

本来、身分証明の安全性と簡便性はトレードオフの関係であるはずです。つまり、安全な身分証明を行おうとすればより面倒な手続きを行わなくてはいけないですし、簡単な手続きで済む身分証明は安全面を考慮してある一定レベルの情報しか証明できないはずです。

しかし、uPortでは最大限の安全性を維持したまま、あらゆる個人情報の証明を簡単に行えることを目指しています。

要するに、あるサービスを利用するときにユーザーが意識することなくバックエンドでuPortが動作していることが理想的です。ユーザーが自分でさまざまな個人情報を入力することなく(パスワードすら入力することなく)、簡単にサービスが利用できるようになるイメージです。

uPortアプリのUI/UXも分かりやすく、面倒なアドレス入力などを行う必要はありません。

 

従来の身分証明はさまざまな管理主体により別々に管理されておりとても非効率的です。つまり、FacebookもLINEもGoogleもAmazonも別々にあなたの個人情報を持っていることになります。

身近な例でいうと、CoincheckとbitFlyerとZaifの取引所に登録するときはその取引所ごとに個人情報を提供しなくてはなく、とても面倒です。uPortは個人情報を一元的に管理して、uPortを使えばどの取引所に対しても身分証明を行うことができ面倒な手続きを省略することができることを目指していると言えます。

 

また、このように個人情報を一元化して管理することは自分の評価も一元化して管理できることになります。例えば、現在のようなシステムだとTwitterのフォロワーが多く影響力がある人はTwitter内では高い評価を得ることができていますが、その高評価をAirbnbの利用時に活用することはできません。

もしuPortで「評価」を一元的に管理できればさまざまなサービスの利用時に他のサービスの評価をシェアすることができ評価経済を加速させることが考えられます。

それでは、このようなトレードオフの関係にある身分証明の安全性と簡便性を実現するためにuPortはどのような仕組みで機能しているのか見ていきましょう。

 

uPortの仕組み

まずは、従来のuPortの構造から見ていきましょう。この構造がベースとなり、開発途中で提起された問題点を解決するためにいくつかの概念が付け加えられています。

uPortの従来の構想では以下のように3つのコントラクトから成る構造が考えられていました。

  • コントローラー・コントラクト:プロキシ・コントラクトの管理
  • プロキシ・コントラクト:必要な個人情報を提供するコントラクト
  • アプリケーション・コントラクト:アプリケーションを実行するためのコントラクト

 

身分証明が必要なアプリケーションを使用するときは、コントローラー・コントラクトとプロキシ・コントラクトを介して利用するサービスのアプリケーション・コントラクトにトランザクションを送ります。

uPort

(source: UPORT: A PLATFORM FOR SELF-SOVEREIGN IDENTITY)

ここで、メインの働きをするのは「プロキシ・コントラクト(Proxy Contract)」です。プロキシ・コントラクトがイーサリアムブロックチェーンとやり取りをして個人情報へのアクセスを行います。

つまり、プロキシ・コントラクトは新しい個人情報がブロックチェーンにデプロイされるごとに新しく作成され、そのアドレスとその個人情報が紐付けられることになります。

 

 

コントローラーコントラクト(Controller Contract)は、このようなプロキシ・コントラクトを管理するために存在します。

例えば、プロキシ・コントラクトにアクセスするためにはユーザーのスマホの中だけに存在する秘密鍵を使用する必要があります。なので、もしスマホをなくしたり、壊れてしまった場合は秘密鍵もなくなり、個人情報を使えなくなってしまう事態になってしまいます。

コントローラーコントラクトはこのような事態に対処するために復元システムを持っています。バックアップファイルなどが存在しなくても、あらかじめ指定しておいた家族や友人に復元をしてもらうことができるのです。

uPort

(source: UPORT: A PLATFORM FOR SELF-SOVEREIGN IDENTITY)

しかし、このような構造では手数料が高いことやプライバシーに関する問題があげられます。

新しい個人情報が作成されるたびに、上図のコントローラーコントラクト、プロキシコントラクト、アプリケーションコントラクトの3つのコントラクトがデプロイされる必要があります。スマートコントラクトのデプロイ時にもgasが使われるので手数料がとても高くなってしまうのです。

 

また、プライバシー問題もあげられます。uPortではユーザーのプロフィールデータを分散型ストレージネットワークであるIPFSに保存しているため、これらの情報が第三者でも閲覧可能になってしまっています。(このデータのハッシュ値がユーザーIDと紐付いた状態でイーサリアムブロックチェーン(uPortレジストリ)に保存されています)

そこで、このような問題を解決するために以下のような解決策が導入されることになりました。

  • アイデンティティ・マネージャー
  • メタトランザクション
  • IPFSへの保存形式の変更

 

アイデンティティ・マネージャー

アイデンティティ・マネージャー(IdentityManager)は全ての個人情報に対するコントローラーコントラクトの機能を結合させたコントラクトになります。

アイデンティティ・マネージャーを使うことで新しい個人情報が作られるごとにコントラクトをデプロイする必要がなくなるので大幅に手数料が安くなるのです。

 

コントローラーコントラクトの代わりにアイデンティティ・マネージャーを介してプロキシ・コントラクトにアクセスすることで、従来より1 / 7の手数料で実行できるようになったとされています。

さらにアイデンティティ・マネージャーのおかげで、ひとつのプロキシ・コントラクトを複数の鍵でコントロールすることが可能になりました。つまり、複数のデバイスから個人情報のやり取りを行えるようになったのです。

 

メタトランザクション

メタトランザクション(Meta Transaction)はイーサリアムを使っていないとuPortを使えない、という問題を解決します。つまり、メタトランザクションはもしETHを持っていなくてもuPortを介した身分証明が行えることを可能にするのです。

しかし、身分証明を行うためにはトランザクションを作成する必要があり、そのためにはgas(手数料)を支払う必要があります。ETHを持っていないユーザーはこのgasを支払うことができないのでuPortは使えないはずです。

 

メタトランザクションでは、このgasはユーザーの代わりにリレイヤーという主体が代わりに支払います。なのでユーザーは身分証明時にgasを支払う必要がなくなり、結果的にETHを持っていなくてもuPortを使用することができるのです。

それでは、リレイヤーはどうしてユーザーの肩代わりをしてgasを支払ってくれるのでしょうか。現状、リレイヤーは個人情報を利用するアプリケーションやサービスの運営者が想定されており、運営者側が手数料を払ってくれることでユーザーはETHを持っていなくても無料でuPortによる認証を使用することができるということです。

 

公開鍵のみをIPFSに保存

従来のuPortでは、ユーザーに関する公開情報はIPFSに保存されています。この情報は以下のような構造でJSON形式で保存されていました。

{
 ‘@context’: ‘http://schema.org',
 ‘@type’: ‘Person’,
 ‘name’: <user name>,
 ‘image’: {
 ‘@type’: ‘ImageObject’,
 name: ‘avatar’,
 contentUrl: <ipfsHash of the image>
 },
 ‘description’: <user description>,
 ‘country’: <user country>,
 ‘publicKey’: <user public key (to sign attestations)>
}

このようにユーザーに関するさまざま情報が公開されてしまっていることが分かります。

そして、プライバシー保護のために改善された保存データは以下の通りです。

{
 ‘@context’: ‘http://schema.org',
 ‘@type’: ‘Person’,
 ‘publicKey’: <user public key (to sign attestations)>
}

このように公開鍵のみIPFSに公開して保存することになりました。その他のデータはネットワークに公開されないようになったのです。

 

uPortはスイスのZug市で使用されたり、ブラジルでも利用が計画されています。また、Gnosis Olympiaという予測市場サービスで使用されるなど徐々に実用化が進められている段階です。