我试图了解 ecryptfs 的内部工作原理,但 ecryptfs.org 上的文档没有帮助。也许有人可以解释它到底是如何工作的。当然,我知道这些隐藏的 .Private / .ecryptfs 目录结构。我的问题更详细:
- 当我登录时,系统如何知道我的主页已加密并解密?
- 它如何搜索关键目录(包含加密数据的目录、其挂载点(有时是 home,有时是 /home/Private)、包含包装密码的目录等)。这些目录通常放在 /home/.ecryptfs/ 中并链接到 home。哪个位置是关键?“.ecryptfs”和“.Private”目录名称是保留的和硬编码的还是可配置的?
- 关于密钥环:假设我的密钥环中有多个密钥 - 它如何将正确的密钥与某个加密目录匹配?
答案1
这描述了标准的加密主目录设置。如果您想使用不同的密码或文件夹、加密算法、密钥大小等……您可以使用mount.ecryptfs
直接地。
当你创建一个具有加密主目录的用户,或者ecryptfs-migrate-home
在现有用户上使用时,它会使用 eCryptfs 并设置一个目录,/home/.ecryptfs/
其中包含新用户“真实主目录”的文件夹,/home/.ecryptfs/user/
包含:
你的实际加密文件
/home/.ecryptfs/user/.Private/
和 eCryptfs 配置目录/home/.ecryptfs/user/.ecryptfs/
包含:自动挂载- 如果存在,它会告诉
ecryptfs-mount-private
在登录时运行,安装私人(主)文件夹。参见man ecryptfs-mount-private
自动卸载- 如果存在,它会告诉
ecryptfs-umount-private
在注销时运行,卸载私人(主)文件夹。请参阅man ecryptfs-umount-private
- 私人.mnt- 登录时读取的配置文件
mount.ecryptfs_private
,定义应将加密目录挂载到何处。如果您已加密主目录,则该文件为$HOME
。 - 私人签名- 包含挂载点密码的签名。它为 eCryptfs 提供了一种安全可靠的机制来确定如果您是否使用了正确的密钥。(请参阅关于 Private.sig 和 Private.mnt 的问题)
- 包装密码- 实际的(随机)eCryptfs 密码,使用您的登录密码加密(“包装”)
常规主目录/home/user/
仅包含指向和的链接
/home/.ecryptfs/user/.ecryptfs
以及/home/.ecryptfs/user/.Private
另外两个指向帮助文件 & 的链接/usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop
(仅运行ecryptfs-mount-private
)。
eCryptfs 设置聚丙烯酰胺(参见 中的文件/etc/pam.d/
)在登录/注销时自动查找 中的加密主文件夹并挂载和卸载加密主文件夹,具体取决于和文件/home/.ecryptfs/
是否存在。有关更多详细信息,请参阅 eCryptfs 源代码和 .deb 包的 preinst 和 postrm 脚本(链接见上文),以及来自auto-mount
auto-umount
man ecryptfs-setup-private
:
pam_ecryptfs.so 模块添加到 PAM 堆栈中,它将自动使用登录密码来解开挂载密码,将密码添加到用户的内核密钥环,并自动执行挂载。请参阅 pam_ecryptfs(8)。
- 这个 Ubuntu 帮助页面有关于如何“在启动时自动挂载 ecryptfs 加密文件系统...使用
/root/.ecryptfsrc
包含挂载选项的文件以及驻留在 USB 密钥上的密码文件。“
一旦解开包装,密钥就会存储在您的用户内核密钥环中,您可以使用 查看它keyctl show
,因为如果它使用根密钥环(sudo keyctl show
),管理员可以找出密码。您可以使用查看实际的 ecryptfs 密码。eCryptfs 使用文件中的ecryptfs-unwrap-passphrase
匹配密钥签名(ecryptfs 选项ecryptfs_sig=(fekek_sig)
和)解密您的文件。ecryptfs_fnek_sig
Private.sig
更多信息
Ubuntu 有很好的帮助文件,例如家中的加密文件和Ubuntu 服务器指南中的 eCryptfs。
Arch Linux 有一些普遍出色的帮助,请参阅https://wiki.archlinux.org/index.php/System_Encryption_with_eCryptfs
man
并查看ecryptfs
(在线或在你的系统上)及其所有工具,尤其是ecryptfs-setup-private
。
adduser --encrypt-home
您可以使用以下方式添加具有加密主目录的新用户(有关更多信息,请参阅ecryptfs-setup-private
)并查看如何为自己设置文件。要真正了解您可能从未想知道的所有细节,请参阅源代码:
ecryptfs-设置-私有来自 Dustin Kirlkand 在 github 上的镜像
Ubuntu 源代码
ecryptfs-utils
(乌托邦发布中)-
ecryptfs-utils 用户空间代码存储在 Launchpad/Bazaar 中,可以通过以下方式获取:
https://code.launchpad.net/~ecryptfs/ecryptfs/trunkecryptfs 内核代码存储在 Git/Kernel.org 中,可以通过以下方式获取:
https://git.kernel.org/?p=linux/kernel/git/tyhicks/ecryptfs.git;a=summary