Nhà mã hóa eCryptfs - giải thích


9

Tôi đang cố gắng hiểu làm thế nào ecryptfs hoạt động nội bộ và tài liệu trên ecryptfs.org không giúp đỡ. Có lẽ ai đó có thể giải thích làm thế nào nó thực sự hoạt động. Tất nhiên tôi biết về các cấu trúc thư mục .Private / .ecryptfs ẩn này. Câu hỏi của tôi chi tiết hơn:

  • Làm thế nào để hệ thống biết rằng nhà tôi được mã hóa và giải mã nó khi tôi đăng nhập?
  • Làm thế nào để nó tìm kiếm các thư mục chính (những người có dữ liệu được mã hóa, mountpoint cho nó (đôi khi nó là nhà, đôi khi / home / Private), thư mục có cụm mật khẩu được bọc, v.v.). Các thư mục này thường được đặt trong /home/.ecryptfs/ và được liên kết vào nhà. Vị trí nào là chìa khóa? Các tên thư mục ".ecryptfs" và ".Private" có được bảo lưu và mã hóa cứng hoặc cấu hình không?
  • Về khóa: giả sử tôi có nhiều khóa trong khóa của mình - làm thế nào để khớp khóa đúng với thư mục được mã hóa nhất định?

Câu trả lời:


11

Điều này mô tả các thiết lập nhà được mã hóa tiêu chuẩn. Nếu bạn muốn sử dụng các cụm mật khẩu hoặc thư mục khác nhau, thuật toán mã hóa, kích thước khóa, v.v ... bạn có thể sử dụng mount.ecryptfstrực tiếp.

Khi bạn tạo một người dùng có một ngôi nhà được mã hóa hoặc sử dụng ecryptfs-migrate-hometrên một người dùng hiện có, nó sẽ sử dụng eCryptfs và thiết lập một thư /home/.ecryptfs/mục chứa các thư mục với "ngôi nhà thực sự" của người dùng mới, /home/.ecryptfs/user/chứa:

  • các tệp được mã hóa thực tế của bạn /home/.ecryptfs/user/.Private/và thư mục cấu hình eCryptfs /home/.ecryptfs/user/.ecryptfs/chứa:

    • tự động gắn kết - nếu nó tồn tại, nó ecryptfs-mount-privatesẽ chạy khi đăng nhập, gắn thư mục riêng (nhà). Xemman ecryptfs-mount-private

    • auto-umount - nếu nó tồn tại, nó ecryptfs-umount-privatesẽ chạy khi đăng xuất, ngắt kết nối thư mục riêng (nhà). Xemman ecryptfs-umount-private

    • Private.mnt - một tệp cấu hình được đọc bởi mount.ecryptfs_privatelúc đăng nhập xác định nơi thư mục được mã hóa của bạn sẽ được gắn kết. Nếu bạn đã mã hóa thư mục nhà của bạn, điều này sẽ được $HOME.
    • Private.sig - chứa chữ ký của cụm mật khẩu mountpoint. Nó cung cấp một cơ chế an toàn, bảo mật cho eCryptfs để xác định xem bạn có đang sử dụng khóa chính xác hay không. (Xem Q về Private.sig và Private.mnt )
    • cụm mật khẩu được bao bọc - cụm mật khẩu eCryptfs thực tế (ngẫu nhiên), được mã hóa ("bọc") với cụm mật khẩu đăng nhập của bạn

Các thư mục chính thường xuyên tại /home/user/chỉ chứa liên kết tới /home/.ecryptfs/user/.ecryptfs/home/.ecryptfs/user/.Privatevà nhiều hơn nữa hai liên kết đến một tập tin trợ giúp & /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop(chỉ cần chạy ecryptfs-mount-private).

eCryptfs thiết lập PAM (xem tệp trong /etc/pam.d/) để tự động tìm kiếm các thư mục nhà được mã hóa trong /home/.ecryptfs/và gắn kết & umount các thư mục nhà được mã hóa khi đăng nhập / đăng xuất, tùy thuộc vào việc có auto-mountauto-umountcác tệp tồn tại hay không . Xem mã nguồn eCryptfs và các tập lệnh preinst và postrm của gói .deb (được liên kết ở trên) để biết thêm chi tiết và clip này từ man ecryptfs-setup-private:

[T] anh mô-đun pam_ecryptfs.so vào ngăn xếp PAM sẽ tự động sử dụng cụm mật khẩu đăng nhập để mở cụm mật khẩu gắn kết, thêm cụm mật khẩu vào khóa nhân của người dùng và tự động thực hiện việc gắn kết. Xem pam_ecryptfs (8).

  • Trang trợ giúp Ubuntu này có hướng dẫn về cách " tự động gắn hệ thống tệp được mã hóa ecryptfs khi khởi động ... bằng cách sử dụng /root/.ecryptfsrctệp chứa tùy chọn gắn kết, cùng với tệp cụm mật khẩu nằm trên khóa USB. "

Sau khi được mở khóa, các khóa được lưu trữ trong khóa nhân người dùng của bạn, bạn có thể xem qua keyctl show, vì nếu nó sử dụng khóa gốc ( sudo keyctl show), quản trị viên có thể tìm ra cụm mật khẩu. Bạn có thể sử dụng ecryptfs-unwrap-passphraseđể xem cụm mật khẩu ecryptfs thực tế. eCryptfs giải mã các tệp của bạn bằng chữ ký khóa phù hợp (tùy chọn ecryptfs ecryptfs_sig=(fekek_sig)ecryptfs_fnek_sig) trong tệp Private.sig.


Thêm thông tin

Ubuntu có các tệp trợ giúp tốt như các tệp được mã hóa trong Trang chủ của bạneCryptfs trong hướng dẫn Máy chủ Ubuntu .

Arch Linux có một số trợ giúp tuyệt vời nói chung, hãy xem https://wiki.archlinux.org/index.php/System_Encrypt_with_eCryptfs

Và xem các mantrang cho ecryptfs(trực tuyến ở đó hoặc trên hệ thống của bạn) và đặc biệt là tất cả các công cụ của nó ecryptfs-setup-private.

Bạn có thể thêm người dùng mới với một ngôi nhà được mã hóa bằng cách sử dụng adduser --encrypt-home(Để biết thêm thông tin, hãy tham khảo tùy chọn -b của ecryptfs-setup-private) và xem cách các tệp được thiết lập cho chính bạn. Và để thực sự bị ướt chân với tất cả các chi tiết có thể bạn không bao giờ muốn biết, hãy xem mã nguồn :


Trong / etc / crypttab tôi chỉ có một hàng cho cryptswap; không có gì đặc biệt trong fstab cũng có. Nhà tôi được mã hóa. Vẫn không biết làm thế nào để hệ thống biết rằng nhà của tôi được mã hóa và sth đặc biệt là cần thiết khi đăng nhập.
ardabro

Tôi nghĩ rằng nó tự động được thực hiện khi ngôi nhà được nhìn vào @login. Bạn đã đọc qua sự giúp đỡ của archlinux, không có gì ở đó là hữu ích? Nhưng vui lòng xác định "sth đặc biệt", tôi và "giáo sư google" đều quen thuộc với nó. Viết tắt của "cái gì đó đặc biệt"? Như thế nào?
Xen2050

Điều đặc biệt là lấy chìa khóa và gắn thư mục được mã hóa, đây là đường dẫn bổ sung trong quá trình đăng nhập. Arch wiki rất hữu ích. Ngoài ra, tôi đã thực hiện một số điều tra trong mã nguồn ecryptfs. Nhưng tôi vẫn không biết hướng dẫn "nếu" chính ở đâu trong quá trình đăng nhập và chính xác thì nó kiểm tra cái gì.
ardabro

Nghe có vẻ giống như cách linux sẽ tìm và sử dụng bất kỳ thư mục nhà nào, tôi nghĩ rằng một số thông tin được lưu trữ trong /etc/passwd(ít nhất là nhà & vỏ), điều đó có khác với người dùng gia đình được mã hóa không? Tôi cũng sẽ thêm một chút thông tin về khóa nhân vào câu trả lời của mình, ecryptfs lưu trữ khóa ở đó rõ ràng
Xen2050

1
Xin lỗi, tôi đã bỏ lỡ bản cập nhật. Giải thích tuyệt vời. Cảm ơn nhiều!
ardabro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.