2007-03-09

BIOS控制:从底层保障计算机系统安全[转贴]

纵观市场上的安全产品,从网络防火墙到各种网络加密、个人数字签证以及早期硬盘锁,均未能对 个人计算机本身进行实质性的保护。这些安全机制大都基于这样一种原理:利用一个软件,输入一个特定的密码,经过验证后即可获得合法身份,从而实现各种操 作,如购物、收发公文、浏览甚至修改机密数据。众所周知,这种基于纯密码的机制是很脆弱的,所以,许多关键行业和部门都采用了软、硬结合的方式,如设立各 种Smart卡认证机制。在银行工作的职工,每人都有一张代表自己电子身份的IC卡,每天上班,必须先刷卡才能进入银行的业务系统。这种机制的安全性大大 提高了,但对于个人或普通企业用计算机,这种机制成本太高。本文从BIOS工作原理出发,提出一种安全性高、全新的计算机安全保护机制。

一、原理

BIOS是计算机架构中最为底层的软件。在PC一加电时,首先执行的就是它,它负责 对计算机进行自检和初始化,在检查PC各部件都正常后再由它引导操作系统,如DOS、Windows等。如果一台PC没有BIOS,即无法开机,成了废铁 一堆。而且BIOS一般是不可以相互替代的,只有同一个厂家同一型号的主板,其BIOS才可以互换。本机制的基本原理就是将PC中的BIOS从主机中抽 出,存到一个带加密的外部设备中,如USB钥匙盘等,没有该盘就不能开启计算机;又由于外部设备是加密的,即使有含BIOS的USB钥匙盘,但不知道密码 也不能开机,从而实现计算机的保护。这种带加密的钥匙盘由于各自密码或加密算法不同,也避免了使用同型号BIOS进行开机的可能。

二、实现

BIOS储存在计算机主机板的一种IC芯片(通常是FLASH)中,它有两个主要的 组成部分,即BootBlock段和主体BIOS。BootBlock段是不压缩的且存放于固定的地址空间,它是计算机开机时首先执行的部分。它主要负责 对计算机硬件做最基本、最简单的初始化,而后解压缩主体BIOS的其他模块,并一一执行,其流程如图1所示。由于BootBlock的这一特点,无需将 BootBlock段抽出至外部设备中,反而要利用它的初始化能力以启动与外部设备如USB盘的通信。但必须对BootBlock段加以修改,以实现对 USB钥匙盘的解密、主体BIOS的读入过程,即在检查BIOS校验和之前,从键盘读取用户的密码,并将该密码通过一定的运算方法加密,并发往USB接 口,在USB钥匙盘收到该密码后,允许内存的BIOS数据可读。

这样经过修改后,原主机板中存储BIOS的FLASH只存储修改过的 BootBlock段代码,不再有主体BIOS。同时不再采用FLASH芯片,直接使用一次性写入的PROM,避免其他软件或病毒对该区域代码的修改。对 于具体的加密算法和密码认证机制,不同的制造商可以选择不同的方式,如可以将主机板上具有惟一性的参数加入算法中,以实现一个主机板只有一套USB钥匙盘 相对应,等等。

USB钥匙盘的实现,和市面上通常所说的软件狗,其原理是一样的,只是这里说的 USB钥匙盘的储存容量要求相对大一些,至少要256KB以上。当然也可以不使用USB钥匙盘,而利用一些IC封装的CPU卡或SIM卡,做成LPT或 COM接口的设备,如北京握奇公司就提供串行的SIM IC,只需要稍加点简单的电路就可以实现与COM口的通信。其原理和USB钥匙盘一样,只是使用的通信接口不同而已。

三、扩展

前面所说的机制已经可以实现计算机安全保护了,但为了增加实用性,还需要做一些简单的扩展,以提高破译的代价。

扩展一是使用IDE的安全特性。现代计算机BIOS都已经支持IDE加密(AMI和 AWARD BIOS都有此功能),在实际使用过程中可结合该功能。该功能是对IDE硬盘进行加密,在BIOS开机阶段要求输入正确的密码,否则该硬盘不可以使用。在 没有通过密码验证的情况下,BIOS根本不能正确识别硬盘的设备类型,OS更不知道该硬盘的存在,也就无法使用或破坏硬盘中原有的数据。

扩展二是修改系统BIOS,在BIOS中将硬盘参数,如分区表等备份到USB钥匙 盘。做过BIOS开发的工程师知道,系统开机时首先执行的是BIOS,系统关机时最后执行的也是BIOS(意外断电除外,无论是操作系统关机还是按 Power Button关机,都有对应的SMI处理程序)。利用BIOS的这个特性,在每次开机时,BIOS负责从USB钥匙盘中读取硬盘参数并恢复到硬盘中,在关 机前,BIOS将硬盘参数备份到USB钥匙盘,同时破坏掉硬盘中该区域的数据。这样,即使将该硬盘安装到别的系统中,没有对应的钥匙盘也不能使用。

这样就从底层保障计算机安全,从而实现禁止非法使用。

原文链接

没有评论: