Qubes - Whonix の日本語化 (Qubes OS 4.2)

今回はQubes OSの中の Whonixテンプレートを日本語化するやり方を解説します。日本語化するとプライバシーに一定の悪影響があることも説明します。

日本語化とプライバシーへの影響

Whonixはプライバシーの漏洩を防ぐためのOSです。Whonixテンプレートを日本語化しようとする場合、日本語化すること自体がプライバシーにどのような影響を及ぼすのか十分考慮しないといけません。

情報漏洩で一番心配なのはWebを閲覧するときでしょう。しかしTorブラウザにはさまざなフィンガープリント対策がされており1、デフォルトでは日本人ユーザーであることはできる限り隠せるようになっています。たとえば時刻設定はUTCになり、言語設定はアメリカ英語を返し、フォントはTorブラウザにバンドルされたものだけを用いることにより、Webサイト側には国籍がわからないようになっています。また、Torブラウザを用いていればWebサイト側にはOSはLinuxであることまでしか分からずWhonixであることは隠せるようになっています。

ただしTorブラウザを用いていても、Webフォームに日本語で入力すれば日本語話者であることは当然伝わります。またJavaScriptAPIにKeyboardEventというのものがあって、これが使用されているとユーザーがどのキーを押したのかWebサイト側に分かってしまいます2。キーボードで「カタカナ・ひらがな・ローマ字」、「変換」、「無変換」の刻印のあるキーをうっかり押すとその事実がWebサイトに伝わってしまい日本語キーボードを利用している事実が漏洩します。(なおアットマークなど英語キーボードにも存在するキーは、押しても日本語キーボードである事実は隠せるようにTorブラウザ側で細工されています。)このような問題は存在しますが、それでも英語キーボードを使用すれば情報漏えいは防げます。 またJavaScriptをオフにすればこういった日本語使用者であることの情報はWebサイト管理者に一切伝わらなくなります。 そもそもLinux版Torブラウザの日本語使用者はそれなりの数いるので、ユーザーが日本人であることがバレることをそこまで心配する必要はないのかもしれません。

しかし特に深刻な問題はマルウェアに攻撃されてキューブ内部に侵入された場合に起こります。ゲートウェイワークステーションを分離させているWhonixの特性上、ユーザーのIPアドレスは侵入者には漏洩しません。でもOSがWhonixであることはもちろんQubes Whonixであることまで侵入者には分かってしまいます。たとえば/etc/apt/以下のレポジトリを見るか、インストールされたQubes特有のパッケージの存在をチェックすればQubes - Whonixユーザーであることは明白です。

Qubesチームの統計データによると 2024年3月時点において世界全体のQubesユーザーは5万数千人います。Whonixを日本語化せず英語キーボードを使用している場合は数万人の1人であることしか侵入者にはわかりません。日本語化した場合あるいはキーボードを日本語設定にした場合、Qubesユーザーの中の日本語使用者という非常に小さなグループの1人であることまで分かってしまい匿名性は大幅に低下します。ちなみに2020年のアンケート調査によれば日本のQubes OSユーザー数は 20〜50人程度と推計されています

キューブに侵入してきた攻撃者は日本語入力システムがインストールされていることは当然把握できます。また執筆時点(2024年4月)でWhonixキューブからも以下のコマンドを打つとQubes OS全体で設定されたキーボードとタイムゾーンが報告されてしまう脆弱性があります。次は anon-whonix のターミナルからコマンドを打っています。

[workstation user ~]% qubesdb-read /keyboard-layout  
jp++
[workstation user ~]% qubesdb-read /qubes-timezone 
Asia/Tokyo

WhonixやQubes OSのユーザーは普段から Whonixや Qubes OSに関心をもって、それらを検索サイトで調べたり、あるいは、Whonixの公式サイトを訪問することも多いでしょう。そういう作業を Torを使わずに行っていると、あなたがWhonixに強い関心を持っていることが外部に漏れているのです。グーグルなどのIT巨大企業や諜報機関はあなたがWhonix関係者であることを把握している可能性は高いです。Qubes - Whonixユーザーの日本人であることがわかるだけで匿名性はほとんど消え去ってしまうことは覚悟してください。

以上をまとめると使用中のWhonix系のキューブに敵が侵入した場合

  • Qubes Whonixユーザーであること

  • キューブが日本語化していること

は容易に攻撃者に漏洩します。

仮に日本語を用いない英語専用のWhonixワークステーションキューブを作ったとしても、日本語入力システムはテンプレートにインストールするものなのでテンプレートが日本語化していると英語専用キューブに侵入された場合でも日本人ユーザーであることは発覚します。

この記事でのWhonixテンプレート日本語化の方針

上記のような攻撃者に侵入されるケースまで想定すべきかどうか、あるいは侵入されたケースに備えて何をすべきかは、ユーザーのみなさんが Qubes OSを何のために用いるのか、どこまでプライバシーを守りたいのか次第でしょう。ユーザーによってプライバシーに対する価値観は異なるので一概に対処方針は決められません。

今回のブログ記事では最初に、細かいことはそんなに気にしない方も含めてWhonixワークステーションのテンプレート whonix-workstation-17 を日本語化するやり方を解説します。そのあとプライバシーを重視する方向けに、2個目のWhonixワークステーションのテンプレートを新たにインストールして日本人ユーザーであることが漏洩しない英語専用のキューブを作る方法を解説していきます。 なお sys-whonix では普通日本語入力は使わないので、そのテンプレートの whonix-gateway-17 は日本語化しないことにしました。

whonix-workstation-17テンプレートの日本語化

この節ではWhonixワークステーションを日本語化する解説を書きます。プライバシーに関してうるさく言わない方もプライバシーを重視する方もどらちも対象に書いています。 WhonixはDebianの派生ディストリビューションですから、基本的にはDebianテンプレートの日本語化と同じようなことをすればOKです。

whonix-workstation-17テンプレートのXfce Terminalを開いてください。

whonix-workstation-17テンプレートのターミナルを起動
whonix-workstation-17テンプレートのターミナルを起動

ロケールをja_JP.UTF-8にする

まずはロケールを変更します。

[template workstation user ~]% sudo dpkg-reconfigure locales 

以下の画面で矢印キーを押して左側の一覧から ja_JP.UTF-8 UTF-8 をスペースキーを押して選択し、タブキーを押してOKをハイライトさせてエンターキーを押します。

ロケールを ja_JP.UTF-8 UTF-8に変更する
ロケールを ja_JP.UTF-8 UTF-8に変更する

次の画面で ja_JP.UTF-8 を選択してからOKを押します。

ja_JP.UTF-8 を選択
ja_JP.UTF-8 を選択

これで以下のように出力されます。

[template workstation user ~]% sudo dpkg-reconfigure locales
Generating locales (this might take a while)...
  en_US.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.

localectl statusで変更内容を確認します。

[template workstation user ~]% localectl status 
System Locale: LANG=ja_JP.UTF-8
    VC Keymap: (unset)         
   X11 Layout: us
    X11 Model: pc105

日本語フォントのインストール

日本語フォントを何にするのかでそれなりに個性が出てしまいます。インストールされたフォントの情報で個人が特定されるリスクもありフォントの選定も慎重に行わないといけません。インストールされるフォントが少ないほうが情報量も少ないと考え、私は一つだけ fonts-vlgothicを入れることにしました。

[template workstation user ~]% sudo apt install fonts-vlgothic 

なおここでインストールしたフォントはTorブラウザには使用されません。Torブラウザはブラウザ・フィンガープリンティングに対抗するためにバンドルされたフォントしか使えないようにしているからです。

日本語入力システムのインストール

つぎは日本語入力のシステムをインストールします。日本語入力システムの選択によっては個性が出てしまい匿名性が低下するリスクがあります。WhonixはDeibanの派生ディストリビューションですから、Debianで多くの人が使っているものを選ぶのがよさそうです。

無難そうな選択肢として task-japanese-desktop というDebianの日本語化チームが作成したおまかせのパッケージがあるのですが、これだと Whonix内では使うべきでない Firefoxがインストールされてしまうことや、一緒にインストールされる言語入力アプリの uim が執筆時点ではTorブラウザ内で使えないバグがあったので task-japanese-desktop はインストール候補から外しました。

もう一つ task-japanese-gnome-desktopというパッケージがあり、これだと ibus 及び ibus-mozc が入りますが、Qubes OS 4.2 と Whonix 17になってから ibus のアイコンがうまく表示できない不具合があったので ibus のインストールは見送ることにしました。

最終的には以下のように Debianテンプレートと同じやりかたで fcitx5-mozc を入れることにしました。

[template workstation user ~]% sudo apt install --install-recommends fcitx5 fcitx5-mozc

インストールが終わったら whonix-workstation-17 テンプレートを再起動します。ターミナルを再び開いてメニュー表示が日本語化していて、日本語も入力できることを確認します。半角/全角キー または CTRL-スペース で入力を切り替えます。

whonix-workstation-17 で日本語を入力しているところ
whonix-workstation-17 で日本語を入力しているところ

fedoraテンプレートやdebianテンプレートではテンプレートの日本語入力の自動起動をオフにしました。Whonixのテンプレートでは匿名性を確保するために余計な設定はしないほうがよいので、whonix-workstation-17 では自動起動はオンのままにしておきます。同様の理由で/etc/skel/ に fcitx5 や mozcの設定をコピーすることもやめます。

fcitx5の設定もデフォルトから変えないことが望ましいです。例えばインプット方法を変更するCTRL + スペース等のキーバインドは変更しないでください。同様に mozcの設定も極力デフォルトのまま使用しましょう。人と随分違う設定で、かつ、fedoradebianテンプレートと同じ設定にしてしまうと日本語入力の仕方を見るだけで誰なのか分かってしまう恐れがあります。例えば一般的には「ローマ字入力」により日本語入力をする人が大多数ですが、これを「かな入力」でやってしまうと悪目立ちします。Mozcの「キー設定」で一番人気なのは 「MS-IME」だと思いますが、これを例えば ATOKにすると匿名性は相当低下します。

やっかいなことには Torブラウザ利用時でもJavaScriptをオンにしているとWebサイト側にまで"かな"入力やATOK方式などを使用している情報が漏洩します。JavaScriptのKeyboardEventというツールを使われるとユーザーがどの物理キーを押したのかWebサイト側に分かってしまいます。例えば 3の刻印があるキーを押して「あ」と入力されれば「かな入力」であることが発覚します。Webフォーム上で日本語入力をするとき、矢印キーなどを使って日本語変換をしていく様はほとんどWebサイト側に筒抜けです。このようなプライバシー漏洩が心配な場合は、日本語入力はテキストエディタで済ませてからTorブラウザにコピーアンドペーストするか、またTorブラウザのセキュリティレベルを SafestにしてJavaScriptをオフにしましょう。

anon-whonix など各キューブのfcitx5設定を修正

あとは anon-whonixなどの既存キューブで日本語入力が成功するか確認します。 以下は anon-whonix キューブの Torブラウザで日本語入力をしているところです。

 anon-whonix キューブの Torブラウザで日本語入力中
anon-whonix キューブの Torブラウザで日本語入力中

英語キーボードの設定になってしまうことがあるので、fcitx5 の設定を開いて以下のようにして fcitx5内部のキーボードを日本語に直しておきます。スクリーン右上の通知領域にあるanon-whonix の赤いfcitx5のアイコンを右クリックして"設定"を開くとfcitx5の設定にアクセスできます。

次がもともとの設定です。

anon-whonixのfcitx5が英語キーボード設定になっている
anon-whonixのfcitx5が英語キーボード設定になっている

これを以下のように日本語キーボードに直してください

fcitx5を日本語キーボードの設定に変更する
fcitx5を日本語キーボードの設定に変更する

Whonixワークステーションディスポーザブル上でも英語キーボードから日本語キーボードの設定に直しておきます。 以下のようにして whonix-workstation-17-dvm のテンプレートの方のターミナルを開きます。 TEMPLATES タブの方を選んでください。

 whonix-workstation-17-dvm テンプレートのターミナルを開く
whonix-workstation-17-dvm テンプレートのターミナルを開く

つぎのコマンドを打って fcitx5 の設定ウィンドウを開きます。コマンドのかわりに 画面右上通知領域の fcitx5 アイコンからも設定ウィンドウを開くことができます。

[workstation user ~]% fcitx5-configtool  

上と同様にしてWhonixワークステーションディスポーザブルテンプレートも日本語キーボード設定に修正しておきます。

whonix-workstation-17-dvmテンプレートの fcitx5設定を修正
whonix-workstation-17-dvmテンプレートの fcitx5設定を修正

作業終了後 whonix-workstation-17-dvm のテンプレートをシャットダウンしてください。

ディスポーザブルの Torブラウザを起動して日本語設定がうまくいったかどうか確認します。以下のようにして今度はAPPSタブにある whonix-workstation-17-dvm の Torブラウザを起動させます。disp#### のような名称のキューブが起動します。

whonix-workstation-17-dvm の Torブラウザを起動
whonix-workstation-17-dvm の Torブラウザを起動

以下はディスポーザブルのTorブラウザで日本語入力している様子です。

Whonix ディスポーザブルのTorブラウザで日本語入力
Whonix ディスポーザブルのTorブラウザで日本語入力

Whonixワークステーションのキューブが他にもある場合は、それらも日本語キーボードの設定に修正しておきましょう。

プライバシー強化のために英語専用のWhonixテンプレートを作成

ここから先はプライバシーにこだわる上級者向けの解説です。前述のようにテンプレートが日本語化していると、キューブ内に攻撃者が侵入してきた場合どうやっても日本人であることは隠せません。日本語化せず、キーボード設定も英語仕様、時刻設定もUTCであるような環境にすれば匿名性は大幅に改善します。このセクション以降そのような英語環境を作成するために、以下の作業を行います。

  • 日本語化した既存の whonix-workstation-17 テンプレートの名前を ja-whonix-workstation-17 に変更

  • whonix-workstation-17 テンプレートを再インストールして英語キューブ用のテンプレートとする

  • 再インストールしたテンプレートに基づく新しいキューブをいくつか作成する

  • Qubes OS全体のキーボード設定と時刻設定を英語にする

whonix-workstation-17 テンプレートの名前を変更

最初に whonix-workstation-17 テンプレートの名前を変更します。これはwhonix-workstation-17 テンプレートを再インストールするとき同名のテンプレートがあると失敗するからです。 anon-whonixなどのwhonix-workstation-17ベースのキューブが起動していたらそれらは一旦シャットダウンしてください。whonix-workstation-17テンプレートのSettingsを開きます。

whonix-workstation-17テンプレートのSettingsを開く
whonix-workstation-17テンプレートのSettingsを開く

Basicタブの一番上に Name & label 欄がありますが、そこの Rename ボタンを押します。

whonix-workstation-17のSettingsのBasicタブ内のRenameボタンを押す
whonix-workstation-17のSettingsのBasicタブ内のRenameボタンを押す

テンプレートの名前を "ja-whonix-workstation-17" に変更します。

テンプレートの名前を "ja-whonix-workstation-17" に変更
テンプレートの名前を "ja-whonix-workstation-17" に変更

whonix-workstation-17テンプレートを再インストール

CTRL+F3 と打ってから global と入れてエンターを押すなどして Qubes Global Config を開きます

Qubes Global Config の左側の欄から Updates タブをクリックします。ウィンドウを下にスクロールして一番下のあたりの Templates repositories の中から Community templates にチェックを入れます。Whonixは Community templatesのレポジトリに入っています。OKボタンを押します。

WhonixテンプレートをインストールするのでCommunity templates を利用
WhonixテンプレートをインストールするのでCommunity templates を利用

この解説記事ではテンプレートのインストールには Qubes Template Manager を使います。Dom0のターミナルから qvm-template というコマンドを使うやり方もあります。コマンド版の詳細な使い方は qvm-template --helpqvm-template install --help などのコマンドで調べてください。どんなテンプレートが利用可能なのかリストアップするには qvm-template list を使います。

画面左上Q 経由で、あるいは、CTRL+F3と打ってから template manager (エンターキー)と打ってもよいですが、 Qubes Template Manager を起動します。 上側ペインの欄の下方にある whonix-workstation-17 の行にある statusの列のところをクリックすると ドロップダウンメニューが開くのでそこの Install をクリックします。そのあと ウィンドウ上部の Apply を押してください。

Qubes Template Manager を起動して whonix-workstation-17 を選択
Qubes Template Manager を起動して whonix-workstation-17 を選択

インストールしてよいか聞かれるので OKをクリックします。

Whonixワークステーションテンプレートを再インストール
Whonixワークステーションテンプレートを再インストール

以下はインストール中の画面です。whonix-workstation-17テンプレートは800M程度のサイズでした。ダウンロードしたあともしばらく時間がかかります。

whonix-workstation-17テンプレートをインストール中
whonix-workstation-17テンプレートをインストール中

テンプレートの再インストールが終わったら OK ボタンを押して終了させます。

whonix-workstation-17テンプレートの再インストール完了
whonix-workstation-17テンプレートの再インストール完了

Qube Manager を開くと whonix-workstation-17 の項目が復活しているのが確認できます。また画面左上Qから TEMPLATESタブをクリックしても同様に確認できます。

このあと Qubes Update ツールを用いて今インストールした whonix-workstation-17 をアップデートさせておいてください

英語環境Appキューブの作成・変更など

ディスポーザブル・テンプレート関係の処理

もともとあった whonix-workstation-17-dvm というディスポーザブルテンプレートは日本語が利用可能な ja-whonix-workstation-17 テンプレートベースです。名前がまぎらわしいので、この名前を ja-whonix-workstation-17-dvm に変更します。名前の変更は

  • whonix-workstation-17-dvm から ja-whonix-workstation-17-dvm という名前のクローンを作成

  • whonix-workstation-17-dvm を削除

という手順で進めていきます。

Qube Manager を起動し、whonix-workstation-17-dvm の行をハイライトさせます。ウィンドウ左上のメニューの "Qube" をクリックし、ドロップダウンから "Clone qube" を選びます。

Qube Managerから whonix-workstation-17-dvm をクローンする
Qube Managerから whonix-workstation-17-dvm をクローンする

クローンしてできる新キューブの名前は ja-whonix-workstation-17-dvm にします。

ja-whonix-workstation-17-dvm というクローンを作成
ja-whonix-workstation-17-dvm というクローンを作成

今度は whonix-workstation-17-dvm を削除したいのですが、"デフォルトのディスポーザブル・テンプレート"という設定項目に whonix-workstation-17-dvm が指定されているキューブが一つでも残っていると whonix-workstation-17-dvm は削除できないので、そのようなキューブの "デフォルトのディスポーザブル・テンプレート" の設定を変更します。

Qube Manager を開いて "Default DispVM" の列をチェックしてください。Default DispVM とはデフォルトのディスポーザブル・テンプレートのことです。この列の中で whonix-workstation-17-dvm が設定されているキューブ(anon-whonixなど)を探します。

Qube Manager を開いて Default DispVM の列をチェック
Qube Manager を開いて Default DispVM の列をチェック

それらのキューブの Settings を開いて Advancedタブをクリックし、ウィンドウ左下あたりの Default disposable template のドロップダウンメニューから ja-whonix-workstation-17-dvm を選択し、OKボタンを押します。

anon-whonixの デフォルト dispvm を変更
anon-whonixの デフォルト dispvm を変更

Qube Manager の Default DispVM の列をよく見て、他のキューブも同様に処理します。

最後に whonix-workstation-17-dvm を削除します。Qube Manager から whonix-workstation-17-dvm の行をクリックしてハイライトさせます。ウィンドウ左上の Delete qube ボタンを押します。

 whonix-workstation-17-dvm を削除するために Delete qubeを押す
whonix-workstation-17-dvm を削除するために Delete qubeを押す

キューブを削除するときはキューブの名前を入力する必要があります。whonix-workstation-17-dvm とタイプしてから OK ボタンを押すと削除されます。

whonix-workstation-17-dvm をついに削除
whonix-workstation-17-dvm をついに削除

Qube Manager から whonix-workstation-17-dvm の行が消えたのを確認してください。

英語専用のWhonixワークステーションディスポーザブルの作成

今度は日本語化していない whonix-workstation-17 に基づくディスポーザブルのテンプレートを作成します。このようなディスポーザブルは特に機密を求められるオンライン活動を行うのに向いています。

Create New Qube を起動させます。

Create New Qube を起動
Create New Qube を起動

左サイドの一覧から Applicationタブを選びます。Basic Properties の Name 欄には先程消去したものと同名の whonix-workstation-17-dvm を入力しました。何か他の名前でもかまいません。ディスポーザブルですから色は red を選びましょう。Launch Qube Settings after creation (作成後にQube セッティングを起動) のチェックボックスをオンにします。Template のドロップダウンメニューの中から whonix-workstation-17 を指定します。Network は Tor/Whonix: sys-whonix のラジオボタンを選んでください。一番下にある Create ボタンを押します。

英語専用ディスポーザブル whonix-workstation-17-dvm を新規作成
英語専用ディスポーザブル whonix-workstation-17-dvm を新規作成

whonix-workstation-17-dvm の Settings の Advanced タブをクリックして 左側にある Disposable template のチェックボックスをオンにしてください。OKボタンを押します。

これで whonix-workstation-17-dvm というディスポーザブル・テンプレートが作成されました。

作成直後に画面左上 Q から APPSタブの whonix-workstation-17-dvm を選ぶとアプリケーション・メニューが空になる不具合があるようです。whonix-workstation-17-dvm の Settings の Applications タブを選んで Refresh Applications ボタンをクリックすると直るようです。

Refresh Applications ボタンをクリックしてメニュー表示を直す
Refresh Applications ボタンをクリックしてメニュー表示を直す

ディスポーザブル・テンプレート whonix-workstation-17-dvm が適切に機能しているか確認するため、このテンプレートに基づくディスポーザブルの Torブラウザを起動してみましょう。

 whonix-workstation-17-dvm のTorブラウザをローンチ
whonix-workstation-17-dvm のTorブラウザをローンチ

以下のように無事Torブラウザが起動しました。

英語専用Whonixディスポーザブルの Torブラウザを起動
英語専用Whonixディスポーザブルの Torブラウザを起動

英語専用Whonixワークステーション・キューブを作成

ここでは英語専用の whonix-workstation-17テンプレートに基づく(ディスポーザブルではない)通常のキューブを作成します。

Create New Qube ツールなどのGUIのかわりに、たまにはdom0のターミナルからコマンドラインを使ってキューブを作成してみます。新しく作るキューブの名前は myanon に、テーマ色は紫(purple) にしました。テンプレートは whonix-workstation-17 です。キューブ作成のコマンドは qvm-create です。詳細はdom0のターミナルから qvm-create --help を実行してください。

Dom0 のターミナルを開いて以下のコマンドを打ってください。

[ft7777@dom0 ~]$ qvm-create --template whonix-workstation-17 --label purple myanon

新たに作成されたキューブ myanon の性質を表示するには qvm-ls コマンドを使います。

[ft7777@dom0 ~]$ qvm-ls myanon
NAME    STATE   CLASS  LABEL   TEMPLATE               NETVM
myanon  Halted  AppVM  purple  whonix-workstation-17  sys-whonix

この myanon キューブのターミナルを起動して localectl status を実行したのが下記の画像です。

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

たしかに英語環境になっています。しかし以下のコマンドで Asia/Tokyo のタイムゾーンが報告されます。

[workstation user ~]% qubesdb-read /qubes-timezone
Asia/Tokyo

日本語キーボードに関する情報も取得可能です。

[workstation user ~]% qubesdb-read /keyboard-layout
jp++
[workstation user ~]% qubesdb-read /qubes-keyboard 
xkb_keymap {\x0a\x09xkb_keycodes  { include "evdev+aliases(qwerty)"\x09};\x0a\x09xkb_types     { include "complete"\x09};\x0a\x09xkb_compat    { include "complete+japan"\x09};\x0a\x09xkb_symbols   { include "pc+jp+inet(evdev)"\x09};\x0a\x09xkb_geometry  { include "pc(pc105)"\x09};\x0a};

Qubes OSの環境を英語環境にする

前述のように、日本人ユーザーであることを完全に隠蔽するにはWhonixだけではなく Qubes OS全体で設定を変えざるを得ないようです。 このセクションでは時刻設定をUTCにするとともに、キーボードを英語仕様に変更するやり方を解説します。

時刻設定の変更

Dom0ターミナルから次のとおりタイムゾーンUTC に設定します。

[ft7777@dom0 ~]$ sudo timedatectl set-timezone UTC

英語キーボード設定への変更の仕方

CTRL+F3 を打ってから keyboard エンターキーの順に入力すると Qubes OSのキーボード設定画面が起動します。Layout タブをクリックしてください。

Qubes OSのキーボード設定画面
Qubes OSのキーボード設定画面

Use system defaults のスイッチをオフにします。下の方にある + Addボタンを押します。

Use system defaults のスイッチを切り、+Addボタンを押す
Use system defaults のスイッチを切り、+Addボタンを押す

英語キーボードである English(US) を選んで OKを押します。

 English(US) を選ぶ
English(US) を選ぶ

日本語キーボードを一旦削除します。Japanese の行をクリックしてから - Removeボタンを押してください。

日本語キーボードを削除
日本語キーボードを削除

気になる人は Keyboard model も PC101 タイプに変えておきます。

 Keyboard model も PC101 タイプに変更
Keyboard model も PC101 タイプに変更

英語環境になったことの確認

これらの設定が myanon にうまく伝わるように、myanonキューブを再起動させます。

myanon キューブのターミナルから以下のコマンドを実行します。

[workstation user ~]% qubesdb-read /qubes-timezone
UTC
[workstation user ~]% qubesdb-read /keyboard-layout
us++
[workstation user ~]% qubesdb-read /qubes-keyboard 
xkb_keymap {\x0a\x09xkb_keycodes  { include "evdev+aliases(qwerty)"\x09};\x0a\x09xkb_types     { include "complete"\x09};\x0a\x09xkb_compat    { include "complete"\x09};\x0a\x09xkb_symbols   { include "pc+us+inet(evdev)"\x09};\x0a\x09xkb_geometry  { include "pc(pc101)"\x09};\x0a};

これで何とか日本語キーボードとタイムゾーンの情報が秘匿できたようです。もちろん日本語キーボードを英語設定で打とうとするのは面倒ですが...

日本語キーボード情報の漏洩

myanon のTorブラウザを起動してください。

TorブラウザからW3CのKeyboard Event Viewerを開いて、日本語キーボードを英語キーボード設定にした場合Torブラウザであっても 「カタカナひらがな」や「変換」キーが押されたことがKeyboard Eventとして情報漏えいすることなどを確かめてみましょう。

W3CのKeyboard Event ViewerにてTorブラウザのキー入力漏洩を検証
W3CのKeyboard Event ViewerにてTorブラウザのキー入力漏洩を検証

キューブ内でキー入力の情報がどのように流れているのか調べるには xev コマンドを用います。anon-whonixのターミナルから "xev" をそのまま入力するとマウスの動きなども含めた大量の情報がターミナル上に表示されます。Arch Linuxの解説にキーを押したときの情報だけを表示する便利なコマンドが載っていたのでそれを使ってみます。

[workstation user ~]%  xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'
34  bracketleft
35  bracketright
97  NoSymbol
132 NoSymbol
100 Henkan_Mode
102 Muhenkan
101 Hiragana_Katakana
49  grave

上記の xev | awk で始まるコマンドを入力してから、ポップアップして現れたウィンドウの上でキーを入力していくと、そのキーに関する情報が出力されます。xev を終了させるにはポップアップウィンドウの☒を押すか、ターミナル側のウィンドウにフォーカスしてからCtrl + Cを押してください。

上の出力は以下の日本語キーボードのキーを押したときのものです。

  • (34) Pの右隣の@
  • (35) さらにその右隣の[
  • (97) 「ろ」の刻印のあるキー
  • (132) バックスペースキーの左隣の¥の刻印のあるキー
  • (100) 「変換」キー
  • (102) 「無変換」キー
  • (101) 「カタカナひらがなローマ字」の刻印のあるキー
  • (49) 数字の1及び「ぬ」の刻印のあるキーの左隣の半角/全角キー

日本語キーボードの@マークを押すと左角括弧 [ が、また、半角・全角キーを押すとグレーブ ` が出力されるので英語キーボード設定にはなっていることが分かります。しかし英語キーボードには無いタイプのキー、例えばYenキー(¥)、「ろ」キー、ひらがなカタカナキーなどを押した情報が漏れています。

ちなみに (97), (132) などの数字はLinuxXorgで内部的に使われているキーコードです。上で示したArch Linuxの解説サイトによれば、このXorgのキーコードはLinuxC言語レベルのキーコードよりも整数8の分だけ大きいそうです。

たとえば Xorg の132が何を意味するのかは次のコマンドを打つと分かります。

[workstation user ~]% less /usr/include/linux/input-event-codes.h | grep "\s$((132 - 8))"
#define KEY_YEN            124

Xorgの132キーとは Yenキーであることがこれで分かります。

[workstation user ~]% less /usr/include/linux/input-event-codes.h | grep "\s$((97 - 8))"
#define KEY_RO         89

97キーはその名も KEY_ROです。「ろ」の刻印のあるキーを打ったことなどはキューブ内の Xイベントを観察していればバレてしまうのです。

以上の観察を踏まえるとmyanonなど whonix-workstation-17系の英語環境のキューブを利用するときに日本人であることを確実に隠したいときは、英語キーボードをUSB接続して、dom0から英語キーボード設定にして使わないといけないようです。

ちなみにキーボードのハードウェア情報はdom0またはsys-usbに保存されていて、Whonixキューブからはアクセスできないのでその点は心配ないようです。

日本語環境に戻す

Dom0ターミナルから

[ft7777@dom0 ~]$ sudo timedatectl set-timezone Asia/Tokyo

を実行してタイムゾーンを元通りにします。

CTRL+F3 のつぎにkeyboard エンターキーを打ちます。Use system defaults のスイッチをオンにします。

キーボード設定でUse system defaults のスイッチをオンにする
キーボード設定でUse system defaults のスイッチをオンにする

Qubes OSからログアウト・ログインします。そうするともとの日本語キーボード設定に戻ります。


  1. Torブラウザのフィンガープリント対策については、Torブラウザの設計方針を解説しているサイトの"Specific Fingerprinting Defenses in the Tor Browser"を見てください。
  2. Webサイトに伝わるKeyboardEventの内容を実際に確認したい場合、w3cのKeyboard Event ViewerというWebツールが便利です。特に日本語変換されていく様子が相手に克明に伝わるところなどは必見です。