回答:
PrivacyIdeaというグループが小さなパッケージを作成して、HMAC-SHA1チャレンジ/レスポンスルーチンをinitramfs に追加しました。つまり、Ubuntuはチャレンジを問い合わせてYubikeyに渡してから、そのレスポンスを使用してLUKSボリュームのロックを解除できます。ほとんどの場合、コメントを追加してこれらの指示に従っています。このプロセスは実際には非常に簡単です。
これをUbuntu 14.04、16.04、および18.04でテストしました。Yubikey Neoを使用しています。最近のYubikey、ファームウェア2.0以降、および14.04以降のUbuntuのすべてのバージョンで動作するはずです。また、Yubikey 5CでUbuntu 19.04をテストしましたが、追加の作業が必要でしたが、機能させることができます。他のハードウェアHMAC-SHA1チャレンジ/レスポンスデバイスも使用できますが、これは存在しません。いつものように、先に進む前にデータのバックアップがあることを確認してください-ここに問題はないはずですが、これによりコンピュータ上のすべてが破壊される可能性が常にあります。これらの指示には保証が付いていません。
更新: Ubuntu 16.04以降、必要なパッケージはメインリポジトリにあり、PPAは不要です。
質問がある場合はコメントを追加してください!
これが機能するためには、LUKSフルディスク暗号化を設定して動作させる必要があります。これを行うには、Ubuntuのインストール時に適切なオプションを選択します。セキュリティを最大限に高めるには、インストール中に非常に強力なパスフレーズを選択する必要があります。パスフレーズがスクラッチになっていない場合は、続行する前にパスフレーズを変更する必要があります(詳細な手順はこちら)。
以下の方法は、既存のパスフレーズを置き換えませんが、代わりにLUKSスロットの1つに別のパスフレーズを追加します。したがって、Yubikeyを紛失した場合でも、既存のパスフレーズを使用してコンピューターのロックを解除できます-それをメモして、安全な場所に隠しておくことをお勧めします-この手順中に何度か必要になります。新しいYubikeyチャレンジパスフレーズはまだかなり強力である必要がありますが、Ubuntuのインストール時に使用したパスフレーズほど長くする必要はありません。
ターミナルを開き、次のコマンドを実行します。
sudo add-apt-repository ppa:privacyidea/privacyidea
プロンプトが表示されたらEnterを押してから、次を実行します。
sudo apt-get update
次に、次を使用してパッケージをインストールします。
sudo apt-get install yubikey-luks
PPAは必要ありません。パッケージは次の方法でインストールできます。
sudo apt-get install yubikey-luks
Ubuntu 19.04のソースからパッケージをビルドする方法については、この回答を参照してくださいyubikey-luks
。
YubikeyのHMAC-SHA1機能を他の目的に使用している場合は、このセクションをスキップできます。2番目のYubikeyスロットの設定はすべて消去されるため、このYubikeyで他の目的にHMAC-SHA1を使用する場合は、この手順を実行しないでください。
Ubuntu 14.04のYubico PPAまたは16.04以降のメインUbuntuリポジトリから必要なソフトウェアをインストールすることにより、YubikeyをUbuntuで動作するように設定する必要があります。
まだ行っていない場合は、PPAを追加し、次を使用してパッケージをインストールします。
sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization
sudo apt-get install yubikey-personalization
ここで、HMAC-SHA1構成でYubikeyの2番目のスロットをプログラムする必要があります。これにより、デフォルトでは空になっている以前のスロット設定が消去されます。繰り返しますが、他の目的でHMAC-SHA1を使用している場合は、このコマンドを発行しないでください。設定が消去されます。このLUKSセットアップでは、他の用途と同じ秘密鍵をYubikey内で安全に使用できます。(たとえば、LUKS + Yubikeyを使用する別のコンピューターで)。
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible
ターミナルには、行われた変更に関する情報が表示されます。これを書き留める必要はありませんが、チャレンジが与えられたときの応答を計算するために、HMAC-SHA1アルゴリズムでYubikeyによって使用される秘密鍵が表示されます。
次に、LUKS構成を編集して、Yubiikeからの応答を復号化キーの1つとして追加します。
指定する必要があるパーティションは、マシンを起動するのにBIOSまたはUEFIのどちらを使用しているかによって異なります。BIOSの場合、暗号化されたボリュームは/dev/sda5
デフォルトで、UEFIの場合はにあり/dev/sda3
ます。これdisks
を確認するには、ユーティリティを開き、パーティションのパスを確認します- sda3
またはである必要がありますsda5
。注: NVMeディスクを搭載した新しいコンピューターでは、パスは次のようになり/dev/nvme0n1p3
ます。
これをターミナルで実行します:
sudo yubikey-luks-enroll -d /dev/sda3 -s 7
これにより、LUKS構成のスロット7に書き込まれ、インストーラーのプロンプトに従います(実行しているバージョンによって若干異なります)。
これで完了です!コンピューターを再起動し、Yubikeyが挿入されている場合は、チャレンジパスワードを入力し、Yubikeeを2番目の要素として使用してLUKSパーティションのロックを解除し、システムを起動できます。ハードドライブを復号化したら、Yubikeyを削除できます。
Yubikeyを紛失した場合でも、元の(できれば非常に長い)パスフレーズを入力してハードドライブを復号化できます。その後、この手順に従って新しいYubikeyを登録できます。
後日パスワードを変更するのは非常に簡単です。このコマンドを使用して秘密鍵をリセットするだけです。秘密鍵をリセットする必要はありませんが、害はありません。これにより、以前の秘密鍵が破壊されることに注意してください。このYubikeyでHMAC-SHA1を使用する場合は、これを行わないでください。(たとえば、LUKS + Yubikeyを使用する別のコンピューターで)。
ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible
次に、上記のステップ4と同様に、LUKSキースロットに新しいパスワードを登録します。ただし、このコマンドでスロット7をクリアすることを選択します。
sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c
のプロンプトが表示されたらEnter any remaining passphrase
、Yubikeyチャレンジパスフレーズではなく、バックアップパスフレーズを使用します。次に、新しい Yubikeyチャレンジパスフレーズを2回入力し、最後にバックアップパスフレーズを最後に入力する必要があります。
これで、古いYubikeyチャレンジパスフレーズが削除され、新しいドライブのみがハードドライブを復号化します。以前のバックアップパスフレーズは同じままです。ステップ0のリンクをたどって、そのパスフレーズを変更できます。
Yubikeyを追加すると、システムに一定レベルのセキュリティが追加されます-誰かがチャレンジパスフレーズを知っており、Yubikeyがハードドライブのロックを解除できるようにする必要があります(または、現在バックアップとして使用している初期パスフレーズを見つけます) 。ただし、攻撃者がチャレンジパスフレーズを知っている場合(たとえば、入力中に「ショルダーサーフィン」を行うことで)、ハードドライブを解読することは技術的に実行可能であり、短時間でYubikeyにアクセスできます。チャレンジパスフレーズを使用して、Yubikeyから応答を取得して保存し、Yubikeyなしでいつでもハードドライブを復号化することができます。または、攻撃者またはマルウェアがパスフレーズを知っていて、Yubikeyに接続されたマシンでコードを実行できた場合も、チャレンジを発行して応答を保存できます。したがって、チャレンジパスフレーズを入力するときは用心し、ユビキーを常に安全な場所に置いておくことが非常に重要です。また、信頼できるマシンにのみプラグインする必要があります。Yubikeyのトラックを失い、誰かがそれを使用して復号化キーを学習しようとした可能性がある場合は、ステップ2と3を再度実行してYubikey内の秘密キーをリセットし、新しいチャレンジパスフレーズを選択します。敵がパスフレーズ(YubikeyからのHMAC-SHA1応答、またはバックアップのいずれか)を学習できた場合、LUKSマスターキーのバックアップを作成し、それを使用してハードドライブを復号化できることに注意してください将来パスフレーズを変更します。そして、常に安全な場所にYubikeyがあるようにします。また、信頼できるマシンにのみプラグインする必要があります。Yubikeyのトラックを失い、誰かがそれを使用して復号化キーを学習しようとしている疑いがある場合、ステップ2と3を再度実行してYubikey内の秘密キーをリセットし、新しいチャレンジパスフレーズを選択します。攻撃者がパスフレーズ(YubikeyからのHMAC-SHA1応答またはバックアップのいずれか)を学習できた場合、LUKSマスターキーのバックアップを作成し、それを使用してハードドライブを復号化できることに注意してください将来パスフレーズを変更します。また、Yubikeyを常に安全な場所に置いてください。また、信頼できるマシンにのみプラグインする必要があります。Yubikeyのトラックを失い、誰かがそれを使用して復号化キーを学習しようとしている疑いがある場合、ステップ2と3を再度実行してYubikey内の秘密キーをリセットし、新しいチャレンジパスフレーズを選択します。攻撃者がパスフレーズ(YubikeyからのHMAC-SHA1応答またはバックアップのいずれか)を学習できた場合、LUKSマスターキーのバックアップを作成し、それを使用してハードドライブを復号化できることに注意してください将来パスフレーズを変更します。ステップ2と3を再度実行して、Yubikey内の秘密鍵をリセットし、新しいチャレンジパスフレーズを選択します。攻撃者がパスフレーズ(YubikeyからのHMAC-SHA1応答またはバックアップのいずれか)を学習できた場合、LUKSマスターキーのバックアップを作成し、それを使用してハードドライブを復号化できることに注意してください将来パスフレーズを変更します。ステップ2と3を再度実行して、Yubikey内の秘密鍵をリセットし、新しいチャレンジパスフレーズを選択します。攻撃者がパスフレーズ(YubikeyからのHMAC-SHA1応答またはバックアップのいずれか)を学習できた場合、LUKSマスターキーのバックアップを作成し、それを使用してハードドライブを復号化できることに注意してください将来パスフレーズを変更します。cryptsetupのmanページでこれを説明しています。luksHeaderBackupセクションをご覧ください。これが発生した疑いがある場合は、データを保護するためにまったく新しいLUKSボリュームを作成する必要があります。
Ubuntu 19.04の更新:
Ubuntu 19.04の時点で(そしておそらく18.10、私はそのリリースを試していませんでした)、以前の動作cryptsetup
方法を破るのに十分なほど変更yubikey-luks
されたようです。これは、コミット上流のリポジトリから修正プログラムを実装するようだが、元のリポジトリには、私が10月2018年以来更新されているようには見えないレポのこのフォーク見つけ修正を持っているだけでなく、tidying-のいくつかの他のビットをそして、19.04で動作するパッケージをビルドしました。
更新されたフォークの既存のビルドが見つからなかったため、yubikey-luks
作業を行う方法には、ソースコードを取得し、DEBパッケージをローカルでビルドしてからインストールすることが含まれます。
ビルドの依存関係をインストールします:
sudo apt install dh-exec devscripts expect yubikey-personalization
次に、ソースアーカイブをダウンロードして抽出します。
mkdir ~/tmp
cd ~/tmp
wget -O yubikey-luks.zip https://github.com/thuandt/yubikey-luks/archive/master.zip
unzip yubikey-luks.zip
cd yubikey-luks-*
以下を使用してパッケージをビルドします。
make builddeb NO_SIGN=1
次にインストールします:
sudo dpkg -i DEBUILD/yubikey-luks_*.deb
次に、最初の回答の残りの手順を続けます。
19.10までyubikey-luks
に、メインのUbuntuアーカイブのバージョンを更新して、手動でビルドする必要がないようにしたいです。
おまけとして、新しいバージョンには設定ファイルがあります。これはにあります/etc/ykluks.cfg
。ブート時に表示されるメッセージは、このファイルで構成できます。