Почему результаты бенчмаркинга Truecrypt и cryptsetup (LUKS) такие разные?

10

Я хочу зашифровать часть моего жесткого диска. Но перед этим я хотел сравнить другой доступный алгоритм, задаваясь вопросом, должен ли я выбрать 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уже был скомпилирован в общем виде;
    • AFAIK cryptsetupиспользует криптографические модули ядра системы во время TrueCryptиспользования криптографических процедур пользовательского приложения.
  • Тем не менее, я не могу объяснить , почему , как serpent-xts-512представляется, путь с cryptsetupпока aes-xtsединственным шифром стоит использовать.

4- Вопрос

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

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

источник

Ответы:

5

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

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


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

Прорыв, достижение, открытие
источник
Странно: я пытался прямо в моей системе, и в основном все стоит за исключением, serpentчто стало намного медленнее. Так что проблема со змеем решена. Twofishвсе еще быстрее, чем aesв cryptsetup и медленнее в TrueCrypt. И у меня нет aesаппаратного ускорения вообще ... это не вещь ВМ ...
Я обновил результаты.
@Gael cryptsetupбудет работать быстрее, чем TrueCryptте же алгоритмы шифрования, поскольку он TrueCryptработает в FUSE(файловой системе пространства пользователя), тогда как cryptsetupиспользует LUKS, который является модулем ядра. Я упомянул виртуальную машину так, как будто вы запускаете какие-либо другие программы под вашей операционной системой (даже фоновые задачи), это повлияет на результаты ваших тестов.
Прорыв
1

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

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

user215314
источник
0

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

user215314
источник