Jak utworzyć zaszyfrowany system plików w pliku?

16

Znalazłem ten interesujący samouczek na blogu flossstuff .

Wyjaśnia, jak utworzyć pusty plik, sformatować go jako ext4 i zamontować jako urządzenie.

Chciałbym wiedzieć, czy można go utworzyć jako zaszyfrowany system plików ext4.

Próbowałem użyć palimpsest (narzędzie dyskowe znalezione w menu System), aby sformatować już utworzony system plików, ale nie działa, ponieważ wykrywa używany system plików.

Jeśli spróbuję odmontować system plików, to też nie zadziała, ponieważ nie wykrywa urządzenia (ponieważ nie jest to prawdziwe urządzenie, takie jak dysk twardy lub dysk USB).

Więc moje pytanie brzmi: czy istnieje opcja stworzenia systemu plików zaszyfrowanego od samego początku? Użyłem tych poleceń:

Utwórz pusty plik Rozmiar 200 Mb:

dd if=/dev/zero of=/path/to/file bs=1M count=200

Zrób to ext4:

mkfs -t ext4 file

Zamontuj go w folderze w moim domu:

sudo mount -o loop file /path/to/mount_point

Czy istnieje sposób, w jaki mkfspolecenie może utworzyć zaszyfrowany system plików ext4 z prośbą o hasło deszyfrujące?

Planuję wykorzystać to jako sposób szyfrowania plików w Dropbox.

Animaletdesequia
źródło
Jeśli chcesz mieć odpowiednie szyfrowanie podczas tworzenia kopii zapasowej plików, możesz zamiast tego rozważyć SpiderOak. Większe bezpieczeństwo i mniej zamieszania.
landroni

Odpowiedzi:

8

Możesz użyć cryptmountdo zaszyfrowania systemu plików, także jeśli system plików znajduje się w pliku.

Strona cryptmountpodręcznika zawiera bardzo proste i szczegółowe wyjaśnienie, które tutaj zgłaszam (zmodyfikowałem), i wyraźnie wspomina system plików oparty na plikach.

  • Krok 1
    Dodaj wpis w /etc/cryptmount/cmtabnastępujący sposób:

    mycrypt {
        dev=/media/data/mycrypt dir=/home/enzotib/mycrypt
        fstype=ext4 mountoptions=defaults cipher=twofish
        keyfile=/etc/cryptmount/mycrypt.key
        keyformat=builtin
    }
    

    gdzie /media/data/mycryptjest plikiem pomocniczym utworzonym przez ddi /home/enzotib/mycryptjest pożądanym punktem montowania.

  • Krok 2
    Wygeneruj tajny klucz deszyfrujący

    sudo cryptmount --generate-key 32 mycrypt
    
  • Krok 3
    Wykonaj następujące polecenie

    sudo cryptmount --prepare mycrypt
    

    zostaniesz poproszony o podanie hasła użytego podczas konfigurowania klucza

  • Krok 4
    Utwórz system plików

    sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • Krok 5
    Wykonaj

    sudo cryptmount --release mycrypt
    
  • Krok 6
    Teraz zamontuj system plików

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    następnie odmontuj to

    cryptmount -u mycrypt
    

Ponadto, jeśli musisz zaszyfrować katalog, encfswarto wziąć to pod uwagę.

enzotib
źródło
Dzięki za odpowiedź, utworzyłem system plików, zaszyfrowałem i przesłałem do Dropbox. Później spróbuję zamontować ten plik na innym komputerze. Tylko jedna rzecz, czy można tego dokonać bez sudo? Jeśli chcę zachować plik i system plików zamontowany w moim domu (nie w mediach takich jak USB lub dysk twardy), polecenia byłyby takie same bez sudo, czy też cryptmount zawsze potrzebuje uprawnień roota?
animaletdesequia
1
@ rodzic: wydaje się, że polecenie wymaga uprawnień administratora tylko w konfiguracji systemu plików, ale podłączanie / odmontowywanie jest działaniem użytkownika, pod warunkiem, że plik obrazu i punkt podłączenia są własnością użytkownika. Aby skonfigurować ten sam plik obrazu na innym komputerze, przypuszczam, że powinieneś skopiować /etc/cryptmount/mycrypt.keyi pominąć --generate-keykrok.
enzotib
Otrzymuję ten błąd w ostatnim kroku: $ sudo cryptmount -m encriptat Wpisz hasło dla docelowego „encriptat”: e2fsck 1.41.14 (22 grudnia 2010) fsck.ext4: Súperbloc no vàlid, provant els blocks de còpia de seguretat. .. fsck.ext4: Zła liczba magiczna w superbloku i intranet obrir / dev / mapper / encriptat
animaletdesequia
1
@ rodzic: czy utworzyłeś system plików, jak pokazano w kroku 4? czy konsekwentnie zastępujesz nazwę „mycrypt” nazwą „encriptat”?
enzotib
Przepraszamy, błąd polegał na tym, że zamiast (sudo mkfs.ext4 / dev / mapper / mycrypt) pisałem (sudo mkfs.ext4 mycript). Bezpośrednio szukałem pliku, a nie urządzenia. Teraz działa idealnie. I przepraszam za format tej wiadomości, nie wiem, dlaczego nie mogę rozdzielić linii (jeśli naciśniemy Enter, opublikuje komentarz zamiast utworzyć nową linię, może usterka firefoxa ...) Na zdrowie! EDYCJA: teraz przeczytałem twoją odpowiedź, nazwa encriptat nie była problemem (po prostu dostosowałem twój post i umieściłem pliki z katalońskimi nazwami, ale wszystko jest spójne). Everithing działa teraz dobrze, jeszcze raz dziękuję :)
animaletdesequia
7

Wykonaj kolejne kroki, aby utworzyć zaszyfrowany plik z systemem plików wewnątrz:

1. Szybszym sposobem utworzenia pliku o danym rozmiarze jest:

fallocate -l 128M /path/to/file

2. Utwórz partycję LUKS (Linux Unified Key Setup) w pliku za pomocąnarzędzi dm-crypt :

cryptsetup -y luksFormat /path/to/file

Możesz sprawdzić, czy plik jest zaszyfrowanym kontenerem:

/path/to/file: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 7e2af5a1-3fab-43ea-a073-3b9cc6073f00

3) Otwórz zaszyfrowany pojemnik:

cryptsetup luksOpen /path/to/file data

datato nazwa woluminu mapowania urządzenia. Możesz wybrać inną nazwę.

Spowoduje to otwarcie urządzenia LUKS i odwzorowanie go na podaną przez nas nazwę, w naszym przypadku utworzenie pliku pod adresem /dev/mapper/data.

4. Utwórz ext4system plików na tym urządzeniu:

mkfs.ext4 /dev/mapper/data

5. Następnie utwórz punkt montowania:

mkdir /path/to/mount

6. I zamontuj tam urządzenie:

mount /dev/mapper/data /path/to/mount

7. Aby odmontować system plików i zamknąć urządzenie LUKS:

umount /path/to/mount
cryptsetup luksClose data

Teraz zaszyfrowałeś kontener LUKS z systemem plików ext4. Jeśli chcesz go użyć, po prostu powtórz kroki 3 i 6. Po zakończeniu zadzwoń do kroku 7.

Ten artykuł był dla mnie bardzo pomocny.

Również pewnego dnia w twoim pojemniku zabraknie miejsca. Załóżmy, że rozmiar pliku zaszyfrowanego kontenera wynosi 128 MB i chcemy zwiększyć jego rozmiar do 512 MB. Aby zwiększyć jego pojemność, wykonaj następujące kroki:

1. Odmontuj i zamknij urządzenie LUKS (patrz krok 7 na powyższej liście).

2. Zwiększ rozmiar pliku kontenera:

 dd if=/dev/zero of=/path/to/file bs=384M count=1 oflag=append conv=notrunc

3. Otwórz urządzenie LUKS.

cryptsetup luksOpen /path/to/file data

4. Zmień rozmiar urządzenia LUKS, aby dopasować rozmiar pliku kontenera. Ze strony podręcznika:

Jeśli --size (w sektorach) nie jest określony, używany jest rozmiar podstawowego urządzenia blokowego.

Możesz więc po prostu:

cryptsetup resize data

5. Następnie zmień rozmiar systemu plików ext4:

e2fsck -f /dev/mapper/data
resize2fs /dev/mapper/data

6. Teraz możesz ponownie zamontować system plików:

mount /dev/mapper/data /path/to/mount
mixel
źródło
1
Myślę, że ta odpowiedź jest najlepszą i najbardziej aktualną odpowiedzią. Należy wybrać prawidłową odpowiedź!
yurtesen