Obsługa szyfrowanych dysków SSD pod Linuksem

Obsługa szyfrowanych dysków SSD zgodnych z TCG Opal 2.0 pod Linuksem za pomocą msed.

Oprócz coraz szybszych, większych i tańszych dysków SSD dostaliśmy także dyski SSD ze sprzętowym szyfrowaniem całego dysku. Dzięki szyfrowaniu możemy chronić prywatne dane przez nieautoryzowanym dostępem, czy w łatwy sposób czyścić nośnik przed sprzedażą. Windows oferuje odpowiednie wsparcie, a co w przypadku Linuksa?

Szyfrowane dyski SSD

Na rynku występuje kilka generacji dysków z szyfrowaniem. Najprostsze szyfrują dane z wykorzystaniem klucza, który jest stały. Hasło ATA blokuje tylko dostęp do dysku. W lepszych implementacjach klucz jest haszowany naszym hasłem ATA więc zmiana hasła powoduje wyczyszczenie danych na dysku. Najnowsze rozwiązanie to standard TCG Opal. W dyskach implementujących ten standard na starcie odpalanych jest obraz startowy, który wystawia fałszywy MBR i tylko tyle. Dopiero po podaniu poprawnego hasła odblokowywany jest sam dysk i jego MBR/partycje stają się dostępne.

Dokładniej o tym można poczytać na blogu vxlabs.com.

W przypadku Intela są też dyski wykorzystujące procesor do szyfrowania. Te działają jeszcze inaczej i preferują raczej procesory z zestawem instrukcji AES-NI - Advanced Encryption Standard New Instructions.

TGC Opal 2.0 pod Linuksem

Po zakupie dysk implementujący szyfrowanie według standardu Opal 2.0 będzie zachowywał się jak zwykły dysk. Nie będzie żadnego hasła. Możemy więc zainstalować wybraną dystrybucję Linuksa. Trudno bezpośrednio w sklepie wyszukać dyski z Opalem. Trzeba sprawdzać na stronie producenta, czy dany szyfrowany dysk używa standardu Opal, czy nie.

Gdy system będzie gotowy możemy przystąpić do ustawienia hasła i procesu autoryzacji z wykorzystaniem narzędzi msed (binarki).

Na początek do flag rozruchowym w grubie trzeba będzie dodać libata.allow_tpm=1. Można to dodać do pliku konfiguracyjnego (/etc/default/grub w przypadku Ubuntu i podobnych) i wywołać update-grub. Po restarcie możemy użyć aplikacji msed.

Archiwum msed_LINUX.tgz zawiera aplikację msed potrzebną do wszystkich operacji. Archiwum biospba-*.img.gz to obraz systemu do autoryzacji (pre-boot authorization), który też będzie potrzebny.

Na początek możemy wyszukać nasz dysk za pomocą msed --scan. Gdy jest wykrywany poprawnie możemy przystąpić do konfiguracji:

./msed --initialsetup mojehaslo /dev/sda
./msed --loadPBAimage mojehaslo biospba-*0.img /dev/sda
./msed --setMBREnable on mojehaslo /dev/sda
./msed --enableLockingRange 0 mojehaslo /dev/sda

Gdzie mojehaslo to hasło jakie na początku ustawiamy, a później używamy do autoryzowania czynności na dysku. Zaleca się by były to tylko znaki alfanumeryczne ASCI by przy autoryzacji nie było problemu z układem klawiatury i znakami specjalnymi (choć to może się zmienić w przyszłości bliższej lub dalszej). Powyższy przykład zakłada że szyfrowany dysk jest pod /dev/sda, u ciebie może to być inaczej.

Po wykonaniu tych czynności hasło zostało ustawione a obraz PBA wgrany na dysk. Po wyłączeniu i włączeniu ponownym komputera powinieneś zobaczyć PBA w akcji, gdy poprosi cię o hasło.

Dysk jest zamykany tylko przy wyłączeniu komputera. Hibernacja, czy ponowne uruchamianie nie blokuje dysku - tak więc jeżeli chcesz chronić dysk wyłączaj komputer zamiast hibernować go.

Żeby zdjąć autoryzację hasłem z dysku bez utraty danych musimy użyć ustawionego hasła i wykonać:

./msed --revertnoerase mojehaslo /dev/sda
./msed --reverttper mojehaslo /dev/sda

msed jest młodym projektem i jeszcze nie wszystko może działa idealnie. Podobnie jak inny użytkownik natrafiłem na problem z dyskiem Crucial MX200 - PBA nie autoryzowało. Na blogu vxlabs użyto dysku innego producenta i tam to działało.

blog comments powered by Disqus

Kategorie

Strony