基于数字摘要的高招数据库防篡改技术的研究与实现
仲福建 何远德 陈琳琳
当前各高校都加强了网络的宣传,招生、录取等都在网上进行。这在方便了管理和提高效率的同时,也给一部分违法分子以可乘之机,目前少数不法分子在高考招生结束后,利用伪造虚假网页进行诈骗,有的甚至利用黑客手段篡改高校网站考生录取记录,从事诈骗活动。如黑客篡改中国地质大学(武汉)和中南财经政法大学招生信息①,篡改海南大学招生信息②等案,给社会造成了恶劣影响,严重影响了社会的和谐和安宁。目前很多对外信息发布系统有防火墙、杀毒软件、网页防篡改系统等防护措施,但基于数据库的保护相对较少。本文提出了一种基于数字摘要的高校招生查询数据库的防篡改机制。
一、数字摘要算法及其应用
从 Rivest 1989年开发出MD2算法开始就揭开了人们对加密算法的新一轮研究,进而推出了MD3、MD4算法 。为了加强算法的安全性,满足信息发展对网络安全的要求,研究出了趋近成熟的MD5算法。MD5的全称是Message-Digest Algorithm 5(信息-摘要算法5)③,在20世纪90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L.Rivest开发,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器进行的设计优化,而MD4和MD5却是面向32位的电脑。
MD5的典型应用是对一段信息(Message)产生信息摘要(Message Digest),以防止被篡改。比如在UNIX下有很多软件在下载的时候都有一个文件名相同、文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如MD5(test)= 0ca175b9c0f726a831d895e269332461,这就是test文件的数字签名,test的文本内容为“tom123456”。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个惟一的MD5信息摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了什么形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算MD5时就会发现信息摘要不相同,由此可以确定你得到的是一个不正确的文件。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于加密和解密技术。例如Cisco的Enable的密码和UNIX、LINUX系统中用户的密码都是以MD5经加密后存储在文件系统中的。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度④。
二、 数据库防篡改设计原理
监控数据库是否被非法修改是这个数据库平台的关键点。最简单可靠的方法就是先将数据库备份,通过逐行比较数据库记录字段值来判断数据库是否被修改,但是此种方法需要逐行比较,既耗时也耗费空间,可行性差。因此对数据库记录的鉴别必须是保障不可伪造,并且能实时发现数据库的异常,及时告警,及时恢复,不给犯罪分子可乘之机。
招生查询数据库数据一旦导入后,再次修改的几率很小,大部分是用来查询的。保证数据的不可修改和伪造,单向散列函数可以实现此功能,可以使用MD5 、SHA-1等算法,只要数据被修改,数字摘要信息就会出现前后不一致,达到鉴别功能的实现。SHA-1提高了强度,增加了安全性,但是该算法计算度增加,效率有所降低。在保证高效的前提下,本文拟采用MD5算法进行数字摘要,对数据进行鉴别。
系统可以先把正确数据每记录字段组合为一个摘要,然后保存在安全位置,系统鉴别时同时对安全数据表和运行的表逐摘要比较。这样,虽然保证了安全,但是性能降低,因此我们在这里引入了安全字符串R,由系统管理员自己定义存储在内存中,在数据导入和查询时都将使用它,这样鉴别时就可以不再跨库查询。
如图1中的导入数据过程,MD5以数据表一行记录为基础输入M,同时系统定义安全字符串R,产生摘要数据H(M+R)。作为数据库中新增字段M,在数据库被查询时,取数据库原始字段进行一次H(M+R)与M的比较,异常则转入异常处理模块。数据在对外发布过程首先走鉴别过程,这样就杜绝了错误信息的发布,确保了数据的可靠。
三、 数据库防篡改的实现
防篡改平台作为一个中间件平台存在,只要对数据库平台进行访问都要经过此平台的检验,没发现篡改才会把数据转发给用户,如果有篡改发生马上转入异常报警和数据恢复。在这里,安全字符串需要用户自己掌握,在记录进行摘要和篡改鉴定中必须保持一致。
数据库防篡改的整体过程分为7步。第一步,外网用户通过web提交查询数据,传入查询的关键字。第二步,鉴别模块接受查询的关键字,进入数据库检索数据。第三步,检索到该记录,提取所有字段与系统设定的关键字符串串接,进行数字摘要。若没检索到记录退出系统。第四步,将数字摘要与前面生成的摘要字段M进行比对。如果异常转入第六步。第五步,核对正确,查询结果返回给用户,系统退出。第六步,出现异常,马上联动告警信息,如联动短信设备或电话设备,及时报警。第七步,从安全设备上获取数据,重新生成摘要,恢复正常数据。
从以上过程我们可以看出,整个过程中,即使攻击者获取系统控制权限,对数据记录进行恶意修改,只要查询用户通过web页面查询数据,鉴别模块就会发现异常,及时联动恢复模块进行数据恢复。
四、关键算法及其实现
系统基于windows 2003或linux平台。采用java做平台开发,采用mysql数据库进行数据存储。关键算法如下:
MD5在java下的实现
import java.security.MessageDigest;
public static Stringmd5(String inputstr) throws Exception
{ int tempi=0;
MessageDigest md5 = MessageDigest.getInstance
("md5");
byte[ ] in = inputstr.getBytes("utf-8");
byte[ ] out = md5.digest(in);
StringBuffer md5str = new StringBuffer();
for (int i=0;i<16;i++){
tempi=out[i] & (0xff);
if (tempi<16)md5str.append("0");
md5str.append(Integer.toHexString(tempi)); }
return md5str.toString();}
其中系统结构图见图2。
五、结束语
该系统在很大程度上防止了数据被恶意修改和滥用,保证了高校招生查询数据库的安全,在记录进行MD5的过程中引入安全字符串,增加了安全性,优化了系统的性能。但本系统还存在一些不足,如安全字符串R的安全保障和原始表的存放位置考虑的偏少,这也是我们后续研究的目标。
注释:
①http://www.lq318.com/news/guonei/7893.aspx
②http://www.techweb.com.cn/news/2008-09-29/368221.shtml
③Rivest R.The MD5 Message-Digest Algorithm.RFC 1321,April 1992
④张裔智等:《Md5算法的研究》,《计算机科学》,2008年第35卷第7期。
作者单位:绵阳师范学院招生就业处西南民族大学外国语学院 西南民族大学电信工程学院