擦拭关闭的RAM以防止冷启动攻击


20

我的系统使用Full Disk Encryption加密,即/ boot以外的所有内容都使用dmcrypt / luks进行加密。我担心的是冷启动攻击,研究人员证明,该内容可能会提取大约5分钟

您能否提供有关以下方面的说明:

  • 如何在关机/重新引导过程的最后一步将kexec触发到新内核中(以确保干净卸载,防止文件系统损坏,确保旧内核被覆盖)
  • 如何创建该内核,从而消除所有内存

即你能解释一下,如何在Ubuntu上做同样的事情?

如何检测关机?如何启动RAM Wipe?用户单击“关闭”或启动“紧急脚本”后,应擦除RAM。

感谢您的努力!

先前的工作:

如果您希望该功能成为现实,请在Ubuntu Brainstorm上投票!

http://brainstorm.ubuntu.com/idea/30076/


6
您打算如何检测“关机”?力量简直荡然无存,在软件中您无能为力。而且由于攻击者具有物理访问权限,因此依靠USV会出现问题。引用您链接的Wikipedia文章:“要执行攻击,计算机将冷启动。冷启动是指在关闭电源然后又重新打开电源而又不让计算机干净关闭的情况下(或者,如果有的话) ,请按“重置”按钮。“
CodesInChaos 2012年

2
用例:敲门。当前情况:您可以关闭,但要花5分钟才能使加密生效(冷启动攻击的风险)。使用RAM擦除脚本:按紧急按钮,几乎所有内容立即安全。脚本准备就绪后,可以轻松对其进行扩展,请在卸下USB驱动器时将其激活。如果受害者抢劫笔记本电脑的速度足够快以至于可以取下USB驱动器,那甚至可以奏效。
詹姆斯·米奇

4
告诉我们您有RAM DDR2还是DDR3。DDR3不受冷启动攻击。它们仅在强制关闭电源后保持几秒钟的电压。如果您在这里敲门,请拔下插头。如果您有较旧的RAM-我将在BIOS中启用两项功能-1.断电后自动启动到上一个已知状态。2.滑枕尺寸在每次引导时检查。这将允许您拔出插头,将其重新插入并进入门,而BIOS将为您清除RAM并在此后加载系统。这样更快,然后您将永远需要。
mnmnc

4
现在是2012年。除非您使用的是10年历史的笔记本电脑,否则就不会再出现冷启动攻击了。如果我想获取您的加密数据,我将利用系统安全漏洞或向您发送特洛伊木马为我获取您的数据。国家机构也将这样做。鉴于当前可用的加密算法,闯入大门并尝试CBA风险太大。只要在包装盒中放一个不常见的螺丝就足够了,任何尝试CBA的人都会在拔下插头后空手而归。
mnmnc

6
您知道,这种偏执只会使黑人直升机家伙对您更感兴趣。
Daniel R Hicks

Answers:


17

如果您不使用DDR2、512 MB或1024 MB之类的旧RAM,则不必担心CBA。

此处查看原始研究报告(PDF)。

如果仔细阅读,将会发现只有DDR2和更早版本容易受到此攻击。DDR3失去电压的速度过快,无法进行计算机机箱的拆卸和冻结程序。因此,只需在回答门之前拔下插头即可。

此外,本文还确认DDR3对CBA不敏感。实际上,如果您因为拥有DDR2 RAM而希望保护自己,则可以在BIOS中启用:

  1. 断电后自动启动
  2. 引导时检查RAM

并执行与DDR3相同的操作,但拔下插头后,将其重新插入。您的计算机将自动启动,并通过检查来擦拭内存。如果擦除效率不够高,引导过程将再次将系统加载到RAM。允许CBA太快了。

通过您在评论中提供的链接

因此,总而言之,冷启动攻击不应被视为获取可​​疑计算机系统内存的主要方法。相反,应在对系统进行冷启动攻击之前尝试其他技术,包括基于软件和基于硬件的采集(即FireWire)。但是,如果发生上述技术不可用(即缺少FireWire连接或系统登录控制台或无法进行远程内存获取)或无效的情况,则可以在假定研究者理解两者的情况下进行冷启动攻击问题的发生方式和位置以及出现问题的地方。
正如该研究表明的那样,不能将冷启动攻击确定为在法医学上是特别合理或可靠的,因为在本文进行的大多数实验中,虽然应该已经找到或提取了内存驻留的加密密钥,但它们并不能始终被发现或提取。对于各种字符串和关键字搜索也可以说相同的结果,这些字符串和关键字应该比在大多数实验中发现的字符串和关键字要多得多。此外,如已经证明的那样,仅闪存计算机存储器的动作不能保证所述存储器的成功获取。已经检查过的其他因素和变量已完全检查了这些问题及其根本原因。从而,
最后,即使成功的收购行为几乎没有降级甚至没有降级,也可能不会作为有力的证据在法庭上站起来,至少直到判例法发生并且所获得的记忆的完整性可以通过健全的证据证明是完整的可以理解的方法。搜索继续建立一种更适当和可靠的方式来获取犯罪嫌疑人的计算机的内存...

另外,如果您检查实验结果,您会发现它们仅在系统2和6中成功提取了AES密钥,而当您查看系统2的规范时,它们是“热启动攻击”-1024 MB RAM 533 MHz-这是旧的东西。另一个系统-具有256 RAM / 128 RAM的系统6-我想这是不言自明的。

这正是他们得出以下结论的原因:

搜索继续建立一种更适当和可靠的方式来获取犯罪嫌疑人的计算机的内存...

实际上,我相信,如果您有非常非常重要的数据,则不仅应使用“完整驱动器加密”,而且还应将其保存在单独的加密文件中。使用级联算法和不同于磁盘加密时使用的密码进行加密。您想要一种安全的方式关闭PC吗?这里是:

  1. 将安全数据保存在True Crypt级联算法加密的文件中
  2. 使用蛇
  3. 创建一个脚本来处理关机:

对于Windows:

truecrypt.exe /wipecache
shutdown -s -f -t 1

对于Linux:

truecrypt /wipecache
shutdown -h now

擦除缓存可确保关闭后RAM中不会保留任何易受攻击的数据。如果有人执行冷启动攻击,那么他们将最多可以访问您的系统。它们不会将数据存储在单独加密的文件中。


1
我从2010年找到了另一篇论文。dtic.mil/cgi-bin/GetTRDoc?AD=ADA545078 [PDF]一些内容也与DD3有关,但绝对不能说DD3可以抵御这种攻击。
詹姆斯·米奇

2
我不认同这个结论。这个问题与避免执法无关。实际上,如果问题是关于逃避执法,这将终止讨论。我们不要谈论执法。让我们谈谈工业间谍活动。拥有4 GB或16 GB RAM或更多并且正在处理一些昂贵的重要文档,草图,源代码等的人。如果无法提取加密密钥但仍然可以松开某个加密密钥,他将很高兴。如果他的文件是从R​​AM中偷走的,那么很多钱。
詹姆斯·米奇

2
尽管我不愿澄清用例,但信息并不是要在法庭上接受作为证据。同样,其他人也有正当的理由来擦除其RAM。执法部门希望隐藏证人保护程序。特勤局希望掩盖他们的情报。工业界想隐藏他们的商业秘密。如果加密密钥安全,则可以。其余数据仍然希望是安全的,即使是比特也是如此。我最初的问题仍未解决。
詹姆斯·米奇

1
我可以构造更多的用例,以便人们出行等。许多人对驱动器进行加密,如果他们知道可以重构其RAM的一部分,则他们希望采取措施来防止这种情况。 Google,您会发现大多数人都不知道断电后RAM中包含的数据。如果可以用物理安全代替磁盘加密,那么人们就不会为磁盘加密所困扰。加密和物理加密这两个概念都有其存在的权利。安全总是只在位上起作用。这是一个缺少的地方。
詹姆斯·米奇

1
好吧,是的,我同意。人民之间的知识水平很差。但是您将无法采用使它们更安全的解决方案。安全需要dyscypline。一般的Joe不会使用Full Disk Encryption,因为他担心有人会偷走他的信用卡号。如果您要确保绝对安全的易碎数据-请使用Truecrypt创建加密文件-请勿将驱动器作为一个整体进行加密。Truecrypt具有一个“擦除”功能,可通过覆盖永久删除RAM内存中的密钥。您可以将其放置在shortuct中。不要用大炮狩猎苍蝇。
mnmnc

5

彼得·彼得森AH加州大学洛杉矶分校写道概念技术的证明和发展的理论与安全加密的RAM运行系统,并解决方案明确旨在防止冷启动攻击。他的论文的名字叫Cryptkeeper。我不知道他是否可以下载该软件,或者是否可以从UCLA获得许可。然而,显然,至少在原理上,有可能为RAM设计一种密码系统,即使公开了RAM的全部内容,该系统也是安全的。

根据该方案的“病理性”程度,此解决方案对性能的测量影响介于9%的开销和9倍的速度下降之间。9%的数字被认为适用于使用Firefox浏览网页,但他们并未说明哪种用例会使性能降低9倍。

彼得森的解决方案不会像您建议的那样“擦拭” RAM。相反,它使用“安全密钥隐藏机制”来防止仅通过获得RAM内容就公开解密密钥。我不确定实现的细节,但是我认为它已在本文中进行了解释。

该论文于2010年发表。

可在IEEE的ieeexplore网站上购买。也可以直接从他人的网站上免费下载PDF格式的PDF。它在Google搜索结果中的“ cryptkeeper RAM”上。但是我不确定该结果将在那里停留多长时间。

我很想将其作为注释而不是答案,因为这种解决方案不会像您所要求的那样“擦除” RAM。但是,我相信,如果彼得森的研究在技术上是正确的,那么与擦除RAM相比,这将具有相同的实际效果-甚至可能具有“更好”的效果。原因是,如果熟练的物理攻击者期望发生此类操作,则他们可能会中断系统程序擦除RAM的尝试-例如,从电池中取出电池或在操作之前按住电源按钮完成。Peterson的解决方案更安全,因为它不是基于允许计算机继续执行指令以完成擦除的必要时间窗口。相反,记忆不断 即使您在有机会对攻击者做出反应之前,即使CPU本身立即被某种不可思议的技术壮举所杀死,它也受到保护。

我所说的“令人难以置信的技术壮举”是指类似Stuxnet的东西。


很棒的发现。我肯定+1。但是无法确认-您需要付费才能阅读文档。我个人不信任它-虽然它不常用,但很可能会在其上遍历所有实现错误。我想在房子前面建一堵混凝土墙,而房子的背面甚至没有栅栏。
mnmnc

另一方面,它不常用的事实使攻击者不太可能知道它。它一直是攻击者和防御者之间的猫捉老鼠游戏。最好的解决方案是拥有一个真正强大的安全系统,ALSO还可以从模糊/未知中受益。如果您无法做到这一点,那么第二好的解决方案就是拥有一个众所周知的,经过公共测试的强大解决方案,例如TLS。TLS尚未像TLS那样被广泛采用,因此我们还不知道它是否健壮。嗯 Schroedinger的Cat或Heisenberg不确定性类型问题。
allquixotic 2012年

1
另外,根据您的信息,“ Cryptkeeper RAM”的google最高搜索结果是该研究生研究员论文的直接下载PDF,可直接从他自己的网站获得。他的昵称显然是佩德罗(Pedro),并且托管在他的tastytronic.net域上。看到这里这里。这告诉我,他将论文以自己的自由意志放到自己的网站上,从而成为公共领域?或至少可以通过“嘘,不要告诉IEEE”公开访问;-)
allquixotic 2012年

奇妙。非常感谢您提供的链接。这将是一个有趣的演讲。
mnmnc

是的,有趣的是,也许比擦除RAM更安全。不幸的是,要获得更不现实。因此,我也很高兴能得到原始问题的答案。不完美,但权宜之计。感谢分享。
詹姆斯·米奇

2

我想memtest86在擦除RAM方面会很不错。我一直想尝试以下方法,但没有尝试。如果尝试,我将对其进行更新。

阅读kexec手册页。并且不要尝试kexec使用.iso,但是您需要解压iso并锁定可引导二进制文件。在上面的memtest86网站上,您可以只下载二进制文件。

您必须使用kexec命令首先加载要引导的内容。

所以我认为您可以做的是:

kexec -l {path-to-memtest86-bootable-binary} --append=console=ttyS0,115200n8

当您准备扣动扳机时:

kexec -e

我在想(但可能是错误的)--append=console=ttyS0,115200n8让memtest86通过串行端口工作。因此,如果您有一个,即使它没有出现在视频输出上,您也可以验证它是否正常工作,这是可能的,因为memtest86不会执行视频初始化。杀死任何正在运行的X实例可能是一个好主意。

Debian kexec-tools软件包(在Ubuntu上也可用)将其挂接到关机脚本中,因此,如果您进行编辑/etc/default/kexec,则可以告诉关机过程kexec作为最后的调用而不是重新启动。也就是说,如果您有兴趣进行干净关机。

在紧急情况下,a sync; kexec -e将起作用。

但是,如果某些芯片组被初始化,则可能在某些内存区域被寻址时导致锁定发生。我不知道这在实践中如何运作。

一个很好的妥协,如果 kexec不起作用,是将memtest86安装到您的引导加载程序,将其作为默认引导项,并在自动选择之前有1秒的延迟(或者没有延迟,并依靠按键来启动memu)。这可以使您从“新引导”状态快速但不立即地进入memtest86。

请注意,这不考虑视频RAM。一种解决方案是将视频RAM设置为块设备,然后输出/dev/random到块设备进行几次迭代。


2
调查了它和谷歌等。根据tails.boum.org/bugs/sdmem_does_not_clear_all_memory/…,memtest还有一个问题:“仍然有少量的内存未被擦除。” 无论如何,kexec的东西看起来有用又简单。
詹姆斯·米奇

2

这是一个古老的问题,但我想我可以做出贡献。如前所述,基于软件的内存擦除并不是最佳解决方案,仅因为电源可能突然中断,所以将不执行擦除软件。

我可以想象出解决该问题的最佳方案:您在家中的计算机上经营非法业务。有一天,电力突然消失了,然后一个FBI小队冲进了你家的门,逮捕了你,然后一个书呆子的技术人员迅速打开了计算机的外壳,并在其中使用了一种冷气体来冻结内存状态,以便购买一些计算机。是时候进行冷启动攻击了。

因此,解决此问题的最佳方法是使计算机机壳更安全,使其难以打开(类似保险库之类的东西),甚至通过使用电池供电的电阻(由篡改触发)加热电路板来破坏内存。在这种情况下切换。在高温下几秒钟可以破坏数据,甚至破坏芯片,在这种情况下,这不是什么大问题。


我一直在想
铝矿

1
Thermite确实是一个不错的解决方案...易于点燃,无法阻止反应。您只需要建立一个安全的激活器电路即可...因为如果它意外地启动了反应,您将很难过。
丹尼尔·里贝罗

0

问题是计算机是否正在运行并且屏幕已锁定。此时,AES密钥存储在RAM中,并且用户远离计算机。入侵者可以打开计算机机箱并卸下RAM模块,同时保持RAM的供电状态,然后将其放在读取其内容的单独设备中。在提取之前,无需关闭系统或冻结模块。不信任RAM来保存AES密钥,但是处理器的缓存就像名为TRESOR的解决方案一样。不幸的是,这需要旧的Linux内核,以及补丁和编译内核的高级知识。


任何支持ram的主张都拥有aes密钥?
BlueBerry-Vignesh4303

这表明您不了解ram的工作原理,还需要一个ram控制器每N ms刷新一次以保留数据。
杰弗里2015年

-2

对不起,但是你很偏执。首先,正如其他用户指出的那样,冷启动攻击显然只适用于较旧的硬件。

如果您仍然认为这是一种威胁,那么擦拭不是解决方案。

冷启动攻击包括:

  • 冷启动机器
  • 引导轻量级操作系统以从内存中清除加密密钥

如果有人设法执行冷启动,那么显然您的抽头将没有机会运行。因此,安装一个没有意义。

这是攻击的主要情况。现在,让我们假设攻击者不想对正在运行的服务器进行冷启动(例如,因为这将触发监视警报),而是等待在干净关闭的5'内执行攻击。在这种情况下:

  • 通用RAM抽头也不会给您带来任何好处。由于假定攻击者实际上在现场是为了打开机器电源并清除钥匙,因此她也可以在刮水器开始运行之前冷启动机器。(预计此时将监视警报。)
  • 专门的程序,它首先擦除FS加密密钥的确切位置,然后再擦除其余RAM(例如 truecrypt /wipecache mnmnc提到的),可能会使攻击者的工作更加困难。仍然:
    • 攻击者仍然可以通过不让抽头运行整个RAM来清除某些RAM内容。但是至少FS上的大部分数据是安全的。
    • 该解决方案不是百分百万无一失的,它只会使攻击者更难以计时冷启动时间。

因此,如果您真的担心这种攻击,建议您每次关闭机器时学习功夫,并在机器旁保持5英尺的警惕。或者在您的BIOS中使用启动密码?两种建议的措施都不必100%有效:攻击者可能仍会用技术手段击败您,并从您的MB中读取BIOS密码。您只需要将它们延迟5',以使攻击时间窗口到期。

最后,如果您担心有人会远程执行整项任务,那么您已经很难做到。


2
它只能在较旧的硬件上运行尚未经证实。我在安全论坛上发布了此信息!偏执与否。如果您没有要添加的建设性内容,请不要回复。让偏执狂的人讨论他们偏执的东西。有很多人在讨论这个问题,我将在原始问题上添加更多链接。
詹姆斯·米奇

你什么意思都没有建设性?我向您详细介绍了擦除内存对于这种攻击的低效对策。人们讨论您的擦除内存的建议并不能使其成为有效的对策。坦率地说,添加这个抽头在技术上很有趣,但仅仅是为了它。不是因为这样可以防止冷启动攻击。
m000 2012年

“冷启动攻击涉及:冷启动计算机”>错误。取出公羊并用干冰冷却。“启动轻量级操作系统以从内存中清除加密密钥”>错误。RAM冷却后,可以在另一台机器中对其进行检查。只要看一下原始问题,就可以看到干冰示范的链接。
詹姆斯·米奇

1
关于DDR2与DDR 3的关系:您不会找到研究报告声称DDR 3导致了情况的改善。这只是未经证实的说法。寄给研究论文的作者,他们不会告诉DD3更安全。
詹姆斯·米奇

1
@JamesMitch“您不会找到声称DDR 3导致情况有所改善的研究论文”,也许您不会找到任何论文,但我认为TrueCrypt的作者是否声称那样-我们可以信任。在这里查看:truecrypt.org/docs/?s=unencrypted-data- in- ram,并阅读底部的第一个星号*。Quote:“据称,新型存储模块的衰减时间(例如1.5至2.5秒)比旧类型(2008年)要短得多。” 这意味着自2008年以来,RAM中发生了一些变化……
mnmnc 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.