Чому результати тестування Truecrypt та cryptsetup (LUKS) настільки різні?


10

Я хочу зашифрувати частину свого жорсткого диска. Але до того, що я хотів бенчмарка різний алгоритм доступний цікаво , якщо я повинен вибрати 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. Виберіть будь-який розмір буфера (тут, 5 МБ)
  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- Загальні думки

  • 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апаратного прискорення ... це не річ у VM ...

Я оновив результати.

@Gael cryptsetupбуде швидше, ніж TrueCryptзадані ті ж алгоритми шифрування, оскільки він TrueCryptпрацює в FUSE(файлова система простору користувача), тоді як cryptsetupвикористовує LUKS, який є модулем ядра. Я згадав про віртуальну машину, як якщо б ви виконували будь-які інші програми в хості ОС (навіть фонові завдання), це вплине на результати ваших орієнтирів.
Прорив

1

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

Продуктивність Змію при розшифровці CBC та XTS із завантаженими модулями має бути приблизно на тому ж рівні, що і програмне забезпечення AES та Twofish (трохи швидше або повільніше залежно від вашої точної моделі процесора).


0

Також зауважте, що код SSE2, який виконується гостьовим ядром у деяких віртуальних машинах, значно повільніше, ніж у хості ядра. Я пережив це за допомогою Oracle VirtualBox. Таким чином, результати для Serpent on VM не обов'язково співвідносяться з очікуваною роботою на фактичному хості.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.