適用于數(shù)據(jù)庫的加密算法

數(shù)據(jù)庫加密方法可以應(yīng)用于不同的環(huán)境,但存在一個共同的問題是:對于所形成的密文數(shù)據(jù)庫無法進行操作。這樣首先增大了時空開銷;其次,在實際應(yīng)用中,對于某些重要或敏感數(shù)據(jù),無法滿足用戶對其進行操作但又不讓用戶了解其中的信息的需要。如果能對密文數(shù)據(jù)庫進行數(shù)學(xué)運算和常規(guī)的數(shù)據(jù)庫操作,顯然能夠解決上面存在的問題,并可以大大削減加、解密所需要的時空開銷,大大提高數(shù)據(jù)庫的運行效率。秘密同態(tài)技術(shù)就是一個能解決上述問題的有效方法。

一、秘密同態(tài)技術(shù)在整數(shù)上的實現(xiàn)

秘密同態(tài)是由Rivest等人于1978年提出的,是允許直接對密文進行操作的加密變換。但是由于其對已知明文攻擊是不安全的,后來由Domingo做了進一步的改進.秘密同態(tài)技術(shù)最早是用于對統(tǒng)計數(shù)據(jù)進行加密的,由算法的同態(tài)性,保證了用戶可以對敏感數(shù)據(jù)進行操作但又不泄露數(shù)據(jù)信息.秘密同態(tài)技術(shù)是建立在代數(shù)理論之上的,其基本思想如下:

假設(shè)Ek1、Dk2分別代表加密、解密函數(shù),明文數(shù)據(jù)空間中的元素是有限集合{M1,M2,…,Mn},a和β代表運算,若a (Ek1(M1),Ek1(M2),…,Ek1(Mn)=Ek1(β(M1,M2,…,Mn))成立,且Dk2(a(Ek1(m1)、Ek1(M2),…,Ek1(Mn)))=β(M1,M2,…,Mn)成立,則稱函數(shù)族(Ek1,Dk2,a,β)為一個秘密同態(tài)。

加密算法實現(xiàn)過程如下:

(1)選取安全大素數(shù)p、q,及由此計算m=pq(m保密);

(2)選取安全參數(shù)n(根據(jù)需要選擇適當(dāng)大?。?/p>

(3)明文空間T=Zm(小于Z的所有非負整數(shù)集合),密文空間T=(Zp*Zq)n;

(4)選取兩素數(shù)rp、 rq,分別滿足rp∈Zp,rq ∈zq;

(5)確定加密密鑰為K=(p,q,rp,rq);

(6)加密算法:

設(shè)有一明文x∈zm,隨機地將x分為n分:X1,X2,…,Xn,并滿足Xi∈Zm, i=(l,2,…,n);_適用于數(shù)據(jù)庫的加密算法

適用于數(shù)據(jù)庫的加密算法
(7)解密算法Dk (x):

第一步計算

適用于數(shù)據(jù)庫的加密算法

其中,rp-n和rq-n分別為rp mod p和rq rnod q相應(yīng)次冪的乘法逆元。

第二步計算

適用于數(shù)據(jù)庫的加密算法

第三步利用中國剩余定理計算

適用于數(shù)據(jù)庫的加密算法

其中qq-1=1mod p,pp-1=1 modq。

二、浮點型數(shù)據(jù)同態(tài)加密運算

本文基于秘密同態(tài)加密的基本原理,在同態(tài)加密機制中提出了復(fù)合同態(tài)的概念并應(yīng)用到浮點數(shù)的加密算法中,實現(xiàn)了浮點數(shù)的秘密同態(tài)加密,使得同態(tài)加密機制更具有通用性。

(一)復(fù)合同態(tài)的定義

定義設(shè)σ、τ分別是空間G到H和H到M的同態(tài)變換,則σ、τ復(fù)合σ*τ是空間G到l的同態(tài)變換。即對于x∈G,有同態(tài)變換y=σ(x),(y∈H),存在z∈M,Z=τ(y)=τ(σ(x))=σ*τ(x)

滿足:

適用于數(shù)據(jù)庫的加密算法
基于實際的應(yīng)用和討論的方便,假設(shè)兩次同態(tài)變換分別是加密運算Ek1(x)和Ek2 (y),由于引入復(fù)合變換的目的是將浮點數(shù)轉(zhuǎn)換成整數(shù)的形式然后進行加密,所以定義Ek1(x)是對浮點數(shù)進行的加密運算。Ek2 (y)仍然采用整數(shù)上秘密同態(tài)變換的加密機制。

(二)浮點數(shù)到整斂的同態(tài)加密變換

加密算法的實現(xiàn)過程如下:

(1)設(shè)明文數(shù)據(jù)x的小數(shù)點位數(shù)為k (k為非負整數(shù));

(2)將原數(shù)據(jù)分解為xo,x1,…xk,使得x*10=ko*10o+x1* 101+...+Xk*10k,其中x1為正整數(shù);

(3)定義同態(tài)加密變換

適用于數(shù)據(jù)庫的加密算法

(4)則解密運算適用于數(shù)據(jù)庫的加密算法為浮點數(shù)。

在浮點數(shù)的加、減、乘、除運算中,根據(jù)實際的需要設(shè)定所有明文數(shù)據(jù)的最大小數(shù)點位數(shù)為k(k為非負整數(shù)),不夠k位的用零補足,則有:加和減Ek1(x±y)=E k1(x)±E k1(y)為10的i(0≤i≤k)次方項的加減法。

適用于數(shù)據(jù)庫的加密算法

其中o≤i≤k,o≤j≤k, o≤j+j≤2k。

除因為Ek1(x)只是一數(shù)值形式的變換,顯然有適用于數(shù)據(jù)庫的加密算法,由上述加減乘除運算可得:

適用于數(shù)據(jù)庫的加密算法
這些運算保證了可以直接對轉(zhuǎn)換后的整數(shù)進行操作。

將浮點數(shù)進行復(fù)合同態(tài)加密,即將浮點數(shù)明文x經(jīng)過Ek1(x)同態(tài)變換后,轉(zhuǎn)換成一整數(shù)的形式,然后再用Ek2 (y)(其中y=Ek1(X))進行加密變換。

其中解密運算定義為Dk(X)=Dk1(Dk2 (x)),Dk1,Dk2分別為Ek1和Ek2的解密運算。解密過程中首先對Ek1(x)形成的密文數(shù)據(jù)進行解密,然后再利用Dk1(x)計算得到明文數(shù)據(jù)。

(三)復(fù)合同態(tài)基本運算

復(fù)合同態(tài)運算完成的是浮點數(shù)的同態(tài)加密過程,也是本部分的核心。

下面的基本運算包括上面講述的浮點數(shù)到整數(shù)的同態(tài)轉(zhuǎn)換E k1(X)以及整數(shù)上的同態(tài)加密算法E k2(X),具體實現(xiàn)過程如下:

1.復(fù)合同態(tài)的加、減法運算

適用于數(shù)據(jù)庫的加密算法

2、復(fù)合同態(tài)乘法運算

適用于數(shù)據(jù)庫的加密算法

3、復(fù)合同態(tài)除法運算

適用于數(shù)據(jù)庫的加密算法

即對經(jīng)過復(fù)合同態(tài)加密后得到的密文之間的加、減、乘、除運算就相當(dāng)于對明文進行基本運算后再加密。

(四)安全性分析

將同態(tài)加密機制的應(yīng)用從整數(shù)擴展到浮點數(shù)范圍內(nèi),使秘密同態(tài)加密算法更具有實用性。加密過程中即使經(jīng)過Ek1(x)加密轉(zhuǎn)換后得到相同的數(shù)據(jù),由于第二次同態(tài)加密素數(shù)的隨機選取和加密數(shù)據(jù)的隨機分割,這樣得到的加密數(shù)據(jù)也是不一樣的。浮點數(shù)同態(tài)加密即在外層加密中保留了原始秘密同態(tài)加密的安全性,同時也對原數(shù)據(jù)進行了雙重同態(tài)變換,在安全性上只有過之而無不及。在浮點數(shù)上的同態(tài)加密機制在安全性方面同樣有以下特性:

(1)僅知密文攻擊:如果攻擊者獲取密文,但從n找出p是非常困難的,因為需要對n進行因數(shù)分解。

(2)已知明文攻擊:如果攻擊者獲取一個明文密文對(x,y),攻擊者可以進行反復(fù)的試探,以期獲得解密密鑰p;但攻擊者需要進行試探運算的運算量大到不可以接受的地步。

(3)完整性攻擊:根據(jù)我們的加密算法,攻擊者可以任選一個值來替換一個已經(jīng)加密的數(shù)據(jù)。也就是說,我們的算法無法抵抗完整性攻擊。

三、字符串?dāng)?shù)據(jù)的同態(tài)加密

與整數(shù)不同的是,整數(shù)加密后能夠?qū)崿F(xiàn)的在密態(tài)下的加、減、乘、除運算對于字符串是沒有意義的,所以本文通過中國剩余定理將字符串進行轉(zhuǎn)換,然后利用秘密同態(tài)算法進行加密處理。具體算法如下:

(1)設(shè)一字符串B,將字符串中的每一個字符取其ASCII碼,分別表示為b1,b2,....,bk,其中k是字符串中字符的個數(shù)。

(2)對應(yīng)取k個兩兩互素的正整數(shù),設(shè)為m1,m2,...mk,(m1≥121)。

(3)則由中國剩余定理得同余式組。

(4)則同余式組的解適用于數(shù)據(jù)庫的加密算法就是將要加密的整數(shù)值。

(5)根據(jù)秘密同態(tài)算法解密后可得加密數(shù)據(jù)x,則由b1=x mod m1可得字符串中每個字符的對應(yīng)ASCII碼值。

利用中國剩余定理的證明方法可對字符串與所得加密整數(shù)值的對應(yīng)關(guān)系進行證明。在具體的實現(xiàn)過程中,素數(shù)的選取和存儲足我們需要考慮的問題。在安全性方面,它仍然保留了原整數(shù)秘密同態(tài)加密的特點。

小知識之中國剩余定理

中國剩余定理,又稱為孫子剩余定理,古有“韓信點兵”、“孫子定理”、求一術(shù)(宋 沈括)“鬼谷算”(宋 周密)、“隔墻算”(宋 周密)、“剪管術(shù)”(宋 楊輝)、“秦王暗點兵”、“物不知數(shù)”之名,是數(shù)論中的一個重要命題。