web-dev-qa-db-ja.com

Ubuntu 12.10でLuks暗号化を使用した低速SSD + dm-crypt

Sata 3インターフェースのラップトップ(Samsung 840 Pro)に128 GB SSDがインストールされています。このラップトップには、i5 3210m Ivy Bridge Intelプロセッサーと8 GBのRAMもあります。

フルディスク暗号化を取得するためにグラフィカルインストーラーを使用して、Ubuntu 12.10をインストールしました。私は自分が得たものよりも良い結果をもたらさなければならないスペックを期待していたので、ちょっと失望しています。

これを見て SSDベンチマーク ページでは、私のプロセッサができると主張しています:

  • 〜500 MB/s:AES-NIを使用
  • 〜200 MB/s:AES-NIなし

取得した数値を見ると、AES-NIが有効になっていない可能性があります。でもまず ...

暗号化されていないデータの読み取りは高速です。

# hdparm -Tt /dev/sda1

/dev/sda1:
 Timing cached reads:   14814 MB in  2.00 seconds = 7411.70 MB/sec
 Timing buffered disk reads: 242 MB in  0.48 seconds = 502.75 MB/sec

それは実際、SSDの「最大530 MB/s」の仕様に近く、ddテストを実行しても上記と同様の結果が得られます。

暗号化されたデータの書き込みはdm-cryptでも高速です(それ以外の場合、eCryptfsの場合、書き込み時のパフォーマンスは100 MB/s未満です)、SSD仕様に近い数字です(書き込みはバッファリングされているかと思われます):

# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.93896 s, 365 MB/s

ただし、暗号化されたデータの読み取りは別の話です。

# echo 3 > /proc/sys/vm/drop_caches
# dd if=tempfile of=/dev/null bs=1M count=1024

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.85956 s, 183 MB/s

このメッセージを書いている間、私は実際に183 MB/sを得ることができました。これは、この数がさまざまだからです。通常は約150 MB/sですが、フレッシュブートで300 MB/sに近づきましたが、アプリを起動しなくてもパフォーマンスは200 MB/sに徐々に低下します。このテストを実行している間、I/Oを実行している他のプロセスはありません(iotopで見られるように)。

また、悪い結果をもたらすhdparmのテストもここにあります:

 # hdparm -Tt /dev/mapper/sda2_crypt 

 /dev/mapper/sda2_crypt:
  Timing cached reads:   14816 MB in  2.00 seconds = 7412.86 MB/sec
  Timing buffered disk reads: 422 MB in  3.01 seconds = 140.11 MB/sec

また、htopを見て実験を試みました。..i5プロセッサはハイパースレッディングを行うため、見たものをどのように解釈するかわかりませんが、他の2つのスレッドは未使用のままにします。実際、(バッファリングを防ぐために)2つの異なるファイルからddを使用して読み取る2つのプロセスを開始すると、iotopは合計で約400 MB /秒を報告します。したがって、これは間違いなく、CPUに縛られているように感じます。

私の失望は、私のi5プロセッサーが AES-NI に対応しているという事実から来ています。上記と同じテストを使用して、暗号化されていないデータが500 MB /秒以上で読み取られています。そのため、暗号化されたパーティションが少なくとも3倍遅くなるという話をしています。

私のdm-cryptインストールがAES-NIを使用しているかどうかはわかりません。 lsmodの出力は次のとおりです。

 # lsmod | grep aes
 aesni_intel            51038  35 
 cryptd                 20404  10 ghash_clmulni_intel,aesni_intel
 aes_x86_64             17256  1 aesni_intel

cryptsetupの出力は次のとおりです。

 # cryptsetup status sda2_crypt
 /dev/mapper/sda2_crypt is active and is in use.
   type:    LUKS1
   cipher:  aes-xts-plain64
   keysize: 512 bits
   device:  /dev/sda2
   offset:  4096 sectors
   size:    249565184 sectors
   mode:    read/write
   flags:   discards

それで、これは予想されますか? AES-NIはこれ以上のものを改善すべきではないでしょうか?

また、違いがあるかどうかを確認するためにAES-NIを無効にする方法は?そして、どういうわけかそれを有効にする必要がありますが、検索でヒントを見つけていません。

おかげで、

9

Samsung 840 Proは、ハードウェアAES暗号化をサポートしています。ラップトップBIOSがATAセキュリティ機能モードセットのマスターパスワードとユーザーパスワードをサポートしている場合は、幸運です。

BIOSでATAマスターパスワードを設定し、ドライブの安全な消去を行うことにより、ドライブファームウェアは新しいランダムAESキーを生成する必要があります。安全に消去した後、適切なATAマスターおよびユーザーパスワードを設定したことを確認してください。私が確立することができた限り(ここで私の投稿を参照してください http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk- encryption / )Samsungは、ATAパスワードでAESキーも暗号化します。

これにより、フルスピードのAES暗号化が提供され、ソフトウェアは不要です。

5
Charl Botha

Ubuntuに誤った設定があり、その結果、aesni_intelモジュールが、ブートロックされていないデバイスの暗号を処理するのに十分早くロードされません。私は私のマシンでこれを修正することができました:

Sudo vim /etc/initramfs-tools/modules

最後の行の下に、追加します

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

次に実行する

Sudo update-initramfs -u -k all

再起動してお楽しみください。この後、同様のSSDで、CPU使用量がほとんどない500MB/sの読み取りと書き込みが発生していました。

このバグの詳細は https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7 にあります。

3
Devin Lane