普通のLinuxから難攻不落のQubes OSに乗り換えてみた

わたしはパソコンOSとしてLinux MintやUbuntu, FedoraなどのLinuxディストリビューションを使い続けてきましたが、ここ最近パソコンのセキュリティを大幅に強化するため Qubes OSを使うようになりました。以下ではQubes OSに関心がある人向けに、Qubes OSとはどんなものなのか記事を書いてみました。

Qubes OSって何?

Qubes OS はセキュリティを重視したパソコン向けのOSです。仮想化のテクノロジーを使うことで、敵に侵入されてもプライバシーの侵害やマルウェアの被害を最低限に抑えるような作りになっています。内部的には Xen(ゼン)の仮想化プラットフォーム上で FedoraやDebianさらにはWhonixのLinuxが動いています。Redditあたりで一番セキュリティが堅牢なパソコンのOSって何かという質問が出ると、セキュリティにウルサイ回答者たちは Tails と並んで Qubes OSを勧めることが多いようです。このQubes OSは正直言ってかなり難解です。Linuxに慣れている人にとってもけっこう難しいです。あまり気軽に人に勧めるようなものではないのですが、セキュリティを大幅に強化したい人はQubes OSにトライしてみる価値はあると思います。

Qubes OSのデフォルトの画面
図1. Qubes OSのデフォルトの画面

エドワード・スノーデンとQubes OS

アメリカの諜報機関は世界中のインターネット通信を監視しているという機密を暴露したのがエドワード・スノーデンです。 その スノーデンの自伝 を読んでいたら、後書きに Qubes OSに対する謝辞が書いてあったので、どういうOS何だろうと調べてみたのが私がQubes OSを知るようになったきっかけです。スノーデンは Twitter でも Tor, Whonixとともに Qubes OSを使用していることを明らかにしています。 現在モスクワに滞在中のスノーデンは機密漏洩で逮捕状を取られておりアメリカが総力をあげて追っています。当然NSAなどのアメリカ諜報機関は彼のIT機器に侵入しようと常に狙っているわけです。スノーデン自身がアメリカの電子諜報システムを使って敵を監視する業務に従事していました。その手の内をよく知る彼がどうにかしてNSAの魔の手から逃れようとして使っているのが Qubes OSなのです12 Embed from Getty Images

Qubes OSを採用しているところ

有名所だとLet's encryptで内部の開発者の人たちが認証局(Certificate Authority)を保護する目的で Qubes OSを使っているそうです。 また英語圏のマスメディアでは、情報提供者の秘密を守るために Securedrop というシステムを採用しているところが多いです。情報提供者はTorブラウザ経由でマスコミの Securedropシステムにアクセスします。たとえば BBCでも以下のようにSecuredropを用いて匿名の人によるタレコミができるようになってます。

BBCのSecuredropの画面(Torブラウザでアクセスする)
BBCのSecuredropの画面(Torブラウザでアクセスする)

このSecuredropのシステムは標準では TailsとUbuntuサーバーで運用する とのことですが、Qubes OSを採用する新しいプロジェクトが試験的に始まっているそうです。

そのほかの企業では VPNのMullvadが開発・運用に Qubes OSを使い続けているそうです。 このようにQubes OSはセキュリティとプライバシーの確保に神経をとがらせるような企業・組織に採用されています。

Qubes OSのしくみ

Qubes OSの仮想化: 一見どこに仮想化が使われているのか分からないのが特徴

さてQubes OSは仮想化によりセキュリティを強化しているのですが、以下のQubes OSの画面をご覧ください3

Qubes OSで4つのキューブを使用しているところ
図3. Qubes OSで4つのキューブを使用しているところ

4つのウィンドウがQubes OSのデスクトップ上に並んでいますが、一体どこに仮想化が使われているのか分かりますか? Firefox, VLCメディアプレーヤーなど4つのアプリケーションを単に同じOS上で使っているようにしか見えません。VirtualBox、VMwareなどで仮想化を利用したことがある人にとって、おなじみの仮想化は以下のようなデスクトップ環境の上にもう一つ別のデスクトップ環境が入れ子になったものでしょう。

QubesOS上でLinux Mintが「ゲストOS」的に使われているところ
図4. QubesOS上でLinux Mintが「ゲストOS」的に使われているところ

図4の画像では Xfceのデスクトップ環境の上に Linux Mint のCinnamonデスクトップ環境が乗っています。こういう入れ子式の仮想化もQubes OSでは可能で、HVMというやり方で別のOSをインストールすることができます。しかし日常的にQubes OSで使用する仮想化は図3の4つのウィンドウが乗ったタイプのほうです。

図3の4つのウィンドウは実はすべて別々の仮想OS上に乗って動いているのです。VirtualBoxなどで言うゲストOSのことを Qubes OSでは仮想マシン 4またはキューブ 5 と呼びます。たとえば図3左上のfirefoxでQubes OSの公式サイトが表示されているウィンドウは personal というキューブで動いていて、右上のウィンドウでYoutubeを映している動画プレーヤーVLCは untrusted というキューブで動いています。なお、各キューブ上で複数のソフトウェアを使うことはもちろん可能ですし、それが普通です。

各キューブにはそれぞれのテーマカラーを決めることができて、たとえば personal は黄色、untrustedは赤が割り当てられています。アプリケーションのウィンドウのタイトル部分にはキューブの名前が表示され、そのテーマカラーでウィンドウの枠が囲まれています。

このように仮想化することで、たとえば untrustedキューブで表示中の動画ファイルが改変されていてマルウェアに感染してしまったとしてもその感染は untrustedキューブだけにとどまり、personalキューブで動いている firefoxの入出力の内容やworkキューブに置いてある仕事に関するドキュメントが盗まれることを心配する必要がないのです。

Qubes OSのデフォルトではアプリケーションを動かすキューブとして、untrusted, personal, work, vault, anon-whonixの5つのキューブが用意されています。これは5つのパソコンを持っているようなもので、どれか1つがハッカーに侵入されても残り4つは無事ですむわけです。このように仮想化でキューブごとに孤立化させることで安全化を図ることは security by compartmentalization(区画化による安全化) または security by isolation (分離による安全化)と呼ばれます。

普通のLinuxやWindowsでVirtualBoxなどを使って security by compartmentalization をやろうとしても、なかなかうまくいかないと思います。4つ、5つのゲストOSを同時に動かしつつ、それらを画面上に綺麗にならべてパソコンを使いたいと思っても、入れ子式のデスクトップ環境が邪魔をしてしまうでしょう。そもそもデスクトップ環境を4つも5つも動かすこと自体がメモリやCPUなどのリソースの無駄です。Qubes OSは各キューブのデスクトップ環境を表示することをやめることで、このあたりの無駄を省いてスマートに仮想化を使えるようにしているのです。

また、キューブ間のテキストのコピーアンドペーストやファイルのやり取りもサポートされており、複数のキューブを使い分けながら作業することがスムーズにできるようになっています。このあたりは VirtualBoxやVMwareと同じですね。Qubes OSでは単にウィンドウが同じデスクトップ上に複数並んでいるだけですから、複数の仮想OSに散らばっているアプリケーションが同一のOS上にあるのに近い感覚で作業できるのがQubes OSのすごいところです。

Appキューブ: untrusted, personal, work, vault, anon-whonixなど

普段使うためにデフォルトで用意されているキューブは untrusted, personal, work, vault, anon-whonixの5つです。これらはウェブを閲覧する、動画を見る、文書を作成する、プログラミングをするなど日常用途に使うためのキューブでappキューブと呼ばれます。"Appキューブ"とはアプリケーションを使うためのキューブという意味です。

ここで5つのキューブのぞれぞれのおおまかな使い方を解説しておきます。untrustedは"信頼できない"という意味ですから、Webブラウザで色々なサイトを訪ねるなど少々リスクが高い作業に使うものです。personalは個人の趣味や友達との通信などに使い、workは仕事関連の作業用です。vaultは「金庫」を意味するのでデータを安全に保管するためのキューブです。vaultはインターネットにつながっていないので、万が一vaultキューブがコンピューターウィルスに感染しても情報流出を心配する必要がありません。anon-whonixはその名のとおり Whonix が動いているキューブであって、すべての通信がTorを経由します。TorのおかげでIPアドレスが漏洩する心配がないので、anon-whonixは匿名の活動をしたいときに便利なキューブです6

Qubes OSのセキュリティモデル

これら5つのキューブ以外にも自分で好きなだけ新しいappキューブを作成して使い分けることができます。たとえばネットショッピング専用のキューブ、オンラインバンキング専用のキューブ、Twitter専用のキューブなどオリジナルなappキューブを好きなだけ作れます。パソコン生活を複数のセグメントに区分してそれぞれを特定のキューブに割り当てることで、どこか1つのキューブに攻撃者が侵入してきたとしてもそれ以外は無事ですむように備えるというのがQubes OSのコンセプトです。

Qubes OSにおいてキューブ内の安全性は普通のLinuxと大差ないことには十分注意してください。以下はQubes OSの Security design goals からの引用です。

...a buggy web browser running in a Qubes domain could still be compromised just as easily as on a regular Linux distribution. (キューブ内で動いているWebブラウザにバグがあったら、それはふつうのLinuxディストリビューションで動いている場合と同じくらい容易に攻撃者に侵入されるでしょう)

www.qubes-os.org

これは言い換えると、とあるキューブで1時間Firefoxを利用していてそのキューブがハッキングされる確率と、Ubuntuなどで1時間Firefoxを利用してパソコン全体がハッキングされる確率は同じようなものだということです。 あるキューブが Webブラウザの脆弱性を利用されて敵に侵入された場合、オフィスソフトや別のWebブラウザの活動内容なども漏洩してしまうリスクがあります。これは普通のWindowsやLinuxでも起こり得ることです。しかし、そのような被害があくまでも1つのキューブ内に収まるのがQubes OSの強みです。

このようなリスクを最小限に抑えるためには、危険な作業はそれ専用のキューブでやるべきです。うかつにメールの添付文書やHTMLリンクを開けるとフィッシング被害にあうかもしれないので、添付文書を開けるなどの行為はディスポーザブル のような別のキューブで行うべきです。ウェブブラウザで少々あやしいファイルをダウンロードするなどの行為もリスクを伴います。そのようなリスキーな作業は untrustedやディスポーザブル のような危険行為専用のキューブで行うようにしようというのが Qubes OSの考え方です。

また、untrusted, anon-whonixなど赤いテーマカラーがついているキューブはリスクを伴う作業をするキューブであり、黄色の付いた personal には中間的な危険度があり、青色の work はおそらく安全な行為しかやってはいけないキューブというのが大まかな使い分けかたの目安です。マルウェアが広がるのを防ぐためには危険なキューブから安全なキューブにファイルを移動するのも避けるべきとされています

ワークスペースを使って画面を整理する

同じスクリーン上に例えばworkキューブのFirefoxとgnomeターミナル, personalキューブのFirefoxとgnomeテキストエディタなどが同時に開いているとゴチャゴチャして混乱してくると思います。この問題はワークスペースを活用すると解決できます。LinuxにおけるワークスペースはMac OSのSpaces, Windowsの仮想デスクトップに相当するものです。

Qubes OSのデフォルトではタスクバーの右あたりにワークスペースの切り替えのツールがあり、4つのワークスペースが開いています。この切り替えツールにワークスペースの小窓が4つ並んでいるのでそこをクリックするとワークスペースの移動ができます。

ワークスペースの切り替えツール
図5. ワークスペースの切り替えツール

たとえば workキューブのFirefoxとターミナルをワークスペース1で開いたら、personalキューブのFirefoxやテキストエディタはワークスペース2で開くようにすることで作業が整理整頓できます。 FedoraやUbuntuなど普通のLinuxではワークスペースを使ってこなかった人も Qubes OSでワークスペースを使いこなすことは必須だと思います。

テンプレート: ルートディレクトリをappキューブに供給するキューブ

Qubes OSを使いこなすために理解しないといけないのがテンプレートという仕組みです。テンプレートは、ホームディレクトリ以外のルートディレクトリを他のキューブに提供する特殊なキューブです。この仕組みは、

  • "personal, untrusted など通常のキューブ" は "ネットカフェや学校のパソコンルームの利用者" みたいなもの
  • "テンプレートのキューブ" は "システム管理者" みたいなもの

と考えるとわかりやすいと思います。ネットカフェのパソコンでは、利用者が最初に起動すると管理者があらかじめインストールしておいたソフトウェアが使えるようになっていますが、利用者が自分で好きなように新しいソフトウェアをインストールすることも可能です。でも再起動するとパソコンはシステム管理者が設定した初期状態に戻り、利用者がインストールしたソフトウェアはすべて消えてなくなります。

似たようなことがQubes OSでも起こります。personal, untrusted などのappキューブは起動時にテンプレートのキューブからルートディレクトリを自分のメモリ領域にコピーしてから仮想OSが起動し始めます。personal, untrusted などが個別に持っている独自データは /home/user/ などごく一部だけです。ホームディレクトリは独自データですから、作成したドキュメントやブラウザの履歴などは再起動してもきちんと残ります。しかしappキューブのターミナルから sudo dnf install ... または sudo apt install ... とやってそのキューブにインストールしたソフトウェアはシャットダウンするまで一時的に使えるだけです。そのキューブを再起動すると再びテンプレートからルートディレクトリをコピーするからインストールしたはずのソフトウェアは綺麗サッパリ消えてしまいます。

ネットカフェのシステム管理者が設定を変更して何か新しいソフトウェアをシステムにインストールすると、すべてのパソコンからそのソフトウェアが使えるようになります。同じようにテンプレートのキューブにおいてターミナルから sudo dnf install ... または sudo apt install ... と入力して何か新しいソフトウェアをテンプレートにインストールすると、そのテンプレートに基づくすべてのappキューブからそのソフトウェアが恒久的に使えるようになります。テンプレートでソフトウェアを削除するか、あるいは、システムのアップデートを行うとそれらもすべてappキューブ側に反映されます。

このテンプレートの仕組みがセキュリティの強化に貢献していると考える人もいます。なぜならappキューブを再起動するとappキューブの作業中にインストールしたソフトウェアが消滅するのと同様に、appキューブ内のルートディレクトリに侵入したマルウェアも綺麗サッパリ消えるからです。しかしながらマルウェアがホームディレクトリに常駐化の仕組みを作ることもありえるので必ずしも安全なわけではありません。Qubes OSの公式サイトでは、

This might seem like an excellent anti-malware mechanism to be used inside the qube. However, one should be careful with treating this property as a reliable way to keep the qube malware-free. (テンプレートはキューブの中で使用される優れたアンチ・マルウェアの仕組みに思えるかもしれません。でもこの仕組みを、キューブをマルウェアフリーに保つうえで確実な方法として考えることには慎重にならないといけません。)

と言っています。テンプレートシステムの意義はセキュリティではなく、ルートディレクトリ用のディスク領域を節約し、複数のキューブに対してシステムアップデートを一気にできることなど効率性にあると考えるのがよいのかもしれません。

万が一テンプレートが攻撃者に乗っ取られてしまうと、テンプレートからルートディレクトリをコピーする work, personal などの作業用のキューブもルートを取られてしまいます。このようなことが起きないよう、テンプレートではソフトウェアのアップデート・インストール以外はネットにつながらないようになっています。テンプレートでは Firefoxなどを使ってはいけないし、PDFファイルを閲覧したり、音楽を聞いたりすることもマルウェアの感染リスクを伴うのでやってはいけません。

Fedora, Debian, Whonix テンプレート

テンプレートはデフォルトでは Fedora, Debian, Whonixの3種類が用意されています。FedoraとDebianの両方が使えるので、Linuxで使いたいソフトウェアは大体そろうと思います。Fedoraでは RPM Fusion のリポジトリを有効にすることもかんたんにできますし、Google Chromeのリポジトリも使いたい人はすぐに使えます。BraveブラウザやマイクロソフトVisual Studio Code などの外部のリポジトリを追加することも可能です。

Braveブラウザのインストールも可能
図6. Braveブラウザのインストールも可能
Visual Studio Codeのインストールも可能
図7. Visual Studio Codeのインストールも可能

また、IPアドレスの漏洩を防いでプライバシーをしっかり守りたいひとは、Whonixを利用できます。Whonixはすべての通信を Tor で行うことで、通信経路の秘密を守ります。エドワード・スノーデンは Qubes と Whonix を毎日使っていると書いているので、 おそらくは FedoraテンプレートやDebianテンプレートに基づくappキューブではなくて、anon-whonixなどの Whonixテンプレートに基づくappキューブを常用しているのではないかと思います。NSAあるいはファイブ・アイズ7に対抗するなど国家機関の監視から逃れることを目的とする場合は、Whonixを利用するキューブだけをインターネットにつなげるというのがいいのかもしれません。ちなみにQubes OS全体やFedora, Debianのアップデートも Tor経由でやるよう設定することもできます。Whonixはセキュリティ・プライバシーを大幅に強化してくれますが、Torの通信速度が遅いせいで何やるにも待たされたり、動画利用は難しくなったりするなど使いづらいことは覚悟する必要があります。

ディスポーザブル: 使い捨てタイプの仮想環境

生活用品や医療用品などに「ディスポーザブル」と呼ばれる使い捨てタイプの商品があります。ディスポーザブルなマスク、ディスポーザブルタイプのコンタクトレンズなどのことです。これらは汚れたり、細菌やウィルスが付着してしまった場合のリスクを考えて、一回使用しただけで捨てます。

Qubes OSにも似たような発想で、使い捨てタイプのキューブが使えるようになっています。ディスポーザブルと呼ばれるタイプのキューブがそれです。このディスポーザブルは、ちょっとあやしいWebサイトを閲覧する場合や不審なメールの添付ファイルを開く場合などに用いるキューブです。ディスポーザブルタイプのキューブは使用時に初めて作成され、コンピューターウィルスへの感染に備えて一回使用したらすぐにシステムから削除されます。ディスポーザブルはシャットダウンすると、ホームディレクトリのファイルも含めてすべてのキューブのデータが消去されます。

1時間ディスポーザブルのキューブでFirefoxを使ってWeb閲覧をして、最後にスパイウェアに感染した場合を考えてみましょう。この場合、Firefoxを開いたときに初めてキューブが作成されるのでホームディレクトリには特に個人データは無い状態です。1時間Web閲覧をしたことでできたFirefoxの閲覧履歴はスパイウェアに取られてしまうがそれ以外は何も取られずにすむというのがディスポーザブルの利点です。

ディスポーザブルを使ってYoutubeを見ているところ
図8. ディスポーザブルを使ってYoutubeを見ているところ

work, personalなどの普段使っているキューブで不審なURLやファイルを開いてしまうと、そのキューブに保存された個人データが流出するおそれがあります。そのような被害を防ぐには、少しでもリスクを感じたら通常のキューブからディスポーザブルの利用に切り替えるべきです。ディスポーザブルを使うのか、それとも untrustedキューブを使うのか、work, personalキューブを使うべきかなどの判断はユーザーにまかされています。漫然といつも同じキューブで作業を続けているとデータ流出リスクは普通のOSを使っているのと大差ないと思います。このようなキューブの使い分けがQubes OSを使う上で悩まされるところです。

sys-netとsys-usb: ネットワークとUSBの脆弱性に備えた専用キューブ

ネットワーク8やUSB関連のバグ・脆弱性はこれまで多数見つかっていて、そのせいでルートが取られてしまうリスクがあります。Qubes OSはそのようなリスクに対する備えも万全です。Qubes OSはやはり仮想化によってこの手の危険性に対処しています。ルートを取られてしまうといっても、仮想マシンのルートが取られるだけなら危険を封じ込めることができます。

Qubes OSのネットワーク層の処理は、ネットワークを専門的に取り扱う特別なキューブにまかせています。それはデフォルトでは sys-netというキューブです。sys-netにはイーサネットやWifiのデバイスが割り当てられ、Network Managerなどが実行されています。ネットワークを取り扱う sys-netは攻撃を受ける可能性が高いことから、赤いテーマ色が付けられています。赤色はこのキューブは攻撃者が侵入してるかもしれないので気をつけるべきだというメッセージです。ですからsys-net上ではFirefoxなど通常のソフトウェアを動かしたり、個人的なデータを保存したりすることは避けないといけません。

USBはコンピュータのセキュリティを守る上で致命的な弱点をかかえています。BadUSBと呼ばれる脆弱性が代表格で、USBの規格に起因するのでパッチも当てられないまま長期間放置されたままです。細工が施されたUSBをパソコンに挿してしまうとそのままルートが取られてしまいます。最近は加工された BadUSBが郵便で送られてくるような事件 も起きているそうです。そのうえ、だれでも簡単にUSB攻撃できるようなツールが売られています。

また、Qubes OSの発明者のJoanna Rutkowskaによれば パーティション・テーブルに細工するタイプの攻撃手法も深刻なリスクだそうです。 パソコンが攻撃者に侵入されたあと、USBスティックやUSB接続の外付けHDD, SSDのパーティションテーブルが改悪されてしまうと、それを挿した他のPCも感染するような攻撃が可能になります。一旦感染したパソコンでOSを再インストールしても、その外付けの記録装置をUSBでつないだ途端に再感染してしまうというシナリオもあり得るのです。

このようなUSB関連の危険性に対して、やはり仮想化で対処するのがQubes OSのやり方です。USBを専門的に取り扱う専用の仮想マシンを用意することで、ルートを取られるのはその仮想マシンに限定するのです。sys-usbというキューブがそれです。sys-usbにも赤い色が割り当てられ、危険なキューブであることを知らせています。sys-usbはネットワークにつながっていないので、ルートを取られても情報が流出する心配はありません。

企業や病院などで厳重なセキュリティを実施するために、インターネットから切り離されたクローズドなネットワークを構築しているケースがあります。インターネットと組織内部のネットワークは直接触れ合っていないのでこのような安全化の仕組みはしばしば「エアギャップ」と呼ばれます。しかしUSBの脆弱性を利用してエアギャップのある機密性の高いクローズドなシステムから情報が盗まれる事例が報告されています9。企業環境でもエアギャップを守るために、Qubes OSがインストールされたパソコンをUSBディスクを接続する専用の機器として使うことを検討してもいいのではないかと思います。

sys-firewall と sys-whonix

sys-*** という名前のキューブは他に sys-firewall と sys-whonix の2つがあります。sys-firewall はQubes OS内部にあるルーターのファイアウォールみたいなものです。例えば work キューブが自分の会社のサーバーにしかアクセスできないよう設定し、そのルールをsys-firewallで実行することができます10

そういう制限は work キューブの iptables コマンドで設定すればよいような気もしますが、メールの添付ファイルについていたマルウェアによってファイアウォールの設定が解除されて情報が流出するかもしれませんから、work とは独立のキューブでファイアウォールを動かしたほうが安全です。LAN内からの攻撃にさらされる sys-net にファイアウォール機能を持たせるのもまた危険ですから、完全に独立した sys-firewall というキューブがあるわけです。sys-firewallは安全地帯にあるキューブであるという意味で緑色のカラーが付与されています。

sys-whonix は Tor 通信を専門的に行うキューブです。anon-whonix はこのsys-whonixを経由して通信することで Torに接続しています。anon-whonix自身はTorブラウザでフィッシングに引っかかるなどしてマルウェアに感染するリスクがあるので、どのTorノードを使っているのかなど匿名性を破ってしまう情報は別のキューブにもたせる必要があります。それが sys-whonixなのです。sys-whonixは他所から侵入されないところだという意味で、黒いテーマカラーになっています。

sys-firewallもsys-whonixもセキュリティやプライバシーを守るうえで大事なキューブですから、マルウェアに感染しないよう気をつけないといけません。これら2つのキューブではWebブラウザなど普通のアプリケーションを使うべきではありません。

Qubes OS内部のネットワーク

Qubes OS内部のネットワークのつながり方は、デフォルトでは以下の図のようになっています。untrusted や personalなどFedora及びDebianテンプレートベースの Appキューブは sys-firewall につながっています。そしてsys-firewallはsys-netにつながり、sys-netからパソコンの外のネットワークに出て、インターネットにつながります。vaultキューブはネットワークにつながっていません。anon-whonixなどの WhonixテンプレートベースのAppキューブは sys-whonixにつながり、 sys-whonix が sys-firewallにつながっています。

Qubes OS内部のネットワークのフローチャート
図9. Qubes OS内部のネットワークのフローチャート

このネットワークの構成も自分で好きに変更できます。例えばpersonalキューブを一時的にネットワークから遮断することも簡単にできます。untrustedキューブをsys-whonixにつないでTor経由でネット接続させることも可能です。

また、VPNにつなぐ専用のキューブを新たに作成して、そのVPNキューブに他のAppキューブをつなげるようなこともできます。Tor over VPNという最初にVPNにつないでつぎにTorネットワークにつなぐようなことも、あるいは、VPN over Torという最初にTorネットワークにつないでからVPNにつなぐようなことも可能です。最初に第1VPNプロバイダにつないでからその次に第2VPNプロバイダにつなぐVPN over VPNなども自在にできます。

Dom0: Qubes OSのコントロールセンター

Qubes OS全体を統括する管理用のキューブは dom0 (ドムゼロ. domain zeroの略) と呼ばれます。Dom0というのはXenの用語です。Qubes OSのdom0のOSにはFedoraが採用されています11

Dom0に攻撃者の侵入を許すとQubes OS全体の「ルートが取られた」ことを意味します。Dom0からは他のキューブをすべて管理できます。Dom0を乗っ取るとすべてのキューブでマルウェアを作動させたり、スクリーンショットを撮って画面を流出させるなど何でもやりたい放題できます。Qubes OSの公式サイトによれば

If dom0 were ever compromised, it would be “game over.” (Dom0がやられてしまえばゲームオーバーだ)

ということです。

Dom0はVirtualBoxなどにおけるホストOSに似ているように思えますが、ホストOSではなく実際には仮想マシンです。実際dom0に割り当てられているメモリはハードウェアのメモリ合計よりも少なくなっています。Dom0は仮想マシンであるからこそUSB機器やネットワーク機器を直接dom0につながないという芸当が可能になり、BadUSB攻撃やLAN内からの攻撃にさらされずにすむのです。

セキュリティを守るためにdom0には色々な成約があります。公式レポジトリからのインストール・アップデート以外はdom0からインターネットにつながらないようにできていますし、dom0に外部から余計なファイルを持ってくることも厳禁です12。普通のキューブからテキストデータをコピーアンドペーストしてdom0に持ち込むのも簡単にはできないようになっています。このせいでdom0でコマンドを打つとき、公式サイトに乗ってるやり方をコピペで貼りつけることができず、いちいち自分で手打ちをする必要があります。そういう慎重なやり方が嫌いで、中身も確認せずにネット上で見かけたコマンドをコピペで実行してしまうズボラなタイプの人にはQubes OSは向いていないのかもしれません。

大量の仮想マシンが動くQubes OS - ゼロデイ脆弱性に備えるOS

パソコンのスイッチを入れてQubes OSを起動させて、ログインをすませます。そうするとユーザーが作業を始める前から既に dom0, sys-firewall, sys-net, sys-usb, sys-whonix の5つの仮想マシンが動いています。おそらくそのあとユーザーはappキューブを複数個立ち上げて作業を進めるでしょう。つまりQubes OSを使うとき、合計10個前後の仮想マシンが動くのはごく普通にあることなのです。セキュリティを確保するために、すさまじい重武装をしているような気分になります。

このせいでQubes OSはPCのリソースをかなり消費します。メモリを十分に積んでいないとフリーズすることが多くなり、使いものにならないと感じるかもしれません。動作環境は6GBのメモリが最低限ですが、16GBのメモリが推奨されてます。CPUが貧弱だと個々のキューブの起動は遅くなり、PCを快適には使えません。

Qubes OSは単に重いだけではありません。どのキューブのどこのディレクトリに何のデータが保存されているのか探すのに苦労したり、ネットで見たあの記事の履歴やブックマークはどのキューブのどのウェブブラウザにあるのか思い出せないなど迷子になることもしばしばです。

そうなってくると、Qubes OSなんていう面倒なものはやめてWindowsや普通のLinuxを使っていればよいではないかと思えてくるかもしれません。でも従来型のOSはたくさんの卵を一つのバスケットに入れているようなものであって、その使い勝手の良さの裏にはマルウェア・スパイウェアに感染するとすべてを失うという大きなリスクが隠されているのです。

Joanna Rutkowskaの業績一覧を見るとよく分かるのですが、彼女は最初は新しいタイプのルートキットを作成するなど攻撃側のセキュリティを中心に研究していました。攻撃側の研究者から見れば現在のOSのセキュリティはザルみたいなものなのでしょう。そうなると、攻撃者に侵入されることを大前提にしたOSが必要になってくるわけです。侵入されたとしてもそれは仮想環境内部で食い止めるという発想でQubes OSが生まれたのですね。

Qubes OSの根本思想はSecurity by compartmentalization、区画化による安全化です。区画化による安全化の例は、船舶の設計やマンションの防火などにも見られます。船舶の一部が浸水する、あるいは、マンションのどこか一室で火災が起きるのは一定の確率で起きますから、そのような緊急事態に対応できるよう区画化によって事故が全体に広がらないよう注意深く設計がなされています。

OSというのは攻撃され侵入されるスキが必ずあるはずだと想定して、どこかに侵入されてもOS全体にはマルウェアが広がらないよう注意深く区画化されるべきである。 こういう現実主義・悲観主義に基づいて作られたのがQubes OSなのです。

以下はThe EconomistがJoanna Rutkowskaに取材したときの記事の一部です。彼女がどうしてQubes OSを作ったのかよく分かると思います。

The solution, argues Joanna Rutkowska of Invisible Things Lab, is to "assume breach." A former offensive security researcher, she grew frustrated with how easy it was for her to subvert the operating systems she tested. So in 2010 she decided to build her own: Qubes OS. Rather than try to create a bug-free operating system, she assumes in advance that every part of the operating system contains zero-days, and designs the system accordingly.

([訳] Invisible Things LabのJoanna Rutkowskaの主張によれば、[ゼロデイ脆弱性が蔓延していることへの]解決策は「侵入を仮定すること」だという。もともと攻撃サイドのセキュリティ研究者であった彼女は、試してみたOSがあまりにも容易にハッキングできることに苛立ちをおぼえるようになってきたという。そこで2010年に自分でOSをつくることにしたのがQubes OSだ。バグフリーのOSをつくろうとするのではなく、OSのどのパーツにもゼロデイ脆弱性があると前もって仮定して、その仮定に基づいてシステムを設計するのだ。)


  1. ちなみにエドワード・スノーデンはQubes OSを使う前は Tailsを使っていた そうです。
  2. エドワード・スノーデンの自伝を翻訳した山形浩生さんも Qubes OSの解説記事 を書いています。
  3. 右上の映像に映っている人がQubes OSを開発したJoanna Rutkowska。現在はQubes OS開発の一線から退いています
  4. 仮想マシンは英語では virtual machine. Qubes OSの用語ではVMと略されることが多いです
  5. "キューブ"は cubeではなくqube とつづります。
  6. どこかのWebサイトを読むだけでもこちらのIPアドレスのログは取られてしまいます。そのような痕跡を残すのも嫌だというときにWhonixは強力なツールになります。しかしTor経由の書き込みは受けつけていないサイトは多いし、Tor通信はかなり遅いのでWhonixの使い勝手は必ずしもよくありません。
  7. 米・英・カナダ・オーストラリア・ニュージーランド5カ国による国際的な監視網(信号諜報)のグループのこと。日本の諜報機関にもNSAで使われている監視システムXKeyscoreが提供されていること報道されています。
  8. ネットワークの脆弱性はDNSクライアントDHCPクライアントWifiのドライバやファームウェアなどに見つかることがあります。
  9. JPCERTの「USB ストレージに保存されたデータを窃取するサイバー攻撃に関する注意喚起」や、ESET社による「15年間にわたるエアギャップネットワークを標的としたマルウェアフレームワークの攻撃手法」を参照。
  10. Appキューブごとのファイアウォールのルールは、dom0から Qube Managerというツールにより設定できます 。そのルールが実行されるのが sys-firewallです。sys-firewallのターミナルから sudo nft list ruleset と入力するとファイアウォールのルールが設定されているのが確認できます。
  11. Dom0のOSがFedoraであり、テンプレートにはFedora, Debianが採用されていることからQubes OSはしばしば Linuxのディストリビューションの1つであるとされますが、実際にはXenのディストリビューションであるといったほうがよいだろうと公式サイトでは言っています
  12. このせいで壁紙ひとつ新調するのも結構面倒です。インターネットから壁紙をダウンロードして作業用のキューブで全画面表示してから、そのスクリーンショットを取ってdom0に画像を保管することで安全に新しい壁紙を導入できます。