基于数字摘要的高招数据库防篡改技术的研究与实现
三、 数据库防篡改的实现
防篡改平台作为一个中间件平台存在,只要对数据库平台进行访问都要经过此平台的检验,没发现篡改才会把数据转发给用户,如果有篡改发生马上转入异常报警和数据恢复。在这里,安全字符串需要用户自己掌握,在记录进行摘要和篡改鉴定中必须保持一致。
数据库防篡改的整体过程分为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期。