dm-crypt는 cryptsetup을 위해 cryptodev 모듈을 사용합니다.

dm-crypt는 cryptsetup을 위해 cryptodev 모듈을 사용합니다.

디스크 공간의 일부를 암호화하기 위해 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 luksCreate(출력 참조 cryptsetup 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가 다음과 같이 AES를 지원하는지 확인할 수 있습니다.

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

일부 시스템에는 암호화 보조 프로세서도 장착되어 있습니다(예:인텔 퀵어시스트-QAT). 속도를 높일 수도 있지만 속도를 늦출 수도 있습니다. 따라서 벤치마킹할 때 부팅 로그를 확인하여 이러한 특수 하드웨어가 커널에 의해 구성되었는지, 필요한 모듈/펌웨어가 로드되었는지 확인하는 것이 좋습니다. 그러한 하드웨어가 있는 경우 보조 프로세서의 성능을 활성화 또는 비활성화했는지 확인해야 합니다(예: *qat*관련 모듈을 블랙리스트에 추가).

관련 정보