我打算创建一个文本文件来存储我的密码,所以我只需要记住 1 个密码(目前,我脑子里有大约 20 个长/复杂的密码,我担心我可能会忘记其中的 1 个或更多)。
如果我创建一个文本文件,将密码存储在该文本文件中,将该文本文件移动到 U 盘,然后使用 EncFS 加密 U 盘。
- 如果 U 盘被盗,U 盘的安全性如何?
- 如果可以进一步保护上述方法,我将如何做到这一点?
我猜目前不存在防止未来可能的量子计算机进行暴力攻击的解决方案。如果不是,我正在寻找下一个最佳解决方案。
我打算创建一个文本文件来存储我的密码,所以我只需要记住 1 个密码(目前,我脑子里有大约 20 个长/复杂的密码,我担心我可能会忘记其中的 1 个或更多)。
如果我创建一个文本文件,将密码存储在该文本文件中,将该文本文件移动到 U 盘,然后使用 EncFS 加密 U 盘。
我猜目前不存在防止未来可能的量子计算机进行暴力攻击的解决方案。如果不是,我正在寻找下一个最佳解决方案。
实际上,量子计算机对对称加密并没有太大的威胁。用简单(而且有点简单)的术语来说:
量子计算机,如果存在的话,将完全打破最常用的非对称加密和密钥交换算法(RSA、ElGamal、Diffie-Hellman ......),但不是所有的非对称算法(QC 没有打破非对称加密的概念,只是它的一些化身)。
对于对称加密,密钥空间穷举搜索更快,但仍然很昂贵。粗略地说,n位密钥对 QC 的抵抗力为2 n/2 (与经典计算机的2 n相比)。
在基于密码的文件加密的上下文中,密钥是(源自)密码,您处于“对称”世界中,因此如果您害怕量子计算机,那么选择两次密码“就足够了”一样多的熵。比如说,目标是 120 位的密码熵,你应该会没事的。有关密码熵计算的示例,请参见此答案。
有人可能会说量子计算机实际上并不存在(不是“真正的”QC,那种可以在早餐时吃 RSA 的那种),当它们存在时(如果有的话),一开始它们会非常昂贵。能够为工作 QC 支付数十亿美元的人不太可能对您的密码感兴趣。
无论如何,除非它是在过度无能的情况下完成的,否则对称加密将是系统的最强点,而不是最弱点。任何加密都依赖于某个软件,该软件在某处进行加密和解密。那将是弱点;恶意软件和键盘记录器比攻击者以某种方式获得您的 USB 记忆棒并决定预先攻击加密的威胁要可信得多。更有可能的是,这样的攻击者会在 U 盘上写入一些讨厌的病毒,然后将其放回您的口袋。
(这是一种方式说,这不是一个游戏:有攻击者和防御者之间没有规矩,并没有什么迫使攻击者发挥好,并试图破解加密只)。
另外,不要忘记可用性:让攻击者远离你的密码很好;但不要把自己锁在外面。U 盘并不是有史以来最可靠的硬件,它可能会丢失。你应该保留备份。
我过去使用过类似的方法:我有一个包含我的凭据的纯文本文件,并使用Blowfish cipher对其进行了加密。
现在我使用离线密码管理器KeePass。我强烈推荐它,因为它是
包含我的凭据的加密数据库存储在自动备份到Wuala的目录中,这是一种安全文件存储服务,或者您可以使用类似的服务,如 Dropbox、Google Drive 或 OneDrive。
我还建议使用密钥文件,它就像第二个非常强的密码(至少 256 位熵),并将其存储在 USB 大容量存储设备(您拥有的东西)上。结合强大的主密码(您知道的),您基本上设置了一个很难破解的 2 因素身份验证机制。
确保不要将数据库和密钥文件保存在同一位置。您必须将密钥文件保密,例如保存在您随身携带的介质上,并在保险库或类似的安全位置进行备份(例如,在纸上)。如果您丢失了存储密钥文件的介质,您可以简单地使用 KeePass 生成一个新的密钥文件,使丢失的密钥失效。即使攻击者可以获得密钥文件和数据库,数据库仍然受到您的强主密码的保护。
KeePass 使得通过蛮力或字典攻击侵入数据库实际上变得更加困难。它通过加密数据库不是一次,而是多次来做到这一点。建议将轮数N设置得如此之高,以便在您的系统上解密数据库需要 1 秒(在现代硬件上N很容易超过 1000 万)。这可能看起来不多,实际上它不适合日常使用,但是对于攻击者来说,这将使蛮力或字典攻击花费N倍的时间。
有关所有安全功能的说明,请参阅KeePass Security。
您也可以使用YubiKey代替密钥文件。KeePass通过OtpKeyProv插件支持 YubiKey 。实际上:
支持所有遵循 OATH HOTP 标准 (RFC 4226) 的生成器令牌。
因此,您不仅限于 YubiKey。
EncFS的安全分析表明,如果攻击者掌握了多个版本的密文,它可能会受到攻击。为什么不使用 gpg 来加密文本文件?您是否认真计划挑战能够构建量子计算机的对手?这听起来很荒谬。用我建造那台计算机所需的 0.001% 的钱,我可以雇佣一个专业的团队来获取你的秘密数据,无论是鱼叉式网络钓鱼、暴力,还是……
像 AES 或 RSA 这样的良好加密方法绰绰有余。没有什么是 100% 安全的,但使用 RSA-1024 或 RSA-2048 就足够了。