使用真实世界的密码来加密要通过不安全方式发送的文件是否合适。
在现实世界中,我的意思是一个普通人可以记住和记住的密码?
我的意思是,为了安全地加密文件,您必须遵循以下指南:
- 使用具有足够熵位的长随机密码来提供安全的对称密钥。
- 仔细考虑与摩尔定律相关的数据敏感性(即如果这些数据在 10 年后被更先进的计算机读取会有什么影响)
- 仔细考虑如何将密码传输给授权方(密码离线传递)
鉴于此,我怀疑文件的非对称加密在安全性方面比在其他条件相同的情况下对称密码加密要好得多。
使用真实世界的密码来加密要通过不安全方式发送的文件是否合适。
在现实世界中,我的意思是一个普通人可以记住和记住的密码?
我的意思是,为了安全地加密文件,您必须遵循以下指南:
鉴于此,我怀疑文件的非对称加密在安全性方面比在其他条件相同的情况下对称密码加密要好得多。
你在想两件事:
克尔霍夫原理。主要思想是密钥必须是秘密。如果您系统的任何部分要求算法保持未知状态,那么您的系统就陷入了严重的麻烦。任何需要算法保密的系统的术语是“默默无闻的安全”,它被嘲笑为可怕,因为它很糟糕。国家安全机构侥幸逃脱,因为他们还确保即使使用机密硬件,Kerckhoff 的原则仍然适用。这就是为什么当约翰沃克开始将密码条交给苏联人时,他们没有硬件,所以他们说服朝鲜人夺取普韦布洛号航空母舰. 美国国家安全局知道,如果没有密钥材料,没收的机器将一文不值——不知道苏联人正在为美国海军的大部分成员获得一套完整的密码密钥。
密码的熵。Shannon 确定英语单词的熵在每个字符 0.6 到 1.3 位之间。这意味着,如果您的密钥需要 40 位的熵,并且您选择了英文单词,那么您将需要长度在 31 到 67 个字母之间的密码短语。这就是人们要求大写和小写字母以及数字和符号的原因:增加熵。
一个普通人可以记住的密码,就其本质而言,是不安全的:因为它必须足够短才能被记住,所以它根本不能长到足以防止除了偶然的手动攻击之外的任何东西。即使是一个令人难忘的密码短语也存在一定程度的不安全性,这与攻击者对受害者的了解有关,这还不包括确保密码短语在发送者和接收者之间安全共享的问题。(任何保护密码短语的方法都可以同样应用于要加密的文件:可以说,与其保护密码短语,不如简单地保护文件本身。)
我认为只有在要保护的文件不是特别敏感并且限制访问只是一种令牌操作的情况下才使用“真实世界”密码或密码短语是合理的。
我的意思是,为了安全地加密文件,您必须遵循以下指南:
- 使用具有足够熵位的长随机密码来提供安全的对称密钥。
- 仔细考虑与摩尔定律相关的数据敏感性(即如果这些数据在 10 年后被更先进的计算机读取会有什么影响)
- 仔细考虑如何将密码传输给授权方(密码离线传递)
我同意这一点。但我也不认为这太麻烦了。
考虑允许某人进入你的房子:如果有锁,你通常需要给他们一把钥匙的副本。替代方案是:
如果我担心安全问题,并且我想让亲戚或朋友经常访问我的房子,我会努力给他们一把钥匙。
同样,如果我经常与其他人交换文件,而我所拥有的只是一个受密码保护的系统(而不是安全存储或公钥加密),我会选择一个长而难以记住的随机密码,并努力通过带外渠道将密码发送给他们,例如通过电话,或通过网络在不知名的地方在很短的时间内发布文档。
摩尔定律可以通过使用慢速密钥推导来抵消。例如,PBKDF2通过应用类似哈希函数的多次迭代将密码变成密钥。您可以调整迭代次数,以使您的计算机上的操作仍然可以接受(例如,不超过一秒)。攻击者的优势是他的耐心和他的相对财富的产物:如果攻击者可以拥有比你自己的机器强大 1000 倍的计算机(集群),并且如果计算机准备好投资十几天(1000000 秒)的计算来破解你的加密方案,然后攻击者将能够尝试大约 10 亿个潜在密码。有可能记住比它更高的熵的密码(例如,由两个字母,然后是两个数字,然后是两个字母,然后是两个数字组成的密码,例如“qw04qr29”或“fm17zz05”,
从好的方面来说,攻击者的优势不再依赖于摩尔定律,只要你保持迭代次数是最新的(这可能是长期机密的问题,例如,攻击者试图破解他十年前复制的)。在较暗的一面,典型的用户在记住看似“简单”的密码或避免例如将密码写在便签上时会感到非常失望。
非对称加密并没有解决问题,它只是移动它:你如何保护用户私钥?一种可能的解决方案是将“主机密”(例如用户非对称私钥)存储在任意限制攻击者“猜测”速率的设备中。这可以是智能卡,在三个错误的 PIN 码后简单地关闭。这可以是一个使用密码对用户进行身份验证但每小时只允许尝试十次的服务器。