王小麗,李曉宇
(鄭州大學(xué) 信息工程學(xué)院,鄭州 450000)
隨著網(wǎng)絡(luò)的迅速發(fā)展,電子拍賣作為電子商務(wù)中重要的部分之一,給我們的生活帶來了極大的便利.但同時(shí)其安全性問題也日益突顯出來,安全的電子拍賣協(xié)議設(shè)計(jì)成為了近年來的研究熱點(diǎn)之一.目前比較成熟的密碼技術(shù)能夠通過加密信息的方式隱藏網(wǎng)絡(luò)通信中信息的內(nèi)容,可以較好地保證網(wǎng)絡(luò)中傳輸信息內(nèi)容的安全性,卻不能隱藏有關(guān)通信中發(fā)送者或接收者的身份信息和位置信息.為了實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)節(jié)點(diǎn)或用戶身份的保護(hù),研究網(wǎng)絡(luò)通信中的匿名通信技術(shù)以及其在大規(guī)模網(wǎng)絡(luò)中的實(shí)現(xiàn)、性能表現(xiàn)等越來越重要.
匿名通信[1]研究的不是如何保護(hù)數(shù)據(jù)的內(nèi)容,而是如何隱藏通信實(shí)體的身份信息,使攻擊者無法通過竊聽和流量分析獲取用戶的真實(shí)身份,或者對(duì)用戶通信進(jìn)行跟蹤.文獻(xiàn)[2]提出Mix匿名通信技術(shù),基本思想是采用基于固定轉(zhuǎn)發(fā)策略和隨機(jī)成員選擇策略建立通信重路由路徑,使竊聽者無法確定輸入消息和輸出消息的對(duì)應(yīng)關(guān)系,從而無法跟蹤某條消息的傳輸路徑.文獻(xiàn)[3]提出了一種移動(dòng)P2P結(jié)構(gòu)下用戶分布感知方案,用戶在鄰域內(nèi)共享鄰域加權(quán)密度參數(shù),獲取鄰域用戶實(shí)時(shí)分布信息,根據(jù)用戶分布特征為用戶推薦隱私參數(shù)及候選用戶查找半徑,幫助用戶快速形成匿名區(qū).文獻(xiàn)[4]提出一種差分?jǐn)_動(dòng)的均衡增量近鄰查詢位置隱私保護(hù)方法.它通過向用戶的真實(shí)位置添加可控的拉普拉斯噪聲,生成干擾位置,并將其作為錨點(diǎn)發(fā)送給位置服務(wù)商從而保證用戶的隱私性.
在改進(jìn)各種拍賣方案的隱私性和安全性方面,很多學(xué)者都已經(jīng)做出了顯著的成績(jī).比如文獻(xiàn)[5]利用基于身份的群簽名方案和可驗(yàn)證的秘密共享協(xié)議,提出了一種密封式電子拍賣方案來實(shí)現(xiàn)投標(biāo)者的匿名性,但計(jì)算量大、效率低.文獻(xiàn)[6]提出僅利用Hash函數(shù)來實(shí)現(xiàn)密封式拍賣,技術(shù)簡(jiǎn)單且效率高,但要引入可信賴的第三方.文獻(xiàn)[7]提出基于Shamir秘密共享方案的多方安全計(jì)算協(xié)議,但通信量大.
本文將匿名通信模型應(yīng)用到電子拍賣過程中,提出了一種基于匿名通信的匿名電子拍賣協(xié)議.該協(xié)議中,每一個(gè)用戶使用的終端均加入網(wǎng)絡(luò)作為一個(gè)節(jié)點(diǎn).在整個(gè)采用的通信過程中,AES+RSA的混合加密技術(shù)和隨機(jī)選擇節(jié)點(diǎn)轉(zhuǎn)發(fā)消息策略來實(shí)現(xiàn)匿名通信,其路由路徑長(zhǎng)度是不確定的,可以有效防止追蹤攻擊和流量分析.并且該協(xié)議中的所有節(jié)點(diǎn)都是對(duì)等的且整個(gè)路由路徑中不依靠某些特殊的節(jié)點(diǎn),實(shí)現(xiàn)了網(wǎng)絡(luò)流量的負(fù)載均衡并大大提高了網(wǎng)絡(luò)的健壯性.此外,本文協(xié)議采用密封式拍賣形式,拍賣效率高且不易形成拍賣合謀.在計(jì)算標(biāo)價(jià)時(shí),采用冒泡排序算法[8],實(shí)現(xiàn)簡(jiǎn)單且穩(wěn)定性高.
本文的組織結(jié)構(gòu)如下:第2節(jié)介紹本文協(xié)議中所用到的相關(guān)技術(shù).第3節(jié)詳細(xì)介紹基于匿名通信的匿名電子拍賣協(xié)議.第4節(jié)分析本文所提出的協(xié)議.第5節(jié)介紹實(shí)驗(yàn).最后是總結(jié)本文工作并提出展望.
在公開密鑰系統(tǒng)中,安全性高且密鑰管理非常方便.在對(duì)稱密鑰系統(tǒng)中,加密解密速度較快,但它的密鑰管理非常復(fù)雜,系統(tǒng)的安全性較低.混合加密技術(shù)就是將二者結(jié)合起來,用對(duì)稱密鑰系統(tǒng)加密解密明文消息,用公開密鑰系統(tǒng)加密解密所用到的對(duì)稱密鑰.這種方式可以發(fā)揮各自的長(zhǎng)處,進(jìn)行優(yōu)勢(shì)互補(bǔ).所以,混合加密技術(shù)在研究信息安全方面應(yīng)用十分廣泛.
電子拍賣[10]主要有英式拍賣、密封式拍賣和Vikrey拍賣等拍賣形式.英式拍賣是電子拍賣中應(yīng)用最普遍的一種形式,競(jìng)拍用戶遵循由低到高的次序逐次應(yīng)價(jià)競(jìng)爭(zhēng),當(dāng)?shù)竭_(dá)拍賣截止時(shí)間時(shí),物品將賣給出價(jià)最高者.英式拍賣可以盡可能的使商品以真實(shí)的最高價(jià)出售,但其時(shí)間和通信代價(jià)高.密封式拍賣是競(jìng)拍用戶在競(jìng)拍開始后將標(biāo)書用密封的形式進(jìn)行投標(biāo),在賣家宣布投標(biāo)結(jié)束后打開標(biāo)書,由出價(jià)最高者成交.在電子拍賣中,一般采用密封式拍賣,其優(yōu)點(diǎn)是拍賣效率高.Vikrey拍賣也叫密封式二價(jià)拍賣,也是一種密封投標(biāo)方式,不同之處在于最高出價(jià)者是以第二最高出價(jià)者所出價(jià)格買走拍賣品.這種拍賣形式支持最優(yōu)分配,但容易形成拍賣合謀.
本文提出的匿名電子拍賣協(xié)議的核心思想是在整個(gè)拍賣過程中采用匿名通信模型進(jìn)行通信.匿名通信模型采用AES算法與RSA算法相結(jié)合的方式對(duì)競(jìng)標(biāo)信息混合加密,在傳送過程中以一定的概率隨機(jī)選擇若干中轉(zhuǎn)節(jié)點(diǎn)來轉(zhuǎn)發(fā)消息,從而實(shí)現(xiàn)對(duì)競(jìng)標(biāo)者的競(jìng)標(biāo)信息和位置信息的保護(hù).同時(shí),該協(xié)議采用密封式拍賣形式,由出價(jià)最高者成交商品.在開標(biāo)過程中,檢測(cè)出投了最高價(jià)的多個(gè)競(jìng)標(biāo)者再進(jìn)行一輪拍賣,而其他競(jìng)標(biāo)者不需要再進(jìn)行投標(biāo).
所有的節(jié)點(diǎn)(包含服務(wù)器)都是公開密鑰系統(tǒng)的成員,每一個(gè)競(jìng)標(biāo)者所在的節(jié)點(diǎn)均分配一對(duì)公鑰PKi和私鑰SKi,為拍賣服務(wù)器分配一對(duì)公鑰PKs和私鑰SKs.簡(jiǎn)易的匿名通信模型如圖1所示.
圖1 匿名通信模型Fig.1 Anonymous communication model
路由表是每一個(gè)節(jié)點(diǎn)建立的記錄自己轉(zhuǎn)發(fā)的所有消息的表,每一項(xiàng)包含〈序列號(hào),消息來自的節(jié)點(diǎn)(即上一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn))IP地址〉.本文匿名通信模型中節(jié)點(diǎn)的簡(jiǎn)單路由表結(jié)構(gòu)如表1所示.
表1 路由表結(jié)構(gòu)Table 1 RoutingTable structure
在發(fā)送節(jié)點(diǎn)發(fā)送消息給服務(wù)器時(shí),采用隨機(jī)選擇節(jié)點(diǎn)轉(zhuǎn)發(fā)消息策略和嵌套加密機(jī)制.
Step1.發(fā)送節(jié)點(diǎn)t0首先用對(duì)稱密鑰K0加密競(jìng)標(biāo)消息得到密文,用服務(wù)器的公鑰PKs加密對(duì)稱密鑰K0,將它們與序列號(hào)組合在一起形成報(bào)文.然后發(fā)送節(jié)點(diǎn)隨機(jī)選擇不同于服務(wù)器和發(fā)送節(jié)點(diǎn)的中轉(zhuǎn)節(jié)點(diǎn)t1.發(fā)送節(jié)點(diǎn)用第二個(gè)對(duì)稱密鑰K1加密報(bào)文,用中轉(zhuǎn)節(jié)點(diǎn)t1的公鑰PK1加密K1,并組合在一起得到請(qǐng)求消息.最后發(fā)送節(jié)點(diǎn)t0將請(qǐng)求消息發(fā)送給中轉(zhuǎn)節(jié)點(diǎn)t1.
Step2.中轉(zhuǎn)節(jié)點(diǎn)t1收到請(qǐng)求消息后,用t1的私鑰SK1解密得到發(fā)送節(jié)點(diǎn)的對(duì)稱密鑰K1,用K1解密得到報(bào)文.中轉(zhuǎn)節(jié)點(diǎn)t1將序列號(hào)和發(fā)送節(jié)點(diǎn)的IP地址存入路由表中,并更新路由表.中轉(zhuǎn)節(jié)點(diǎn)t1以概率Pf將消息發(fā)送給不同于t0和t1的中轉(zhuǎn)節(jié)點(diǎn)t2,或者以概率1-Pf將消息發(fā)送給服務(wù)器.若是發(fā)送給中轉(zhuǎn)節(jié)點(diǎn)t2,則執(zhí)行Step 3;否則,執(zhí)行Step 4.
Step3.若是選擇發(fā)送給中轉(zhuǎn)節(jié)點(diǎn)t2,中轉(zhuǎn)節(jié)點(diǎn)t1用對(duì)稱密鑰K2加密報(bào)文,用中轉(zhuǎn)節(jié)點(diǎn)t2的公鑰PK2加密K2,并組合在一起得到請(qǐng)求信息.中轉(zhuǎn)節(jié)點(diǎn)t1將消息發(fā)送給中轉(zhuǎn)節(jié)點(diǎn)t2.中轉(zhuǎn)節(jié)點(diǎn)t2收到請(qǐng)求消息后,重復(fù)中轉(zhuǎn)節(jié)點(diǎn)t1的工作.以此類推,直到某一個(gè)中轉(zhuǎn)節(jié)點(diǎn)tn決定將請(qǐng)求消息發(fā)送給服務(wù)器.然后執(zhí)行Step 4.
Step4.若是選擇發(fā)送給服務(wù)器,中轉(zhuǎn)節(jié)點(diǎn)tn用對(duì)稱密鑰Ks加密報(bào)文,用服務(wù)器的公鑰PKs加密Ks,并組合在一起得到請(qǐng)求消息.中轉(zhuǎn)節(jié)點(diǎn)tn將請(qǐng)求消息發(fā)送給服務(wù)器.服務(wù)器收到請(qǐng)求消息后,用自己的私鑰SKs解密得到對(duì)稱密鑰Ks,用Ks解密得到報(bào)文.再繼續(xù)用自己的私鑰SKs解密得到對(duì)稱密鑰K0,用K0解密密文得到競(jìng)標(biāo)消息.最后服務(wù)器將序列號(hào)和中轉(zhuǎn)節(jié)點(diǎn)tn的IP地址存入路由表中,并更新路由表.
在服務(wù)器發(fā)送回復(fù)消息給發(fā)送節(jié)點(diǎn)時(shí),返回時(shí)根據(jù)路由表的記錄按原路徑返回,但加密方式中少了一層內(nèi)部加密.
Step1.服務(wù)器用已得到的對(duì)稱密鑰K0將確認(rèn)消息加密得到密文,然后將序列號(hào)和密文組合在一起形成報(bào)文.服務(wù)器根據(jù)自己路由表中的序列號(hào)和對(duì)應(yīng)的IP地址,確定應(yīng)返回給中轉(zhuǎn)節(jié)點(diǎn)tn.服務(wù)器用對(duì)稱密鑰Ks加密報(bào)文,用中轉(zhuǎn)節(jié)點(diǎn)tn的公鑰PKn加密Kn,并組合在一起得到回復(fù)消息.然后服務(wù)器將回復(fù)消息發(fā)送給中轉(zhuǎn)節(jié)點(diǎn)tn并在路由表中刪除該項(xiàng)路由信息.
Step2.中轉(zhuǎn)節(jié)點(diǎn)tn收到回復(fù)消息后,用自己的私鑰SKn解密得到對(duì)稱密鑰Ks,用解密得到的Ks解密得到報(bào)文.中轉(zhuǎn)節(jié)點(diǎn)tn根據(jù)自己路由表中的序列號(hào)和對(duì)應(yīng)的IP地址,確定應(yīng)返回給中轉(zhuǎn)節(jié)點(diǎn)tn-1.中轉(zhuǎn)節(jié)點(diǎn)tn用對(duì)稱密鑰Kn加密報(bào)文,用中轉(zhuǎn)節(jié)點(diǎn)tn-1的公鑰PKn-1加密Kn,并組合在一起得到回復(fù)消息.然后中轉(zhuǎn)節(jié)點(diǎn)tn將消息發(fā)送給中轉(zhuǎn)節(jié)點(diǎn)tn-1并在路由表中刪除該項(xiàng)路由信息.
Step3.中轉(zhuǎn)節(jié)點(diǎn)tn-1收到回復(fù)消息后,重復(fù)中轉(zhuǎn)節(jié)點(diǎn)tn的工作.以此類推,直到發(fā)送節(jié)點(diǎn)t0收到消息.
Step4.發(fā)送節(jié)點(diǎn)t0收到回復(fù)消息后,用自己的私鑰SK0解密得到對(duì)稱密鑰K1,用解密得到的K1解密得到報(bào)文.再用對(duì)稱密鑰K0解密密文得到服務(wù)器發(fā)送的確認(rèn)消息.
到此為止,完成了一次匿名通信發(fā)送消息和回復(fù)消息的全過程.在整個(gè)的路由過程中,隨機(jī)的選擇將數(shù)據(jù)轉(zhuǎn)發(fā)給下一個(gè)中轉(zhuǎn)節(jié)點(diǎn)或是服務(wù)器,每個(gè)中轉(zhuǎn)節(jié)點(diǎn)(包括服務(wù)器)都只知道自己上一跳的地址,卻不知發(fā)送節(jié)點(diǎn)的位置信息.
表2是對(duì)本文協(xié)議中所用到的符號(hào)給出定義.
表2 相關(guān)符號(hào)定義Table 2 Definition of correlation symbols
為了實(shí)現(xiàn)拍賣過程中競(jìng)標(biāo)者位置信息和競(jìng)標(biāo)信息的保密性以及拍賣系統(tǒng)的穩(wěn)定性,本文在采用密封式拍賣方式的基礎(chǔ)上,使用匿名通信模型進(jìn)行信息的發(fā)送和回復(fù)以及利用冒泡排序算法進(jìn)行標(biāo)價(jià)的計(jì)算.
Step1.系統(tǒng)準(zhǔn)備
每一個(gè)競(jìng)標(biāo)者使用的終端均加入網(wǎng)絡(luò)作為一個(gè)節(jié)點(diǎn),所有的節(jié)點(diǎn)和拍賣服務(wù)器都加入RSA公開密鑰系統(tǒng).競(jìng)拍者處在某個(gè)節(jié)點(diǎn)上,就使用該節(jié)點(diǎn)的公鑰-私鑰對(duì).所有參加拍賣的節(jié)點(diǎn)都有一個(gè)拍賣ID號(hào),但是這個(gè)ID號(hào)與節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系是不公開的,僅競(jìng)標(biāo)者自己知道.服務(wù)器和任何的節(jié)點(diǎn)都不能依據(jù)ID號(hào)獲得一個(gè)用戶的身份信息和位置信息.拍賣服務(wù)器的身份是公開的,它提供一個(gè)公告板,上面標(biāo)明拍賣品信息、拍賣規(guī)則、拍賣底價(jià)、拍賣截止期限、保證金金額和拍賣服務(wù)器的賬戶等相關(guān)的拍賣消息.所有節(jié)點(diǎn)均可以訪問公告板.
Step2.投標(biāo)過程
為了實(shí)現(xiàn)拍賣的公平性,本文采用的是密封式電子拍賣.每一件物品拍賣時(shí),所有參加拍賣的競(jìng)標(biāo)者都采用匿名通信模型與拍賣服務(wù)器通信.競(jìng)標(biāo)者獲取一個(gè)拍賣ID號(hào),競(jìng)標(biāo)出價(jià)為Bidid.在拍賣截止時(shí)間前,競(jìng)拍者通過匿名通信模型將競(jìng)拍信息二元組AInfo=(ID,Bidid)發(fā)送給拍賣服務(wù)器.
為了防止中標(biāo)者反悔,每一個(gè)競(jìng)標(biāo)者在發(fā)送競(jìng)標(biāo)信息時(shí),直接將保證金匯到指定賬戶,并在匯款備注上填寫序列號(hào).拍賣服務(wù)器在拍賣截止期限之前,檢查收到的所有競(jìng)標(biāo)者的競(jìng)標(biāo)信息及匯款情況.只有已收到保證金的競(jìng)標(biāo)者才予以考慮,沒有繳納保證金的競(jìng)標(biāo)者將直接取消資格并且在公開競(jìng)標(biāo)信息時(shí)予以公布.
算法1.發(fā)送標(biāo)書過程算法
1. RSA公開密鑰系統(tǒng)為每一個(gè)競(jìng)標(biāo)者所在的節(jié)點(diǎn)均分配一對(duì)公鑰PKi和私鑰SKi,為拍賣服務(wù)器分配一對(duì)公鑰PKs和私鑰SKs;
2. AES算法為競(jìng)標(biāo)節(jié)點(diǎn)bidder生成兩個(gè)對(duì)稱密鑰K0和K1;
3. bidder生成競(jìng)標(biāo)信息AInfo=(ID,Bidid);
4. bidder將保證金匯入指定賬戶,并在匯款備注上填寫序列號(hào)Seq;
5. Data= (Seq,E(K0,AInfo),E(PKs,K0));
6. bidder隨機(jī)選取一個(gè)節(jié)點(diǎn),記為中轉(zhuǎn)節(jié)點(diǎn)t1;
7. bidder獲取t1公鑰PK1;
8. ARS1=(E(K1,Data),E(PK1,K1));
9. t1收到bidder發(fā)送的消息ARS1;
10. K1=D(SK1,E(PK1,K1));
11. Data=D(K1,E(K1,Data));
12. t1在路由表中記錄
13. FOR i=1 TO i=n
14. IF(Math.random() < Pf)
15. ti選擇發(fā)送給中轉(zhuǎn)節(jié)點(diǎn)ti+1;
16. ti獲取ti+1公鑰PKi+1,并選取一對(duì)稱密鑰Ki+1;
17. ARS(i+1)=(E(Ki+1,Data),E(PKi+1,Ki+1));
18. ti+1收到ti發(fā)送的消息ARS(i+1);
19. Ki+1=D(SKi+1,E(PKi+1,Ki+1));
20. Data=D(Ki+1,E(K1,Data));
21. ti+1在路由表中記錄
22. ELSE
23. 路徑上最后一個(gè)中轉(zhuǎn)節(jié)點(diǎn)tn選擇發(fā)送給服務(wù)器server;
24. tn獲取server公鑰PKs,并選取一對(duì)稱密鑰Ks;
25. ARSs=(E(Ks,Data),E(PKs,Ks));
26. server收到tn發(fā)送的消息ARSs;
27. Ks=D(SKs,E(PKs,Ks));
28. Data = D(Ks,E(Ks,Data));
29. K0= D(SKs,E(PKs,K0));
30. AInfo =D(K0,E(K0,AInfo));
31. server在路由表中記錄
32. BREAK;
33. END IF
34. END FOR
35. 在拍賣截止期限前,server檢查匯款備注上Seq和對(duì)消息解密得到的Seq;
36. IF(兩者Seq相同)
37. 記錄解密得到的AInfo并執(zhí)行算法2;
38. ELSE
39. 取消該ID所對(duì)應(yīng)的競(jìng)標(biāo)者的競(jìng)標(biāo)資格并予以公布;
40. END IF
Step3.開標(biāo)過程
當(dāng)所有的競(jìng)標(biāo)者都完成競(jìng)標(biāo)過程后,拍賣服務(wù)器在規(guī)定的拍賣截止期限檢查收到的所有競(jìng)標(biāo)者的競(jìng)拍信息,并利用冒泡排序算法計(jì)算出出價(jià)最高者.然后在公告板上公布中標(biāo)者的ID號(hào)和出價(jià)以及其他競(jìng)標(biāo)者的ID號(hào)和出價(jià).中標(biāo)者在支付截止期限之前將錢(成交價(jià)減去保證金)匯入拍賣服務(wù)器賬號(hào),一旦逾期未收到錢,本次拍賣作廢,保證金沒收.未中標(biāo)者的保證金通過銀行原路退回.
若存在多個(gè)競(jìng)標(biāo)者在拍賣中同時(shí)投了最高價(jià),服務(wù)器將檢測(cè)出是哪些競(jìng)標(biāo)者同時(shí)投了最高價(jià).同時(shí)每輪拍賣中只有投了最高價(jià)的競(jìng)標(biāo)者再進(jìn)行新一輪拍賣,而其他競(jìng)標(biāo)者不需要再進(jìn)行投標(biāo).這種情況下,新一輪中的拍賣底價(jià)將變?yōu)樯弦惠営?jì)算得到的最高價(jià).依次類推,直到選出唯一的最高價(jià).
算法2.開標(biāo)過程算法
1. server CHECK AInfo=(ID,Bidid);
2. array={Bidid}//冒泡排序從小到大
3. len=array.length();
4. FOR p=0 TO p=len-1
5. FOR q=0 TO q=len-1-p
6. IF(array[q] > array[q+1])
7. SWAP(array[q],array[q+1]);
8. END IF
9. END FOR
10. END FOR
11. RETURN array[length-1];//最高價(jià)Bid
12. CHECK 最高價(jià)Bid對(duì)應(yīng)的ID;
13. WHILE(ID有多個(gè))
14. RETURN 最高價(jià)Bid對(duì)應(yīng)的ID集合T;
15. 拍賣底價(jià)←當(dāng)前最高價(jià);
16. T執(zhí)行算法1,算法2;
17. IF(ID有1個(gè))
18. RETURN 最高價(jià)Bid以及對(duì)應(yīng)的ID;
19. BREAK;
20. END IF
21. END WHILE
22. server公布中標(biāo)者的ID和Bid;
23. IF(支付截止期限之前中標(biāo)者將錢匯入賬戶)
24. 執(zhí)行算法3;
25. ELSE
26. 本次拍賣作廢,沒收中標(biāo)者保證金;
27. END IF
28. server將未中標(biāo)者的保證金退回;
Step4.支付和驗(yàn)證
在支付截止期限之前,中標(biāo)者(假設(shè)中標(biāo)者為Alice)直接與銀行聯(lián)系將錢匯入拍賣服務(wù)器賬戶,并在轉(zhuǎn)賬單的備注上填寫自己的ID號(hào)和序列號(hào).拍賣服務(wù)器收到轉(zhuǎn)賬后,核對(duì)ID號(hào)和序列號(hào)從而確定該筆匯款來自哪個(gè)節(jié)點(diǎn).若確認(rèn)匯款來自中標(biāo)者,拍賣服務(wù)器回復(fù)確認(rèn)消息CInfo給中標(biāo)節(jié)點(diǎn)表示確認(rèn)已收到匯款.最后,拍賣服務(wù)器在公告板上公布已收到中標(biāo)者的匯款和拍賣成交信息并宣布拍賣結(jié)束.
算法3.支付和驗(yàn)證過程算法
1. 在支付截止期限之前,中標(biāo)者Alice直接與銀行聯(lián)系將錢匯入拍賣服務(wù)器賬戶;
2. Alice在轉(zhuǎn)賬單上備注自己的ID號(hào)和Seq;
3. 服務(wù)器server收到轉(zhuǎn)賬后,核對(duì)ID號(hào)和Seq;
4. server若確認(rèn)匯款來自中標(biāo)者,生成確認(rèn)消息CInfo;
5. server通過中標(biāo)者發(fā)送標(biāo)書過程算法找到已得到的對(duì)稱密鑰K0與Ks;
6. Data1 = (Seq,E(K0,CInfo));
7. server根據(jù)路由表中記錄
8. server獲取tn的公鑰PKn;
9. ARRn=(E(Ks,Data1),E(PKn,Ks));
10. server刪除路由表中記錄
11. tn收到server發(fā)送的回復(fù)消息ARRn;
12. Ks=D(SKn,E(PKn,Ks));
13. Data1=D(Ks,E(Ks,Data1));
14. FOR i=n TO i=2
15. ti根據(jù)路由表中記錄
16. ti獲取ti-1的公鑰PKi-1;
17. ARR(i-1)=(E(Ki,Data1),E(PKi-1,Ki));
18. ti刪除路由表中記錄
19. ti-1收到ti發(fā)送的回復(fù)消息ARR(i-1);
20. Ki=D(SKi-1,E(PKi-1,Ki));
21. Data1=D(Ki,E(Ki,Data1));
22. END FOR
23. t1根據(jù)路由表中記錄
24. t1獲取Alice的公鑰PKa;
25. ARRb=(E(K1,Data1),E(PKa,K1));
26. t1刪除路由表中記錄
27. Alice收到t1發(fā)送的回復(fù)消息ARRa;
28. K1=D(SKa,E(PKa,K1));
29. Data1=D(K1,E(K1,Data1));
30. Alice獲取與server之間的對(duì)稱密鑰K0;
31. CInfo=D(K0,(K0,CInfo));
32. server公布拍賣完成消息;
定理1.路由匿名:任意節(jié)點(diǎn)都難以推斷出通信的整個(gè)路由信息.
證明:競(jìng)標(biāo)者所在的節(jié)點(diǎn)發(fā)送信息時(shí),隨機(jī)選取網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā),然后該中轉(zhuǎn)節(jié)點(diǎn)根據(jù)轉(zhuǎn)發(fā)概率確定是否延長(zhǎng)路徑來相應(yīng)的選定下一跳中轉(zhuǎn)節(jié)點(diǎn).競(jìng)標(biāo)者只知道自己的后繼節(jié)點(diǎn)(即第一個(gè)中轉(zhuǎn)節(jié)點(diǎn)),拍賣服務(wù)器只知道自己的前驅(qū)節(jié)點(diǎn),任意的中轉(zhuǎn)節(jié)點(diǎn)都只知道自己的前驅(qū)節(jié)點(diǎn)和后繼結(jié)點(diǎn),它們都不可能獲得整個(gè)路由信息.
定理2.競(jìng)標(biāo)者匿名:任意中轉(zhuǎn)節(jié)點(diǎn)和服務(wù)器都難以推斷出競(jìng)標(biāo)者的位置信息.
證明:競(jìng)標(biāo)者發(fā)給中轉(zhuǎn)節(jié)點(diǎn)的消息中,加密的信息中沒有與競(jìng)標(biāo)者身份信息和位置信息相關(guān)的內(nèi)容,并且中轉(zhuǎn)節(jié)點(diǎn)只對(duì)收到的消息進(jìn)行最外層的加密和解密處理.而且轉(zhuǎn)發(fā)路徑是隨機(jī)選取的,中轉(zhuǎn)節(jié)點(diǎn)是無法推斷上一跳節(jié)點(diǎn)是否是競(jìng)標(biāo)者.因此中轉(zhuǎn)節(jié)點(diǎn)不能推斷出競(jìng)標(biāo)者的位置信息.由于匿名通信模型,競(jìng)標(biāo)者和拍賣服務(wù)器之間一定存在至少一個(gè)中轉(zhuǎn)節(jié)點(diǎn),因此服務(wù)器是無法推斷哪一個(gè)節(jié)點(diǎn)是競(jìng)標(biāo)者,也就無法推斷競(jìng)標(biāo)者的位置信息.
中轉(zhuǎn)節(jié)點(diǎn)和拍賣服務(wù)器轉(zhuǎn)發(fā)回復(fù)消息時(shí),只是將回復(fù)消息返回給轉(zhuǎn)發(fā)初始消息給它的上一個(gè)節(jié)點(diǎn),而對(duì)于回復(fù)消息將會(huì)被再一次轉(zhuǎn)送給誰一無所知,所以不可能知道誰是源節(jié)點(diǎn),也就無法根據(jù)回復(fù)消息推斷競(jìng)標(biāo)者的位置信息.
定理3.內(nèi)容隱私:任意中轉(zhuǎn)節(jié)點(diǎn)和攻擊者都無法獲取競(jìng)標(biāo)者發(fā)送的消息內(nèi)容.
證明:競(jìng)標(biāo)者所在節(jié)點(diǎn)用對(duì)稱密鑰K0加密明文消息形成密文,再用拍賣服務(wù)器的公鑰PKs加密對(duì)稱密鑰K0.中轉(zhuǎn)節(jié)點(diǎn)收到消息后,只對(duì)最外層進(jìn)行解密,解密得到的是已加密的密文.所以只能由拍賣服務(wù)器的私鑰SKs才能解密得到對(duì)稱密鑰K0,然后用K0解密得到明文消息.中轉(zhuǎn)節(jié)點(diǎn)以及攻擊者是無法獲取對(duì)稱密鑰K0的,所以中轉(zhuǎn)節(jié)點(diǎn)或竊聽者不能推斷出通信的明文消息.
在下一跳路由方式的匿名通信系統(tǒng)中,控制好路由路徑長(zhǎng)度是重要的.本文匿名通信模型中,競(jìng)標(biāo)者所在的節(jié)點(diǎn)首先在網(wǎng)絡(luò)中隨機(jī)選擇第一跳節(jié)點(diǎn),其后的節(jié)點(diǎn)按一定的轉(zhuǎn)發(fā)概率建立重路由路徑.將路徑長(zhǎng)度L定義為網(wǎng)絡(luò)中一條路由路徑上兩兩相鄰節(jié)點(diǎn)對(duì)之間的段數(shù)總和.例如:發(fā)送節(jié)點(diǎn)→中轉(zhuǎn)節(jié)點(diǎn)1→中轉(zhuǎn)節(jié)點(diǎn)2→服務(wù)器,其路徑長(zhǎng)度為3.假設(shè)轉(zhuǎn)發(fā)概率為Pf,其路徑長(zhǎng)度分布為:
其中1≤m<∞.
由此可以得出其轉(zhuǎn)發(fā)路徑長(zhǎng)度的期望函數(shù)為:
匿名度可以用來衡量系統(tǒng)的匿名性.本文基于文獻(xiàn)[11]進(jìn)行改進(jìn),提出一種從攻擊者攻擊系統(tǒng)的角度采用概率論的方法,建立基于概率論的發(fā)送者匿名性度量的模型,得到發(fā)送者匿名度函數(shù).攻擊者在網(wǎng)絡(luò)中隨機(jī)選擇待觀測(cè)的節(jié)點(diǎn)進(jìn)行一段時(shí)間內(nèi)的觀察.若在k次觀測(cè)中該節(jié)點(diǎn)都處于非通信狀態(tài),則說明該節(jié)點(diǎn)不是網(wǎng)絡(luò)路徑上的節(jié)點(diǎn),繼續(xù)觀測(cè)下一節(jié)點(diǎn).否則,觀察i次(1≤i≤k)并統(tǒng)計(jì)該節(jié)點(diǎn)在這段時(shí)間內(nèi)收到的消息個(gè)數(shù)n,推斷出發(fā)消息給該節(jié)點(diǎn)的節(jié)點(diǎn)是誰,從而確定上一個(gè)節(jié)點(diǎn).由于本文方案中每次重路由路徑不同,一個(gè)節(jié)點(diǎn)在一段時(shí)間內(nèi)可能收到來自n個(gè)不同的上一個(gè)節(jié)點(diǎn)發(fā)送過來的n個(gè)消息,那么攻擊者就只有n分之一的概率找到正確的上一個(gè)節(jié)點(diǎn).
已知匿名系統(tǒng)中節(jié)點(diǎn)(不包含服務(wù)器)的總個(gè)數(shù)為N,路由路徑長(zhǎng)度為L(zhǎng),收到的消息個(gè)數(shù)為n.在攻擊系統(tǒng)時(shí),攻擊者隨機(jī)地進(jìn)行k次觀察,則攻擊者第1次找到路由路徑中某個(gè)節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的概率為:
攻擊者在第i次找到路由路徑中某個(gè)節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的概率為:
攻擊者在k次觀察中找到路由路徑中某個(gè)節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的概率為:
將發(fā)送者的匿名度d定義為攻擊者在k次觀察中不能找到路由路徑中某個(gè)節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的概率,從而不能推斷出發(fā)送者.則發(fā)送者的匿名度:
其中d∈[0,1].
圖2 節(jié)點(diǎn)數(shù)目與匿名度的函數(shù)關(guān)系圖Fig.2 Functional relationship between number of nodes and anonymity degree
圖3 k值與匿名度的函數(shù)關(guān)系圖
圖4 平均響應(yīng)時(shí)間
本文中當(dāng)選取轉(zhuǎn)發(fā)概率Pf=0.5時(shí),則轉(zhuǎn)發(fā)路徑長(zhǎng)度的期望值為:
圖2和圖3在計(jì)算匿名度時(shí)選取的路徑長(zhǎng)度L={2,3,4,5}.系統(tǒng)中節(jié)點(diǎn)(不包含服務(wù)器)的總個(gè)數(shù)為N,轉(zhuǎn)發(fā)路徑長(zhǎng)度的期望值為3,則每個(gè)節(jié)點(diǎn)的平均轉(zhuǎn)發(fā)的消息個(gè)數(shù)為(N*3)/N=3,所以在計(jì)算匿名度時(shí)假設(shè)一個(gè)節(jié)點(diǎn)一段時(shí)間內(nèi)收到的消息個(gè)數(shù)n=3.
圖2是k值為5時(shí),對(duì)比不同路徑長(zhǎng)度下的節(jié)點(diǎn)個(gè)數(shù)與匿名度的關(guān)系.從圖2可以看出在路徑長(zhǎng)度一定時(shí),當(dāng)節(jié)點(diǎn)增多時(shí),攻擊者在5次觀察中不能找到路由路徑中某個(gè)節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的概率升高,則匿名度上升.在節(jié)點(diǎn)個(gè)數(shù)一定時(shí),當(dāng)路徑長(zhǎng)度增加時(shí),活動(dòng)節(jié)點(diǎn)數(shù)增加,攻擊者在5次觀察中不能找到路由路徑中某個(gè)節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的概率降低,則匿名度降低.
圖3是N為50,n為3時(shí),對(duì)比不同路徑長(zhǎng)度下的k值與匿名度的關(guān)系.從圖3可以看出在路徑長(zhǎng)度一定時(shí),當(dāng)k值增加,說明攻擊者觀察的節(jié)點(diǎn)數(shù)增多,標(biāo)記的活動(dòng)節(jié)點(diǎn)數(shù)也增加,更容易推斷出誰是真正的發(fā)送節(jié)點(diǎn),則匿名度降低.在k值一定時(shí),當(dāng)路徑長(zhǎng)度增加時(shí),說明觀察到的活動(dòng)節(jié)點(diǎn)個(gè)數(shù)增加,更容易推斷出誰是真正的發(fā)送節(jié)點(diǎn),則匿名度降低.
通過上述分析,本文提出的基于匿名通信的匿名電子拍賣協(xié)議可以實(shí)現(xiàn)很好的匿名效果.整個(gè)通信系統(tǒng)的匿名度,也就是攻擊者對(duì)節(jié)點(diǎn)進(jìn)行多次觀測(cè)時(shí)仍不能推斷出上一個(gè)節(jié)點(diǎn)的可能性達(dá)到0.8364以上.該結(jié)果已經(jīng)足夠好地保障了發(fā)送者的匿名性.
4.3.1 安全性
安全性分析主要分析的是標(biāo)價(jià)的安全性.根據(jù)定理3,競(jìng)標(biāo)者發(fā)送給拍賣服務(wù)器的競(jìng)標(biāo)信息是保密的,除了發(fā)送者和接收者之外,任意的中轉(zhuǎn)節(jié)點(diǎn)和竊聽者都不能獲取競(jìng)標(biāo)信息.該協(xié)議采用密封式拍賣形式,不容易形成拍賣合謀.
同時(shí)采用了隨機(jī)選擇節(jié)點(diǎn)轉(zhuǎn)發(fā)消息策略來決定路由路徑中的下一跳節(jié)點(diǎn),使得每一次通信過程中所建立的路由路徑長(zhǎng)度均不固定,因此可以有效防止跟蹤攻擊.在一次通信完成后,刪除此次通信過程中所用到的路由節(jié)點(diǎn)的路由表的表項(xiàng)信息,可以有效防止攻擊者利用被入侵的路由器進(jìn)行流量重定向從而推斷出競(jìng)標(biāo)者的位置信息.
4.3.2 健壯性
相比較Crowds匿名通信模型[12]中要求網(wǎng)絡(luò)節(jié)點(diǎn)是封閉的靜態(tài)集合,洋蔥路由模型[13]中要求通信過程中預(yù)先建立虛電路而導(dǎo)致系統(tǒng)時(shí)延和計(jì)算復(fù)雜度的增加,無法適應(yīng)拓?fù)浣Y(jié)構(gòu)動(dòng)態(tài)變化的無線網(wǎng)絡(luò).本文提出的匿名通信模型不需要提前建立鏈路,避免了路由路徑上節(jié)點(diǎn)建好鏈路后節(jié)點(diǎn)故障而引起的通信失敗.在整個(gè)通信過程中所有節(jié)點(diǎn)都是對(duì)等,也就是說整個(gè)路由路徑中不依靠某些特殊的節(jié)點(diǎn).即使在某一個(gè)中轉(zhuǎn)節(jié)點(diǎn)遭到攻擊的情況下,攻擊者也難以推斷出發(fā)送節(jié)點(diǎn)的位置信息和整個(gè)通信的路由信息.該模型可以很好地適應(yīng)拓?fù)浣Y(jié)構(gòu)動(dòng)態(tài)變化的網(wǎng)絡(luò),具有較好的健壯性.
該方案相比較需要引入第三方代理的匿名協(xié)議[14],實(shí)行起來更加的簡(jiǎn)單方便;采用隨機(jī)選擇節(jié)點(diǎn)轉(zhuǎn)發(fā)消息策略進(jìn)行重路由,從理論上來說該模型可無限制升級(jí)擴(kuò)大;采用混合加密技術(shù)簡(jiǎn)單轉(zhuǎn)發(fā)數(shù)據(jù)包,不需要進(jìn)行填充等手段,具有較高的通信效率;采用密封式拍賣,一般情況下只需要在拍賣截止時(shí)間后計(jì)算一輪即可,實(shí)現(xiàn)了較高的計(jì)算效率;在計(jì)算標(biāo)價(jià)時(shí)采用冒泡排序算法,實(shí)現(xiàn)簡(jiǎn)單且穩(wěn)定性高;在開標(biāo)過程中,每輪拍賣中只有投了最高價(jià)的競(jìng)標(biāo)者才能繼續(xù)參與下一輪拍賣,大大的提高了拍賣的效率.
4.3.3 競(jìng)拍者違約防范
為防止中標(biāo)者反悔,在發(fā)送競(jìng)標(biāo)信息時(shí),競(jìng)標(biāo)者將保證金匯入指定賬戶,并在匯款備注填寫序列號(hào).所有競(jìng)標(biāo)者都需繳納保證金.若競(jìng)拍者在規(guī)定時(shí)間內(nèi)未繳納保證金,拍賣服務(wù)器將取消該競(jìng)標(biāo)者的資格并在公開競(jìng)標(biāo)信息時(shí)予以公布.若中標(biāo)者在規(guī)定時(shí)間內(nèi)未支付拍賣品金額,拍賣服務(wù)器將宣布本次拍賣作廢并沒收該用戶的保證金.
實(shí)驗(yàn)的硬件環(huán)境:CPU為AMD Athlon(tm)X4 750 Quad Core Processor 3.40GHz;內(nèi)存為4.00GB;操作系統(tǒng)為Windows 7.實(shí)驗(yàn)的軟件環(huán)境:基于IntelliJ IDEA 2018.2.1 x64平臺(tái)之jdk1.8.0_172.
本文所提出的協(xié)議不僅適用于移動(dòng)網(wǎng)絡(luò),而且適用于固定網(wǎng)絡(luò).圖4是在不同的轉(zhuǎn)發(fā)概率下,隨著節(jié)點(diǎn)數(shù)目變化得到的平均響應(yīng)時(shí)間.從圖4中可以看出在一定的概率下,隨著節(jié)點(diǎn)數(shù)目的增加,平均響應(yīng)時(shí)間近似線性增加.這表明隨著系統(tǒng)中節(jié)點(diǎn)數(shù)目增加,系統(tǒng)運(yùn)行穩(wěn)定.從圖4中還可以看出在一定數(shù)目的節(jié)點(diǎn)處,隨著轉(zhuǎn)發(fā)概率的增加,節(jié)點(diǎn)的平均響應(yīng)時(shí)間只有小幅度的增加,表明該系統(tǒng)具有較好的適用性.
圖5包括由路徑長(zhǎng)度期望值公式計(jì)算得到的理論值和在10個(gè)節(jié)點(diǎn)組成的網(wǎng)絡(luò)中進(jìn)行實(shí)驗(yàn)操作得到的實(shí)驗(yàn)值.從圖5可以看出在一定的節(jié)點(diǎn)數(shù)目下,隨著轉(zhuǎn)發(fā)概率的增加,節(jié)點(diǎn)的平均路徑長(zhǎng)度也隨之增加,還可以看出平均路徑長(zhǎng)度的實(shí)驗(yàn)值和理論值基本相符合.
圖5 平均路徑長(zhǎng)度-Pf曲線
圖6 節(jié)點(diǎn)數(shù)目變化時(shí)的平均路徑長(zhǎng)度
圖7 節(jié)點(diǎn)平均轉(zhuǎn)發(fā)流量
圖6是在不同轉(zhuǎn)發(fā)概率下,隨著節(jié)點(diǎn)數(shù)目變化得到的平均路徑長(zhǎng)度.從圖6可以看出在一定的概率下,隨著節(jié)點(diǎn)數(shù)目的增加,平均路徑長(zhǎng)度呈現(xiàn)平穩(wěn)的狀態(tài),都在某個(gè)恒定值上下波動(dòng),波動(dòng)范圍不超過1.這表明概率一定時(shí),通信的平均路徑長(zhǎng)度與節(jié)點(diǎn)的數(shù)目是無關(guān)的.這同樣也表明了本文所提出的協(xié)議即便是在多個(gè)節(jié)點(diǎn)共同發(fā)送消息的情況下也具有較好的穩(wěn)定性.
從圖6還可以看出在一定數(shù)目的節(jié)點(diǎn)處,隨著轉(zhuǎn)發(fā)概率的增加,節(jié)點(diǎn)的平均路徑長(zhǎng)度也在增加.與上文的圖5的實(shí)驗(yàn)結(jié)果基本相符.將圖6結(jié)合圖4來分析,可以看出當(dāng)轉(zhuǎn)發(fā)概率為0.25時(shí),雖然平均響應(yīng)時(shí)間短,但平均路徑長(zhǎng)度較短,容易受到流量分析攻擊而降低發(fā)送者的匿名性.當(dāng)轉(zhuǎn)發(fā)概率為0.75時(shí),平均路徑長(zhǎng)度較長(zhǎng),但平均響應(yīng)時(shí)間也較長(zhǎng),并且可能會(huì)導(dǎo)致路徑過長(zhǎng)造成建路失敗,也會(huì)增加系統(tǒng)負(fù)載、通信延遲、性能開銷等問題.當(dāng)轉(zhuǎn)發(fā)概率為0.5時(shí),其平均路徑長(zhǎng)度適中,大約在4左右,并且當(dāng)節(jié)點(diǎn)數(shù)目增加10的時(shí)候,平均響應(yīng)時(shí)間增加不超過1秒.綜上分析,本文所提出的協(xié)議可以選取轉(zhuǎn)發(fā)概率為0.5.
圖7是在轉(zhuǎn)發(fā)概率為0.5時(shí),假設(shè)每個(gè)節(jié)點(diǎn)都向服務(wù)器發(fā)送競(jìng)標(biāo)消息,在完成一次拍賣過程的時(shí)間內(nèi)節(jié)點(diǎn)的平均轉(zhuǎn)發(fā)流量.從圖7可以看出,節(jié)點(diǎn)的平均轉(zhuǎn)發(fā)流量都在某個(gè)恒定值上下波動(dòng)且波動(dòng)范圍不超過1KB,說明本文所提出的協(xié)議可以實(shí)現(xiàn)網(wǎng)路流量的平均分配,可避免局部節(jié)點(diǎn)負(fù)載過重而造成網(wǎng)絡(luò)擁塞.
本文從實(shí)現(xiàn)發(fā)送者匿名的角度出發(fā),提出了一個(gè)匿名通信模型,并在此基礎(chǔ)上提出了一個(gè)安全高效的密封式匿名電子拍賣協(xié)議.該協(xié)議通過隨機(jī)選擇節(jié)點(diǎn)轉(zhuǎn)發(fā)消息策略以及AES算法和RSA算法的混合加密技可以有效防御追蹤攻擊和流量分析,實(shí)現(xiàn)對(duì)競(jìng)標(biāo)者的競(jìng)標(biāo)信息和位置信息的保護(hù).同時(shí)中標(biāo)者必須繳納保證金,不能欺騙拍賣行.理論分析和實(shí)驗(yàn)結(jié)果表明該協(xié)議時(shí)延小,健壯性好,可以有效的實(shí)現(xiàn)網(wǎng)絡(luò)流量的負(fù)載均衡,且隨著系統(tǒng)中節(jié)點(diǎn)數(shù)目的增加,系統(tǒng)的匿名性越好.今后對(duì)該協(xié)議的進(jìn)一步研究將是如何改善協(xié)議可以進(jìn)一步提高通信效率.