感谢大家的到来,今天我们将讨论完全硬盘加密(FDE),它不如您想象的安全。 举起您的手,从而加密您的计算机的HDD。 好厉害! 那么,欢迎来到DefCon!

似乎有90%的人使用开源软件来加密驱动器以便能够对其进行审核。 现在,让那些在无人照管的情况下关闭计算机的人举手。 我认为目前在座的人中约有20%。 告诉我,谁会在几个小时内无人看管您的计算机,无论它的电源是打开还是关闭? 考虑我问这些问题,只是确保您不是僵尸并且没有睡觉。 我认为几乎每个人都必须离开计算机至少几分钟。
那么,为什么我们要加密计算机? 很难找到愿意提出这个问题的人,因此,我认为为安全领域采取具体行动制定动机非常重要。 如果我们不这样做,我们将无法理解如何组织这项工作。
磁盘加密软件有很多文档,描述了软件的功能,使用的算法,密码等等,但是几乎没有人说为什么这样做。
因此,我们对计算机进行加密是因为我们要控制我们的数据,我们要保证它们的机密性,并且没有人可以在不知情的情况下窃取或更改它们。 我们要自己决定如何处理我们的数据并控制发生在他身上的事情。
在某些情况下,您仅必须确保数据的机密性,例如,如果您是拥有机密客户信息的律师或医生。 财务和会计文件也是如此。 公司必须通知客户此类信息的泄漏,例如,如果有人将未受保护的笔记本电脑丢在被盗的汽车上,现在这些机密信息可以在Internet上免费获得。
此外,有必要控制对计算机的物理访问并确保其不受物理影响,因为如果有人亲自控制您的计算机,FDE将无济于事。
如果我们要确保网络安全,则需要控制对最终用户计算机的访问。 如果不确保每个最终用户的安全性,我们将无法建立安全的Internet。

因此,我们找出了磁盘加密需求的理论方面。 我们知道如何生成随机数以确保密钥安全性,如何控制用于完全加密驱动器的块加密模式,如何安全地继承密码密钥,以便我们可以假定“任务已完成”,正如布什总统在在航空母舰上 但是您知道事实并非如此,我们还有很多工作要做。
即使您拥有完善的加密技术,并且知道几乎不可能破解,但无论如何都应在没有可靠的“黑匣子”类似物的真实计算机上实施。 如果攻击者试图破解全盘加密,则无需攻击加密。 为此,他只需要攻击计算机本身或以某种方式诱使用户说服用户提供密码,或使用键盘记录器键盘记录器等。
加密的实际使用与FDE安全模型不匹配。 如果您看一下专为全盘加密设计的软件,您会发现它的创建者非常关注加密的理论方面。 我会引用TrueCrypt网站上的技术文档的摘录:“如果攻击者在启动TrueCrypt之前或在启动TrueCrypt期间可以物理访问计算机,则我们的程序将不会保护计算机上的任何数据。”

原则上,他们的整个安全模型如下所示:“如果我们的程序正确地对磁盘进行加密并正确地对磁盘进行解密,那么我们就完成了工作。” 对于下一张幻灯片中显示的文字,我深表歉意。如果您难以阅读,我会自己做。 这些摘自TrueCrypt开发人员和安全研究员Joanna Rutkovskaya之间有关“清洁工”攻击的通信。
TrueCrypt: “我们从不考虑硬件攻击的可能性,我们只是假设最糟糕的情况。 攻击者在您的计算机上“工作”之后,您只需要停止使用它来存储机密信息。 TPM加密处理器无法防止硬件攻击,例如使用键盘记录器。
乔安娜·鲁特科夫斯卡娅(Joanna Rutkovskaya)问他们:“由于您一直不随身携带笔记本电脑,我如何确定攻击者在计算机上是否工作?”,开发人员对此回答:“我们不在乎用户如何确保安全性您的计算机。 例如,当用户不在可上锁的柜子或保险箱中时,可以使用一把锁或将笔记本电脑放进去。” 乔安娜非常正确地回答了他们:“如果我要使用锁或保险箱,那为什么我完全需要加密”?

因此,忽略这种攻击的可能性是一个骗局,我们不能这样做! 我们生活在存在与我们互动和使用的系统的现实世界中。 无法将仅使用软件(例如从闪存驱动器)执行的10分钟攻击与仅通过硬件操作系统即可执行的攻击进行比较。
因此,无论他们怎么说,物理安全性和对物理攻击的恢复能力都取决于FDE。 放弃您的安全模型无关紧要,至少,如果他们不想承担责任,他们应该非常清楚和诚实地向用户解释他们如何轻松地破解他们提供的保护。
下面的幻灯片显示了抽象的FDE引导图,大多数现代计算机都在使用该图。

众所周知,引导加载程序是使用BIOS从SSD / HDD加载的,并沿着数据传输路径Storage Controller-PCI Bus-Platform Controller Hub复制到主存储器。 然后,引导程序会要求用户提供身份验证信息,例如密码或智能卡密钥。 然后,密码从键盘输入到处理器,然后由引导程序控制,同时两个组件(操作系统和密钥)保留在内存中,以确保磁盘加密和解密过程的透明性。 这是该过程的理想视图,表明没有人会尝试以任何方式进行干预。 我认为您很了解几种破解方法,因此让我们列出一些如果有人试图攻击您可能会出错的事情。 我将攻击分为3个等级。
第一种是非侵入性的,不需要捕获计算机,因为它是使用带有恶意软件的闪存驱动器执行的。 如果您可以轻松地将任何硬件组件(如PCI卡,ExpressCard或Thunderbolt)连接到系统上,则无需“拆卸”系统。最新的Apple适配器提供对PCI总线的开放访问。
第二级攻击将需要使用螺丝起子,因为您可能需要临时卸下系统的组件才能在自己的小型环境中进行处理。 第三级,即“焊铁攻击”,是最困难的,在这里您可以物理地添加或修改系统组件(例如芯片)以尝试破解它们。
一种第一类攻击是被破坏的引导程序,也称为“邪恶女仆”攻击,您需要在系统引导过程中执行一些未加密的代码,然后可以使用个人信息下载自己,以便访问硬盘驱动器上加密的其余数据。 有几种不同的方法可以做到这一点。 您可以物理地更改存储系统中的引导程序。 您可以破坏BIOS或加载恶意BIOS,该BIOS可以控制键盘适配器或磁盘读取过程并对其进行修改,以使它们能够抵抗硬盘驱动器的拆卸。 但是无论如何,您都可以修改系统,以便当用户输入密码时,他将以未加密的形式写入磁盘,或者执行类似的操作,对于黑客来说并不困难。
您可以在操作系统级别执行类似的操作。 如果您不使用全盘加密,而是使用容器加密,则尤其如此。

当系统受到漏洞攻击时,也可能发生这种情况,攻击者可以借此获得root权限并可以从主内存读取密钥,这是一种非常常见的攻击方法。 该密钥可以纯文本形式存储在硬盘上,以供攻击者随后使用,或通过网络发送给Command&Control系统。
另一种可能性是使用键盘记录器截取键盘,无论是软件,硬件还是奇特的东西,例如针眼摄像机或例如麦克风,它都会记录伴随用户击键的声音并试图找出其含义。键。 很难防止此类攻击,因为它可能包含系统外部的组件。

我还想提到数据恢复攻击,即众所周知的冷启动攻击。 如果5年前您甚至问过非常精通计算机的人,主存储器的安全功能是什么,他们会说关闭电源,数据就会很快消失。
但是在2008年,普林斯顿大学发表了出色的研究,他发现实际上,即使在室温下,RAM内存中的数据丢失几秒钟也很少。 而且,如果将模块冷却至低温,则可能需要几分钟,在此期间,主存储器中的数据只会发生少量下降。

因此,如果您的密钥在主存储器中,并且有人从计算机中卸下了模块,那么他们可以通过清楚地发现密钥在主存储器中的位置来攻击您的密钥。 有某些方法可以在硬件级别对此进行反击,例如在电源关闭或重新启动时强制清除内存中的内容,但是如果有人简单地拉出模块并将其放入另一台计算机或设备的专用部分中以提取其内存内容,这将无济于事。
最后,有可能直接访问内存。 在正常模式下,计算机中的任何PCI设备均可读取和写入主内存中任何扇区的内容。 他们可以做任何事情。

即使在计算机运行速度慢得多并且我们不希望中央处理器“帮忙”每次从主存储器传输到设备的数据时,也可以开发这种方法。 因此,设备可以直接访问内存,处理器可以给他们提供指令,它们可以简单地完成,但是只要您需要,数据就会保留在内存中。
这是问题所在,因为可以对PCI设备进行重新编程。 其中许多东西都有可写的固件,您可以将其简单地升级到恶意软件。 这会危及整个操作系统的安全性,因为它将允许任何形式的攻击,甚至是修改操作系统本身或直接提取密钥。 在计算机取证中,在侦查犯罪过程中有专门用于此类事情的设备:它们将某些东西连接到您的计算机上并取出内存中的内容。 您可以使用FireWire,ExpressCard或Thunderbolt进行此操作。实际上,所有这些都是外部端口,可用于访问内部系统总线。
因此,如果不能将密钥存储在RAM中,那将是一个很好的选择,因为从安全性的角度来看,我们已经证明RAM不是非常可靠。 是否有专用的密钥存储区或专用的加密设备? 是的,有。 您可以将加密加速器用于Web服务器,以每秒处理更多的SSL事务。 它们可以抵抗未经授权的干扰。 CA证书颁发机构拥有存储其最高机密密钥的内容,但是它们并不是真正为诸如磁盘加密之类的高性能操作而设计的。 那么还有其他选择吗?
我们可以将处理器用作一种伪硬件加密模块吗? 我们可以仅使用CPU寄存器而不是RAM来计算CPU中的对称AES块密码算法吗?

英特尔和AMD在负责执行AES的处理器中添加了很棒的新指令,因此现在您只需执行一条简单的构建指令即可执行原始块加密操作。 问题是,我们可以将密钥保留在内存中,还是可以在不依赖主内存的情况下执行此过程? 现代的x86处理器具有相当大的寄存器集,并且如果您真的尝试将其中的所有位相加,您将获得大约4 KB。 因此,我们实际上可以使用一些CPU来存储密钥并为加密操作创建空间。
一种可能性是使用硬件寄存器来调试断点。 在典型的Intel处理器中,有4个此类寄存器,在x64系统中,每个寄存器都将包含一个64位指针。 这是大多数人永远不会使用的256位潜在磁盘空间。 当然,使用调试寄存器的优势在于它们的特权,因为只有操作系统才能访问它们。 这里还有其他一些不错的优点,例如,当您关闭系统电源或进入睡眠模式时关闭处理器的电源时,您实际上会丢失寄存器的全部内容,因此不必担心“冷重启”。
来自德国的Tilo Muller于2011年为Linux实现了类似的名为TRESOR的事情。 他测试了这种系统的性能,并得出结论,该系统的运行速度不比软件进行常规AES计算的速度慢。
如何存储两个128位密钥而不是一个密钥? 这将导致我们有更大的密码模块空间。 我们可以存储一个主密钥,该主密钥在启动时永远不会离开处理器,然后加载和卸载执行其他操作和解决其他任务所需的密钥版本。
问题是我们可以将代码或密钥存储在主内存之外,但是CPU仍将仍然处理内存的内容。 因此,使用DMA,直接内存访问技术,绕过中央处理器或其他操作,可以更改操作系统并将其转储保存在主内存寄存器之外,或者,如果使用其他奇特的方法,则可以在调试寄存器之外。
我们可以用DMA迎角做任何事情吗? 事实证明,是的,我们可以。 最近,由于性能原因,作为增加服务器虚拟化的新技术的一部分,人们希望能够将网络适配器连接到虚拟服务器,因此必须通过管理程序将其连接。

IOMMU技术的设计方式是,您可以将PCI设备隔离在自己的小内存分区中,该PCI设备无法从该分区中随意读写系统中的任何位置。 这是理想的:我们可以配置IOMMU权限来保护我们的操作系统或用来处理密钥的内容,并保护它们免受随机访问。
同样,我们来自德国的朋友Tilo Muller在称为BitVisor的微型位遮阳板上实现了TRESOR的版本。 这使您可以运行单独的操作系统并透明地访问磁盘加密,而且很棒的事情是您不必担心它或对它了解任何东西。 , , IOMMU , - .

, , , , , . , – , .
, , . , RAM , , . , , , , SSH-, PGP-, « », .

: RAM? , , , , .

, , , – , ! 2010 RAM. — : “clear”, , , . 10-50 . , , , -, – 10% . , . , , ? , TPM , , , .
-, , . , , - CPU.
, . , , , . , , - . , ? , . ? , - , , , “ ” , .

, . , , . — Trusted Platform Module – , . , , , , TPM . , «» , . , , . , , .

? -. - , - «» , . , .
, – -, . , RSA/SHA1, , , - . - , . , .
23:10
DEFCON 21. , «» . 第二部分感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或将其推荐给您的朋友来支持我们,
为我们为您发明的入门级服务器的独特模拟,为Habr用户提供
30%的折扣: 关于VPS(KVM)E5-2650 v4(6核)的全部真相10GB DDR4 240GB SSD 1Gbps从$ 20还是如何划分服务器? (RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。
VPS(KVM)E5-2650 v4(6核)10GB DDR4 240GB SSD 1Gbps,直到春季免费,直到半年付款,您都可以
在此处订购。
戴尔R730xd便宜2倍? 仅
在荷兰和美国,我们有
2台Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100电视(249美元起) ! 阅读有关
如何构建基础架构大厦的信息。 使用价格为9000欧元的Dell R730xd E5-2650 v4服务器的上等课程?