Kategorie
Bezpieczeństwo Zrób to sam

Zagnieżdżamy wolumeny VeraCrypta

Skoro VeraCrypt pozwala na bezpieczne przechowywanie danych w szyfrowanych wolumenach, to umieszczenie wewnątrz jeszcze jednego szyfrowanego wolumenu podwoi bezpieczeństwo, prawda? Będzie tak samo, jak gdyby jeden sejf zamknąć w drugim, nie?

Na to pytanie odpowiem na końcu tekstu, tymczasem zaś przyjrzymy się wydajności takiego rozwiązania – przy zagnieżdżeniu dwu-, trój-, aż do sześciopoziomowego. Startujemy z szybkim dyskiem SSD Samsung 970 EVO i sprawdzamy, kiedy wydajność zapisu i odczytu spadnie do poziomu zwykłego dysku talerzowego.

Konfiguracja sprzętu

Do testów użyłem następujących komponentów:

Taka konfiguracja to w poradniku Logical Increments mniej-więcej zestaw „Outstanding” (w moim przypadku z mniej wydajnym GPU lecz szybszym SSD).

Pod uwagę będziemy brać jedynie sekwencyjny zapis i odczyt pliku o rozmiarze 1 GB, średnia z dwóch przebiegów, jednowątkowo. Wartość testu z takimi parametrami może być kwestionowana, ale dziś naszym celem jest jedynie zmierzenie wydajności przy kolejnych „warstwach” szyfrowania. To akurat uda nam się oszacować.

Bazowa wydajność to 3.5 GB/s przy odczycie i 2.2 GB/s przy zapisie.

Aby efekt degradacji wydajności był bardziej widoczny, na każdym etapie wybieramy algorytm szyfrowania o najniższej wydajności – choć w przypadku użytego zestawu jest to wciąż ponad 600 MB/s (testy wydajności algorytmów VeraCrypta są przeprowadzane w pamięci RAM). Użyty procesor obsługuje zestaw instrukcji przyspieszających szyfrowanie algorytmem AES, stąd taka różnica wydajności między pierwszą pozycją na liście a wszystkimi pozostałymi.

Czas na testy wydajności! Tworzę pierwszy szyfrowany wolumen, podpinamy go jako dysk E.

Veracrypt – poziom 1

Spadek wydajności odczytu jest siedmiokrotny! Dramat, niemniej zgodny z oczekiwaniami, bo celowo wybraliśmy najwolniejszy algorytm. Na wykresie obciążenia widzimy, że szyfrowanie jest realizowane równolegle przez wszystkie rdzenie i wątki procesora, więc gdy zajmiemy komputer innymi zadaniami, wydajność szyfrowanego wolumenu będzie jeszcze mniejsza.

Veracrypt – poziom 2

Drugi poziom zagnieżdżenia – wydajność spada o połowę względem poprzedniej wartości. Dodatkowa obserwacja – CrystalDiskMark może mnie trochę oszukiwać, bo procesor wyciska prawie maksymalne obroty jeszcze kilkanaście sekund po tym, gdy test zapisu ulega zakończeniu.

Veracrypt – poziomy 3, 4, 5, 6

poziom 3
poziom 4
poziom 5
poziom 6

Eksperyment przerwałem na szóstym poziomie zagłębienia, gdy wydajność operacji dyskowych na nieobciążonym komputerze spadła poniżej wartości osiąganych przez klasyczny dysk talerzowy.

Czas na ważne pytanie: czy powyższe operacje miały jakikolwiek sens? Oto odpowiedź:

To nie ma żadnego sensu! Bezpieczeństwo danych chronionych przez VeraCrypta zależy od złożoności hasła, nie od zagnieżdżania wolumenów!

Co istotne – wiele intuicyjnych porównań, jak to z sejfami wkładanymi jeden w drugi, zwodzi nas, w rzeczywistości nie ma bezpośrednich analogii między mechanicznym zamkiem a algorytmami kryptograficznymi. Jeśli potrzebujemy przykładu działającego na wyobraźnię, to może taki: lepiej sprawdzi się jedna kłódka otwierana kombinacją stu cyfr, niż sto kłódek z pojedynczym pokrętłem każda.

Zagnieżdżanie wolumenów nie przynosi żadnych korzyści, ryzykujemy za to uszkodzenie danych w sytuacji, gdy zewnętrzny wolumen zostanie odłączony mimo niedokończonego zapisu w wolumenie wewnętrznym.

Jeśli intuicja mówi ci, że „pojedyncze” szyfrowanie to za mało, być może uspokoi cię fakt, że symetryczny klucz szyfrujący powstaje poprzez przepuszczenie twojego hasła przez funkcję skrótu zapętloną kilkaset tysięcy razy. W powyższym przykładzie używaliśmy też kaskady trzech szyfrów (Kuznyechik-Serpent-Camellia). Wiedz jednak, że taka intuicja jest zwodnicza. BitLocker używa „zwykłego” algorytmu AES i będzie bronił się tak długo, że wcześniej wypalą się i zgasną wszystkie gwiazdy.

Aha, jeszcze jedno – długie, unikalne hasło wygenerujesz za pomocą menedżera haseł.

Obowiązkowy XKCD



O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.

10 odpowiedzi na “Zagnieżdżamy wolumeny VeraCrypta”

BitLocker nie będzie się bronił przed wybranymi, bo w algorytmach ma wprowadzone „przypadkiem” i przez „pomyłkę” programistów podatności znane agencjom z tej strefy politycznej (głównie NSA). Jak wypłyną do innych stref politycznych (Rosja, Chiny, Iran), to będzie „afera” i M$ załata. Tak samo Gmail, Chrome i podobne „produkty”.
Oprogramowanie otwartoźródłowe jest lepsze, bo trudno ukryć w nim celową podatność (ale też się zdarzają celowo wprowadzone).

Odnośnie wrzutki na samym końcu:
„Aha, jeszcze jedno – długie, unikalne hasło wygenerujesz za pomocą menedżera haseł.”

Zna ktoś jakieś rozwiązania, na synchronizacje jakiegoś narzędzia do haseł pomiędzy osobami:
1) Gdy dostęp gdzieś jest via jeden login na kilka osób
2) Gdzie dział IT tworzy komuś nowe konta i by nie musiało przekazywać „ręcznie” silnego hasła, tylko „umieściłem ci je w twoim czymś”

Bitwarden na pierwszą metę wydaje się super (sam na niego wpadłem jakiś czas temu), jednak nawet przy self-hosted wersji pomimo open source muszę kupić licencję Business Teams – przynajmniej mi tak się zdaje.
Choć mówię, wydawałoby się, iż dzięki przymiotnikom SH i OS będzie to bezpłatne rozwiązanie.

Od dawna wiadomo, że veracrypt masakrycznie obniża wydajność dysków SSD. To kwestia podyktowana kompatybilnością z tego co wiem. Szyfrowanie całego dysku np. Diskcryptorem prawie wcale nie wpływa na wydajność (zapis/odczyt). Oczywiście chodzi o full disk encryption, bo on nie obsługuje kontenerów.

Przeczytałem artykuł i owszem – takie pomysły to lamerstwo. Zabezpieczenie tak dysku którego używa się w czasie rzeczywistym – też.

Ale zagnieżdzone woluminy lamerstwem znowu nie są.Przecież to obniżenie wydajności nie ma znaczenia jeśli dane są tak „tajne” czy chociaż „zastrzeżone” by to miało sens. Ależ można się zabawić i na 3301 sposobów jeśli ktoś rozumie o czym mówię – rzecz w tym co chce się zabezpieczyć .Zagnieżdżanie woluminów ma sens jak bawisz się z woluminami ukrytymi albo użyjesz innych narzędzi i technik jako jednej z warstw (świat nie kończy się przecież na veracrypt),ale nie ma sensu robić tego aż na 6 poziomów bo przecież po maksimum trzecim poziomie ktoś się zirytuje i zastosuje kryptoanalizę klucza nasadowego i tak.

Oczywiście – tego typu woluminy są mniej użyteczne,ale przecież chodzi o grupę plików które mają trafić od Boba do Alicji czy odwrotnie nie przeczytane ze zrozumieniem przez Ewę 😉 Jak ktoś by chronił tylko pirackie czy lekko inkryminujące dane przed policją albo zgubieniem na ulicy to pewnie aż tak się bawić nie musi – starczy mu długie hasło.

„Bezpieczeństwo danych chronionych przez VeraCrypta zależy od złożoności hasła, nie od zagnieżdżania wolumenów!”

Na ile ja rozumiem działanie VeraCrypt to zdanie nie zawsze jest prawdziwe, bo zależy od wektora ataku. Jeżeli używamy np. hashcata to oczywiście hasło jest najważniejsze i algorytm, którego użyjemy do szyfrowania dysku nie ma znaczenia bo atakujemy PBKDF+RIPEMD-160/SHA-256/SHA-512/Whirlpool/Streebog. Natomiast co innego, gdy ktoś atakuje sam algorytm szyfrowania danych (AES, Serpent etc.). Można sobie wyobrazić sytuację, gdy np. Serpent zostanie złamany (w sensie: powstanie praktyczny atak na niego) i wtedy użycie dodatkowego, niezłamanego algorytmu ma sens.
Wiem, że trochę się czepiam i oczywiście to takie teoretyczne rozważania, bo wszystkie używane przez VeraCrypt algorytmy są znane od lat i dość dobrze przetestowane, więc prawdopodobieństwo znalezienia jakiegoś istotnego, kompromitującego je błędu jest nikłe.

Śmiem zauważyć, że zagnieżdżone wolumeny nie mają na celu zwiększanie bezpieczeństwa tylko ukrycie samego faktu posiadania zaszyfrowanego zbioru informacji w połączeniu z możliwością ukrytego wolumenu, w obliczu możliwych konsekwencji prawnych. Bowiem czasem najlepsze szyfrowanie nie chroni przed obowiązkiem wydania hasła w momencie znalezienia dowodów na używanie szyfrowania – czyli choćby obecność katalogu VeraCrypt na dysku – co już jest śrenio mądrym rozwiązaniem.

I teraz, najważniejsze:
W Wielkiej Brytanii (nie wiem, czy w USA) jesteś zobligowany podać hasło do wolumenu, pod groźbą postawienia zarzutów karnych.

Czyli przykład:
Jesteś whistleblowerem, albo działaczem obywatelskim, dziennikarzem. Masz niedokończony artykuł i 20gb źródeł (filmy, zdjęcia). Służby wiedzą kim jesteś, tylko nie wiedzą, co wiesz. Wbija Ci o szóstej rano FBI „w sprawie włamania”.
Setting 1:
Znajdują VeraCrypt, więc jest podejrzenie o ukrywanie informacji.
Masz zaszyfrowany 40-znakowym hasłem i trzema algorytmami, wolumen 100GB, w którym znajduje się wyżej wspomniany katalog z filmami i zdjęciami. Problemem nie jest to, że służby nie mogą złamać hasła w ciągu najbliższych 2 tysięcy lat, tylko to, że wiedzą, że jest to zaszyfrowany wolumen. Jesteś zmuszony do wydania hasła. Jedyne co Ci zostaje, to współpraca, bądź zasłanianie się utratą pamięci.

Setting 2:
Masz zaszyfrowany 12-znakowym prostym hasłem i dowolnym algorytmem wolumen 100GB, w którym znajdują się „niegrzeczne” pornosy, i ukryty w clear-space zaszyfrowany innym hasłem, wolumen 20GB z filmami i , zdjęciami, których szukają służby. Z uwagi na to, że zaszyfrowany ukryty zagnieżdżony n-ty wolumen nie różni się poziomem entropii od wolnego miejsca w wolumenie n-1, służby nie mają technicznej możliwości sprawdzenia, czy nie ma więcej ukrytych zaszyfrowanych informacji.

Zagnieżdżone wolumeny tworzy się w połączeniu z opcją „ukryte” po to, by pokazać służbom, otwarty, zalogowany wolumen, w którym „nic nie ma.”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *