Qubes OS基本的な使い方・アップデート方法

このポストではQubes OSの基本的な操作方法やインストール直後に行うアップデートなどについて解説していきます。以下はインストールしたあと、Qubes OSを初めて起動した直後のスクリーンショットです。

Qubes OS 最初の起動時のスクリーンショット
Qubes OS 最初の起動時のスクリーンショット

Qubes OSの基本的な操作方法

キューブあるいは仮想マシン(Virtual Machine =VM)とはVirtualBoxVMWareなどでのゲストOSに相当するものです。デフォルトで用意されているキューブのおおかまな区分は以下のとおりです。

  • work - 仕事用
  • personal - 個人の用事向け
  • untrusted - さまざまなWebサイトを見るなどセキュリティリスクを伴う活動用
  • valut - ファイル保管用の金庫(ネットワークに接続していないキューブ)
  • anon-whonix - すべての通信をTorで行うプライバシー保護用のキューブ

キューブが違えば、たとえば同じFirefoxでもまったく独立したものです。workキューブ の Firefox の設定・閲覧履歴などは untrustedキューブ の Firefox の設定・閲覧履歴などとお互いになんの影響も及ぼさないのです。

work, personal, untrusted, vault, anon-whonixという5つの独立したパソコンを使っているようなものだと思えばいいのです。ですから、単に「Firefoxを使おう」という意識だけでは足りず、「workキューブのFirefoxを使おう」という認識でいかないとQubes OSはうまく使いこなせません。

アプリケーションの起動

workキューブ の Firefox を起動するには、画面左上の - Qube: work - work:Firefox の順にマウスで選びます。

workキューブのFirefoxを起動
workキューブのFirefoxを起動

または Alt + F3 を同時に押し、Application Finderに work firefox と打ち込んでエンターキーを押します。

Application FinderでworkのFirefoxを起動
Application FinderでworkのFirefoxを起動

これでworkキューブのFirefoxが起動します。

workキューブのFirefoxが起動したところ
workキューブのFirefoxが起動したところ

workキューブがまだ起動していない場合は、OSの起動をしないといけないのでFirefoxが使えるようになるまでやや待たされます。すでにworkキューブが起動済みの場合は素早くFirefoxが立ち上がります。CPUの性能が低い場合Qubes OSは動作がのろいなと感じるかもしれません。起動のにぶさは、仮想化により安全性を高めていることの代償といえるかもしれません。

ターミナルの起動方法

ターミナルとはLinuxのコマンドを打ち込むアプリケーションのことです。「端末」とも呼ばれます。以下では workキューブでターミナルを使うときを例にしてターミナルの起動方法を解説します。

  1. 画面左上の - Qube:work - work: Terminal の順にマウスで選ぶ
  2. Alt + F3 を同時に押して Application Finderに work terminal と入力してエンターキーを押す
  3. workキューブが起動済みの場合に、画面右上の 水色のキューブ - work - Run Terminal の順にマウスで選ぶ

の3通りのやり方で workキューブのターミナルが起動します。

workキューブのターミナル
workキューブのターミナル

ファイルブラウザの起動方法

ファイルブラウザはファイルやディレクトリを表示させるアプリケーションです。これもターミナルの場合と同様の方法で起動できます。

  1. 画面左上の - Qube:work - work: Files の順にマウスで選ぶ
  2. Alt + F3 を同時に押して Application Finderに work files と入力してエンターキーを押す
  3. workキューブが起動済みの場合に、画面右上の 水色のキューブ - work - Open File Manager の順にマウスで選ぶ

の3通りのやり方で workキューブのファイルブラウザが起動します。なお、2.のやり方をするときAlt+F3を押したあとWhonixベースのキューブの場合は、例えば anon thunar と入力すると anon-whonix のファイルブラウザが起動します。

workキューブのファイルブラウザ
workキューブのファイルブラウザ

キューブのシャットダウン方法

ここまで起動させてきたworkキューブのアプリケーションをすべて閉じて終了させても、workキューブそのものは動いたままです。メモリが不足しているときやCPUのパワーが足りないときは特に、使用していないキューブをシャットダウンさせたほうがQubes OS全体の動きがよくなると思います。キューブのシャットダウン方法をworkキューブを例にとって解説します。

  1. 画面右上の水色のキューブ - work - Shutdown を選択
  2. workキューブのターミナルから sudo poweroff または sudo shutdown now と入力
  3. Qube Manager の中から work の行をクリックして選択しておき、Qube Managerウィンドウ上部のShutdownボタンを押すか、あるいは、workの行で右クリックすると出てくるメニューからShutdownの項目を選択

のいずれかで workキューブをシャットダウンさせます。

なお、2.の場合でターミナルから sudo を使うときパスワードを入力することなく実行できます。Qubes OSはdom0も含めてすべてパスワード無しのsudoという設計になっています。

Qube Manager の起動方法

Qube ManagerはQubes OS上にあるすべてのキューブの管理を行うツールです。Qubes OSに慣れてくると頻繁に使うようになると思います。

Qube Managerを起動させるやり方は以下のいずれかです。

  1. 画面右上の水色のキューブ - 一番下の Open Qube Manager
  2. Alt + F3 を押してApplication Finderに "qube manager"あるいは "q m"などと入力してエンターキーを押す
  3. 画面左上の - Qubes Tools - Qube Manager を選択

Qube Managerでworkキューブを選択しShutdownボタンを押すところ
Qube Managerでworkキューブを選択しShutdownボタンを押すところ

キューブの起動方法

例えば personal キューブを使い始めたいときは、personalキューブの中のFirefoxやターミナルなどの使いたいアプリケーションを起動させることで personalキューブが起動します。これが基本的な使い方です。

もしもアプリケーションは特に起動させずにキューブのOSだけ前もって起動させたい場合は、Qube Managerから personalの行を選択しておいてから、1.)上部にあるStart/Resumeボタンをクリックする または 2.)右クリックして出てきたメニューからStart/Resumeを選ぶ とpersonalキューブが起動します。

キューブの再起動

アップデートを適用するときなどにキューブを再起動させることがあります。キューブの再起動のやり方は以下のいずれかです。以下はworkキューブを再起動させる場合です。

  1. 画面右上の水色のキューブ - work - 一番下の Restart を選ぶ
  2. Qube Manager で workの行を選択してから、上部の Restartボタンを押す(または右クリックすると出てくるメニューからRestartを選ぶ)
  3. workキューブをシャットダウンさせてから、何かアプリケーションを起動させる

なお、workのターミナルから sudo rebootと入力してもworkキューブがシャットダウンするだけで再起動はしません。

dom0のターミナルの起動方法

dom0はQubes OS全体を統括・管理するキューブです。Qubes OSが起動を完了したときにはすでにdom0は起動しています。新しいパッケージをdom0にインストールするときなどにはdom0のターミナルを使用します。

dom0のターミナルは以下のいずれかで起動させます。

  1. 画面左上の - 上から2個目の Terminal Emulator を選択
  2. デスクトップ上でマウスを右クリックして Open Terminal Here を選択
  3. Alt + F2 を同時に押して xfce4-terminal と入力してエンターキーを押す
  4. Alt + F3 を同時に押して xfce terminal と入力して正しいものを選ぶ

dom0のターミナル
dom0のターミナル

なお2.のやり方でdom0のターミナルを開けると、Desktopがカレントディレクトリになるので注意してください。

Qubes Updateによるアップデートその1

Qubes OSを使い始めてしばらくするとQubes OSのアップデートのチェックが自動的に行われ、画面右上の領域に以下のようなオレンジ色の光り輝くようなアップデートアイコンが出てきます。

Qubes OSのアップデートの通知
Qubes OSのアップデートの通知

このアイコンをクリックして、ドロップダウンメニューの"Launch updater"をクリックすると、Qubes Updateのアプリケーションが起動します。

Qubes UpdateがFedora 36のアップデートがあることを通知
Qubes UpdateがFedora 36のアップデートがあることを通知

上の画像では fedora-36のテンプレートにアップデートがあるということなので、"Next"を押すとアップデートが始まります。

fedora 36テンプレートをアップデートしているところ
fedora 36テンプレートをアップデートしているところ

この Qubes Updateを自分で起動したい場合は画面左上の をクリックし、ドロップダウンメニューから "Qubes Tools" - "Qubes Update"の順にクリックしてください。Alt + F3 キーを同時に押して qubes update (あるいは "q u")と入力してエンターキーを押すことでも Qubes Updateは起動できます。

Qubes Updateが fedora-36のアップデートに成功すると以下のように緑色のチェックマークが出ます(失敗すると赤いバツ印が表示されます)。アップデートの詳細を知りたいときは Detailsをクリックしてください。"Finish"を押してQubes Updateを終了させます。

fedora-36テンプレートのアップデートに成功
fedora-36テンプレートのアップデートに成功

自動アップデートのチェックでは debian-11にはまだアップデートが来てない表示でしたが、アップデートがあるかもしれないので手動でアップデートしてみましょう。

画面左上- Qubes Tools - Qubes Updateの順にクリックして Qubes Updateを立ち上げてください。Qubes Updateのウィンドウの下の方にある "Enable updates for qubes without known available updates"にチェックマークを入れます。debian-11にチェックマークを入れて"Next"ボタンを押すと、debian-11の手動アップデートが始まります。

debian-11テンプレートをアップデートさせる
debian-11テンプレートをアップデートさせる

アップデートが成功したら Finishを押します。

debian-11テンプレートのアップデートに成功
debian-11テンプレートのアップデートに成功

はじめてTorネットワークにつながるときの手続き

Anon Connection Wizardの処理

しばらく作業していると、つぎのような sys-whonix から Torネットワークに接続するためのメッセージが出てきます。これはQubes OSを2回目に起動するときに出ることが多いようです。

はじめてTor通信するときのポップアップウィンドウ
はじめてTor通信するときのポップアップウィンドウ

一番上は I would like to connect directly to the Tor network. This will work in most situations.(Torネットワークに直接つなぎます。大抵の場合はこれでうまくいきます)と書いてあり、これで良ければ Connectラジオボタンが選択されたままにして、Nextを押します。

Torの利用が禁止されているようなネットワークを使っている場合は直接Torにつながずに、最初にブリッジ接続と言って別のサーバーに迂回してからTorにつなぐやり方があります。そのようなやり方がいい人は、Configure を選んで Nextを押します。

Torを使いたくない人は Disable Tor を選んで Nextをクリックします。

詳細はWhonix公式の解説を参照してください。: https://www.whonix.org/wiki/Anon_Connection_Wizard

つづいてSummaryでTorのつなぎ方の概要が表示されます。"Next"を押します。

Anon Connection Wizard の summary
Anon Connection Wizard の summary

Torネットワークへの接続処理中:

Torネットワークへの接続処理中
Torネットワークへの接続処理中

Torに接続し終わると次のメッセージが出ます。"Finish"を押して作業を完了します。

Torネットワーク接続完了
Torネットワーク接続完了

この Anon Connection Wizard をユーザー自ら起動したいときは、画面左上 - Service: sys-whonix - sys-whonix: Anon Connection Wizard の順に選んでください。

sys-whonixのシステムチェック

Tor接続完了後しばらくするとTorの接続が正常なのか調査するシステムチェックのメッセージが出ます。

sys-whonixのシステムチェックの最中
sys-whonixのシステムチェックの最中

その後システムチェックの結果が出ます。INFOとWarningだけなら問題無いので、メッセージ内容を読んだらOKを押してください。このWarningはアップデートがありコマンドラインからアップデートせよという内容ですが、アップデートはQubes Updateツールを用いて行います。

sys-whonixのシステムチェック終了
sys-whonixのシステムチェック終了

Qubes Updateによるアップデートその2

Tor通信が開始されると whonixテンプレートのアップデートもできるようになります。以下では dom0も含めて残りのアップデートを片付けます。なお whonix は Tor 経由でアップデートするので、それなりに時間がかかります。

Qubes Updateを起動して "Enable updates for qubes without known available updates"にチェックマークを入れて、Nextボタンを押します。

dom0, whonix-gw-16, whonix-ws-16のアップデート
dom0, whonix-gw-16, whonix-ws-16のアップデート

アップデートが無事終了:

dom0とwhonixのアップデートが完了
dom0とwhonixのアップデートが完了

テンプレートキューブについて

ここまでやってきたfedora, debian, whonixのアップデートは正確に言えば、テンプレートキューブの中のOSをアップデートしたのです。 以下は画面左上のを押すと表示されるドロップダウンメニューです。

Qubes OSのドロップダウンメニュー
Qubes OSのドロップダウンメニュー

デフォルトでインストールされているテンプレートは上図の中で一番下の4つです。Qubes OS 4.1.1では debian-11, fedora-36, whonix-gw-16, whonix-ws-16の4つです。

その上の赤い Template (disp) は当面は無視してください。これらはOSのテンプレートとは全く異なるタイプのものでディスポーザブルのひな型となるものです。

2種類のWhonix (ゲートウェイワークステーション)

Whonixテンプレートは実は2種類あります。whonix-gw-16, whonix-ws-16の2つです。gwは gateway, wsはwork stationの略です。

VirtualBoxKVMなど普通の仮想環境でWhonixを使うときはゲートウェイワークステーションの2つの仮想マシンをインストールして使います。ゲートウェイの方がTor通信を一手に引き受けて処理する仮想マシンです。ワークステーションの方はWebブラウザやオフィスソフトなどを使う日常用途の仮想マシンです。VirtualBoxなどにおいては Whonixワークステーション -> Whonixゲートウェイ -> ホストOS -> (パソコンの外)の順に通信がつながっています。

Qubes OSの場合はテンプレートシステムがあるのでさらにややこしくなってきます。テンプレートはOSのアップデート・インストールを専門的に管理するキューブです。whonix-gw-16がゲートウェイのシステムアップデート等を担当します。whonix-ws-16がワークステーションのシステムアップデート等を担当しています。

sys-whonix は whonix-gw-16 のテンプレートに基づく「インスタンス」です。Qubes OSにおいて実際にTor通信を担当するキューブが sys-whonixです。理論的に言えば sys-whonixに追加してwhonix-gw-16テンプレートに基づく sys-whonix2 や sys-whonix3を新たに作ることも可能ですが、普通はやりません。

anon-whonixは whonix-ws-16テンプレートに基づく「インスタンス」です。anon-whonixはTorブラウザなどのアプリケーションを使うためのWhonixワークステーションの一種です。Qubes OSの場合Whonixワークステーションはいくつ作ってもよいし、セキュリティを確保するにはむしろそれが望ましいです。anon-work あるいは anon-finance など好きな名前でwhonix-wsベースの新しいappキューブを作るとよいでしょう(新しいキューブの作成方法はまた後日取り上げます)。

テンプレートをアップデートした後のappキューブの再起動

テンプレートキューブはルートディレクトリをworkなどのappキューブに供給する特殊なキューブです。テンプレートがアップデートされるとそのルートディレクトリが変更されます。

Appキューブは起動時にテンプレートキューブからルートディレクトリをコピーします。起動したあとはもうすでにコピーが終わっているから、appキューブのルートディレクトリとテンプレートのルートディレクトリとは独立したものになっています。Appキューブが動いているときにテンプレートにおいてアップデートやインストールをしてもそれはすぐにはappキューブに反映されません。テンプレートのルートディレクトリはテンプレートが稼働中は別の領域に保存されているということで、appキューブがコピー対象とする領域にアップデート・インストール等の変更が反映されるのは、テンプレートをシャットダウンしたあとです。ややこしい話ですが、つぎのことだけ頭に入れれば十分です。

アップデートやインストールがappキューブに適用される条件は、テンプレートがシャットダウンしているときにappキューブを起動することです。

workキューブが稼働中に fedora-36テンプレートがアップデートされた場合、画面右上の水色キューブ をクリックすると以下のように workキューブのところに再起動が必要である旨のアイコンが出現します。

workキューブの再起動が必要な知らせ
workキューブの再起動が必要な知らせ

ここでもしfedora-36テンプレートのキューブがまだ稼働中だったら、必要な作業終了後にfedora-36テンプレートを一旦シャットダウンしてください。そしてそのあと workキューブを再起動させると、workキューブにfedora-36テンプレートのアップデートが適用されます。

ネットワーク関連のキューブの再起動について

ネットワーク関連のキューブ3つ(sys-whonix, sys-firewall, sys-net)の再起動は少々面倒です。たとえば workキューブが動いている最中に sys-firewallを再起動しようとするとsys-firewallを利用している仮想マシン(VM)が他にあるから再起動は無理だというメッセージが出て拒否されます。

sys-firewallの再起動に失敗したときのメッセージ
sys-firewallの再起動に失敗したときのメッセージ

Torを使わずに通信するwork, personal, untrusted などのappキューブは、

  • Appキューブ -> sys-firewall -> sys-net -> (インターネットへ) という順序でネットワークがつながっています。

また、anon-whonix などのTorを利用するappキューブは、

  • Appキューブ -> sys-whonix -> sys-firewall -> sys-net -> (インターネットへ) という順序でネットワークがつながっています。

アップデート後にすべてのキューブの再起動をしたい場合、ネットワークの末端側からインターネット側に向かって(Restartではなく)シャットダウンしていきます。たとえばworkとanon-whonixを使っている場合は

  1. work, anon-whonix
  2. sys-whonix
  3. sys-firewall
  4. sys-net の順にシャットダウンしていきます。

そして再び起動するときはインターネット側からネットワークの末端方向に向かって

  1. sys-net
  2. sys-firewall
  3. sys-whonix
  4. work, anon-whonix の順にスタートさせればよいのです1

アップデート後にすべてのキューブを再起動させるのは結構面倒なので、私はネットワーク関係のキューブ(sys-firewallなど)に関しては再起動をサボってしまうことが多いです。(work, untrustedなどの)Webを閲覧するようなappキューブだけでもいいので再起動させたほうが安全でしょう。

テンプレートのターミナルの起動方法

fedora, debianなどのテンプレートのOSに新たにアプリケーションをインストールするなどの場合には、テンプレートのターミナルを起動して作業します。テンプレートのターミナルの起動方法は以下のいずれかでできます。以下は fedora-36テンプレートのターミナルを使う例です。

  1. 画面左上の - "Template: fedora-36" - "fedora-36: Terminal"の順に選択
  2. Alt + F3 を同時に押して、fedora-36 terminal と入力してエンターキーを押す
  3. fedora-36テンプレートがすでに起動済みの場合は、画面右上の 水色のキューブ - fedora-36 - Run Terminalを選択

アップデートについての注意事項

以下アップデートについての注意事項をいくつか書いていきます。

ターミナルからの sudo dnf upgrade, sudo qubes-dom0-update などは非推奨

Qubes OS R4.0まではテンプレートをアップデートするときターミナルから sudo dnf upgradesudo apt upgradeを実行するユーザーが多かったと思います。dom0をアップデートする場合はdom0のターミナルから sudo qubes-dom0-updateを実行していました。しかしR4.1になってからはターミナルからのアップデートは非推奨になって、Qubes Update のツールを使うことが推奨されています。公式ページには次のように書いてあります。

Warning: Updating with direct commands such as qubes-dom0-update, dnf update, and apt update is not recommended, since these bypass built-in Qubes OS update security measures. Instead, we strongly recommend using the Qubes Update tool

(訳) 警告: qubes-dom0-update, dnf update, apt updateなどのコマンドを直接叩いてアップデートすることは推奨されません。なぜならこれらは組み込みのQubes OSアップデートのセキュリティ機構を回避してしまうからです。そのかわりにQubes Updateツールを利用することを強く推奨します。

Qubes Updateツールでアップデートをかけると、disp-mgmt-fedora-36などの名前がついた謎めいたキューブが起動した旨のメッセージが出てきます。上で出てくる security measures はこのような仕組みのことを言っているのだと思います2

アップデートのために sudo dnf upgradeなどを使うのは非推奨ですが、新しいソフトウェアをインストールしたい場合はターミナルから sudo dnf installsudo apt installを使います。またソフトウェアを削除したり検索をかけるのもターミナルから dnf, aptを使います。

Qube Manager の Updateボタンも非推奨

Qube Managerの上で dom0 やテンプレートの行をフォーカスすると、ウィンドウ上部の Update ボタンが押せる状態になります。

Qube ManagerのUpdateボタンの使用は非推奨
Qube ManagerのUpdateボタンの使用は非推奨

公式マニュアルのアップデートの解説にはこの Updateボタンに関する言及が一切ありませんが、これはこの機能を使ってほしくないからだそうです。 dom0及びテンプレートのアップデートはQubes Updateツールを使用してください。

gnome-softwareは使用不可

fedora テンプレートのアプリケーションメニューには fedora-36: software というものがあります。

fedoraテンプレートのgnome-softwareを起動させるところ
fedoraテンプレートのgnome-softwareを起動させるところ

これは GUI を用いて fedora のパッケージのアップデート・インストールをするための gnome-software というソフトウェアです。

fedoraテンプレートのsoftwareは利用できない
fedoraテンプレートのsoftwareは利用できない

ところが gnome-software がネットワークにうまくつながらない問題があって事実上使えない状態になっています。 この Software と言う名のソフトウェアを使ってfodoraテンプレートのアップデートや新規インストールをしようとすると、ハングアップして永遠に完了しません。まちがって使わないように十分注意してください。fodoraテンプレートのインストール作業はQubes Updateツールから行いましょう。

アプリケーションメニューへのアプリ追加

画面左上の経由でアプリケーションメニューを表示させると、デフォルトではworkキューブで使えるアプリケーションは Files, Firefox, Terminalの3つしかありません。

workキューブは Qubes OS4.1.1 のデフォルトでは fedora 36 がテンプレートのOSになっています。fedora 36にインストールしてあるソフトウェアは、workキューブのアプリケーションメニューに追加すればすぐに使えるようになります。以下では Maps というアプリケーションを追加してみます。

- Qube: work - work:Qube Settings の順に選択して workキューブのSettingsウィンドウを開きます(Alt + F3同時押し - work settingsとタイプ - エンターキーを押すか、あるいは、Qube Managerでworkの行をフォーカスしておいて Settings ボタンを押すのでもかまいません)。

workキューブのSettingsウィンドウ
workキューブのSettingsウィンドウ

この Settings画面の一番上のタブから Applications を選択します。

workキューブのSettingsのApplicationsタブを選択
workキューブのSettingsのApplicationsタブを選択

左側の Available のメニュー一覧から Maps をクリックして選択します。画面中央の矢印ボタンが上下に4個並んでいるところの上から2番目の > のボタンをクリックすると、Mapsアプリケーションが右側の Selected に移ります。

ちなみに >> ボタンはすべてのアプリケーションを右側の Selected に移し、すべてのアプリケーションがメニューに表示されるようになります。 < ボタンは一個ずつ Selected から Avaiable に戻し、<< ボタンは Selected にあるアプリケーションをすべて Available に戻すものです。

workキューブでMapsを使えるようにするところ
workキューブでMapsを使えるようにするところ

このあとウィンドウ右下の Apply ボタンまたは OKボタンを押すと、Maps がworkキューブのアプリケーションメニューに追加されます。スクリーン左上の ボタン経由で workキューブの Maps を起動すると、無事Mapsが使えるようになります。

workキューブでMapsを利用しているところ
workキューブでMapsを利用しているところ

ソフトウェアのインストール

さきほどの Settingsの Applicationsタグで表示された Availableの一覧には無いソフトウェアを使いたい場合、新たにインストールする必要があります。Qubes OSで新規のソフトウェアをインストールする場合、かならず fedora 36, debian 11などのテンプレートのターミナルから sudo dnf install ... などのコマンドを叩かないといけません。

work, personal, untrustedなどのappキューブのターミナルから sudo dnf install ... とやってしまうと、一時的にそのソフトウェアは使えるようにはなるのですが、workなどのappキューブを再起動するとそのソフトウェアは消えてなくなってしまいます。

workなどのappキューブは、ホームディレクトリ以外はテンプレートのファイルをコピーして起動します。workのターミナルなどから sudo dnf install ... によってappキューブのルートディレクトリにインストールされたアプリケーションはメモリ上に一時的に存在しているだけで、ディスクに恒久的に保存されるわけではないのです。

以下では fedora 36 のテンプレートに数独アプリケーション(gnome-sudoku) をインストールして personalキューブで使用できるようにします。

画面左上 - Template:fedora-36 - fedora-36:Terminal の順に選んで fedora 36テンプレートのターミナルを立ち上げます。

fedora-36テンプレートのターミナル
fedora-36テンプレートのターミナル

以下のコマンドを入力します。

$ sudo dnf install gnome-sudoku -y

インストールが終わったメッセージが出たら Ctrl + Dを押してターミナルを閉じます。 つづいて、fedora 36テンプレートをシャットダウンします。画面右上の水色キューブ - fedora 36 - Shutdownの順に選んでください。

つぎに personalキューブで数独が使えるようにします。すでにpersonalキューブを起動させている場合は、いったんシャットダウンさせてください。

画面左上 - Qube:personal - personal:Qube Settings の順に選んで personalキューブの設定画面を表示させます。一番上のタブ一覧から Applications をクリックします。左側の Avaiable の一覧に Sudoku という項目があるのでそれをクリックします。

personalキューブで数独を使えるようにする
personalキューブで数独を使えるようにする

Settingsウィンドウ中央の上から2番目の右向き矢印の > ボタンを押して、Sudoku を右側の Selected に移します。OKボタンを押してウィンドウを閉じます。

画面左上 - Qube:personal - personal:Sudoku の順に選ぶと、 personalキューブで数独を遊ぶことができるようになりました。

personalキューブで数独をプレイ
personalキューブで数独をプレイ

うまく起動できないときは、テンプレートがまだ起動したままになっていないか確認してください。

  1. テンプレートからインストール
  2. テンプレートをシャットダウン
  3. personalなどのappキューブを再起動または起動

順序を守らないとうまくいきません。

Qubes OSのシャットダウン

パソコンをシャットダウンしたいときは、

  • 画面左上の - ドロップダウンメニューの一番下の "Log Out" - "Log out (ユーザー名)" のポップアップの中の"Shut down"を選ぶ

    Log out のポップアップ
    Log out のポップアップ

  • 画面右上のユーザー名 - ドロップダウンの中から"Shut Down"を選ぶ

  • パソコンの電源ボタンを押す - "Log out (ユーザー名)" のポップアップの中の"Shut down"を選ぶ

のいずれかの方法でやればいいと思います。

稼働中のキューブすべてのシャットダウン手続きが終了したあとにパソコンの電源をシャットダウンするので、起動してあるキューブが多いとシャットダウン全体の時間が結構かかると思います。使用を終えたキューブはあらかじめ自分でシャットダウンをしておいたほうが、パソコンのシャットダウンがスムーズにいきます。


  1. Qube Managerを使う場合 sys-netはこの順序とは無関係に Restart に成功するようです。でも、画面右上の水色キューブから sys-netを再起動しようとすると失敗するという奇妙な仕様になっているようです。

  2. 上級ユーザー向けの内容ですが、Qubes Updateと同等のアップデートを dom0のターミナルから qubesctl コマンドを用いて実行するやり方があります。dom0のアップデートは sudo qubesctl --show-output state.sls update.qubes-dom0, テンプレートのアップデートは、sudo qubesctl --show-output --skip-dom0 --templates state.sls update.qubes-vm と入力します。マニュアルはこちらにあります。 この qubectl を用いるとテンプレートのアップデートが並列処理になるようです。この qubesctlのやり方にどんな意味があるのかはこちらで議論されています(かなり難解ですが)。

Qubes OSインストールの仕方

今回は前回Qubes OSのISOをコピーしたUSBメモリを使ってパソコンにQubes OSをインストールしていきます。

事前準備

パソコンのUEFI(BIOS)の設定からSecure Bootをオフにして、仮想機能(インテルの場合はVT-x及びVT-d)をオンにすることを忘れないでください。 さらにUSBメモリから起動できるように適切に設定してください。

インストーラー画面解説

USBメモリをパソコンに差し込んでからパソコンの電源を入れます。 つぎの画面が出てきたら矢印キーで一つ上の "Install Qubes OS R4.1.1"を選んでエンターキーを押します。

Qubes OSインストールのメニュー
Qubes OSインストールのメニュー

以下の"WELCOME TO QUBES OS R4.1.1."の画面では英語設定になっています。日本語設定にするには、左下の入力欄に "Japan"と入れると日本語が選びやすくなります。

言語とキーボードを選択
言語とキーボードを選択

左側の一覧から「日本語」を選んでクリックすると、画面全体が日本語表示に変わります。右下の「続行」ボタンをクリックします。

日本語を選択したところ
日本語を選択したところ

ここでハードウェアの設定のチェックが行われ異常が検知されると次のような警告画面が出ます。

仮想化がサポートされていないことの警告
仮想化がサポートされていないことの警告

仮想化機能がオフになっているとこのようなメッセージが出るので、いったんインストール作業を中止し、PCを再起動させUEFIの設定画面から仮想化の設定をオンにしてください。

つぎに「インストール概要」という画面に移ります。「時刻と日付」がニューヨークの設定になってしまっているので、ここをクリックします。

インストール概要のメニューが表示されているところ
インストール概要のメニューが表示されているところ

世界地図の日本付近をクリックして、左上の「完了」を押します。

タイムゾーンの設定
タイムゾーンの設定

「インストール概要」の画面に戻ったら、「ユーザーの作成」をクリックします。

「ユーザーの作成」画面に移ったら、ユーザー名とパスワードを入力して左上の「完了」を押します。

ユーザー名とパスワードを設定
ユーザー名とパスワードを設定

なお、rootパスワードは設定しないでください(つまり、デフォルトの「rootアカウントは無効になっています」のままにしておいてください)。Qubes OSではrootユーザーを使用しません。

続いてインストール概要の画面で「インストール先」をクリックします。

「インストール先」の画面になったら、Qubes OSをインストールしたいSSDに黒いチェックマークがついているのを確認してください。「ストレージの設定」は「自動構成」のままにしておいてください。「暗号化」は「データを暗号化する」にチェックを入れたままにしておきましょう。暗号化を選択すると、Qubes OSの起動時に毎回パスフレーズを入れる必要があります。

インストール先のSSD等を設定
インストール先のSSD等を設定

左上の「完了」ボタンを押すと、暗号化のパスフレーズを入力するポップアップが出ます。パスフレーズを入れたら、「パスフレーズの保存」を押します。

SSD暗号化用パスフレーズの設定
SSD暗号化用パスフレーズの設定

「インストール概要」の画面に戻ったら警告表示がすべて消えたのを確認して、右下の「インストールの開始」を押します。

設定が終了したのでインストール開始
設定が終了したのでインストール開始

「インストールの進行状況」という画面に移り、インストールが進んでいきます。

SSDにQubes OSをインストールしているところ
SSDにQubes OSをインストールしているところ

インストールが終わると、「完了しました!」というメッセージが出ます。右下の"Reboot System"を押してPCを再起動させます。再起動中に忘れずにUSBを抜いてください。

Qubes OSインストール完了
Qubes OSインストール完了

インストール直後の初期設定

再起動後にQubes OSの起動画面があらわれます。上のQubes, with Xen hypervisorを選択してQubes OSを起動させます。

Qubes OS起動メニュー
Qubes OS起動メニュー

SSD暗号化を解除するためのパスフレーズを聞かれるのでそれを入力します(以下のようなGUIの画面ではなく真っ暗なコンソールで入力する場合もあります)。

SSDのパスフレーズを入力する
SSDパスフレーズを入力する

Qubes OSを初めて使用する前に必要な設定を行うために、"INITIAL SETUP"という画面が出てきます。画面中央の"QUBES OS"付近をクリックします。

Qubes OSの初期設定の画面
Qubes OSの初期設定の画面

つづいて次のような初期設定の項目を選ぶ画面に移ります。

初期設定の項目を選ぶ画面
初期設定の項目を選ぶ画面

以下ここの設定項目を簡単に解説します。一番上の"Templates Configuration" では、"Installation"の下に Fedora, Debian, Whonixの3つにチェックが入っています。使用したくないものがあればチェックを外してください。

なお Whonix を入れると常時 Tor の通信がバックグラウンドで行われます。これは Whonix のアップデートや時刻設定のためだと思います。Tor通信が頻繁に起こるのが嫌な人は Whonix 16のチェックボックスを外してください。あとから Whonix をインストールすることも可能です。

Qubes OS R4.1ではTemplates ConfigurationDefaultFedora 36になっています。この設定に基づいて sys-net, sys-firewall, sys-usbの3つの仮想マシン及びappキューブ(personal, workなど)が Fedoraを仮想OSとして使用することになります。Debian好きな人はここを Debian 11にするとよいでしょう。

Create default application qubesにチェックを入れておくと、普段使う仮想マシンとして personal, work, untrusted, vaultの4つが作成されます。名前を自由につけたい場合は、このチェックを外してあとで自分好みのキューブ(仮想マシン)を作成するのもよいと思います。

Create default application qubesのすぐ下はUSBキューブを作成するかどうかのチェックボックスです(Use a qube to hold all USB controllersのところ)。USBキューブを作るとBadUSBなどの攻撃に対する安全性が高まるので、ここはチェックボックスをオンにしておきましょう。デスクトップ型のPCでUSBキーボードを使用している人は、ここが USB qube configuration disabled という表示になります。USBキーボードを使っている方はあとからUSBキューブを作成するやり方があるので、それを使ってください。(USB接続の外付けディスクにインストールした場合もUSBキューブは作成されませんが、あとからUSBキューブを作れるかどうかは良くわかりません。多分無理なはず)

Use sys-net qube for both networking and USB devicesですが、USB経由でネットワークにつなげている人(つまりUSB接続のLANケーブルやWifi子機を使っている人)はここをオンにしてください。

Automatically accept USB miceのところをオンにしてしまうと、いわゆるBad USBをPCに差し込んだ場合、マウスであるかのように振る舞ってdom0が攻撃を受ける可能性があるらしいのでオフにしたほうがよいと思います。ただしここをオフにしておいた場合、Qubes OSが起動したあと毎回USBマウスの使用をオンにするための操作が必要になります(タッチパッドまたはキーボードを使ってオンにします)。

Whonixを使う人は Create Whonix Gateway and Workstation qubes をオンにしておいてください。 また、匿名性や安全性を高めたるためにdom0, Fedoraテンプレート及びDebianテンプレートの日々のアップデート(さらには新規ソフトのインストール)をTor経由で行いたい人は、Enable system and template updates over Tor anonymity network using Whonixをオンにしましょう。ただしTor経由でアップデートをやるとかなり時間がかかります。


初期設定の項目を選ぶ画面の左上の "Done"を押すと、INITIAL SETUPの画面に戻ります。ここで右下の "FINISH CONFIGURATION"を押すと、Fedora, Debain, Whonix(GatewayとWorkstationの2つ)の各テンプレートのインストールと初期設定が始まります。

初期設定入力を済ませたのでテンプレートのインストールを開始
初期設定入力を済ませたのでテンプレートのインストールを開始


以下は"INITIAL SETUP"の途中画面です。ここはかなりの時間がかかります(Qubes OS本体のインストールよりも時間がかかると思います)。

初期設定が進行しているところ
初期設定が進行しているところ


INITIAL SETUPがようやく終わるとログイン画面に移ります。が、しかし日本語関係のパッケージがインストールされていないので、英語表記のままでロケールC.utf-8になっています。これらは後で直していきます。パスワードを入力してログインしたらいよいよQubes OSの利用開始です。

Qubes OSログイン画面
Qubes OSログイン画面

Qubes OS 動作環境・ダウンロード・PGPチェック

このポストではQubes OSをインストールする前に必要な事項を解説していきます。

Qubes OSの動作環境

Qubes OSは仮想化を利用するのでパソコンのメモリがたくさん必要です。できれば16GBあることが望ましいですが、8GBでもなんとかなるそうです。Qubes OS 4.1以降ではインテルのCPUならVT-xに加えてVT-dの仮想化支援機能が必要です。10年前のパソコンだとVT-dがついていなくて使用不可のものが結構あると思います。AMDの場合は普通の仮想化支援(AMD-V)に加えてIOMMU((AMD-Vi)という機能が必要だそうです。ハードディスクだと処理スピードがのろいので、SSDの使用が推奨されてます。

公式サイトに載っている動作環境の最低条件は以下の通りです:

Qubes OSは動かないパソコンが結構あるのが難点です。AMDよりもインテルのCPUの方が総じてインストール成功率が高く、インテルのCPUでオンボードのグラフィックスを利用するのが一番確実らしいです。Qubesチームは "Intel integrated graphics processor (IGP) strongly recommended"だと言っています。Qubesのコミュニティがインストールの成功・失敗事例をまとめているので参考にしてください。

USBキーボードを使っている場合やUSB接続の外付けのディスクにインストールする場合はsys-usbは作成されません。

Qubes OSは「ベアメタルで」、すなわち、パソコンに直接インストールすべきものです。VirtualBoxにQubes OSをインストールした成功例がレポートされていますがそのようなことはQubesOSの公式では推奨されていません。Qubes OSを気軽に試してみたい人は、USBメモリか外付けのSSDにインストールするほうがよいと思います。USBメモリにQubes OSをインストールすると、それを別のPCに接続して起動できるかテストすることでQubes OSの動作確認ができるそうです。

UEFI(BIOS)の設定変更

Qubes OSをインストールする前にパソコンのUEFIの設定画面から Secure Bootをオフにすることと2、仮想化機能(IntelのCPUならVT-xとVT-dの両方)をオンにすることを忘れないでください。

Qubes OSのISOダウンロード及び検証

このセクションではISOをダウンロードしてPGPの検証を行う手順を書いていきます。以下では Linux mint21を使用しています。

まずはこのダウンロードページから最新のISOを落とします。執筆時点のQubes OSの最新版は R4.1.1です。 Qubes-R4.1.1-x86_64.isoのサイズはおよそ5.79GB (5.4GiB)あります。

$ wget https://ftp.qubes-os.org/iso/Qubes-R4.1.1-x86_64.iso

Qubes OSのバージョンナンバーは 4.1 4.0 3.2など最初の数字2つまでがバージョンの区別の番号で、最後の数字はパッチの番号です。例えばR4.1.1をインストールした人はアップデートしていれば、R4.1.2やR4.1.3と同等なものになります。

QubesOSのISOのサインの仕組みは、

  • 一番大本のマスターキーの Qubes Master Signing Key (QMSK)
  • リリース・サイニング・キー release signing key (RSK)

の2つのキーがあって、マスターキーの秘密鍵RSKの公開鍵に対して署名しています。そしてRSK秘密鍵がISO関連のファイルに署名しています。なお、現在のRSK(qubes-release-4-signing-key.asc)はQubesのバージョンがR4のものに使われています。

今からやっていくのは、1. マスターキーの公開鍵の取得とそれを信頼する作業、2. RSKの公開鍵の取得とそれがマスターキーで署名されていることの確認、3. ISO関連のファイルを取得してそれがRSKで署名されていることの確認の3つです。

マスターキーの取得

(この小節の参考URLはこちら)

gpgコマンドでQubesのマスターキーをインポートします。

$ gpg --fetch-keys https://keys.qubes-os.org/keys/qubes-master-signing-key.asc

出力:

gpg: 鍵を'https://keys.qubes-os.org/keys/qubes-master-signing-key.asc'から要求
gpg: 鍵DDFA1A3E36879494: 公開鍵"Qubes Master Signing Key"をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1

上記の代わりに wgetcurlでascファイルをダウンロードして、 gpg --import /path/to/qubes-master-signing-key.ascなどとやってもOKです。

つぎにこのQubesのマスターキーのフィンガープリントを表示して、公式URLなどで公開されているフィンガープリントと同じものかどうか確認します。

$ gpg --fingerprint 'Qubes Master Signing Key'

出力:

pub   rsa4096 2010-04-01 [SC]
      427F 11FD 0FAA 4B08 0123  F01C DDFA 1A3E 3687 9494
uid           [  不明  ] Qubes Master Signing Key

こうしてgpgコマンドで計算したマスターキーのフィンガープリント(427Fで始まり9494で終わる40ケタの16進数)が、たとえばここここで公開されているものと同じかチェックしてください。また下記のTwitterで公開されているものと比較してもよいでしょう。

Youtubeの動画内でもフィンガープリントが出てきます。 www.youtube.com

フィンガープリントが本物かどうかのチェックをやる必要性があるのはどうしてでしょうか。これは、攻撃者が自分で公開鍵・秘密鍵のペアを作成し、ニセのISOにその秘密鍵で署名して、ニセのISOファイルとニセの公開鍵ファイルを被害者に渡すような詐欺行為を防止するためです。公開鍵そのものは極端に文字数が大きく人間がチェックするのには不向きなので、そのハッシュ値であるフィンガープリントで確認する仕組みです。

フィンガープリントが正しいことを確認し終えたら、このマスターキーを編集して信頼することにします。

$ gpg --edit-key "Qubes Master"

出力:

gpg (GnuPG) 2.2.27; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


pub  rsa4096/DDFA1A3E36879494
     作成: 2010-04-01  有効期限: 無期限       利用法: SC  
     信用: 未定義     有効性: 不明の
[  不明  ] (1). Qubes Master Signing Key

gpg>

念のためにフィンガープリントを確認しましょう(gpg>の右側を入力):

gpg> fpr

出力:

pub   rsa4096/DDFA1A3E36879494 2010-04-01 Qubes Master Signing Key
 主鍵フィンガープリント: 427F 11FD 0FAA 4B08 0123  F01C DDFA 1A3E 3687 9494

信頼するために trustというサブコマンドを入力します:

gpg> trust

出力:

pub  rsa4096/DDFA1A3E36879494
     作成: 2010-04-01  有効期限: 無期限       利用法: SC  
     信用: 未定義     有効性: 不明の
[  不明  ] (1). Qubes Master Signing Key

他のユーザの鍵を正しく検証するために、このユーザの信用度を決めてください
(パスポートを見せてもらったり、他から得たフィンガープリントを検査したり、などなど)

  1 = 知らない、または何とも言えない
  2 = 信用し ない
  3 = まぁまぁ信用する
  4 = 充分に信用する
  5 = 究極的に信用する
  m = メーン・メニューに戻る

あなたの決定は? 

すでにフィンガープリントが正しいことを確認し終えているので「あなたの決定は? 」の答えに 5 「究極的に信用する」を選びます。

あなたの決定は? 5      # 5 を入力して改行
本当にこの鍵を究極的に信用しますか? (y/N) y      # y を入力して改行

出力:

pub  rsa4096/DDFA1A3E36879494
     作成: 2010-04-01  有効期限: 無期限       利用法: SC  
     信用: 究極        有効性: 不明の
[  不明  ] (1). Qubes Master Signing Key
プログラムを再起動するまで、表示された鍵の有効性は正しくないかもしれない、
ということを念頭においてください。

最後に quitと打ってマスターキーの編集を終えます。

gpg> quit

再度マスターキーを表示させて究極的に信頼されたことを確認します:

$ gpg --list-keys 'Qubes Master'

出力:

pub   rsa4096 2010-04-01 [SC]
      427F11FD0FAA4B080123F01CDDFA1A3E36879494
uid           [  究極  ] Qubes Master Signing Key

[ 究極 ] という表示が出ていれば大丈夫です。

リリース・サイニング・キー(RSK)の取得・検証

(この小節の参考URLはこちら)

最初にqubes-release-4-signing-key.ascというRSKを取得します。

$ gpg --keyserver-options no-self-sigs-only,no-import-clean --fetch-keys https://keys.qubes-os.org/keys/qubes-release-4-signing-key.asc

出力:

gpg: 鍵を'https://keys.qubes-os.org/keys/qubes-release-4-signing-key.asc'から要求
gpg: 鍵1848792F9E2795E9: 公開鍵"Qubes OS Release 4 Signing Key"をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: 深さ: 0  有効性:   1  署名:   1  信用: 0-, 0q, 0n, 0m, 0f, 1u
gpg: 深さ: 1  有効性:   1  署名:   0  信用: 1-, 0q, 0n, 0m, 0f, 0u

このRSKの有効性を確かめます。

$ gpg --check-signatures "Qubes OS Release 4 Signing Key"

出力:

pub   rsa4096 2017-03-06 [SC]
      5817A43B283DE5A9181A522E1848792F9E2795E9
uid           [  充分  ] Qubes OS Release 4 Signing Key
sig!3        1848792F9E2795E9 2017-03-06  Qubes OS Release 4 Signing Key
sig!         DDFA1A3E36879494 2021-11-29  Qubes Master Signing Key

gpg: 正しい署名2個

DDFA1A3E36879494 2021-11-29 Qubes Master Signing Key が含まれる行の冒頭が sig! になっていれば、このリリースキーがマスターキーで署名されていることの証しです。sig- の場合は無効な署名です。sig%の場合は署名を検証するときにエラーが起きています。上の出力ではsig!ですから、正当なリリースキーであることがわかりました。

ISOの検証

Qubes OSのISOファイルを検証するやり方は2通りあります。1つはsha256sumなどのハッシュ値を含むファイルをダウンロードして、そのファイルがRSKで署名してあることを確認しつつ、ISOファイルのハッシュ値を計算した結果がそのファイルに記載されたハッシュ値と同じか確かめる方法です。もう1つは、RSKでISOファイルに分離署名してできた署名ファイルをダウンロードして、その署名ファイルとISOファイルを検証するやり方です。どちらか1つをやれば十分です。

ハッシュ値による検証

(この小節の参考URLはこちら)

ダウンロードのページからCryptographic hash values をダウンロードします。

$ wget https://ftp.qubes-os.org/iso/Qubes-R4.1.1-x86_64.iso.DIGESTS

ISOファイル(Qubes-R4.1.1-x86_64.iso)が置いてあるディレクトリにこのDIGESTSファイルを移動させてください。

sha256sumを計算します。

$ sha256sum -c Qubes-R4.1.1-x86_64.iso.DIGESTS 

出力:

Qubes-R4.1.1-x86_64.iso: OK
sha256sum: 警告: 書式が不適切な行が 23 行あります

「書式が不適切な行が 23 行」の警告は無視して大丈夫です。Qubes-R4.1.1-x86_64.iso: OKの表示が出ていれば、パソコン上のISOファイルから計算したsha256sumのハッシュ値とDIGESTSファイルの作成者が計算したハッシュ値が同じだったことになります。しかし、攻撃者がニセのISOファイルとニセのDIGESTSファイルを送りつけていたらマズイので、DIGESTSファイルに対して正しくリリースキーで署名されているか確認します。

$ gpg --verbose --verify Qubes-R4.1.1-x86_64.iso.DIGESTS 

出力:

gpg: 外装ヘッダー: Hash: SHA256
gpg: 元のファイル名=''
gpg: 2022年07月15日 12時50分34秒 JSTに施された署名
gpg:                RSA鍵5817A43B283DE5A9181A522E1848792F9E2795E9を使用
gpg: pgp信用モデルを使用
gpg: "Qubes OS Release 4 Signing Key"からの正しい署名 [充分]
gpg: テキストモード署名、ダイジェスト・アルゴリズム SHA256、鍵アルゴリズム rsa4096

"Qubes OS Release 4 Signing Key"からの正しい署名という表示があるので、DIGESTSファイルはRSKによって正しく署名されていることが確認できました。これでようやくQubes-R4.1.1-x86_64.iso ファイルが本物であることが分かりました。

分離署名ファイルによる検証

(この小節の参考URLはこちら)

上のハッシュ値によるISOファイルの検証をすでに終えている場合は、以下の分離署名ファイルによる検証をやる必要はありません。

ダウンロードページから Detached PGP signature をダウンロードします。

$ wget https://ftp.qubes-os.org/iso/Qubes-R4.1.1-x86_64.iso.asc

ISOファイル(Qubes-R4.1.1-x86_64.iso)が置いてあるディレクトリにこのascファイルに移動させてください。 署名を確認するために gpgのverifyコマンドを使います。

$ gpg --verbose --verify Qubes-R4.1.1-x86_64.iso.asc Qubes-R4.1.1-x86_64.iso

出力:

gpg: 2022年07月15日 12時49分38秒 JSTに施された署名
gpg:                RSA鍵5817A43B283DE5A9181A522E1848792F9E2795E9を使用
gpg: pgp信用モデルを使用
gpg: "Qubes OS Release 4 Signing Key"からの正しい署名 [充分]
gpg: バイナリ署名、ダイジェスト・アルゴリズム SHA256、鍵アルゴリズム rsa4096

「"Qubes OS Release 4 Signing Key"からの正しい署名」が表示されたので、ISOファイルにRSKの署名がなされていることが確認できました。これによりQubes-R4.1.1-x86_64.iso ファイルが本物であることが分かりました。

Qubes OSのISOファイルをUSBメモリに焼く

USBメモリLinuxパソコンに差してから、どのデバイスになったのか(/dev/sdbなど)を確認します。いくつかやり方がありますが、ここでは inxiコマンドを使いました。sudo dmesgで出力の一番下の方を見てもわかると思います。

$inxi --disk
Drives:
  Local Storage: total: 312.86 GiB used: 15.18 GiB (4.9%)
  ID-1: /dev/sda vendor: (略)
  ID-2: /dev/sdb type: USB vendor: (略)
    size: 14.77 GiB

/dev/sdbUSBメモリであることがわかったので、ISOファイルをここにコピーします。

$sudo cp ~/Downloads/Qubes-R4.1.0-x86_64.iso /dev/sdb && sync

これでQubes OSのインストールの準備が整いました。次回はこのUSBメモリを用いてQubes OSのインストールを開始します。


[補足] ISOを焼いたUSBメモリからハッシュ値を計算する方法

(この節の参考URLはこちら)

すでにQubes OSのISOをコピーし終えたUSBメモリを持っている場合で、USBの中身がニセモノのISOにすり替わっていないか確認したいときの対処法が公式ページに書いてあったので紹介します。

今利用しているOSにすでに外敵が侵入しているリスクを考え、USBにISOを焼く作業をしたパソコンとは別のオフラインのLinuxパソコンで確認作業を行います。

ISOファイルが入っているパソコン上で、最初にISOファイルのバイト数をメモしておきます。

$ ls -l Qubes-R4.1.1-x86_64.iso
-rw-r----- 1 user user 5791285248  9月 14 19:54 Qubes-R4.1.1-x86_64.iso

あるいはダウンロードのページQubes-R4.1.1-x86_64.iso の項目の上にマウスを持ってきてもバイト数が5791285248であることは把握できます。

つぎにオフラインのLinuxパソコンにUSBを差し込みます。USBのデバイス名(/dev/sdbなど)を把握したら、つぎのコマンドをターミナルから入力します。なおcount=以下にメモしておいたバイト数を書きます。

$ sudo dd if=/dev/sdb bs=1M count=5791285248 iflag=count_bytes | sha256sum

出力:

5523+0 records in
5523+0 records out
5791285248 bytes (5.8 GB, 5.4 GiB) copied, 103.611 s, 55.9 MB/s
0e68dd3347b68618d9e5f3ddb580bf7ecdd2166747630859b3582803f1ca8801  -

最後の行の 0e68 ... 8801 のところがsha256sumのハッシュ値です。この値が以前ダウンロードして署名を検証した Qubes-R4.1.1-x86_64.iso.DIGESTS ファイルに書いてあった値と比べて同じであれば、USBメモリの中のISOがホンモノであるということになります。


  1. 私は公称32GBのUSBメモリにインストールしてみようとしたところ、ストレージの容量不足でインストールに失敗しました。あとでUSBメモリの容量を正確に図ってみると31GB少々しかありませんでした。32GBを確実に上回るストレージを用意したほうがよさそうです。

  2. Qubes OSはsecure bootをサポートしていません

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

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

Qubes OSって何?

Qubes OS はセキュリティを重視したパソコン向けのOSです。仮想化のテクノロジーを使うことで、敵に侵入されてもプライバシーの侵害やマルウェアの被害を最低限に抑えるような作りになっています。内部的には Xen(ゼン)の仮想化プラットフォーム上で FedoraDebianさらには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

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

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

BBCのSecuredropの画面(Torブラウザでアクセスする)
図2. 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上で使っているようにしか見えません。VirtualBoxVMwareなどで仮想化を利用したことがある人にとって、おなじみの仮想化は以下のようなデスクトップ環境の上にもう一つ別のデスクトップ環境が入れ子になったものでしょう。

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 (分離による安全化)と呼ばれます。

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

また、キューブ間のテキストのコピーアンドペーストやファイルのやり取りもサポートされており、複数のキューブを使い分けながら作業することがスムーズにできるようになっています。このあたりは VirtualBoxVMwareと同じですね。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ブラウザの活動内容なども漏洩してしまうリスクがあります。これは普通のWindowsLinuxでも起こり得ることです。しかし、そのような被害があくまでも1つのキューブ内に収まるのがQubes OSの強みです。

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

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

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

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

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

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

たとえば workキューブのFirefoxとターミナルをワークスペース1で開いたら、personalキューブのFirefoxテキストエディタワークスペース2で開くようにすることで作業が整理整頓できます。 FedoraUbuntuなど普通の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種類が用意されています。FedoraDebianの両方が使えるので、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攻撃できるようなツールがAmazonでも売られています。

また、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に画像を保管することで安全に新しい壁紙を導入できます。