Programy ładujące systemu Linux obsługujące pełne szyfrowanie dysku?

28

Czy są jakieś programy ładujące Linuksa obsługujące pełne szyfrowanie dysku (a la TrueCrypt ). Wiem, że pracowano nad dodaniem obsługi szyfrowania do GRUB2, ale nie wydaje się to jeszcze gotowe. Jakieś inne opcje?

(Pamiętaj, że naprawdę mam na myśli tutaj pełne szyfrowanie dysku - w tym /boot)

Większość odpowiedzi opisuje konfigurację, w której /bootnie jest szyfrowany, a niektóre z nich próbują wyjaśnić, dlaczego niezaszyfrowane /bootpowinno być OK.

Nie wdając się w dyskusję na temat tego, dlaczego tak naprawdę potrzebuję / boot do szyfrowania, oto artykuł, który dokładnie opisuje to, czego potrzebuję, w oparciu o zmodyfikowaną wersję GRUB2:

Problem polega na tym, że te modyfikacje najwyraźniej nie są obsługiwane w obecnej bazie kodu GRUB2 (a może coś przeoczam).

Grodriguez
źródło
tak, jest tutaj doskonałe howto: wiki.archlinux.org/index.php/…
ebal

Odpowiedzi:

20

Myślę, że obecna wersja GRUB2 nie obsługuje sama ładowania i deszyfrowania partycji LUKS (zawiera kilka szyfrów, ale myślę, że są one używane tylko do obsługi hasła). Nie mogę sprawdzić eksperymentalnej gałęzi programistycznej, ale na stronie GRUB znajduje się kilka wskazówek, że planowane są prace nad wdrożeniem tego, co chcesz zrobić.

Aktualizacja (2015) : najnowsza wersja GRUB2 (2.00) zawiera już kod dostępu do partycji zaszyfrowanych LUKS i GELI. (Link do strony xercestch.com podany przez OP wspomniał o pierwszych łatach, ale są one teraz zintegrowane z najnowszą wersją).

Jeśli jednak próbujesz zaszyfrować cały dysk ze względów bezpieczeństwa, pamiętaj, że niezaszyfrowany moduł ładujący (taki jak TrueCrypt, BitLocker lub zmodyfikowany GRUB) oferuje nie więcej ochrony niż niezaszyfrowana /bootpartycja (jak zauważył JV w komentarzu powyżej) . Każdy, kto ma fizyczny dostęp do komputera, może równie łatwo zastąpić go niestandardową wersją. Jest to nawet wspomniane w artykule na stronie xercestech.com, który podłączyłeś:

Dla jasności, w żaden sposób nie zmniejsza to odporności systemu na atak offline, jeśli osoba atakująca zastąpi program ładujący własnym programem lub przekieruje proces rozruchu w celu uruchomienia własnego kodu, system nadal może zostać zagrożony.

Należy pamiętać, że wszystkie produkty programowe do pełnego szyfrowania dysku mają tę słabość, bez względu na to, czy używają niezaszyfrowanego modułu ładującego rozruchu, czy niezaszyfrowanej partycji rozruchowej / przedbootowej. Nawet produkty obsługujące układy TPM (Trusted Platform Module), takie jak BitLocker, można zrootować bez modyfikowania sprzętu.

Lepszym podejściem byłoby:

  1. odszyfrować na poziomie systemu BIOS (w płycie głównej lub na dysku lub w sprzęcie zewnętrznym [karta inteligentna], z układem TPM lub bez), lub
  2. przenieś kod PBA (autoryzacja przed uruchomieniem) ( /bootw tym przypadku partycję) na urządzenie wymienne (takie jak karta inteligentna lub pamięć USB).

Aby to zrobić w drugi sposób, możesz sprawdzić projekt Linux Full Disk Encryption (LFDE) na stronie: http://lfde.org/, który zawiera skrypt poinstalacyjny do przeniesienia /bootpartycji na zewnętrzny dysk USB, szyfrując klucz za pomocą GPG i przechowywanie go również w pamięci USB. W ten sposób słabsza część ścieżki rozruchowej (niezaszyfrowana /bootpartycja) jest zawsze przy Tobie (tylko Ty będziesz mieć fizyczny dostęp do odszyfrowującego kodu ORAZ klucza). ( Uwaga : ta witryna została utracona, a blog autora również zniknął, jednak stare pliki można znaleźć na stronie https://github.com/mv-code/lfde. Uwaga: ostatnie opracowanie zostało zrobione 6 lat temu). Jako lżejszą alternatywę można zainstalować niezaszyfrowaną partycję rozruchową w pamięci USB podczas instalacji systemu operacyjnego.

Pozdrawiam, MV

MV
źródło
1
Deszyfrowanie na poziomie BIOS byłoby rzeczywiście bardzo dobrym rozwiązaniem (rozważałem to jako opcję) ...
1
Nie znam żadnej działającej implementacji, ale EFI / UEFI ma opcję włączenia niestandardowego menedżera rozruchu EFI w celu zastąpienia zwykłego modułu ładującego, może dodając warstwę deszyfrującą w celu odszyfrowania danych (oczywiście wtedy potrzebna będzie platforma EFI ). A może niektóre projekty związane z CoreBoot (ADLO, SeaBIOS, OpenBIOS itp.) Można zmodyfikować w tym celu. Po prostu pomysły.
4
Aby dodać więcej informacji o słabości korzystania z niezaszyfrowanej partycji rozruchowej / rozruchowej (ale dotyczy to także nieszyfrowanego programu ładującego rozruch): twopointfouristan.wordpress.com/2011/04/17/... (jak zmodyfikować rozruch partycja w ciągu 10 minut fizycznego dostępu, aby pobrać hasło montowania oraz dowolny inny plik z zaszyfrowanej partycji)
1
@MV .: Dzięki. Mogę to przetestować osobiście i dodać tutaj odpowiedź zawierającą bardziej szczegółowe /bootinstrukcje korzystania z zaszyfrowanych partycji w GRUB2.
Peque
1
@ 에이 바: nie, to jest powiązane (używanie LUKS z TPM), ale nie jest to ten sam projekt, który wcześniej był hostowany na lfde.org (obecnie jest to strona o aeroklubie).
MV.
4

Sprawdź, czy początkowy dysk RAM i folder / boot nie używają szyfrowania.

Spowoduje to uruchomienie „minimalnego” jądra ze sterownikami i obsługą do przełączania się na „rzeczywisty” główny system plików, który jest zaszyfrowany.

Zanim zaczniesz twierdzić, że to „włamanie” - pamiętaj - większość (jeśli nie wszystkie) dystrybucje Linuksa uruchamiają się dzisiaj w ten sposób. Pozwala to jawnie uruchomić system i załadować główny system FS przy użyciu modułów, które należy załadować z systemu plików. (Rodzaj problemu z kurczakiem i jajkami). Na przykład, jeśli główny system plików znajdował się na sprzętowym woluminie RAID i trzeba było załadować jego sterownik, zanim będzie można zamontować główny FS.

Ćwiek
źródło
3

Przejrzałem link, który opublikowałeś - chociaż nie ma partycji rozruchowej, na dysku twardym nadal znajduje się niezaszyfrowany moduł ładujący, do którego można uzyskać dostęp i zaatakować go przy użyciu ataku złej pokojówki. Przyglądałem się podobnej konfiguracji, w której nie ma niezaszyfrowanych danych na dysku twardym, ale jak dotąd wymyśliłem tylko uruchamianie programu ładującego z dysku wymiennego.


źródło
Tak, wciąż istnieje niezaszyfrowany moduł ładujący. To byłoby dla mnie do zaakceptowania.
Zła pokojówka może zainfekować moduł ładujący, aby wprowadzić fałszywe hasło w celu oszukiwania użytkownika, a następnie po prostu załadować niezaszyfrowane trojanizowane jądro. Szyfrowanie jądra zyskuje bardzo niewiele bez szyfrowania programu ładującego.
Skaperen
1

Sądzę, że większość z nich robi to, czego potrzebujesz, to przede wszystkim instrukcja instalacji systemu operacyjnego z zaszyfrowanym HD.

Ubuntu ma ładną stronę z instrukcjami tworzenia zaszyfrowanych partycji, LMVP, folderów itp., Po prostu google swoją wersję dystrybucji tego ...

JV
źródło
2
Większość dystrybucji Linuksa, w tym Ubuntu, zawiera pewne wsparcie dla szyfrowania partycji, ale wymagają one / boot do niezaszyfrowania. To, czego szukam, to program ładujący, który może obsłużyć całkowicie zaszyfrowany dysk.
1
Przynajmniej część bootloadera musi być niezaszyfrowana, w przeciwnym razie procesor nie mógłby go uruchomić. Czy masz jakiś szczególny problem z pozostawieniem / niezaszyfrowaniem systemu?
2
Program ładujący i / boot to różne rzeczy. Szukam programu ładującego, niż można uruchomić w pełni zaszyfrowanego dysku. TrueCrypt może to zrobić w przypadku systemu Windows, ale nie w przypadku systemu Linux.
Różnica polega na tym, że bootloader systemu Windows jest zawarty w samym mbr, podczas gdy w Linuksie mbr po prostu łączy się z niezbędnymi plikami / boot.
JV
1
„Uwierzytelnianie przed uruchomieniem jest obsługiwane przez program ładujący TrueCrypt, który znajduje się w pierwszej ścieżce napędu rozruchowego” - inaczej w systemie Windows tworzy mini-rozruch. Ponownie, sam grub jest zawarty w / boot, mbr ma tylko 512 bajtów, co nie wystarcza do przechowywania algorytmu deszyfrowania. Jednak tak się stanie, część dysku twardego musi być dostarczona w postaci niezaszyfrowanej. Możesz być w stanie uruchomić gruba na zaszyfrowanej partycji z bootloadera na zupełnie innej, ale wymagałoby to poważnego niechlujnego kodu ...
JV
0

Nie, myślę, że nie ma.

Czy naprawdę potrzebujesz szyfrować / uruchamiać? Nie podejrzewam Reszta systemu plików może być zaszyfrowana przez normalne oprogramowanie Linux, które znajduje się na initramfs w / boot i odpowiednio monituje użytkownika.

MarkR
źródło
2
Tak, muszę zaszyfrować / uruchomić. Wszystko musi być zaszyfrowane, z wyjątkiem samego modułu ładującego.
Wyjaśnij, dlaczego uważasz, że nie ma programów ładujących obsługujących pełne szyfrowanie dysku.
this.josh
@Grodriguez: jeśli uważasz / boot za część modułu ładującego, to wszystko jest szyfrowane - wszystkie pliki binarne używane w czasie wykonywania, wszystkie dane użytkownika itp.
MarkR
2
Jak zauważono w komentarzu do innej odpowiedzi: Wiem, że zawsze musi być „coś”, co nie jest zaszyfrowane - po prostu potrzebuję tego „czegoś”, aby być programem ładującym (MBR + sektor rozruchowy), zamiast partycji / boot .
0

Wygląda na to, że prosisz o coś, co jest niemożliwe, i porównujesz to z rozwiązaniem Windows, które ukrywa przed tobą implementację, ale w rzeczywistości robi to samo, co Linux.

Najbliższym rozwiązaniem, jakie mogę wymyślić, jest użycie dysku twardego, który implementuje hasło bezpieczeństwa i szyfrowanie. Niektóre laptopy Thinkpad korzystają z tych rozwiązań sprzętowych.

Zan Lynx
źródło
2
Przepraszam, ale nie rozumiem, dlaczego to powinno być „niemożliwe”. Artykuł, do którego odsyłam w moim pytaniu, dowodzi, że można to zrobić. Weryfikacja koncepcji została zaimplementowana przy użyciu zmodyfikowanej wersji GRUB 2. Wiem, że zawsze musi być „coś”, co nie jest zaszyfrowane - po prostu potrzebuję tego „czegoś”, aby być programem ładującym (MBR + sektor rozruchowy), zamiast tego partycji / boot.
@Grodriguez: Twoje wymaganie nie ma sensu. Czy twoje wymagania są spełnione, gdy używasz maszyny wirtualnej w innym systemie operacyjnym? Jeśli tak, uruchom system operacyjny jeden, odszyfruj dysk i uruchom maszynę wirtualną.
Zan Lynx,
2
Czy próbowałeś przeczytać artykuł, do którego linkowałem? Fakt, że nie rozumiesz wymogu, nie oznacza, że ​​„nie ma sensu”. Mam uzasadnione powody (do których nie chcę wchodzić).
Artykuł wyjaśnia w ust. 3, że nie poprawia sytuacji. Dlatego nie ma dla mnie sensu śledzenie pozostałej części, która skupia się na tym, jak to skonfigurować, a nie na tym, jak to działa. Zastanów się, co ci powie, że zastąpiłem twoje jądro lub cały / boot moim własnym (gdy działam jako zła pokojówka).
Skaperen
0

Odpowiedź jest podana w artykule. „Jest to teraz możliwe dzięki rozszerzeniom programu ładującego GRUB2 nowej generacji, który został załatany, aby obsługiwać nie tylko” i „chcemy później zainstalować nasz nowy obraz grub2 z obsługą Luksa” oraz „Teraz kompilujemy źródło GRUB2 z włączoną obsługą LUKS. „ Wygląda na to, że istnieje łatka lub rozszerzenie, które musisz uzyskać i dołączyć do GRUB2, lub rozwidlone źródło GRUB2.

Skaperen
źródło
0

Grub2 w wersji 2.02 ~ beta3 potrafi wiele rzeczy, których nie może zrobić Grub2 w wersji 2.02 ~ beta2, przetestowane przeze mnie:

  1. Uruchom przy użyciu dysku Super Grub 2
  2. Wpisz „c”, aby przejść do wiersza poleceń
  3. Wpisz polecenia, aby zamontować zaszyfrowaną partycję, którą chcę
    • insmod luks
    • cryptomount (hd0, #) // gdzie # oznacza zaszyfrowaną partycję
  4. Wpisz hasło i wpisz więcej poleceń
    • multiboot (crypto0) /grub/i386-pc/core.img
    • bagażnik

Spowoduje to załadowanie kolejnego Grub2, który znajduje się w zaszyfrowanej partycji, szalony atak zła nie ma tu miejsca ... Rozruchuję z płyty CD (tylko do odczytu), a następnie montuję zaszyfrowaną partycję (bez hasła, jak śmie ktoś może wstrzyknąć cokolwiek!), a następnie uruchamia się z zaszyfrowanej partycji i ładuje Grub2 z własnym menu itp.

Uwaga: taki rozruch Grub 2.02 ~ beta3 (używam płyty Super Grub 2 cd) może znajdować się na pamięci USB, dysku twardym USB itp.

Ostrzeżenie: Grub2 w wersji 2.02 ~ beta2 nie może zrobić tego samego, ponieważ ma kilka błędów (które wydają się być naprawione w wersji Grub2 2.02 ~ beta3) związanych z cryptomount ...

Błędy beta2, o których mówię, to:

  1. Tak naprawdę nie montuje zaszyfrowanej partycji, więc nie pozwala na dostęp (crypto0) / *
  2. Jeśli istnieje więcej niż jedna zaszyfrowana partycja, użycie cryptomount -atylko poprosi o jedno hasło
  3. Po jednorazowym uruchomieniu cryptomount jest ponownie uruchamiany, nic nie robi

w wersji beta 3:

  1. Naprawdę montuje zaszyfrowaną partycję i umożliwia dostęp do plików przez (crypto0) / * lub (crypto1) / * itd., Jeśli więcej niż jedna jest zamontowana w tym samym czasie
  2. Pyta o każde hasło (po jednym na zaszyfrowaną partycję)
  3. Pozwala uruchomić go tyle razy, ile potrzebujesz, możesz zamontować jeden, a potem drugi itd.

Uwaga dodatkowa: Nie zastanawiałem się, jak je odmontować, oprócz ponownego uruchomienia lub uruchomienia innego lub tego samego programu ładującego grub2 / other itp.

Mam nadzieję, że to pomoże w wyjaśnieniu rzeczy i mam nadzieję, że Grub2 w wersji 2.02 ~ beta3 zostanie zintegrowany z LiveCD, dzięki czemu będziemy mogli go zainstalować bez konieczności samodzielnej kompilacji.

PD: Z dyskiem Super Grub 2 nie widzę żadnego sposobu na zainstalowanie Grub2 w wersji 2.02 ~ beta3 na partycji MBR / boot itp.

Claudio
źródło