[摘要] 本文通過(guò)對(duì)電子商務(wù)安全中加密技術(shù)的研究,給出了一種將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)的同態(tài)運(yùn)算,基于復(fù)合同態(tài)的數(shù)學(xué)理論基礎(chǔ),提出了類復(fù)合同態(tài)的概念并擴(kuò)展應(yīng)用到了實(shí)現(xiàn)浮點(diǎn)型數(shù)據(jù)的同態(tài)加密算法中。
[關(guān)鍵詞] 電子商務(wù)安全 秘密同態(tài) 浮點(diǎn)數(shù)加密 類復(fù)合
一、引言
隨著電子商務(wù)的飛速發(fā)展,它的安全問(wèn)題越來(lái)越引起人們的重視。加密技術(shù)是電子商務(wù)安全的主要技術(shù)之一。常用的數(shù)據(jù)加密方法存在一個(gè)共同的問(wèn)題是:對(duì)于所形成的密文數(shù)據(jù)必須先進(jìn)行解密運(yùn)算,然后對(duì)明文進(jìn)行數(shù)學(xué)運(yùn)算,之后再加密。這樣會(huì)增大時(shí)空開銷。秘密同態(tài)(Private Homomorphism)技術(shù)就是一個(gè)能解決上述問(wèn)題的有效方法。為此,筆者提出了類復(fù)合同態(tài)的概念并給出了實(shí)現(xiàn)浮點(diǎn)型數(shù)據(jù)的同態(tài)加密算法。
二、類復(fù)合同態(tài)的定義
定義:設(shè)σ、τ分別是空間G到H和H到M的同態(tài)變換,則σ和τ的復(fù)合σ·τ是空間G到M的同態(tài)變換。即對(duì)于x∈G,有同態(tài)變換y=σ(x)(y∈H),存在z∈M,z=τ(y)=τ(σ(x))= σ·τ(x),滿足σ·τ(x+y)=σ·τ(x)+σ·τ(y)
σ·τ(x*y)=σ·τ(x)*σ·τ(y)
基于實(shí)際的應(yīng)用和討論的方便,假設(shè)兩次同態(tài)變換分別是加密運(yùn)算Ek1(x)和Ek2(y),由于引入復(fù)合變換的目的是將浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)的形式然后進(jìn)行加密,所以定義Ek1(x)是對(duì)浮點(diǎn)數(shù)進(jìn)行的加密運(yùn)算。Ek2(y)仍然采用整數(shù)上秘密同態(tài)變換的加密機(jī)制。
三、浮點(diǎn)型數(shù)據(jù)的同態(tài)加密運(yùn)算
1.浮點(diǎn)數(shù)到整數(shù)的同態(tài)加密變換。為了保持與原同態(tài)運(yùn)算的一致性,對(duì)浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換也采用類似形式。算法的實(shí)現(xiàn)過(guò)程如下:
(1)設(shè)明文數(shù)據(jù)x的小數(shù)點(diǎn)位數(shù)為k(k為非負(fù)整數(shù));(2)將原數(shù)據(jù)分解為x0,x1,…xk,使得x*10k=x0*100+x1*101+…+xk*10k,其中xi為正整數(shù);(3)定義同態(tài)加密變換。Ek1(x)= x0*100+x1*101+…+x k*10 k;(4)則解密運(yùn)算 , Dk1(x)為浮點(diǎn)數(shù)。
在浮點(diǎn)數(shù)的加、減、乘、除運(yùn)算中,根據(jù)實(shí)際的需要設(shè)定所有明文數(shù)據(jù)的最大小數(shù)點(diǎn)位數(shù)為k(k為非負(fù)整數(shù)),不夠k位的用零補(bǔ)足,定義計(jì)算Ek1(M)(M表示運(yùn)算表達(dá)式)時(shí)小數(shù)位k’的取值由各明文數(shù)據(jù)k值經(jīng)基本運(yùn)算后的所得值決定,則有:
加和減Ek1(x±y)=Ek1(x)±Ek1(y)為10的i(0≤i≤k)次方項(xiàng)的加減法。
乘Ek1(x)* Ek1(y)
=(x0*100+x1*101+…+xk*10k)*(y0*100+y1*101+…+yk*10k)
=x0y0*100+0+x0y1*100+1+…+xiyj*10i+j+…+xkyk*10k+k
=
=Ek1(xy)
其中0≤i≤k,0≤j≤k, 0≤i+j≤2k 。
除x和y經(jīng)除法運(yùn)算后k值消去,則k’取值0,顯然有
由上述加減乘除運(yùn)算可得:
這些運(yùn)算保證了可以直接對(duì)轉(zhuǎn)換后的整數(shù)進(jìn)行操作。
將浮點(diǎn)數(shù)進(jìn)行同態(tài)加密,即將浮點(diǎn)數(shù)明文x 經(jīng)過(guò)Ek1(x)同態(tài)變換后,轉(zhuǎn)換成一整數(shù)的形式,然后再用Ek2(y)(其中y=Ek1(x))進(jìn)行加密變換。
其中解密運(yùn)算定義為Dk(x)=Dk1(Dk2(x)),Dk1,Dk2分別為Ek1和Ek2的解密運(yùn)算。解密過(guò)程中首先對(duì)Ek1(x)形成的密文數(shù)據(jù)進(jìn)行解密,然后再利用Dk1(x)計(jì)算得到明文數(shù)據(jù)。
2.類復(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)換Ek1(x),以及整數(shù)上的同態(tài)加密算法Ek2(x),具體實(shí)現(xiàn)過(guò)程如下:
(1)類復(fù)合同態(tài)的加、減法運(yùn)算
Ek2(Ek1(x))±Ek2(Ek1(y))
=Ek2(Ek1(x)±Ek1(y))
=Ek2(Ek1(x±y))
=Ek2·Ek1(x±y)
(2)類復(fù)合同態(tài)的乘法運(yùn)算
Ek2(Ek1(x))*Ek2(Ek1(y))
=Ek2(Ek1(x)*Ek1(y))
=Ek2(Ek1(xy))
=Ek2·Ek1(xy)
(3)類復(fù)合同態(tài)的除法運(yùn)算
即對(duì)經(jīng)過(guò)類復(fù)合同態(tài)加密后得到的密文之間的加、減、乘、除運(yùn)算就相當(dāng)于對(duì)明文進(jìn)行基本運(yùn)算后再加密。
3.安全性分析。將同態(tài)加密機(jī)制的應(yīng)用從整數(shù)擴(kuò)展到浮點(diǎn)數(shù)范圍內(nèi),使秘密同態(tài)加密算法更具有實(shí)用性。加密過(guò)程中即使經(jīng)過(guò)Ek1(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ú)不及。由Dominggo-Ferrer在文獻(xiàn)[1]中的討論可知,在浮點(diǎn)數(shù)上的同態(tài)加密機(jī)制在安全性方面同樣能抵抗僅知密文攻擊和已知明文攻擊。
四、結(jié)論
本文在原加密算法的理論基礎(chǔ)上,對(duì)同態(tài)算法進(jìn)行了擴(kuò)展,實(shí)現(xiàn)了在浮點(diǎn)數(shù)上秘密同態(tài)加密算法。目前本算法已成功應(yīng)用于某公司電子商務(wù)系統(tǒng)中,較好地解決了系統(tǒng)的安全問(wèn)題。
參考文獻(xiàn):
[1]Domingo Ferrer J. A New Privacy Homomorphism and Applications [J]. Information Processing Letters, 1996, 60(5):277~282
[2]向廣利等:實(shí)數(shù)范圍上的同態(tài)加密機(jī)制[J].計(jì)算機(jī)工程與應(yīng)用,2005,41(20):12~14
[3]王曉峰王尚平:秘密同態(tài)技術(shù)在數(shù)據(jù)庫(kù)安全中的應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(14):194 ~196