我有几个关于使用对称加密的 gpg/gpg2 安全性的问题。这些问题(我想)非常基础,所以如果它们在某处有文档记录,我深表歉意。问题是,我不知道该搜索什么才能找到答案。
按以下方式使用 gpg2:
gpg2 -c file.txt
仅有的使用我提供的密钥,使用默认密码 (CAST5) 加密文件
stdin
仅有的,并且 什么也没有如何处理我用户的 RSA/SHA 密钥,即在任何其他机器上使用 gpg2 与任何其他用户解密文件绝对没问题吗?(我想让它签署文件会涉及到这个细节,但我对此不感兴趣。)- 手册页说使用该
--cipher-algo
参数违反了 OpenPGP 标准;为什么?我将其设置为其他密码有什么问题? - 我有这种(可能很可悲的)感觉,AES256 是实现最大安全性的途径;它和 CAST5 在安全性方面是否存在显著差异或我应该注意的事项?
- 为什么要签署文件?
任何帮助将非常感激!
答案1
以以下方式使用 gpg2: gpg2 -c file.txt 仅使用我在 stdin 上提供的密钥,使用默认密码 (CAST5) 加密文件,与我的用户的 RSA/SHA 密钥毫无关系 [...]
正确的。
手册页说使用 --cipher-algo 参数违反了 OpenPGP 标准;为什么?
手册页没有提到这一点,只是说它“允许您违反 OpenPGP 标准”。原因是您的版本pgp2
可能支持不属于 OpenPGP 标准的密码;如果您使用这些密码,则违反了标准(其他人可能无法解密您的消息)。如果您不使用该选项,pgp2
将自动使用标准中的密码。
我有这种(可能很可悲的)感觉,AES256 是实现最大安全性的途径;它和 CAST5 在安全性方面是否存在显著差异或我应该注意的事项?
好吧,关于密码的安全性,唯一可以确定的是是否有任何已知的攻击。目前还没有针对 AES-256 或 CAT-5 的攻击(至少没有实际攻击),因此两者都被认为是安全的。除此之外的一切都只是猜测。
为什么要签署文件?
对文件进行签名可证明该文件是由拥有私钥的人签名的。这可以确保数据未被篡改;这通常与加密无关(加密可确保没有密钥的人无法读取消息)。因此,两者有不同的目标(尽管它们经常一起使用)。
比如:你对一份合同进行加密,是为了保证合同的保密性;你签署一份合同,是为了给别人一个你已阅读并同意的证明,防止别人对合同进行修改。
答案2
正确。仅使用提供的密钥和算法来加密。
OpenPGP 不支持与 GnuPG2 相同的所有算法;您可以创建收件人无法阅读的完全有效的消息。
AES-256 据称更强大一些,但 CAST5 通常也足够好了。
这样就可以证明它们没有被篡改过。