fra*_*p21 3 linux encryption command-line gnupg passphrase
基本上我想编辑一个对称加密的文件,然后使用相同的密码再次加密它,而无需重新输入它。
它是这样的:
gpg --output $file_to_edit --decrypt $ecrypted_file
echo "Some edit" >> $file_to_edit
gpg --output $ecrypted_file --symmetric $file_to_edit
Run Code Online (Sandbox Code Playgroud)
现在,gpg询问 3 次密码(1 次用于解密,2 次用于加密)。我想要的是只输入一次密码短语(用于解密),如果正确,请再次使用它进行加密。有没有安全的方法来做到这一点?
有多种选择,但它们都可能在磁盘上留下解密文件,等待稍后取消删除。Shred 甚至可能在安全删除文件时遇到问题(如果有日志/日志、冗余写入/RAID、临时缓存、压缩文件系统),SSD 也可以静默交换扇区。即使使用tmpfs文件系统也会被写出以进行交换。您使用的编辑程序可能会留下更多的临时/缓存文件。如果你的整个文件系统和交换区都被加密了,这很有帮助,但是你真的需要更多的加密吗?
如果您只是保存基本文本(如密码),我建议您使用专门构建的程序,如 KeePass(X/XC)、LastPass 等。或者另一种加密方法,即对 eCryptfs、EncFS 或加密设备,如 LUKS 或 TrueCrypt 后继者。
但是仅使用 GPG,您可以使用以下选项之一
--passphrase-fd n
从文件描述符 n 中读取密码。只有第一行将从文件描述符 n 中读取。如果 n 使用 0,将从 STDIN 读取密码。这只能在仅提供一个密码短语时使用。
请注意,仅当还提供了选项 --batch 时才使用此密码。这与 GnuPG 1.x 版不同。
--passphrase-file file
从文件中读取密码file。只会从文件中读取第一行 file。这只能在仅提供一个密码短语时使用。显然,如果其他用户可以读取此文件,则存储在文件中的密码的安全性值得怀疑。如果可以避免,请不要使用此选项。请注意,仅当还提供了选项 --batch 时才使用此密码。这与 GnuPG 1.x 版不同。
--passphrase string
使用字符串作为密码。这只能在仅提供一个密码短语时使用。显然,这在多用户系统上的安全性非常值得怀疑。如果可以避免,请不要使用此选项。请注意,仅当还提供了选项 --batch 时才使用此密码。这与 GnuPG 1.x 版不同。
对于上述选项,您可能需要--pinentry-mode loopback(允许输入新信息,例如,如果存在冲突,则输入新文件名),--batch否则 gpg 将忽略密码短语选项并仍向代理询问密码短语(错误 IMO)。这也可能有用:
--passphrase-repeat n您只能输入一次密码read并将其存储在 shell/bash 变量中(例如$password),稍后使用--passphrase="$password". 就像是
until gpg --pinentry-mode loopback --passphrase="$password" --output $file_to_edit $ecrypted_file;
do read -r password;
done
#Got out of the loop with a correct password, now
echo "Some edit" >> $file_to_edit
gpg --pinentry-mode loopback --passphrase="$password" --output $ecrypted_file --yes --symmetric $file_to_edit
Run Code Online (Sandbox Code Playgroud)
(--yes覆盖)
| 归档时间: |
|
| 查看次数: |
8562 次 |
| 最近记录: |