systemd-cryptenroll
関連記事
- systemd-cryptenroll は、ハードウェアセキュリティトークンとデバイスを LUKS2 暗号化ボリュームに登録するためのツールです。これは、ブート中にボリュームのロックを解除するために使用できます。
systemd-cryptenroll を使用すると、スマートカード、FIDO2 トークン、および Trusted Platform Module セキュリティチップを LUKS デバイスに登録できるだけでなく、通常のパスフレーズも登録できます。これらのデバイスは、登録されたトークンを使用して、後で systemd-cryptsetup@.service(8) によってロック解除されます。
目次
インストール
systemd-cryptenroll は、systemd の一部であり、パッケージ化されています。ただし、ハードウェアデバイスをキーとして使用するには、追加のパッケージが必要です。
- PKCS#11 トークンを使用するには、libp11-kit を インストール します。
- FIDO2 トークンを使用するには、libfido2 をインストールします。
- TPM2 デバイスを使用するには、tpm2-tss をインストールします。
キースロットのリスト
systemd-cryptenroll は、cryptsetup luksDump
と同様に、LUKS デバイス内のキースロットをリストできますが、よりユーザーフレンドリーな形式です。
# systemd-cryptenroll /dev/disk
SLOT TYPE 0 password 1 tpm2
キースロットの消去
# systemd-cryptenroll /dev/disk --wipe-slot=SLOT
SLOT には次の値を指定できます。
- キースロットのインデックス。
- そのタイプのキースロットはすべて消去されます。有効なタイプは
empty
,password
,recovery
,pkcs11
,fido2
,tpm2
です。 - カンマで区切られた上記のすべての組み合わせ
- 文字列
all
は、デバイス上のすべてのキースロットを消去します。このオプションは、別のデバイスまたはパスフレーズを同時に登録する場合にのみ使用できます。
--wipe-slot
操作はすべての登録オプションと組み合わせて使用でき、既存のデバイス登録を更新するのに役立ちます。
# systemd-cryptenroll /dev/disk --wipe-slot=fido2 --fido2-device=auto
パスフレーズの登録
通常のパスワード
これは、cryptsetup luksAddKey
と同等です。
# systemd-cryptenroll /dev/disk --password
回復キー
- 回復キーはパスフレーズとほとんど同じですが、人間が選択するのではなくコンピューターによって生成されるため、高いエントロピーが保証されています。キーは入力しやすい文字セットを使用しており、QR コードを介して画面外からスキャンすることもできます。
回復キーは、ハードウェアトークンが利用できない場合にフォールバックとして使用されるように設計されており、必要なときにいつでも通常のパスフレーズの代わりに使用できます。
# systemd-cryptenroll /dev/disk --recovery-key
ハードウェアデバイスの登録
--type-device
オプションは、それぞれのタイプの有効なデバイスパスを指定する必要があります。使用可能なデバイスのリストは、このオプションに list
引数を渡すことで取得できます。あるいは、目的のタイプのデバイスが 1 つだけ接続されている場合は、auto
オプションを使用してそれを自動的に選択できます。
ハードウェアトークンを LUKS ボリュームに登録した後、必要に応じてハードウェア トークンを使用するようにシステムを構成する必要があります。ルートファイルシステムなど、初期のユーザー空間でロックを解除する必要があるボリュームについては dm-crypt/システム設定#Trusted Platform Module と FIDO2 鍵 を参照し、その他のボリュームについては dm-crypt/システム設定#後期ユーザ空間でロックを解除する を参照してください。パーティション。
PKCS#11 トークンまたはスマートカード
トークンまたはスマートカードには、ボリュームのロックを解除するために使用される生成されたキーの暗号化に使用される RSA キーペアが含まれている必要があります。
# systemd-cryptenroll /dev/disk --pkcs11-token-uri=device
FIDO2 トークン
"hmac-secret" 拡張機能をサポートする FIDO2 トークンは、systemd-cryptenroll で使用できます。
# systemd-cryptenroll /dev/disk --fido2-device=device
さらに、systemd-cryptenroll は、トークンの組み込み検証機能の使用をサポートしています。
--fido2-with-client-pin
は、ロック解除前にPINを要求するかどうかを定義する。--fido2-with-user-presence
は、ロックを解除する前にユーザの存在を確認するかどうか (トークンをタップするなど) を定義する。--fido2-with-user-verification
は、ロック解除前にユーザ認証を要求するかどうかを定義します。
Trusted Platform Module
systemd-cryptenroll はLUKSキーをTPMへ保存するためのネイティブサポートを備えています。次のものを用意してください。
- tpm2-tss (必須)。
- LUKS2を設定したデバイス (cryptsetup)。
root
パーティションを使用する場合は、initramfsも変更する必要があります。- mkinitcpio:
systemd
とsd-encrypt
フックを有効にしてください。 - dracut:
tpm2-tss
モジュールを有効にしてください。
- mkinitcpio:
はじめに、次のコマンドでインストール済みのTPMと使用中のドライバを表示してください。
systemd-cryptenroll --tpm2-device=list
キーは1つのコマンドでLUKSとTPMの両方に保存することができます。次の例ではランダムなキーを生成し、ボリュームへ追加して、既存のキーに加えてボリュームのロックを解除できるように新しいキーをPCR7(セキュアブート)へ登録します。
systemd-cryptenroll --tpm2-device=auto /dev/sdX
/dev/sdXは暗号化済みのLUKSデバイスです。LUKSボリュームがパスフレーズではなくキーファイルによってロックされている場合は--unlock-key-file=/path/to/keyfile
を使用します。
systemd-cryptenroll --tpm2-device=auto /dev/sdX --unlock-key-file=/path/to/keyfile
デフォルトでは、TPM を登録するとキーが PCR7 にバインドされ、セキュアブート 状態が測定されます。--tpm2-pcrs
オプションを使用すると、キーがバインドされる PCR を変更できます。+
記号で区切ることにより、複数の PCR を同時に使用できます。PCR とその測定内容の完全なリストは、Trusted Platform Module#Accessing PCR registers で入手できます。
バインドするPCRの組み合わせは使いやすさとロックダウンのバランスを取るために、ユースケースによって異なります。例えばセキュアブートに手動で介入せずに、UEFIのファームウェアの更新が必要な場合や異なるブートテバイスが必要な場合があります。その他の例として、WindowsのBitlockerはPCR7+11
を優先しますが、他のPCRの組み合わせを使用する場合もあります。
新しいキーが登録すされたことを確認するには次のコマンドを実行し、systemd-tpm2
トークンエントリとKeyslotsセクションの追加エントリを探します。
cryptsetup luksDump /dev/sdX
キーが機能することをテストするには、LUKSボリュームがclose
しているときに次のコマンドを実行します。
systemd-cryptsetup attach mapping_name /dev/sdX none tpm2-device=none
起動時にボリュームのロックを解除するには、Dm-crypt/システム設定#crypttabとDm-crypt/システム設定#Trusted Platform Module と FIDO2 鍵を参照してください。
詳細と例については、systemd-cryptenroll(1)とcrypttab(5)を参照してください。