たとえば、3つのキーのうち2つを必要とする高度なLUKSキースキームはありますか?

たとえば、3つのキーのうち2つを必要とする高度なLUKSキースキームはありますか?

2つの主なLUKS暗号化オプションは次のとおりです。

  1. USBキーファイル(参照)https://superuser.com/questions/149578/how-can-i-use-a-keyfile-on-a-removable-usb-drive-for-my-encrypted-root-in-debian)
  2. パスワードを入力

どちらにも弱点があります。最初の問題は、USBドライブを盗むことによって克服することができます。 2番目のケースでは、キーロガーを使用するか、パスワードを渡す必要があります。

両方のオプションが必要な暗号化スキームを作成することは可能ですか?その後、パスワードの入力を求められたら、USBドライブを破壊することができます(ストーブに乗せて使用するなど)。逆に、誰かが私のUSBドライブを盗んだら、パスワードも見つけなければなりません。

既存のLUKSキースロットのアイデアはどのキースロットは、キーを提供せずにデバイスのロックを解除します。みんな、または「3つのうち2つ」キースロット(iirc、後者はGaloisフィールドを使用して暗号化されたセキュリティ方式で実行できます)。

(また、私はOpenSuSEシステムを使用しているので、配布に拘束されていないか、SuSEで動作する答えを維持してください。)

ベストアンサー1

私はこのようなことが容易に可能であるとは思わないが、可能でなければなりません。あなたのためにいくつかの参考資料を集めましょう。

最初は/etc/crypttabです。通常、3番目のスロットにキーファイルまたはパスワードを指定しますが、一部のディストリビューションでは、次の4番目のフィールドにオプションを指定できますkeyscripthttp://linux.frank4dd.com/en/man5/crypttab.htm)。スクリプト ("/lib/cryptsetup/scripts" iirc になければならない) は、3 番目のフィールド (通常はキーファイルまたはパスワードのみ) を引数として使用できます。キースクリプトの役割は、実際の復号化キーをstdoutに送信することです。その後、このキーはcryptsetupの一般的な方法でluksキーとして使用されます。

第二に、重要なスクリプトを書く必要があるかもしれません。netkeyscript(githubから)は、UDPマルチキャストソケットからパスワードを受信するキースクリプトの例です。ここにカスタムキー入力スクリプトの別の詳細な例があります。完全な実装は次のとおりですshhttp://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」です。今、あなたのパスワードは次のようになりますcc'

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

とにかく幸運を祈って楽しいハックをしてください :)

おすすめ記事