崔 蕾,邵天會
(煙臺職業(yè)學院,山東 煙臺 264670)
隨著數(shù)據(jù)的重要性日益增強,數(shù)據(jù)安全越發(fā)得到人們的重視,大數(shù)據(jù)云存儲安全的重要性不言而喻,在針對云存儲數(shù)據(jù)加密方式中,隱式加密因為不需要秘鑰,并且在保證安全性同時提高了加密解密效率,從而得到廣泛應(yīng)用,目前比較好的隱式加密算法(K,K)和(K,N)數(shù)據(jù)存儲方式,這兩種加密方式的改進不乏優(yōu)秀的算法,但是往往保證了安全性卻損失了加密效率,改進分割數(shù)據(jù)的處理方式是提高效率和保證數(shù)據(jù)安全性的關(guān)鍵環(huán)節(jié)。
改進的加密方案主要在數(shù)據(jù)分割階段,首先將數(shù)據(jù)分割為等長度的N部分ri,將每個ri分割為K塊,再進行(K,N)操作,把K塊進行映射為N,其中K<=N,即(r1,r2,…rk)映射到集合(d1,d2,…dk),如圖1所示。
圖1 數(shù)據(jù)平均分割模塊圖
因此對每個ri進行二次分割后構(gòu)成(r11,r12,…r1k),(r21,r22,…r2k),…(rn1,rn2,…rnk),如圖2所示。
圖2 數(shù)據(jù)子塊分割模型圖
因為每個ri為等長的N,因此每個rik可以構(gòu)成N個線性方程:
b11r11+b12r12+…+b1kr1k=e11
b21r11+b22r12+…+b2kr1k=e12
…
bn1r11+bn2r12+…+bnkr1k=e1n
其中bij是數(shù)域P中任意值,并且生成N個數(shù)據(jù)。
同理:
b11ri1+b12ri2+…+b1krik=ei1
b21ri1+b22ri2+…+b2krik=ei2
…
bn1ri1+bn2ri2+…+bnkrik=ein
存儲數(shù)據(jù)時對數(shù)據(jù)N冗余存儲操作,線性方程組表示為矩陣形式b*r=e:
我們從矩陣b中任意選取k*k方陣,不難得出系數(shù)b(k*k)矩陣是可逆的,令b系數(shù)不全為0,目前b和r中一列相關(guān),為了加強關(guān)聯(lián)性,b*r*b=e′(e′為新生成的矩陣),保證e和b,r中的每個行列值都相關(guān),因此增強了數(shù)據(jù)的關(guān)聯(lián)性,增加數(shù)據(jù)的安全性。因為b(k*k)是可逆的,恢復(fù)數(shù)據(jù)r我們需要把其中的任意的k個數(shù)據(jù)進行如下操作r=b-1*e′*b-1:
在分割數(shù)據(jù)階段可以借鑒MapReduce原理,構(gòu)造map函數(shù)[4],對數(shù)據(jù)進行中間值的提取,對中間值進行算法的二次分割,也就是進行2次map操作,得到的數(shù)據(jù)結(jié)果我們終止reduce操作,提取Map數(shù)據(jù)結(jié)果進行改進的算法的運算,這樣提高了數(shù)據(jù)分割的效率,并且適應(yīng)于大數(shù)據(jù)的操作,但是對于小數(shù)據(jù)來說,開銷沒有減少。
利用5個服務(wù)器進行操作,其中4個用于存儲數(shù)據(jù),1個用來算法的執(zhí)行,四份數(shù)據(jù)被分成x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4,d1,d2,d3,d4,同時把四份數(shù)據(jù)定為x=x1x2x3x4,y=y1y2y3y4,z=z1z2z3z4,d=d1d2d3d4,數(shù)據(jù)x,y,z,d分別存放在4個服務(wù)器中,負責計算的服務(wù)器進行m=x*y*z*dmodp,n=(x+y+z+d)modp,k=(xy+xz+xd+yz+yd+zd)modp,j=(xyz+xyd+yzd+xzd)modp操作,其中p為大素數(shù)。
計算過程中每個服務(wù)器都進行四個方程的模運算,例如計算j=(xyz+xyd+yzd+xzd)modp操作:
第一步:
1)server1計算w1=x1y1z1+x1y1d1+y1z1d1+x1z1d1,得到隨機數(shù)n1,將n1*w1,得到結(jié)果s1=n1*w1,n1x1y1z1,n1x1y1d1,n1y1z1d1,n1x1z1d1發(fā)到server5;
2)server2計算w2=x2y2z2+x2y2d2+y2z2d2+x2z2d2,得到隨機數(shù)n2,將n2*w2,得到結(jié)果s2=n2*w2,n2x2y2z2,n2x2y2d2,n2y2z2d2,n2x2z2d2發(fā)到server5;
3)同理分別在server3、server4計算w3,w4,得到隨機數(shù)n3,將n3*w3,n4*w4,得到s3,s4,發(fā)送到server5。
第二步:服務(wù)器server5進行計算操作
1)s1*s2*s3*s4=n1w1n2w2n3w3n4w4相乘運算;
2)將server1、server2、server3、server4發(fā)送到server5的數(shù)據(jù)進行乘積運算;
3)用1)減2)各項的和,得到s;
4)server5把結(jié)果s分成4份,r1,r2,r3,r4,并且滿足s=r1*r2*r3*r4,然后將r1發(fā)到server1,r2發(fā)到server2,r3發(fā)到server3,r4發(fā)到server4。
第三步:server1、server2、server3、server4分別計算r1/n1,r2/n2,r3/n3,r4/n4r4/n4,然后計算四個數(shù)的乘積,顯然得出(r1/n1)(r2/n2)(r3/n3)(r4/n4)=(r1*r2*r3*r4)/(n1*n2*n3*n4)=s/(n1*n2*n3*n4)=xyz+xyd+yzd+xzd。
同理進行其他的運算。
本實驗硬件環(huán)境采用4臺主機作為存儲服務(wù)器,4臺主機配置相同,CPU為i7-7740X,主頻4.3Ghz,內(nèi)存16G,內(nèi)核數(shù)為4,線程為8,1臺主機作為計算機服務(wù)器, CPU為i7-7800X,主頻3.5Ghz(最高為4.0Ghz),內(nèi)存16G,內(nèi)核數(shù)為6,線程為12,1臺主機作為攻擊服務(wù)器,配置和計算機服務(wù)器相同。軟件環(huán)境操作系統(tǒng)采用win10、JDK1.8環(huán)境配置,開發(fā)工具Eclipse4.7.0,使用JAVA語言開發(fā),根據(jù)MapReduce原理構(gòu)造新的map函數(shù),應(yīng)用在4臺存儲服務(wù)器上,在計算服務(wù)器上對改進的隱式加密算法進行數(shù)據(jù)的計算。
從數(shù)據(jù)庫中抽取記錄數(shù)為870的記錄集,對記錄集進行不同k,n值(2,3),(3,3),(2,4)的數(shù)據(jù)分塊,并對分塊后的數(shù)據(jù)進行改進的隱式加密算法運算,p取值3,攻擊服務(wù)器對其中的2、3、4臺存儲服務(wù)器進行數(shù)據(jù)竊取還原,不同的k,n取值進行足夠多次數(shù)的數(shù)據(jù)竊取還原操作,通過結(jié)果分析得出折線圖3。
安全性分析,只要負責存儲的四個服務(wù)器不同時進行合謀,其他的任何服務(wù)器之間合謀都不能夠產(chǎn)生數(shù)據(jù)的泄露,即使負責運算的服務(wù)器和其中的3個負責存儲的服務(wù)器進行合謀也無法獲得正確的數(shù)據(jù)。計算量分析,運算在簡單的加法和乘法中進行,沒有對數(shù)、乘方等復(fù)雜運算,運算的時間得到了保證。算法沒有進行加密操作,因此沒有密鑰的產(chǎn)生,無需保存密鑰,同時也沒有產(chǎn)生加密字典,各個數(shù)據(jù)在不同的服務(wù)器存儲,數(shù)據(jù)進行二次分割后并且進行了N冗余數(shù)據(jù)處理,每個數(shù)據(jù)的獲取難度增加到P的指數(shù)級,同時我們在進行計算中沒有復(fù)雜的乘方等運算,從而提高了運算的速度,我們引進了MapReduce思想進行分割數(shù)據(jù),使整個算法的效率得到提高。