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)を持つことができるかどうかはわかりません。合理的なバックアップ計画を立てると良いでしょう。
とにかく幸運を祈って楽しいハックをしてください :)