dm-crypt cryptodev モジュールを使用した cryptsetup

dm-crypt cryptodev モジュールを使用した cryptsetup

ディスク領域の一部を暗号化するためにcryptsetupの使い方を紹介しましたが、書き込み速度が非常に遅いです。cryptodevモジュールを使用して、暗号化操作にハードウェアを直接利用するモジュールがあることを発見しました。cryptodevを
インストールして、実行しました。

openssl speed -evp aes-128-cbc -engine cryptodev  

書き込み速度をテストしました

time dd bs=5000k count=1 if=/dev/zero of=/home/... conv=fsync  

cryptodev モジュールを組み込む前と後、このコントロールでは改善が見られません。このエンジンを使用するために cryptsetup に定義する必要がある他のものはありますか? ありがとうございます

[編集] - - - - - - - - - - - - - - - - - - - - - - -

$ cryptsetup luksDump DISK --debug
# cryptsetup 1.7.0 processing "cryptsetup luksDump DISK --debug"
# Running command luksDump.
# Locking memory.
# Installing SIGINT/SIGTERM handler.
# Unblocking interruption on signal.
# Allocating crypt device DISK context.
# Trying to open and read device DISK with direct-io.
# Initialising device-mapper backend library.
# Trying to load LUKS1 crypt type from device DISK.
# Crypto backend (OpenSSL 1.0.2h  3 May 2016) initialized in cryptsetup library version 1.7.0.
# Detected kernel Linux 4.1.15-xuelk-2.0.1-dirty armv7l.
# Reading LUKS header of size 1024 from device DISK
# Key length 32, device size 204800 sectors, header size 2050 sectors.
LUKS header information for DISK

Version:        1
Cipher name:    aes
Cipher mode:    cbc-essiv:sha256
Hash spec:      sha256
Payload offset: 4096
MK bits:        256
MK digest:      00 a6 fb a5 64 1d 08 47 9d ea 76 d3 34 f2 19 cf 66 b7 e7 94 
MK salt:        8c 14 4e 3a 97 d6 d7 18 ca 46 f9 f0 47 d5 44 3f 
                46 0c c5 4e d7 35 1d 46 ca 2b fc af 13 14 d1 98 
MK iterations:  13500
UUID:           a808c328-0c0e-43a7-9057-b6b9a49afeb9

Key Slot 0: ENABLED
        Iterations:             108472
        Salt:                   76 be 3e a1 5f 37 9b bc 1b 84 69 9e 36 db 5f ba 
                                43 93 96 34 57 02 59 df 2c 19 f4 df 1a 09 53 7a 
        Key material offset:    8
        AF stripes:             4000

答え1

このコマンドはcryptsetup基本的にカーネル モジュールを構成するだけですdm-crypt。つまり、ディスクの暗号化/復号化はカーネル内で行われます。カーネルは openssl をまったく使用しません。

現在のハードディスク暗号化のパフォーマンスを確実にテストするには、次の方法があります。

cryptsetup benchmark

cryptsetupのデフォルトはaes-xts、256bです暗号化されたデバイスを作成するときは、cryptsetup luksCreatecryptsetup luksDump出力を参照)を使用します。

中規模ハードウェアからのいくつかの実験結果:

CPU                       cryptsetup benchmark
AMD Phenom 9750 2.4 GHz   aes-xts   256b   146.7 MiB/s   148.5 MiB/s
Intel Atom C3758 2.2 GHz  aes-xts   256b   874.0 MiB/s   875.4 MiB/s
Intel i5-4250U 1.3 GHz    aes-xts   256b  1703.3 MiB/s  1723.1 MiB/s
Intel i7-6600U 2.6 GHz    aes-xts   256b  2978.0 MiB/s  3117.5 MiB/s

Linux カーネルには、暗号化操作を高速化するハードウェア用のドライバーがいくつか含まれています。通常、これらはデフォルトでロードされ、カーネルの暗号化サブシステムによって使用されます。

例えば、新しいIntel CPUにはAES-NI命令セットAES を大幅に高速化します。CPU がこれをサポートしているかどうかは次のように確認できます。

tr ' ' '\n' < /proc/cpuinfo | grep aes

一部のシステムには暗号化コプロセッサが搭載されています(例:インテル クイックアシスト - QAT)。これらは処理速度を上げることもありますが、処理速度を低下させることもあります。したがって、ベンチマークを行うときは、このような特殊なハードウェアがカーネルによって構成されているかどうか、また必要なモジュール/ファームウェアがロードされているかどうかをブート ログで確認するのが賢明です。このようなハードウェアが存在する場合は、コプロセッサを有効にした場合と無効にした場合のパフォーマンスを確認するのが賢明です (たとえば、関連する*qat*モジュールをブラックリストに登録するなど)。

関連情報