LUKSを使用して2台のハードドライブを暗号化しようとしています。自分では暗号化できないので、Arch Linux wikiのガイドを使用します (こちらにあります) 。ガイドの例では、指定された暗号はaes-xts-plain
512ビットの鍵サイズ。 aes-xts-plain
最良の選択ですか、それとも使用するより良い暗号がありますか?速度よりもセキュリティを優先します。
ブロック暗号の使用法で理解する必要がある3つのコンポーネントがあり、それらはここで明示的に適用されます。
したがって、オプションを選択すると、 aes-cbc-essiv
、あなたは実際にAESを求めています。CBCモードで、ブロックごとの識別子に基づいて暗号化されたIVを使用しますが、aes-xts-plain
は、XTSモードでAESを使用し、ブロックごとの情報から生成されたプレーンな古いIVを使用します。
それは、XTSが暗号化モードに組み込まれたホワイトニング(ESSIVと戦う)に対して十分な耐性があると信頼できるかどうかにかかっています。この段階では、XTSはより技術的な利点を備えたより近代的なモードですが、CBCと言うよりも暗号化テストが実施されていません。
ウィキペディアのXTSに関する注意点:
分割のため、AES 256およびAES 128暗号化を必要とするユーザーは、それぞれ512ビットおよび256ビットの鍵サイズを選択する必要があります。
このモードでは、各ブロックが目的のビットサイズのキーを使用するように、キーサイズの生成を選択する必要があります。 LUKSの情報、つまりcryptsetupでキーを分割する方法を確認していません。これは、希望する適切なレベルのセキュリティを確保するために実行したいことです。そのため、ガイドに従って、ブロックごとに256ビット暗号化が使用されています(512キーは2つの部分に分割されています)。
SUに関する最初の投稿で述べたように、必要なセキュリティのレベルは、攻撃者が有効な時間内にそれを壊す合理的な機会がないほど十分なセキュリティレベルでなければなりません(たとえば、個人データの場合、10年スパン)。
そのため、この例では、PCに国家機密や企業の機密データがないことを想定しているため、AES-XTS-PLAINは、攻撃者に対して妥当な時間枠で耐性があると予想されます。
最も好ましい暗号はaes-xts-plain64
であり、デフォルトでディストリビュートワイド(RedHat、CentOS、Oracle Linux、Ubuntu)で使用されます。多くの人がaes
を使用します。これは、多くのアプライアンス、アプリケーションがそれをサポートし、aes
のパフォーマンスが Intelプロセッサー で加速できるためです。また、この種の高速化機能は、aes
に他の暗号と比べて多くの利点をもたらします。 simple implementation of aes
とhardware accelerated aes
のパフォーマンス比較を読むことができます こちら 。また、aes
を使用すると、広く使用されているという別の利点があるため、インターネットで攻撃が利用可能であれば、そのことをすぐに認識し、おそらく更新をすばやく取得できます。そして、aes
の実装で利用可能ないくつかの受動的な攻撃があり、ディスク暗号化として ここから読み取ることができます
しかし、選択は異なる場合があります。また、暗号を選択する際は、選択する暗号がまだ危険にさらされていないことを確認する必要があります。 こちら から確認できます。 aes
のような(I/Oの観点から)効率的ではないが、優れた代替手段として利用できる他の同様の暗号があります。 aes
を使用する予定がない場合は、aes
の後継が2つあり、これは secure thanaes
is Anubis および serpent は、セキュリティのために速度を犠牲にすることができるためです。さいわい、luks
で使用できます。そして、aes
がaes
で優先されるので、FISMA
よりも国家機密を保護したい場合は十分です NIST-Special-Publication-800-53-Revision-4 。
暗号化アルゴリズムについては、私の考えではハッシュアルゴリズムについて真剣に考えるべきです。あなたがあなたの超安全なアルゴリズムより弱いハッシュを使うならば、あなたは多くを助けません。ハッシュがluks
暗号化プロセスで重要な役割を果たすからです。したがって、sha1
は使用しないでください。ただし、sha512
は十分に安全です。ただし、 whirepool または最近のパスワードハッシュコンテストの優勝者 argon2i 。
luksに関する他の回答 から、
次のコマンドを使用して、カーネルでサポートされている暗号を一覧表示できます。
[root@arif]# ls /lib/modules/$(uname -r)/kernel/crypto/
algif_rng.ko.xz blowfish_common.ko.xz cmac.ko.xz cts.ko.xz gf128mul.ko.xz michael_mic.ko.xz rsa_generic.ko.xz tgr192.ko.xz xts.ko.xz
ansi_cprng.ko.xz blowfish_generic.ko.xz crc32_generic.ko.xz deflate.ko.xz ghash-generic.ko.xz pcbc.ko.xz salsa20_generic.ko.xz twofish_common.ko.xz zlib.ko.xz
anubis.ko.xz camellia_generic.ko.xz crct10dif_common.ko.xz des_generic.ko.xz jitterentropy_rng.ko.xz pcrypt.ko.xz seed.ko.xz twofish_generic.ko.xz
arc4.ko.xz cast5_generic.ko.xz crct10dif_generic.ko.xz dh_generic.ko.xz khazad.ko.xz rmd128.ko.xz serpent_generic.ko.xz vmac.ko.xz
async_tx cast6_generic.ko.xz cryptd.ko.xz drbg.ko.xz lrw.ko.xz rmd160.ko.xz sha512_generic.ko.xz wp512.ko.xz
authencesn.ko.xz cast_common.ko.xz crypto_null.ko.xz fcrypt.ko.xz mcryptd.ko.xz rmd256.ko.xz tcrypt.ko.xz xcbc.ko.xz
authenc.ko.xz ccm.ko.xz crypto_user.ko.xz gcm.ko.xz md4.ko.xz rmd320.ko.xz tea.ko.xz xor.ko.xz
次のコマンドで、luks
を使用して、使用できる暗号とハッシュとそれらのI/O比較を一覧表示できます。
[root@arif arif]# cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 289342 iterations per second for 256-bit key
PBKDF2-sha256 353293 iterations per second for 256-bit key
PBKDF2-sha512 227555 iterations per second for 256-bit key
PBKDF2-ripemd160 233224 iterations per second for 256-bit key
PBKDF2-whirlpool 236165 iterations per second for 256-bit key
argon2i 4 iterations, 917485 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id 4 iterations, 951672 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 642.2 MiB/s 2495.8 MiB/s
serpent-cbc 128b 89.3 MiB/s 542.6 MiB/s
twofish-cbc 128b 100.4 MiB/s 343.1 MiB/s
aes-cbc 256b 477.2 MiB/s 1979.2 MiB/s
serpent-cbc 256b 89.3 MiB/s 538.9 MiB/s
twofish-cbc 256b 173.3 MiB/s 343.1 MiB/s
aes-xts 256b 1668.0 MiB/s 1664.1 MiB/s
serpent-xts 256b 535.7 MiB/s 523.4 MiB/s
twofish-xts 256b 332.6 MiB/s 339.8 MiB/s
aes-xts 512b 1384.5 MiB/s 1380.7 MiB/s
serpent-xts 512b 539.3 MiB/s 524.4 MiB/s
twofish-xts 512b 335.0 MiB/s 340.1 MiB/s
次のコマンドで特定の暗号を比較できます。
[root@arif]# ciphers="aes-xts serpent-xts anubis-xts"
[root@arif]# echo "# Algorithm | Key | Encryption | Decryption";for i in $ciphers ; do cryptsetup benchmark --cipher $i|tail -n 1; done
# Algorithm | Key | Encryption | Decryption
aes-xts 256b 1613.9 MiB/s 1642.8 MiB/s
serpent-xts 256b 538.9 MiB/s 521.9 MiB/s
anubis-xts 256b 182.0 MiB/s 182.1 MiB/s