我以为使用“encfsctl passwd path/to/encrypted”更改密码会更改所有文件名。但是它不起作用。有什么想法吗?
我得到了这个,所以密码更改正确:
Enter current Encfs password
EncFS Password:
Enter new Encfs password
New Encfs Password:
Verify Encfs Password:
Volume Key successfully updated.
答案1
数据加密系统(通常)不直接用密码加密数据。这样做的问题是,当密码更改时,所有数据都需要重新加密,这是一个非常繁琐的过程。(它还阻止支持多个密码。)相反,在系统初始化时会生成一个随机密钥,并使用此随机密钥加密数据。然后用密码加密随机密钥并将其存储在磁盘上。要解密数据,首先使用密码解密随机密钥,然后使用随机密钥解密数据。更改密码仅涉及重新加密此随机密钥,而不是所有数据。
这 encfs 手册页提及:
用户必须提供用于(间接)加密文件名和文件内容的密码。
这意味着它使用了这个方案。
答案2
在 EncFS 中,文件名和数据具有不同的初始化向量。这可以防止攻击者加密数据(或文件名)并将其与密文进行比较。
正如默认答案中提到的,密码实际上仅用于加密密钥。密钥用于加密数据。因此,假设您更改了密码,则可以重新加密容器内的所有数据。例如,像这样(如果包含解密文件的容器是〜/十二月/)
cd ~/dec/
mkdir _copy
cp -a ./ ./_copy/
mv ./_copy/* ./