eCryptfs encrypted home - wyjaśnienie

9

Próbuję zrozumieć, jak działa ecryptfs wewnętrznie, a dokumentacja na ecryptfs.org nie pomaga. Może ktoś jest w stanie wyjaśnić, jak to naprawdę działa. Oczywiście znam te ukryte struktury katalogów .Private / .ecryptfs. Moje pytania są bardziej szczegółowe:

  • Skąd system wie, że mój dom jest zaszyfrowany i odszyfrowuje go, gdy się loguję?
  • W jaki sposób wyszukuje kluczowe katalogi (te z zaszyfrowanymi danymi, punkt montowania (czasami jest to home, czasem / home / Private), katalog z zapakowanym hasłem itp.). Te katalogi są zazwyczaj umieszczane w /home/.ecryptfs/ i łączone z domem. Która lokalizacja jest kluczem? Czy nazwy katalogów „.ecryptfs” i „.Private” są zastrzeżone i zakodowane na stałe czy można je konfigurować?
  • O breloku: załóżmy, że mam wiele kluczy w breloku - w jaki sposób pasuje do odpowiedniego klucza z pewnym zaszyfrowanym katalogiem?
ardabro
źródło

Odpowiedzi:

11

Opisuje standardową szyfrowaną konfigurację domową. Jeśli chcesz użyć różnych haseł lub folderów, algorytmu szyfrowania, rozmiaru klucza itp., Możesz użyć mount.ecryptfsbezpośrednio.

Podczas tworzenia użytkownika z zaszyfrowanym domem lub korzystania ecryptfs-migrate-homez istniejącego użytkownika, korzysta on z eCryptfs i tworzy katalog /home/.ecryptfs/zawierający foldery z „prawdziwym domem” nowego użytkownika, /home/.ecryptfs/user/zawierające:

  • twoje rzeczywiste zaszyfrowane pliki w /home/.ecryptfs/user/.Private/katalogu konfiguracyjnym eCryptfs /home/.ecryptfs/user/.ecryptfs/zawierającym:

    • auto-mount - jeśli istnieje, mówi, ecryptfs-mount-privateaby uruchomić przy logowaniu, podłączając prywatny (domowy) folder. Widziećman ecryptfs-mount-private

    • auto-umount - jeśli istnieje, mówi ecryptfs-umount-privateo uruchomieniu przy wylogowaniu, odmontowaniu prywatnego folderu (domowego). Widziećman ecryptfs-umount-private

    • Private.mnt - plik konfiguracyjny czytany mount.ecryptfs_privateprzy logowaniu, który określa, gdzie powinien zostać podłączony zaszyfrowany katalog. Jeśli zaszyfrowałeś swój katalog domowy, tak będzie $HOME.
    • Private.sig - zawiera podpis hasła mountpoint. Zapewnia bezpieczny mechanizm eCryptfs do określania, czy używasz prawidłowego klucza, czy nie. (Zobacz Q o Private.sig i Private.mnt )
    • wrapped-passphrase - rzeczywiste (losowe) hasło eCryptfs, zaszyfrowane („opakowane”) za pomocą hasła logowania

Zwykły katalog domowy /home/user/zawiera tylko linki do /home/.ecryptfs/user/.ecryptfsi /home/.ecryptfs/user/.Privatedwa kolejne linki do pliku pomocy i /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop(po prostu działa ecryptfs-mount-private).

eCryptfs konfiguruje PAM (patrz pliki w /etc/pam.d/), aby automatycznie wyszukiwać zaszyfrowane foldery domowe /home/.ecryptfs/oraz montować i zamontować zaszyfrowane foldery domowe podczas logowania / wylogowania, w zależności od tego, czy pliki auto-mounti auto-umountistnieją. Zobacz kod źródłowy eCryptfs oraz skrypty preinst i postrm pakietu .deb (połączone powyżej), aby uzyskać więcej informacji, oraz ten klip z man ecryptfs-setup-private:

[T] on pam_ecryptfs.so moduł do stosu PAM, który automatycznie użyje hasła logowania do rozpakowania hasła montowania, dodania hasła do kluczy kluczy jądra użytkownika i automatycznego wykonania montowania. Zobacz pam_ecryptfs (8).

  • Ta strona pomocy Ubuntu zawiera wskazówki, jak „ automatycznie zamontować zaszyfrowany system plików ecryptfs podczas rozruchu ... przy użyciu /root/.ecryptfsrcpliku zawierającego opcje montowania, wraz z plikiem hasła znajdującym się na kluczu USB ”.

Po rozpakowaniu klucze są przechowywane w breloku jądra użytkownika, możesz na nie rzucić okiem keyctl show, ponieważ jeśli użyłby klucza root ( sudo keyctl show), administrator mógłby znaleźć hasło. Możesz użyć, ecryptfs-unwrap-passphraseaby zobaczyć rzeczywiste hasło ecryptfs. eCryptfs odszyfrowuje twoje pliki przy użyciu pasującego podpisu klucza (opcje ecryptfs ecryptfs_sig=(fekek_sig)i ecryptfs_fnek_sig) w pliku Private.sig.


Więcej informacji

Ubuntu ma dobre pliki pomocy, takie jak Pliki zaszyfrowane w twoim domu i eCryptfs w przewodniku po Ubuntu Server .

Arch Linux ma ogólnie doskonałą pomoc, patrz https://wiki.archlinux.org/index.php/System_Encryption_with_eCryptfs

I zobacz manstrony ecryptfs(online tam lub w systemie) i wszystkie jego narzędzia, szczególnie ecryptfs-setup-private.

Możesz dodać nowego użytkownika z zaszyfrowanym domem za pomocą adduser --encrypt-home(Aby uzyskać więcej informacji, zapoznaj się z opcją -b ecryptfs-setup-private) i sprawdź, jak pliki są konfigurowane dla siebie. Aby naprawdę zmoczyć stopy wszystkimi szczegółami, których prawdopodobnie nigdy nie chciałeś wiedzieć, zobacz kod źródłowy :

Xen2050
źródło
W / etc / crypttab mam tylko jeden wiersz dla cryptswap; także nic specjalnego w fstab. Mój dom jest zaszyfrowany. Nadal nie mam pojęcia, skąd system wie, że mój dom jest zaszyfrowany i przy logowaniu konieczne jest coś specjalnego.
ardabro,
Myślę, że dzieje się to automatycznie, gdy dom jest oglądany na @login. Czy przeczytałeś pomoc archlinux, nic tam nigdzie nie było pomocne? Ale proszę zdefiniować „coś specjalnego”, ja ani „profesor google” są z tym zaznajomieni. Skrót od „czegoś specjalnego”? Jak co?
Xen2050,
Sth special to wziąć klucz i zamontować zaszyfrowany katalog, który jest dodatkową ścieżką w procesie logowania. Arch wiki był bardzo pomocny. Ponadto przeprowadziłem dochodzenie w sprawie kodu źródłowego ecryptfs. Ale nadal nie wiem, gdzie jest kluczowa instrukcja „jeśli” w procesie logowania i co dokładnie sprawdza.
ardabro
To brzmi trochę bardziej jak sposób, w jaki linux mógłby znaleźć i używać dowolnego folderu domowego, myślę, że niektóre informacje są przechowywane /etc/passwd(przynajmniej w domu i powłoce), czy to wygląda inaczej dla zaszyfrowanego użytkownika domowego? Dodam trochę informacji o breloku jądra do mojej odpowiedzi, ecryptfs przechowuje tam klucze
Xen2050
1
Przepraszam, brakowało mi aktualizacji. Świetne wyjaśnienie. Wielkie dzięki!
ardabro