Truecryptとcryptsetup(LUKS)ベンチマークの結果がそれほど異なるのはなぜですか?


10

HDDの一部を暗号化したい。しかしその前に、私はaes-xts-256またはを選択する必要があるかどうか疑問に思って、利用可能な別のアルゴリズムをベンチマークしたかったaes-xts-512

注:aesハードウェアアクセラレーションはありません。ベンチマークはほとんど変更されずに複数回繰り返されました。これらのベンチマークは私のコンピューター(Debian、コア2デュオ)でのみ有効であることを明確に述べたいと思います。これは完全なLUKS-TrueCryptの比較を意図したものではありません。

TL; DR:パート4に進む


1-Cryptsetup

そこでcryptsetup v1.6.0、新しいcryptsetup benchmarkコマンドを使用するためにダウンロードしました。

コマンド

$cryptsetup benchmark

結果

 #  Algorithm | Key | Encryption |  Decryption
     aes-cbc   128b   128,2 MiB/s   157,2 MiB/s
 serpent-cbc   128b    49,6 MiB/s    57,7 MiB/s
 twofish-cbc   128b   138,0 MiB/s   183,8 MiB/s
     aes-cbc   256b    97,5 MiB/s   121,9 MiB/s
 serpent-cbc   256b    51,8 MiB/s    57,7 MiB/s
 twofish-cbc   256b   139,0 MiB/s   183,8 MiB/s
     aes-xts   256b   156,4 MiB/s   157,8 MiB/s
 serpent-xts   256b    55,7 MiB/s    58,7 MiB/s
 twofish-xts   256b   161,5 MiB/s   165,9 MiB/s
     aes-xts   512b   120,5 MiB/s   120,9 MiB/s
 serpent-xts   512b    55,7 MiB/s    58,5 MiB/s
 twofish-xts   512b   161,5 MiB/s   165,3 MiB/s

考え

  • ではcbcモード、serpent復号化で驚くほど速いです!
  • ではxtsモード、serpent明らかに最速です。
  • キーサイズは、にほとんど影響を与えないようです。serpent twofish
  • aes キーのサイズを大きくすると、正常に動作しません。

VMからの更新


2- TrueCrypt

aes(ハードウェアアクセラレーションがなくても)最速であることが知られているので、本当に驚きました。そこで、ダウンロードTrueCryptしてこれらの結果を再確認しました。TrueCryptxtsデフォルトでモードを使用するため、ベンチマークでも使用すると想定しています。

方法

  1. ツール>ベンチマーク
  2. バッファサイズを選択します(ここでは5MB)。
  3. 「ベンチマーク」をクリックします

結果

 #  Algorithm | Encryption |  Decryption
         AES     106 MB/s      107 MB/s
     Twofish      78 MB/s       76 MB/s
     Serpent      41 MB/s       42 MB/s

考え

これらの結果は、予想される結果にはるかに対応していますが、の結果とはあまり一致していませんcryptsetup


3-一般的な考え

  • cryptsetupTrueCryptこの場合よりも一般的なパフォーマンスが向上しました。これは次のように説明できます。
    • cryptsetup私のシステムでは、コンパイラー最適化ルーチンを使用しTrueCryptてコンパイルされていますが、すでに一般的な方法でコンパイルされています。
    • AFAIK cryptsetupはカーネルTrueCrypt空間暗号モジュールを使用し、ユーザー空間暗号ルーチンを使用します。
  • しかし、私は理由を説明することはできませんserpent-xts-512と移動するための方法であると考えられるcryptsetup一方でaes-xtsのみ暗号価値を使用します。

4-質問

cryptsetupそして、TrueCrypt完全に異なる質的(相対暗号速度)および定量的(各暗号の実際の速度)で-RAMベンチマークで結果を与えます。

  • それはあなたがすでに気づいたものですか?
  • 速度を上げるcryptsetupためにserpent-xts-512暗号を信頼して使用する必要がありますか?

回答:


5

AESハードウェアアクセラレーションがなく、仮想マシンでテストを実行していました。暗号化/復号化の速度は現在のCPUとディスクの負荷に大きく依存するため、テスト結果が実際の結果を反映しているとは考えられません。最善の策は、2つの独立したTruecryptパーティションを作成し、各パーティションとの間でいくつかの大きなファイルをコピーすることにより、手動のベンチマークを実行することです。

LUKSとTruecryptの実装もわずかに異なります。また、あなたが言ったように、「これらのベンチマークは私のコンピューターでのみ有効です」。実際のファイル転送を使用して、システムで実際に両方をテストして、真のパフォーマンスを判別する必要があります。


違いについては、TruecryptはFUSEを使用してユーザースペースファイルシステムを実装しますが、LUKSは通常、実際のカーネルで実行されます。このため、LUKS / dm-crypt / cryptsetupを使用したLinuxシステムでは、Truecryptと比較してスループットが向上する可能性があります。ただし、選択するオプションは暗号化の要件によって異なります(たとえば、Truecryptパーティションはオペレーティングシステム間で転送できます)必要に応じてシステム)。


奇妙なこと:私は自分のシステムで直接試してみましたが、基本的にすべてがうまくいきましserpentたが、遅くなりました。蛇の問題は解決しました。はまだでTwofishより高速で、aesではcryptsetup 低速ですTrueCrypt。そして、私はaesハードウェアアクセラレーションをまったく持っていません...これはVMのことではありません...

結果を更新しました。

@Gael cryptsetupは(ユーザー空間ファイルシステム)で実行されるTrueCryptため、同じ暗号化アルゴリズムを指定するよりも高速ですが、カーネルモジュールであるLUKSを使用します。ホストOSの下で他のプログラムを実行しているかのように(バックグラウンドタスクを含む)、仮想マシンについて言及しましたが、ベンチマークの結果に影響します。TrueCryptFUSEcryptsetup
2013年

1

Linuxカーネルには、並列化可能なワークロード(CBC復号化やXTS enc&decなど)を高速化するためのSSE2およびAVX最適化Serpentモジュールがあります。

CBC復号化におけるSerpentのパフォーマンスと、これらのモジュールがロードされたXTSは、ソフトウェアAESおよびTwofishとほぼ同じレベル(正確なCPUモデルに応じてわずかに高速または低速)になるはずです。


0

また、一部のVMでゲストカーネルによって実行されるSSE2コードは、ホストカーネルよりもはるかに遅いことに注意してください。私はこれをOracle VirtualBoxで経験しました。そのため、VM上のSerpentの結果は、実際のホストで期待されるパフォーマンスと必ずしも相関しない場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.