首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在紧急情况下如何忘记LUKS的钥匙?

在紧急情况下如何忘记LUKS的钥匙?
EN

Security用户
提问于 2016-06-12 17:01:09
回答 2查看 4.6K关注 0票数 12

一天,当爱丽丝从Bobs服务器下载一些照片时,警报响了。特鲁迪是来偷所有数据的。

幸运的是,服务器被设置为在服务器机房报警时关机,并且具有完整的磁盘解锁。不幸的是,由于服务器忙于Alice,所以关机速度相当慢。更糟的是,特鲁迪带来了一些液氮。

现在Trudy回到实验室,从被盗的服务器RAM中提取加密密钥。很快特鲁迪就会知道爱丽丝和波布斯的秘密活动。

Q:密码设置并不意味着关闭包含系统根的设备。还有比echo b > /proc/sysrq-trigger更快的解决方案在linux系统上增加法医工作的成本吗?

编辑:是的,这个问题被有意地限制在假设有限的准备时间和通过密码设置管理LUKS容器所涉及的实现细节上--还有其他更普遍的问题。

EN

回答 2

Security用户

发布于 2016-06-12 21:02:07

擦除LUKS头将使数据完全无法恢复,即使密码/加密密钥后来被发现,因为LUKS使用的密码/密钥只是加密存储在报头中的主密钥,而该主密钥实际上对数据进行加密。

因此,首先,删除LUKS卷所在的设备的前2MBs应该使进一步的解密变得不可获得,即使后来获得了密码(例如,通过橡胶管密码分析)。确保同步覆盖标头,这样写就不会被缓冲和丢弃,因为这样您就可以重新启动计算机,而无需等待缓冲区被刷新。

然后,必须清除RAM。关闭计算机是一种可能性,但数据可能会在RAM中保留足够长的时间,让人将其浸泡在液氮中,并进一步延长数据的剩余时间。Tails使用的另一种方法是通过kexec‘通过覆盖RAM的特殊内核从软件中擦除内存,这样就可以避免冷启动攻击。

票数 10
EN

Security用户

发布于 2016-06-14 12:13:11

有两种方法可以解决这个问题,具体取决于您想要获取数据的不可访问性。

如果您只是想要了解LUKS密码以重新访问数据(或多或少是正常情况,但很方便),那么您可以在dm-crypt设备名上使用cryptsetup luksSuspend。根据手册页,这是:

挂起一个活动设备(所有IO操作都将被阻止,对该设备的访问将无限期等待),并从内核内存中删除加密密钥。

若要从luksSuspend中恢复,请执行luksResume。

注:以下采用LUKS 1格式。更新的LUKS 2格式是不同的。

如果您想确保Trudy不能访问数据,那么您需要一些更激烈的内容。在简单的情况下,我们假设Trudy没有LUKS头备份,在这种情况下,覆盖LUKS头就足够了。您可以完全覆盖标头而不覆盖任何其他内容(标题的大小是“有效负载偏移”(由密码设置luksDump报告)乘以512字节,并且在设备开始时就开始了),或者您可以安全地覆盖它并覆盖更多。覆盖一个旋转硬盘的头100 MB将花费大约1-3秒的时间,主要取决于驱动器的转速(7200 rpm驱动器往往能够达到100-120 MB/s,而较慢的驱动器显然更慢):

警告:除非您知道想要

,否则不要这样做

dd =/dev/urandom of=/dev/sdb1 1 bs=1M count=100 conv=sync

警告:

上方的危险命令

覆盖标头后,请确保从内核内存中删除密钥,以确保其余数据不能解密。这和cryptsetup luksSuspend dm-namecryptsetup remove dm-name一样简单。这样做后,容器只包含看起来随机的数据(除非破坏所使用的加密算法)无法解密。在没有解密密钥的情况下,任何好的加密算法的输出都将在统计上与随机噪声无法区分。

在后一种情况下,如果您真的想让Trudy的生活变得困难,那么您可以发出ATA安全擦除到底层的存储设备。假设在驱动器上正确地实现了安全擦除,一旦它完成(在非自加密旋转硬盘上可能需要几个小时,但通常不能在启动后中断),以前存储的数据将是不可访问的。然而,对于大多数威胁模型来说,这可能是过分的;覆盖LUKS头和清除RAM中的密钥几乎肯定足以阻止任何合理的对手访问数据。然而,安全擦除可能是需要的,以确保没有残留的关键材料上的SSD,因为磨损平整

票数 4
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/126816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档