このポストでは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接続の外付けのディスクにインストールする場合はsys-usbは作成されません。 Qubes OSは「ベアメタルで」、すなわち、パソコンに直接インストールすべきものです。VirtualBoxにQubes OSをインストールした成功例がレポートされていますがそのようなことはQubesOSの公式では推奨されていません。Qubes OSを気軽に試してみたい人は、USBメモリか外付けのSSDにインストールするほうがよいと思います。USBメモリにQubes OSをインストールすると、それを別のPCに接続して起動できるかテストすることでQubes OSの動作確認ができるそうです。 Qubes OSをインストールする前にパソコンのUEFIの設定画面から Secure Bootをオフにすることと2、仮想化機能(IntelのCPUならVT-xとVT-dの両方)をオンにすることを忘れないでください。 このセクションではISOをダウンロードしてPGPの検証を行う手順を書いていきます。以下では Linux mint21を使用しています。 まずはこのダウンロードページから最新のISOを落とします。2024年2月改訂時点のQubes OSの最新版は R4.2.0です。
Qubes OSのバージョンナンバーは 4.1 4.0 3.2など最初の数字2つまでがバージョンの区別の番号で、最後の数字はパッチの番号です。例えばR4.2.0をインストールした人はアップデートしていけば、R4.2.1やR4.2.2と同等なものになります。 QubesOSのISOのサインの仕組みは、 の2つのキーがあって、マスターキーの秘密鍵がRSKの公開鍵に対して署名しています。そしてRSKの秘密鍵がISO関連のファイルに署名しています。なお、現在のRSK( 今からやっていくのは、1. マスターキーの公開鍵の取得とそれを信頼する作業、2. RSKの公開鍵の取得とそれがマスターキーで署名されていることの確認、3. ISO関連のファイルを取得してそれがRSKで署名されていることの確認の3つです。 gpgコマンドでQubesのマスターキーをインポートします。 出力: 上記の代わりに wget や curlでascファイルをダウンロードして、 つぎにこのQubesのマスターキーのフィンガープリントを表示して、公式URLなどで公開されているフィンガープリントと同じものかどうか確認します。 出力: こうしてgpgコマンドで計算したマスターキーのフィンガープリント(427Fで始まり9494で終わる40ケタの16進数)が、たとえばここやここで公開されているものと同じかチェックしてください。また下記のTwitterで公開されているものと比較してもよいでしょう。 Qubes Master Signing Key fingerprint: Youtubeの動画内でもフィンガープリントが出てきます。
www.youtube.com フィンガープリントが本物かどうかのチェックをやる必要性があるのはどうしてでしょうか。これは、攻撃者が自分で公開鍵・秘密鍵のペアを作成し、ニセのISOにその秘密鍵で署名して、ニセのISOファイルとニセの公開鍵ファイルを被害者に渡すような詐欺行為を防止するためです。公開鍵そのものは極端に文字数が大きく人間がチェックするのには不向きなので、そのハッシュ値であるフィンガープリントで確認する仕組みです。 フィンガープリントが正しいことを確認し終えたら、このマスターキーを編集して信頼することにします。 出力: 念のためにフィンガープリントを確認しましょう(gpg>の右側を入力): 出力: 信頼するために trustというサブコマンドを入力します: 出力: すでにフィンガープリントが正しいことを確認し終えているので「あなたの決定は? 」の答えに 5 「究極的に信用する」を選びます。 出力: 最後に quitと打ってマスターキーの編集を終えます。 再度マスターキーを表示させて究極的に信頼されたことを確認します: 出力: [ 究極 ] という表示が出ていれば大丈夫です。 最初に 出力: このRSKの有効性を確かめます。 出力: Qubes OSのISOファイルを検証するやり方は2通りあります。1つはsha256sumなどのハッシュ値を含むファイルをダウンロードして、そのファイルがRSKで署名してあることを確認しつつ、ISOファイルのハッシュ値を計算した結果がそのファイルに記載されたハッシュ値と同じか確かめる方法です。もう1つは、RSKでISOファイルに分離署名してできた署名ファイルをダウンロードして、その署名ファイルとISOファイルを検証するやり方です。どちらか1つをやれば十分です。 ダウンロードのページからCryptographic hash values をダウンロードします。 ISOファイル( sha256sumを計算します。 「書式が不適切な行が 23 行」の警告は無視して大丈夫です。 上のハッシュ値によるISOファイルの検証をすでに終えている場合は、以下の分離署名ファイルによる検証をやる必要はありません。 ダウンロードページから Detached PGP signature をダウンロードします。 ISOファイル( 出力: 「"Qubes OS Release 4.2 Signing Key"からの正しい署名 [充分]」が表示されたので、ISOファイルにRSKの署名がなされていることが確認できました。これによりQubes-R4.2.0-x86_64.iso ファイルが本物であることが分かりました。 USBメモリをLinuxパソコンに差してから、どのデバイスになったのか(/dev/sdbなど)を確認します。いくつかやり方がありますが、ここでは inxiコマンドを使いました。 これでQubes OSのインストールの準備が整いました。次回はこのUSBメモリを用いてQubes OSのインストールを開始します。 すでにQubes OSのISOをコピーし終えたUSBメモリを持っている場合で、USBの中身がニセモノのISOにすり替わっていないか確認したいときの対処法が公式ページに書いてあったので紹介します。 今利用しているOSにすでに外敵が侵入しているリスクを考え、USBにISOを焼く作業をしたパソコンとは別のオフラインのLinuxパソコンで確認作業を行います。 ISOファイルが入っているパソコン上で、最初にISOファイルのバイト数をメモしておきます。 あるいはダウンロードのページで つぎにオフラインのLinuxパソコンにUSBを差し込みます。USBのデバイス名( 出力: 最後の行の
Qubes OSの動作環境
UEFI(BIOS)の設定変更
Qubes OSのISOダウンロード及び検証
Qubes-R4.2.0-x86_64.iso
のサイズはおよそ6.1GBあります。$ wget https://mirrors.edge.kernel.org/qubes/iso/Qubes-R4.2.0-x86_64.iso
qubes-release-4.2-signing-key.asc
)はQubesのバージョンR4.2に使われています。マスターキーの取得
$ 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
gpg --import /path/to/qubes-master-signing-key.asc
などとやってもOKです。$ 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
427F 11FD 0FAA 4B08 0123 F01C DDFA 1A3E 3687 9494$ 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> fpr
pub rsa4096/DDFA1A3E36879494 2010-04-01 Qubes Master Signing Key
主鍵フィンガープリント: 427F 11FD 0FAA 4B08 0123 F01C DDFA 1A3E 3687 9494
gpg> trust
pub rsa4096/DDFA1A3E36879494
作成: 2010-04-01 有効期限: 無期限 利用法: SC
信用: 未定義 有効性: 不明の
[ 不明 ] (1). Qubes Master Signing Key
他のユーザの鍵を正しく検証するために、このユーザの信用度を決めてください
(パスポートを見せてもらったり、他から得たフィンガープリントを検査したり、などなど)
1 = 知らない、または何とも言えない
2 = 信用し ない
3 = まぁまぁ信用する
4 = 充分に信用する
5 = 究極的に信用する
m = メーン・メニューに戻る
あなたの決定は?
あなたの決定は? 5 # 5 を入力して改行
本当にこの鍵を究極的に信用しますか? (y/N) y # y を入力して改行
pub rsa4096/DDFA1A3E36879494
作成: 2010-04-01 有効期限: 無期限 利用法: SC
信用: 究極 有効性: 不明の
[ 不明 ] (1). Qubes Master Signing Key
プログラムを再起動するまで、表示された鍵の有効性は正しくないかもしれない、
ということを念頭においてください。
gpg> quit
$ gpg --list-keys 'Qubes Master'
(略)
pub rsa4096 2010-04-01 [SC]
427F11FD0FAA4B080123F01CDDFA1A3E36879494
uid [ 究極 ] Qubes Master Signing Key
リリース・サイニング・キー(RSK)の取得・検証
qubes-release-4.2-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.2-signing-key.asc
gpg: 鍵を'https://keys.qubes-os.org/keys/qubes-release-4.2-signing-key.asc'から要求
gpg: 鍵E022E58F8E34D89F: 公開鍵"Qubes OS Release 4.2 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
$ gpg --check-signatures "Qubes OS Release 4.2 Signing Key"
pub rsa4096 2022-10-04 [SC]
9C884DF3F81064A569A4A9FAE022E58F8E34D89F
uid [ 充分 ] Qubes OS Release 4.2 Signing Key
sig!3 E022E58F8E34D89F 2022-10-04 Qubes OS Release 4.2 Signing Key
sig! DDFA1A3E36879494 2023-06-03 Qubes Master Signing Key
gpg: 正しい署名2個
DDFA1A3E36879494 2023-06-03 Qubes Master Signing Key
が含まれる行の冒頭が sig!
になっていれば、このリリースキーがマスターキーで署名されていることの証しです。sig-
の場合は無効な署名です。sig%
の場合は署名を検証するときにエラーが起きています。上の出力ではsig!
ですから、正当なリリースキーであることがわかりました。ISOの検証
ハッシュ値による検証
$ wget https://mirrors.edge.kernel.org/qubes/iso/Qubes-R4.2.0-x86_64.iso.DIGESTS
Qubes-R4.2.0-x86_64.iso
)が置いてあるディレクトリにこのDIGESTSファイルを移動させてください。$ sha256sum -c Qubes-R4.2.0-x86_64.iso.DIGESTS
Qubes-R4.2.0-x86_64.iso: OK
sha256sum: 警告: 書式が不適切な行が 23 行あります
Qubes-R4.2.0-x86_64.iso: OK
の表示が出ていれば、パソコン上のISOファイルから計算したsha256sumのハッシュ値とDIGESTSファイルの作成者が計算したハッシュ値が同じだったことになります。しかし、攻撃者がニセのISOファイルとニセのDIGESTSファイルを送りつけていたらマズイので、DIGESTSファイルに対して正しくリリースキーで署名されているか確認します。$ gpg --verbose --verify Qubes-R4.2.0-x86_64.iso.DIGESTS
gpg: 外装ヘッダー: Hash: SHA256
gpg: 元のファイル名=''
gpg: 2023年12月18日 03時35分48秒 JSTに施された署名
gpg: RSA鍵9C884DF3F81064A569A4A9FAE022E58F8E34D89Fを使用
gpg: pgp信用モデルを使用
gpg: "Qubes OS Release 4.2 Signing Key"からの正しい署名 [充分]
gpg: テキストモード署名、ダイジェスト・アルゴリズム SHA256、鍵アルゴリズム rsa4096
"Qubes OS Release 4.2 Signing Key"からの正しい署名
という表示があるので、DIGESTSファイルはRSKによって正しく署名されていることが確認できました。これでようやくQubes-R4.2.0-x86_64.iso ファイルが本物であることが分かりました。分離署名ファイルによる検証
$ wget https://mirrors.edge.kernel.org/qubes/iso/Qubes-R4.2.0-x86_64.iso.asc
Qubes-R4.2.0-x86_64.iso
)が置いてあるディレクトリにこのascファイルに移動させてください。
署名を確認するために gpgのverifyコマンドを使います。$ gpg --verbose --verify Qubes-R4.2.0-x86_64.iso.asc Qubes-R4.2.0-x86_64.iso
gpg: 2023年12月18日 03時34分24秒 JSTに施された署名
gpg: RSA鍵9C884DF3F81064A569A4A9FAE022E58F8E34D89Fを使用
gpg: pgp信用モデルを使用
gpg: "Qubes OS Release 4.2 Signing Key"からの正しい署名 [充分]
gpg: バイナリ署名、ダイジェスト・アルゴリズム SHA256、鍵アルゴリズム rsa4096
Qubes OSのISOファイルをUSBメモリに焼く
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/sdb
がUSBメモリであることがわかったので、ISOファイルをここにコピーします。$ sudo cp ~/Downloads/Qubes-R4.2.0-x86_64.iso /dev/sdb && sync
[補足] ISOを焼いたUSBメモリからハッシュ値を計算する方法
$ stat Qubes-R4.2.0-x86_64.iso
File: Qubes-R4.2.0-x86_64.iso
Size: 6517848064 Blocks: 12730184 IO Block: 4096 通常ファイル
(以下略)
Qubes-R4.2.0-x86_64.iso
の項目の上にマウスを持ってきてもバイト数が6517848064
であることは把握できます。/dev/sdb
など)を把握したら、つぎのコマンドをターミナルから入力します。なおcount=
以下にメモしておいたバイト数を書きます。$ sudo dd if=/dev/sdb bs=1M count=6517848064 iflag=count_bytes | sha256sum
6215+1 レコード入力
6215+1 レコード出力
6517848064 bytes (6.5 GB, 6.1 GiB) copied, 59.5017 s, 110 MB/s
26203f27c68ef757f0bd01f194c466c5629c0a5996859db92b37e323eee8714c -
2620 ... 714c
のところがsha256sumのハッシュ値です。この値が以前ダウンロードして署名を検証した Qubes-R4.2.0-x86_64.iso.DIGESTS ファイルに書いてあった値と比べて同じであれば、USBメモリの中のISOがホンモノであるということになります。