Chcę zaszyfrować część mojego dysku twardego. Ale wcześniej chciałem przetestować inny dostępny algorytm, zastanawiając się, czy powinienem wybrać aes-xts-256
czy aes-xts-512
.
Uwaga: nie mam aes
akceleracji sprzętowej. Testy zostały powtórzone wiele razy bez większych zmian. Chciałbym wyraźnie powiedzieć, że te testy porównawcze są ważne tylko na moim komputerze (Debian, duet Core 2). To nie jest zamierzone pełne porównanie LUKS-TrueCrypt.
TL; DR: przejdź do części 4
1- Cryptsetup
Pobrałem więc, cryptsetup v1.6.0
aby skorzystać z nowego cryptsetup benchmark
polecenia.
Komenda
$cryptsetup benchmark
Wyniki
# 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
Myśli
Wcbc
trybieserpent
zaskakująco szybko odszyfrowuje!Wxts
trybieserpent
jest zdecydowanie najszybszy.- Rozmiar klucza wydaje się nie mieć prawie żadnego zauważalnego wpływu .
serpent
twofish
aes
nie zachowuje się dobrze po zwiększeniu rozmiaru klucza.
Aktualizacje poza maszyną wirtualną
2 - TrueCrypt
Byłem naprawdę zaskoczony, ponieważ aes
wiadomo, że jest najszybszy (nawet bez przyspieszenia sprzętowego). Pobrałem więc, TrueCrypt
aby dokładnie sprawdzić te wyniki. TrueCrypt
używa xts
domyślnie trybu, więc zakładam, że używa go również w testach porównawczych.
metoda
- Narzędzia> Benchmark
- Wybierz dowolny rozmiar bufora (tutaj, 5 MB)
- Kliknij „Benchmark”
Wyniki
# Algorithm | Encryption | Decryption
AES 106 MB/s 107 MB/s
Twofish 78 MB/s 76 MB/s
Serpent 41 MB/s 42 MB/s
Myśli
Wyniki te odpowiadają znacznie więcej niż oczekiwano, ale nie pasują dobrze do cryptsetup
wyników.
3- Ogólne myśli
cryptsetup
zapewnia lepszą ogólną wydajność niżTrueCrypt
w tym przypadku. Można to wyjaśnić w następujący sposób:cryptsetup
został skompilowany w moim systemie za pomocą procedur optymalizacji kompilatora, podczas gdyTrueCrypt
został już skompilowany w sposób ogólny;- AFAIK
cryptsetup
używa modułówTrueCrypt
kryptograficznych przestrzeni jądra, podczas gdy używa procedur kryptograficznych przestrzeni użytkownika.
- Nie potrafię jednak wyjaśnić, dlaczego
serpent-xts-512
wydaje się, że jest to właściwy sposób,cryptsetup
podczasaes-xts
gdy jedyny warty użycia szyfr.
4-pytanie
cryptsetup
i TrueCrypt
podać całkowicie różne jakościowe (względne prędkości szyfrowania) i ilościowe (rzeczywiste prędkości każdego szyfru) wyniki testów porównawczych w pamięci RAM.
- Czy to już zauważyłeś?
- Czy powinienem ufać
cryptsetup
i używaćserpent-xts-512
szyfru dla szybkości?
serpent
które stały się znacznie wolniejsze. Problem z wężem został rozwiązany.Twofish
jest jeszcze szybsza niżaes
wcryptsetup
i wolniejTrueCrypt
. I wcale nie mamaes
akceleracji sprzętowej ... to nie jest sprawa VM ...cryptsetup
będzie szybszy niżTrueCrypt
podane te same algorytmy szyfrowania, ponieważTrueCrypt
działa wFUSE
(system plików przestrzeni użytkownika), podczas gdycryptsetup
używa LUKS, który jest modułem jądra. Wspomniałem o maszynie wirtualnej, jakbyś uruchamiał inne programy w systemie operacyjnym hosta (nawet zadania w tle), to wpłynęłoby na wyniki twoich testów porównawczych.Jądro Linux ma zoptymalizowane pod kątem SSE2 i AVX moduły Serpent w celu przyspieszenia równoległych obciążeń (takich jak deszyfrowanie CBC i kodowanie i dekodowanie XTS).
Wydajność Serpent w odszyfrowywaniu CBC i XTS z załadowanymi modułami powinna być prawie na tym samym poziomie co oprogramowanie AES i Twofish (nieco szybsze lub wolniejsze w zależności od konkretnego modelu procesora).
źródło
Zauważ też, że kod SSE2 uruchamiany przez jądro gościa na niektórych maszynach wirtualnych jest znacznie wolniejszy niż na jądrze hosta. Doświadczyłem tego z Oracle VirtualBox. Dlatego wyniki dla Serpent na VM mogą niekoniecznie korelować z oczekiwaną wydajnością na rzeczywistym hoście.
źródło