9

Я хочу зашифровать часть моего жесткого диска. Но перед этим я хотел сравнить другой доступный алгоритм, задаваясь вопросом, стоит ли мне выбирать aes-xts-256 или aes-xts-512 .

Примечание: Я не aes аппаратного ускорения. Тесты были повторены несколько раз без особых изменений. Я хотел бы четко заявить, что эти тесты действительны только на моем компьютере (Debian, core 2 duo). Это не предназначено для полного сравнения LUKS-TrueCrypt.

TL; DR: перейти к части 4


1- Cryptsetup

Поэтому я скачал 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 плохо себя ведет, когда размер ключа увеличивается.

Обновления вне ВМ


2- TrueCrypt

Я был очень удивлен, поскольку aes как известно, самый быстрый (даже без аппаратного ускорения). Поэтому я скачал TrueCrypt чтобы перепроверить эти результаты. TrueCrypt по умолчанию использует режим xts , поэтому я предполагаю, что он также использует его в своих тестах.

метод

  1. Инструменты> Тест
  2. Выберите любой размер буфера (здесь, 5 МБ)
  3. Нажмите на "Benchmark"

Результаты

 #  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- Общие мысли

  • cryptsetup обеспечил лучшую общую производительность, чем TrueCrypt в этом случае. Это можно объяснить следующим образом:
    • cryptsetup был скомпилирован в моей системе с подпрограммами оптимизации компилятора, в то время как TrueCrypt уже был скомпилирован универсальным способом;
    • cryptsetup использует криптомодули пространства ядра, в то время как TrueCrypt использует криптовалюты пространства пользователя.
  • Тем не менее, я не могу объяснить, почему serpent-xts-512 кажется cryptsetup то время как aes-xts - единственный шифр, который стоит использовать.

4- Вопрос

cryptsetup и TrueCrypt дают совершенно разные качественные (относительная скорость шифрования) и количественные (фактическая скорость каждого шифра) результаты в тестах в оперативной памяти.

  • Это то, что вы уже заметили?
  • Стоит ли доверять cryptsetup и использовать шифр serpent-xts-512 для скорости?

3 ответа3

4

У вас нет аппаратного ускорения AES, и вы выполняли тесты на виртуальной машине. Маловероятно, что результаты вашего теста будут отражать реальные результаты, так как скорости шифрования / дешифрования сильно зависят от текущей загрузки процессора и диска. Лучше всего создать два независимых раздела Truecrypt и выполнить тесты вручную, скопировав несколько больших файлов в / из каждого раздела.

LUKS и Truecrypt также имеют несколько разные реализации, и, как вы сказали, "эти тесты действительны только на моем компьютере". Вам нужно на самом деле протестировать оба в вашей системе с фактической передачей файлов, чтобы определить истинную производительность.


Что касается различий, Truecrypt использует FUSE для реализации файловой системы пользовательского пространства, тогда как LUKS обычно выполняется в реальном ядре. По этой причине вполне вероятно, что вы получите лучшую пропускную способность в системе Linux, используя LUKS/dm-crypt/cryptsetup, в отличие от Truecrypt, хотя выбранный вами вариант зависит от требований вашего шифрования (например, разделы Truecrypt могут передаваться между операционными системами). системы при необходимости).

1

Ядро Linux имеет модули Serpent, оптимизированные для SSE2 и AVX, для ускорения распараллеливаемых рабочих нагрузок (таких как расшифровка CBC и XTS enc & dec).

Производительность Serpent в дешифровании CBC и XTS с загруженными модулями должна быть примерно на том же уровне, что и программные AES и Twofish (немного быстрее или медленнее в зависимости от конкретной модели процессора).

0

Также обратите внимание, что код SSE2, выполняемый гостевым ядром в некоторых виртуальных машинах, работает намного медленнее, чем в ядре хоста. Я испытал это с Oracle VirtualBox. Поэтому результаты для Serpent на виртуальной машине могут не обязательно соответствовать ожидаемой производительности на реальном хосте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .