有没有什么方法可以对你的磁盘/分区/文件进行加密(在 Linux 中或作为硬件加密;这里没有 Windows),使其在 3 次失败的解锁尝试后锁定自己 10 分钟?...
我们的想法是在不牺牲安全性的情况下使用更短的密码来记住。
答案1
不。
这是完全无意义的行为。如果您选择的密码非常简单,以至于我尝试 5 或 6 次就能猜出它,那么您还不如根本不使用磁盘加密。
另一方面,如果密码在六次尝试之内就无法猜出,并且会触发这种“锁定安全措施”,那也是没有用的。
稍微聪明的攻击者将运行离线攻击,即他将读取几个扇区并尝试使用自己的(大规模并行、多 GPU)工具对它们进行暴力破解。他不在乎你是否在启动屏幕上“把他锁在外面”,因为他根本没有使用它。
请注意,每个相当现代的磁盘加密软件都使用昂贵的密钥派生算法,该算法在您的计算机上需要大约半秒左右的时间才能实际从您的密码计算出加密密钥。这是为了减缓暴力攻击,否则每秒会测试数十亿个密码。
当然,使用多 GPU 设备来解决这个问题意味着您仍然可以每秒测试几千个密码。给定一个基于字典的测试排列,它是非常乐观假设一个“简单”(读作:坏)密码将使攻击者停留的时间超过几秒钟。
答案2
不是你描述的方式,所以@Damon的答案是正确的。
但是,如果您不介意等待,无论您是否知道密码,您都可以将 cryptsetup/LUKS 的迭代时间调至一个非常大的值,如果您认为需要那么多,甚至可以调至 10 分钟。这样,无论您如何尝试,“锁定”都会始终有效。
cryptsetup --iter-time=600000 luks[Format,AddKey,ChangeKey] /dev/thing
但是,我不建议您实际走那条路。这不太实用。
无论如何,一个好的密码更为重要。如果您发现密码很难记住,也许您应该听取以下建议:http://xkcd.com/936/
这适用于网络密码(锁定实际上起作用,直到攻击者获取数据库)。对于磁盘加密,您可能想要使用的不仅仅是四个随机字。
但一般来说,一个好的密码并不一定很难记住。
答案3
不,那没有意义。
尝试之间的延迟对于在线的使用密码,例如对系统进行身份验证。当您必须通过软件“网关”才能访问系统时,这是有意义的。错误尝试后,网关可以延迟或阻止来自同一来源的进一步尝试。延迟之所以有效,是因为到达系统的唯一途径是系统本身的一部分。
尝试之间的延迟没有意义离线使用密码,例如解密某些数据。这是不可能实现的,因为到达系统的方式不是系统本身的一部分,因此对手可以实现自己的密码检查器。此外,加密数据可以被复制,从而允许对手并行地进行多次尝试(只要他们愿意在硬件上花费尽可能多的尝试)。如果攻击者想要制作 1000 个数据副本并尝试在 1000 台计算机上以尽可能快的速度解密它们,那么没有什么可以阻止他们。
您可以通过使密码验证本质上变慢来减慢对手的速度。加密卷使用的密钥本身是用另一个密钥加密的,而另一个密钥又是从密码派生的。 (不包括一些设计不良的系统。)如果正确完成,从密钥中派生密码是一个按键拉伸功能这本质上很慢——从潜在密码中导出密钥的最快已知方法需要大量计算。在一个设计良好的系统中,你可以调整计算量;例如,对于 LUKS,这是-i
`cryptsetup luks 的参数。较大的参数会使您和对手验证密码的速度变慢。
信用卡可以使用 4 位 PIN,因为它们是在线系统:根据卡技术,用户输入的 PIN 会发送到银行进行验证(因此银行的服务器会执行 3 个失败操作)然后你就出局策略,通过将卡记录为受损),或通过卡上的芯片进行验证(因此卡上的芯片通过存储“卡”来实施“3 次失败,你就出局”策略)其持久内存中的“已泄露”标志)。
您可以使用智能卡中存储的密钥加密数据,而不是使用从密码派生的密钥。这样您就可以拥有一个非常短的密码(例如 4 位 PIN 码),并且不容易被破解。然而,它也有缺点。当您想要访问数据时,您需要随身携带该卡。您需要有一个读卡器来访问您的数据。您需要在某处备份您的密钥,以防您丢失卡或出现故障。如果您的计算机有 TPM 芯片,则它可以起到与智能卡相同的作用,不同之处在于该卡可以在计算机之间携带(对于可移动驱动器或远程卷有用),而 TPM 则绑定到主板(如果加密卷位于内部驱动器上)。