Tại sao kết quả của điểm chuẩn Truecrypt và cryptsetup (LUKS) lại khác nhau như vậy?


10

Tôi muốn mã hóa một phần ổ cứng của mình. Nhưng trước đó tôi muốn điểm chuẩn các thuật toán khác nhau có sẵn tự hỏi liệu tôi nên chọn aes-xts-256hay aes-xts-512.

Lưu ý: Tôi không aestăng tốc phần cứng. Các điểm chuẩn được lặp lại nhiều lần mà không có nhiều thay đổi. Tôi muốn nói rõ rằng các điểm chuẩn này chỉ hợp lệ trên máy tính của tôi (Debian, bộ đôi lõi 2). Đây không phải là một so sánh LUKS-TrueCrypt hoàn chỉnh.

TL; DR: đến phần 4


1- Cryptsetup

Vì vậy, tôi đã tải xuống cryptsetup v1.6.0để sử dụng cryptsetup benchmarklệnh mới .

Chỉ huy

$cryptsetup benchmark

Các kết quả

 #  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

Suy nghĩ

  • Trong cbcchế độ, serpentnhanh chóng đáng ngạc nhiên trong việc giải mã!
  • Trong xtschế độ, serpentrõ ràng là nhanh nhất.
  • Kích thước khóa dường như hầu như không có tác dụng đáng chú ý .serpent twofish
  • aes không hoạt động tốt khi kích thước khóa được tăng lên.

Cập nhật ra khỏi VM


2- Mã xác thực

Tôi thực sự ngạc nhiên khi aesđược biết là nhanh nhất (ngay cả khi không tăng tốc phần cứng). Vì vậy, tôi đã tải xuống TrueCryptđể kiểm tra lại những kết quả này. TrueCryptsử dụng xtschế độ theo mặc định vì vậy tôi giả sử nó cũng sử dụng nó trong điểm chuẩn của nó.

phương pháp

  1. Công cụ> Điểm chuẩn
  2. Chọn bất kỳ kích thước bộ đệm (ở đây, 5MB)
  3. Nhấp vào "Điểm chuẩn"

Các kết quả

 #  Algorithm | Encryption |  Decryption
         AES     106 MB/s      107 MB/s
     Twofish      78 MB/s       76 MB/s
     Serpent      41 MB/s       42 MB/s

Suy nghĩ

Những kết quả này tương ứng nhiều hơn với những gì được mong đợi nhưng không phù hợp với cryptsetupkết quả của.


3- Suy nghĩ chung

  • cryptsetupcung cấp hiệu suất chung tốt hơn TrueCrypttrong trường hợp này. Điều này có thể được giải thích theo cách sau:
    • cryptsetupđược biên dịch trên hệ thống của tôi với các thói quen tối ưu hóa trình biên dịch trong khi TrueCryptđã được biên dịch theo cách chung;
    • AFAIK cryptsetupsử dụng các mô-đun mật mã kernelspace trong khi TrueCryptsử dụng các thói quen mã hóa không gian người dùng.
  • Tuy nhiên, tôi không thể giải thích tại sao serpent-xts-512dường như là cách để đi cùng cryptsetuptrong khi aes-xtsmật mã duy nhất đáng sử dụng.

4- Câu hỏi

cryptsetupTrueCryptđưa ra kết quả định tính hoàn toàn khác nhau (tốc độ mật mã tương đối) và định lượng (tốc độ thực tế của từng mật mã) trong các điểm chuẩn trong RAM.

  • Có phải đó là điều bạn đã nhận thấy?
  • Tôi có nên tin tưởng cryptsetupvà sử dụng serpent-xts-512mật mã cho tốc độ?

Câu trả lời:


5

Bạn không có khả năng tăng tốc phần cứng AES và đang chạy thử nghiệm trong một máy ảo. Không chắc là kết quả kiểm tra của bạn sẽ phản ánh kết quả trong thế giới thực, vì tốc độ mã hóa / giải mã phụ thuộc rất nhiều vào tải CPU & đĩa hiện tại. Đặt cược tốt nhất của bạn là tạo hai phân vùng Truecrypt độc lập và thực hiện các điểm chuẩn thủ công bằng cách sao chép một số tệp lớn vào / từ mỗi phân vùng.

LUKS và Truecrypt cũng có các triển khai hơi khác nhau và như bạn đã nói, "những điểm chuẩn này chỉ có giá trị trên máy tính của tôi". Bạn cần thực sự kiểm tra cả hai trên hệ thống của mình bằng chuyển tập tin thực tế để xác định hiệu suất thực sự.


Về sự khác biệt, Truecrypt sử dụng FUSE để triển khai hệ thống tệp không gian người dùng, trong khi LUKS thường được thực hiện trong kernel thực tế. Vì lý do này, có khả năng bạn sẽ có được thông lượng tốt hơn trong hệ thống Linux khi sử dụng LUKS / dm-crypt / cryptsetup trái ngược với Truecrypt, mặc dù tùy chọn bạn chọn tùy thuộc vào yêu cầu mã hóa của bạn (ví dụ: phân vùng Truecrypt có thể được chuyển giữa hoạt động hệ thống nếu cần).


Lạ: Tôi đã thử trực tiếp trong hệ thống của mình và về cơ bản mọi thứ đều chấp nhận serpentvà trở nên chậm hơn nhiều. Vì vậy, vấn đề với con rắn được giải quyết. Twofishvẫn còn nhanh hơn aestrong cryptsetup và chậm hơn trong TrueCrypt. Và tôi hoàn toàn không aestăng tốc phần cứng ... đây không phải là một điều VM ...

Tôi đã cập nhật kết quả.

@Gael cryptsetupsẽ nhanh hơn so với TrueCryptcác thuật toán mã hóa tương tự kể từ khi TrueCryptchạy trong FUSE(hệ thống tệp không gian người dùng), trong khi cryptsetupsử dụng LUKS, là mô-đun hạt nhân. Tôi đã đề cập đến máy ảo như thể bạn đang chạy bất kỳ chương trình nào khác trong hệ điều hành máy chủ của bạn (ngay cả các tác vụ nền), nó sẽ ảnh hưởng đến kết quả điểm chuẩn của bạn.
Đột phá

1

Nhân Linux có các mô-đun Serpent được tối ưu hóa SSE2 và AVX để tăng tốc khối lượng công việc song song (như giải mã CBC và XTS enc & dec).

Hiệu suất của Serpent trong giải mã CBC và XTS với (các) mô-đun được tải phải ở cùng mức với phần mềm AES và Twofish (nhanh hơn hoặc chậm hơn một chút tùy thuộc vào mô hình CPU chính xác của bạn).


0

Cũng lưu ý rằng mã SSE2 được chạy bởi kernel khách trong một số VM chậm hơn nhiều so với kernel host. Tôi đã trải nghiệm điều này với Oracle VirtualBox. Vì vậy, kết quả cho Serpent trên VM có thể không nhất thiết tương quan với hiệu suất mong đợi trên máy chủ thực tế.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.