LUKS (Truecrypt 및 cryptsetup) 벤치마킹 결과가 다른 이유는 무엇입니까?

HDD의 일부를 암호화하고 싶습니다. 내가 선택해야한다면 내가 벤치 마크 싶었 그 전에 사용할 수있는 다양한 알고리즘이 궁금 aes-xts-256하거나 aes-xts-512.

참고 : aes하드웨어 가속 이 없습니다 . 벤치 마크는 큰 변화없이 여러 번 반복되었습니다. 이 벤치 마크가 내 컴퓨터 (Debian, core 2 duo)에서만 유효하다는 점을 분명히 밝히고 싶습니다. 이것은 완전한 LUKS-TrueCrypt 비교가 아닙니다.

TL; DR : 파트 4로 이동


1- 암호 설정

그래서 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결과를 다시 확인하기 위해 다운로드 했습니다. TrueCrypt용도 xts나는 또한 가정의 벤치 마크에서 사용할 수 있도록 기본적으로 모드를.

방법

  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- 질문

cryptsetupTrueCrypt인 RAM 기준 완전히 다른 질적 (상대 암호화 속도) 및 정량적 (각 암호의 실제 속도) 결과를 제공한다.

  • 이미 눈치 채 셨나요?
  • 속도를 cryptsetup위해 serpent-xts-512암호를 신뢰 하고 사용해야 합니까?


답변

AES 하드웨어 가속이없고 가상 머신에서 테스트를 실행했습니다. 암호화 / 암호 해독 속도가 현재 CPU 및 디스크로드에 크게 의존하기 때문에 테스트 결과에 실제 결과가 반영되지는 않습니다. 가장 좋은 방법은 두 개의 독립적 인 Truecrypt 파티션을 생성하고 각 파티션에 큰 파일을 복사하여 수동 벤치 마크를 수행하는 것입니다.

LUKS와 Truecrypt도 구현 방식이 약간 씩 다르며 “이 벤치 마크는 내 컴퓨터에서만 유효합니다”. 실제 성능을 확인하려면 실제 파일 전송으로 시스템에서 실제로 테스트해야합니다.


차이점은 Truecrypt는 FUSE 를 사용 하여 사용자 공간 파일 시스템을 구현하는 반면 LUKS 는 일반적으로 실제 커널에서 수행됩니다. 따라서 어떤 옵션을 선택하든 암호화 요구 사항에 따라 다릅니다 (예 : Truecrypt 파티션은 운영간에 전송 될 수 있음). 필요한 경우 시스템).


답변

Linux 커널에는 병렬화 가능한 워크로드 (예 : CBC 암호 해독 및 XTS enc & dec)를 가속화하기 위해 SSE2 및 AVX 최적화 Serpent 모듈이 있습니다.

CBC 암호 해독 및 해당 모듈이로드 된 XTS에서 Serpent의 성능은 소프트웨어 AES 및 Twofish와 거의 같은 수준이어야합니다 (정확한 CPU 모델에 따라 약간 빠르거나 느림).


답변

또한 일부 VM에서 게스트 커널이 실행하는 SSE2 코드는 호스트 커널보다 훨씬 느립니다. Oracle VirtualBox에서 이것을 경험했습니다. 따라서 Serpent on VM의 결과가 실제 호스트의 예상 성능과 반드시 ​​관련이있는 것은 아닙니다.