Visual FoxPro数据库加密技术的研究
2012-03-31段淼
段淼
(吉林建筑工程学院计算机科学与工程学院,长春 130118)
0 引言
随着计算机技术的广泛应用,计算机信息安全已成为当前信息社会非常关注的问题.在应用软件开发中,Visual FoxPro作为数据库管理软件的安全性、保密性一直是开发和应用人员最为关心的问题.对数据库系统中的敏感数据进行加密处理,实现数据存储的安全保护,是大多数用户所希望的.
1 数据加密理论
数据加密的技术核心是密码学,加密是对原码变换产生得到伪码的过程,解密是加密的逆过程.原码是指待加密的消息,可能是数字序列、文本文件、位图、数字化的语音序列或数字化的视频图像等,可被传送或存储.伪码是指加密后的信息,通过压缩和加密的结合,伪码的大小不能确定,有时与原码一样大,有时稍大或稍小.对一段数据进行加密要通过“加密算法和密钥”才能实现.在实际应用中,密钥的构造是整个数据安全保护系统关键.加密算法E和对外保密的解密算法D,它们须满足条件:①D是E的逆,即D[E(M)]= M;②E和D都容易计算;③由E出发去求解D十分困难.
上述条件可看出,公开密钥密码体制下,加密密钥不等于解密密钥.加密密钥可对外公开,使任何用户都可将传送给此用户的信息用公开密钥加密发送,而该用户惟一保存的私人密钥是保密的,也只有它能将伪码复原、解密[1].虽然解密密钥理论上可由加密密钥推算出来,但这种算法设计在实际操作上是不可能的,或者即便能够推算出,也是需要花费很长的时间.
2 传统的加密方法
2.1 固定密码
固定密码,就是系统只有一个密码,且是固定不可变的.其核心是用IF和ACCEPT语句来实现,将变量与输入值比较,所谓的密码是程序设计时设定的,以后应用时无法修改.如果修改,就要改变源程序,或者可以编写一段子程序用来修改密码,但其保密性和灵活性都很差.
2.2 简单加密的固定密码
简单加密的固定密码,是指把密码进行简单的加密,但密码仍然是固定不变的.简单加密一般有两种:“钥匙盘”法和“变换法”.“钥匙盘”法,就是把密码存放在一张软盘上,使用时,把“钥匙盘”插入计算机,系统程序读取软盘中的密码;或把密码和操作员姓名存放到数据库中,此数据库存放于软盘中,使用时把“钥匙盘”插入计算机,系统读取软盘中的的密码和操作员姓名.这种加密方法保密性要好些,但每次使用都要用“钥匙盘”进入系统,操作较繁琐.变换法,就是通过对密码的运算,使密码发生变化的方法,一般使用的加密语句为:
其中,函数CHR(),是用来换算ASCII码的,换算后的PSD是ABC9.用这种简单的换算,可以避免密码被直接发现,如果和上述两种方法混合使用,保密性就大大加强了.
2.3 可变密码
可变密码指其密码值可由设置自行改变,这种方法一般由文件保存密码,且密码经过加密运算.密码的加密运算方法很多,常用的有:转换法、位移法、时间法、随机法等.
转换法,就是把输入的密码经过转换计算,转换成保存密码,取密码时,再经过运算,把密码还原.不定时密码是可变密码的一种,其密码的出现是通过随机方式询问用户,这种密码较为隐蔽,其方法如下:首先声明一个变量,用来计数,在每一个过程、函数、或者命令执行前,累加该变量,当该变量值等于随机值时,调用密码查询程序[2].
简单加密的变换密码,是利用时间函数来加密的算法.这种加密方法由变化的时间和固定字符构成,密码每天不同,其核心语句是:
其中,CDOW()函数功能是根据输入年月日,返回星期几(字符型).操作者根据今天是星期几,将星期的前3个字母和固定的"VFPSYSTEM"输入,与变量PWD比较.程序会把今天的日期换算成星期数,然后取前3位,并加上"VFPSYSTEM",合成今天的密码变量PWD,这样就实现了每天都有不同的密码,加强了密码的保密性.
上述几种加密方法都是传统的简单加密方法,其特点为简单、保密性差、密码单一、保护能力较低,其密码容易被发现.
3 随机加密方法
随机法,是指最终出现在口令表中密钥是以随机方式体现的,在不同的时刻输入相同的密钥存储在口令表中的密钥是不同的,原因是在进行加密算法的过程中引入了随机函数.
3.1 随机加密算法
数据随机加密,是一种利用随机函数的随机数序列与数据库数据进行异或运算,实现数据库数据加密的方法[3].在VFP软件中,提供了一个随机函数SECONDS().由随机函数SECONDS()返回一个从午夜到当前的秒值(精确到微秒),根据SECONDS()函数值,随机函数生成一个随机种子.对于最初给定的随机种子,随机函数生成一个随机数序列.使用此随机数序列与一个字符串进行异或运算,生成一个随机密钥,其长度由字符串长度决定.根据随机密钥,随机函数生成一个新的随机种子.根据此随机种子,随机函数生成一个用于加密的随机数序列,使用此随机数序列对数据库数据进行异或运算,实现对数据库数据的加密.
这种加密算法的优点是:第一,随机加密实现了“一次一密”的加密,安全性高;第二,数据库数据随机加密以后,除了增加密钥外,数据量没有明显增加;第三,算法简单,容易实现.
3.2 随机伪码加密算法
从用户密码到存库的随机伪码之间的变换由加密函数和解密函数完成.从用户密钥到随机伪码之间的变换是一个加密过程,加密过程的思想是对用户密钥进行复杂化、隐蔽化处理.
在VFP中采用随机伪码存库的方法可以实现一个应用系统的多用户权限控制,加密可靠,不易破解,且每次重新设定密码时所产生的伪码都不相同,通过变换生成的伪码没有任何规律性,即使从数据库中擦除伪码也无法进入系统,从而实现了可靠的密码权限控制[4].假设真码用zm变量存放,经过随机伪码加密算法加密后的伪码用wm变量保存,具体加密过程如下:
3.3 多随机数加密算法
多随机数加密算法是用多个密钥进行加密的技术.采用多随机数加密时,对于原码字符的ASCII值,都产生一个随机数(即密钥)与之运算,生成另外一个0~255之间的数,然后再将其以3个字符方式与密钥合并成4个字符生成伪码,最后将全部字符生成的这样的伪码联结起来形成对应的加密数字序列,并在之前加上长度,加密后的数据长度是原数的4倍多,把其放在字段中保存[5].其中,长度存放的时候也用了4个字符,并加入随机数,提高数据加密的程度.当打开表的时候,用加密函数将原码转换成伪码进行存贮,从表中无法直接看到原码,只有程序才能动态看到原码,保密性很强.假设cc是需要加密的字符串,多随机数加密算法的核心代码如下:
解密时则采用相反的方法,每个字符都要与这个字符有关的随机数运算,由于需要用到多个随机密钥,安全系数有较大提高.
4 结语
通过对VFP数据库系统加密技术中的各种加密方法的深入比较,能够看出对于利用随机加密算法加密的数据,使用常规的方法一般是很难破解的,完全可以实现一个应用系统的多用户权限控制功能.随机加密算法中的多随机数加密算法,提高了应用软件的数据保存的安全性,若能与其他加密算法结合,将实现用户使用的权限控制和对数据库源表的加密,从而有效地防止非法用户的使用与侵入,大大提高数据库系统的安全性与可靠性.
[1]赖溪松,韩 亮,张真城.计算机密码学及应用[M].北京:北京国防工业出版社,2001:8-10.
[2]冯 伟.VFP中的数据加密技术[J].淮北职业技术学院学报,2006,2(5):81-82.
[3]徐 珂.基于VF环境的数据库加密技术[J].广西轻工业,2007,23(4):67-68.
[4]陈 君.浅谈Visual FoxPro数据库系统的加密技术[J].河南机电高等专科学校学报,2006,1(14):27-29.
[5]史济民,汤济全.Visual FoxPro及其应用系统开发[M].北京:清华大学出版社,2001:156-158.