
디스크 공간의 일부를 암호화하기 위해 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가 다음과 같이 이를 지원하는지 확인할 수 있습니다.
tr ' ' '\n' < /proc/cpuinfo | grep aes
일부 시스템에는 암호화 보조 프로세서도 함께 제공됩니다(예:인텔 퀵어시스트 - QAT). 속도를 높일 수도 있지만 속도를 늦출 수도 있습니다. 따라서 벤치마킹할 때 이러한 특수 하드웨어가 커널에 의해 구성되어 있고 필요한 모듈/펌웨어가 로드되어 있는지 부팅 로그를 확인하는 것이 좋습니다. 그러한 하드웨어가 있는 경우 보조 프로세서를 활성화하거나 비활성화하여 성능을 확인하는 것이 합리적입니다(예: 관련 *qat*
모듈 블랙리스트 작성을 통해).