如果您使破解变得异常困难,那么发布使用密码加密的内容是否安全?

信息安全 密码 哈希 pbkdf2 钥匙
2021-08-29 22:56:39

假设您有一个不想丢失的非常重要的私钥。您想将其发布到http://pastebin.com/,但随后又意识到这一点。因此,您会想到在密码密钥派生的帮助下进行加密,但这通常是不够的。你知道这一点是因为类似的算法用于保护服务器上的密码,当这些哈希值泄露时,虽然密码在一段时间内是安全的,但服务器仍然会告诉每个人更改密码。这意味着他们长时间公开是不安全的。

服务器通常坚持密码散列只需要 1 秒左右。由于这是用于恢复的密码,因此您不必在意它是否需要一段时间。如果需要很长时间(例如 24 小时),那您就可以了。

如果您将密码密钥派生设置为需要很长时间,例如在普通计算机上使用一天,那么公开发布使用该密钥加密的内容是否安全?还是您仍然容易受到蛮力的攻击?

2个回答

密钥强化的原因是密码没有密钥预期的那么多熵。破解密钥所需的时间与可能的密钥数量成正比。加强密码使用的算法通过增加比例常数来补偿较差的熵。但差距如此之大,强化无法弥补。具有 64 位熵的密码很难记住——即 10 个随机可打印的 ASCII 字符(如果您开始强加令人难忘的功能,熵会下降)或 14 个随机小写字母,但要达到 128 位的“破解难度”,这对应于对称加密最常见的密钥大小,你需要一个惊人的 2^64——大约一个世纪的 CPU 时间。

在您的场景中,一个容易记住的密码是错误的方法。这将是您很少使用的密码,但需要非常强大,因此难以记住。

使用随机密钥,而不是密码派生密钥,并将其打印出来将打印输出存放在安全的地方。

如果您使用的软件需要密码,请生成一个熵与密钥一样多的随机密码。20 个 ASCII 可打印字符,或 28 个随机小写字母,或类似的东西,给你 128 位的熵。如果技术发展到可以破解的程度,那么您加密的密钥可能无论如何都不再安全了。由于您的密码具有足够的密钥熵,因此您无需加强它。再次打印出来。

一旦你走这条路,你还不如打印出原始密钥而忘记上传它。但是添加间接级别确实有优势。这意味着攻击者需要获取加密密钥的副本和密钥加密密钥的副本。通过这种分离,如果其中一个部分受到损害,您可能有时间在第二个部分也受到损害之前采取行动。您还可以将密钥加密密钥存储在几个单独的部分中。有一些秘密共享算法允许将密钥分成n块,以便可以从任何k块中恢复它件,但不少。如果您想保持简单,您可以生成多个密钥加密密钥,上传使用每个密钥加密的主密钥,然后拆分密钥加密密钥并分派各个部分,以便恢复整个事物需要多个地方.

为了让其他读者清楚,基于密码的密钥派生是散列,而不是加密。它旨在从密码生成加密密钥,而不是加密密码。您将使用函数(我将其称为 PBKDF)对密码进行哈希处理,然后使用生成的密钥对数据进行加密。

使用强算法散列的强密码将花费数万年的时间才能破解 - 如果设计密码存储系统的人做得很好并且所涉及的算法没有弱点,那么在密码恢复之前,可能的散列破解器将死千年. 负责任的服务器运营商要求人们更改密码以进行深度防御。

破解良好的加密同样需要大量时间。要暴力破解 AES-256,您需要多次等待宇宙年龄

如果您使用强密码和如此多的 PBKDF 迭代,以至于需要一整天才能从可能的密码中生成密钥,那么攻击者可能更容易暴力破解派生密钥,而不是经历猜测的过程密码并从中派生密钥。

因此,如果您只使用至少与 PBKDF 生成的密钥一样多的熵的密码,您可以节省一些时间,只需使用一次迭代的密钥加密数据,而不会损害您的安全性。