「cryptsetupベンチマーク」の結果を解釈するには?

「cryptsetupベンチマーク」の結果を解釈するには?

要約:結果を実行しcryptsetup benchmarkて並べ替えることができますが、解釈の指示を探しています。たとえば、暗号化速度または復号化速度のどちらをより重要にする必要がありますか?キー導出速度を優先する必要がありますか?私のユースケースは結果の重み/解釈にどのような影響を与えるべきですか?

ドキュメントへのポインタを提供していただきありがとうございます。オンラインで検索しましたが、明確な内容を見ることができませんでした。特にこれではないようだ。

詳細:

私は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

上記の結果は

  1. 暗号化:serpent-xts/512最速、serpent-cbc/*最も遅いもの
  2. 解毒:serpent-cbc/256最も速く、serpent-xts/5123番目に速い
  3. 主なエクスポート:sha1はるかに速いsha256はるかに速いsha512

わかりません。信じています。

  1. sha1は間もなく廃棄される予定であるため、将来の互換性のためにKDFが比較してかなりの速度の利点を緩和(0 sha1)する必要がありますsha256
  2. 「認証されたユーザーが[ワークステーションからのキー派生機能を]正常に使用するには、セッションごとに一度だけ計算できます。」[3] したがって、KDFと比較してKDFの重要なsha256利点を軽減する必要がありますsha512

具体的な質問は次のとおりです。

  1. sha256キー派生のかなりの速度の利点(〜= 0.327)をより重要に考えるべきです|356173 - 256000| / ((356173 + 256000)/2)sha512

より一般的な質問は次のとおりです。

  1. ユースケースは、キー派生、復号化、暗号化における速度の重要性の重みにどのような影響を与えますか?たとえば、ヘッドレスサーバーは、ヘッドレスワークステーションよりも復号化する(またはそうでない場合)、時間がかかりますか?読み取りでは復号化が、書き込みでは暗号化が行われると仮定しますが、1つのユースケースが読み取りと書き込みの相対的な発生/重みにどのような影響を与えるかわかりません。

FWIW、私が設定している箱は頭を傷つける生産箱の2番目の文字列になるので、基本的に時間がかかります。

  • エディタとブラウザの実行
  • SSH接続設定
  • ビデオと音楽の再生
  • Linuxを使ってみたい人のためのローン
  • 最初のプロダクションノートブックを水にかけたら、すぐに使用する準備をしてください。

(これが重要な場合はDebianを実行します。)もちろん、私は一般的に遅いパフォーマンスよりも速いパフォーマンスを好みます(信頼性が高いほど信頼性が低いほど)、セキュリティのコストを喜んで支払うことになります。セックスにはコストがかかります。

より一般的な質問は次のとおりです。

  1. 鍵派生、復号化、暗号化速度の重要性の一般的なランキングを設定できますか? KDF速度はそれほど重要ではないと思います[3]。しかし、ほとんどのユースケースでは、復号化の速度と暗号化の速度が同じように重要です。 (しかしICBW。)

  2. デフォルトでは、引数なしで実行すると、「cryptsetup benchmark一部の一般的な構成のみを測定」[2]し、「他のパスワードやモードをベンチマークするには、オプションを指定するかKDFテストを実行する必要があります。」[2]。--cipher--key-size--hashArchWikiのこのセクションこれを行う方法の詳細が提供されていますが、リストの1つ以上を知りません。

4.1。デフォルト以外の暗号化の有効なオプションパラメータ(パスワード、ハッシュ、キーサイズ、モード)を指定しますcryptsetup benchmark。誰でもこれについての権威ある文書を教えてもらえますか?

4.2。現在の技術とカーネルのサポートを検討するときは、デフォルト以外のパスワードを指定してベンチマークする必要があります。提案していただきありがとうございます(適切なオプション引数も提供する場合:-)

  1. LUKSのパフォーマンスを向上させるために使用できる「より良い」ツールはありますか?あらかじめチューニング率cryptsetup benchmark?それでは何ですか?チューニングするには?

[1]:例えば、https://wiki.archlinux.org/index.php/Dm-crypt/Device_Encryption#Encryption_options_for_LUKS_modehttps://wiki.archlinux.org/index.php/Disk_encryption#Cryptographic_metadata

[2]:走るinfo cryptsetupman cryptsetup

[サム]:バラよりhttps://wiki.archlinux.org/index.php/Disk_encryption#Cryptographic_metadata

答え1

KDFの速度も重要ですが、思考とは異なり、遅くなければなりません。

LUKSでは、暗号化されたドライブには、デバイスの暗号化に使用される暗号化マスターキーを含むヘッダーが含まれます。デバイスを起動またはオンにすると、このマスターキーはキースロットのいずれかのキーを使用して復号化されます(cryptsetup luksDump /dev/sdxLUKSヘッダに含まれている情報を確認してください)。

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を使用するです。 。

関連情報