# [HOWTO] Szyfrowanie plików pod Gentoo z zast. dmcrypt

## phoenix_me

Ostatnie zmiany: 22-10-2006

zmiana n/t potrzebnych pakietów (uaktualnienie)

informacje n/t hasła

Szyfrowanie plików pod Gentoo z zastosowaniem dmcrypt

WPROWADZENIE

Dmcrypt to sposób na szyfrowanie i odczytanie tak zaszyfrowanych plików za pomocą algorytmu szyfrującego (szyfrowanie kryptograficze). Dmcrypt pozwala na dostęp do zaszyfrowanych plików jak do zwykłych urządzeń blokowych (hdd, cdrom itd). Oznacza to, że pliki są deszyfrowane w locie.

Cały dysk czy wybrane pliki?

Możemy przeznaczyć na zaszyfrowane pliki całą partycję lub też w przypadku gdy nie chcemy tego robić wystarczy utworzyć zaszyfrowany plik i dostęp do niego uzyskamy poprzez specjalne urządzenie pętli zwrotnej (loopback device), dzięki któremu możliwy będzie dostęp do zaszyfrowanego pliku tak jak do urządzenia blokowego. Jest to przydatne w chwili, kiedy nie chcemy szyfrować całej partycji, a jedynie kilka ważnych plików.

Konfiguracja jądra

Aby używać dmcrypt najpier musimy odpowiednio skonfigurować jądo. 

Włączamy obsługe mapowania urządzeń (device mapper 'dm')

```
Device Drivers --> RAID and LVM Support --> 

[*] Multiple devices driver support (RAID and LVM)           

<*> Device mapper support

<*> Crypt target support
```

Włączamy obsługę szyfowania (aes)

```
Cryptographic Options --> 

 <*> AES cipher algorithims (i586)

```

Jeśli zamierzasz używać dmcrypt razem z urzadzeniem pętli zwrotnej (loopback device) należy włączyć jego obsługę

```
Device Drivers --> Block Devices -->

<*> Loopback device support # Remember, cryptoloop is not dmcrypt
```

Jeśli chcesz możesz skompilować wszystko jako moduły, nie zapomnij tylko poźniej ich załadować lub też włączyć automatycznego ładowania modułów w jądrze.

Instalacja niezbędnych pakietów

```
emerge sys-fs/cryptsetup
```

lub

```
sys-fs/cryptsetup-luks
```

W tej chwili istnieją dwa pakiety w drzewku portage, które wydają się robić to samo.

```

emerge -s cryptsetup

Searching...

[ Results for search key : cryptsetup ]

[ Applications found : 2 ]

*  sys-fs/cryptsetup

      Latest version available: 0.1-r3

      Latest version installed: [ Not Installed ]

      Size of files: 243 kB

      Homepage:      http://www.saout.de/misc/dm-crypt/

      Description:   Tool to setup encrypted devices with dm-crypt

      License:       GPL-2

*  sys-fs/cryptsetup-luks

      Latest version available: 1.0.3-r2

      Latest version installed: 1.0.3-r2

      Size of files: 297 kB

      Homepage:      http://luks.endorphin.org/

      Description:   Tool to setup encrypted devices with dm-crypt

      License:       GPL-2
```

Jak używać dmcrypt dla całej partycji

Najpierw zmapujemy urządzenie którego chcemy używać:

Po wpisaniu poniższej komendy zostaniemy zapytani o hasło i jego potwierdzenie, jakim chronione będą (są) nasze dane.

Oczywiście /dev/hda7 zastępujemy swoim własnym, na którym którym chcemy szyfrować lub odczytać zaszyfrowane dane.

```
cryptsetup -y create mycrypt /dev/hda7
```

Sprawdzamy czy mapowanie się powiodło

```
dmsetup ls
```

W wyniku powinniśmy otrzymać 'mycrypt'

Teraz stworzymy na tak zmapowanej partycji system plików (w przykładzie jest to ext3 ale możesz użyć dowolnego, zgodnie z własnymi preferencjami)

```
mke2fs -j /dev/mapper/mycrypt
```

Montujemy naszą partycję

```
mount /dev/mapper/mycrypt /mnt/point
```

I to wszystko, teraz każdy plik który wrzucimy do /mnt/point zostanie zaszyfrowany.

Nie zapomnij na koniec wyłączyć mapowania.

```
umount /mnt/point

cryptsetup remove mycrypt
```

Podczas kolejnego użytkowania naszej partycji pomiń krok który tworzy system plików, jeśli go nie pominiesz to skasujesz wszystkie pliki na zaszyfrowanej partycji.

Jak używać dmcrypt dla loopback device

Tworzymy nasz plik, który będzie służył za 'kontener' do przechowywania zaszyfrowanych plików. W naszym przykładzie będzie to plik o rozmiarze 50MB. Utowrzony plik zostanie wypełniony na początku przypadkowymi danymi. Tak stworzony plik niestety nie pozwoli nam na sprawdzenie w ilu procentach nasz 'kontener' został już zapełniony.

```
touch protected

shred -n1 -s50M protected
```

Teraz ustawimy loopback device tak aby używało ono naszego stworzonego przed chwilą pliku

```
losetup /dev/loop0 /sciezka/do/protected
```

Jeśli otrzymamasz komunikat ze loop0 jest zajęte, użyje innego loop1, loop2 itd...

Tworzymy mapowanie dla naszego pliku, tak aby był widziany jako odrębne urzadzenie blokowe.

Po wpisaniu powyższej komendy zostaniemy zapytani o hasło i jego potwierdzenie, jakim chronione będą (są) nasze dane.

```
cryptsetup -y create mycrypt /dev/loop0
```

Sprawdzamy czy wszystko się powiodło

```
dmsetup ls
```

W wyniku powinniśmy otrzymać 'mycrypt'

Tworzymy system plików na tak przygotowanym pliku

```
mke2fs -j /dev/mapper/mycrypt
```

Montujemy tak przygotowany plik

```
mount /dev/mapper/mycrypt /mount/point
```

Po zakończonej pracy nie zapomnijmy odmontować i zakończyć mapowanie.

```
umount /mount/point

cryptsetup remove mycrypt

losetup -d /dev/loop0
```

Podczas kolejnego użytkowania i następnych pomijamy krok który tworzy nam nasz 'kontener' oraz system plików

Cały proces montowania i odmontowywania urządzeń można zautomatyzować, ale nie jest to zalecane ze względu na bezpieczeństwo naszych plików. Powiniśmy montować nasz zaszyfrowany system plików tylko wtedy gdy będziemy go używać, oraz odmontować go, gdy tylko używanie skończymy. Oczywiście należy pamiętać, że ochrona będzie tak silna (lub słaba), jak hasło którego użyjemy do ochrony naszych plików.

LINKI

http://gentoo-wiki.com/SECURITY_dmcrypt

http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Cryptoloop-HOWTO.html

http://burbon04.gmxhome.de/linux/CDREncryption.html

----------

## martin.k

Więcej info o dm-crypt i szyfrowaniu partycji/dysków można poczytac sobie w 

Linux Magazine Numer 23: Styczeń 2006 - do kupienia w Empikach itp.

Całkiem przyzwoicie wyłożony temat.

----------

## Odinist

Czy można jakoś ustawić priorytet szyfrowaniu dysku? Gdy kopiuję np. duze pliki to co kilka sekund obciążenie procesora wzrasta do 100% co powoduje zatrzymanie kursora, muzyki czy odtwarzanego filmu. Mam partycję 140GB w dmcrypcie  :Wink: 

Pozdrawiam

```
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

 6902 root      12  -5     0    0    0 D 81.4  0.0   1:34.00 kjournald

```

Czyżby dmcrypt się krótko mówiąc "gryzł" z journalowym systemem plików (ext3)?

----------

## szolek

Tak przyglądam się temu interesującemu HOWTO i najbardziej mnie zastanawia to hasło ponieważ nie widze żadnej wzmianki o nim przed tym cytowanym zdaniem: 

 *phoenix_me wrote:*   

> Oczywiście należy pamiętać, że ochrona będzie tak silna (lub słaba), jak hasło którego użyjemy do ochrony naszych plików. 

 

Nie próbowałem jeszcze tego wykonywać bo może bym się doszukał tej informacji.

----------

## Odinist

Hasło się ustawia przy kroku:

```
cryptsetup -y create mycrypt /dev/loop0
```

----------

## phoenix_me

 *-Nile- wrote:*   

> Hasło się ustawia przy kroku:
> 
> ```
> cryptsetup -y create mycrypt /dev/loop0
> ```
> ...

 

lub też w przypadku szyfrowania całej partycji:

```
cryptsetup -y create mycrypt /dev/hda7
```

(HowTo zostało uaktualnione, zamieściłem informacje o tym gdzie wpisujemy hasło itp. - wykaz zmian na samej górze  :Smile: 

----------

## Odinist

Można stwierdzić, która partycja w 100% jest zaszyfrowana?

A w ogole to hashuje wlasnie pliki w DC++ na takiej partycji i mam odczyt ~26 mb/s. To normalne? Czy te pliki są na pewno zaszyfrowane  :Question:   :Laughing: 

----------

## phoenix_me

 *-Nile- wrote:*   

> Można stwierdzić, która partycja w 100% jest zaszyfrowana?
> 
> A w ogole to hashuje wlasnie pliki w DC++ na takiej partycji i mam odczyt ~26 mb/s. To normalne? Czy te pliki są na pewno zaszyfrowane  

 

1. Rozumiem, że chcesz sprawdzić czy partycja którą "zaszyfrowałeś" jest faktycznie zaszyfrowana ? Jeśli tak to punkt nr. 2 Ci to wyjaśni  :Smile: 

2. Odczyt na poziomie 26mb/s to naprawdę nic specjalnego i nie kierowałbym się tym jako miernikiem tego czy partycja jest zaszyfrowana czy nie. Popatrzmy najpierw na mechanizm tworzenia partycji.

...A - pierwszy krok to mapowanie partycji - po prostu mówisz do dmcrypta której partycji będziesz używał. np.

```
cryptsetup -y create mycrypt /dev/hda7
```

dane którę będą teraz płynęły do /dev/hda7 popłyną poprzez urządzenie/mechanizm 'crypt' który będzie szyfrował i odszyfrowywał płynące dane.

...B - następnym krokiem było utworzenie partycji czyli np.

```
mke2fs -j /dev/mapper/mycrypt
```

znowu wszystko poszło do /dev/hda7 (bo tak zostało wcześniej zmapowane), i znowu wszystko szło przez urządzenie/mechanizm 'crypt'. Tak więc tworzenie samej partycji, nodów, superblocka itd również zostało zaszyfrowane.

...C - następuje montowanie partycji czyli np.

```
mount /dev/mapper/mycrypt /mnt/point
```

montujemy nasze /dev/hda7 (na ktore wskazuje mycrypt) i znowu używamy do tego mechanizmu 'crypt'.

  Do tak zamontowaneog urządzenia mamy swobodny dostęp.

Odmontujmy teraz naszą partycję i wyłączmy mapowanie

```
umont /mnt/point

cryptsetup remove mycrypt
```

A teraz aby się przekonać czy rzeczywiście nasza partycja jest zaszyfrowana  -spróbujmy ją zamontować jak zwykłą partycję(nie korzystając z mechanizmu, który szyfruje i deszyfruje dane)

```
mount /dev/hda7 /mnt/point
```

Jeśli nie uda się jej zamontować - to znaczy, że jest zaszyfrowana.

Taki sam komunikat błędu zwróci 'mount' podczas próby zamontowania gdy spróbujemy zamontować zwykłą, niezaszyfrowaną  partycje z np. uszkodzonym superblockiem, lub gdy nie będziemy mieli wbudowanej w jądro obsługi danego systemu plików.

A dla własnej ciekawości proponuje wam przeczytać przy pomocy 'dd' np pierwsze 1MB  :Smile:  partycji zaszyfrowanej i niezaszyfrowanej, a następnie pod jakimś edytorem hex (z możliwością wyświetlania ASCI) np. lfhex - sprawdzić różnicę w 'wyglądzie' takich partycji.

----------

## pancurski

Mam pytanie. Posiadam dysk, podzielony na dwie partycje (oba na ext3). Obie partycje są wypełnione po brzegi. Czy mozna je zaszyfrować bez utraty danych?

----------

## mbar

nie, i chciałbym zauważyć, że myślenie nie boli   :Shocked: 

----------

## Odinist

 *phoenix_me wrote:*   

> Odczyt na poziomie 26mb/s to naprawdę nic specjalnego i nie kierowałbym się tym jako miernikiem tego czy partycja jest zaszyfrowana czy nie. Popatrzmy najpierw na mechanizm tworzenia partycji.
> 
> ...A - pierwszy krok to mapowanie partycji - po prostu mówisz do dmcrypta której partycji będziesz używał. np.
> 
> ```
> ...

 

Zasugerowałem się tym, iż przy partycji zaszyfrowanej trucryptem transfery są o połowę gorsze i komp strasznie zwalnia przy zapisie i odczycie...

----------

## Paczesiowa

mbar co ma do tego myslenie? wg tworcow truecrypta nie beda czegos takiego umozliwiac bo jest to niebezpieczne ( podobno jakos to umozliwia ataki ktore wyciagna klucz) ale normalny uzytkownik tego nie wymysli.

a ja mam taki dziwny problem z truecryptem ze zzera mi miejsca za duzo, teoretycznie tylko 512 bajtow sie traci na naglowek partycji a mi brakuje bardzo duzo miejsca ( i nie wiadomo gdzie sie podzialo)

to moj dysk:

```
Disk /dev/hda: 250.0 GB, 250059350016 bytes

255 heads, 63 sectors/track, 30401 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/hda1               1        1121     9004401   83  Linux

/dev/hda2            1122        1246     1004062+  82  Linux swap / Solaris

/dev/hda3            1247       30401   234187537+  83  Linux
```

hda3 jest zaszyfrowane truecryptem, sformatowane na ext2 i po zamountowaniu mam takie cos:

```

server ~ # mount /dev/mapper/truecrypt0 /data

server ~ # df

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/hda1              9004072   7989636   1014436  89% /

udev                    128436       416    128020   1% /dev

shm                     128436         0    128436   0% /dev/shm

/dev/mapper/truecrypt0

                     230512564     60624 218742564   1% /data

server ~ # ls /data/

lost+found
```

jak widac nie zgadza sie 12gb ktore zniknelo:/[/code]

----------

## Gabrys

Teoretycznie powinno być możliwe zaszyfrowanie partycji w locie, chociaż byłoby to dość dziwne, ale podobny mechanizm gdzieś widziałem i polegał na zmianie systemu plików z ext3 na reiserfs (albo odwrotnie):

1. pomniejszamy partycję o tyle ile się da.

2. powiększamy partycję do poprzednich rozmiarów.

3. tworzymy "pusty" plik, który jest "rzadki".

4. montujemy ten plik jako loopback z systemem Reiserfs (lub do naszego przykładu zaszyfrowanym dmcryptem).

5. zaczynamy przenoszenie plików.

6. miejsca na partycji przybywa, więc plik, który jest "rzadki" powinien się rozwastać.

7. gdy wszystko jest przekopiowane "przesuwamy" za pomocą dd chyba plik na początek partycji, tak, że nagłówek Reiser FS zastępuje EXT3

8. montujemy partycję jako Reiser.

UWAGA: To wszystko jest mocno teoretyczne, ale jest działające rozwiązanie, które wykorzystuje taki właśnie mechanizm. Więc gdybym był mbarem, to bym nie podsumowywał, że ktoś nie myśli, choć przyznam, że nie sądzę, żeby coś takiego dało się łatwo powielić dla konwersji z partycji nieszyfrowanej do szyfrowanej.

W każdym razie, łatwiej jest pożyczyć od kogoś dysk lub nagrywarkę DVD i sobie skopiować na taki nośnik dane i wtedy od nowa partycjonować dysk.

Pozdrawiam.

----------

## Paczesiowa

to jest wykonalne ale jest niebezpieczne ( nie chodzi o bezpieczenstwo utraty danych) bo podobno da sie jakos wyciagnac z tego master key i juz szlag trafil sens szyfrowania danych.

----------

## kacper

 *Paczesiowa wrote:*   

> to jest wykonalne ale jest niebezpieczne ( nie chodzi o bezpieczenstwo utraty danych) bo podobno da sie jakos wyciagnac z tego master key i juz szlag trafil sens szyfrowania danych.

 

możesz podać jakieś źródło tego? mam zamiar to zrobić na laptopie i jeśli to prawda to będę musiał poszukać czegoś innego.

----------

## Gabrys

Weźcie serio moją uwagę:

 *Gabrys wrote:*   

> 
> 
> W każdym razie, łatwiej jest pożyczyć od kogoś dysk lub nagrywarkę DVD i sobie skopiować na taki nośnik dane i wtedy od nowa partycjonować dysk.
> 
> 

 

----------

## msch

moze ktos ma pomysl, jak zaszyfrowac cala partycje /home? z automontowaniem jej oczywiscie :/

----------

## Gabrys

Jest na to sposób. Przeczytaj moje wypowiedzi w tym temacie i poszukaj linków.

----------

## msch

chyba sie nie zrozumielismy - jak zaszyfrowac partycje wiem. chodzi mi o to, jak rozgryzc sprawe montowania zaszyfrowanego home'a. loguje sie do systemu - on mi mowi ze moj home nie istnieje i zaloguje z HOME=/ - teraz montowanie home i przelogowanie - tego chce uniknac.

----------

## Gabrys

 *msch wrote:*   

> chyba sie nie zrozumielismy - jak zaszyfrowac partycje wiem. chodzi mi o to, jak rozgryzc sprawe montowania zaszyfrowanego home'a. loguje sie do systemu - on mi mowi ze moj home nie istnieje i zaloguje z HOME=/ - teraz montowanie home i przelogowanie - tego chce uniknac.

 

Chyba Cię zrozumiałem, przejrzyj link, który przytoczyłem (ten z forums.gentoo.org na początku).

Sorki, w tym temacie, chyba go nie podałem, więc:

https://forums.gentoo.org/viewtopic-t-274651.html

----------

## mbar

 *msch wrote:*   

> chyba sie nie zrozumielismy - jak zaszyfrowac partycje wiem. chodzi mi o to, jak rozgryzc sprawe montowania zaszyfrowanego home'a. loguje sie do systemu - on mi mowi ze moj home nie istnieje i zaloguje z HOME=/ - teraz montowanie home i przelogowanie - tego chce uniknac.

 

Przecież to się wszystko samo montuje, z fstaba. http://gentoo-wiki.com/SECURITY_System_Encryption_DM-Crypt_with_LUKS

Jeśli tak ci nie działa, gdzieś się pomyliłeś.

----------

## phoenix_me

 *Paczesiowa wrote:*   

> ...
> 
> a ja mam taki dziwny problem z truecryptem ze zzera mi miejsca za duzo, teoretycznie tylko 512 bajtow sie traci na naglowek partycji a mi brakuje bardzo duzo miejsca ( i nie wiadomo gdzie sie podzialo)
> 
> to moj dysk:
> ...

 

Po pierwsze ls nie pokaże wszystkiego

ls -la 

pokaze więcej - ale też nie musi to być wszystko

Dalej - pierwszy dane pochodzą z fdiska i pokazują faktyczną przestrzeń jaką zajmuje partycja - drugie dane z df i pokazuja ilosc dostepna dla uzytkownika - tzn po zaaplikowaniu systemu plików. Sam system plików zabiera troche miejsca na swoje funkcjonowanie. fdisk pokazuje ze masz 223,33GB partycje. ext2 domyslnie rezerwuje 5% na pliki superuzytkownika. 5% z 223GB to jakies 11GB  :Smile: .

Radzę poczytać man mke2fs i zobaczyć jak różne opcje mogą wpłynąć na wynikowy rozmiar partycji.

----------

## arek.k

 *phoenix_me wrote:*   

> Jak używać dmcrypt dla loopback device
> 
> ...
> 
> ```
> ...

 

Mam takie małe pytanie.

Przy tworzeniu pliku-kontenera na nieszyfrowanej partycji trzeba uważać (z tego co mi wiadomo, chyba że coś się zmieniło) na księgowanie. Np. jeśli na nieszyfrowanej partycji ext3 zakładamy plik urządzenia-loop (partycja szyfrowana) to powinniśmy unikać formatowania z księgowaniem (czyli użyć np. ext2). Problem podobno polega na podwójnym księgowaniu, co sprawia problemy (osobiście nie sprawdzałem).

Jeśli się mylę, poprawcie mnie - chciałbym wyjaśnić tą kwestię jeśli macie z tym jakieś doświadczenia.

----------

## phoenix_me

 *arek.k wrote:*   

>  *phoenix_me wrote:*   Jak używać dmcrypt dla loopback device
> 
> ...
> 
> ```
> ...

 

Jeżeli chodzi o README dla loop-AES to faktycznie jest tam informacja aby nie używać systemu plików z księgowaniem. Natomiast nie mam pojęcia jak ma się to do loopdevice ale na dm-crypt. Nigdzie nic na ten temat nie znalazłem.

Używam systemu ext3 oraz reiserfs - ale dla całej partycji i nie mam najmniejszych problemów. Małe problemy były z XFS - przy wielokrotnym kopiowaniu zaczęły pojawiać się błędy. Sam proces kopiowania przebiegał bez najmniejszych problemów natomiast nie zgadzały się sumy kontrolne md5.

----------

## martin.k

Po niezbyt udanych zabawach z dm-crypt'em przesiadłem się na truecrypta  :Smile: 

Wygodniej...

----------

## Gabrys

Z tym księgowaniem nie wiem jak jest do końca, ale skoro masz księgowanie na partycji na której leży plik, na którym jest zaszyfrowana partycja, to chyba faktycznie drugie księgowanie jest zbędne.

----------

## phoenix_me

 *martin.k wrote:*   

> Po niezbyt udanych zabawach z dm-crypt'em przesiadłem się na truecrypta 
> 
> Wygodniej...

 

Na czym to miały polegać te "nieudane" zabawy?

----------

## martin.k

 *phoenix_me wrote:*   

> Na czym to miały polegać te "nieudane" zabawy?

 

Ano na tym, że po zaszyfrowaniu partycji, na której został "posadzony" reiser4, miałem przy shutdownie panic

właśnie z powodu walącego się reisera 4.

Z truecryptem wszystko chodzi cacy...

Nawet nie muszę ręcznie odmontowywać partycji przy zamykaniu systemu...

P.S. Wiem, że mógłbym pogooglać i ten teges... ale jakoś nie miałem ochoty i zbytnio czasu na dłubaninę...

Truecrypt zadziałał z paczki...

----------

