秘密同態(tài)算法之?dāng)?shù)據(jù)庫(kù)加密
數(shù)據(jù)庫(kù)加密方法可以應(yīng)用于不同的環(huán)境,但存在一個(gè)共同的問(wèn)題。為此我們基于復(fù)合同態(tài)的數(shù)學(xué)理論基礎(chǔ),提出了美復(fù)合同態(tài)的概念并擴(kuò)展應(yīng)用到了實(shí)現(xiàn)浮點(diǎn)型數(shù)據(jù)的同態(tài)加密機(jī)制中。
一、秘密同態(tài)及其在整數(shù)上的實(shí)現(xiàn)
秘密同態(tài)是由Rivest等人于78年提出的,是允許直接對(duì)密文進(jìn)行操作的加密變換。但是由于其對(duì)己知明文攻擊是不安全的,后來(lái)由Domingo作了進(jìn)一步的改進(jìn)。秘密同態(tài)技術(shù)最早是用于對(duì)統(tǒng)計(jì)數(shù)據(jù)進(jìn)行加密的,由算法的同態(tài)性,保證了用戶可以對(duì)敏感數(shù)據(jù)進(jìn)行操作但又不泄露數(shù)據(jù)信息。秘密同態(tài)技術(shù)是建立在代數(shù)理論之上的,其基本思想如下:
設(shè)Ek1、Dk2分別代表加、解密函數(shù),明文數(shù)據(jù)空間中的元素是對(duì)于所形成的密文數(shù)據(jù)庫(kù)無(wú)法進(jìn)行操作。是有限集合{M1,M2,…,mn}。α和β代表運(yùn)算,若?![]()
成立,且
成立,則稱函數(shù)族(Ek1,ek2,α和β)為一個(gè)秘密同態(tài)。
算法實(shí)現(xiàn)過(guò)程如下:
a)選取安全大素?cái)?shù)p、g,及由此計(jì)算m=pq(m保密)。
選取安全參數(shù)n(根據(jù)需要選擇適當(dāng)大?。?/p>
c)明文空間T=Zn(小于Z的所有非負(fù)整數(shù)集合),密文空間![]()
d)選取兩素?cái)?shù)rp、,rq,分別滿足rp EZP,rq∈Zq。
e)確定加密密鑰為K=(p,g.rP,ry)o
f)加密算法:x∈Zn,設(shè)有一明文算,隨機(jī)地將x石分為n份:x1,X2,….,xn,并滿足

二、類復(fù)合同態(tài)基本運(yùn)算
類復(fù)合同態(tài)運(yùn)算完成的是浮點(diǎn)數(shù)的同態(tài)加密過(guò)程,也是本部分的核心。下面的基本運(yùn)算包括上面講述的浮點(diǎn)數(shù)到整數(shù)的同態(tài)轉(zhuǎn)換Ekl(x)以及整數(shù)上的同態(tài)加密算法Ek2(x)、具體
實(shí)現(xiàn)過(guò)程如下:
a)類復(fù)合同態(tài)的加、減法運(yùn)算 。
![]()
b)類復(fù)合同態(tài)的乘法運(yùn)算
![]()
c)類復(fù)合同態(tài)的除法運(yùn)算
![]()
即對(duì)經(jīng)過(guò)類復(fù)合同態(tài)加密后得到的密文之間的加、減、乘、除運(yùn)算就相當(dāng)于對(duì)明文進(jìn)行基本運(yùn)算后再加密。下面給出兩個(gè)浮點(diǎn)數(shù)加密運(yùn)算的示例,所用數(shù)據(jù)有點(diǎn)小,但卻能反映出基本的加密過(guò)程(為了清楚簡(jiǎn)便,加密過(guò)程中把中間生成的整數(shù)分割成兩份進(jìn)行運(yùn)算)。
例1 加法運(yùn)算:設(shè)加密密鑰p =17,q=13,rp=2,rq=3,明文x1 =0.3,X2=-0,1,X3 =20。
由類復(fù)合同態(tài)的加密原理,設(shè)k=l,則有:

則有:

對(duì)計(jì)算結(jié)果進(jìn)行解密運(yùn)算得
![]()
例2乘法運(yùn)算:令加密密鑰p=17,q=13, rP=2,rq=3,明文x1 =0.03, X2 =0. 10
由類復(fù)合同態(tài)的加密原理,設(shè)k=2’則有 :
![]()
則有

對(duì)計(jì)算結(jié)果進(jìn)行解密運(yùn)算得
![]()
4、安全性分析
將同態(tài)加密機(jī)制的應(yīng)用從整數(shù)擴(kuò)展到浮點(diǎn)數(shù)范圍內(nèi),使秘密同態(tài)加密算法更具有實(shí)用性d加密過(guò)程中即使經(jīng)過(guò)Eki(x)加密轉(zhuǎn)換后得到相同的數(shù)據(jù),由于第二次同態(tài)加密素?cái)?shù)的隨機(jī)選取和加密數(shù)據(jù)的隨機(jī)分割,這樣得到的加密數(shù)據(jù)也是不一樣的。浮點(diǎn)數(shù)同態(tài)加密即在外層加密中保留了原始秘密同態(tài)加密的安全性,同時(shí)也對(duì)原數(shù)據(jù)進(jìn)行了雙重同態(tài)變換,在安全性上只有過(guò)之而無(wú)不及,在浮點(diǎn)數(shù)上的同態(tài)加密機(jī)制在安全性方面同樣能抵抗僅知密文攻擊和已知明文攻擊。
三、字符串?dāng)?shù)據(jù)的同態(tài)加密
與整數(shù)不同的是,整數(shù)加密后能夠?qū)崿F(xiàn)的在密態(tài)下的加、減、乘、除運(yùn)算對(duì)于字符串是沒(méi)有意義的,所以本文通過(guò)中國(guó)剩余定理將字符串進(jìn)行轉(zhuǎn)換,然后利用秘密同態(tài)算法進(jìn)行加密處理。具體算法如下;
a)設(shè)一字符串B,將字符串中的每一個(gè)字符取其ASCII碼,分別表示為bi,b2,…,bk:其中k是字符串中字符的個(gè)數(shù)。
b)對(duì)應(yīng)取知個(gè)兩兩互素的正整數(shù),設(shè)為m1,m2,…,mk(mi≥121)。
c)由中國(guó)剩余定理得同余式組

d)同余式組的解
就是將要加密的整數(shù)值。
e)根據(jù)秘密同態(tài)算法解密后可得加密數(shù)據(jù)x,則由6i =xmod mi;可得字符串中每個(gè)字符的對(duì)應(yīng)ASCII碼值。
利用中國(guó)剩余定理的證明方法可對(duì)字符串與所得加密整數(shù)值的對(duì)應(yīng)關(guān)系進(jìn)行證明。在具體的實(shí)現(xiàn)過(guò)程中,素?cái)?shù)的選取和存儲(chǔ)也是需要考慮的問(wèn)題。在安全性方面,它仍然保留了原整數(shù)秘密同態(tài)加密的特點(diǎn)。
小知識(shí)之中國(guó)剩余定理
中國(guó)古代求解一次同余式組(見(jiàn)同余)的方法。是數(shù)論中一個(gè)重要定理。










