数据库加密方法可以应用于不同的环境,但存在一个共同的问题。为此我们基于复合同态的数学理论基础,提出了美复合同态的概念并扩展应用到了实现浮点型数据的同态加密机制中。
一、秘密同态及其在整数上的实现
秘密同态是由Rivest等人于78年提出的,是允许直接对密文进行操作的加密变换。但是由于其对己知明文攻击是不安全的,后来由Domingo作了进一步的改进。秘密同态技术最早是用于对统计数据进行加密的,由算法的同态性,保证了用户可以对敏感数据进行操作但又不泄露数据信息。秘密同态技术是建立在代数理论之上的,其基本思想如下:
设Ek1、Dk2分别代表加、解密函数,明文数据空间中的元素是对于所形成的密文数据库无法进行操作。是有限集合{M1,M2,…,mn}。α和β代表运算,若
成立,且成立,则称函数族(Ek1,ek2,α和β)为一个秘密同态。
算法实现过程如下:
a)选取安全大素数p、g,及由此计算m=pq(m保密)。
选取安全参数n(根据需要选择适当大小)。
c)明文空间T=Zn(小于Z的所有非负整数集合),密文空间
d)选取两素数rp、,rq,分别满足rp EZP,rq∈Zq。
e)确定加密密钥为K=(p,g.rP,ry)o
f)加密算法:x∈Zn,设有一明文算,随机地将x石分为n份:x1,X2,….,xn,并满足
二、类复合同态基本运算
类复合同态运算完成的是浮点数的同态加密过程,也是本部分的核心。下面的基本运算包括上面讲述的浮点数到整数的同态转换Ekl(x)以及整数上的同态加密算法Ek2(x)、具体
实现过程如下:
a)类复合同态的加、减法运算 。
b)类复合同态的乘法运算
c)类复合同态的除法运算
即对经过类复合同态加密后得到的密文之间的加、减、乘、除运算就相当于对明文进行基本运算后再加密。下面给出两个浮点数加密运算的示例,所用数据有点小,但却能反映出基本的加密过程(为了清楚简便,加密过程中把中间生成的整数分割成两份进行运算)。
例1 加法运算:设加密密钥p =17,q=13,rp=2,rq=3,明文x1 =0.3,X2=-0,1,X3 =20。
由类复合同态的加密原理,设k=l,则有:
则有:
对计算结果进行解密运算得
例2乘法运算:令加密密钥p=17,q=13, rP=2,rq=3,明文x1 =0.03, X2 =0. 10
由类复合同态的加密原理,设k=2’则有 :
则有
对计算结果进行解密运算得
4、安全性分析
将同态加密机制的应用从整数扩展到浮点数范围内,使秘密同态加密算法更具有实用性d加密过程中即使经过Eki(x)加密转换后得到相同的数据,由于第二次同态加密素数的随机选取和加密数据的随机分割,这样得到的加密数据也是不一样的。浮点数同态加密即在外层加密中保留了原始秘密同态加密的安全性,同时也对原数据进行了双重同态变换,在安全性上只有过之而无不及,在浮点数上的同态加密机制在安全性方面同样能抵抗仅知密文攻击和已知明文攻击。
三、字符串数据的同态加密
与整数不同的是,整数加密后能够实现的在密态下的加、减、乘、除运算对于字符串是没有意义的,所以本文通过中国剩余定理将字符串进行转换,然后利用秘密同态算法进行加密处理。具体算法如下;
a)设一字符串B,将字符串中的每一个字符取其ASCII码,分别表示为bi,b2,…,bk:其中k是字符串中字符的个数。
b)对应取知个两两互素的正整数,设为m1,m2,…,mk(mi≥121)。
c)由中国剩余定理得同余式组
d)同余式组的解就是将要加密的整数值。
e)根据秘密同态算法解密后可得加密数据x,则由6i =xmod mi;可得字符串中每个字符的对应ASCII码值。
利用中国剩余定理的证明方法可对字符串与所得加密整数值的对应关系进行证明。在具体的实现过程中,素数的选取和存储也是需要考虑的问题。在安全性方面,它仍然保留了原整数秘密同态加密的特点。
小知识之中国剩余定理
中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。