2つの主なLUKS暗号化オプションは次のとおりです。
- USBキーファイル(参照)https://superuser.com/questions/149578/how-can-i-use-a-keyfile-on-a-removable-usb-drive-for-my-encrypted-root-in-debian)
- パスワードを入力
どちらにも弱点があります。最初の問題は、USBドライブを盗むことによって克服することができます。 2番目のケースでは、キーロガーを使用するか、パスワードを渡す必要があります。
両方のオプションが必要な暗号化スキームを作成することは可能ですか?その後、パスワードの入力を求められたら、USBドライブを破壊することができます(ストーブに乗せて使用するなど)。逆に、誰かが私のUSBドライブを盗んだら、パスワードも見つけなければなりません。
既存のLUKSキースロットのアイデアはどのキースロットは、キーを提供せずにデバイスのロックを解除します。みんな、または「3つのうち2つ」キースロット(iirc、後者はGaloisフィールドを使用して暗号化されたセキュリティ方式で実行できます)。
(また、私はOpenSuSEシステムを使用しているので、配布に拘束されていないか、SuSEで動作する答えを維持してください。)
答え1
私はこのようなことが容易に可能であるとは思わないが、可能でなければなりません。あなたのためにいくつかの参考資料を集めましょう。
最初は/etc/crypttabです。通常、3番目のスロットにキーファイルまたはパスワードを指定しますが、一部のディストリビューションでは、次の4番目のフィールドにオプションを指定できますkeyscript
。http://linux.frank4dd.com/en/man5/crypttab.htm)。スクリプト ("/lib/cryptsetup/scripts" iirc になければならない) は、3 番目のフィールド (通常はキーファイルまたはパスワードのみ) を引数として使用できます。キースクリプトの役割は、実際の復号化キーをstdoutに送信することです。その後、このキーはcryptsetupの一般的な方法でluksキーとして使用されます。
第二に、重要なスクリプトを書く必要があるかもしれません。netkeyscript
(githubから)は、UDPマルチキャストソケットからパスワードを受信するキースクリプトの例です。ここにカスタムキー入力スクリプトの別の詳細な例があります。完全な実装は次のとおりですsh
。http://wejn.org/how-to-make-passwordless-cryptsetup.html。重要なスクリプトを書く方法(私が呼ぶようにmultifactor
)は練習用に残しておきます。 ;)
3番目は秘密分割です。説明したように、「ssss」(google「ssss-split」)というオープンソースツールを使用してLuksパスワードを分割できます。これを3つの部分(a、b、c)に分割し、そのうちの2つが必要であるとします。 「a」はUSBドライブ、「b」はボルト、「c」はコンピュータ(暗号化されていないパーティション)などに保存してください。もちろん、「c」が公開されたくないので、覚えておくことができるパスワードを使用して目的のスキームを使用して暗号化し、そのパスワードを「」と呼ぶと、ディスクの暗号化は「c0
」です。今、あなたのパスワードは次のようになりますc
c'
root /dev/disk/<blah blah> /dev/<usb>:/path/to/a+$/dev/<blah>:/path/to/c' keyscript=multifactor
もちろん、3番目のフィールドは実際にキーボードスクリプトが許可する内容によって異なります。
理想的には、キースクリプトは、1つ以上のキーを復号化するためにユーザーの入力が必要かどうかを判断できる必要があります(たとえば、この場合c'
- > c
)、必要に応じて3番目のフィールドを使用してそれを指定できます。上記の例では、$
これを表現するためにリーダーを使用しました。
stdoutのすべての出力はluksパスワードで処理されるため、入力用のキーボードスクリプトプロンプト(おそらくstderr)を持つことができるかどうかはわかりません。合理的なバックアップ計画を立てると良いでしょう。
とにかく幸運を祈って楽しいハックをしてください :)
答え2
短い答え:いいえ。
異なるスロットに複数のキーを持つことができますが、これはあなたの質問には関係ありません。
セキュリティ上の理由から、RAMディスクのチェックサムを維持し、cryptsetupは静的に接続され、起動するたびに自動的にチェックします。
修正する
チェックサムは暗号化されたFSに保存され、パーティションがマウントされるまで変更できません。
つまり、リモートで悪用されたり、バイナリ(rootfs の ramdisk/cryptsetup など)が変更されない限り、安全です。 (しかし、私のrootfsは暗号化されており、カーネル/RAMディスクのみが公開されているので確認するだけですが、遅いCPU / HDDのロード速度に備えてください。)
答え3
そしてラックス2そしてシステム v248(2021年3月基準)FIDO2USBハードウェアセキュリティトークンマルチレベル認証(外務省)。セキュリティトークンデバイス(保持しているもの)を挿入し、デバイスPIN(知っているもの)を入力してロックを解除する必要があります。 PINはパスワードのように記録できますが、セキュリティキーはUSBスティック/キーファイルとは異なりコピーできません。しかし、USBスティックのように盗まれることはあります。
デバイスは、電源の接続/接続/盗難時にPIN無差別代入攻撃から保護されます。リセットするには、少なくとも別の管理PINが必要です。クライアントPINサポートはオプションであり、物理的な場合と同様にモデルによって異なります。ユーザーが存在しますそしてデバイスでユーザー認証特徴。
使用systemd-cryptenroll
LUKS2ボリュームキーウェイ、特にシステムディスクまたはその他の常に接続されたディスクの構成/etc/crypttab
。 FIDO2キーは使いやすいと言われています。この目的のために。また、エントロピーの高い「復旧」パスワードに対する特別サポートもあります。これは、セキュリティトークンが紛失した場合(またはひどいストーブ事故によって破損した場合)に役立ちますが、ほとんど使用されないことに加えて、汎用パスワードの欠点があります。
気づくcryptsetup
追加のsystemd-fido2
FIDO2キースロットメタデータ(デバッグの例)。このプラグイン/ライブラリはデフォルトで、特に起動時に使用できない場合がありますinitramfs
。 (一時、外部)LUKS2ヘッダーバックアップを作成し、FIDO2以外のキーホームを削除する前に設定を確認してください。また、見ることができます/usr/lib/systemd/systemd-cryptsetup
。
賞:〜からシステム v246(2020年7月から)、システムホスト$HOME
デバイスPINを介してFIDO2セキュリティトークン(システムディスクと同じか異なる)を使用して、個々のLUKS2ディレクトリのサポートを有効にします。使用homectl
管理するJSONユーザーレコード(既存のUNIXユーザーとは異なり)ホームディレクトリ/ディスクおよび対応する暗号化キー。これは大きなものの一部です。暗号化、不変性、移植性に専念など。特に、これにより$HOME
(特に)LUKS2暗号化USBスティックから直接暗号化されたポータブルディレクトリを保存して使用できます。