Okna.  Wirusy.  Laptopy.  Internet.  Biuro.  Narzędzia.  Kierowcy

Walka z piractwem nabiera nowego impetu; właściciele praw autorskich i agencje rządowe podwajają swoje wysiłki w tej trudnej sprawie. Myślę, że każdy z nas myślał o zabezpieczeniu akt osobowych przed wtargnięciem „niespodziewanych gości” i po prostu zbyt dociekliwych osób.

Wstęp

Zaszyfrujemy dyski standardowe środki Ubuntu, a klucz szyfrowania, taki jak partycja /boot, zostanie przeniesiony na dysk wymienny. Ale po co szyfrować partycję root? W końcu możesz szyfrować tylko /home? Jest tego kilka powodów. Pierwsza opiera się na pliki konfiguracyjne Możesz wyodrębnić pewne informacje z /etc, nawet jeśli nie są to dane wrażliwe. Po drugie, jeśli nagle zainteresuje się zawartością dysku, zawsze można powiedzieć, że wszystko tak się stało i że dysk był już pełen pseudolosowych danych. Co więc będzie potrzebne?

  • Pendrive z MBR
  • Ubuntu 12.10
  • Pusty dysk twardy

Będziemy używać AES jako algorytmu szyfrowania dysku, ponieważ jest on akceptowany jako standard i jest odporny na szyfrowanie, a jako środek stosujemy cryptsetup/LUKS. Aby móc dodać wolne miejsce na zaszyfrowanym woluminie, używamy woluminów logicznych (LVM).

Tworzenie zaszyfrowanego woluminu

Po uruchomieniu z LiveCD należy przygotować dysk flash: utwórz na nim drugą partycję, na której będzie znajdować się /boot i klucz szyfrowania. Tworząc partycję /boot z sekundnikiem ext2 FS, upijamy dwie pieczenie na jednym ogniu – pierwsza partycja będzie widoczna we wszystkich systemach i będzie można na niej przechowywać dane, a drugiej partycji nie będzie tak łatwo zobaczyć z Windowsa, co dodaje ciekawskim niedogodności. Do partycjonowania użyłem gparted, ale nikt nie zabrania Ci używać np. fdisk. Następnie musisz zamontować nowo utworzoną partycję i wygenerować plik klucza:

Po co czytać jeden bajt na raz? Chodzi o to, że basen losowe liczby w jądrze jest stosunkowo niewielki i nie zawsze zawiera wystarczającą ilość losowych danych, dlatego podczas generowania losowo poruszasz myszą.


Przyjrzyjmy się, co robi to polecenie. Pierwszy klucz określa typ funkcji skrótu, która będzie używana do mieszania klucza głównego. Drugi klucz określa algorytm i typ szyfrowania. Zastanowię się nad tym nieco bardziej szczegółowo. Co to jest CBC? Jak wiadomo, AES to szyfr blokowy, który działa w blokach po 128, 192 lub 256 bitów. Jednak z reguły szyfrowane są znacznie większe ilości informacji. I pojawia się problem - jak zaszyfrować, aby nie było widać nielosowego rozkładu, z którego kryptoanalityk może wydobyć informacje. Mądrzy ludzie rozwiązali to w ten sposób: pierwszy blok zawiera IV – losowy zestaw bitów. Każdy kolejny blok otwartych danych jest poddawany XOR z poprzednim blokiem już zaszyfrowanych danych. Wszystko wydaje się być w porządku, jednak w przypadku szyfrowania dysku taki schemat z oczywistych względów nie ma zastosowania (nie będziesz za każdym razem czekać 10–20 minut, aż system odszyfruje potrzebną sekcję?). W LUKSie ESSIV służy do rozwiązania problemu losowego dostępu do informacji - szyfrowane są stosunkowo małe bloki danych (sektor po sektorze), a wektor inicjujący generowany jest na podstawie numeru sektora i skrótu klucza. Schemat ten chroni również przed niektórymi atakami kryptograficznymi. Między innymi dlatego używam LUKS-a. Potwierdzenie swoich zamiarów po uruchomieniu poprzednie polecenie, utwórz mapowanie urządzenia LUKS:

# cryptsetup -d=/mnt/boot/key.bin luksOpen /dev/sdd dysk kryptograficzny

Pierwszy etap przygotowań został zakończony – teraz w katalogu /dev/mapper pojawia się urządzenie kryptodysku, które można traktować jak zwykły dysk.


Tworzenie LVM na zaszyfrowanym woluminie

W zasadzie można teraz zainstalować Ubuntu na nowo utworzonym dysku kryptograficznym, jednak tak jak już pisałem, aby móc zwiększyć przestrzeń, lepiej jest utworzyć na nim wolumin LVM, co też zrobimy Do. Zainicjujmy wolumin fizyczny i utwórzmy grupę woluminów:

Teraz możesz sformatować je w systemach plików. Możesz wybrać sam, ale ja użyłem starego, dobrego ext4 zarówno dla woluminu root, jak i vg-home - moim zdaniem posunęliśmy się już za daleko, aby używać nowszych systemów plików:

Wystarczy, że zainstalujemy Ubuntu na niezaszyfrowanej partycji/dysku i przeniesiemy go na zaszyfrowany.

Przygotowanie i migracja Ubuntu

Teraz ustawiliśmy go na niezaszyfrowany Dysk Ubuntu- wykonaj konfigurację według własnych upodobań, z wyjątkiem umieszczenia /boot i bootloadera. Należy je umieścić na dysku flash, na którym wcześniej utworzyłeś odpowiednią partycję. Następnie uruchamiamy z pendrive'a, aby sprawdzić, czy wszystko zostało poprawnie zainstalowane, instalujemy pakiety lvm2 i cryptsetup za pomocą apt-get - zostały one automatycznie usunięte po Instalacje Ubuntu- i dodaj/zmień linie w /etc/fstab. Powinieneś otrzymać coś podobnego (z wyjątkiem linii z systemami pseudoplików, które jednak nowoczesne systemy NIE):

/etc/fstab UUID = dd7ca139 - 074a - 4b1b - a116 - 3a42feab7459 / boot ext2 wartości domyślne 0 2 / dev / mapper / vg - root / ext4 error = remount - ro 0 1 / dev / mapper / vg - home / home ext4 wartości domyślne 0 1 /dev/mapper/vg - zamień brak zamiany SW 0 0

Partycję /boot montujemy po UUID, aby przy dodawaniu nowych dysków nie było pomyłek z ich nazwami. Teraz przechodzimy do pliku /etc/crypttab, ma on w przybliżeniu następującą zawartość:

Stwórzmy skrypt, abyśmy nie musieli ponownie montować pendrive'a:

Skopiuj klucz i cryptsetup

cp / boot / key .bin $ ( DESTDIR ) / etc / crypto copy_exec / sbin / cryptsetup / sbin

Oraz faktyczny skrypt do podłączenia kryptodysku (wykonywany podczas ładowania initrd):

/etc/initramfs – narzędzia/skrypty/local – top/kryptoklucze. . . modprobe - b dm_crypt podczas! /sbin/cryptsetup - d=/etc/crypto/key .bin luksOpen /dev/disk/by - uuid /c34e4c91 - 1fa1 - 4802 - 88ca - 9c3be5c99097 kryptodysk ; wykonaj echo „Spróbuj ponownie…” zrobione

Pętla while jest konieczna, jeśli później dodasz odblokowanie woluminu hasłem. Obydwa skrypty muszą być wykonywalne, w przeciwnym razie następne polecenie ich nie zobaczy i utworzy standardowy obraz. Teraz możesz wydać polecenie initrd update:

# zaktualizuj initrd -u -k all -v

Prawie zapomnieliśmy o konfiguracji bootloadera. Można to edytować na dwa sposoby: jeden jest prosty, ale niepoprawny - bezpośrednia edycja pliku /boot/grub/grub.cfg, drugi również jest prosty, ale tym razem poprawny. Niepoprawność pierwszej metody polega na tym, że przy każdej aktualizacji jądra konfiguracja jest przepisana przy użyciu skryptów z /etc/grub.d/. Pójdziemy w drugą stronę - dodamy skrypt, który wygeneruje poprawne linie w prawdziwej konfiguracji Grabova. Jest jednak jedno „ale” - aktualizując jądro, będziesz musiał albo zmieniać je za każdym razem, albo pozostać przy starym (to drugie, moim zdaniem, jest lepsze - patrz pasek boczny). Tak wyglądają jego linie:

/etc/grub.d/40_custom menuentry "Ubuntu crypto" ( recordfail = 1 if [ - n $ ( have_grubenv ) ] ; następnie save_env recordfail ; fi set Quiet = 1 insmod part_msdos insmod ext2 insmod gzio

UUID pobieramy z nagranego wcześniej pliku

szukaj - nie - dyskietka - fs - uuid - set = root dd7ca139 - 074a - 4b1b - a116 - 3a42feab7459

Partycja /boot dla Gruba jest uważana za partycję główną, więc ścieżki do jądra i obrazu initrd są określone względem niej

Jeśli chcesz, możesz wyłączyć niepotrzebne elementy menu. Aby to zrobić, po prostu usuń uprawnienia do wykonywania ze wszystkich niepotrzebnych skryptów w /etc/grub.d/. Teraz możesz zaktualizować główną konfigurację:

Po skopiowaniu możesz spróbować uruchomić komputer z dysku flash - wystarczy wybrać pozycję menu Ubuntu Crypto. Jeśli wszystko poszło dobrze, po pewnym czasie pojawi się monit o zalogowanie. W tym wypadku mogę Ci pogratulować – już pracujesz w zaszyfrowanym systemie.


Dodawanie/zmiana kluczy

Załóżmy, że musisz zmienić klucz — naruszyłeś go lub po prostu stworzyłeś politykę zmian i chcesz jej ściśle przestrzegać. Co jest do tego potrzebne? Przede wszystkim zrób to kopia zapasowa Nagłówek woluminu LUKS - jeśli wszystko pójdzie dobrze, po zmianie klucza możesz go zniszczyć. Robimy to oczywiście na niezaszyfrowanej partycji:

Patrzymy na aktualne miejsca na klucze (miejsca w nagłówku zaszyfrowanego woluminu, w których przechowywane są klucze - tak, tak, może być ich więcej niż jeden) i zapamiętujemy aktywny numer (Włączone). Zazwyczaj jest to zero.


Autor: Nitish Tiwari
Data publikacji: 04 lutego 2015 r
Tłumaczenie: N. Romodanow
Data tłumaczenia: marzec 2015

TrueCrypt nie jest już obsługiwany, ale dm-crypt i LUKS to świetne opcje open source kod źródłowy, która umożliwia szyfrowanie i wykorzystywanie zaszyfrowanych danych.

Bezpieczeństwo danych stało się jednym z najważniejszych duże problemy wśród użytkowników Internetu. Wiadomości o kradzieży danych ze stron internetowych stały się bardzo powszechne, ale ochrona danych to nie tylko obowiązek witryn internetowych. My, użytkownicy końcowi, możemy wiele zrobić dla własnego bezpieczeństwa. Na przykład tylko niektóre przykłady to używanie silnych haseł, szyfrowanie dysków twardych znajdujących się na naszych komputerach i korzystanie z bezpiecznych połączeń. W szczególności szyfrowanie dysku twardego w dobry sposób bezpieczeństwo - ochroni Cię nie tylko przed trojanami próbującymi ukraść Twoje dane w sieci, ale także przed atakami fizycznymi.

W maju tego roku rozwój TrueCrypt, dobrze znanego narzędzia do szyfrowania dysków typu open source, został wstrzymany. Jak wielu z Was wie, było to jedno z bardzo niezawodnych narzędzi przeznaczonych do szyfrowania dysków. To smutne, że narzędzie tego kalibru znika, ale wielkość świata open source jest taka, że ​​istnieje kilka innych narzędzi open source, które pomogą ci zapewnić bezpieczeństwo poprzez szyfrowanie dysku, które również mają wiele ustawienia konfiguracyjne. Przyjrzymy się dwóm z nich - dm-crypt i LUKS - as Alternatywy TrueCrypt dla platformy Linux. Zacznijmy od szybkiego spojrzenia na dm-crypt, a następnie LUKS.

To podstawowe informacje o urządzeniu korzystającym z LUKS-a, wskazujące jakie szyfrowanie jest stosowane, tryb szyfrowania, algorytm mieszający i inne dane kryptograficzne.

Zasoby

Krok 01: Biorąc pod uwagę Dm-crypt

Nazwa aplikacji dm-crypt jest skrótem od Device Mapper-crypt. Jak sama nazwa wskazuje, opiera się na frameworku mapowania urządzeń Jądra Linuksa, przeznaczony do mapowania urządzeń blokowych na wirtualne urządzenia blokowe wysoki poziom. Podczas mapowania urządzeń można korzystać z kilku funkcji jądra, takich jak dm-cache (tworzy woluminy hybrydowe), dm-verity (przeznaczony do sprawdzania integralności bloków, część systemu operacyjnego Chrome), a także bardzo popularnego Dockera. Do celów kryptograficznych dm-crypt wykorzystuje framework Crypto API jądra Linux.

Podsumowując, aplikacja dm-crypt to podsystem szyfrowania na poziomie jądra, który oferuje przezroczyste szyfrowanie dysku: oznacza to, że pliki są dostępne natychmiast po zamontowaniu dysku - nie ma widocznego opóźnienia dla użytkownika końcowego. Aby zaszyfrować za pomocą dm-crypt, możesz po prostu określić jeden z szyfrów symetrycznych, tryb szyfrowania, klucz (dowolnego prawidłowego rozmiaru), tryb generowania IV, a następnie utworzyć nowe urządzenie blokowe w /dev. Teraz każdy zapis na tym urządzeniu będzie szyfrowany, a każdy odczyt zostanie odszyfrowany. Możesz w zwykły sposób zamontować system plików na tym urządzeniu lub możesz użyć urządzenia dm-crypt do utworzenia innych projektów, takich jak wolumen RAID lub LVM. Tabela przeglądowa dm-crypt jest zdefiniowana w następujący sposób:

Tutaj sektor początkowy to zazwyczaj 0, rozmiar to rozmiar urządzenia w sektorach, a nazwa docelowa to nazwa, którą chcesz nadać zaszyfrowanemu urządzeniu. Tabela mapowania obiektów docelowych składa się z następujących sekcji:

[<#opt_params> ]

Krok 02: Biorąc pod uwagę LUKS

Jak już widzieliśmy w poprzednim kroku, aplikacja dm-crypt może samodzielnie szyfrować/odszyfrowywać dane. Ma jednak kilka wad - jeśli użyjesz bezpośrednio aplikacji dm-crypt, nie utworzy ona metadanych na dysku, a to może stanowić poważny problem, jeśli chcesz zapewnić kompatybilność pomiędzy różnymi dystrybucjami Linuksa. Ponadto aplikacja dm-crypt nie obsługuje używania wielu kluczy, podczas gdy w rzeczywistych sytuacjach użycie wielu kluczy jest bardzo ważne.

Z tych powodów narodziła się technika LUKS (Linux Unified Key Setup). LUKS to standard szyfrowania dysków twardych systemu Linux, a standaryzacja zapewnia zgodność między różnymi dystrybucjami. Obsługiwane jest również użycie wielu kluczy i haseł. W ramach tej standaryzacji do zaszyfrowanych danych dodawany jest nagłówek LUKS, który zawiera wszystkie informacje niezbędne do konfiguracji. Gdy pojawi się taki nagłówek z danymi, użytkownicy mogą łatwo przełączyć się na dowolną inną dystrybucję. Projekt dm-crypt obecnie zaleca używanie LUKS jako preferowanego sposobu konfiguracji szyfrowania dysku. Przyjrzyjmy się, jak zainstalować narzędzie cryptsetup i jak go używać do tworzenia woluminów opartych na LUKS.

Krok 03: Instalacja

Funkcjonalność na poziomie jądra używana w dm-crypt jest już obecna we wszystkich Dystrybucje Linuksa; potrzebujemy tylko interfejsu do nich. Wykorzystamy narzędzie cryptsetup, za pomocą którego możesz tworzyć woluminy za pomocą dm-crypt, standardu LUKS, a także starej, dobrej aplikacji TrueCrypt. Aby zainstalować cryptsetup w dystrybucjach Debian/Ubuntu, możesz użyć następujących poleceń:

$ sudo apt-get update $ sudo apt-get install cryptsetup

Pierwsze polecenie synchronizuje pliki indeksu rakiet z zawartością ich repozytoriów: otrzymuje informacje o najnowsze wersje wszystkie dostępne pakiety. Drugie polecenie pobierze i zainstaluje pakiet cryptsetup na twoim komputerze. Jeśli używasz dystrybucji RHEL/Fedora/CentOS, możesz użyć polecenia yum, aby zainstalować narzędzie cryptsetup.

$ mniam, zainstaluj cryptsetup-luks

Krok 04: Tworzenie pliku docelowego

Teraz, gdy narzędzie cryptsetup zostało pomyślnie zainstalowane, musimy utworzyć plik docelowy, w którym będzie przechowywany kontener LUKS. Choć istnieje wiele sposobów na utworzenie takiego pliku, przy jego tworzeniu należy spełnić szereg warunków:

  • Plik nie powinien składać się z kilku części znajdujących się w różnych miejscach dysku, tzn. przy jego tworzeniu należy od razu przydzielić odpowiednią ilość pamięci.
  • Cały plik musi być wypełniony losowymi danymi, aby nikt nie był w stanie określić, gdzie będą znajdować się dane użyte do szyfrowania.

Polecenie dd może pomóc nam stworzyć plik spełniający powyższe warunki, choć będzie stosunkowo powolny. Po prostu użyj go ze specjalnym plikiem urządzenia /dev/random określonym jako wejściowym i plikiem docelowym określonym jako wyjściowy. Przykładowe polecenie wygląda następująco:

$ dd if=/dev/random of=/home/nitish/basefile bs=1M liczba=128

W rezultacie w katalogu /home/nitish zostanie utworzony plik o nazwie basefile o rozmiarze 128 MB. Należy jednak pamiętać, że wykonanie tego polecenia może zająć sporo czasu; w systemie, z którego korzystał nasz ekspert, zajęło to godzinę.

Krok 05: Utwórz dm-crypt LUKS

Po utworzeniu pliku docelowego musisz utworzyć w nim partycję LUKS. Ta sekcja służy jako warstwa podstawowa, na której zbudowane jest całe szyfrowanie danych. Dodatkowo nagłówek tej sekcji (nagłówek LUKS) zawiera wszystkie informacje niezbędne do zapewnienia kompatybilności z innymi urządzeniami. Aby utworzyć partycję LUKS, użyj polecenia cryptsetup:

$ cryptsetup -y luksFormat /home/nitish/basefile

Gdy wyrazisz zgodę na trwałe usunięcie danych znajdujących się w pliku bazowym, wprowadź hasło, a następnie je zatwierdź, zostanie utworzona partycja LUKS. Możesz to sprawdzić za pomocą następującego polecenia pliku:

$plikbazypliku

Pamiętaj, że wpisane tutaj wyrażenie zostanie użyte do odszyfrowania danych. Bardzo ważne jest, aby o tym pamiętać i przechowywać go w bezpiecznym miejscu, ponieważ jeśli o tym zapomnisz, prawie na pewno utracisz wszystkie dane znajdujące się na zaszyfrowanej partycji.

Krok 06: Utwórz i zamontuj system plików

Kontener LUKS, który utworzyliśmy w poprzednim kroku, jest teraz dostępny w postaci pliku. W naszym przykładzie jest to /home/nitish/basefile. Narzędzie cryptsetup umożliwia otwarcie kontenera LUKS jako niezależnego urządzenia. Aby to zrobić, najpierw zmapuj plik kontenera na nazwę urządzenia, a następnie zamontuj urządzenie. Polecenie wyświetlania wygląda następująco:

Po pomyślnym wejściu hasło utworzony w poprzednim kroku, kontener LUKS zostanie zmapowany na nazwę wolumen1. W rzeczywistości plik jest otwierany jako lokalne urządzenie z pętlą zwrotną, dzięki czemu reszta systemu może teraz traktować plik tak, jakby był prawdziwym urządzeniem.

Krok 07: System plików – ciąg dalszy

Plik kontenera LUKS jest teraz dostępny w systemie jako zwykłe urządzenie. Zanim będziemy mogli go używać do normalnych operacji, musimy go sformatować i utworzyć na nim system plików. Możesz użyć dowolnego system plików, który jest obsługiwany w Twoim systemie. W moim przykładzie użyliśmy ext4, ponieważ jest to najnowszy system plików dla systemów Linux.

$ mkfs.ext4 -j /dev/mapper/volume1

Po pomyślnym sformatowaniu urządzenia następnym krokiem jest jego zamontowanie. Najpierw powinieneś utworzyć punkt montowania, najlepiej w /mnt (opierając się na zdrowym rozsądku).

$mkdir/mnt/pliki

Teraz zamontujmy:

Aby to sprawdzić, użyj polecenia df –h — na końcu listy zamontowanych urządzeń zobaczysz urządzenie „/dev/mapper/volume1”. Widać, że nagłówek LUKS zajmuje już trochę miejsca w urządzeniu.

Dzięki temu krokowi możesz już używać urządzenia LUKS z systemem plików ext4. Po prostu użyj tego urządzenia do przechowywania plików - wszystko, co napiszesz na tym urządzeniu, zostanie zaszyfrowane, a wszystko, co z niego przeczytasz, zostanie odszyfrowane i pokazane Ci.

Krok 08: Korzystanie z zaszyfrowanego dysku

Aby osiągnąć ten rezultat, wykonaliśmy kilka kroków i jeśli nie jesteś zbyt jasny, jak to wszystko działa, najprawdopodobniej nie będziesz wiedział, co musisz zrobić tylko raz (wymagane do instalacji), a co należy robić regularnie, gdy za pomocą szyfrowania. Rozważmy następujący scenariusz: Pomyślnie wykonałeś wszystkie powyższe kroki, a następnie wyłączyłeś komputer. Następnego dnia po uruchomieniu komputera nie możesz znaleźć zamontowanego urządzenia - gdzie się podziało? Aby to wszystko rozgryźć należy pamiętać, że po uruchomieniu systemu należy zamontować kontener LUKS, a przed zatrzymaniem komputera odmontować go.

Aby uzyskać dostęp do pliku LUKS, wykonaj następujące czynności przy każdym włączeniu komputera, a następnie bezpiecznie zamknij plik przed wyłączeniem komputera:

Otwórz plik LUKS (tj. /home/nitish/basefile) i wprowadź hasło. Polecenie wygląda następująco:

$ cryptsetup luksOpen /home/nitish/basefile wolumin1

Po otwarciu pliku zamontuj go (jeśli nie zostanie zamontowany automatycznie):

$ mount /dev/mapper/volume1 /mnt/files

Teraz możesz używać zamontowanego urządzenia jak zwykłego dysku i odczytywać lub zapisywać na nim dane.

Po zakończeniu odmontuj urządzenie w następujący sposób:

$ umount /mnt/files

Po pomyślnym odmontowaniu zamknij plik LUKS:

$cryptsetup luksZamknij wolumen 1

Krok 09: Kopia zapasowa

Większość strat danych przechowywanych w kontenerze LUKS wynika z uszkodzenia nagłówka LUKS lub gniazd kluczy. Oprócz tego, że nawet w wyniku przypadkowego przepisania pamięci nagłówka, nagłówki LUKS mogą ulec uszkodzeniu, w realne warunki Możliwe jest również, że dysk twardy ulegnie całkowitej awarii. Najlepszy sposób jest ochrona przed takimi problemami kopia zapasowa. Zobaczmy, jakie opcje tworzenia kopii zapasowych są dostępne.

Aby utworzyć kopię zapasową pliku nagłówkowego LUKS, określ parametr luksHeaderBackup w poleceniu:

$ sudo cryptsetup luksHeaderBackup /home/nitish/basefile --header-backup-file /home/nitish/backupfile

Lub, jeśli chcesz przywrócić plik z kopii zapasowej, określ parametr luksHeaderRestore w poleceniu:

$ sudo cryptsetup luksHeaderRestore /home/nitish/basefile --header-backup-file /home/nitish/backupfile

Aby sprawdzić plik nagłówkowy LUKS i upewnić się, że plik, z którym masz do czynienia, odpowiada rzeczywistemu urządzeniu LUKS, możesz użyć parametru isLuks.

$ sudo cryptsetup -v isLuks /home/nitish/basefile

Widzieliśmy już, jak wykonać kopię zapasową plików nagłówkowych LUKS, ale kopia zapasowa nagłówka LUKS w rzeczywistości nie chroni przed całkowitą awarią dysku, dlatego będziesz musiał wykonać kopię zapasową całej partycji za pomocą następującego polecenia cat:

$ cat /home/nitish/basefile > plik bazowy.img

Krok 10: Różne ustawienia

Istnieje kilka innych ustawień, które mogą być przydatne podczas korzystania z szyfrowania dm-crypt LUKS. Przyjrzyjmy się im.

Aby zrzucić nagłówek LUKS, polecenie cryptsetup ma opcję luksDump. Umożliwi to wykonanie migawki pliku nagłówkowego LUKS urządzenia, którego używasz. Przykładowe polecenie wygląda następująco:

$ cryptsetup luksDump /home/nitish/basefile

Na początku tego artykułu wspomnieliśmy, że LUKS obsługuje wiele kluczy. Zobaczmy to teraz w akcji, dodając nowe miejsce na klucz ( Uwaga tłumacza: miejsce na klucz - spacja na klucze):

$ cryptsetup luksAddKey --Key-slot 1 /home/nitish/basefile

To polecenie dodaje klucz do szczeliny na klucz nr 1, ale dopiero po wprowadzeniu bieżącego hasła (klucz znajdujący się w szczelinie na klucz 0). W sumie jest osiem miejsc na klucze i możesz odszyfrować dane za pomocą dowolnego klucza. Jeśli zrzucisz nagłówek po dodaniu drugiego klucza, zobaczysz, że drugie miejsce na klucz jest zajęte.

Możesz usunąć kluczowe gniazda w ten sposób:

$ cryptsetup luksRemoveKey /home/nitish/basefile

Spowoduje to usunięcie gniazda klucza o najwyższym numerze. Uważaj, aby nie usunąć wszystkich slotów, w przeciwnym razie Twoje dane zostaną utracone na zawsze.

: - Rosyjski

Aktywny rozwój strony został zakończony

Jeśli masz coś do dodania, uzupełnij sekcje o nowe informacje. Nasze literówki i błędy w artykule można łatwo edytować, nie ma potrzeby zgłaszania tego e-mailem, prosimy o uszanowanie stylizacja tę stronę i użyj separatorów sekcji (szare linie o różnej grubości).

Szyfrowanie danych w Debianie

Wiele osób uważa, że ​​nie ma potrzeby szyfrowania swoich danych. Jednak w życiu codziennym często spotykamy się z sytuacjami typu „zgubiono pendrive” lub „laptop w naprawie” itp. Jeśli Twoje dane są zaszyfrowane, nie musisz się tym w ogóle martwić: nikt nie opublikuje ich w Internecie ani nie wykorzysta w żaden inny sposób.

Szyfrowanie za pomocą cryptsetup

Zainstalujmy niezbędne komponenty:

# apt-get install cryptsetup

Standardowa składnia

/dev/sda2. Wprowadźmy polecenie:

# cryptsetup utwórz sda2_crypt /dev/sda2

To polecenie utworzy szyfrowane połączenie z naszym dyskiem. W katalogu /dev/mapper Pojawi się nowe urządzenie o żądanej nazwie: /dev/mapper/sda2_crypt, uzyskując dostęp do którego korzystamy z szyfrowanego dostępu do dysku. W przypadku LUKS-u będzie to nazwa /dev/mapper/sda2_crypt

Jeśli na dysku znajdował się już system plików i chcielibyśmy zapisać na nim dane, to musimy go zaszyfrować w celu późniejszego wykorzystania:

# dd if=/dev/sda2 z=/dev/mapper/sda2_crypt

Jeśli utworzysz nowy dysk na pustej partycji, możesz go sformatować:

# mkfs.ext3 /dev/mapper/sda2_crypt

Później możesz zamontować ten dysk w dowolnym miejscu:

# mount /dev/mapper/sda2_crypt /ścieżka/do/mount/punkt

Sprawdź integralność danych (jak zwykle lepiej używać tylko w stanie niezamontowanym):

# fsck.ext3 /dev/mapper/sda2_crypt

A nawet odszyfrować, jeśli nie chcemy już używać szyfrowania:

# dd if=/dev/mapper/sda2_crypt of=/dev/sda2

Składnia LUKS-a

Powyższe kroki można wykonać zgodnie ze standardem LUKS

Zainicjuj sekcję:

cryptsetup luksFormat /dev/sda2

Łączymy się z systemem:

cryptsetup luksOpen /dev/sda2 sda2_crypt

Format:

mkfs.ext4 -v -L DANE /dev/mapper/sda2_crypt

Montujemy:

zamontuj /dev/mapper/sda2_crypt /mnt/data

Partycję można ręcznie wyłączyć w systemie

cryptsetup luksZamknij sda2_crypt

Połączenie przy uruchomieniu

Plik używany do tego celu to zakładka krypt.

Dla naszego dysku napiszemy na nim następującą linię:

nano /etc/crypttab # parametry/opcje klucza urządzenia mapującego nazwy # Ze standardową składnią sda2_crypt /dev/sda2 none aes-cbc-plain:sha256 # i\lub w standardzie LUKS sda2_crypt /dev/sda2 none luks

Domyślnie szyfrowanie odbywa się przy użyciu hasła wprowadzonego przez użytkownika. Dlatego przy każdym uruchomieniu komputera system będzie pytał Cię o hasło umożliwiające połączenie każdej zaszyfrowanej partycji. Nawet jeśli te sekcje nie są zarejestrowane w fstab.

Jeżeli chcemy zamontować ręcznie to dodajemy taką opcję nieauto w polu „parametry/opcje”.

Ręczne łączenie zaszyfrowanej partycji przy użyciu danych z /etc/crypttab

cryptdisks_start msda2_crypt

I odłączenie od wstępnie zamontowanego fs.

cryptdisks_stop sda2_crypt

Aby automatycznie zamontować plik fs na podłączonej zaszyfrowanej partycji, dodaj linię do /etc/fstab

/dev/mapper/sda2_crypt /mnt/data ext4 domyślnie 0 0

Praca z kluczami w LUKS-ie

Partycja LUKS obsługuje 8 różnych kluczy, z których każdy mieści się w swoim własnym gnieździe.

Patrzymy na listę używanych kluczy

cryptsetup luksDump /dev/sda2

LUKS może używać 2 rodzajów kluczy – haseł i plików.

Możesz dodać słowo kluczowe

cryptsetup luksAddKey /dev/sda2

Możesz dodać plik klucza (2048 bitów) i ustawić do niego prawa dostępu.

dd if=/dev/urandom of=/root/ext2.key bs=512 count=4 cryptsetup luksAddKey /dev/sda2 /root/ext2.key chmod 400 /root/sda2.key cryptsetup -d /root/sda2.key luksOpen /dev/sda2 sda2_crypt

Aby połączyć się, gdy zaczynasz używać klucza, edytuj plik /etc/crypttab

nano /etc/crypttab sda2_crypt /dev/sda2 /root/sda2.key luks

Możesz usunąć hasło lub klucz z sekcji

cryptsetup luksKillSlot /dev/sda2 1

Montaż awaryjny w dystrybucji „zagranicznej”.

Nikt nie jest odporny na problemy, a czasami trzeba uzyskać dostęp do zaszyfrowanej partycji z partycji awaryjnej. Dysk LiveCD.

Uruchom, podłącz partycję do systemu i zamontuj fs:

cryptsetup luksOpen /dev/sda2 sda2_crypt mount -t ext4 /dev/mapper/sda2_crypt /mnt/backup

Po pracy odmontuj fs i odłącz zaszyfrowaną partycję od systemu

umount /mnt/backup cryptsetup luksZamknij sda2_crypt

Komunikaty o błędach podczas zamykania

Jeśli partycja główna jest zaszyfrowana, podczas zamykania zostanie wyświetlony komunikat

zatrzymanie wczesnych dysków kryptograficznych... nie powiodło się

To jest błąd techniczny. Podczas zamykania systemy plików są zawsze najpierw odmontowywane, a dopiero potem odłączana jest partycja. W rezultacie okazuje się, że narzędzie cryptsetup znajdujące się na niezamontowanej partycji głównej nie jest już dostępne do uruchomienia, o czym informuje nas INIT. Tego problemu nie da się rozwiązać bez kul, bo... Aby to zrobić, należy rozważyć opcje przeniesienia cryptsetup na dysk RAM

Podobna sytuacja ma miejsce w przypadku korzystania z programowej macierzy RAID zawierającej partycję root. 8)

Szyfrowanie za pomocą modułu Loop-aes

Szyfrowanie partycji dysku twardego lub dysku flash za pomocą hasła

W tym jak opisano metodę szyfrowania AES256, w podobny sposób można zastosować inne metody (zastępując nazwę metody odpowiednią). Będziemy potrzebować następujących pakietów:

# apt-get install pętla-aes-utils pętla-aes-modules-`uname -r`

Notatka: jeśli używasz jądra, dla którego w repozytorium nie ma wymaganych modułów pętli-aes, możesz zainstalować moduły za pomocą następujących poleceń:

# apt-get install moduł-asystent pętli-aes-source # moduł-asystent a-i pętla-aes

Etap początkowy

NA etap początkowy przygotowujemy dysk do pracy z nim przy użyciu szyfrowania.

Wybierzmy partycję dysku (lub pendrive'a), którą chcemy zaszyfrować, np. tak będzie /dev/sda2. Wprowadźmy polecenie:

# losetup -e AES256 -T /dev/loop0 /dev/sda2

Po wykonaniu tego polecenia wszystkie połączenia z urządzeniem /dev/pętla0 zostaną zaszyfrowane i zaszyfrowane przekierowane na urządzenie /dev/sda2. Teraz mamy zarówno zaszyfrowane, jak i niezaszyfrowane kanały do ​​urządzenia do przechowywania danych. Dane są szyfrowane przy użyciu hasła podanego podczas wykonywania operacji Lostup.

Teraz możemy np. sformatować urządzenie:

# mkfs.ext3 /dev/loop0

Możemy go zamontować:

# mount /dev/loop0 /ścieżka/do/mount

Szyfrowanie możemy wyłączyć:

# losetup -d /dev/loop0

i co najważniejsze, możemy zaszyfrować partycję bez utraty danych:

# dd if=/dev/sda2 z=/dev/loop0

a także odszyfrować, jeśli uznamy, że szyfrowanie nie jest naszą metodą:

# dd if=/dev/loop0 z=/dev/sda2

Najlepsze jest to, że możemy sprawdzić integralność systemu plików:

# fsck.ext3 /dev/loop0

Ta szansa Niedostępne we wszystkich metodach szyfrowania partycji.

Codzienne użytkowanie

Jeżeli posiadałeś już wpis dotyczący sekcji /dev/sda2 w twoim /etc/fstab, wystarczy dodać opcje, a jeśli nie, napisz coś takiego:

/dev/sda2 /ścieżka/do/montowania pętli ext3, szyfrowanie=AES256 0 0

Teraz podczas ładowania system operacyjny Zostaniesz poproszony o hasło do zamontowania.

Jeśli nie chcesz, aby proces pobierania był przerywany prośbą o podanie hasła, możesz dodać opcje nieauto,użytkownik zarejestrowany /etc/fstab:

/dev/sda2 /ścieżka/do/montowania pętli ext3,szyfrowanie=AES256,noauto,użytkownik 0 0

Oczywiście możesz zamontować go ręcznie (lub ze skryptu):

# mount /dev/sda2 /ścieżka/do/mount -o pętla, szyfrowanie=AES256

Montowanie wielu systemów plików

Czasami chcesz zaszyfrować kilka sekcji z danymi jednocześnie, ale żeby nie wprowadzać morza haseł dla każdej uchwyt. Na przykład masz dysk flash, który nosisz z domu do pracy, przenośny dysk twardy itp. Lub tylko kilka partycji/dysków twardych.

Załóżmy, że mamy zaszyfrowaną partycję /dev/sda2, który montujemy w katalogu przy każdym uruchomieniu /mnt1. Pojawił się nowy dysk twardy /dev/sdb1 i chcemy, aby był on automatycznie montowany w katalogu mnt2 podczas montażu pierwszego. Oczywiście, że możesz tworzyć wspólny system na czymś takim LVM możesz jednak wybrać prostszą drogę:

zarejestruj się fstab coś w rodzaju poniższej linii:

/dev/sda2 /mnt1 ext3 noatime,exec,loop,encryption=AES256 0 0 /dev/sdb1 /mnt2 ext3 noatime,exec,loop,encryption=AES256,cleartextkey=/mnt1/key.txt 0 0

Podczas ładowania system montuje punkty w kolejności opisanej w pkt fstab, zatem jeśli pierwsza partycja nie zostanie zamontowana, klucz do zamontowania drugiej partycji pozostanie niedostępny, a druga partycja również nie zostanie zamontowana.

Hasło jest przechowywane jako zwykły/tekstowy z pewnością nie jest to zbyt piękne, ale jest przechowywane na zaszyfrowanej partycji (którą można również odmontować). Możesz go zamiast tego użyć gpg-key, ale nie zwiększy to zbytnio bezpieczeństwa (jeśli uda im się ukraść klucz, to nie będzie miało większego znaczenia, jaki to będzie klucz), opcja szyfrowania z gpg- klucz jest opisany w zagubiony człowiek, tutaj podam tylko przykład wpisu w fstab:

/dev/sda2 /mnt1 ext3 noatime,exec,loop,encryption=AES256 0 0 /dev/sdb1 /mnt2 ext3 noatime,exec,loop,encryption=AES256,gpgkey=/mnt1/key.gpg 0 0

Notatki

Aby uzyskać więcej informacji na temat obsługiwanych algorytmów szyfrowania, zobacz zagubiony człowiek, tam też możesz zobaczyć opis pozostałych opcji programu przegrana.

Jeśli masz problemy z instalacją modułów AES, przeczytaj dokumentację dołączoną do pakietu źródło pętli-aes.

GRUB i zaszyfrowany dysk główny

Podczas instalowania partycji root na zaszyfrowanym dysku GRUB może wyświetlać brzydkie komunikaty w menu głównym. Dzieje się tak, ponieważ standardowa czcionka /usr/share/grub/unicode.pf2 nie jest dostępna. Kopiowanie czcionki

cp /usr/share/grub/unicode.pf2 /boot/grub/

Określ ustawienie

nano /etc/default/grub GRUB_FONT=/boot/grub/unicode.pf2

Zastosuj ustawienie:

aktualizacja-grub

TrueCrypt nie jest już obsługiwany, ale dm-crypt i LUKS to świetne opcje open source do szyfrowania i używania zaszyfrowanych danych.

Bezpieczeństwo danych stało się jedną z największych obaw użytkowników Internetu. Wiadomości o kradzieży danych ze stron internetowych stały się bardzo powszechne, ale ochrona danych to nie tylko obowiązek witryn internetowych. My, użytkownicy końcowi, możemy wiele zrobić dla własnego bezpieczeństwa. Na przykład tylko niektóre przykłady to używanie silnych haseł, szyfrowanie dysków twardych znajdujących się na naszych komputerach i korzystanie z bezpiecznych połączeń. W szczególności szyfrowanie dysku twardego to dobry sposób na zapewnienie bezpieczeństwa — nie tylko ochroni Cię przed trojanami próbującymi ukraść Twoje dane przez sieć, ale także przed atakami fizycznymi.

W maju tego roku rozwój TrueCrypt, dobrze znanego narzędzia do szyfrowania dysków typu open source, został wstrzymany. Jak wielu z Was wie, było to jedno z bardzo niezawodnych narzędzi przeznaczonych do szyfrowania dysków. To smutne, że narzędzie tego kalibru znika, ale wielkość świata open source jest taka, że ​​istnieje kilka innych narzędzi open source, które mogą pomóc w zapewnieniu bezpieczeństwa dzięki szyfrowaniu dysku i które mają również wiele opcji konfiguracyjnych. Przyjrzymy się dwóm z nich – dm-crypt i LUKS – jako alternatywą dla TrueCrypt dla platformy Linux. Zacznijmy od szybkiego spojrzenia na dm-crypt, a następnie LUKS.

To podstawowe informacje o urządzeniu korzystającym z LUKS-a, wskazujące jakie szyfrowanie jest stosowane, tryb szyfrowania, algorytm mieszający i inne dane kryptograficzne.

Zasoby

Krok 01: Biorąc pod uwagę Dm-crypt

Nazwa aplikacji dm-crypt jest skrótem od Device Mapper-crypt. Jak sama nazwa wskazuje, opiera się na mapowaniu urządzeń, frameworku jądra Linuksa zaprojektowanym do mapowania urządzeń blokowych na wirtualne urządzenia blokowe wyższego poziomu. Podczas mapowania urządzeń można korzystać z kilku funkcji jądra, takich jak dm-cache (tworzy woluminy hybrydowe), dm-verity (przeznaczony do sprawdzania integralności bloków, część systemu operacyjnego Chrome), a także bardzo popularnego Dockera. Do celów kryptograficznych dm-crypt wykorzystuje framework Crypto API jądra Linux.

Podsumowując, aplikacja dm-crypt to podsystem szyfrowania na poziomie jądra, który oferuje przezroczyste szyfrowanie dysku: oznacza to, że pliki są dostępne natychmiast po zamontowaniu dysku - nie ma widocznego opóźnienia dla użytkownika końcowego. Aby zaszyfrować za pomocą dm-crypt, możesz po prostu określić jeden z szyfrów symetrycznych, tryb szyfrowania, klucz (dowolnego prawidłowego rozmiaru), tryb generowania IV, a następnie utworzyć nowe urządzenie blokowe w /dev. Teraz każdy zapis na tym urządzeniu będzie szyfrowany, a każdy odczyt zostanie odszyfrowany. Możesz w zwykły sposób zamontować system plików na tym urządzeniu lub możesz użyć urządzenia dm-crypt do utworzenia innych projektów, takich jak wolumen RAID lub LVM. Tabela przeglądowa dm-crypt jest zdefiniowana w następujący sposób:

Tutaj sektor początkowy to zazwyczaj 0, rozmiar to rozmiar urządzenia w sektorach, a nazwa docelowa to nazwa, którą chcesz nadać zaszyfrowanemu urządzeniu. Tabela mapowania obiektów docelowych składa się z następujących sekcji:

[<#opt_params> ]

Krok 02: Biorąc pod uwagę LUKS

Jak już widzieliśmy w poprzednim kroku, aplikacja dm-crypt może samodzielnie szyfrować/odszyfrowywać dane. Ma jednak kilka wad - jeśli użyjesz bezpośrednio aplikacji dm-crypt, nie utworzy ona metadanych na dysku, a to może stanowić poważny problem, jeśli chcesz zapewnić kompatybilność pomiędzy różnymi dystrybucjami Linuksa. Ponadto aplikacja dm-crypt nie obsługuje używania wielu kluczy, podczas gdy w rzeczywistych sytuacjach użycie wielu kluczy jest bardzo ważne.

Z tych powodów narodziła się technika LUKS (Linux Unified Key Setup). LUKS to standard szyfrowania dysków twardych systemu Linux, a standaryzacja zapewnia zgodność między różnymi dystrybucjami. Obsługiwane jest również użycie wielu kluczy i haseł. W ramach tej standaryzacji do zaszyfrowanych danych dodawany jest nagłówek LUKS, który zawiera wszystkie informacje niezbędne do konfiguracji. Gdy pojawi się taki nagłówek z danymi, użytkownicy mogą łatwo przełączyć się na dowolną inną dystrybucję. Projekt dm-crypt obecnie zaleca używanie LUKS jako preferowanego sposobu konfiguracji szyfrowania dysku. Przyjrzyjmy się, jak zainstalować narzędzie cryptsetup i jak go używać do tworzenia woluminów opartych na LUKS.

Krok 03: Instalacja

Funkcjonalność na poziomie jądra używana w dm-crypt jest już obecna we wszystkich dystrybucjach Linuksa; potrzebujemy tylko interfejsu do nich. Wykorzystamy narzędzie cryptsetup, za pomocą którego możesz tworzyć woluminy za pomocą dm-crypt, standardu LUKS, a także starej, dobrej aplikacji TrueCrypt. Aby zainstalować cryptsetup w dystrybucjach Debian/Ubuntu, możesz użyć następujących poleceń:

$ sudo apt-get update $ sudo apt-get install cryptsetup

Pierwsze polecenie synchronizuje pliki indeksu rakiet z zawartością ich repozytoriów: uzyskuje informacje o najnowszych wersjach wszystkich dostępnych pakietów. Drugie polecenie pobierze i zainstaluje pakiet cryptsetup na twoim komputerze. Jeśli używasz dystrybucji RHEL/Fedora/CentOS, możesz użyć polecenia yum, aby zainstalować narzędzie cryptsetup.

$ mniam, zainstaluj cryptsetup-luks

Krok 04: Tworzenie pliku docelowego

Teraz, gdy narzędzie cryptsetup zostało pomyślnie zainstalowane, musimy utworzyć plik docelowy, w którym będzie przechowywany kontener LUKS. Choć istnieje wiele sposobów na utworzenie takiego pliku, przy jego tworzeniu należy spełnić szereg warunków:

  • Plik nie powinien składać się z kilku części znajdujących się w różnych miejscach dysku, tzn. przy jego tworzeniu należy od razu przydzielić odpowiednią ilość pamięci.
  • Cały plik musi być wypełniony losowymi danymi, aby nikt nie był w stanie określić, gdzie będą znajdować się dane użyte do szyfrowania.

Polecenie dd może pomóc nam stworzyć plik spełniający powyższe warunki, choć będzie stosunkowo powolny. Po prostu użyj go ze specjalnym plikiem urządzenia /dev/random określonym jako wejściowym i plikiem docelowym określonym jako wyjściowy. Przykładowe polecenie wygląda następująco:

$ dd if=/dev/random of=/home/nitish/basefile bs=1M liczba=128

W rezultacie w katalogu /home/nitish zostanie utworzony plik o nazwie basefile o rozmiarze 128 MB. Należy jednak pamiętać, że wykonanie tego polecenia może zająć sporo czasu; w systemie, z którego korzystał nasz ekspert, zajęło to godzinę.

Krok 05: Utwórz dm-crypt LUKS

Po utworzeniu pliku docelowego musisz utworzyć w nim partycję LUKS. Ta sekcja służy jako warstwa podstawowa, na której zbudowane jest całe szyfrowanie danych. Dodatkowo nagłówek tej sekcji (nagłówek LUKS) zawiera wszystkie informacje niezbędne do zapewnienia kompatybilności z innymi urządzeniami. Aby utworzyć partycję LUKS, użyj polecenia cryptsetup:

$ cryptsetup -y luksFormat /home/nitish/basefile

Gdy wyrazisz zgodę na trwałe usunięcie danych znajdujących się w pliku bazowym, wprowadź hasło, a następnie je zatwierdź, zostanie utworzona partycja LUKS. Możesz to sprawdzić za pomocą następującego polecenia pliku:

$plikbazypliku

Pamiętaj, że wpisane tutaj wyrażenie zostanie użyte do odszyfrowania danych. Bardzo ważne jest, aby o tym pamiętać i przechowywać go w bezpiecznym miejscu, ponieważ jeśli o tym zapomnisz, prawie na pewno utracisz wszystkie dane znajdujące się na zaszyfrowanej partycji.

Krok 06: Utwórz i zamontuj system plików

Kontener LUKS, który utworzyliśmy w poprzednim kroku, jest teraz dostępny w postaci pliku. W naszym przykładzie jest to /home/nitish/basefile. Narzędzie cryptsetup umożliwia otwarcie kontenera LUKS jako niezależnego urządzenia. Aby to zrobić, najpierw zmapuj plik kontenera na nazwę urządzenia, a następnie zamontuj urządzenie. Polecenie wyświetlania wygląda następująco:

Po pomyślnym wprowadzeniu hasła utworzonego w poprzednim kroku kontener LUKS zostanie zmapowany na wolumin 1. W rzeczywistości plik jest otwierany jako lokalne urządzenie z pętlą zwrotną, dzięki czemu reszta systemu może teraz traktować plik tak, jakby był prawdziwym urządzeniem.

Krok 07: System plików – ciąg dalszy

Plik kontenera LUKS jest teraz dostępny w systemie jako zwykłe urządzenie. Zanim będziemy mogli go używać do normalnych operacji, musimy go sformatować i utworzyć na nim system plików. Możesz użyć dowolnego systemu plików obsługiwanego w twoim systemie. W moim przykładzie użyliśmy ext4, ponieważ jest to najnowszy system plików dla systemów Linux.

$ mkfs.ext4 -j /dev/mapper/volume1

Po pomyślnym sformatowaniu urządzenia następnym krokiem jest jego zamontowanie. Najpierw powinieneś utworzyć punkt montowania, najlepiej w /mnt (opierając się na zdrowym rozsądku).

$mkdir/mnt/pliki

Teraz zamontujmy:

Aby to sprawdzić, użyj polecenia df –h — na końcu listy zamontowanych urządzeń zobaczysz urządzenie „/dev/mapper/volume1”. Widać, że nagłówek LUKS zajmuje już trochę miejsca w urządzeniu.

Dzięki temu krokowi możesz już używać urządzenia LUKS z systemem plików ext4. Po prostu użyj tego urządzenia do przechowywania plików - wszystko, co napiszesz na tym urządzeniu, zostanie zaszyfrowane, a wszystko, co z niego przeczytasz, zostanie odszyfrowane i pokazane Ci.

Krok 08: Korzystanie z zaszyfrowanego dysku

Aby osiągnąć ten rezultat, wykonaliśmy kilka kroków i jeśli nie jesteś zbyt jasny, jak to wszystko działa, najprawdopodobniej nie będziesz wiedział, co musisz zrobić tylko raz (wymagane do instalacji), a co należy robić regularnie, gdy za pomocą szyfrowania. Rozważmy następujący scenariusz: Pomyślnie wykonałeś wszystkie powyższe kroki, a następnie wyłączyłeś komputer. Następnego dnia po uruchomieniu komputera nie możesz znaleźć zamontowanego urządzenia - gdzie się podziało? Aby to wszystko rozgryźć należy pamiętać, że po uruchomieniu systemu należy zamontować kontener LUKS, a przed zatrzymaniem komputera odmontować go.

Aby uzyskać dostęp do pliku LUKS, wykonaj następujące czynności przy każdym włączeniu komputera, a następnie bezpiecznie zamknij plik przed wyłączeniem komputera:

Otwórz plik LUKS (tj. /home/nitish/basefile) i wprowadź hasło. Polecenie wygląda następująco:

$ cryptsetup luksOpen /home/nitish/basefile wolumin1

Po otwarciu pliku zamontuj go (jeśli nie zostanie zamontowany automatycznie):

$ mount /dev/mapper/volume1 /mnt/files

Teraz możesz używać zamontowanego urządzenia jak zwykłego dysku i odczytywać lub zapisywać na nim dane.

Po zakończeniu odmontuj urządzenie w następujący sposób:

$ umount /mnt/files

Po pomyślnym odmontowaniu zamknij plik LUKS:

$cryptsetup luksZamknij wolumen 1

Krok 09: Kopia zapasowa

Większość strat danych przechowywanych w kontenerze LUKS wynika z uszkodzenia nagłówka LUKS lub gniazd kluczy. Oprócz tego, że nawet w wyniku przypadkowego przepisania nagłówka do pamięci, nagłówki LUKS mogą ulec uszkodzeniu, w rzeczywistych warunkach możliwa jest także całkowita awaria dysku twardego. Najlepszym sposobem zabezpieczenia się przed takimi problemami jest posiadanie kopii zapasowej. Zobaczmy, jakie opcje tworzenia kopii zapasowych są dostępne.

Aby utworzyć kopię zapasową pliku nagłówkowego LUKS, określ parametr luksHeaderBackup w poleceniu:

$ sudo cryptsetup luksHeaderBackup /home/nitish/basefile --header-backup-file /home/nitish/backupfile

Lub, jeśli chcesz przywrócić plik z kopii zapasowej, określ parametr luksHeaderRestore w poleceniu:

$ sudo cryptsetup luksHeaderRestore /home/nitish/basefile --header-backup-file /home/nitish/backupfile

Aby sprawdzić plik nagłówkowy LUKS i upewnić się, że plik, z którym masz do czynienia, odpowiada rzeczywistemu urządzeniu LUKS, możesz użyć parametru isLuks.

$ sudo cryptsetup -v isLuks /home/nitish/basefile

Widzieliśmy już, jak wykonać kopię zapasową plików nagłówkowych LUKS, ale kopia zapasowa nagłówka LUKS w rzeczywistości nie chroni przed całkowitą awarią dysku, dlatego będziesz musiał wykonać kopię zapasową całej partycji za pomocą następującego polecenia cat:

$ cat /home/nitish/basefile > plik bazowy.img

Krok 10: Różne ustawienia

Istnieje kilka innych ustawień, które mogą być przydatne podczas korzystania z szyfrowania dm-crypt LUKS. Przyjrzyjmy się im.

Aby zrzucić nagłówek LUKS, polecenie cryptsetup ma opcję luksDump. Umożliwi to wykonanie migawki pliku nagłówkowego LUKS urządzenia, którego używasz. Przykładowe polecenie wygląda następująco:

$ cryptsetup luksDump /home/nitish/basefile

Na początku tego artykułu wspomnieliśmy, że LUKS obsługuje wiele kluczy. Zobaczmy to teraz w akcji, dodając nowe miejsce na klucz ( Uwaga tłumacza: miejsce na klucz - spacja na klucze):

$ cryptsetup luksAddKey --Key-slot 1 /home/nitish/basefile

To polecenie dodaje klucz do szczeliny na klucz nr 1, ale dopiero po wprowadzeniu bieżącego hasła (klucz znajdujący się w szczelinie na klucz 0). W sumie jest osiem miejsc na klucze i możesz odszyfrować dane za pomocą dowolnego klucza. Jeśli zrzucisz nagłówek po dodaniu drugiego klucza, zobaczysz, że drugie miejsce na klucz jest zajęte.

Możesz usunąć kluczowe gniazda w ten sposób:

$ cryptsetup luksRemoveKey /home/nitish/basefile

Spowoduje to usunięcie gniazda klucza o najwyższym numerze. Uważaj, aby nie usunąć wszystkich slotów, w przeciwnym razie Twoje dane zostaną utracone na zawsze.

Istnieje wiele powodów, dla których warto szyfrować dane na dysku twardym, ale ceną za bezpieczeństwo danych będzie zmniejszenie szybkości systemu. Celem tego artykułu jest porównanie wydajności podczas pracy z dyskiem zaszyfrowanym różnymi sposobami.

Aby różnica była bardziej dramatyczna, nie wybraliśmy supernowoczesnego samochodu, ale przeciętny samochód. Zwykły mechaniczny dysk twardy 500 GB, dwurdzeniowy AMD 2,2 GHz, 4 gigabajty RAM, 64-bitowy Windows 7 SP 1. Podczas testu nie będą uruchamiane żadne programy antywirusowe ani inne programy, aby nic nie mogło wpłynąć na wyniki.

Wybrałem CrystalDiskMark do oceny wydajności. Jeśli chodzi o testowane przeze mnie narzędzia szyfrujące, zdecydowałem się na następującą listę: BitLocker, TrueCrypt, VeraCrypt, CipherShed, Symantec Endpoint Encryption i CyberSafe Top Secret.

Funkcja BitLocker

Jest to standardowa funkcja szyfrowania dysku wbudowana w system Microsoft Windows. Wiele osób po prostu używa go bez instalowania programów innych firm. Rzeczywiście, po co, skoro wszystko jest już w systemie? Z jednej strony to prawda. Z drugiej strony kod jest zamknięty i nie ma pewności, że nie zawierał backdoorów dla FBI i innych zainteresowanych stron.

Szyfrowanie dysku odbywa się przy użyciu algorytmu AES o długości klucza 128 lub 256 bitów. Klucz można przechowywać w module Trusted Platform, na samym komputerze lub na dysku flash.

Jeśli używany jest moduł TPM, to po uruchomieniu komputera klucz można uzyskać od niego natychmiast lub po uwierzytelnieniu. Możesz zalogować się za pomocą klucza na pendrive'ie lub wpisując kod PIN z klawiatury. Kombinacje tych metod dają wiele możliwości ograniczania dostępu: po prostu TPM, TPM i USB, TPM i PIN lub wszystkie trzy na raz.

BitLocker ma dwie niezaprzeczalne zalety: po pierwsze, można nim sterować zasady grupowe; Po drugie, szyfruje woluminy, a nie dyski fizyczne. Umożliwia to zaszyfrowanie szeregu wielu dysków, czego nie mogą zrobić niektóre inne narzędzia szyfrujące. BitLocker obsługuje także tablicę partycji GUID (GPT), czym nie może pochwalić się nawet najbardziej zaawansowany fork Trucrypt VeraCrypt. Aby zaszyfrować nim systemowy dysk GPT, musisz najpierw przekonwertować go na format MBR. Nie jest to wymagane w przypadku funkcji BitLocker.

Ogólnie rzecz biorąc, jest tylko jedna wada - zamknięte źródło. Jeśli ukrywasz tajemnice przed domownikami, funkcja BitLocker jest idealna. Jeśli twój dysk jest pełen dokumentów o znaczeniu krajowym, lepiej znaleźć coś innego.

Czy można odszyfrować BitLocker i TrueCrypt

Jeśli zapytasz Google, znajdzie interesujący program o nazwie Elcomsoft Forensic Disk Decryptor, odpowiedni do odszyfrowywania dysków BitLocker, TrueCrypt i PGP. W ramach tego artykułu nie będę go testował, ale podzielę się wrażeniami z innego narzędzia firmy Elcomsoft, a mianowicie Advanced EFS Data Recovery. Doskonale odszyfrował foldery EFS, ale pod warunkiem, że hasło użytkownika nie zostało ustawione. Jeśli ustawisz hasło na nawet 1234, program będzie bezsilny. W każdym razie nie udało mi się odszyfrować zaszyfrowanego folderu EFS należącego do użytkownika z hasłem 111. Myślę, że sytuacja będzie taka sama w przypadku produktu Forensic Disk Decryptor.

TrueCrypt

To legendarny program do szyfrowania dysku, który został wycofany w 2012 roku. Historia, która przydarzyła się TrueCrypt, jest wciąż spowita ciemnością i nikt tak naprawdę nie wie, dlaczego twórca zdecydował się odmówić wsparcia dla swojego pomysłu.

Istnieją jedynie ziarenka informacji, które nie pozwalają nam ułożyć układanki w całość. Dlatego w 2013 roku rozpoczęto zbiórkę pieniędzy w celu przeprowadzenia niezależnego audytu TrueCrypt. Powodem była informacja otrzymana od Edwarda Snowdena o celowym osłabianiu narzędzi szyfrujących TrueCrypt. Na audycję zebrano ponad 60 tysięcy dolarów. Na początku kwietnia 2015 roku prace zakończono, ale nie zidentyfikowano żadnych poważnych błędów, podatności ani innych istotnych usterek w architekturze aplikacji.

Zaraz po zakończeniu audytu TrueCrypt ponownie znalazł się w centrum skandalu. Specjaliści firmy ESET opublikowali raport, że rosyjska wersja TrueCrypt 7.1a, pobrana z truecrypt.ru, zawierała złośliwe oprogramowanie. Co więcej, sama strona truecrypt.ru służyła jako centrum dowodzenia - wysyłano z niej polecenia do zainfekowanych komputerów. Generalnie należy zachować czujność i nie pobierać programów znikąd.

Do zalet TrueCrypt należy open source, którego niezawodność jest teraz wspierana przez niezależny audyt, oraz obsługa dynamicznych woluminów Windows. Wady: program nie jest już rozwijany, a programiści nie mieli czasu na wdrożenie obsługi UEFI/GPT. Ale jeśli celem jest zaszyfrowanie jednego dysku niesystemowego, nie ma to znaczenia.

W przeciwieństwie do BitLockera, który obsługuje tylko AES, TrueCrypt zawiera także Serpent i Twofish. Do wygenerowania kluczy szyfrujących, klucza soli i nagłówka program umożliwia wybranie jednej z trzech funkcji skrótu: HMAC-RIPEMD-160, HMAC-Whirlpool, HMAC-SHA-512. Jednak o TrueCrypt napisano już wiele, więc nie będziemy tego powtarzać.

VeraCrypt

Najbardziej zaawansowany klon TrueCrypt. Ma swój własny format, chociaż ma możliwość pracy w trybie TrueCrypt, który obsługuje dyski zaszyfrowane i wirtualne w formacie TrueCrypt. W przeciwieństwie do CipherShed, VeraCrypt można zainstalować na tym samym komputerze w tym samym czasie co TrueCrypt.

INFORMACJE

Po przejściu na emeryturę TrueCrypt pozostawił po sobie bogatą spuściznę: ma wiele forków, zaczynając od VeraCrypt, CipherShed i DiskCryptor.

TrueCrypt wykorzystuje 1000 iteracji do wygenerowania klucza, który zaszyfruje partycję systemową, podczas gdy VeraCrypt wykorzystuje 327 661 iteracji. W przypadku partycji standardowych (niesystemowych) VeraCrypt wykorzystuje 655 331 iteracji dla funkcji skrótu RIPEMD-160 i 500 000 iteracji dla SHA-2 i Whirlpool. Dzięki temu zaszyfrowane partycje są znacznie bardziej odporne na ataki typu brute-force, ale jednocześnie znacząco zmniejszają wydajność pracy z taką partycją. Jak istotne, przekonamy się wkrótce.

Do zalet VeraCrypt należy jego otwarty kod źródłowy, a także własny i bezpieczniejszy format dysków wirtualnych i zaszyfrowanych w porównaniu do TrueCrypt. Wady są takie same jak w przypadku przodka – brak wsparcia UEFI/GPT. Nadal nie da się zaszyfrować systemowego dysku GPT, ale programiści twierdzą, że pracują nad tym problemem i takie szyfrowanie będzie wkrótce dostępne. Ale pracują nad tym już od dwóch lat (od 2014 r.) i nie wiadomo jeszcze, kiedy pojawi się wydanie ze wsparciem GPT i czy w ogóle takie powstanie.

Szopka Szyfrów

Kolejny klon TrueCrypt. W przeciwieństwie do VeraCrypt wykorzystuje natywny format TrueCrypt, więc można oczekiwać, że jego wydajność będzie zbliżona do wydajności TrueCrypt.

Zalety i wady są nadal takie same, choć do wad można dodać niemożność zainstalowania TrueCrypt i CipherShed na tym samym komputerze. Co więcej, jeśli spróbujesz zainstalować CipherShed na komputerze, na którym jest już zainstalowany TrueCrypt, instalator zaproponuje usunięcie poprzedniego programu, ale nie poradzi sobie z tym zadaniem.

Szyfrowanie punktu końcowego Symantec

W 2010 roku Symantec kupił prawa do programu PGPdisk. W rezultacie powstały produkty takie jak PGP Desktop, a następnie Endpoint Encryption. To właśnie rozważymy. Program oczywiście jest autorski, źródła są zamknięte, a jedna licencja kosztuje 64 euro. Istnieje jednak obsługa GPT, ale tylko począwszy od systemu Windows 8.

Innymi słowy, jeśli potrzebujesz obsługi GPT i chcesz szyfrować partycja systemowa, będziesz musiał wybrać pomiędzy dwoma zastrzeżonymi rozwiązaniami: BitLocker i Endpoint Encryption. Jest oczywiście mało prawdopodobne, aby użytkownik domowy zainstalował Endpoint Encryption. Problem polega na tym, że wymaga to programu Symantec Drive Encryption, który do zainstalowania wymaga agenta i serwera zarządzania Symantec Endpoint Encryption (SEE), a serwer chce także zainstalować IIS 6.0. Czy to nie dużo, jak na jeden program do szyfrowania dysku? Przeszliśmy przez to wszystko, aby zmierzyć wydajność.

Chwila prawdy

Przejdźmy zatem do przyjemniejszej części, czyli testowania. Pierwszym krokiem jest sprawdzenie wydajności dysku bez szyfrowania. Naszą „ofiarą” będzie partycja dysku twardego o pojemności 28 GB (zwykła, nie SSD), sformatowana jako NTFS.

Otwórz CrystalDiskMark, wybierz liczbę przebiegów, rozmiar pliku tymczasowego (we wszystkich testach wykorzystamy 1 GB) i sam dysk. Warto zaznaczyć, że ilość podań praktycznie nie ma wpływu na wyniki. Pierwszy zrzut ekranu przedstawia wyniki pomiaru wydajności dysku bez szyfrowania przy liczbie przebiegów 5, drugi - przy liczbie przebiegów 3. Jak widać wyniki są prawie identyczne, więc skupimy się na trzech przebiegach.


Wyniki CrystalDiskMark należy interpretować w następujący sposób:

  • Seq Q32T1 - test zapisu sekwencyjnego / odczytu sekwencyjnego, liczba kolejek - 32, wątków - 1;
  • 4K Q32T1 - test losowego zapisu / losowego odczytu (rozmiar bloku 4 KB, liczba kolejek - 32, wątków - 1);
  • Seq - test zapisu sekwencyjnego/odczytu sekwencyjnego;
  • 4K - test losowego zapisu / losowego odczytu (rozmiar bloku 4 KB);

Zacznijmy od funkcji BitLocker. Zaszyfrowanie partycji o wielkości 28 GB zajęło 19 minut.

Dalszy ciąg artykułu dostępny jest wyłącznie dla subskrybentów

Opcja 1. Zapisz się do Hackera, aby przeczytać wszystkie artykuły na stronie

Subskrypcja umożliwi Ci czytanie WSZYSTKICH płatnych materiałów w serwisie, w tym tego artykułu, przez określony czas.

Akceptujemy płatności kartami bankowymi, pieniędzmi elektronicznymi oraz przelewami z rachunków operatorów komórkowych.

Pierwszą „linią obrony” jest hasło logowania, które jest wymagane przy każdym włączeniu komputera.


Kolejnym poziomem ochrony są prawa dostępu na poziomie systemu plików. Użytkownik, który nie ma uprawnień, otrzyma błąd podczas próby uzyskania dostępu do plików.


Opisane metody mają jednak jedną niezwykle istotną wadę. Obydwa działają na poziomie systemu operacyjnego i można je stosunkowo łatwo ominąć, jeśli masz trochę czasu i fizyczny dostęp do komputera (na przykład uruchamiając komputer z dysku flash USB, możesz zresetować hasło administracyjne lub zmienić uprawnienia do plików). Całkowitą pewność co do bezpieczeństwa i poufności danych można uzyskać tylko wtedy, gdy skorzysta się z osiągnięć kryptografii i będzie z nich bezpiecznie korzystać. Poniżej przyjrzymy się dwóm metodom takiej ochrony.

Pierwszą metodą rozważaną dzisiaj będzie wbudowana ochrona kryptograficzna Microsoftu. Szyfrowanie, zwane funkcją BitLocker, pojawiło się po raz pierwszy w systemie Windows 8. Nie można go użyć do zabezpieczenia pojedynczego folderu lub pliku; dostępne jest jedynie szyfrowanie całego dysku. Oznacza to w szczególności brak możliwości zaszyfrowania dysku systemowego (system nie będzie mógł się uruchomić), a także przechowywania ważnych danych w bibliotekach systemowych typu „Moje Dokumenty” (domyślnie są one znajdują się na partycji systemowej).
Aby włączyć wbudowane szyfrowanie, wykonaj następujące czynności:

DiskCryptor

Drugim recenzowanym dzisiaj narzędziem kryptograficznym jest DiskCryptor, bezpłatne rozwiązanie o otwartym kodzie źródłowym. Aby z niego skorzystać, postępuj zgodnie z poniższą instrukcją:

Niewątpliwą zaletą tego narzędzia w porównaniu z mechanizmem BitLocker jest to, że można go używać na systemach wydanych przed Windows 8 (obsługiwany jest nawet Windows XP, który został wycofany). Ale DiskCryptor ma również kilka istotnych wad:

  • nie ma możliwości przywrócenia dostępu do zaszyfrowanych informacji (jeśli zapomnisz hasła, masz gwarancję utraty danych);
  • Obsługiwane jest tylko odblokowywanie haseł; nie jest możliwe użycie kart inteligentnych ani czujników biometrycznych;
  • Być może największą wadą korzystania z DiskCryptor jest to, że osoba atakująca mająca dostęp administracyjny do systemu będzie mogła sformatować dysk przy użyciu standardowych środków. Tak, on nie uzyska dostępu do danych, ale Ty też je stracisz.

Podsumowując, mogę powiedzieć, że jeśli na komputerze jest zainstalowany system operacyjny począwszy od Windows 8, lepiej skorzystać z wbudowanej funkcjonalności.

Niniejsza dokumentacja została zarchiwizowana i nie jest już prowadzona.

Zrozumienie szyfrowania dysków funkcją BitLocker

Zamiar: Serwer Windows 2008, Windows Server 2008 R2, Windows Vista

Szyfrowanie dysków funkcją BitLocker to funkcja ochrony danych dostępna w systemie Windows Server 2008 R2 i niektórych wersjach systemu Windows 7. Zintegrowanie funkcji BitLocker z systemem operacyjnym zapobiega ryzyku kradzieży danych lub luki w zabezpieczeniach, chroniąc przed zagubieniem, kradzieżą lub niewłaściwą likwidacją komputerów.

Dane na zagubionym lub skradzionym komputerze są podatne na nieautoryzowany dostęp za pomocą narzędzia hakerskiego lub poprzez podłączenie dysku twardego komputera do innego komputera. Szyfrowanie funkcją BitLocker pomaga zapobiegać nieautoryzowanemu dostępowi do danych, zwiększając ochronę plików i systemu. Szyfrowanie funkcją BitLocker pomaga również chronić dane, gdy komputery chronione funkcją BitLocker zostaną wycofane z użytku lub ponownie użyte.

Szyfrowanie funkcją BitLocker zapewnia maksymalne bezpieczeństwo w przypadku korzystania z modułu Trusted Platform Module (TPM) w wersji 1.2. Moduł TPM to komponent sprzętowy instalowany w wielu nowoczesnych komputerach przez ich producentów. Działa w połączeniu z szyfrowaniem funkcją BitLocker, aby chronić dane użytkownika i zapewnić, że komputer nie został naruszony, gdy system jest wyłączony.

Na komputerach bez zainstalowanego modułu TPM 1.2 do szyfrowania dysku z systemem operacyjnym można nadal używać szyfrowania funkcją BitLocker. Systemy Windows. Jednak ta implementacja wymagałaby od użytkownika włożenia klucza startowego USB w celu uruchomienia komputera lub wybudzenia go z trybu uśpienia i nie zapewnia sprawdzania integralności systemu przed uruchomieniem zapewnianego przez szyfrowanie funkcją BitLocker TPM.

Oprócz modułu TPM szyfrowanie funkcją BitLocker umożliwia blokowanie normalnego procesu uruchamiania do czasu wprowadzenia przez użytkownika osobistego numeru identyfikacyjnego (PIN) lub podłączenia urządzenia wymiennego, takiego jak dysk flash USB, zawierającego klucz startowy. Te dodatkowe środki bezpieczeństwa zapewniają uwierzytelnianie wieloskładnikowe i zapewniają, że komputer nie uruchomi się ani nie wybudzi, dopóki nie zostanie podany prawidłowy kod PIN lub klucz uruchamiania.

Kontrola integralności systemu

Szyfrowanie funkcją BitLocker może wykorzystywać moduł Trusted Platform Module do sprawdzania integralności komponentów rozruchowych i danych konfiguracji rozruchu. Dzięki temu w przypadku korzystania z szyfrowania funkcją BitLocker zaszyfrowany dysk będzie dostępny tylko pod warunkiem, że elementy te nie zostały naruszone, a zaszyfrowany dysk jest zainstalowany na oryginalnym komputerze.

Szyfrowanie funkcją BitLocker pomaga zapewnić integralność procesu uruchamiania, wykonując następujące czynności:

  • Zapewnienie sposobu sprawdzenia integralności pliku root i plików używanych podczas wczesnych etapów rozruchu oraz upewnienia się, że nie ma w tych plikach żadnych wrogich zmian, które mogłyby zostać wprowadzone na przykład przez wirusy sektory rozruchowe lub środki do edycji ładowanych komponentów.
  • Poprawiona ochrona przed atakami oprogramowania, gdy komputer jest offline. Żadne alternatywne oprogramowanie, które może uruchomić system, nie będzie miało dostępu do kluczy szyfrowania dysku systemu operacyjnego Windows.
  • System blokuje się podczas zastępowania pliku. Jeśli którykolwiek z monitorowanych plików został zastąpiony, system nie uruchomi się. Poinformuje to użytkownika o konieczności wymiany, ponieważ system nie będzie mógł normalnie uruchomić się. Jeśli Twój system jest zablokowany, szyfrowanie funkcją BitLocker zapewnia prosty proces odzyskiwania.

    Wymagania sprzętowe, sprzętowe i programowe

    Aby móc korzystać z funkcji BitLocker, komputer musi spełniać określone wymagania.

    • Aby funkcja BitLocker mogła korzystać z możliwości weryfikacji integralności systemu zapewnianej przez moduł Trusted Platform Module, na komputerze musi być zainstalowana wersja 1.2 modułu. Jeśli na komputerze nie jest zainstalowany moduł TPM, po włączeniu szyfrowania funkcją BitLocker konieczne będzie przechowywanie klucza uruchamiania na urządzeniu wymiennym, takim jak dysk flash USB.
    • Komputer z modułem TPM musi także mieć system BIOS zgodny ze specyfikacjami Trusted Computing Group (TCG). BIOS tworzy łańcuch zaufania dla działań przed uruchomieniem systemu operacyjnego i musi obejmować obsługę statycznego obiektu pomiaru zaufania głównego zdefiniowanego przez TCG. W przypadku komputera bez modułu TPM BIOS nie musi być zgodny ze specyfikacjami TCG.
    • System BIOS (dla komputerów z modułem TPM lub bez niego) musi obsługiwać klasę urządzeń pamięci masowej USB, w tym odczytywać małe pliki z urządzenia pamięci flash USB w środowisku startowym przed systemem operacyjnym. Więcej informacji na temat USB można znaleźć w specyfikacji urządzenia pamięci masowej. Urządzenia USB i polecenia dotyczące urządzeń pamięci masowej UFI w witrynie USB (http://go.microsoft.com/fwlink/?LinkId=83120).
    • Dysk twardy należy podzielić na co najmniej dwa dyski.
      • Dysk systemu operacyjnego (lub dysk rozruchowy) zawiera system operacyjny i pliki potrzebne do jego uruchomienia i musi być sformatowany w systemie plików NTFS.
      • Na dysku systemowym znajdują się pliki potrzebne do uruchomienia systemu Windows po uruchomieniu platformy przez BIOS. Szyfrowanie funkcją BitLocker nie jest włączone dla tego dysku. Aby szyfrowanie funkcją BitLocker działało, dysk systemowy nie może być szyfrowany, nie może być woluminem systemu operacyjnego i musi być sformatowany jako plik systemu NTFS. Pojemność dysku systemowego musi wynosić co najmniej 1,5 gigabajta (GB).

    Instalacja i inicjalizacja

    Szyfrowanie funkcją BitLocker jest instalowane automatycznie w ramach instalacji systemu operacyjnego. Jednak szyfrowanie funkcją BitLocker nie jest dostępne, dopóki nie zostanie włączone za pomocą Kreatora instalacji funkcji BitLocker, który można uruchomić z Panelu sterowania lub klikając prawym przyciskiem myszy dysk w Eksploratorze plików.

    W dowolnym momencie po zainstalowaniu i wstępnej konfiguracji systemu operacyjnego administrator może użyć Kreatora instalacji funkcji BitLocker w celu zainicjowania szyfrowania funkcją BitLocker. Proces inicjalizacji składa się z dwóch etapów:

    1. Na komputerach wyposażonych w moduł TPM zainicjuj go za pomocą Kreatora instalacji modułu TPM, składnika Panelu sterowania Szyfrowanie dysków funkcją BitLocker lub wykonując skrypt przeznaczony do inicjowania modułu.
    2. Skonfiguruj szyfrowanie funkcją BitLocker. W Panelu sterowania otwórz Kreatora instalacji funkcji BitLocker, który przeprowadzi Cię przez proces instalacji i umożliwi skonfigurowanie dodatkowych opcji uwierzytelniania.

    Po zainicjowaniu szyfrowania funkcją BitLocker administrator lokalny Powinieneś także utworzyć hasło odzyskiwania i klucz odzyskiwania. Bez hasła odzyskiwania lub klucza odzyskiwania wszystkie dane na zaszyfrowanym dysku mogą być niedostępne, jeśli wystąpi problem z dyskiem chronionym funkcją BitLocker.

    Szczegółowe informacje na temat konfigurowania i wdrażania szyfrowania funkcją BitLocker można znaleźć w przewodniku dotyczącym szyfrowania dysków funkcją BitLocker w systemie Windows (http://go.microsoft.com/fwlink/?LinkID=140225).

    Wdrożenie korporacyjne

    Szyfrowanie funkcją BitLocker może wykorzystywać istniejącą infrastrukturę usług domenowych Aktywny katalog(AD DS) organizacja do zdalnego przechowywania kluczy odzyskiwania. Szyfrowanie funkcją BitLocker zapewnia kreatora konfiguracji i zarządzania, a także możliwości rozszerzania i zarządzania za pośrednictwem skryptowego interfejsu WMI. Ponadto szyfrowanie funkcją BitLocker zapewnia konsolę odzyskiwania wbudowaną w proces rozruchu, aby umożliwić użytkownikowi lub personelowi pomocy technicznej odzyskanie dostępu do zablokowanego komputera.

    Aby uzyskać więcej informacji na temat pisania skryptów do szyfrowania funkcją BitLocker, zobacz Win32_EncryptableVolume (http://go.microsoft.com/fwlink/?LinkId=85983).

    Likwidacja i ponowne użycie komputera

    Adnotacja

    Wbrew powszechnemu przekonaniu, pamięć DRAM, stosowana w większości nowoczesnych komputerów, przechowuje dane nawet po wyłączeniu zasilania na kilka sekund lub minut i dzieje się to w temperaturze pokojowej i nawet po wyjęciu chipa z płyty głównej. Ten czas wystarczy, aby zrobić całkowity zrzut BARAN. Pokażemy, że zjawisko to umożliwia atakującemu posiadającemu fizyczny dostęp do systemu ominięcie funkcji systemu operacyjnego w celu ochrony danych klucza kryptograficznego. Pokażemy, jak można wykorzystać ponowne uruchomienie do skutecznego ataku na znane systemy szyfrowania dysku twardego bez użycia specjalistycznego sprzętu lub materiałów. Określimy eksperymentalnie stopień i prawdopodobieństwo zachowania namagnesowania szczątkowego i pokażemy, że czas, dla którego można zbierać dane, można znacznie wydłużyć za pomocą prostych technik. Zaproponowane zostaną także nowe metody wyszukiwania kluczy kryptograficznych w zrzutach pamięci i korygowania błędów związanych z utratą bitów. Omówionych zostanie również kilka sposobów ograniczenia tego ryzyka, ale nie znamy prostego rozwiązania.

    Wstęp

    Większość ekspertów zakłada, że ​​dane z pamięci RAM komputera są usuwane niemal natychmiast po wyłączeniu zasilania, lub uważa, że ​​odzyskanie pozostałych danych bez użycia specjalnego sprzętu jest niezwykle trudne. Pokażemy, że założenia te są błędne. Konwencjonalna pamięć DRAM traci dane stopniowo w ciągu kilku sekund, nawet w normalnej temperaturze, i nawet jeśli układ pamięci zostanie wyjęty z płyty głównej, dane pozostaną w nim przez minuty, a nawet godziny, pod warunkiem, że układ będzie przechowywany w niskich temperaturach. Dane resztkowe można odzyskać za pomocą prostych metod, które wymagają krótkoterminowości dostęp fizyczny do komputera.

    Pokażemy serię ataków, które wykorzystując efekty remanencji pamięci DRAM pozwolą nam odzyskać klucze szyfrujące zapisane w pamięci. Stanowi to realne zagrożenie dla użytkowników laptopów, którzy polegają na systemach szyfrowania dysków twardych. Przecież jeśli atakujący ukradnie laptopa, gdy zaszyfrowany dysk jest podłączony, będzie mógł przeprowadzić jeden z naszych ataków, aby uzyskać dostęp do zawartości, nawet jeśli sam laptop jest zablokowany lub znajduje się w trybie uśpienia. Zademonstrujemy to, skutecznie atakując kilka popularnych systemów szyfrowania, takich jak BitLocker, TrueCrypt i FileVault. Ataki te powinny być również skuteczne przeciwko innym systemom szyfrowania.

    Chociaż skupiliśmy nasze wysiłki na systemach szyfrowania dyski twarde w przypadku fizycznego dostępu do komputera atakującego, wszelkie ważne informacje przechowywane w pamięci RAM mogą stać się celem ataku. Jest prawdopodobne, że wiele innych systemów bezpieczeństwa również jest podatnych na ataki. Na przykład odkryliśmy, że Mac OS X pozostawia hasła do kont w pamięci, skąd mogliśmy je odzyskać, a także przeprowadziliśmy ataki mające na celu uzyskanie prywatnych kluczy RSA serwera WWW Apache.

    Chociaż niektórzy przedstawiciele społeczności zajmujących się bezpieczeństwem informacji i fizyką półprzewodników byli już świadomi efektu remanencji w pamięci DRAM, było na ten temat bardzo mało informacji. W rezultacie wiele osób projektujących, rozwijających lub korzystających z systemów bezpieczeństwa po prostu nie jest zaznajomionych z tym zjawiskiem i tym, jak łatwo może zostać wykorzystane przez osobę atakującą. Według naszej najlepszej wiedzy jest to pierwsza szczegółowa praca badająca konsekwencje tych zjawisk dla bezpieczeństwa informacji.

    Ataki na zaszyfrowane dyski

    Szyfrowanie dysków twardych jest dobrze znaną metodą ochrony przed kradzieżą danych. Wiele osób wierzy, że systemy szyfrowania dysków twardych ochronią ich dane, nawet jeśli osoba atakująca uzyska fizyczny dostęp do komputera (właściwie po to są, przyp. red.). Prawo stanu Kalifornia uchwalone w 2002 r. wymaga raportowania możliwe przypadki ujawnienie danych osobowych tylko wtedy, gdy dane nie zostały zaszyfrowane, ponieważ Uważa się, że szyfrowanie danych jest wystarczającym środkiem ochronnym. Choć prawo nie opisuje konkretnych rozwiązań technicznych, wielu ekspertów zaleca stosowanie systemów szyfrowania dysków twardych czy partycji, co będzie uważane za wystarczające środki ochrony. Wyniki naszego badania pokazały, że wiara w szyfrowanie dysku jest bezpodstawna. Niedoświadczony napastnik może ominąć wiele powszechnie używanych systemów szyfrowania, jeśli laptop z danymi zostanie skradziony, gdy jest włączony lub znajduje się w trybie uśpienia. A dane na laptopie można odczytać nawet jeśli znajdują się one na zaszyfrowanym dysku, więc stosowanie systemów szyfrowania dysku twardego nie jest wystarczającym środkiem.

    Zastosowaliśmy kilka rodzajów ataków na dobrze znane systemy szyfrowania dysków twardych. Najwięcej czasu zajmowała instalacja zaszyfrowanych dysków i sprawdzenie poprawności wykrytych kluczy szyfrujących. Uzyskanie obrazu pamięci RAM i wyszukanie kluczy trwało zaledwie kilka minut i było w pełni zautomatyzowane. Istnieją powody, aby sądzić, że większość systemów szyfrowania dysków twardych jest podatna na podobne ataki.

    Funkcja BitLocker

    BitLocker to system zawarty w niektórych wersjach systemu operacyjnego Windows Vista. Działa jako sterownik działający pomiędzy systemem plików a sterownikiem dysk twardy, szyfrując i deszyfrując wybrane sektory na żądanie. Klucze użyte do szyfrowania pozostają w pamięci RAM tak długo, jak zaszyfrowany dysk jest szyfrowany.

    Do szyfrowania każdego sektora dysku twardego funkcja BitLocker wykorzystuje tę samą parę kluczy utworzoną przez algorytm AES: klucz szyfrowania sektora i klucz szyfrowania działający w trybie łączenia bloków szyfru (CBC). Te dwa klucze są z kolei szyfrowane kluczem głównym. Aby zaszyfrować sektor, wykonywana jest procedura dodawania binarnego na zwykłym tekście z kluczem sesji wygenerowanym przez szyfrowanie bajtu przesunięcia sektora kluczem szyfrowania sektora. Uzyskane dane są następnie przetwarzane przez dwie funkcje mieszające, które korzystają z algorytmu Elephant opracowanego przez firmę Microsoft. Te funkcje bezkluczykowe służą do zwiększenia liczby zmian we wszystkich bitach szyfru i odpowiednio zwiększenia niepewności danych zaszyfrowanego sektora. W ostatnim etapie dane są szyfrowane algorytmem AES w trybie CBC, przy użyciu odpowiedniego klucza szyfrującego. Wektor inicjujący jest wyznaczany poprzez szyfrowanie bajtu przesunięcia sektora kluczem szyfrującym używanym w trybie CBC.

    Wdrożyliśmy w pełni zautomatyzowany atak demonstracyjny o nazwie BitUnlocker. Wykorzystuje zewnętrzny dysk USB z systemem operacyjnym Linux i zmodyfikowanym bootloaderem opartym na SYSLINUX i sterowniku FUSE, który umożliwia podłączenie dysków zaszyfrowanych funkcją BitLocker do systemu operacyjnego Linux. Na komputerze testowym z systemem Windows Vista wyłączono zasilanie, podłączono dysk twardy USB i uruchomiono z niego komputer. Następnie BitUnlocker automatycznie zrzucił pamięć RAM na dysk zewnętrzny, użył programu keyfind do wyszukania możliwych kluczy, wypróbował wszystkie odpowiednie opcje (pary klucza szyfrowania sektora i klucza trybu CBC) i jeśli się powiedzie, podłączył zaszyfrowany dysk. Po podłączeniu dysku można było z nim pracować jak z każdym innym dyskiem. Na nowoczesnym laptopie z 2 gigabajtami pamięci RAM proces trwał około 25 minut.

    Warto zauważyć, że atak ten stał się możliwy do przeprowadzenia bez inżynierii wstecznej jakiegokolwiek oprogramowania. W dokumentacji Microsoftu system BitLocker jest opisany na tyle, aby zrozumieć rolę sektorowego klucza szyfrującego i klucza trybu CBC oraz stworzyć własny program realizujący cały proces.

    Główną różnicą między funkcją BitLocker a innymi programami tej klasy jest sposób przechowywania kluczy po odłączeniu zaszyfrowanego dysku. Domyślnie w trybie podstawowym funkcja BitLocker chroni klucz główny tylko przy użyciu modułu TPM, który istnieje na wielu nowoczesnych komputerach PC. Ta metoda, która wydaje się być powszechnie stosowana, jest szczególnie podatna na nasz atak, ponieważ pozwala na uzyskanie kluczy szyfrujących nawet wtedy, gdy komputer był wyłączony przez długi czas, gdyż podczas uruchamiania komputera klucze są automatycznie ładowane do RAM (przed oknem logowania) bez wprowadzania jakichkolwiek informacji uwierzytelniających.

    Najwyraźniej specjaliści Microsoftu znają ten problem i dlatego zalecają ustawienie funkcji BitLocker w ulepszonym trybie, w którym klucze są chronione nie tylko za pomocą modułu TPM, ale także hasła lub klucza na zewnętrznym dysku USB. Ale nawet w tym trybie system jest podatny na ataki, jeśli atakujący uzyska fizyczny dostęp do komputera w momencie jego pracy (może nawet zostać zablokowany lub w trybie uśpienia (stany - w tym przypadku po prostu wyłączony lub hibernowany są brane pod uwagę nie jest podatny na ten atak).

    FileVault

    System FileVault firmy Apple został częściowo zbadany i poddany inżynierii wstecznej. W systemie Mac OS X 10.4 FileVault używa 128-bitowego klucza AES w trybie CBC. Po wprowadzeniu hasła użytkownika nagłówek zawierający klucz AES i drugi klucz K2 zostaje odszyfrowany i służy do obliczenia wektorów inicjujących. Wektor inicjujący dla I-tego bloku dyskowego jest obliczany jako HMAC-SHA1 K2(I).

    Użyliśmy naszego programu do obrazowania pamięci RAM EFI w celu pobrania danych z komputera Mac z procesorem Intel i podłączonego dysku zaszyfrowanego za pomocą FileVault. Następnie program wyszukiwania kluczy automatycznie znalazł klucze FileVault AES bez błędów.

    Bez wektora inicjującego, ale za pomocą powstałego klucza AES, możliwe staje się odszyfrowanie 4080 z 4096 bajtów każdego bloku dysku (wszystkich z wyjątkiem pierwszego bloku AES). Upewniliśmy się, że wektor inicjujący również znajduje się na zrzucie. Zakładając, że dane nie zostały jeszcze uszkodzone, osoba atakująca może określić wektor, wypróbowując wszystkie 160-bitowe ciągi znaków jeden po drugim w zrzucie i sprawdzając, czy mogą one utworzyć możliwy tekst jawny po dodaniu kodu binarnego do odszyfrowanej pierwszej części bloku . Łącznie użycie programów takich jak vilefault, kluczy AES i wektora inicjującego pozwala na całkowite odszyfrowanie zaszyfrowanego dysku.

    Badając FileVault, odkryliśmy, że systemy Mac OS X 10.4 i 10.5 pozostawiają w pamięci wiele kopii hasła użytkownika, gdzie są one podatne na ten atak. Hasła konta często używane do ochrony kluczy, które z kolei mogą służyć do ochrony haseł na dyskach zaszyfrowanych za pomocą FileVault.

    TrueCrypt

    TrueCrypt to popularny system szyfrowania typu open source, który działa w systemach Windows, MacOS i Linux. Obsługuje wiele algorytmów, w tym AES, Serpent i Twofish. W wersji 4 wszystkie algorytmy pracowały w trybie LRW; w obecnej, piątej wersji korzystają z trybu XTS. TrueCrypt przechowuje klucz szyfrowania i modyfikuje klucz w nagłówku partycji na każdym dysku, który jest szyfrowany innym kluczem pochodzącym z hasła wprowadzonego przez użytkownika.

    Testowaliśmy TrueCrypt 4.3a i 5.0a działające na Linuksie. Podłączyliśmy dysk, zaszyfrowany 256-bitowym kluczem AES, następnie odłączyliśmy zasilanie i do rozruchu użyliśmy naszego własnego oprogramowania do zrzutu pamięci. W obu przypadkach funkcja keyfind znalazła 256-bitowy nienaruszony klucz szyfrowania. Ponadto, w przypadku TrueCrypt 5.0.a, keyfind był w stanie odzyskać klucz dostrajania trybu XTS.

    Aby odszyfrować dyski utworzone przez TrueCrypt 4, musisz dostosować klucz trybu LRW. Odkryliśmy, że system przechowuje go w czterech słowach przed harmonogramem kluczy AES. W naszym zrzucie klucz LRW nie był uszkodzony. (Jeśli wystąpią błędy, nadal będziemy w stanie odzyskać klucz).

    Dm-krypta

    Jądro Linuksa, począwszy od wersji 2.6, zawiera wbudowaną obsługę dm-crypt, podsystemu szyfrowania dysku. Dm-crypt wykorzystuje różne algorytmy i tryby, ale domyślnie używa 128-bitowego szyfru AES w trybie CBC z IV generowanymi nie na podstawie kluczowych informacji.

    Przetestowaliśmy partycję utworzoną przez dm-crypt przy użyciu gałęzi LUKS (Linux Unified Key Setup) narzędzia cryptsetup i jądra 2.6.20. Dysk został zaszyfrowany przy użyciu AES w trybie CBC. Na krótko wyłączyliśmy zasilanie i korzystając ze zmodyfikowanego programu ładującego PXE, zrobiliśmy zrzut pamięci. Program keyfind wykrył poprawny 128-bitowy klucz AES, który został odzyskany bez żadnych błędów. Po jej przywróceniu osoba atakująca może odszyfrować i zamontować zaszyfrowaną partycję dm-crypt, modyfikując narzędzie cryptsetup tak, aby akceptowało klucze w wymaganym formacie.

    Metody ochrony i ich ograniczenia

    Wdrożenie ochrony przed atakami na pamięć RAM nie jest trywialne, ponieważ klucze kryptograficzne trzeba gdzieś przechowywać. Sugerujemy skupienie wysiłków na zniszczeniu lub ukryciu kluczy, zanim osoba atakująca będzie mogła uzyskać fizyczny dostęp do komputera, uniemożliwiając uruchomienie oprogramowania zrzutu pamięci RAM, fizycznie chroniąc układy RAM i skracając żywotność danych RAM, jeśli to możliwe.

    Nadpisywanie pamięci

    Po pierwsze, jeśli to możliwe, powinieneś unikać przechowywania kluczy w pamięci RAM. Musisz nadpisać kluczowe informacje, gdy nie są już używane, i zapobiec kopiowaniu danych do plików stronicowania. Pamięć należy wcześniej wyczyścić za pomocą narzędzi systemu operacyjnego lub dodatkowych bibliotek. Oczywiście te środki nie zabezpieczą aktualnie używanych kluczy, ponieważ muszą być przechowywane w pamięci, np. klucze używane do zaszyfrowanych dysków lub na bezpiecznych serwerach internetowych.

    Ponadto pamięć RAM musi zostać wyczyszczona podczas procesu uruchamiania. Niektóre komputery można skonfigurować tak, aby usuwały pamięć RAM podczas rozruchu za pomocą żądania kasowania POST (autotestu po włączeniu zasilania) przed załadowaniem systemu operacyjnego. Jeśli atakujący nie będzie w stanie zapobiec wykonaniu tego żądania, na tym komputerze nie będzie mógł wykonać zrzutu pamięci zawierającego ważne informacje. Ale nadal ma możliwość usunięcia układów RAM i włożenia ich do innego komputera z potrzebnymi ustawieniami BIOS-u.

    Ograniczanie pobierania z sieci lub z nośników wymiennych

    Wiele naszych ataków przeprowadzono przy użyciu plików pobranych z sieci lub z nośników wymiennych. Komputer musi być skonfigurowany tak, aby wymagał hasła administratora do rozruchu z tych źródeł. Należy jednak zauważyć, że nawet jeśli system jest skonfigurowany do uruchamiania tylko z głównego dysku twardego, osoba atakująca może to zmienić samodzielnie dysk twardy lub w wielu przypadkach zresetuj pamięć NVRAM komputera, aby przywrócić oryginalne ustawienia BIOS-u.

    Bezpieczny tryb uśpienia

    Wyniki badania wykazały, że samo zablokowanie pulpitu komputera (tzn. system operacyjny nadal działa, ale aby rozpocząć z nim interakcję, należy podać hasło) nie chroni zawartości pamięci RAM. Tryb hibernacji nie jest również skuteczny, jeśli komputer jest zablokowany po powrocie z trybu uśpienia, ponieważ osoba atakująca może aktywować powrót z trybu uśpienia, a następnie ponownie uruchomić laptopa i wykonać zrzut pamięci. Tryb hibernacji (zawartość pamięci RAM jest kopiowana na dysk twardy) również nie pomoże, z wyjątkiem przypadków wykorzystania kluczowych informacji na wyobcowanym nośniku w celu przywrócenia normalnego funkcjonowania.

    W większości systemów szyfrowania dysków twardych użytkownicy mogą się zabezpieczyć, wyłączając komputer. (System Bitlocker w podstawowym trybie pracy modułu TPM pozostaje podatny na ataki, ponieważ dysk zostanie podłączony automatycznie po włączeniu komputera). Zawartość pamięci może utrzymywać się przez krótki czas po odłączeniu, dlatego zaleca się monitorowanie stacji roboczej jeszcze przez kilka minut. Pomimo swojej skuteczności, środek ten jest wyjątkowo niewygodny ze względu na długi czas ładowania stacji roboczych.

    Przejście do trybu uśpienia można zabezpieczyć w następujący sposób: wymagać podania hasła lub innego sekretu, aby „wybudzić” stację roboczą oraz zaszyfrować zawartość pamięci kluczem wyprowadzonym z tego hasła. Hasło musi być silne, ponieważ osoba atakująca może wykonać zrzut pamięci, a następnie spróbować odgadnąć hasło metodą brutalnej siły. Jeśli zaszyfrowanie całej pamięci nie jest możliwe, należy zaszyfrować tylko te obszary, które zawierają kluczowe informacje. Niektóre systemy mogą być skonfigurowane tak, aby przechodziły w tego typu chroniony tryb uśpienia, chociaż zwykle nie jest to ustawienie domyślne.

    Unikanie obliczeń wstępnych

    Nasze badanie wykazało, że korzystanie z obliczeń wstępnych w celu przyspieszenia operacji kryptograficznych naraża kluczowe informacje na większe zagrożenia. Wstępne obliczenia powodują powstanie zbędnych informacji o kluczowych danych pojawiających się w pamięci, co umożliwia atakującemu odzyskanie kluczy nawet w przypadku wystąpienia błędów. Na przykład, jak opisano w sekcji 5, informacje o kluczach iteracyjnych algorytmów AES i DES są niezwykle zbędne i przydatne dla atakującego.

    Niewykonanie obliczeń wstępnych zmniejszy wydajność, ponieważ potencjalnie złożone obliczenia będą musiały zostać powtórzone. Ale na przykład możesz buforować wstępnie obliczone wartości przez określony czas i usuwać otrzymane dane, jeśli nie zostaną wykorzystane w tym przedziale czasu. Podejście to stanowi kompromis pomiędzy bezpieczeństwem a wydajnością systemu.

    Kluczowa ekspansja

    Innym sposobem zapobiegania odzyskaniu klucza jest zmiana informacji o kluczu przechowywanych w pamięci w taki sposób, aby utrudnić odzyskanie klucza ze względu na różne błędy. Metodę tę omówiono w teorii, gdzie pokazano funkcję odporną na odkrycie, której dane wejściowe pozostają ukryte, nawet jeśli praktycznie całe wyjście zostało odkryte, podobnie jak działanie funkcji jednokierunkowych.

    W praktyce wyobraźmy sobie, że mamy 256-bitowy klucz AES K, który w tej chwili nieużywane, ale będą potrzebne później. Nie możemy go nadpisać, ale chcemy, aby był odporny na próby odzyskania. Jednym ze sposobów osiągnięcia tego jest przydzielenie dużego B-bitowego obszaru danych, wypełnienie go losowymi danymi R, a następnie zapisanie w pamięci wyniku transformacji K+H(R) (sumowanie binarne, przyp. red.), gdzie H to funkcja skrótu, taka jak SHA-256.

    Teraz wyobraź sobie, że zasilanie zostało wyłączone, co spowodowałoby zmianę bitów d w tym obszarze. Jeśli funkcja skrótu jest silna, próbując odzyskać klucz K, atakujący może jedynie liczyć na to, że będzie w stanie zgadnąć, które bity obszaru B zostały zmienione z mniej więcej połowy, która mogła ulec zmianie. Jeśli d bity zostały zmienione, atakujący będzie musiał przeszukać obszar o rozmiarze (B/2+d)/d, aby znaleźć prawidłowe wartości R, a następnie odzyskać klucz K. Jeśli obszar B jest duży, np. wyszukiwanie może być bardzo długie, nawet jeśli d jest stosunkowo małe

    Teoretycznie moglibyśmy w ten sposób przechowywać wszystkie klucze, obliczając każdy klucz tylko wtedy, gdy go potrzebujemy i usuwając go, gdy go nie potrzebujemy. Zatem korzystając z powyższej metody możemy przechowywać klucze w pamięci.

    Ochrona fizyczna

    Niektóre z naszych ataków opierały się na fizycznym dostępie do układów pamięci. Takim atakom można zapobiec, chroniąc pamięć fizyczną. Na przykład moduły pamięci znajdują się w zamkniętej obudowie komputera lub są uszczelnione klejem epoksydowym, aby zapobiec próbom ich usunięcia lub dostępu do nich. Można także zastosować kasowanie pamięci w odpowiedzi na niskie temperatury lub próby otwarcia obudowy. Ta metoda będzie wymagała instalacji czujników niezależny system odżywianie. Wiele z tych metod wykorzystuje sprzęt odporny na manipulacje (taki jak koprocesor IBM 4758) i może znacznie zwiększyć koszt stacji roboczej. Z drugiej strony wykorzystanie pamięci wlutowanej do płyty głównej będzie znacznie tańsze.

    Zmiana architektury

    Możesz zmienić architekturę komputera. Jest to niemożliwe w przypadku już używanych komputerów, ale pozwoli zabezpieczyć nowe.

    Pierwsze podejście polega na zaprojektowaniu modułów DRAM tak, aby szybciej kasowały wszystkie dane. Może to być trudne, ponieważ cel, jakim jest jak najszybsze wymazanie danych, stoi w sprzeczności z innym celem, jakim jest zapobieganie zaginięciu danych pomiędzy okresami odświeżania pamięci.

    Innym podejściem jest dodanie sprzętu do przechowywania kluczowych informacji, który gwarantuje usunięcie wszystkich informacji z pamięci po uruchomieniu, ponownym uruchomieniu i zamknięciu. W ten sposób będziemy mieli bezpieczne miejsce do przechowywania wielu kluczy, chociaż luka związana z ich wstępnym obliczeniem pozostanie.

    Inni eksperci zaproponowali architekturę, w której zawartość pamięci byłaby trwale szyfrowana. Jeśli dodatkowo zaimplementujemy kasowanie kluczy podczas restartu i przerwy w dostawie prądu, to ta metoda zapewni wystarczającą ochronę przed opisanymi przez nas atakami.

    Zaufane przetwarzanie danych

    Sprzęt odpowiadający koncepcji „trusted computing”, na przykład w postaci modułów TPM, jest już używany w niektórych komputerach PC. Chociaż sprzęt taki jest przydatny w ochronie przed niektórymi atakami, w obecnej postaci nie pomaga w zapobieganiu opisanym przez nas atakom.

    Zastosowane moduły TPM nie implementują pełne szyfrowanie. Zamiast tego obserwują proces uruchamiania, aby zdecydować, czy załadowanie klucza do pamięci RAM jest bezpieczne, czy nie. Jeśli oprogramowanie wymaga użycia klucza, można zastosować następującą technologię: klucz w użytecznej formie nie będzie przechowywany w pamięci RAM, dopóki proces uruchamiania nie przebiegnie zgodnie z oczekiwaniami. Ale gdy tylko klucz znajdzie się w pamięci RAM, natychmiast staje się celem naszych ataków. Moduły TPM mogą uniemożliwić załadowanie klucza do pamięci, ale nie uniemożliwiają jego odczytania z pamięci.

    Wnioski

    Wbrew powszechnemu przekonaniu, moduły DRAM przechowują dane przez stosunkowo długi czas, gdy są wyłączone. Nasze eksperymenty wykazały, że zjawisko to pozwala na całą klasę ataków, podczas których można uzyskać poufne dane, takie jak klucze szyfrujące, z pamięci RAM, pomimo prób ochrony ich zawartości przez system operacyjny. Opisane przez nas ataki można wdrożyć w praktyce, czego dowodem są nasze przykłady ataków na popularne systemy szyfrujące.

    Jednak inne rodzaje oprogramowania są również podatne na ataki. Systemy zarządzania prawami cyfrowymi (DRM) często wykorzystują klucze symetryczne przechowywane w pamięci i można je również uzyskać za pomocą opisanych metod. Jak pokazaliśmy, serwery internetowe obsługujące SSL są również podatne na ataki, ponieważ przechowują w pamięci klucze prywatne potrzebne do tworzenia sesji SSL. Nasze techniki wyszukiwania kluczowych informacji prawdopodobnie będą skuteczne w znajdowaniu haseł, numerów kont i wszelkich innych poufnych informacji przechowywanych w pamięci RAM.

    Wygląda na to, że nie ma łatwego sposobu na naprawienie wykrytych luk. Zmiana oprogramowania najprawdopodobniej nie będzie skuteczna; zmiany sprzętu pomogą, ale koszty czasu i zasobów będą wysokie; Zaufana technologia komputerowa w obecnej postaci jest również nieskuteczna, ponieważ nie jest w stanie chronić kluczy znajdujących się w pamięci.

    Naszym zdaniem najbardziej podatne na to ryzyko są laptopy, które często znajdują się w trybach podatnych na tego rodzaju ataki i działają w nich. Obecność takich zagrożeń pokazuje, że szyfrowanie dysku chroni ważne dane w mniejszym stopniu, niż się powszechnie uważa.

    W rezultacie może być konieczne uznanie pamięci DRAM za niezaufany element nowoczesnego komputera i unikanie przetwarzania ważnych poufnych informacji



Jeśli zauważysz błąd, zaznacz fragment tekstu i naciśnij Ctrl+Enter
UDZIAŁ: