定义21.仅密码是不够的,或者为什么磁盘加密会“中断”,以及如何解决此问题。 第一部分有一些有趣的事情,例如单调递增的计数器,可用来控制TMP的活动,然后检查接收到的值。 可以使用少量的非易失性存储器来满足您的需求,虽然不超过千字节,但是它也很有用。 有一个时钟计数器,可让您确定自上次启动以来系统已工作了多长时间。 您可以给TMP提供一些命令,使其代表您执行操作,包括在必要时清除您自己的内存。

然后,我们要开发一种协议,供用户在计算机上进行身份验证并开始使用之前,可以在计算机上运行该协议,以确保计算机未被黑客入侵。 对于这样的协议有什么用,我们可以尝试“封装”到平台配置寄存器中?
我有几点建议:这些是一次性用户密码的令牌,独特的图像或动画,例如您的照片,在其他地方不容易找到的原始照片。 当您处于身份验证请求和身份验证模式时,也可以关闭计算机上的“视频输出”。
您可能还想“密封”磁盘密钥的一部分,并且有几个原因要这样做。 在某些安全性假设下,这可以确保系统仅引导至您作为计算机所有者控制的某些批准的软件配置。 最终,这意味着任何想要攻击您系统的人都必须通过破解TMP或在您为他们创建的沙箱中执行此操作。 当然,这并不是一种特别强大的加密保护,因为您将没有一种协议可以让用户使用AES提供的相同安全级别进行安全身份验证。 但是,如果您无法用自己的头脑来组织RSA加密之类的事情,那将永远是不完美的。

我提到在TPM中有一个可以通过软件执行的自擦除命令。 由于TPM需要对系统进行某种配置,因此在发出“秘密”之前,您可以做一些有趣的事情,例如自毁。 您可以开发软件并创建自己的协议以限制计算机启动失败的次数,可以在屏幕上显示密码一段时间后设置超时,或者限制输入错误密码的尝试次数。
您可以设置在上一个工作周期后重新启动计算机的时间限制,如果计算机处于“冻结状态”一两个星期,则在计划出国旅行的时间内限制对计算机的访问-在您处于国外时将其锁定不迟于到达酒店时解锁的道路。
您还可以做一些有趣的事情,例如,从安全角度来看,在包含关键数据的磁盘上留下小的“ canaries”。 实际上,这些将仅仅是“伸展标记”,其触发将导致TPM内部单调计数器的值发生变化。
您还可以创建自毁密码或强制代码以自动执行重置命令。 由于攻击者可以通过两种方式进行攻击:入侵受信任的平台模块或运行恶意软件,因此您可以强迫他遵守这些规则并实际执行有效的自我毁灭。
受信任的平台模块经过专门设计,很难复制,因此不可能仅对其进行克隆。 这样,您可以使用诸如单调计数器之类的功能来检测任何恢复或播放光盘攻击。 一旦在TPM中执行了clear命令,对于想要访问您的数据的攻击者,游戏将结束。
雅各布·阿佩尔鲍姆(Jacob Appelbaum)在多年前的2005年混沌通信大会会议上讨论的系统有一些相似之处。他建议使用远程网络服务器来实现许多这样的选择,但他承认在实践中将很难使用。 由于TPM是系统的集成组件,因此仅使用内置的TPM模块,而不能使用位于远程服务器上的模块,您才能获得许多好处。 混合方法是可能的。 例如,您可以像在IT部门中那样设置系统,当您暂时阻止该系统时,只有将其连接到网络后,该系统才可以使用,请致电IT管理员,他们将对其进行解锁。 我不愿意在启动过程开始时就推送网络堆栈,只是因为它会大大增加攻击面。 但是还是有可能的。
我想澄清的是,假设攻击者无法轻易破解TPM,他只能做到这一点。 下一张幻灯片显示了Chris Tarnovsky用显微镜制作的TPM芯片的设计图。 克里斯去年与DefCon进行了交谈,并在几年前的BlackHat会议上发表了有关TPM安全性的演讲。
他确实很出色地理解了打破这件事的难度。 他列出了相应的对策,弄清楚要真正破解该漏洞所需采取的措施,然后测试了整个芯片。 TPM板上有光检测器,有源网格,并实施了各种完全疯狂的方案,以误导攻击者该模块的实际功能。
但是,如果您花费足够的时间和资源并足够小心,则可以避开大多数保护措施。 您可以取出芯片,用电子显微镜将其放在工作站中,找到带有未加密数据的总线所在的位置,然后从中取出所有秘密。 尽管如此,即使您已经精心准备并使用昂贵的显微镜弄清楚了什么,这样的攻击仍然需要时间和精力来移除芯片的物理保护,并且不会在拆卸过程中意外地“炸”它。

考虑重新启动攻击。 我之前提到过,在几乎所有情况下,TPM都是主板上的单独芯片。 这是系统层次结构中的一个非常低的链接。 它不是CPU的一部分,就像视频控制台中的DRM一样。 因此,如果黑客设法重新启动TPM,则不会对系统产生不可逆转的影响。 这很糟糕,因为您可能不会注意到这样的攻击。

这通常是位于LPC计算机总线外部的芯片,LPC计算机总线本身已是过时的总线,位于主板的南桥外部。 在现代系统中,主板表面上仅有的东西是TPM,BIOS,键盘控制器,但我认为实际上灵活的控制器不再使用它。 并且,如果您找到了一种方法,可以通过少量的接触来重新启动总线,则可以将TPM重置为“新操作系统”的启动状态。 您可能会无法通过PS / 2连接器访问键盘,但这不是什么大问题,但是您可以播放TPM引导序列,在该序列中“密封”秘密数据,而无需实际执行安全序列,然后可以使用它来提取数据。
有几种尝试使用此方法的攻击。 如果TPM使用一种称为“静态信任度量标准根(SRTM)”的旧模式,则可以很容易地做到这一点。 我尚未见任何针对成功实施英特尔模块激活选项的新型可靠技术攻击的研究。 可能仍然有可能捕获LPC总线,而传递给CPU的LPC总线是一个需要进一步研究的领域。 这可能是攻击受信任的平台模块的另一种方法。
因此,让我们看一下具有可靠配置的冷启动系统所需要的图。 PC体系结构中有许多相当脆弱的组件。

例如,在BIOS中,您可以捕获中断向量表并修改磁盘的读取权限,或拦截键盘输入,屏蔽CPU寄存器的所有功能-有很多攻击选项。 我认为,您无需在BIOS的实际启动模式下进行安全检查,只需测量启动过程的性能即可。
一旦进入“预启动”模式(实际上就是您的操作系统,例如Linux初始RAM磁盘),您就开始执行协议并执行这些操作。 我的意思是,一旦您开始使用操作系统的资源,在BIOS级别上使用中断表进行操作的任何人都不会以任何方式影响您。 你真的不在乎。
您可以检查寄存器的性能。 例如,如果您使用Core i5处理器,则知道它将支持诸如执行禁止位,调试寄存器之类的东西,而其他人可以尝试在寄存器功能中掩盖的东西。
该幻灯片显示了在工作配置中启动时,系统图的外观。

有一个名为BitVisor的项目,该项目使用处理器寄存器和主内存中的IOMMU保护来实现磁盘加密安全性的许多方面。 问题在于BitVisor是一个相当具体且很少使用的程序。
Xen是一种规范的开源虚拟机管理程序,它参与了许多安全性研究,在此期间人们确信它可以工作。 我认为,我们应该使用Xen虚拟机管理程序作为裸机硬件接口,然后将Linux dom0管理域添加到该域中以初始化您的硬件。
同样,在Xen中,所有虚拟化域都以非特权模式工作,因此您实际上没有直接访问调试寄存器的权限,这是已经完成的事情之一。 Xen进行超级调用,使您可以访问此类内容,但是您可以在软件中关闭此功能。
因此,我使用的方法是将主密钥放置在调试寄存器中。 我们区分前两个调试寄存器来存储128位AES密钥,这是我们的主密钥。

在接受用户凭据的进程输入该内容后,它永远不会离开CPU寄存器。 然后,我们将后两个寄存器用作虚拟机的特定寄存器-它们可以用作普通的调试寄存器,或者在这种情况下,我们可以使用它们来加密主内存。 在这种情况下,我们需要将多个设备直接连接到管理域。 这是一个图形处理器,它是一个PCI设备,键盘,TPM-所有这些都应该可以直接访问。
您不能为这些事情使用IOMMU保护,但是可以为网络控制器,存储控制器,PCI总线上的任意设备(即,对于无法访问管理域或管理程序内存空间的组件)配置此保护。 您可以通过将网络控制器实际放置在专用的Net VM虚拟机中来访问网络之类的内容。 这些内容将映射到配置了IOMMU安全性的特定设备,这样此类设备只能访问此虚拟机的内存区域。
您可以对存储控制器执行相同的操作,然后在对硬件绝对零访问的APP VM上运行所有应用程序。 因此,即使有人控制了您的Web浏览器或向您发送了恶意的PDF文件,他也不会收到会严重损害磁盘加密的任何内容。
我不能对这种体系结构设计负责,因为实际上它是一个称为Qubes OS的优秀项目的基础。

它的开发人员将该项目描述为Xen,Linux和一些自定义工具的实用形式,用于实现我刚才谈到的许多内容。 Qubes OS实施了无特权的来宾策略,并创建了一个统一的系统环境,因此您似乎在使用同一系统,但实际上,它是一堆“底层”的不同虚拟机。 我用这个想法来实现我的代码库。
因此,我正在开发的工具是一个实验代码,证实了这一概念,我称之为Phalanx。 这是一个修补的Xen,可让您使用我描述的技术来实现磁盘加密。

主密钥位于前两个调试寄存器DR1-2中,后两个DR2-3调试寄存器不受domU的限制。 出于安全原因,虚拟机切换上下文时,用作操作内存的XMM寄存器0-12,DR2-3和密钥均被加密。 我还使用Linux zRAM内核模块做了一个非常简单的加密实现,因为它是一个内置元素,除了加密技术外,它几乎可以执行所有其他操作,因此,对于加密,我只在其中添加了一小段代码。 如您所知,最安全的代码是您无需编写的代码。 zRAM的一个好功能是,它为您提供了一堆安全地实现AES计数器模式之类的位。
我们有几个硬件要求。 您需要一个支持新的AES指令的系统,这很常见,但并非每个系统都有它们。 最有可能的是,如果您具有Intel i5或i7处理器,则支持这些说明。

但是必须检查其余的“硬件”,以确保它支持所有必要的功能。 HVE虚拟化硬件扩展在2006年左右开始普及。 使用IOMMU查找计算机将更加困难。 这在系统单元的规范中未指出,您将需要研究其特性,并找出VTX和VTD之间的区别是什么等等。 因此,您可能必须寻找一个支持这些功能的系统。 当然,您需要一个带有受信任的TPM平台模块的系统,因为否则您将无法测量负载指标。 通常,您查看的是商务级计算机,可以在其中检查必要组件的可用性。 如果您发现采用可信执行技术的英特尔TXT,它将几乎满足您的所有需求。 Qubes团队在其Wiki上提供了出色的硬件兼容性列表,其中列出了许多实现此类功能的系统的详细信息。
因此,为了确保安全性,我们对系统的某些组件有一些假设。 TPM当然是确保启动完整性的非常重要的组件。 您需要确保没有后门可以重置NVRAM,操纵单调计数器或使系统认为它正在使用受信任状态,但实际上并非如此。 根据对这些芯片进行逆向工程的Tarnovsky的评论,我将计算机的独占访问权限设置为大约12个小时的限制,如果要对它进行TPM攻击以获取所有机密,这是必需的。

\
关于处理器,内存控制器和IOMMU,有几种假设,主要是关于它们未被黑客入侵并正确实现其功能这一事实。 这些假设中的某些假设不必太严格,因为Intel可以轻松解决其中的一些问题,而且我们无法找出答案。
一些安全性假设与Xen有关。 这是一款实际上具有非常强大的安全系统的软件,但没有完美的软件,有时即使在安全的系统中也会出现漏洞。 考虑到Xen在系统中的特权位置,确保它处于安全状态非常重要。
因此,基于这种安全性假设,我们为威胁模型提供了一种基础。 , , , , - . , . , .
, – . , , , , .

, , , . , , , — , , , .
— , . FDE , RAM.
, IOMMU, . TPM NVRAM, , – , , .
, , , 12 . , .
, , . , .
TPM — NVRAM, / LPC. TPM , , , , .

RAM . , RAM RAM, , , . , , Sony PS3.
, . , . , , , , , TPM . , , , , , RIPA – , .
. , , , . .
-, . OpenSSL , API, .
Qubes OS.

: , . .
– .
, , -. , , , . 感谢您的关注!
感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或将其推荐给您的朋友来支持我们,
为我们为您发明的入门级服务器的独特模拟,为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服务器的上等课程?