gocryptfs
来自 gocryptfs
- gocryptfs 使用基于文件的加密,它被实现为一个可挂载的 FUSE 文件系统。gocryptfs 中的每个文件在硬盘上存储为一个相应的加密文件。
- 其亮点包括:Scrypt 密码哈希,所有文件内容的 GCM 加密,以及文件名使用每目录 IV 的 EME 宽块加密。
请参阅 gocryptfs 项目主页以进一步了解其特性、基准测试等。另请参阅 静态数据加密#比较表格 以获取替代方法的概述,以及 EncFS 以了解直接的替代方案。
安装
安装 gocryptfs 或 gocryptfs-gitAUR。
作为一个 FUSE 文件系统,gocryptfs 完全由用户配置,并将其配置文件存储在用户的目录路径中。
用法
首先查看 gocryptfs(1) 及其示例。作为首次用户,接下来请查看 gocryptfs 最佳实践。
在目录的密码学初始化时,主密钥会在以加密方式包装在 gocryptfs.conf
文件中之前输出。它可用于通过恢复程序重新创建配置。如果主密钥本身丢失但配置文件可用,请参阅 gocryptfs-xray(1) 以了解如何使用加密密码再次输出它。
- 执行
gocryptfs -speed
以测试可用加密模式的吞吐量。自动选择将选择系统可用的最快模式。 -fido2
选项允许使用 U2F 硬件令牌来方便地初始化和挂载加密数据。
使用普通模式的示例
创建 cipher
目录来存储加密数据,以及 plain
目录来访问解密后的数据。然后,运行 gocryptfs 初始化来设置加密。
$ mkdir cipher plain $ gocryptfs -init cipher Choose a password for protecting your files. Password: Repeat: Your master key is: [...]
要打开加密目录 cipher
并从 plain
访问它
$ gocryptfs cipher plain Password: Decrypting master key Filesystem mounted and ready
现在您有了一个正常工作的 gocryptfs,它存储在 cipher
中并挂载到 plain
。您可以通过在 plain
目录中创建一个空白文件来验证这一点。该文件将以加密形式显示在 cipher
目录中。
$ touch plain/test.txt $ ls cipher gocryptfs.conf gocryptfs.diriv ZSuIZVzYDy5-TbhWKY-ciA==
使用反向模式的示例
基于文件的加密方法的主要应用是加密备份。基于 FUSE 的文件系统在这方面很灵活,因为它们允许使用标准工具进行各种备份目标。例如,gocryptfs 加密的 FUSE 挂载点可以轻松地直接在 Samba/NFS 共享或 Dropbox 位置上创建,使用 rsync 同步到远程主机,或者只是手动复制到远程备份存储。
gocryptfs.conf
文件为了方便起见存储在备份目录中。如果您将 gocryptfs.conf
文件上传到在线源,如果您的密码已知或被破解,您的备份可能会被解密。使用强密码会降低成功攻击的几率。 [1] 您可以选择使用来自其他位置的 gocryptfs.conf
文件,方法是提供 -config
选项以及配置文件的路径。gocryptfs 的反向模式对于创建加密备份特别有用,因为它几乎不需要在要备份的机器上增加额外的存储容量。
以下示例显示了用户 archie 创建 /home/archie
备份的情况
首先,archie 初始化 home 目录的配置
$ gocryptfs -init -reverse /home/archie
Choose a password for protecting your files. Password: ...
其次,为 home 目录的加密视图创建一个空目录并挂载
$ mkdir /tmp/crypt $ gocryptfs -reverse /home/archie /tmp/crypt Password: Decrypting master key Your master key is: ... Filesystem mounted and ready. $
- 为了考虑到上述警告,可以在初始化期间使用
-config /home/archie/gocryptfs.conf
,从而也反向加密配置文件。 - 有许多选项可用于从反向挂载中排除文件或目录;请参阅 gocryptfs(1) § EXCLUDING_FILES。请注意,如果仅在稍后进行排除,则使用 rsync 等软件可能会发生错误或警告。[2]
第三,archie 创建加密目录的备份,在本示例中是一个简单的本地副本
$ cp -a /tmp/crypt /tmp/backup
完成。
加密目录可以保持挂载以用于用户会话,或者手动卸载
$ fusermount -u /tmp/crypt $ rmdir /tmp/crypt
要从加密备份还原,请使用 gocryptfs 的普通模式挂载一个纯文本视图
$ mkdir /tmp/restore $ gocryptfs /tmp/backup/ /tmp/restore Password: Decrypting master key ... Filesystem mounted and ready. $
现在可以还原所需的文件。
使用 FIDO2 选项的示例
可以使用 U2F 硬件令牌(而不是密码)来初始化和挂载加密目录。可以强制或切换 FIDO2 令牌选项,以在解密时进行 PIN/用户存在(触摸)/用户验证(指纹)验证(请参阅 fido2-assert(1))。
以下示例使用令牌和 PIN 验证初始化、挂载和卸载加密目录
$ gocryptfs -init -fido2 /dev/hidraw0 -fido2-assert-option pin=true crypt FIDO2 Register: interact with your device ... Enter PIN for /dev/hidraw0: FIDO2 Secret: interact with your device ... Enter PIN for /dev/hidraw0: Your master key is: ea6d7d00-... $ gocryptfs -fido2 /dev/hidraw0 crypt plain FIDO2 Secret: interact with your device ... Enter PIN for /dev/hidraw0: Decrypting master key Filesystem mounted and ready. $ fusermount -u plain
使用了用户存在交互(interact with your device ...
),因为令牌默认为此设置。在初始化期间使用 -fido2-assert-option up=false
选项将切换它。
$ gocryptfs -masterkey=ea6d7d00-e2187a69-fab9c952-223e7821-16fb0ac2-ae4ffa1e-5469f9f1-2a7b051c crypt plain Using explicit master key. THE MASTER KEY IS VISIBLE VIA "ps ax" AND MAY BE STORED IN YOUR SHELL HISTORY! ONLY USE THIS MODE FOR EMERGENCIES Filesystem mounted and ready.
使用 pam_mount 自动挂载
如果您的加密目录使用与您的用户帐户相同的密码,您可以使用 pam_mount 在登录时自动挂载它。
虽然 gocryptfs 命令在直接调用时适用于 fuse3,但 pam_mount 尝试使用 fuse2 中的 mount.fuse
。
您需要按照 pam_mount#Login manager configuration 中的指定将 pam_mount 添加到 /etc/pam.d/system-login
,然后您必须在 /etc/security/pam_mount.conf.xml
配置文件中配置要挂载的特定目录。下面给出一个示例
/etc/security/pam_mount.conf.xml
<!-- Example using gocryptfs --> <volume fstype="fuse" mountpoint="/home/YOURUSER/plain" path="/usr/bin/gocryptfs#/home/YOURUSER/cipher" options="nodev,nosuid" user="YOURUSER" />
GUI 封装器
有一些应用程序可为 gocryptfs 提供图形用户界面。
SiriKali
一个 Qt/C++ GUI 应用程序,用于管理 gocryptfs、eCryptfs、cryfs、EncFS、fscrypt 和 securefs 加密文件夹。它还可以使用 SSHFS 连接到 SSH 服务器。从 sirikaliAUR 安装它。
gocryptfs-ui
一个 bash 脚本 gocryptfs-ui 提供了一个围绕 gocryptfs 命令行实用程序的简单 zenity GUI,用于挂载和卸载加密目录。它包括一个桌面启动器。从 gocryptfs-uiAUR 安装它。
cryptor
cryptor 是一个基于 vala/gtk3 的应用程序,提供了一个 GUI 来创建和挂载加密目录。它可以存储包含加密目录列表的配置文件,具有托盘图标支持,并包含一个桌面启动器。从 cryptorAUR 安装它。