Я хочу зашифровать часть моего жесткого диска. Но перед этим я хотел сравнить другой доступный алгоритм, задаваясь вопросом, должен ли я выбрать 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
режим по умолчанию, поэтому я предполагаю, что он также использует его в своих тестах.
метод
- Инструменты> Тест
- Выберите любой размер буфера (здесь, 5 МБ)
- Нажмите на «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
шифр для скорости?
serpent
что стало намного медленнее. Так что проблема со змеем решена.Twofish
все еще быстрее, чемaes
вcryptsetup
и медленнее вTrueCrypt
. И у меня нетaes
аппаратного ускорения вообще ... это не вещь ВМ ...cryptsetup
будет работать быстрее, чемTrueCrypt
те же алгоритмы шифрования, поскольку онTrueCrypt
работает вFUSE
(файловой системе пространства пользователя), тогда какcryptsetup
использует LUKS, который является модулем ядра. Я упомянул виртуальную машину так, как будто вы запускаете какие-либо другие программы под вашей операционной системой (даже фоновые задачи), это повлияет на результаты ваших тестов.Ядро Linux имеет модули Serpent, оптимизированные для SSE2 и AVX, для ускорения распараллеливаемых рабочих нагрузок (таких как расшифровка CBC и XTS enc & dec).
Производительность Serpent в расшифровке CBC и XTS с загруженными модулями должна быть примерно на том же уровне, что и программные AES и Twofish (немного быстрее или медленнее в зависимости от конкретной модели процессора).
источник
Также обратите внимание, что код SSE2, выполняемый гостевым ядром в некоторых виртуальных машинах, намного медленнее, чем в ядре хоста. Я испытал это с Oracle VirtualBox. Таким образом, результаты для Serpent на виртуальной машине могут не обязательно соответствовать ожидаемой производительности на реальном хосте.
источник