最近、Yubikey Neoを購入しました。これは、ちょっとしたハードウェアの第2要素認証デバイスです。主にワンタイムパスワードおよび新しいU2Fプロトコルでの使用を目的としていますが、Yubikeyバージョン2以降では、HMAC-SHA1チャレンジ/レスポンス認証もサポートしています。 HMAC-SHA1は、秘密鍵(Yubikey内に格納されている)を組み合わせ、これをパスフレーズと組み合わせて応答を生成します。
YubikeyをUbuntu FDEセットアップと組み合わせて、暗号化されたハードドライブで2FAを使用するにはどうすればよいですか?
PrivacyIdea というグループが、initramfsに HMAC-SHA1 チャレンジレスポンスルーチンを追加する小さなパッケージを作成しました。これは、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を使用する場合は、do n'tを実行します。
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が挿入されている場合は、チャレンジパスワードを入力し、Yubikeyを2番目の要素として使用してLUKSパーティションをロック解除し、システムを起動できます。ハードドライブを復号化したら、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チャレンジパスフレーズではなく、バックアップパスフレーズを使用します。次に、newYubikeyチャレンジパスフレーズを2回入力し、最後にバックアップパスフレーズをもう一度入力する必要があります。
これで、古いYubikeyチャレンジパスフレーズが削除され、新しいドライブのみがハードドライブを復号化します。以前のバックアップパスフレーズは同じままです。そのパスフレーズを変更するには、ステップ0のリンクをたどります。
Yubikeyを追加すると、システムに一定レベルのセキュリティが追加されます-誰かがチャレンジパスフレーズを知っている必要があり、Yubikeyがハードドライブのロックを解除できるようになります(またはバックアップとして使用している初期パスフレーズを見つけます) 。ただし、攻撃者がチャレンジパスフレーズを知っている場合(たとえば、入力中に「ショルダーサーフィン」を行うことにより)、ハードドライブを解読することは技術的に実行可能であり、短時間でYubikeyにアクセスできます。チャレンジパスフレーズを使用して、Yubikeyから応答を取得して保存し、Yubikeyなしでいつでもハードドライブを復号化することができます。または、攻撃者またはマルウェアがパスフレーズを知っていて、Yubikeyに接続されたマシンでコードを実行できた場合、チャレンジを発行して応答を保存することもできます。したがって、チャレンジパスフレーズを入力するときは用心し、ユビキーを常に安全な場所に置いておくことが非常に重要です。また、信頼できるマシンにのみプラグインする必要があります。 Yubikeyのトラックを失い、誰かがそれを使用して復号化キーを学習しようとしている疑いがある場合、ステップ2と3を再度実行してYubikey内の秘密キーをリセットし、新しいチャレンジパスフレーズを選択します。攻撃者がパスフレーズ(YubikeyからのHMAC-SHA1応答またはバックアップのいずれか)を学習できた場合、LUKSマスターキーのバックアップを作成し、それを使用してハードドライブを復号化できることに注意してください将来パスフレーズを変更します。 cryptsetupのmanページ でこれについて説明しています。luksHeaderBackupセクションをご覧ください。これが発生した疑いがある場合は、データを保護するためにまったく新しいLUKSボリュームを作成する必要があります。
Ubuntu 19.04のアップデート:
Ubuntu 19.04(そしておそらく18.10、私はそのリリースを試していませんでした)のように、cryptsetup
はyubikey-luks
の動作を中断するのに十分なほど変更されたようです。 このコミット 上流のリポジトリからは修正を実装しているようですが、 元のリポジトリ は2018年10月以降更新されていないようです。I このフォークを見つけましたリポジトリ には修正があり、他のいくつかの片付けもあり、19.04で動作するパッケージをビルドできました。
更新されたフォークの既存のビルドが見つからなかったため、yubikey-luks
を機能させる方法には、ソースコードを取得し、DEBパッケージをローカルでビルドしてからインストールすることが含まれます。
my previous answer の手順に従いますが、手順1を以下に置き換えます。
ビルドの依存関係をインストールします:
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までに、メインのUbuntuアーカイブ内のyubikey-luks
のバージョンを更新して、手動でビルドする必要がないようにしたいです。
ボーナスとして、新しいバージョンには/etc/ykluks.cfg
にある設定ファイルがあります。ブート時に表示されるメッセージは、このファイルで構成できます。