1Password 和 KeePass 是否采取了额外措施,使它们比 AES-256 加密文本文件更安全?他们使用的数据库格式对于我自己的目的来说似乎是不必要的复杂。
1Password 是否比 AES 加密文本文件更安全?
菲亚特 500或V12 法拉利发动机哪个更快?菲亚特 500 肯定是一款相当小巧的汽车……但至少它有轮子。法拉利引擎,无论多么华丽,仍然“只是一个引擎”;把它放在路上,它不会像巨石一样移动。因此,这个问题实际上没有意义。
你的也是。AES是一种分组密码,是一个单独无法实现任何安全性的数学对象。1Password 和 KeePass 等产品使用AES 和其他算法构建复杂的结构,试图确保密码数据库的机密性和完整性。从这个意义上说,它们可以与“AES”进行比较,就像菲亚特 500 与单独的引擎相比。
使用主密码加密即使是简单的密码文件也需要小心。主密码必须转换为加密密钥;这是密码散列的领域,它并不简单。然后,AES 应该与一种操作模式一起使用,它有自己的规则(IV 选择,填充......)。优选地,需要某种MAC,并且将对称加密和 MAC 结合起来是一件微妙的事情。最后但同样重要的是,当您加密和/或解密文件时,您倾向于生成将写入硬盘的临时文件,其中包含清晰的文件内容。删除文件不足以确保数据销毁。解密“在内存中”的文件并且从不让数据进入磁盘可能会很棘手,尤其是在存在虚拟内存的情况下。
所有这些都得出这样的结论:虽然一个充满密码的文件,用 AES 加密,可以很方便,但有很多细节需要处理,这是一项艰苦的工作。大多数现有产品都是关于做这样的工作的。您可以自己做,但不会像将几个基于 OpenSSL 的脚本拼凑在一起那样直接。
然后像 KeePass 这样的产品还提供了一些额外的功能,这些功能是不容小觑的;见清单。
[披露:我为 1Password 的制造商 AgileBits 工作]
将 AES 视为每个人都可以使用的非常坚固且设计精良的积木。但是,如果建筑做得不好,用这种砖砌成的房子可能仍然非常脆弱和脆弱。自制密码管理系统有很多方法可能出错。这里有一些:
加密单个大文件意味着当它被解密时,所有解密的数据都驻留在内存中(并且可能被交换、转储等)。(在合同中,1Password 在需要时一次只解密一个项目。)
自己动手的系统针对自动密码破解者提供了什么样的防御措施?攻击者是否能够每秒测试数千万或数千个密码?用于此目的的密钥派生函数是微妙而棘手的事情。(我最近在 PasswordsCon 上做了一个关于 PBKDF2 缺陷的演讲。)
随机性的来源。各种密钥、IV、salt、nonce 都需要加密适当的随机数。你能在“自己动手”系统中得到这个吗?
系统需要对数据丢失具有鲁棒性。就数据损坏而言,单个大型加密文件非常脆弱。
即使您今天在加密模式、密钥派生、内存管理等方面做出了正确的选择,您能否跟上这些系统可能被破坏的研究和发展?同样,关于 1Password,我们非常关注密码学文献和密码破解社区正在进行的工作。
很高兴每个人和每个开发人员都在他们的指尖拥有 AES 和其他强大的加密原语。但不幸的是,这还不足以设计强大的系统。这些事情比人们最初想象的要困难得多,而且很容易出错。
理想情况下,开发人员不必对密码学有深入的了解即可开发安全系统。加密库、API 应该足够了。但我们还没有。糟糕地使用这些库中的工具仍然比正确使用工具更容易。
我不想阻止任何人尝试和学习。只需了解使用“过于复杂”的数据格式是有原因的。只是不要认为你可以避免这些复杂性,直到你知道它们为什么存在。
主要是组织和可用性。AES 仍然是两者的基础加密,但你不能做一些事情,比如将密码临时复制到内存中,而不用加密的简单文本文件显示它。
KeePass 和 1Password 等软件的重点是帮助组织和可用性,并根据您正在考虑的事情提供安全的存储实施。
您没有任何理由“需要”其中之一,但它们在不牺牲安全性的情况下让生活变得更加简单。
我认为您可以尝试此链接以获取更多信息: http ://help.agilebits.com/1Password3/security.html
稍长一点的答案是您的数据是使用 AES 加密的,AES 与美国国家标准使用的最先进的加密算法相同。1Password 使用 128 位密钥进行加密,这意味着犯罪分子使用暴力攻击解密您的数据需要数百万年的时间。
欲了解更多信息:http ://help.agilebits.com/1Password3/agile_keychain_design.html
关于 KeePass:
KeePass 支持高级加密标准(AES、Rijndael)和 Twofish 算法来加密其密码数据库。这两种密码都被认为是非常安全的。例如,AES 作为美国联邦政府标准生效,并被国家安全局 (NSA) 批准用于绝密信息。整个数据库都是加密的,而不仅仅是密码字段。因此,您的用户名、注释等也会被加密。SHA-256 用作密码哈希。SHA-256 是一种 256 位密码安全的单向哈希函数。您的主密码使用此算法进行哈希处理,其输出用作加密算法的密钥。与许多其他散列算法相比,尚无针对 SHA-256 的攻击。
更多信息:keepass.info/features.html