Web1.0からWeb2.0へ移行した際、企業はさまざまな新しいセキュリティリスクに晒されました。ユーザーが誰でもインターネットにコンテンツを投稿できるようになり、信頼できない悪意あるインプットによってWebサイトの安全侵害、データ漏洩、データベースの感染が起こりやすくなる可能性があったのです。
企業がWeb3の新世界を探り始めるにつれて、新たなセキュリティ脆弱性が次々と現れることでしょう。これまで見られなかった脆弱性も出てくるかもしれません。Web3を試している企業は、それらの問題に対処するための新しいアプローチが必要になるでしょう。
Web3は、分散共有されるWebのバージョンのビジョンです。Web3のテクノロジーは、変更や更新に過半数のコンセンサスを必要とする分散型データベースを基にしています。
Web3と従前のWebテクノロジーとの違いを以下にまとめます。
Web 1.0はRead(読み取り):ユーザーはWeb上のデータを取得できますが、操作はできません。
Web 2.0はRead-Write(読み取り+書き込み):ユーザーは、コンテンツをアップロードするなどしてWebにデータを提供します。
Web3はRead-Write-Own(読み取り+書き込み+所有):ユーザーはデータを提供するだけでなく、自分のデータを所有します。
このRead-Write-Ownのコンセプトは、以下の基本原則によって実現します。
インターネットの創設以来、Webアプリケーションは長らく中央集権型のプロバイダーが制御してきました。それらのプロバイダーは、アプリケーションのロジックとデータを 制御し、編集や消去を自在に行えます。
Web3では、接続されたノードのピアツーピア(P2P)ネットワーク上にWebアプリケーションが分散しています。中央の権威者や制御者は居らず、データは全ノードで常に閲覧可能ですが、ネットワークのコンセンサスなしに消去や変更をすることはできません。
Web3では、新たなトランザクションや更新の検証にネットワークから過半数のコンセンサスが必要です。ブロックチェーンは、コンセンサスを得るのにプルーフオブワーク(PoW)とプルーフオブステイク(PoS)という検証メカニズムを使用しています。
Web3は、サポーティングネットワークからの合意なくデータの変更や削除が行われないようにするため、暗号学、特にハッシングに依存しています。
たとえば、ブロックチェーンの任意のブロックだけを変更することは、次のブロックにハッシュが記録されているためできません。ブロックの変更は次のブロックの値も変化させ、それに続くブロックのハッシュを順に無効化します。つまり、変更をするとブロックチェーンの残りの部分を大かた変更しなければならなくなるのです。そのような変更はありますが、サポーティングネットワークから幅広いコンセンサスを得なければならず、極めてリソース集約的です。
このことは、いろいろな意味でWeb3をWeb2より安全にします。参加クライアントはリクエストしたデータを過不足なく確実に受け取り、リクエストしたデータが変更されたり、何か悪意のあるものと置換されたりする可能性はありません。クライアントが中央集権型プロバイダーを信頼する必要はありません。暗黙の信頼がブロックチェーンに組み込まれているからです。
企業は、分散型アプリケーションアーキテクチャや復元性の高いファイルストレージ方法など、Web3の可能性をさまざまに模索しています。
ブロックチェーンは、分散型ネットワーク上に時系列のデータブロックの形でトランザクションを記録する方法です。ブロックチェーンに書かれたデータは変更できません。
最もよく知られるブロックチェーンアプリケーションは暗号通貨で、今日使われている分散型金融(DeFi)サービスに欠かせない構成要素になっています。一方、開発者は、非代替性トークン(NFT)などブロックチェーンを使って実行する分散型アプリケーション(DApp)を書くこともできます。
スマートコントラクトはDAppのロジックです。スマートコントラクトは特定の関数を実行するためのコードで、他のすべてのプログラム可能な関数と同様、呼び出されて実行します。スマートコントラクトはブロックチェーン上で作成され、保存されます。
開発の観点からみれば、DAppは、アプリケーションをサポートするのに必要なバックエンドインフラ全体の管理・維持が不要という利点があります。スマートコントラクトはブロックチェーン上に保存され、自律的に実行されます。DAppをデプロイしている企業は通常、ユーザーインターフェースも同時にデプロイして保守する必要があります。その際、中間サービスを利用してバックエンドでスマートコントラクトへAPIクエリを行います。
DAppは大規模なP2Pネットワークで稼働するため信頼できます。一方、中央集権型のアプリはそれを支えるインフラがダウンするとアプリもダウンしてしまいます。
DAppの主要ユースケースの1つが金融で、暗号通貨からウォレット、分散型取引所まで幅広い使用例があります。また、開発者はこれまでにDApp Webブラウザー、ゲーム、ソーシャルネットワークなどのサービスも構築しています。
分散型金融(DeFi)は、銀行のような中央集権型の権威的組織に依存することなく金融サービスを得られる一連の手段を言います。DeFiのユーザーは資金の貸付や借入、暗号通貨の購入、売却、交換、利息の受け取り、その他の金融サービス関連のタスクの実行を、すべて分散型のプラットフォームで行えます。DeFiは概してスマートコントラクト上に構築(イーサリアムブロックチェーンがサポート)されています。中央集権型の取引所もDeFi(Coinbaseなど)をサポートしていますが、DeFiプロトコルは本来分散型です。
ブロックチェーンは、分散型のトランザクションストレージであるが故にWeb3の中核を成す構成要素になっています。しかし、企業が試しているアーキテクチャタイプはブロックチェーンだけではありません。Web3の原則を実装するためのもう一つの(非ブロックチェーン)プロトコルが、InterPlanetary File System(IPFS)です。IPFSは、分散型ファイルシステムにデータを保存します。IPFS経由で提供されるコンテンツのアドレスは変更できません。更新すると一意のコンテンツアドレスが新たに作成されます。また、IPFSは分散型アーキテクチャで、中央集権型の保存手段よりも復元性と信頼性が高くなっています。
IPFSによって、企業は信頼性の高い方法でコンテンツをユーザーに配信でき、ユーザーは独自のコンテンツを自分の環境からパブリッシュすることができます。
Web3はその基本原則上、Web2.0より安全な点がいくつかあります。もちろん、どのテクノロジーにも言えることですが、Web3がもたらすセキュリティリスクもあります。Web3とWeb2.0のアーキテクチャが相互作用する方法に由来するセキュリティギャップもあれば、ブロックチェーンやIPFSなどのプロトコルが機能する方法に内在するリスクもあります。しかも、Web3はネットワークコンセンサスに依存するため、それらのリスクや他の欠陥へのパッチ適用に時間がかかります。
主なセキュリティリスクには次のようなものがあります。
未認証のリクエスターに個人情報を渡してはいけないことは、たいていの人が知っています。それにもかかわらず、Web3アプリは接続端を認証しないAPI呼び出しと応答に依存する場合が多いのです。
理論上はWeb3は完全な分散型で、ネットワークに接続されたノードはすべて、保存されたデータと直接やり取りできます。ところが実際は、Web3アプリのフロントエンドは依然、ユーザーエンドポイントが容易にやり取りできるWeb2.0テクノロジーに依存する必要があります。Web3アプリのフロンドエンドはたいてい、ビジネスロジックとデータストレージにWeb3バックエンドへのAPIクエリを使っています。
現在、Web3 APIクエリの多くは暗号署名が施されていません。このため、オンパス攻撃やデータ傍受、その他の攻撃に対して脆弱です。暗号化されず署名もないHTTP Web2.0アプリを使うとユーザーがデータ漏洩やオンパス攻撃に対して脆弱になるのと同じです。つまり、上記の「暗黙の信頼」の概念にもかかわらず、Web3アプリのデータが正当なソースからのものだという保証はない場合が多いのです。
どのコードでもそうですが、スマートコントラクトにも、ユーザーデータ(多くの場合、ユーザーの資金)をリスクに晒すような大きなセキュリティ問題が含まれている可能性があります。2019年の調査で、イーサリアムのスマートコントラクトのコードが稚拙だったために400万ドル相当のイーサがリスクに晒されたことが判明しました。時間が経過しても問題は解決していません。2021年12月には、スマートコントラクトの欠陥を突いた攻撃者がデジタル通貨約3100万ドルを盗んでいます。さらに、2022年5月には、アルゴリズムの欠陥が原因で暗号通貨TerraUSDの価値 が約500億ドル下落しました。
ブロックチェーン上のデータはどのノードからでも保存とアクセスが可能です。データベースへのアクセスに厳しい制限があるWeb2.0モデルとは対照的です。そのため、どんなデータが保存されているかによっては、セキュリティとプライバシーに関する複数の懸念が生まれます。保存中は匿名化されているとはいえ、リサーチでは一貫して真に匿名のデータはないことが示されています。
メディアには、暗号通貨やNFTウォレットへの攻撃に関する記事が溢れています。たいていの攻撃は、攻撃者がユーザーのプライベートキーにアクセスしたり、フィッシングでユーザーを騙しプライベートキーを渡すよう仕向けたりして行われています。実際、プライベートキーがローカルでユーザーデバイス上に保存されていれば、物理的盗難に対しても脆弱になります。
今のところ、一般的にDAppとWeb3の主用途が暗号通貨であるため、攻撃も大半はデジタル通貨を狙ったものです。しかし、Web3テクノロジーを使った他のアプリケーションへの影響も、等しく厄介なものになる可能性があります。
Web3のすべてがブロックチェーン上に直接構築されているわけではありません。インターネットは複数の層(OSIモデルでは7層)が重なってできていますが、それと同様に、ブロックチェーン上にもプロトコルが構築されています。一つのブロックチェーンから別のブロックチェーンへの転送を可能にするプロトコル「ブリッジ」に広く依存していることが、その一例です。
これらのプロトコルも攻撃の標的になり得ます。たとえば、2022年2月にWormholeブリッジが悪用され、約3億2000万ドル相当の暗号通貨が盗まれました。
Web3は、セキュリティ問題が特定された後に修正を出すのが大変です。Web3は分散型ネットワークのコンセンサスに基づいて構築されているため、変更には必ずネットワーク全体の承認が必要だからです。
これはおそらく、Web3のセキュリティ に関する最大の問題でしょう。完全に安全なアプリケーションの構築は人間の能力では無理ですし、問題点をすばやく修正できなければ、発見後アクティブである時間が長くなり、セキュリティ問題の影響が拡大します。
ユーザー資格情報の盗難からクロスサイトスクリプティングまで、Web3のフロントエンドにはWeb2.0のフロントエンドと同じ脆弱性がまだ多くあります。Web3バックエンドにもかかわらずです。コード挿入、ボット、APIベースの攻撃、その他の脅威ベクトルが、アプリケーションとユーザーをリスクに晒す可能性があります。
HTTPリクエストと応答にTransport Layer Security(TLS)が広く使われるようになり、Web2.0のセキュリティが大幅に改善されました。同様に、Web3 DAppのAPIクエリと応答に暗号化とデジタル署名を適用することが、アプリケーションデータの保護に欠かせません。
企業はこれまでの数十年間、Web2.0のセキュリティ脆弱性に対する対策をしてきました。それで脆弱性の深刻度が下がるわけではありませんが、ユーザーアカウントの保護、コード挿入の防止、クロスサイトスクリプティングの阻止といった攻撃対策に使える手段が以前から存在していることは事実です。Webアプリケーションファイアウォール(WAF)、ボット管理、APIセキュリティといった対策により、アプリケーションフロントエンドへのさまざまな攻撃ベクトルを封じ込めることができます。
これはWeb2.0でも重要でしたが、(大半とまではいわずとも)多くの企業が、すばやいリリースとイテレーションという名目でこのステップを省略したり性急に進めたりしています。結局は、新たにリリースする機能や製品にどんなセキュリティ問題があろうとも、次のバージョンで修正すればよいのですから。
しかし、Web3ではそう簡単にはいきません。分散型アプリの更新や追加は、分散型ネットワーク全体からコンセンサスを得る必要があるため、Web1.0やWeb2.0より遥かに長い時間がかかるのです。そのため、セキュリティ脆弱性を特定すべき時は事後ではなく事前です。そうしたシナリオでは、コード監査がなおさら重要になってきます。
企業がWeb3を検討し、使い始めてみるにあたり、セキュリティを最優先しなければならないことは変わりありません。セキュリティホールがあれば、ビジネスに大きな支障が出たり、企業の評判に傷がつきかねません。また、Web3アプリケーションはWeb2.0スタイルのフロントエンドに依存するため、Web2.0とWeb3のセキュリティリスクを同時にカバーして安全を確保する必要があります。
Cloudflareは、オンプレミスネットワークの保護からクラウドへの移行、Web3のような先端モデルの採用まで、あらゆる状況の企業のセキュリティ問題対策をお手伝いします。Web3に関しては、フロントエンドとバックエンドの両方の保護と、Web3とのインターフェースを容易にするゲートウェイの提供でお役に立ちます。
CloudflareがWeb3インフラへの接続を管理し、その安全を確保しますので、企業は先端製品やユーザーが必要とするサービスの構築という重要な業務に集中できます。
この記事は、技術関連の意思決定者に影響を及ぼす最新のトレンドとトピックについてお伝えするシリーズの一環です。
この記事を読めば、以下が理解できます。
Web3と従来のWeb技術との違いについて
企業はWeb3を製品や運営にどう適用しているか?
Web3によくあるセキュリティリスク
そのセキュリティリスクを軽減する方法
Web3に備えるために、「Ethereum Gatewayに関するホワイトペーパー」で基本テクノロジーの仕組みを学びましょう。