◆游永興
(湖北警官學院 湖北 430034)
隨著技術的進步和網(wǎng)絡的普及,人們的隱私保護變得越來越困難,人們試圖得到信息時自己的隱私通常也泄露了出去,如何保護網(wǎng)購時信用卡號、消費習慣等信息不泄露是一個值得研究的問題,尤其是網(wǎng)絡攻擊的成本越來越低。網(wǎng)絡面臨著外部攻擊和內(nèi)部攻擊的雙重威脅,面對外部攻擊的研究較多,內(nèi)部攻擊往往意味著合法用戶的非法得利,特別是詐騙團伙往往要在內(nèi)部人的協(xié)助下才能得到非法的利益,另外合法用戶的權利濫用也是值得警惕的。
在對網(wǎng)絡的使用中,網(wǎng)上信息比對是一個經(jīng)常需要進行的活動,常見的比如身份證號碼、銀行卡號、QQ賬號等都需要在網(wǎng)上利用信息比對才能完成特定的活動,特別是密碼和驗證碼的比對風險相當高,如何在網(wǎng)上信息比對中完成信息的比對時比對雙方和第三方都不能夠知道除了結(jié)果外多余的信息,首先要確保如果比對不一致的話,雙方不能知道對方的原始信息。
1976年W.Diffel和M.Hellman在文[1]中提出了公鑰密碼的新概念,為密碼學的研究開創(chuàng)了一個新的時代;1982年姚期智在文[2]中利用公鑰密碼設計出了可以實現(xiàn)安全兩方計算的協(xié)議,其中提到了有名的百萬富翁問題:
Alice和Bob是兩個百萬富翁,Alice有i百萬美元,Bob有j百萬美元,1
步驟1.Bob選擇一個任意的N比特的整數(shù)x,并且保密的計算Ea(x)=k;
步驟2.Bob給Alice發(fā)送數(shù)值k-j+1;
步驟3.Alice保密的計算yu=Da(k-j+u),其中u=1,2,…10;
步驟4.Alice生成一個N/2比特長的素數(shù)p,計算Zu=yu(modp)對于所有的u(如果有兩個Zu模p之差小于等于2就重新生成新的p直到滿足條件);
步驟5.Alice將這個素數(shù)p和下面的10個數(shù)發(fā)給Bob:Z1,Z2,…Zi,Zi+1,…,Z10+1,這些數(shù)都是模p的結(jié)果;
步驟6.Bob找其中的第j個數(shù),如果它等于x模p的話i大于等于j,不然的i小于j;
步驟7.Bob告訴Alice他的結(jié)論。
通過協(xié)議的過程,Alice和Bob知道了兩個人誰更富有,但是不知道對方到底有多少美元,這樣就在比較的同時保護了雙方的隱私。
可以看出,安全雙方計算就是甲乙雙方有兩個輸入信息x和y,通過協(xié)議雙方計算f(x,y)的值(百萬富翁問題就是f(x,y)等于x和 y之間的大小關系),并且甲乙雙方都沒有辦法知道另外一方的輸入信息x和y,這樣就可以很好的保護雙方輸入信息的隱私。
1981年Radin提出了不經(jīng)意傳輸(Oblivious Transfer,下文中簡稱為OT協(xié)議):Alice有個信息,Bob通過一定的概率獲得這個信息,但是Alice不知道Bob是否得到這個信息。將OT協(xié)議與門電路結(jié)合在一起可以得到加門和乘門的安全協(xié)同計算:
加門的安全協(xié)同計算步驟如下:
步驟 1:Alice 對她的輸入比特信息 a,找 SA和 SB,使得SA⊕SB=a,將SB發(fā)送給Bob。Bob做同樣的操作,對它的輸入信息比特b,找tA和tB,使得TA⊕tB=b,將tA發(fā)送給 Alice;
步驟 2:Alice 計算 SA⊕TA=uA,Bob 計算 SB⊕tB=uB;
步驟 3:Alice 和 Bob 將第二步中計算出的結(jié)果發(fā)送給第三方。
輸出:第三方計算出 a⊕b=uA⊕UB,也可以將結(jié)果告訴 Alice和Bob。
乘門的安全協(xié)同計算步驟如下:
步驟 1:Alice 對她的輸入比特信息 a,找 SA和 SB,使得SA⊕SB=a,將SB發(fā)送給Bob。Bob 做同樣的操作,對它的輸入信息比特b,找tA和tB,使得tA⊕tB=b,將tA發(fā)送給Alice;
步驟2:Alice和Bob利用OT協(xié)議,Alice作為發(fā)送者擁有信息ρ0和ρ0⊕SA,Bob有一個選擇SB,協(xié)議輸入為Bob得到ρ0⊕SBtA;
步驟3:Alice和Bob利用OT協(xié)議,Alice作為發(fā)送者擁有信息ρ1和ρ1⊕SA,Bob有一個選擇SB,協(xié)議輸入為Bob得到ρ1⊕SBtA;
步驟 4:Alice計算 UA=SAtA⊕ρ0⊕ρ1,Bob 計算 UB=SBtB⊕SBtA⊕ρ0⊕ρ1,將UA和UB發(fā)送給第三方。
輸出:第三方計算出ab=UA⊕UB,也可以將結(jié)果告訴Alice和Bob。
非門同樣可以進行安全協(xié)同計算,但由于非門從輸出可以看出輸入的特點,沒有辦法保護原始信息的隱私,而且非門通常在門電路中使用很少,對于隱私保護沒有明顯的影響。
對于網(wǎng)上信息比對而言,有三種情形可以利用上面的方法解決隱私保護:
第一種是兩個信息只需比對前面一位或者少數(shù)幾個位置比特值的大小,利用百萬富翁協(xié)議就行了,比如比對五個比特位的大小只需將前面的百萬富翁協(xié)議中計算10個數(shù)字改為計算32個數(shù)字,然后執(zhí)行協(xié)議就夠了。
第二種是兩個信息需要知道是否完全一致,比如Alice有個信息m1,Bob有個信息m2,雙方想知道對方的信息是否和自己一致,可以利用Hash函數(shù)的單向性進行設計。
設Alice有公開的公鑰加密函數(shù)Ea(x)和對應的私鑰解密函數(shù)Da(x),Bob有公開的公鑰加密函數(shù)Eb(x)和對應的私鑰解密函數(shù)Db(x),雙方通過公開渠道協(xié)商了Hash函數(shù)H(x)。Alice有信息m1,Bob有信息m2,協(xié)議如下:
1.Alice計算Eb(H(m1));
2.Alice將k1發(fā)送給Bob;
3. Bob計算D(k1)與自己的H(m2)比較,將相等或者不相等的結(jié)論發(fā)送給Alice。
協(xié)議完成之后,如果m1與m2相等則協(xié)議完成了它的任務;如果 m1與m2不相等,由于Hash的單向性,對方也無法知道自己的信息,從而在完成比較的同時沒有泄露更多的信息。
第三種雙方知道信息想知道是否只是相差很少幾個比特,可以利用門電路的安全協(xié)同計算進行比較。如果Alice擁有信息m1,Bob擁有信息 m2,Alice和 Bob利用門電路的安全協(xié)同計算H(m1-m2)的值。雙方將只有幾個比特位為非0的Hash值列表后和H(m1-m2)的值進行比較,就可以知道雙方信息是否相差幾個比特甚至是那幾個比特,但是如果H(m1-m2)的值不在預先計算的表中,雙方也無法知道對方的信息,從而保護了信息的隱私。
由于安全協(xié)同計算的特點,協(xié)議執(zhí)行后可以很好的保護信息比對參與方的隱私,隨著社會的發(fā)展,信息比對的形式和要求越來越新,比如信息比對中需要知道兩個信息相似程度時的隱私保護、網(wǎng)上信息比對對參與方的主動參與程度等等都是未來值得進一步研究的方向。
[1]W.Diffle and M.Hellman.New Directions in Cryptograghy[J],.IEEE Trans Inform Theory,1976.
[2]Yao A C,Protocols for Secure Computations[C],In Proceedings of 23th Annual IEEE Symposium on Foundations of Computer Science,1982.
[3]M.O.Radin.How to Exchange Secrets by Oblivious Transfer[R].Tech Memo TR-81Aiken Computation Laboratory,