数据库加密对于企业内部安全管理是不可或缺的。目前,国内外纷纷重视信息安全陵术的研发,在加密理论方面,日趋成熟,但在数据库上实施加密算法方面,研究相对较少。那么我今天就给大家介绍一下子密钥数据库加密算法。
子密钥数据库加密算法
1、 DES加密算法
数据库系统的加密算法多采用类似DES(数据加密标准)的分组加密算法。DES是一个分组加密算法,它以64位为一组对数据进行加密。64位一组的明文从算法的一端输入.64位的密文从另一端输出。密钥的长度为56位,且可在任意的时候改变。所有的保密性依赖于密钥。DES是一个对称算法;加密和解密用的是同一算法。
DES对64位的明文分组进行操作。通过一个初始置换,将明文分组分成左半部分和右半部分,各32位长。再进行16轮完全相同的运算,这些运算被称为函数,,在运算过程中数据与密钥结合。在每一轮(见图1)中,密钥位移位,然后再从密钥的56位选出48位,通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作与48位密钥结合,通过8个S盒,将48位替代成新的32位数据,再将其置换一次。该4步运算构成了函数f,然后通过另一个异或运算,函数f的输出与左半部分结合,其结果即成为新的右半部分,原来的右半部分成为新的左半部分。经过16轮后,左半部分与右半部分合在一起经过一个末置换(初始置换的逆置换),最后,该算法就完成了。
2、子密钥数据库加密算法
子密钥加密算法中的核心思路是根据数据库,特别是关系型数据库中的数据组织的特点,在加密时以纪录为单位进行加密操作,而在查询需要解密时,则以数据项为单位进行解密操作。两者所用的密钥是不同的,加密所用的密钥是针对整个纪录的密钥,而解密所用的密钥是针对该数据项的字密钥。
其定理如下:
假定M1,M2,…,Mn是n个两两互素的正整数。A1,A2,…An代表n个任意的正整数,则同余方程组:
是有解的,并且任意两个解对于M1,M2,…,Mn都是同余的。
设有n个大素数,D1,D2,…,Dn和值Ci,这里ci( mod Di)j=1.2,…n。可以从Ci和Di中恢复出Aj的值。这里Ci对应一个加密的密文记录,Di对应一个数据项的解密密钥,Aj即为明文数据项值。
下面根据D.E.Denning所述的简化方案来讨论如何实现数据库文件加密、解密和修改。
(1)加密
加密是把纪录由明文变换成密文的过程,其方程如下:
式中,;n是数据项文件中数据项的个数;Dj是人为选定的大于n的素数,它是数据项j的解密密钶(读子密钥);弓是明文纪录,其求法是:
子密钥对于数据库文件而盲是全局的,即所有的纪录用同样的字密钥加密,每个用户只可得到允许其读的那些数据项的读子密钥。
(2)解密
由剩余定理可知.G是方程组:
的解,若需要解密第j个数据项,则对Cj用第j个数据项的读子密钥Dj,求模运算便可实现解密。
(3)更新
信息社会不断变化,数据库中的数据也要不修改和更新。利用读写字密钥可以较为方便地进行更新和修改,而且不髂要把整个纪录全部解密,修改后重新加密。
设需要更新的第,项数据项,新散据值为Fij;Gi是修改后的密文值,而且只需知道读子密钥Dj和写字密钥Ej即可按下面的方程式实现:
小知识之DES算法
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。