Medium の DFINITY 公式の記事 The Internet Computer Blockchain’s Privacy Advantages (2021/12/15) の日本語訳です。
Internet Computer 上のキャニスタースマートコントラクトが、従来のウェブ以上に、どのようにエンドユーザーのプライバシーを保護するのでしょうか。
By Jens Groth, Director of Research | DFINITY
オンラインプライバシーとは、データの使用制限、不要な広告、監視と追跡、不正使用からの保護など、外部からの侵入を防ぐことです。この原則は、Internet Computer ブロックチェーンの中心的なものであり、ユーザーは、開発者が作成・デプロイしたキャニスタースマートコントラクトとやり取りして、分散型アプリケーション(dapps)、DeFiプラットフォーム、NFT、ウェブサイト、トークン化したインターネットサービスをオープンウェブ上で直接実行できます。
誰でも Internet Computer 上でキャニスターを開発・デプロイできます。開発者の意図は、プライバシーに配慮したものから侵害的なものまで、さまざまです。この記事では、キャニスターの運用におけるプライバシーの範囲と、従来のウェブよりもエンドユーザをより良く保護する方法について説明します。また、基礎となる Internet Computer のアーキテクチャとそれによるプライバシーへの影響についても説明します。
アプリケーション層のプライバシー
まず、標準的なキャニスターインターフェイスによりアプリケーション層で提供されるプライバシーについて説明します。開発者は Internet Computer 上に、キャニスターという形で Dapps を立ち上げることができます。ユーザはソフトウェアを使って、ミリ秒単位で処理されるクエリーコールと数秒単位で処理されるアップデートコールにより、キャニスターとやり取りできます。例えば、OpenChat で受信した最新のメッセージを問い合わせたり、Distrikt で他のユーザのプロファイルを読んだりできます。しかし、クエリーコールはキャニスタの状態を変更できません。つまり、キャニスターはあなたのリクエストに関する情報を保存できません。開発者は、キャニスターに任意の読み取り専用インタフェースを提供して、高度なデータ処理を行うことはできますが、キャニスターはあなたのクエリーから何も情報を思い出すことはできません。キャニスターは、あなたのクエリーを処理したことさえ知りません。
キャニスターに何かを保存するには、ソフトウェアがアップデートコールを行う必要があります。OpenChat でメッセージを送信したり、Distrikt でプロフィールを更新する場合、他のユーザへ表示できるように、関連するキャニスターに情報を保存する必要があります。キャニスターは、データをどのように処理するかによって異なります。キャニスターは、原則として、あなたが送信したすべてのアップデートコールを記録し、あなたのアップデートコール履歴を第三者に販売できます。
データ収集の対策として、仮名があります。アップデートコールには送信者識別子(プリンシパル)があります。キャニスターが許可すれば、特別な匿名プリンシパルを使用して接続できます。この場合、キャニスターは誰がリクエストを送信したかを知ることができません。キャニスターが送信者プリンシパルを必要とする場合、他のキャニスタとのやり取りと簡単にリンクできないように、このキャニスタとのやり取りのみに使用するプリンシパルを持つことができます。
Internet Identity は、仮名プリンシパルを提供する暗号認証システムです。Internet Identityは、ソルトでシードされた疑似ランダム関数を適用し、認証に使用する各アプリケーションに対して、あなたに代わって個別のプリンシパルを作成します。ソルトを知らな い人は(そのセキュリ ティについては後述のプラットフォームプライバシーセクションで説明する)、プリンシパルを互いにリンクできません。もちろんキャニスターは、同じ送信元プリンシパルによる複数のアクセスを追跡できますし、ペイロード自体やアップデートコールのタイミングからあなたに関する情報を知ることはできますが、従来のウェブ上のソフトウェアと比較すると、できることがより制限されています。
暗黙のうちに、ユーザーソフトウェアが適切にクエリーコールとアップデートコールを発行することを私達は信頼しているのです。Internet Computer インターフェース仕様 は、キャニスターへのインターフェースを詳細に記述しており、誰でも Internet Computer とやり取りするためのソフトウェアを書くことができます。もし、あなたが使うソフトウェアがあなたのプライバシーを侵害しても Internet Computer はそれを修正できません。さて、そのソフトウェアは、あなたが使っているキャニスターから独立しているわけではなく、開発者が開発者のキャニスターとの相互作用を容易にするために提供したものかもしれません。実際、ブラウザで Internet Computer にアクセスする場合、通常はアプリ自身が提供するフロントエンドを通じてキャニスターにアクセスします。悪意のあるフロントエンドは、クエリーコールの代わりにアップデートコールを呼び出して、キャニスターに情報を漏らそうとするかもしれません。また、ペイロードを通じてキャニスターに情報を漏らす、または、第三者に直接送信する可能性もあります。しかし、従来のウェブと比較すると、そのような攻撃は偽装しにくいかもしれません。通常、クエリーコールはミリ秒単位で処理されるのに対し、アップデートコールは数秒かかることがあるため、一方を他方に置き換えると、タイミングに大きな差が生じます。第三者への漏洩は、通信パターンを監視することで発見できる可能性があります。そもそも、誠実なソフトウェアを使うことが一番の解決策であり、後述するように、Internet Computer から配信されるソフトウェアが正しいかどうかを検証することは、従来のウェブよりも容易です。
Internet Computer の高度化に伴い、透明性の向上が期待されます。その一つの選択肢として、キャニスターの検証可能なビルドがあります。キャニスターは、WebAssembly(Wasm)モジュールという形で開発者から提供されます。決定論的なコンパイラは、Wasmモジュールを元のソースコードに直接リンクすることができます。検証可能な構築されたキャニスターのソースコードを検査することで、データがどのように処理されるか、また、キャニスターが他のキャニスターとユーザーにどのような情報を共有するかを正確に確認することが可能です。キャニスターは Internet Computer 上で決定論的に実行されるので、キャニスターがユーザーに提供するもの、例えば、ブラウザーでアクセスするユーザーに提供するフロントエンドが良性であるという保証を得ることもできるかもしれません。たとえ、あるキャニスターがソースコードの公開を望まないとしても、途中で支援が得られるかもしれません。例えば、プライバシー保護をサービスとして提供し、ユーザーとクローズドソースのキャニスターの間でプライバシーを保証する仲介役として、検証可能に構築されたキャニスターが存在するかもしれません。Internet Identity は、プライバシー保護サービスの一例として見ることができ、仮名プリンシパルを介して他のキャニスターへのアクセスを提供します。
プラットフォームのプライバシー
キャニスターが動作しているアプリケーション層の下に目を向けて、プラットフォーム自体のプライバシーへの影響も理解する必要があります。Internet Computer は分散型ネットワークを運用しており、データと計算は世界各地にあるデータセンターのノード間で複製されています。この分散型構造は、可用性と完全性の観点から優れています。データを処理し、正しい処理を保証する能力は、この分散型アーキテクチャによるものです。もう一つの顕著な分散化の特徴は、ICPトークン所有者が、Network Nervous System 内の投票ニューロンにトークンをステーキングすることによって、Internet Computer ネットワークへの変更案について投票することです。Internet Computer への変更は、コミュニティによって採択または拒否される前に、公にレビュー、精査、議論でき、投票者はユーザーの要求と満足度を高める変更をサポートするように動機付けされます。
残りの問題は、機密性の確保です。現在の設計では、Internet Computer は、多様なノードの集合によって運営される分散型のコアで構成されています。コアをサービス妨害攻撃から保護し、ユーザーメッセージを正しいキャニスターにルーティングするために、Internet Computer との通信は一連のバウンダリーノードに依存しています。それらのバウンダリーノードは、例えば、送信ユーザーのIPアドレス、およびユーザーがどのキャニスターに送信しているか、とペイロード を見ることができます。(Internet Computer への通信とその内部の通信はすべて暗号化されているが、バウンダリーノードは受信トラフィックを復号化し、それを再び暗号化します)。将来的には、分散化されたバウンダリーノードの構造が可用性を保証し、例えばオニオンルーティングを利用してユーザーデータの機密性を維持することが期待されています。
ここで、複製された計算が行われる Internet Computer のコアに目を向けてみます。データは複数のノードに複製され、各ノードはそれぞれ独立したノードプロバイダによって所有されており、他のノードから独立しているため、そのうちの1つが悪意を持ち、ユーザーデータを第三者に売却するなど、データを悪用しようとする危険性があります。我々は現在、Internet Computer が機密データ処理に利用できる2つの戦略、すなわちハードウェアでサポートされる機密性とセキュアなマルチパーティ計算の研究に取り組んでいます。
ハードウェアメーカーは、分離されたコンピューティング環境を提供するセキュアエンクレーブの開発を進めています。重要な目標は、クラウド上のユーザーデータを保護することです。クラウドコンピューティングでは、ハイパーバイザーがユーザーからの計算を別々の仮想マシンに割り当てます。従来のクラウドコンピューティングでは、クラウドプロバイダーはすべてのデータにフルアクセスすることができます。仮想マシンを安全なエンクレーブ内に配置することで、このリスクを軽減できます。AMDのSecure Encrypted Virtualization(SEV)など、この分野の最新のソリューションは、コードの一部がセキュアなエンクレーブ内で実行されていることを証明する保証と、メモリとレジスタの暗号化による機密保持を提供します。Internet Computer は、ノードに対してセキュアなエンクレーブ内でレプリカを実行するよう要求することができ、悪意のあるノードプロバイダがユーザーデータにアクセスすることを制限できます。しかし、1つのハードウェアメーカーだけを信用するか、複数ベンダーのハードウェアによるセキュリティソリューションを使用し、そのうちの1社に欠陥があった場合にデータを漏洩する可能性があるというリスクを負うか、コミュニティは決定する必要があります。
多くのユーザーにとっては、ハードウェアによる機密保持で十分だと考えています。しかし、機密性の高いデータ、例えば鍵のマテリアルなどについては、Internet Computer 上のサービスとしてセキュアなマルチパーティ計算が想定されます。セキュアなマルチパーティ計算では、完全性、可用性、そして非常に多数のノードが正直である場合に機密性を提供します。このアプローチでは、セキュリティはハードウェアの仮定に基づくのではなく、セキュアなマルチパーティ計算プロトコルに組み込まれ、協調的に達成されるものです。ハードウェアの多様性が許容されるだけでなく、プライバシーの保証も強化されます。セキュアマルチパーティ計算の欠点は、効率性のオーバーヘッドが大きいことです。したがって、我々は2つのソリューションが共存することを期待しています。非常に機密性の高いデータに対しては、キャニスターは Internet Computer が提供するセキュアなマルチパーティ計算サービスを利用でき、一方、プライベートだがクリティカルではないデータに対しては、セキュアなエンクレーブのあるサブネット上で実行したいでしょう。
____
smartcontracts.org で構築を開始し、forum.dfinity.org で開発者コミュニティに参加しましょう。