要約:結果を実行しcryptsetup benchmark
て並べ替えることができますが、解釈の指示を探しています。たとえば、暗号化速度または復号化速度のどちらをより重要にする必要がありますか?キー導出速度を優先する必要がありますか?私のユースケースは結果の重み/解釈にどのような影響を与えるべきですか?
ドキュメントへのポインタを提供していただきありがとうございます。オンラインで検索しましたが、明確な内容を見ることができませんでした。特にこれではないようだ。
- ㅏ
cryptsetup
よくある質問 - ArchWiki[1]の関連セクションで議論されています
詳細:
私は2007年頃にノートパソコンにOSを再インストールする準備をしています(したがって、おそらくAESのプロセッササポートはありません)。今回はLUKS + LVM2を使用します。 (これは私が残したボックスですPlain Old Partitions
。)複数のシーケンシャルループ(LUKS + LVM2 + OSのインストール、実際のディスクベンチマークの実行、結果の測定)を実行する時間はありません。もちろん、これはより経験的なガイドラインを提供します。代わりにcryptsetup benchmark
、「実際のストレージ暗号化速度を直接予測することはできません」ということを知っているにもかかわらず、合理的な(または最適な:-)LUKSパスワード仕様文字列を「事前選択」しようとしました[2]。
このボックスが実行されると、sudo cryptsetup benchmark
出力は次のようになります(ラベルを調整して質問を分け、速度を下げてソートした後)。
# key derivation:
PBKDF2-sha1 557753 iterations per second
PBKDF2-sha256 356173 iterations per second
PBKDF2-ripemd160 336082 iterations per second
PBKDF2-sha512 256000 iterations per second
PBKDF2-whirlpool 112219 iterations per second
# encryption:
# Algorithm | Key | Encryption
serpent-xts 512b 144.7 MiB/s
serpent-xts 256b 144.0 MiB/s
twofish-xts 256b 132.1 MiB/s
twofish-xts 512b 132.0 MiB/s
aes-xts 256b 128.4 MiB/s
aes-cbc 128b 109.7 MiB/s
twofish-cbc 256b 108.2 MiB/s
twofish-cbc 128b 107.9 MiB/s
aes-xts 512b 96.7 MiB/s
aes-cbc 256b 86.5 MiB/s
serpent-cbc 256b 42.1 MiB/s
serpent-cbc 128b 42.1 MiB/s
# decryption:
# Algorithm | Key | Decryption
serpent-cbc 256b 160.0 MiB/s
serpent-cbc 128b 159.5 MiB/s
serpent-xts 512b 149.0 MiB/s
serpent-xts 256b 148.4 MiB/s
twofish-cbc 256b 142.1 MiB/s
twofish-cbc 128b 141.6 MiB/s
twofish-xts 256b 133.5 MiB/s
twofish-xts 512b 133.4 MiB/s
aes-cbc 128b 127.5 MiB/s
aes-xts 256b 126.0 MiB/s
aes-cbc 256b 96.0 MiB/s
aes-xts 512b 95.2 MiB/s
上記の結果は
- 暗号化:
serpent-xts/512
最速、serpent-cbc/*
最も遅いもの - 解毒:
serpent-cbc/256
最も速く、serpent-xts/512
3番目に速い - 主なエクスポート:
sha1
はるかに速いsha256
はるかに速いsha512
わかりません。信じています。
sha1
は間もなく廃棄される予定であるため、将来の互換性のためにKDFが比較してかなりの速度の利点を緩和(0sha1
)する必要がありますsha256
。- 「認証されたユーザーが[ワークステーションからのキー派生機能を]正常に使用するには、セッションごとに一度だけ計算できます。」[3] したがって、KDFと比較してKDFの重要な
sha256
利点を軽減する必要がありますsha512
。
具体的な質問は次のとおりです。
sha256
キー派生のかなりの速度の利点(〜= 0.327)をより重要に考えるべきです|356173 - 256000| / ((356173 + 256000)/2)
かsha512
?
より一般的な質問は次のとおりです。
- ユースケースは、キー派生、復号化、暗号化における速度の重要性の重みにどのような影響を与えますか?たとえば、ヘッドレスサーバーは、ヘッドレスワークステーションよりも復号化する(またはそうでない場合)、時間がかかりますか?読み取りでは復号化が、書き込みでは暗号化が行われると仮定しますが、1つのユースケースが読み取りと書き込みの相対的な発生/重みにどのような影響を与えるかわかりません。
FWIW、私が設定している箱は頭を傷つける生産箱の2番目の文字列になるので、基本的に時間がかかります。
- エディタとブラウザの実行
- SSH接続設定
- ビデオと音楽の再生
- Linuxを使ってみたい人のためのローン
- 最初のプロダクションノートブックを水にかけたら、すぐに使用する準備をしてください。
(これが重要な場合はDebianを実行します。)もちろん、私は一般的に遅いパフォーマンスよりも速いパフォーマンスを好みます(信頼性が高いほど信頼性が低いほど)、セキュリティのコストを喜んで支払うことになります。セックスにはコストがかかります。
より一般的な質問は次のとおりです。
鍵派生、復号化、暗号化速度の重要性の一般的なランキングを設定できますか? KDF速度はそれほど重要ではないと思います[3]。しかし、ほとんどのユースケースでは、復号化の速度と暗号化の速度が同じように重要です。 (しかしICBW。)
デフォルトでは、引数なしで実行すると、「
cryptsetup benchmark
一部の一般的な構成のみを測定」[2]し、「他のパスワードやモードをベンチマークするには、オプションを指定するかKDFテストを実行する必要があります。」[2]。--cipher
--key-size
--hash
ArchWikiのこのセクションこれを行う方法の詳細が提供されていますが、リストの1つ以上を知りません。
4.1。デフォルト以外の暗号化の有効なオプションパラメータ(パスワード、ハッシュ、キーサイズ、モード)を指定しますcryptsetup benchmark
。誰でもこれについての権威ある文書を教えてもらえますか?
4.2。現在の技術とカーネルのサポートを検討するときは、デフォルト以外のパスワードを指定してベンチマークする必要があります。提案していただきありがとうございます(適切なオプション引数も提供する場合:-)
- LUKSのパフォーマンスを向上させるために使用できる「より良い」ツールはありますか?あらかじめチューニング率
cryptsetup benchmark
?それでは何ですか?チューニングするには?
[1]:例えば、https://wiki.archlinux.org/index.php/Dm-crypt/Device_Encryption#Encryption_options_for_LUKS_mode、https://wiki.archlinux.org/index.php/Disk_encryption#Cryptographic_metadata
[2]:走るinfo cryptsetup
man cryptsetup
[サム]:バラよりhttps://wiki.archlinux.org/index.php/Disk_encryption#Cryptographic_metadata
答え1
KDFの速度も重要ですが、思考とは異なり、遅くなければなりません。
LUKSでは、暗号化されたドライブには、デバイスの暗号化に使用される暗号化マスターキーを含むヘッダーが含まれます。デバイスを起動またはオンにすると、このマスターキーはキースロットのいずれかのキーを使用して復号化されます(cryptsetup luksDump /dev/sdx
LUKSヘッダに含まれている情報を確認してください)。
LUKSデバイスを初めてフォーマットすると、パスワード(またはキーファイル)の入力を求められます。その後、このパスワードはキースロット0に追加されるキーを生成して暗号化するために使用されます。パスワードもハッシュして保存されるため、デバイスの電源を入れたときにLUKSが正しいパスワードを入力したことを確認できます。高速ハッシュアルゴリズムを使用すると、攻撃者はより短い時間でより多くの組み合わせをテストできるため、復号化が簡単になるため、これを理解することが重要です。
したがって、最も遅く最も安全なハッシュアルゴリズム(sha512またはWhirlpool)を選択し、より高い--iter-timeを使用する必要があります。 --iter-timeオプションを使用すると、1回のハッシュ反復に必要な時間を設定できます。高い繰り返し時間の唯一の欠点は、暗号化されたデバイスを実際に開くのに時間がかかりすぎるということです。ルートデバイスで--iter-time 10000(10秒)を使用していると仮定すると、システムは実際の暗号化キーを取得するのに10秒かかります。 。これはデバイスの電源を入れると一度だけ発生するため、追加のパフォーマンスには影響しません。
実際の暗号化されたパスワードは、基本物理デバイスの読み取り/書き込み速度とマシンのワークロードによって異なります。暗号化/復号化はCPUで実行されるため、最も遅いCPUを使用すると同時に実行される他のプログラムに影響を与える可能性が高くなります。現時点では、aes-xts-plain64は最も安全なLUKSパスワードと見なされるため、非常に機密情報がある場合は、キーサイズが512のaes-xts-plain64を使用する必要があります(xtsを使用するとキーが分割されるため)。 2 したがって、実際には256ビットキーでaesを取得します。)
あなたの設定を提案した場合、繰り返し時間が2秒から10秒の間のハッシュアルゴリズムでsha512になり、AES-128はまだ安全であると見なされるため、256のキーサイズを持つaes-xts-plain64を使用するです。 。