我一直在尝试加密一个空目录。这涉及三个步骤。
步骤 1. 从用户处读取密钥并使用以下方式包装密码
time printf "%s\n%s" <user key> <wrap phrase> | ecryptfs-wrap-passphrase <tmp wrap file> -
步骤 2.使用以下命令将密钥插入内核密钥环
time echo -n <wrap phrase> | ecryptfs-insert-wrapped-passphrase-into-keyring <tmp wrap file>
步骤3.执行mount命令
time mount -i -t ecryptfs /tmp/folder /tmp/folder -o with necessary options
步骤 1 - 耗时 4 秒
第 2 步 - 耗时 12 秒
步骤 3 - 耗时 141 毫秒
有人能解释一下为什么步骤 1 和步骤 2 花费更多时间吗?有什么方法可以优化吗?
提前致谢 Murali Marimekala
答案1
这些命令的作用截然不同,而且预计执行时间也不尽相同。
由于您使用了 mount 的 -i 选项,因此步骤#3 完全绕过 eCryptfs 用户空间。
步骤 1 和步骤 2 执行 CPU 密集型操作,以确保基于密码的密钥不容易被暴力破解。密钥拉伸或密钥强度是描述该过程的常用术语。
步骤#1 对一个密码执行密钥延伸。
步骤 #2 对 3 个密码执行密钥扩展。这是最初实施加密主页支持时引入的一个不幸错误的结果。密钥扩展实际上只在您称为“包装密码”的密码上才需要,但它也会发生在 fekek(文件加密密钥加密密钥)和 fnek(文件名加密密钥)上。此行为已保留以实现向后兼容性,虽然将来可能会修复,但目前没有修复它的计划。我们当然欢迎有人为上游项目贡献补丁,以不破坏向后兼容性的方式修复它。