一种基于主板BIOS的身份认证方案及实现王越峰,孙天泽(清华大学计算机与信息管理中心,北京,100084)摘要:本文在分析BIOS工作原理的基础上,提出将网络身份认证模块嵌入到主版的BIOS中的方案,实现机房管理中在BIOS下进行客户端的认证过程。做到降低管理成本,提高系统安全性,有效解决计算机机房因不断增加产生管理难的问题。关键词:BIOS;注册认证;机房管理在大中小学以及各种计算机培训学校或某些企事业、机关单位都进行了计算机网络机房的建设。随着计算机机房的规模不断的扩大,就要求提高实验室管理的效率及计算机的利用率,必须可靠、有效的管理机房中的计算机和系统资源,为了实现这种要求,就必须对用户在进入公共机房正式使用计算机之前进行用户注册,即网络身份认证。同时,计算机的发展,使得一些扩展卡都集成在主板上,使其达到了高度集成化的程度,为了充分利用主板上的硬件资源,提出了网络身份认证模块嵌入主板BIOS中的实现方法。1、BIOS简介BIOS是只读存储器基本输入/输出系统,它是被固化到计算机中的一组程序,为计算机提供最低级的、最直接的硬件控制,在计算机系统中起着非常重要的作用。BIOS是硬件与软件程序之间的一个接口,负责解决硬件的即时需求,并按软件对硬件的操作要求具体执行。BIOS的功能包括自检及初始化程序、硬件中断处理、程序服务请求几个部分。(1)自检及初始化这个部分的功能是启动计算机,包括有三个部分,第一个部分是用于计算机刚接通电源时对硬件部分的检测,也叫做加电自检(POST),功能是检查计算机是否良好。第二个部分是初始化,包括创建中断向量、设置寄存器、对一些外部设备进行初始化和检测等,其中很重要的一部分是BIOS设置,主要是对硬件设置的一些参数,当计算机启动时会读取这些参数,并和实际硬件设置进行比较,如果不符合,会影响系统的启动。最后一个部分是引导程序,功能是引导DOS或其他操作系统。BIOS先从软盘或硬盘的开始扇区读取引导记录,如果没有找到,则会在显示器上显示没有引导设备,如果找到引导记录会把计算机的控制权转给引导记录,由引导记录把操作系统装入计算机,在计算机启动成功后,BIOS就完成了任务。(2)程序服务处理和硬件中断处理程序服务处理程序主要是为应用程序和操作系统服务,这些服务主要与输入输出设备有关。为了完成这些操作,BIOS必须直接与计算机的I/O设备打交道,它通过端口发出命令,向各种外部设备传送数据以及从它们那里接收数据,使程序能够脱离具体的硬件操作,而硬件中断处理则分别处理PC机硬件的需求,因此这两部分分别为软件和硬件服务,组合到一起,使计算机系统正常运行。BIOS的服务功能是通过调用中断服务程序来实现的,这些服务分为很多组,每组有一个专门的中断。2、BIOS启动过程(1)CPU通过执行一段位于内存最高端的15字节的代码完成启动。32位机内存最高地址FFFFFFF:0000JMPBIOSPOST。(2)大部分POSTTEST通过,BIOS在中断向量表(00000000H---000003FFH)中填写服务例程。(3)BIOS扫描C0000---DFFFFH内存映象空间,检查各种扩展的ROM块,传递控制,此时,扩展ROM程序可获得控制权,将自身挂到系统上。BIOS对扩展的ROM检查从C0000H开始,以2KB为增量,直到DFFFFH。每一个有效的扩展的ROM块,必须建立一个标识供POST来识别它。适配器的ROM块控制结束,最后返回到BIOS。(4)继续其它POST。(5)调用INT19H的中断向量,执行引导程序,实现系统自举。3、嵌入程序模块头信息嵌入到BIOS中的程序模块必须满足一定的要求,否则BIOS无法读取。其头信息如表1所示。表1嵌入程序模块头信息偏移地址长度值说明0155h模块有效标志111AAh模块有效标志221模块长度以512字节为单位33入口执行代码一条远调用跳转指令字节0、1组成一个字,值为AA55H,BIOS检测过程中的模块有效标志。字节2:模块长度,表示ROM中以512字节为一块的信息块的个数。最大值为FFH,即模块的长度不能超过127.5K。字节3:ROM可执行程序开始。POST找到有效ROM模块时,远调用ROM模块字节3中的指令,ROM模块可获得控制权,最后执行RETF指令返回BIOSPOST。另外,嵌入模块文件中所有字节进行相加,得到和K,KMOD100H=0,K即为计算机系统认可的有效模块校验和。4、网络身份认证实现原理及嵌入方法4.1网络身份认证实现原理:网络身份认证即用户身份认证,用户身份认证是指用户出示自己的身份证明过程。网络身份认证就是系统通过网络通讯核查用户的身份证明过程,实质上是查明用户是否具有他所请求资源的存取和使用权。用户身份认证是安全系统的第一道防线,目的是防止非法用户访问系统,其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。用户标识和鉴定的方法有很多种,而且在一个系统中往往是多种方法并举,以获得更强的安全性。常用的方法是用一个用户名或者用户标识号来标明用户身份。系统内部记录着所有合法用户的标识,系统鉴别此用户是否是合法用户,若是,则可以进入下一步的核实;若不是,则不能使用系统。为了进一步核实用户,系统常常要求用户输入口令(Password)。为保密起见,用户在终端上输入的口令不显示或以星号显示在屏幕上。系统核对口令以鉴别用户身份。通过用户名和口令来鉴定用户的方法简单易行,但用户名与口令容易被人窃取,因此用户身份认证还可以采用比较复杂的计算过程和函数来完成。由于网络身份认证完成用户身份识别,基于注册系统安全性的考虑,避免注册的种种弊端,因此,提出了网络注册中基于BIOS系统的用户身份认证的方法。在BIOS下,注册程序作为扩展BIOS,单独生成一个ROM模块,注册程序主要具备如下功能:对进入实验室的用户进行身份认证,合法用户可以使用任何一台计算机,非法用户拒绝登录。注册程序在操作系统引导之前运行,无高层的IP地址协议,故注册程序需要与登录服务器联系,得到自己的IP地址,服务器的MAC地址,使用TCP/IP协议和登录服务器进行通信。登录服务器首先开机,等候客户机的请求。客户机在启动时,必须从网络上得到自身的IP地址和服务器的IP地址,因此,首先以广播的方式和服务器进行联络,服务器收到客户机的请求后,向客户机返回客户机的IP地址和服务器的IP地址、MAC地址;然后,客户机接收用户的登录信息,并用TCP/IP协议把登录信息发送给服务器,服务器验证登录信息之后,把控制信息发送给客户机,注册认证程序接收到服务器的控制信息后,如果客户是合法用户,则退出注册认证程序,启动计算机。如果为非法用户,则锁定系统,不启动计算机,直到有合法的用户登录为止。网络身份认证系统的用户身份识别特点:满足计算机启动时用户认证的顺序,先认证,后启动计算机。网络身份认证是在操作系统启动之前进行,这样才能保证系统注册认证的安全性,这种身份认证是在启动BIOS的过程中进行的,没有进行任何操作系统的装载。只有当认证结束后,才装载操作系统。网络身份认证程序进行的认证是在没有任何操作系统的情况下模拟TCP/IP协议。为提高网络注册程序的安全性,避免其他人对数据的窃取,还可以对系统本身的通讯数据采取加密措施。数据加密是防止数据在存储和传输过程中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(明文)变换为不可直接识别的格式(密文),从而使得不知道解密算法的人无法获知数据的内容。加密方法主要有两种,一种是替换方法,该方法使用密钥将明文中的每一个字符转换为密文中的一个字符;另一种是置换方法,该方法仅将明文的字符按不同的顺序重新排列。单独使用这两种方法的任意一种都是不够安全的。但是将这两种方法结合起来就能提供相当高的安全程度。4.2模块嵌入方法:鉴于AwardBIOS在市场上非常流行,用户使用也很普遍,本文重点介绍在AwardBIOS中嵌入用户模块的方法。AwardBIOS嵌入程序设计的基本流程包括:首先用汇编编写DOS下的COM程序,必须注意到程序是优先于操作系统执行的,所以程序中不能调用任何DOS中断服务。调试通过后,在COM文件前加上文件头,最后返回指令为RETF,控制文件大小为512字节的整数倍,重新编译生成COM文件。生成的COM文件,利用其中的checksum工具生成文件的校验码,在值为0的字节处添加相应的16进制数,直到校验和为xx00h为止。用BIOS分析工具cbrom将文件作为ISA或PCI模块嵌入到BIOS文件中。用读写BIOS工具awdFlash将新的BIOS文件烧录到主板BIOS中。4.3分析AwardBIOSDOS工具cbromcbrom的功能就是在BIOS文件中添加、删除与提取模块,以便达到用户自己的需求,用法如下:cbromBIOS文件名/参数模块名|RELEASE|EXTRACT参数说明:/d显示BIOS文件中的所有模块文件;/isa在BIOS文件中添加或提取用户需要的ISA模块文件,添加时后面必须提供模块名;/pci在BIOS文件中添加或提取用户需要的PCI模块文件,添加时后面必须提供模块名;RELEASE释放删除BIOS文件中的模块文件;EXTRACT从BIOS文件中提取需要的模块文件并进行解压还原;4.4读写AwardBIOSDOS工具awdflashawdflash的功能就是对主板BIOS进行刷新,以升级新的BIOS提高计算机的运行性能,用法如下:awdflashBIOS文件名/参数1/参数2……参数说明:/py自动完成BIOS的刷新;/sy备份原来的BIOS到磁盘文件;/sb升级BIOS时强行跳过BootBlock模块;/cp刷新结束后清除即插即用数据(ESCD);/cc更新完BIOS之后清空CMOS;/cd刷新BIOS结束后清除DMI数据;/r刷新BIOS结束后自动重新启动计算机;/pn不运行升级程序;/sn不备份系统老的BIOS文件;/tiny只占用很少的内存5、结束语随着计算机的不断发展,计算机主板BIOS的存储容量也随之由原来的256K增加到512K,以提高计算机的运行性能,这样,就给用户将自己研发的运行模块嵌入到主板BIOS中提供了很大的自由空间。另外,主板BIOS的读写及分析工具也由原来的通用变为专用,这些工具即使从网上也是难以获取到,它们主要掌控在主板制造厂家及计算机制造商的手中,避免用户随意在主板BIOS中嵌入模块,以便影响计算机的运行效率及性能,即使必须嵌入的模块,也要经过严格测试后,在不影响计算机的运行性能的情况下才能嵌入,因此,主板BIOS的读写严格控制的趋势,势必强化了BIOS的严密性,用户模块嵌入到主板BIOS中不仅增加了自身的安全性,而且还减少了硬件开销。参考文献[1]沈美明,温冬婵编著80x86汇编语言程序设计北京:清华大学出版社,2001[2]蔡友家著MASM6.11汇编语言应用北京:机械工业出版社,1998[3]钱晓捷,陈涛编著16/32位微机原理、汇编语言及接口技术北京:机械工业出版社,2001[4]赵士滨计算机网络技术北京:清华大学出版社,1999[5]刘勇编著计算机网络及互连技术北京:人民邮电出版社,2000[6](美)CraigZacker著;王建华,王卫峰,席赛珠等译现代网络技术北京:机械工业出版社,2002