基于数字摘要的高招数据库防篡改技术的研究与实现

来源:岁月联盟 作者: 时间:2014-03-26

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

图片内容