硬件安全模块
在受物理保护的芯片(如 HSM 或智能卡)中运行代码并不是为了防止软件错误。如果 HSM 中存在软件错误,它可以像任何网络服务器、笔记本电脑、智能手机等一样被利用。HSM 和 PC 之间的区别在于,通过物理访问 PC,您可以从 USB 记忆棒启动或更换磁盘。通过物理访问 HSM 的外部,您仍然必须闯入,并且 HSM 被设计为在您认真尝试打开它们时自毁。
在 Raspberry Pi 上运行浏览器
PC 与 Raspberry Pi 一样是“基于芯片的系统”。它们之间没有根本区别:Raspberry Pi 并不比 PC“更安全”。
越来越多的人使用 PC,因此 PC 是更有价值的攻击目标,因此越来越多的人尝试利用 PC。PC 还具有沉重的历史兼容性负担和种类繁多的软件,这使它们面临更大的风险。但是如果人们经常在 Pis 而不是 Pentiums 上运行浏览器,那么 Pis 就会有更多的漏洞利用。
将浏览器移动到另一台机器上会隔离它。但是你有什么收获?许多漏洞利用是通过浏览器传递的。通常浏览器本身就是目标。它可以访问网络,因此将感染传播到其他机器是一个有价值的目标。这是用户与很多事物交互的方式,因此它是小偷和诈骗者的主要目标。不管你把浏览器放在哪里,如果它被感染了,你就输了。
随机化代码
以某种方式随机化代码是一种防御技术,但它只会使漏洞利用变得更加困难,并不会使它们变得不可能。
例如,一些现代操作系统实践地址空间布局随机化:每次程序启动时,它都会加载到不同的随机地址。这意味着有些事情你不能在利用中做,例如直接引用原始程序中一段代码的地址。它不会使漏洞利用成为不可能:程序必须有一种方法可以找到它自己的片段(例如,一个短的相对跳转将继续正常工作),如果某个片段很难找到,漏洞利用可以搜索它(即使没有 ASLR,这也是一个常见问题,因为漏洞利用代码本身通常会加载到不可预测的地址)。
在编译器中随机化代码不会给你带来太多好处,而且很昂贵。所有这些形式的随机化使调试变得更加困难。如果在分发程序之前进行随机化,则必须管理所有这些不同版本的分发和维护(更新)。并且在安全方面它的好处是最小的,因为最终程序仍然必须做同样的事情。
硬件如何帮助提高安全性
对于普通系统(不是 HSM 等),硬件的作用是强制组件之间的隔离。它是一个硬件组件MMU,它使程序无法直接访问另一个程序的内存。CPU的设计也使得普通程序无法直接访问硬件外设,必须通过操作系统接口。必须正确使用硬件:由操作系统正确设置 MMU 表等等。
你不能在硬件中投入太多的智能。你做的越多,设计中出现错误的风险就越大。硬件错误很难修复。所以硬件提供了一些基本的能力,复杂性尽量用软件来处理。