当前位置: 首页 > news >正文

硬件黑客

时间: 2010-09-03 18:54 来源: 《环球科学》2010年第9期

数字时代,不仅仅有软件病毒——无处不在的芯片在出厂时可能就已经存在安全隐患。芯片一旦遭遇攻击,后果将是灾难性的。

芯片设计

● 芯片越来越复杂,功能越来越强大,但漏洞也越来越多。

● 电路设计一般由多个研究团队分别开发的不同模块整合而成。也许在电路出厂很久后,隐藏在硬件中的木马才会发作。

● 一些相对简单的措施将有效地保护硬件免受恶意攻击。



你曾经可靠的手机突然死机,键盘全部,电话无法拨打或接听,短信也不能收发,甚至正常关机都不行。无奈之下,你取下电池强行关机,但重新开机后手机再次死机。这显然不是普通故障。几小时后,你发现不止你的手机这样,还有上百万人跟你一样,手机突然无故死机。

这是我们遭受到一场大规模硬件攻击之后可能发生的情况。这场攻击的根源在于越来越复杂的集成电路,它们正是人们日常依赖的各种设备的核心部件。现代集成电 路已经非常复杂,任何一个工程师团队都不足以了解他们设计电路中的所有部分。因此,集成电路的研发工作现在都由世界各地的团队共同完成,每个团队只负责整 个设计的一部分,在印刷电路板之前,才把各部分设计集成起来。电路复杂性也决定了根本不可能用穷举法来测试它。芯片中的任何一个编码缺陷往往都会潜伏很长 的时间,直至被一些触发条件(如特定的数据或时间)激活——这有点像木马病毒,在发作前会一直安全地存储在硬件中。

硬件攻击的物理本质使得它的潜在危害远胜病毒及其他恶意软件。软件病毒可在机器之间传播,但从理论上说,我们可从任何受感染的系统中彻底清除它们。然而计算机在遭受硬件攻击后是无法修复的,至少目前还不行,除非更换硬件。

修复系统的恶意硬件非常困难。所有使用微处理器的设备,甚至可以说所有的电子设备,都很脆弱。集成电路在现代通信系统及全球电力供应系统里处于核心地位, 在飞机上负责襟翼的定位,在汽车防抱死刹车系统(ABS)中负责调节制动力,在银行保险库和 ATM机上负责安全授权,在股票市场负责交易运作。集成电路还是武装部队使用的几乎所有关键系统的核心。可以想象,一起精心策划的硬件攻击,能够让金融系 统瘫痪,或者让军队或政府的关键部门陷入混乱。

由于硬件木马在激活之前可以隐藏很多年,它们也许、甚至非常可能已被植入硬件缺陷中了。虽然到目前为止尚未证实有大规模硬件攻击发生,但是这类攻击是不可避免的。

从基于软件的网络攻击中我们可以看得非常清楚,即使很少一部分人不怀好意地使用黑客技术,都会造成巨大的危害。因此,我们需要考虑的问题不是硬件攻击是否 会发生,而攻击将采用何种方式?攻击步骤是什么?而最重要的问题或许是,如何检测并阻止攻击,或者至少降低攻击带来的损失。

模块化

现代芯片可按功能划分成不同模块,模块本身以及模块间通信的安全,决定着芯片的成败。


简单来讲,集成电路,也就是我们常说的芯片,是一种刻蚀在半导体晶片(通常是硅)上的电路。现代芯片非常小,最大也就几平方厘米,但可容纳数十亿个晶体管。由于现代芯片拥有如此高的复杂性,一些可能被木马利用的漏洞也存在其中。

根据功能不同,现代芯片可划分成若干个子单元,即模块(block)。以手机处理器为例,有的模块用于存储相机拍摄的视频,有的用于把视频压缩成 MPEG文件,有的可将 MPEG文件转换成可无线传输的格式。模块间的数据通过系统总线(system bus)传输,后者就像是连接芯片不同部分的高速公路。

当一家公司着手设计新款芯片时,首先要规划出芯片所需的功能模块。其中一些模块是自主设计的,要么从零开始设计,要么对自家早期产品加以改进。其他一些功能模块,比如通过天线接收数据的模块,则可以从专门开发特定功能的第三方那里获得使用许可。

从第三方那里获取的模块并不是一块块实际的晶片,因为制造集成电路的目的就是要把所有功能模块印刷到同一块晶片上。相反,那些模块是以数据文件的形式提供 的,其中完整地描述了模块被刻蚀到硅片上的方法。这样的文件可以包含数千条指令,人们要想读懂其中的内容几乎是不可能的。模块供应商通常还会向购买者提供 一些软件,模块买家可以用它来模拟该模块在不同情况下的使用效果。在芯片开始印制之前,设计公司还会将所有模块集成在一起,建立模型并使用计算机进行仿真 测试,以保证芯片能够按照设计初衷正常工作。只有模型通过这一系列测试,公司才会开始漫长而且耗资巨大的实体芯片制造。

这样的设计流程还是会留下漏洞。由于流氓硬件(即存在漏洞的电路)需要特定的触发条件来激活,芯片制造商不得不对模型进行尽可能全面的触发测试,以保证硬 件是“干净”的。这一点完全不可能做到,因为宇宙中可能的触发方式无穷无尽。触发分为两种:一种叫内部触发,前面手机的例子中基于时间的触发就属于这一 种;另一种则是外部触发,例如接收包括特定字符串的文本信息或电子邮件。即使设计公司竭尽所能进行测试,也只能覆盖所有可能输入中非常小的一部分。在实际 测试中,只要模块能按预期工作,制造商一般就认为它们功能正常。


芯片内部:

芯片包含一系列功能模块,每个模块执行一种特定任务。模块间的数据经系统总线传送,一个叫做总线仲裁器的模块会对总线上的数据流进行控制。


以手机为例,数据可能会从内存(1)传送到执行计算的模块(2),然后再传送到负责信息编码和解码的模块(3),最后再传送到负责与芯片外部交换数据的模块(4)和(5)。

出错的时候: 芯片会一直正常工作,直到其中的流氓电路被激活并发起攻击。触发条件可以有多种形式,如特定数据和时间,或者是外部发送的特定编码格式数据包中的“唤醒呼叫”。一旦激活,木马随即就会公开或秘密地展开攻击。

在公开攻击时,流氓硬件可以使正常运行的芯片。这个事例中,感染的模块拒绝让出被它占用的总线,使其他模块之间无法通信。这种情况下,该芯片会完全停止工作。

在隐蔽攻击中,流氓电路的行为不会留下任何痕迹。隐蔽攻击特别令人担忧,因为没有明显迹象表明运行出现了问题。但是,流氓电路会将机密数据发送到芯片外部的某个地址,或配合其他受感染的系统发动攻击。


相关文章:

  • Python生成器实现杨辉三角打印
  • jQuery获取表格第一列的值
  • linux 安装mysql
  • 100个vc小项目开发:二、一步一点设计音乐播放器 [I]
  • 升级Windows10后Apache服务器启动失败的解决方法
  • 记2个月来,我在Csdn 掀起的微软面试风暴
  • Bootstrap显示代码的三种效果
  • 经典算法研究系列:二、Dijkstra 算法初探
  • 神经网络(13)--具体实现:random initialization
  • 以软件开始生命周期来说明不同的测试的使用情况
  • SSH远程会话管理工具 - screen使用教程
  • canvas基础学习(三)
  • angular.equals()、angular.extend()、angular.foreach()、angular.fromJson()、angular.identity()等
  • S3C2440-RTC
  • maven 常见错误解决方法
  • [译]前端离线指南(上)
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • IndexedDB
  • js ES6 求数组的交集,并集,还有差集
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux CTF 逆向入门
  • Terraform入门 - 3. 变更基础设施
  • 阿里云Kubernetes容器服务上体验Knative
  • 浮现式设计
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 前端临床手札——文件上传
  • 设计模式走一遍---观察者模式
  • 使用Swoole加速Laravel(正式环境中)
  • 我这样减少了26.5M Java内存!
  • 【干货分享】dos命令大全
  • 【云吞铺子】性能抖动剖析(二)
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (JS基础)String 类型
  • (八)c52学习之旅-中断实验
  • (二)hibernate配置管理
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)基于IDEA的JAVA基础12
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)mysql使用Navicat 导出和导入数据库
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Core Web APi类库如何内嵌运行?
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net wcf memory gates checking failed
  • .Net Web项目创建比较不错的参考文章
  • .NET 事件模型教程(二)
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)