web-dev-qa-db-ja.com

cryptsetup:dm-キーファイルとパスフレーズを使用したプレーンモードの暗号化

キーファイルとパスフレーズは異なる利点を提供すると思います。同じ方法で取得することはできません(物理的に取得する必要があるものと、知る必要があるもの)。したがって、これらの両方を使用してデータを暗号化することには大きなメリットがあると思います。そうすれば、侵害された場合でも暗号化は損なわれません。

プレーンモードでdm-cryptを使用して、両方を使用したいと思います。デフォルトでは、dm-cryptはパスフレーズを使用しますが、これをキーファイルに簡単に変更できます。ただし、これらは同じ種類の入力のようです(たとえば、キーファイルが提供されている場合はパスフレーズになります)。したがって、-key-fileと--verify-passphraseの両方を使用しても機能しません。

両方を使用するための回避策はありますか?

5
User402841

cryptsetupの実際のパスフレーズ(おそらく非常に長く複雑な文字列)を、覚えている別のパスフレーズを使用してGnuPG(またはその他のツール)で暗号化されたファイルに保存できます。

最初にパスフレーズ文字列をgpgで暗号化して、暗号化されたkeyfileを取得します。

# echo 'long-long-passphrase-for-cryptsetup' | gpg -q -c --cipher-algo AES256 -o keyfile 
Enter passphrase: <- Enter another passphrase you can remember
# file keyfile 
keyfile: GPG symmetrically encrypted data (AES256 cipher)

次に、keyfileを復号化して、そのパスフレーズをcryptsetup --key-file -の標準入力にフィードします。

# gpg -qd keyfile | cryptsetup plainOpen --key-file - /path/to/image volname

同様の提案は cryptsetup manual に見ることができます。

上記の例では、簡単にするために対称暗号化(gpg -c)を使用しています。公開鍵暗号化を採用できれば、はるかに優れており、望ましいでしょう。

5
yaegashi