我有一个受集市版本控制的文本文件目录,并在我的每台计算机上保留一个副本(实际上是一个分支)。我想通过命令行加密和解密目录。
理想情况下,我还可以在注销时运行一个脚本来检查目录是否已加密,如果没有则对其进行加密,所有这些都无需用户干预。但是,我不希望在登录时解密该目录。 (我希望该脚本能够防止忘记手动加密。这对于上网本尤其重要。)
我正在运行crunchbang linux 的两个版本,一个是 Debian Squeeze 存储库 6 月底快照的ubuntu 10.04.1
衍生版本。ubuntu 9.04
做这个的最好方式是什么?
(我尝试使用 和 进行标记encryption
,directories
但缺少创建标记的代表。)
答案1
您有机器的管理访问权限吗?人们可以使用加密的环回设备。例子:
为加密的文件系统创建一个容器文件:
dd if=/dev/urandom of=container bs=1024k count=100
将容器文件绑定到环回设备 0:
losetup container /dev/loop0
创建加密设备(-y 要求输入密码两次;行由 分割\
):
cryptsetup -c serpent-xts-essiv:sha256 -b 512 \
-y create container /dev/loop0
在加密设备上创建 ext2 文件系统(实际上可以使用任何东西):
mkfs.ext2 /dev/mapper/container
将加密文件系统安装到 crypt 目录:
mount /dev/mapper/container crypt
以供参考:
man cryptsetup && man losetup
此外,请阅读密码学最佳实践,了解有关选择要使用的密码和密钥长度等的信息。
答案2
看来您所追求的不是一种加密和解密目录的方法,而是一种透明地使用加密存储的方法。请注意,您提出的方案(具有实际的大规模解密和加密功能)并不是很安全:如果您不正常注销(电源故障、系统崩溃、笔记本电脑被盗...),它会使内容处于未加密状态;并且它会留下机密数据的痕迹,坚定的攻击者可以找到这些痕迹(已擦除文件中的数据仍然在磁盘上,只是很难找到)。
当前的Linux系统提供了多种方法来实现透明加密。您可以使用以下方法加密整个卷dm 密码或其替代方案之一。有多种工具可用于加密特定目录树,包括加密文件系统(在内核级别工作)和环境文件系统(它纯粹通过熔断器在用户区工作)。 (我提到的三个在 Debian lenny 中都可用,并且您的所有发行版都应该提供。)
libpam-mount
您可以通过 PAM(程序包;ecryptfs 的推荐选项)或配置文件脚本(encfs 的推荐选项)设置要安装的加密目录。请注意,“忘记手动加密”并不存在问题,因为没有任何内容未加密地写入磁盘。
为了获得最佳保护,您不仅应该加密机密文件,还应该加密程序可能存储机密数据的其他位置。至少,您应该加密您的交换分区。其他需要注意的地方包括/tmp
(最好通过制作它来解决tmpfs
),/var/spool/cups
如果您打印机密文档,以及主目录中的每个应用程序文件,例如网络缓存/历史记录(例如~/.mozilla
)。
答案3
答案4
您还可以使用 ecryptfs,它是 Ubuntu 及其派生发行版的标准配置。这就是当安装过程询问您是否要加密您的主目录时所使用的内容(http://www.linuxjournal.com/article/9400)。 ecryptfs 的优点是您不需要单独的分区,也不需要环回安装的文件来使用它。