![見出し画像](https://assets.st-note.com/production/uploads/images/54437581/rectangle_large_type_2_d9cf0437d3dd94cc978e2f1122695086.png?width=1200)
インターネットコンピューター(Dfinity)の認証周りの仕組みと、Internet Identityが解決する課題について
はじめに
最近noteを始めました。筆者は、スタートアップ企業の創業メンバーで、Webアプリケーション開発にも携わっています。今は、Web3.0文脈のブロックチェーン技術が気になっています。
過去に、インターネットコンピュータ(Dfinity)について下記のnoteを書きました。
少し間が空いてしまいましたが、今回はインターネットコンピューター(Dfinity)の続編で、認証周りの仕組みと、解決する課題についてご紹介したいと思います。
インターネットの歴史
様々なサイトで紹介されていますが、ここでも簡単におさらいします。ご存知の方は読み飛ばして頂いて結構です。また、前回、下記のnoteで記載した内容を引用しているため、もし既にご覧頂いた方は、このセクションは読み飛ばしてください。
Web1.0
インターネットの起源は、1969年に構築されたARPANET(アーパネット)です。ARPANETは、米国内の大学や研究機関の間をつなぐネットワークとして使用されていました。
そして、1990年にスイスのCERN(セルン)という国際的な研究所で働いていたティム・バーナーズ・リー氏が、最初のブラウザとサーバを完成させました。Webは、世界中のユーザーのブラウザ等のクライアントから、Webサーバに対して、HTTPというシンプルな通信プロトコルでアクセスできる仕組みです。
そして、Webの普及を一気に推し進めたのが、1993年にイリノイ大学の米国立スーパーコンピュータ応用研究所が公開したMosaicというブラウザです。それまでのブラウザは、文字しか取り扱えなかったところ、Mosaicは本文にインラインで画像を顕在させることができました。
Mosaicを源流としたInternet explorerやFirefoxといったブラウザが、HTMLとCSSを独自に拡張した結果、HTMLやCSSのレンダリング結果が大きく異なり、開発者がブラウザごとの対応を迫られる事態になっていました。
このような背景から、1994年にティム・バーナーズ・リー氏が中心となってWorld Wide Web Consortium(W3C)という団体を設立し、HTML、HTTP、URI、CSS等の標準化を行い、インターネットは普及していきました。当初のインターネットは、静的HTMLのページを利用することでしか情報を表示することができず、ユーザーがデータを変更することは不可能でした。
Web2.0
1990年代後半から、インターネットは、単に静的なHTMLのページを表示するだけの機能から、ユーザーが作成したコンテンツを基に動的に変わる参加型へと変化していきます。
2000年にロイ・フィールディング氏の博士論文により、「REST(レスト)」というWebのアーキテクチャスタイルが発表されました。RESTは、GET、PUT、POST、DELETEといった操作を実行することでWebのリソースを操作するリソース指向アーキテクチャです。
当時は、Googleが検索エンジンとして一定の地位を持ち始めた頃で、現在のようなプログラムから操作可能なWebAPIは存在しませんでした。しかし、GoogleやAmazonといった企業がREST形式のWebAPIを提供し始めたことで、RESTが普及しました。
RESTでは、例えば、Web上の記事等の情報(リソース)に対して、名前(URI)が付されています。また、RESTは、ネットワークシステムのアーキテクチャスタイルとして有名なクライアント/サーバから派生したアーキテクチャスタイルです。クライアント/サーバとは、特定のプログラムを実行するコンピュータ(サーバ)と、ユーザーが操作するコンピュータ(クライアント)に分け、これらが相互にネットワークで接続されるアーキテクチャスタイルです。クライアントがサーバにリクエストを送信し、サーバがレスポンスを返します。
これにより、ユーザーがWebアプリケーション等の入力フォームから企業等が運営するサーバーを介してデータベースを更新し、更新した結果がWebアプリケーションに表示されるようになり、閲覧するだけの静的はHTMLのページから、ユーザーがコンテンツを作成する参加型のWebアプリケーションへと変化していきました。
これに伴い、住所や氏名などの個人情報や、通販の購入履歴、Webの閲覧履歴等から、趣味や嗜好性などの情報についてもビジネスに活用されるようになり、広告等に利用されるようになりました。
Web3.0
Web3.0は、ブロックチェーンのようなP2P技術、VR、IoTなどが組み合わされたインターネット環境になると考えられています。
中でも、インターネットをよりオープンにし、非中央集権性を向上させる役割を担うのがブロックチェーン技術です。
現在のインターネットは、通信業者やその通信網に依存していますが、ブロックチェーンの登場により、このような構造が変わる可能性があります。
ブロックチェーンは、分散型台帳技術を基に、コンピュータのP2Pネットワークによってデータが共同で管理されます。管理ルールはプロトコルで形式化され、ネットワーク参加者全員のコンセンサスによって保護されます。
また、Webのプロトコルは、本来的にステートレスな設計思想です。ステートとは情報のことで、ステートレスとは、情報の送信者や受信者が相手の情報を知らないということで、サーバー側がクライアント側の情報を持たないということです。先程Web2.0のセクションで紹介したRESTも、ステートレスな設計思想が原則となっています。
しかし、現実問題として、ログインして利用するようなサービスは、クッキーやセッションを用いたステートフルな状態管理を行っています。
セッションやクッキーによるステートフルな状態管理により、サービスの利便性が向上しているのは間違いありませんが、これらの情報が、GAFA等の中央管理者によって管理されています。そのため、Webサイトが攻撃を受けて個人情報が流出するリスクがあり、セキュリティ、プライバシー、個人データの管理等の課題を抱えています。
また、GAFA等の中央管理者がWebで提供するサービスのビジネスモデルは、ユーザーが無料でサービスを利用し、そこで収集されたデータを基にターゲティング広告等によって収益を上げることです。結果的に、ユーザーは自分の個人情報を提供することで無料でサービスを利用する構図になっています。
ブロックチェーンは、ステートフルな設計思想を基にしているため、中央管理者が介在せずに、ユーザーがサービスを利用することが可能になり、上記のような課題を解決することが期待されています。
インターネットコンピュータ(Dfinity)のWeb認証の仕組みとInternet Identityについて
上記の通り、これまでのWeb認証では、通常、ユーザーがWebサイトにログインするときには、ユーザーがブラウザで入力したIDとパスワードがサーバーに送信され、サーバーでIDとパスワードをデータベースと照合します。そのため、IDとパスワードが流出すると、悪意のある人が不正にアクセスすることが可能です。最近では、セキュリティを強化するために、二要素認証等の認証方法が採用されることが増えました。二要素認証とは、ユーザーが設定したパスワードの他に、ユーザーが保有するデバイスやハードウェアトークンを使ったワンタイムパスワード、指紋等の生体認証等の複数要素を組み合わせた認証方法です。
従来のWeb認証は、クライアント/サーバーモデルを想定しています。このモデルでは、ユーザーはアプリケーションでログインするときに1度だけ認証し、同じセッション内で後続のリクエストに対する処理を行います。反対に、インターネットコンピュータでは、リクエスト毎に個別に認証されるモデルを採用しており、ブラウザとインターネットコンピュータの間には、ステートフルなセッションがありません。
代わりに、「Internet Identity」を用いて認証を行います。「Internet Identity」とは、インターネットコンピュータ上に登録されたIDのことで、https://identity.ic0.app/ で作成することができます。「Internet Identity」を作成すると、デバイスのセキュリティチップやコンピュータのUSBポートに接続されているセキュリティキーを使用して一意の暗号化キーが生成され、公開鍵がインターネットコンピュータ上に保存されます。また、一つの「Internet Identity」に複数のデバイスを登録することができます。
開発者は、「canister」のフロントエンドに「ICでサインイン」ボタンを表示することができ、ユーザーがそのボタンをクリックすると、ブラウザは「Internet Identity」サービスのポップアップを開きます。
「canister」については、前回のnoteでご紹介しましたので、こちらをご覧ください。
ユーザーは、「canister」のフロントエンドがユーザーの「Internet Identity」を使用できるようにするかどうかを、ポップアップ画面で決定することができます。ユーザーが承認すると、「canister」のフロントエンドにリダイレクトされ、ユーザーの「Internet Identity」で「canister」にアクセスすることができます。
「Internet Identity」は、WebAuthnプロトコルに基づいて構築されており、ユーザーが自分自身を認証するために、下記の3つのオプションを提供しています。
1.スマートフォン等のデバイスに組み込まれている生体認証(Face ID、Touch ID、指紋認証等)
2.ユーザーがスマートフォン等のデバイスのロックを解除するために通常使用しているパスワードまたはPIN
3.コンピュータのUSBポートに接続されているセキュリティキー
WebAuthnとは、パスワードに依存しない認証を実現するための技術で、パスワードによる認証の代わりに、指紋認証や顔認証等の生体認証や、スマートフォンやセキュリティキー等の外部デバイスを用いて認証を行うプロトコルです。
Internet Identityによって解決する課題
前述したように、これまでのWebアプリケーションでは、ユーザーはサービスを運営する企業等に個人情報を提供することで、サービスを無料で利用していました。個人情報は、企業等が運営するサーバーに保存されるため、流出するリスクがあり、アプリケーションの開発者は、セキュリティ、プライバシー、個人データの管理等の問題に対して慎重に対処する必要がありました。
「Internet Identity」の認証システムを使用すると、ユーザーはサービスにログインする際に、メールアドレスやパスワードといった個人情報をインターネット上に公開する必要がなくなるため、匿名でサービスを利用することが可能になります。
また、「Internet Identity」は、ユーザーがログインする「canister」のフロントエンドごとに異なる仮のIDを提供するため、匿名性とプライバシーが強化されます。
これにより、アプリケーションの開発者は、今までのように個人情報やセキュリティについて検討・対応するコストが減少し、また、ユーザーは個人情報を提供することなくサービスを利用することができます。
関連する公式の記事は下記のリンク先にあります。
また、インターネットコンピュータがイーサリアムと統合する計画があります。
これにより、例えば、インターネットコンピュータ上で実行されるフロントエンドアプリケーションから、イーサリアムのスマートコントラクトを円滑に実行することができるようになります。
「Internet Identity」による認証と、イーサリアムのスマートコントラクトを組み合わせることで、より幅広いDappsを実現することができると考えています。
例えば、Metamaskのようなウォレットを使わなくとも、「Internet Identity」によって認証を行うだけで、つまり、FaceIDやTouchIDのような生体認証だけで、いちいちウォレットに接続する操作を行うことなく、安全にDeFiの取引を行うことができるようになる可能性があります。
また、DeFiだけでなくその他のサービスも、プラットフォームの運営者やクレジットカード会社等の仲介者不在で、まるで財布からお金を取り出して支払いを行うような感覚で、Web上で直接取引ができるようになるかもしれません。
まとめ
ブロックチェーン技術は日々進化しており、今後Webの世界がどのように変化していくのか楽しみです。現在、AmazonのAWSやGoogleのGCP等のクラウドサービスを中心に、中央集権的にWebアプリケーションが展開しています。インターネットコンピュータは、AWSやGCP等のクラウドサービスをブロックチェーン技術を使って非中央集権化しようとするプロジェクトです。Webアプリケーション自体をブロックチェーン上で動作させることができ、非中央集権的に止まること無く動き続け、また、上記のような個人情報の問題を解決します。
実際には、Webの世界が完全に分散化して非中央集権化するためには、その他にも様々なハードルがあると思いますが、このような革新的なアイデアが実際に登場しているということに、筆者はワクワクしています。
もし、インターネットコンピュータが世界中に普及することになれば、従来の世界のビジネスの構造が大きく変化する可能性があります。
インターネット自体が、1990年頃に誕生してまだ30年程の歴史しかありません。Dfinityのインターネットコンピュータを始めとしたブロックチェーン技術によって、Webの世界が非中央集権的に変革していくのか、また、その他の新たな革新的なアイデアが生まれるのか、Webの世界がどのように変革していくのか、今後の動向が楽しみです。
この記事が気に入ったらサポートをしてみませんか?