プライベートなコンピュータ処理の検証

この投稿はプロキシ構成の公開に続く、Braveの「プライバシーのデザイン」シリーズの第二回の投稿です。

チャレンジ

データ最小化の原則は、ビジネスのために必要なデータのみを収集することを規定しており、オンライン・プライバシーの基礎となるものです。そもそもデータを収集しなければ、データを悪用したり、販売したり、紛失したりすることはできません。しかし、時には機密データを扱う必要があり、秘匿マルチパーティ計算 準同型暗号のような暗号化手法が使えない場合があります。

少し変わった例で考えてみましょう。例えば、Braveが年に一度、あなたの誕生日をお祝いしたいと考えたとしましょう。ほとんどの企業は、このようなサービスを構築するために、すべてのユーザーの誕生日をデータベースに保存しています。そしてそのデータベースを毎日チェックし、誕生日の人に誕生日祝いを送ります。しかし、誕生日というのはデリケートなものです。特にデータ漏洩のリスクを考えると、企業(または広告主)があなたの誕生日を保存することが必ずしも必要なことではありません。

データ漏洩のリスクを考えると、企業(または広告主)があなたの誕生日を保存することが必ずしも必要なことではありません。

Braveはあなたの誕生日を保存することなく、このようなサービスをどのように構築することができるでしょうか。もっと広義に考えるなら、個人データを処理するあらゆるサービスを、実際にデータを確認することなく構築するにはどうしたらよいでしょうか。この問いに答えるには、まずセキュア・エンクレーブという技術を紹介する必要があります。

セキュア・エンクレーブ

セキュア・エンクレーブは、コンピュータがプログラムやデータから切り離された状態で情報を処理することを可能にします。オペレーティングシステム(OS)はコンピュータの基盤であり、Braveのようなアプリケーションを実行するための環境を提供します。もし、OSにセキュリティホールがあれば、コンピュータ上のすべてのデータが危険にさらされますが、セキュア・エンクレーブは、この問題を低減することができます。セキュア・エンクレーブは、コンピュータの中にある隔離された別の小さなコンピュータのようなものだと考えてください。メインコンピューターが危険にさらされても、セキュア・エンクレーブは影響を受けず、信頼することができるのです。多くのCPUメーカーは、サーバー用とコンシューマー用の両方のCPUで、このようなセキュア・エンクレーブを提供しています。例えば、IntelはTrust Domain ExtensionsとSGXを、ARMはTrustZoneを、AMDはSEVを提供しています。多くの企業がエンクレーブを創造的な方法で活用しています。Signalはプライベートな連絡先の発見に、AppleはFace IDに、その他にも著作権保護やブロックチェーンにこの技術は使用されています。

そしてBraveは、誕生日のお祝いに使うこともできます。

これを実証するために、私たちはAmazonが2020年に発表したAWS Nitro Enclavesをベースに新しいセキュア・エンクレーブを構築しました。他のVMとリソースを共有しない仮想マシン(VM)であるため私たちはNitro Enclavesを選定しました。これにより、長年SGXを悩ませてきたサイドチャネル攻撃のようなバグを排除することができます。さらに、私たちはNitro Enclave内でネットワーク接続されたアプリケーションを実行できるようにするため、nitridingと呼ばれる無料のソフトウェアツールキットを構築しました。Nitridingによって、私たちの誕生日サービスをエンクレーブで実行することができるようになりました。とはいえ、3つのアタックのことを考慮する必要があります。

  1. もしもBraveが誕生日を漏えいさせたいとしたら?
  2. もしもBraveがあるバージョンのコードを実行していると主張しながら、密かに別のバージョンを実行していたら?
  3. もしもBraveがエンクレーブで誕生日を取得しようとしている処理を傍受しようとしたら?

アタック1:データ漏洩

Braveがセキュアなエンクレーブにログインして、すべての誕生日データを取得しようとするのを止めるにはどうしたらよいでしょうか。この攻撃は、Nitro Enclavesの設計そのものによって防がれています。Braveがエンクレーブの中で実行されるコードを書いても、私たちBraveもAmazonも(他の誰も)実行時にコードとそのデータを見ることはできません。つまり、私たちは中に入るデータや中で起こっている計算を見ることができないのです。Nitro Enclaveは、基本的に密閉されたブラックボックスなので私たちはログインできません。誕生日データはエンクレーブに入ると、しっかりと保護されるのです。

Nitro Enclaveは、基本的に密閉されたブラックボックスなので、私たちはログインできません。誕生日データはエンクレーブに入ると、しっかりと保護されるのです。

アタック2:不正コードの秘密裏な実行

以下の良性コードと悪性コードはほぼ同じですが、悪性コードには誕生日を晒す関数(赤でハイライトされています)が含まれています。Braveが良性の疑似コードを実行すると主張しながら、代わりに悪意のあるコードを実行することを止めるにはどうしたらよいでしょうか。

func send_wishes() {     for b in birthdays {         if b == today {             send_wishes(b)         }     }     sleep(24h); }
func receive_birthdays() {     while true {         birthday = receive_birthday();         save_in_database(birthday);     } }
a) Benign Code
func send_wishes() {     for b in birthdays {         if b == today {             send_wishes(b)         }     }     sleep(24h); }
func receive_birthdays() {     while true {         birthday = receive_birthday();         save_in_database(birthday);         leak_to_attacker(birthday);     } }
b) Malicious Code

この攻撃は、Nitro Enclavesのリモート・アテステーションという機能が防ぎます。ユーザーは、我々が実行すると主張するコードが実際に実行されているコードであることをインターネット上で確認することができます。もし私たちがこっそり違うコードを実行しても、Nitroシステムの暗号認証プロセスにより、発覚してしまいます。リモート認証により、Braveが実行すると言っているコードが実際に実行されていることが確認できるのです。

注: このシリーズの別のブログ記事で、リモート認証が実際にどのように機能しているのか解説しています。

アタック3:転送中のデータの傍受

エンクレーブのメモリから誕生日を抜き出したり、悪意のあるコードをこっそり実行したりすることはできないかもしれませんが、エンクレーブに送信される誕生日をBraveが傍受することを止めることはできるでしょうか。

この攻撃は、当社のNitridingツールキットが防ぎます。Nitridingは、エンクレーブの内部で動作するWebサービスを公開し、そのWebサービスのHTTPS証明書をNitroシステム自体が発行する証明書に暗号化しつつバインドします。これにより、ユーザーは、中間者を介さずに直接エンクレーブとやりとりしていることを確認することができます。言い換えれば Brave(または他のサードパーティ)は、エンクレーブの有効なHTTPS証明書を取得することはできますが、信頼の根源として機能する証明書類で悪意のある証明書を参照することはできません。ユーザーは、クライアントによって強制される暗号学的保証を受け、エンクレーブとやりとりしていることが明確にわかります。

デメリット

ここまでの話をまとめます。アリスがBraveから誕生日祝いを受け取りたい場合、彼女はまず誕生日サービスのソースコードを監査し、コードが安全でセキュアであることを確認します。次に、アリスはエンクレーブのアプリケーションとTLS接続を確立し、アリスが監査したばかりのコードが実行されていることを確認します。最後に、アリスは自分の誕生日が安全なままであることを知っているので、エンクレーブのアプリケーションに進んで自分の誕生日を伝えます。

このケースでは、Braveは検証可能な非公開の計算を使用する方法を示しています。

しかし、Nitro Enclavesは万能薬ではありません。私たちは、その設計がIntelのSGXよりも安全で柔軟であると考えていますが、Nitro Enclavesはまだ新しい技術であり、セキュリティ研究者も引き続き厳しい監視を続けています。もう一つの欠点は、Nitro Enclavesの所有者の性質的な面です。AWSはアーキテクチャを公開していますが、ハードウェアの設計、およびソフトウェアの一部は依然として非公開であり、Amazonへの信頼が必要です。これは、他の多くのエンクレーブの設計と変わりませんが、非公開のハードウェアとソフトウェアは第三者が簡単に検証することができないため、依然として問題が残ります。

このような制限を念頭に置き、私たちは過度に信頼しすぎることのないよう、慎重にエンクレーブのアプリケーションを試してみることにしました。次回のブログでは、そのようなアプリケーションの一つである、プライバシーを保護する製品分析(privacy-preserving product analytics/P3A)システムの改修作業で重要な役割を果たすサービスを紹介します。

Related articles

Braveで新しいWebを体験する準備はできましたか?

Braveはプライバシーとパフォーマンスを重視するWebのパイオニアからなるチームによって開発されています。Braveを利用しWebの再構築に協力していただけませんか?

close

もう少しです...

最高のオンラインプライバシーを60秒で入手

ダウンロードが自動で開始しない場合は、 .

  1. Brave をダウンロード

    ポップアップウィンドウで「保存」をクリックし、ダウンロードが完了するのを待ちます。

    ダウンロード完了までしばらくお待ちください(場合によってはポップアップウインドウの “保存” をクリックする必要があります)。

  2. インストーラーを実行

    画面右上にあるダウンロード済みファイルをクリックし、指示に従ってBraveをインストールしてください。

    ダウンロードしたファイルをクリックし、指示に従ってBraveをインストールしてください。

  3. インポート設定

    設定中に、古いブラウザからブックマーク、拡張機能、パスワードをインポートします。

ヘルプが必要ですか?

どこでも、より良いプライバシーを

Braveアプリをダウンロードして、出先でもモバイルのプライバシーを確保しましょう。

Download QR code
このファイルをクリックしてBraveをインストール Brave logo
このファイルをクリックしてBraveをインストール Brave logo
このファイルをクリックしてBraveをインストール Brave logo