使用 GPG 加密 3 次是否更安全?

信息安全 加密 gnupg 算法
2021-09-10 17:05:16

假设我们使用 3 个不同长度的密码和 3 个不同的算法来加密敏感数据,例如:

  • gpg --symmetric --cipher-algo CAMELLIA256 < input.zip > output1(随机 100 个字符长度的密码)

  • gpg --symmetric --cipher-algo AES256 < output1 > output2(随机 150 个字符长度的密码)

  • gpg --symmetric --force-mdc --s2k-mode 3 --s2k-count 65011712 < output2 > output3 (随机 200 个字符长度的密码)

这是比仅使用 2. 步骤更好的解决方案吗?还是只是浪费时间?这是不是更脆弱?

2个回答

您可能会惊讶地发现答案是“您可能不太安全”。

安全性不仅仅是问“其他人可以破解我的加密货币吗?” 安全性是保护您自己和您的数据的全局,包括三个主要属性:机密性、完整性可用性(CIA 三角形)。您提出的解决方案所做的是增加了很多复杂性。一年后,当您尝试记住所有三个密码短语、解密它们的顺序以及命令行上的所有文件类型和选项是否正确时,您可能会发现自己无法找到自己的密码数据。而且因为你是自己做的,所以你没有遵循其他人使用的标准;这意味着您无法查找“如何有效地使用三种不同形式的 GPG 加密”

通过创建如此复杂的非标准流程,您正在增加数据可用性风险这会降低您的安全性。

针对这种增加的风险,考虑通过增加保密性来抵消这种风险的方法。您是否知道使用 AES-256 对 GPG 的任何特定威胁?(如果您确实知道某事,请根本不要使用它!)您是否知道针对 150 个随机字符密码短语的任何特定威胁,这些威胁将通过使用带有另外 100 个随机字符密码的第二种算法来抵消?(不管怎样,世界其他地方都不知道 GPG 中存在任何此类缺陷;如果它们甚至被推测存在,代码就会被修补。)

你最大的风险几乎肯定不是密码学。相反,大多数安全风险来自操作安全 (OpSec) 中的缺陷。最重要的是,您希望保护自己免受意外信息泄露的影响。盒子是否安全且无恶意软件?是在线的吗?软件和操作系统是否已打补丁并且是最新的?你是从信誉良好的仓库下载 gpg 吗?你确认哈希了吗?您是否自己从源代码编译了 gpg 二进制文件?您是使用加密安全的随机数生成器来创建 150 个字符的密码,还是使用 random() 的输出生成它?您如何以及在何处存储 150 个随机字符的密码字符串 - 您可能会丢失它吗?别人能找到吗?加密原始数据后,您是安全地删除了它,还是只是将其丢弃在回收站中?

在采取了这些普通的预防措施之后,您可以考虑可能存在外部威胁参与者,他们可能非常有动机故意窃取您的秘密(取决于他们的价值)。您是否检查过隐藏在电缆中或埋在硬件中的键盘记录器?有摄像头观察键盘吗?每次输入密码时,您是否都会重新检查所有安全措施?

如果您在数学层面上不了解加密的风险,请不要试图重新发明将其堆叠在一起的方法,以为您正在以某种未知的方式提高安全性。相反,请扩大您的注意力并确保您做好所有安全工作。

与这样的事情一样,答案是,您的风险/便利性权衡是什么?你是一个可能的目标吗?您是否会发现“潜在的”安全利益难以使用?使用两种算法可以防止在其中一种算法中发现漏洞(如果那一天到来)……您是否希望保护您的内容多年?这并不总是一个是或否的答案,这是一个例子。您添加的每一层使用的复杂性都会增加,潜在的安全性也会增加(尽管可能完全没有必要)