Szyfrowane systemy plików 14


Po artykule o Gnupg, który opublikował kwalo postanowiłem zająć się szyfrowanymi systemami plików. Założeniem artykułu jest ich proste przedstawienie. Piszę „proste?, ponieważ nie specjalizuję się w kryptografii i muszę zawierzyć innym czy coś jest dobre czy nie. Postanowiłem opisać: Loop-AES, DM-Crypt, TrueCrypt, Enc-FS oraz Crypto-FS.

Loop-AES jest najstarszym z szyfrowanych systemów plików, także napiszę o nim tylko kilka słów. Do poprawnej obsługi wymaga co najmniej kernela 2.0 i modułu loop. Jak sama nazwa może wskazywać, metoda ta korzysta tylko z jednego algorytmu szyfrującego, którym jest AES. W Ubuntu mamy gotową paczkę, więc instalacja programu ogranicza się do wydania 1 polecenia. Samo użytkowanie programu jest bajecznie proste, o czym możecie przekonać się na tych stronach (16), (17), (18). Pod tym adresem (19) znajdziecie również skrypt ułatwiający montowanie i odmontowywanie szyfrowanych zasobów. Loop-AES ze względu na wiele braków, niedociągnięć i wpadek programistycznych nie jest aktualnie polecany, szczególnie że od wydania kernela w wersji 2.6.4 na stałe zawitał DM-Crypt.

DM-Crypt w przeciwieństwie do swojego poprzednika nie jest ograniczony do jednego algorytmu, ponieważ użytkownik może sam wybrać dowolny algorytm obsługiwany przez jądro. Program zarówno jak Loop-AES może szyfrować partycje lub tzw kontener. Jest to duże ułatwienie, ponieważ gdy nie możemy wygospodarować kawałka partycji pod szyfrowany system plików, to zawsze możemy stworzyć kontener, czyli szyfrowany plik, który następnie montujemy i używamy jak zwykły katalog. Kiedy wgrywamy dane do takiego katalogu, to program w tle bez naszej wiedzy wszystko szyfruje, a następnie zapisuje. Podczas pracy na zaszyfrowanym systemie plików (czy to partycja, czy kontener) na pewno zauważymy znaczący spadek transferu. Z drugiej strony skoro już zdecydujemy się na szyfrowanie, to bezpieczeństwo naszych danych stawiamy raczej na 1 miejscu i nie będziemy sobie zawracać głowy takim „problemem?, zważywszy na to że dzisiejsze komputery są coraz szybsze. Sam na co dzień korzystam z takiego rozwiązania i bardzo je sobie cenię. Zapewne interesuje was jak będą się zachowywać na takiej partycji wasze zdjęcia czy też legalnie zakupione filmy i utwory muzyczne. Tak jak wspomniałem wcześniej, dane będą się dłużej kopiować ponieważ muszą zostać zaszyfrowane/odszyfrowane, ale z kolei np. odtwarzanie filmów czy też słuchanie muzyki w moim przypadku odbywa się bardzo płynnie, bez żadnych problemów, ponieważ tego typu operacje nie potrzebują dużych transferów. Sam korzystam tylko z jednej takiej partycji, ale znam osoby tzw. „paranoików?, którzy posiadają szyfrowany cały system plików – łącznie z partycją wymiany. Ponieważ nie ma możliwości zaszyfrowania partycji rozruchowej /boot, to trzymają ten katalog wraz z grubem na pendrive, z którego to uruchamiają komputer. By uruchomić taki system musimy posiadać nie dość że komputer to również pendrive, który jest swego rodzaju kluczem. Kilka takich rozwiązań znajdziecie tutaj (27). Swego czasu na forum napisałem małe how-to, jak można stworzyć takową partycje (31). Po więcej przykładów zapraszam tutaj (28), (29), (30). Dodatkowo możemy się wspomóc skryptem napisanym w pythonie, dzięki któremu podczas montowania takiej partycji wyskoczy nam piękne graficzne okno z zapytaniem o hasło (32). Nie muszę chyba pisać że im dłuższe hasło, tym lepiej. Na chwilę obecną nie ma możliwości złamania takiego szyfru w rozsądnym czasie, także zostaje tylko atak słownikowy na hasło. Zaleca się przynajmniej 15-20 znakowe. Na dzień dzisiejszy poleca się stosować DM-Crypt w połączeniu z Luks. Normalnie szyfrując partycję mamy jedno hasło, co może być bardzo dużym utrudnieniem przy próbie zmiany tego hasła. Luks pomaga w zarządzaniu hasłami, można mieć kilka haseł do jednego szyfrowanego zasobu. Zamiast hasła możemy używać jakiegoś pliku z generowanym kluczem (41), (42). Możemy posiadać do 8 takich haseł. Dzięki Luks w bardzo łatwy sposób możemy zarządzać hasłami: dodawać, usuwać. Tak jak wspomniałem na początku, DM-Crypt znajduje się w gałęzi kernela i jest bardzo mocno zalecany. Na dodatek tworząc wolumen szyfrowany z odpowiednimi opcjami możemy w bardzo łatwy sposób zwiększyć bezpieczeństwo takich danych, ale to juz materiał na inny artykuł. Na początek polecam zaznajomić się min z tym (37).

Crypto-FS to szyfrowany system plików działający w przestrzeni użytkownika oparty o system FUSE, który to z kolei od kernela 2.6.14 znajduje się oficjalnie w jego gałęzi. Crypto-FS przed zapisaniem pliku na dysku wpierw koduje jego nazwę z użyciem Base-64. Sam plik szyfrowany jest za pomocą wskazanego algorytmu przez użytkownika. Standardowo używany jest AES. Niestety nie jesteśmy w stanie ukryć wielkości plików ani struktury katalogów. Program nie sprawdza wynikowego kodu funkcji haszującej (najczęściej SHA-1). Jest to poważny błąd, ponieważ może się okazać że wywołana funkcja z niewiadomych powodów zakończy się błędem, a program dalej będzie sobie działać tak jak by się nic nie stało. W konsekwencji może to doprowadzić do tego, ze dane nie będą szyfrowane lub będą zapisywane z pustym kluczem. Sam program nie znajduje się w repozytoriach Ubuntu. Musimy go sobie sami ściągnąć (12) i skompilować. Użycie programu jest banalnie proste opisane np. tutaj (13), (14). Osobiście na podstawie wyżej wymienionego błędu i Enc-FS którego zaraz opisze, odradzam stosowanie tego programu.

Enc-FS tak jak opisywany wcześniej Crypto-FS również oparty jest o FUSE. W porównaniu z Crypto-FS program został rozbudowany o kilka funkcji przez co jest bardziej bezpieczny. Sam program do szyfrowania wykorzystuje bibliotekę OpenSSL. Standardowo pracuje w 2 trybach: standard i paranoid. Tryb standard wykorzystuje szyfrowanie Blowfish z 160 bitowym kluczem. Bezpieczniejszym trybem jest paranoid, ponieważ korzysta on z algorytmu AES z kluczem 256 bitów, dodatkowo dla każdego szyfrowanego bloku generowana jest suma kontrolna dzięki której zapobiegniemy modyfikacji danych. Jest jeszcze jeden tryb, o którym nie wspomniałem, mam tu na myśli tryb ekspercki. Jak się pewnie domyślasz tryb ten daje nam kilka dodatkowych opcji, min wybór algorytmu z ogólnie dostępnych w OpenSSL, którym to będziemy szyfrować czy tez możliwość wyłączenia szyfrowania nazwy plików. Enc-FS pozwala dodatkowo na ustalenie czasu, po którym to katalog zostanie automatycznie odmontowany. Podobnie jak omawiany wcześniej program, Enc-FS jest równie banalny w swojej obsłudze. Podczas pierwszego szyfrowania katalogu tworzony jest plik .encfs5, w którym to zapisane są informacje niezbędne do szyfrowania plików w tym katalogu. Dodatkowo program posiada graficzną nakładkę pod KDE (9) czy tez swój odpowiednik na Windowsa (10). Sposób użycia oraz wszelkiego rodzaju skrypty dostępne są pod tymi adresami: (11), (8). Wszystko zapowiadało się pięknie do czasu kiedy to okazało się że Enc-FS posiada identyczny błąd, jak omawiany wcześniej Crypto-FS związany z generowaniem funkcji haszującej. Gdyby nie ta wpadka, mógłbym ten program spokojnie polecić. Jeśli już zdecydujesz się na używanie Enc-FS, to na swoja odpowiedzialność.

TrueCrypt jest otwartym programem napisanym zarówno na Linuksa jak i Windowsa. Jak możemy przeczytać na stronie wikipedii (21), do czego gorąco zapraszam, program korzysta z następujących szyfrów: AES-256, Blowfish (klucz 448-bitowy), CAST5 (CAST-128), Serpent (klucz 256-bitowy), Triple DES (3DES), Twofish (klucz 256-bitowy). Dodatkowo do szyfrowania możemy używać kilku algorytmów jednocześnie. Dane są szyfrowane po kolei np 3 algorytmami i dopiero zapisywane na dysku. Program potrafi szyfrować zarówno całe partycje jak i tworzyć kontenery. Tak jak w przypadku DM-crypt, czy też Loop-AES, program Truecrypt wypełnia losowymi danymi cały kontener tak by nie dało się stwierdzić czy w środku są jakieś dane. Dodatkowo potrafi stworzyć w takim kontenerze ukrytą partycje! W zależności od podanego hasła montuje się jedna partycja lub druga. Ta opcja może być przydatna kiedy to jesteśmy zmuszeni to podania hasła dostępowego. Podamy hasło do partycji na której mamy normalne dane a mega ważne trzymamy na partycji ukrytej. Gdy program zamontuje partycje to osoba nie jest w stanie stwierdzić czy jest tam jeszcze jakaś partycja! Niestety program pod Ubuntu nie posiada paczek, a te co są na stronie nie bardzo działają. Zostaje nam tylko kompilacja która wymaga nagłówków kernela. Na pewno wielu osobom będzie brakowało również GUI. Program jako jedyny z opisywanych (nie doczytałem się tej możliwości w DM-Crypt) sprawdza wyniki wywołanych funkcji haszujących przez co jest w stanie odpowiednio reagować w momencie błędu. Sam osobiście na co dzień korzystam z takiego rozwiązania, gdyż mogę spokojnie przenosić moje dane między Linuksem a Windowsem do którego korzystania jestem zmuszony min w pracy.

Do skutecznego zaszyfrowania jakiegoś pliku możemy posłużyć się również PGP, a dokładniej jego otwartą odmianą Gnupg. Dzięki programowi Kgpg, który to w bardzo dobry sposób integruje Gnupg ze środowiskiem KDE, szyfrowanie ogranicza się do kilku kliknięć myszką. Nie będę tu umieszczał żadnych opisów i powielał materiału, ponieważ kwalo w bardzo sprawny i przyjemny sposób opisał ten program w Czytelni, także wszystkich serdecznie i gorąco zapraszam.

Kolejnym fajnym rozwiązaniem może być np wypalanie płytek szyfrowanych w locie. Szyfrowanie takowe może być rozwiązane na 2-3 sposoby. Za pomocą łaty Maximiliana Deckera, Gnupg bądź AES-PIPE. Po wypaleniu takiej płytki w bardzo łatwo sposób możemy ją później podmontować. Po więcej informacji zapraszam na (22), (23), (24), (25).

Padnie zapewne zapytanie co wybrać? Tak jak pisałem, na co dzień pracuje z 2 programami. DM-Crypt jak do tej pory mnie nie zawiódł. Nic mi się jeszcze nie „rozjechało”, a do spadku transferu można naprawdę przywyknąć, szczególnie jeśli zależy nam na bezpieczeństwie naszych danych. Myślę że TrueCrypt będzie dla Ciebie również idealnym rozwiązaniem, zwłaszcza jeśli dane masz na szyfrowanym pendrive i cały czas przepinasz się między Linuksem a Windowsem. Minusem programu jest jego kompilacja. Przy każdej zmianie kernela będziemy musieli od nowa kompilować moduł, w przeciwieństwie do DM-Crypt. Oba programy są ostatnio bardzo polecane, więc myślę że to dobry wybór.
Źródła
(1) http://hydrus.et.put.poznan.pl/~junior/skisr/prezentacje/s25.pdf
(2) http://www.linux-magazine.pl
(3) http://developer.kde.org/~kgpg/polish.html
(4) http://securityinfo.pl/publikacje/9/
(5) http://www.gnupg.org/

  • Enc-FS

(7) http://arg0.net/encfs
(8) http://www.unixy.pl/forum/viewtopic.php?p=6185
(9) http://www.kde-apps.org/content/show.php?content=54078
(10) http://www.crc32.net/encfs/
(11) http://pl.wikipedia.org/wiki/EncFS

  • Crypto-FS

(12) http://reboot.animeirc.de/cryptofs/
(13) http://pl.wikipedia.org/wiki/CFS
(14) http://www.jtz.org.pl/Html/mini/krypto.pl.html#toc4

  • Loop-AES

(15) http://loop-aes.sourceforge.net/
(16) http://www.tidnab.nowaruda.net/index.php?sid=slackware&id=8
(17) http://linio.terramail.pl/loopaes.html
(18) http://deb.riseup.net/storage/encryption/loop-aes/
(19) http://www.mathematik.uni-marburg.de/~schmidtm/loopaes.php

  • TrueCrypt

(20) http://www.truecrypt.org/
(21) http://pl.wikibooks.org/wiki/TrueCrypt

  • cdrecord

(22) http://burbon04.gmxhome.de/linux/CDREncryption.html
(23) http://www.saout.de/tikiwiki/tiki-index.php?page=cdrom
(24) https://www.linux-magazine.com/Magazine/Downloads/72/Crypto-CD/create_enc_image
(25) http://de.gentoo-wiki.com/CD_Encryption_aespipe

  • DM-Crypt

(26) http://www.saout.de/misc/dm-crypt/
(27) http://www.saout.de/tikiwiki/tiki-index.php
(28) http://deb.riseup.net/storage/encryption/dmcrypt/
(29) http://olewaczers.eu.org/crypt.php
(30) http://forums.gentoo.org/viewtopic.php?t=417733
(31) http://forum.ubuntu.pl/viewtopic.php?t=13021
(32) http://forum.mandriva.org.pl/showthread.php?t=12119
(33) http://securitystandard.pl/news/106165_3.html
(34) http://olewaczers.eu.org/cryptedhome.php
(35) http://www.saout.de/tikiwiki/tiki-index.php?page=LUKS
(36) http://olewaczers.eu.org/cryptedhome.php
(37) https://help.ubuntu.com/community/EncryptedFilesystemHowto3
(38) http://www.saout.de/tikiwiki/tiki-index.php?page=LUKS
(39) http://www.saout.de/tikiwiki/tiki-index.php?page=LUKSFaq
(40) http://luks.endorphin.org/dm-crypt
(41) http://feraga.com/node/51
(42) http://forums.gentoo.org/viewtopic-t-520462.html


Dodaj komentarz

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

14 komentarzy do “Szyfrowane systemy plików

  • mazdac

    nie, no czytelnia zmiata ostatnio wszystkie inne tego typu serwisy. Niedługo wykosicie czasopisma typu linux-magazine, poziom jest bardzo podobny – IMHO wysoki. Bardzo fajny art.

  • radekg

    Przydałaby się korekta drugiej części artykułu. Znaleźć w niej można kilka „kfiatków”. Dla przykładu:

    „TrueCrypt jest zamkniętym, ale darmowym programem napisanym zarówno na Linuksa jak i Windowsa.”

    Na stronie domowej TrueCrypta można jednak przeczytać:

    „Free open-source disk encryption software for Windows Vista/XP/2000 and Linux”

    Co sam autor artykułu przyznaje dalej:

    „Zostaje nam tylko kompilacja [TrueCrypt’a] która wymaga nagłówków kernela. ”

    Ogólnie jednak tekst daje punkt zaczepienia dla ludzi chcących zaszyfrować swoje dane. (Brawa za odnośniki!)

  • nowy

    szkoda ze nie podales jak bardzo widoczny jest spadek przy uzytkowaniu takiej partycji. Mimo wszystko czegos takiego szukalem. Sam sobie przetestuje jak to u mnie bedzie wygladalalo. Dzieki za super atrykul no i tak jak poprzednik za linki! Przynajmniej nie musze szukac.

  • MrRobby Autor wpisu

    [quote comment=”3463″]szkoda ze nie podales jak bardzo widoczny jest spadek przy uzytkowaniu takiej partycji. Mimo wszystko czegos takiego szukalem. Sam sobie przetestuje jak to u mnie bedzie wygladalalo. Dzieki za super atrykul no i tak jak poprzednik za linki! Przynajmniej nie musze szukac.[/quote]
    Napisałem że jest dość duży spadek. Wszystko zależy od twoich dysków i procka. Najlepiej jak sprawdzisz wszystko sam na swojej skórze. Troszkę się naszukałem z tymi linkami 🙂

  • BebeK

    Używam TrueCrypt v4.2a na Ubuntu v6.12. Zaszyfrowany mam cały dysk 80GB(RIPEMD-160/AES@ext2 żeby móc spokojnie montować system plików na Win32) a cały komputer oparty jest o Durona 1,2GHz z 256MB RAM i tak szczerze powiedziawszy to nie widzę znaczącego spadku wydajności w przypadku kopiowania na/z partycji TrueCrypt 🙂

  • Andrzej Dopierała

    Hm… trochę nieścisła jest nazwa artykułu. Trudno taki dm-crypt nazwać „systemem plików”, z uwagi na to że szyfruje on raczej urządzenie blokowe, z którego później można dowolnie skorzystać – tak samo jak z normalnej partycji/volumenu.
    Można na nim utworzyć dowolny system plików(xfs, ext3, nawet fat ;), dodać go do lvm-a, utworzyć swap… Cokolwiek.

    A co do wydajności – na athlonie 2000 wydajność zapisu/odczytu na taki szyfrowany przez dmcrypt volumen to kilkanaście MB/s. Wydajność zapisu/odczytu bez szyfrowania to z tego co pamiętam ok 25MB/s. Czyli – spadek wydajności (a raczej wzrost obciązenia procesora przy korzystaniu) jest widoczny, ale… pomijalny jeżeli chodzi o serwer sieciowy itepe 😉

  • MAcks

    W ocenie szybkości szyfrowania może pomóc openssl:

    $ openssl speed blowfish aes

    The ‚numbers’ are in 1000s of bytes per second processed.
    type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
    blowfish cbc 28097.51k 30167.91k 30769.16k 30960.52k 30974.47k
    aes-128 cbc 15040.63k 26964.54k 33514.91k 35772.30k 36477.53k
    aes-192 cbc 14057.12k 23770.88k 28799.49k 30516.57k 30977.19k
    aes-256 cbc 13060.82k 21379.09k 25146.85k 26416.48k 26821.32k

    Test przeprowadzony na PIII 866 MHz.

  • jell

    „Crypto-FS przed zapisaniem pliku na dysku wpierw szyfruje jego nazwę z użyciem Base-64.”

    base-64 nie jest formatem szyfrowania, a jedynie kodowania. podobnie jak „szyfr cezara” 🙂