李 錦,李曉宇
(鄭州大學(xué) 計(jì)算機(jī)與人工智能學(xué)院,鄭州 450001)
隨著科技的發(fā)展,在線(xiàn)拍賣(mài)在生活中得到了普遍的應(yīng)用.再加上近幾年新冠病毒的出現(xiàn),給人們的生活造成了很大的困擾,為了防止病毒的傳播,應(yīng)盡量少聚集,這就體現(xiàn)出在線(xiàn)拍賣(mài)在拍賣(mài)市場(chǎng)中的便捷性.有時(shí)競(jìng)拍者在線(xiàn)拍賣(mài)過(guò)程中不希望泄露自己的身份信息和位置信息(IP地址),因此研究匿名在線(xiàn)拍賣(mài)技術(shù)變得越來(lái)越重要.
在線(xiàn)拍賣(mài)中,匿名通信[1]可以使身份和位置信息得到保護(hù),防止被惡意篡改,從而更加公平公正.Reed M G 等人[2]在美國(guó)海軍實(shí)驗(yàn)室提出洋蔥路由系統(tǒng),可以完成隱私交流.賀道德等人[3]針對(duì)對(duì)等網(wǎng)絡(luò)中的節(jié)點(diǎn)存在信任度低的問(wèn)題提出洋蔥路由的組合加密機(jī)制,具有很好的易用性.Kate A等人[4]提出一種新的洋蔥路由匿名網(wǎng)絡(luò)協(xié)議.在基于身份的基礎(chǔ)設(shè)施設(shè)置中定義一個(gè)可證明安全的隱私保護(hù)密鑰協(xié)議方案,所需的計(jì)算和通信量要少得多,允許洋蔥路由匿名網(wǎng)絡(luò)優(yōu)雅地?cái)U(kuò)展.趙夢(mèng)瑤等人[5]基于洋蔥路由提出一種基于洋蔥路由的雙向匿名秘密通信協(xié)議,每個(gè)節(jié)點(diǎn)收到信息時(shí)都會(huì)檢查是否有接收者,有效減少系統(tǒng)中的流量.Kita K等人[6]從內(nèi)容生產(chǎn)者的不可鏈接性出發(fā),嚴(yán)格定義生產(chǎn)者匿名性,設(shè)計(jì)一個(gè)IP中基于洋蔥路由的系統(tǒng)以實(shí)現(xiàn)生產(chǎn)者匿名性.該系統(tǒng)以較少的開(kāi)銷(xiāo)提供與隱藏服務(wù)相當(dāng)?shù)哪涿?
近些年來(lái)在在線(xiàn)拍賣(mài)隱私保護(hù)方面,許多學(xué)者做出了顯著的貢獻(xiàn).王小麗等人[7]提出一種基于匿名通信的拍賣(mài)協(xié)議.在通信過(guò)程中節(jié)點(diǎn)隨機(jī)選擇,有效防止竊聽(tīng)和流量分析.但平均響應(yīng)時(shí)間較長(zhǎng),通信效率不高.Wu M等人[8]提出一種新的量子密封競(jìng)拍協(xié)議,該協(xié)議在可信第三方中心的幫助下采用量子認(rèn)證和單粒子量子公鑰,有效地防止拍賣(mài)人和競(jìng)拍者串通,具有更高的安全性和可行性.但需要引入誠(chéng)實(shí)可信的第三方.Bárász M等人[9]提出一個(gè)加密協(xié)議的匿名密封出價(jià)拍賣(mài).提議的方案允許在不使用可信第三方的情況下,識(shí)別至少一個(gè)違反協(xié)議的不誠(chéng)實(shí)參與者.此外,要求投標(biāo)書(shū)具有約束力.這是通過(guò)讓所有參與者一致行動(dòng)找出獲勝者的身份來(lái)實(shí)現(xiàn)的,以防獲勝者無(wú)法購(gòu)買(mǎi).但如果其中有不誠(chéng)實(shí)的參與者,時(shí)間復(fù)雜度就會(huì)增加,最壞到O(n2).Srinath T R等人[10]開(kāi)發(fā)一個(gè)多屬性多輪逆向拍賣(mài)的安全協(xié)議.該方案可以有效地減輕拍賣(mài)人和競(jìng)買(mǎi)人的計(jì)算負(fù)擔(dān),能為賣(mài)方提供一個(gè)安全的投標(biāo)環(huán)境,但需要引入可信的第三方.
本文將洋蔥路由系統(tǒng)應(yīng)用到在線(xiàn)拍賣(mài)過(guò)程中,提出一種利用洋蔥路由的匿名在線(xiàn)秘密拍賣(mài)方案.競(jìng)拍者所在的節(jié)點(diǎn)事先選定一系列中轉(zhuǎn)節(jié)點(diǎn)構(gòu)成洋蔥路徑.每到一個(gè)中轉(zhuǎn)節(jié)點(diǎn),利用此節(jié)點(diǎn)的私有密鑰解密洋蔥路由最外一層,獲取下一跳IP地址,直到發(fā)送給拍賣(mài)服務(wù)器.拍賣(mài)服務(wù)器用私鑰解密最后一層得到對(duì)稱(chēng)密鑰[11],用對(duì)稱(chēng)密鑰解密密文得到報(bào)價(jià)信息.只有拍賣(mài)服務(wù)器能得到報(bào)價(jià)信息,并且拍賣(mài)服務(wù)器及任意一個(gè)中轉(zhuǎn)節(jié)點(diǎn)都不知道競(jìng)拍者的身份信息.任意攻擊者都不可能得到報(bào)價(jià)信息,也不知道競(jìng)拍者是誰(shuí),從而有效保護(hù)競(jìng)拍者的隱私.實(shí)驗(yàn)結(jié)果顯示該方案具有較低的響應(yīng)時(shí)間,隨著節(jié)點(diǎn)的加入,響應(yīng)時(shí)間緩慢增加,系統(tǒng)具有良好的健壯性.
在線(xiàn)拍賣(mài)[12]是傳統(tǒng)拍賣(mài)形式的網(wǎng)絡(luò)實(shí)現(xiàn).拍賣(mài)前,拍賣(mài)方在網(wǎng)上發(fā)布拍賣(mài)品的詳細(xì)信息及拍賣(mài)規(guī)則,為了讓競(jìng)拍者進(jìn)一步了解競(jìng)拍物品也可以在網(wǎng)上展示拍賣(mài)品.在線(xiàn)拍賣(mài)可以減少實(shí)物由于移動(dòng)損壞的風(fēng)險(xiǎn),保證實(shí)物的安全,也可以更方便競(jìng)拍者,足不出戶(hù)就可以競(jìng)拍.在線(xiàn)拍賣(mài)根據(jù)拍賣(mài)商品數(shù)量及商品最后的拍賣(mài)價(jià)格,拍賣(mài)網(wǎng)站可以分為兩種競(jìng)拍方式:英式拍賣(mài)和荷蘭式拍賣(mài).其中英式拍賣(mài)是競(jìng)拍者在規(guī)定時(shí)間內(nèi)競(jìng)價(jià),出價(jià)最高者將得到物品.拍賣(mài)前賣(mài)家可以設(shè)置保留價(jià),當(dāng)最高競(jìng)價(jià)低于保留價(jià)時(shí),拍賣(mài)方有權(quán)力不出售拍賣(mài)的物品.荷蘭式拍賣(mài)適用于拍賣(mài)方要拍賣(mài)物品數(shù)量較多的情況.
洋蔥路由系統(tǒng)[13]使用原路由協(xié)議,發(fā)送者在目錄節(jié)點(diǎn)所提供的列表中選擇一組節(jié)點(diǎn),事先規(guī)劃好轉(zhuǎn)發(fā)路徑.用上一節(jié)點(diǎn)的公開(kāi)密鑰對(duì)下一節(jié)點(diǎn)的數(shù)據(jù)及IP地址進(jìn)行加密,發(fā)送信息被一層層加密,形成洋蔥路徑.中轉(zhuǎn)節(jié)點(diǎn)解密最外一層,得到下一跳IP地址,轉(zhuǎn)發(fā)給下一跳,以此類(lèi)推直到目的節(jié)點(diǎn)將洋蔥路由最后一層解密,獲得發(fā)送的原始信息.接收者回送給發(fā)送者信息時(shí)按原路返回,直到到達(dá)發(fā)送節(jié)點(diǎn).每一跳洋蔥路由節(jié)點(diǎn)都只能解密洋蔥的最外一層,得到下一跳節(jié)點(diǎn)地址后轉(zhuǎn)發(fā)給下一跳節(jié)點(diǎn),與此同時(shí),每個(gè)節(jié)點(diǎn)都會(huì)記錄前驅(qū)節(jié)點(diǎn)IP地址.接收者在回送消息時(shí)也對(duì)數(shù)據(jù)進(jìn)行層層加密,只不過(guò)加密的順序與發(fā)送者加密的順序相反.
所有節(jié)點(diǎn)加入一個(gè)公開(kāi)密鑰系統(tǒng),所有節(jié)點(diǎn)的公開(kāi)密鑰都是開(kāi)放的,私有密鑰保密.服務(wù)器的身份是公開(kāi)的,其它競(jìng)拍者不公開(kāi).記拍賣(mài)服務(wù)器的公開(kāi)密鑰為Epkr,私有密鑰為Eskr.節(jié)點(diǎn)i的公開(kāi)密鑰為Epki,私有密鑰為Eski.匿名在線(xiàn)拍賣(mài)模型示意圖如圖1所示.
圖1 匿名通信模型Fig.1 Anonymous online auction scheme model
下面介紹利用洋蔥路由的匿名秘密通信協(xié)議:
1)發(fā)送者生成一個(gè)AES密鑰K0;
2)發(fā)送者選擇一系列中轉(zhuǎn)節(jié)點(diǎn),構(gòu)成一條路徑:節(jié)點(diǎn)1、節(jié)點(diǎn)2、…、節(jié)點(diǎn)n .先用最后一個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)n)的公開(kāi)密鑰加密接收者的IP地址,再把密文和節(jié)點(diǎn)n的IP地址合起來(lái),用節(jié)點(diǎn)n-1的公開(kāi)密鑰加密,以此類(lèi)推,構(gòu)造一個(gè)洋蔥路由頭R=Epk1(IP2,Epk2(IP3,…,Epkn-1(IPn,Epkn(IPr,Epkr(K0)…).
路由表是一個(gè)存儲(chǔ)在節(jié)點(diǎn)的電子表格,記錄了從此節(jié)點(diǎn)經(jīng)過(guò)的每一條信息,每一個(gè)節(jié)點(diǎn)都需建立路由表,每一項(xiàng)包含<序列碼s,發(fā)送消息給自己的節(jié)點(diǎn)IP地址>.洋蔥路由的匿名秘密通信模型中每個(gè)節(jié)點(diǎn)的路由表信息如表1所示.
表1 路由表結(jié)構(gòu)Table 1 Routing table structure
發(fā)送者發(fā)送請(qǐng)求消息過(guò)程:
發(fā)送節(jié)點(diǎn)t0隨機(jī)生成一個(gè)消息序列碼s,用K0對(duì)明文消息P加密得到密文EP.將洋蔥路由頭R、密文EP及消息序列碼s組合在一起形成請(qǐng)求消息
算法1.發(fā)送節(jié)點(diǎn)發(fā)送消息算法
1. 發(fā)送節(jié)點(diǎn)利用AES算法生成密鑰;
2. 發(fā)送節(jié)點(diǎn)選擇一系列中轉(zhuǎn)節(jié)點(diǎn),構(gòu)成路徑;
3. 獲取各節(jié)點(diǎn)的公鑰和IP地址,用接收者的公鑰加密K0得到Rn=Epkr(K0),再用最后一個(gè)中轉(zhuǎn)節(jié)點(diǎn)tn的公鑰加密得Rn-1=Epkn(IPr,Rn),以此類(lèi)推得到洋蔥路由頭R;
4. EP=K0(P)//用對(duì)稱(chēng)密鑰K0加密明文消息P;
5. 將其與Seq組合形成請(qǐng)求消息REQ0=(R,EP,Seq);
6. 發(fā)送者將REQ0發(fā)送給第1個(gè)中轉(zhuǎn)節(jié)點(diǎn)t1;
中轉(zhuǎn)節(jié)點(diǎn)t1收到請(qǐng)求消息后,用私有密鑰Esk1解密洋蔥路由頭R的最外層,得到下一跳t2的IP地址,把R的剩余部分R1,與密文EP和序列碼s合起來(lái)得到請(qǐng)求消息
中轉(zhuǎn)節(jié)點(diǎn)t2收到請(qǐng)求消息后,按照同樣的方法發(fā)給第3個(gè)中轉(zhuǎn)節(jié)點(diǎn),同時(shí)中轉(zhuǎn)節(jié)點(diǎn)t2記錄下序列碼s和上一跳節(jié)點(diǎn)的IP地址,存入路由表.依次轉(zhuǎn)發(fā),直到到達(dá)接收者.
算法2.中轉(zhuǎn)節(jié)點(diǎn)轉(zhuǎn)發(fā)發(fā)送消息算法
1. FOR i=1 TO i=n
2. 中轉(zhuǎn)節(jié)點(diǎn)ti收到請(qǐng)求消息REQi-1=(Ri-1,EP,Seq);
3. Eski{Ri-1}=IPi+1//ti用私鑰Eski解密Ri-1得到下一個(gè)節(jié)點(diǎn)的IP地址;
4. REQi=(Ri,EP,Seq);
5. ti在路由表記錄
6. ti將請(qǐng)求消息REQi發(fā)送給節(jié)點(diǎn)ti+1;
7. END FOR
接收者使用自己的私有密鑰Eskr解密余下的洋蔥路由頭,得到K0,用K0解密EP得到發(fā)送者的明文消息P.
算法3.接收節(jié)點(diǎn)接收發(fā)送消息算法
1. 接收者收到tn發(fā)送的請(qǐng)求消息REQn;
2. Eskr{Epkr(K0)}=K0;
3. K0{EP}=P;
4. 接收者在路由表中記錄
到此為止完成一次節(jié)點(diǎn)發(fā)送請(qǐng)求消息.在發(fā)送請(qǐng)求消息的整個(gè)過(guò)程中,中轉(zhuǎn)節(jié)點(diǎn)只知道上一跳和下一跳的IP地址,無(wú)法確定上一跳是否是發(fā)送者,也無(wú)法確定下一跳是否是接收者.每一個(gè)中轉(zhuǎn)節(jié)點(diǎn)及接收者都無(wú)法獲取請(qǐng)求消息的整個(gè)發(fā)送路徑,消息經(jīng)過(guò)層層加密由接收者解密最后一層得到明文消息,保證了消息的隱秘性.
接收者回復(fù)發(fā)送者過(guò)程:
接收者向發(fā)送者發(fā)送回復(fù)消息P′.用K0加密回復(fù)消息得密文EP′,將密文和序列碼組合在一起形成報(bào)文
算法4.接收者發(fā)送回復(fù)消息算法
1. EP′=K0(P′);
2. 與序列碼組合形成報(bào)文
3. Kr(
4. Epkn(Kr);
5. 組成REPr=( Kr(
6. 按序列碼s在路由表中查找對(duì)應(yīng)的IP,將回復(fù)消息發(fā)送到該IP,并刪除該記錄;
中轉(zhuǎn)節(jié)點(diǎn)tn收到后,用私有密鑰Eskn解密得到對(duì)稱(chēng)密鑰Kr,用Kr解密得到報(bào)文
中轉(zhuǎn)節(jié)點(diǎn)t1收到后,重復(fù)以上節(jié)點(diǎn)的工作,查找路由表,找到上一個(gè)節(jié)點(diǎn)(即接收者)t0,將回復(fù)消息返回給t0.
算法5.中轉(zhuǎn)節(jié)點(diǎn)轉(zhuǎn)發(fā)回復(fù)消息算法
1. 中轉(zhuǎn)節(jié)點(diǎn)tn收到回復(fù)消息REPr;
2. Eskn{Epkn(Kr)}=Kr;
3. Kr{Kr(
4. Kn(
5. Epkn-1(Kn);
6. 回復(fù)消息REPn=( Kn(
7. 將REPn轉(zhuǎn)發(fā)給tn-1,并刪除該條記錄;
8. 依次轉(zhuǎn)發(fā),直到發(fā)送節(jié)點(diǎn)接收到回復(fù)消息;
t0用私有密鑰Esk0解密得到對(duì)稱(chēng)密鑰K1,用K1對(duì)報(bào)文
算法6.發(fā)送者接收回復(fù)消息算法
1. 發(fā)送節(jié)點(diǎn)收到回復(fù)消息REP1;
2. Esk0{Epk0(K1)}=K1;
3. K1{K1(
4. K0{EP′}=P′;
整個(gè)過(guò)程中轉(zhuǎn)節(jié)點(diǎn)及拍賣(mài)服務(wù)器不知道發(fā)送節(jié)點(diǎn)的位置,保證了發(fā)送節(jié)點(diǎn)匿名.
本文匿名在線(xiàn)秘密拍賣(mài)的核心思想是在整個(gè)拍賣(mài)過(guò)程中競(jìng)拍者采用洋蔥路由匿名通信協(xié)議發(fā)送報(bào)價(jià)信息.在節(jié)點(diǎn)列表中選擇節(jié)點(diǎn)創(chuàng)建路徑,每到一個(gè)節(jié)點(diǎn)解析最外一層的地址,發(fā)送給下一個(gè)節(jié)點(diǎn),從而實(shí)現(xiàn)對(duì)競(jìng)拍者的身份和位置(IP地址)隱私的保護(hù).該方案采用英式拍賣(mài)[14]的競(jìng)拍形式,在規(guī)定時(shí)間內(nèi)出價(jià)最高的競(jìng)拍者得到物品.
模型的基本思路是競(jìng)拍者作為發(fā)送者,拍賣(mài)服務(wù)器作為接收者.競(jìng)拍者采用利用洋蔥路由的匿名通信技術(shù)將競(jìng)拍信息發(fā)送給拍賣(mài)服務(wù)器,以保證競(jìng)拍者的身份信息和地理位置信息不會(huì)被服務(wù)器及任意第三方獲取.當(dāng)競(jìng)拍者想要競(jìng)拍物品時(shí),可以按照以下步驟:
Step1.拍賣(mài)服務(wù)器建立一個(gè)公示欄,公布競(jìng)拍物品種類(lèi)、拍賣(mài)品的拍賣(mài)規(guī)則、拍賣(mài)保留價(jià)、拍賣(mài)物品的截止日期、保證金金額及拍賣(mài)服務(wù)器賬戶(hù)等,所有用戶(hù)都可以看到.
Step2.競(jìng)拍者構(gòu)造自己的競(jìng)拍信息AInfo(包含ID號(hào)、商品、出價(jià)).競(jìng)拍者將保證金匯入指定賬戶(hù),并在匯款時(shí)備注序列碼.競(jìng)拍者隨機(jī)構(gòu)造一條洋蔥路徑,競(jìng)拍者將競(jìng)拍信息AInfo發(fā)送給第1個(gè)節(jié)點(diǎn),依次轉(zhuǎn)發(fā)最終到達(dá)拍賣(mài)服務(wù)器.
Step3.拍賣(mài)服務(wù)器收到AInfo,沿原路回送一條表示投標(biāo)申請(qǐng)已收到的信息給競(jìng)拍者.在截止期限到期之后,拍賣(mài)服務(wù)器只考慮繳納保證金的競(jìng)拍者,選擇出價(jià)最高的,在公示欄上公布.
Step4.中標(biāo)者在截至日期之前將競(jìng)拍物品余下金額通過(guò)銀行匯入指定賬戶(hù),同時(shí)將ID號(hào),序列碼和匯款憑據(jù)通過(guò)匿名通信方式發(fā)送給拍賣(mài)服務(wù)器.逾期未繳納剩余金額的中標(biāo)者視為自動(dòng)放棄,保證金沒(méi)收.未中標(biāo)競(jìng)拍者的保證金按原路退回個(gè)人賬戶(hù).
Step5.拍賣(mài)服務(wù)器確認(rèn)中標(biāo)者已付款,回送給中標(biāo)者一條表示匯款憑據(jù)已收到的信息,交易完成,在公示欄中予以公布并刪除原競(jìng)拍物品.中標(biāo)者領(lǐng)取拍賣(mài)貨品采用線(xiàn)下交接的方式另行安排.
本文拍賣(mài)協(xié)議需要用到的符號(hào)定義如表2所示.
表2 相關(guān)符號(hào)定義Table 2 Definition of correlation symbois
2.2.1 拍賣(mài)服務(wù)器任務(wù)發(fā)布
網(wǎng)絡(luò)中所有節(jié)點(diǎn)和拍賣(mài)服務(wù)器都加入RSA公開(kāi)密鑰系統(tǒng).競(jìng)拍者使用自身所處節(jié)點(diǎn)的公開(kāi)密鑰-私有密鑰對(duì).所有競(jìng)拍者隨機(jī)生成一個(gè)32位的二進(jìn)制字符串作為ID號(hào),ID號(hào)和節(jié)點(diǎn)對(duì)應(yīng)關(guān)系除競(jìng)拍者自己,任意節(jié)點(diǎn)(包括服務(wù)器)都不知道.拍賣(mài)服務(wù)器在公示欄公布競(jìng)拍物品種類(lèi)、每種拍賣(mài)品的拍賣(mài)規(guī)則、拍賣(mài)物品的截止日期、保證金金額以及服務(wù)器賬戶(hù)等.針對(duì)每種拍賣(mài)品的信息都應(yīng)在公示欄中公告,以體現(xiàn)拍賣(mài)的公開(kāi)性及公平性.
2.2.2 競(jìng)標(biāo)
競(jìng)拍者構(gòu)造競(jìng)拍信息(包含ID號(hào)、商品、出價(jià)).競(jìng)拍者隨機(jī)構(gòu)造一條洋蔥路徑,在物品截至日期之前通過(guò)洋蔥路徑將競(jìng)拍信息三元組AInfo=(ID,Commodity,Bidid)(其中ID為ID號(hào),Commodity為商品名稱(chēng),Bidid為出價(jià))發(fā)送給洋蔥路徑的第一個(gè)節(jié)點(diǎn),經(jīng)過(guò)洋蔥路徑中的節(jié)點(diǎn)依次轉(zhuǎn)發(fā),最終到達(dá)拍賣(mài)服務(wù)器.拍賣(mài)服務(wù)器收到競(jìng)拍信息后,沿原路回送一條表示投標(biāo)申請(qǐng)已收到的確認(rèn)信息給競(jìng)拍者.
為了防止惡意競(jìng)拍者中標(biāo)后拒不付款造成拍賣(mài)失敗,增加競(jìng)拍者繳納保證金環(huán)節(jié).競(jìng)拍者事先采用銀行匯款方式將保證金匯入拍賣(mài)方指定賬戶(hù),在匯款備注上填寫(xiě)自己的ID號(hào).
拍賣(mài)服務(wù)器收到一條競(jìng)拍信息后核對(duì)該競(jìng)拍者是否已經(jīng)繳納保證金,如果沒(méi)有繳納,直接返回“拒絕接受競(jìng)拍”.如果競(jìng)拍者中標(biāo)之后拒不付款,則保證金沒(méi)收,競(jìng)拍重啟并且禁止該競(jìng)拍者再參與新一輪競(jìng)拍.
算法7.競(jìng)標(biāo)環(huán)節(jié)算法
1. 競(jìng)拍者利用AES算法生成密鑰;
2. 競(jìng)拍信息AInfo=(ID,Commodity,Bidid);
3. bidder將保證金匯入公示欄提供的賬戶(hù);
4. bidder構(gòu)造洋蔥路由頭R;
5. EP=K0(AInfo);
6. 與Seq組合形成請(qǐng)求消息REQ0=(R,EP,Seq) //Seq是競(jìng)拍者生成的隨機(jī)數(shù),是唯一的;
7. t1收到請(qǐng)求消息REQ0;
8. Esk1{R}=IP2;
9. REQ1=(R1,EP,Seq);
10. t1在路由表記錄
11. t1將REQ1發(fā)送給下一節(jié)點(diǎn)t2;
12. 最后一個(gè)中轉(zhuǎn)節(jié)點(diǎn)tn將請(qǐng)求消息REQn=(Rn,EP,Seq)發(fā)送給拍賣(mài)服務(wù)器server;
13. server收到請(qǐng)求消息REQn;
14. Eskr{Rn}=K0,K0{EP}=AInfo;
15. server在路由表中記錄
16. server從AInfo中得到ID,然后與銀行賬戶(hù)收款記錄備注中的ID號(hào)對(duì)比;
17. IF(兩者ID相同)
18. 返回確認(rèn)信息,記錄競(jìng)拍信息并執(zhí)行算法8,;
19. ELSE
20. server回復(fù)競(jìng)拍者“拒絕接受競(jìng)拍”,執(zhí)行算法4、5、6;
21. END IF
2.2.3 開(kāi)標(biāo)
到截止時(shí)間后,拍賣(mài)服務(wù)器查看所收到競(jìng)拍信息,根據(jù)快速排序算法對(duì)繳納保證金的競(jìng)標(biāo)者的標(biāo)價(jià)進(jìn)行排序,選擇最高價(jià).在公示欄公布中者ID號(hào)、商品名稱(chēng)和出價(jià)及其他競(jìng)標(biāo)者的競(jìng)拍信息.中標(biāo)者將競(jìng)拍物品總價(jià)減去保證金余下的金額通過(guò)銀行匯入指定賬戶(hù),逾期未繳納視為自動(dòng)放棄,保證金沒(méi)收.沒(méi)有中標(biāo)的保證金退回個(gè)人賬戶(hù).
若最高價(jià)有多個(gè)競(jìng)拍者投,拍賣(mài)服務(wù)器公布投了最高價(jià)的競(jìng)拍者們并宣布進(jìn)入下一輪競(jìng)拍.其它競(jìng)拍者取消資格,再次發(fā)送競(jìng)拍信息,拍賣(mài)服務(wù)器會(huì)拒絕接受.競(jìng)拍方法與之前一致,新一輪的競(jìng)拍中,拍賣(mài)起拍價(jià)變?yōu)樯弦惠喌淖罡邇r(jià),重復(fù)競(jìng)拍過(guò)程,直到選出唯一一個(gè)最高價(jià).
算法8.開(kāi)標(biāo)環(huán)節(jié)算法
1. server CHECK AInfo=(ID,Commodity,Bidid);
2. QuickSort={ Bidid};
3. QuickSort(A,p,r)
4. if p 5. q=Partition(A,p,r) 6. QuickSort(A,p,q-1) 7. QuickSort(Q,q+1,r) 8. End 9. Partition(A,p,r) 10. x=A[r] 11. i=p-1 12. for j=p to r-1 13. do if A[j]<=x 14. then i=i+1 15. exchange A[i]<->A[j] 16. exchange A[i+1]<->A[r] 17. return i+1 18. End 19. RETURN QuickSort[length-1]; 20. CHECK最高價(jià)Bid對(duì)應(yīng)的ID; 21. IF(ID有多個(gè)) 22. RETURN Bid對(duì)應(yīng)的ID集合M; 23. Bid視為拍賣(mài)起價(jià); 24. 集合M執(zhí)行算法7,算法8; 25. ELSE 26. RETURN Bid及其ID; 27. END IF 28. server公布中標(biāo)者的ID,商品名以及Bid; 29. IF(中標(biāo)者按時(shí)將錢(qián)匯入指定賬戶(hù)) 30. 執(zhí)行算法9; 31. ELSE 32. 沒(méi)收保證金,本次拍賣(mài)作廢; 33. END IF 34. server退回未中標(biāo)者保證金至個(gè)人賬戶(hù); 2.2.4 支付和驗(yàn)證 中標(biāo)者(比如是Bob)通過(guò)銀行將剩余金額匯入指定賬戶(hù),同時(shí)將ID號(hào)、序列碼和匯款憑據(jù)通過(guò)洋蔥路由匿名通信方式發(fā)送給拍賣(mài)服務(wù)器.為防止拍賣(mài)服務(wù)器通過(guò)銀行轉(zhuǎn)賬信息獲知中標(biāo)者身份和位置隱私,中標(biāo)者使用銀行或者第三方代理機(jī)構(gòu)提供的匿名轉(zhuǎn)賬賬戶(hù)來(lái)匯款.第三方代理機(jī)構(gòu)有法律義務(wù)對(duì)匯款者的身份保密,不得泄露給任何人或者機(jī)構(gòu).拍賣(mài)服務(wù)器收到款項(xiàng)和匯款憑據(jù)之后,確認(rèn)中標(biāo)者已付款,通過(guò)匿名通信方式回復(fù)確認(rèn)信息CInfo給中標(biāo)者,至此交易完成.在這里確認(rèn)信息中簽名需要使用拍賣(mài)服務(wù)器的私鑰簽名,以供線(xiàn)下交接拍賣(mài)物品時(shí)驗(yàn)證.在公示欄予以公布中標(biāo)者ID號(hào)及“已收到全額匯款:XXX元”.宣布此次拍賣(mài)結(jié)束,并刪除原競(jìng)拍物品.中標(biāo)者領(lǐng)取拍賣(mài)貨品采用線(xiàn)下交接的方式另行安排. 算法9.支付及驗(yàn)證環(huán)節(jié)算法 1. Bob將錢(qián)匯入指定賬戶(hù); 2. 將ID號(hào)、Seq和匯款證據(jù)發(fā)送給拍賣(mài)服務(wù)器; 3. server收到信息后,核對(duì)轉(zhuǎn)賬數(shù)據(jù)和身份; 4. 確認(rèn)是中標(biāo)者匯款,生成確認(rèn)信息CInfo; 5. EP′=K0(CInfo),Mr=Kr(EP′,s); 6. 根據(jù)路由表中記錄 7. server獲取tn的公鑰Epkn,Nr=Epkn(Kr); 8. 與Mr=Kr(EP′,s)組成回復(fù)消息REPn=(Mr,Nr); 9. server刪除路由表中記錄 10. tn收到回復(fù)消息REPn; 11. Eskn{Epkn(Kr)}=Kr,Kr{Kr(EP′,s)}=s; 12. FOR i=n TO i=2 13. ti根據(jù)記錄 14. ti獲得ti-1的公鑰Epki-1,Ni=Epki-1(Ki); 15. 與Mi=Ki(EP′,s)組成REPi-1=(Mi,Ni); 16. ti刪除路由表中記錄 17. ti-1收到回復(fù)消息REPi-1; 18. Eski-1{Epki-1(Ki)}=Ki,Ki{Ki(EP′,s)}=s; 19. END FOR 20. t1根據(jù)記錄 21. t1獲取Bob的公鑰Epkb,N1=EpkBob(K1); 22. 與M1=K1(EP′,s)組成REPb=(M1,N1); 23. t1刪除路由表中記錄 24. Bob收到t1發(fā)送的回復(fù)消息REPb; 25. Eskb{Epkb(K1)}=K1,K1{K1(EP′,s)}=EP′; 26. Bob獲取自己的對(duì)稱(chēng)密鑰K0; 27. K0{EP′}=CInfo; 28.server公布拍賣(mài)完成信息; 本方案在信息發(fā)送過(guò)程中有可能收到攻擊者威脅.攻擊者是網(wǎng)絡(luò)中(或者網(wǎng)絡(luò)外)的任意節(jié)點(diǎn),它可能監(jiān)聽(tīng)和截獲節(jié)點(diǎn)之間的通信,也可能被選為中轉(zhuǎn)節(jié)點(diǎn),還可能采用黑客手段入侵和控制某些節(jié)點(diǎn).攻擊者的目的是發(fā)現(xiàn)獲取競(jìng)拍者的身份和IP地址.另外,拍賣(mài)服務(wù)器也可能試圖獲取競(jìng)拍者的身份和IP地址. 定理1.除競(jìng)拍者以外任意節(jié)點(diǎn)都不能獲知競(jìng)拍者的位置和身份隱私. 證明:競(jìng)拍者構(gòu)造洋蔥路徑加密信息里只有K0,中轉(zhuǎn)節(jié)點(diǎn)只對(duì)洋蔥路由最外一層解密.轉(zhuǎn)發(fā)路徑是競(jìng)拍者構(gòu)造好的,中轉(zhuǎn)節(jié)點(diǎn)無(wú)法獲知上一節(jié)點(diǎn)的身份,也就無(wú)法獲知競(jìng)拍者的位置隱私.拍賣(mài)服務(wù)器也是只知道上一跳的IP地址,無(wú)法確認(rèn)上一跳是否是競(jìng)拍者. 拍賣(mài)服務(wù)器發(fā)送回復(fù)消息時(shí),各節(jié)點(diǎn)通過(guò)查詢(xún)路由表,回復(fù)消息按原路返回,任意節(jié)點(diǎn)無(wú)法獲知競(jìng)拍者的位置. 定理2.競(jìng)拍信息隱私:中轉(zhuǎn)節(jié)點(diǎn)及攻擊者都無(wú)法獲取競(jìng)拍的具體信息. 證明:競(jìng)拍者用對(duì)稱(chēng)密鑰K0加密明文形成密文,用拍賣(mài)服務(wù)器的公鑰Epkr加密K0,根據(jù)洋蔥路徑選擇的節(jié)點(diǎn)順序用最后一個(gè)節(jié)點(diǎn)的公鑰Epkn加密Epkr(K0)及拍賣(mài)服務(wù)器的IP地址,以此類(lèi)推,形成洋蔥路由頭.中轉(zhuǎn)節(jié)點(diǎn)只解密最外層洋蔥,得到下一跳IP地址.到拍賣(mài)服務(wù)器時(shí)解密得到密文.只有拍賣(mài)服務(wù)器利用私有密鑰Eskr解密得到對(duì)稱(chēng)密鑰K0,其他任意節(jié)點(diǎn)都無(wú)法獲取,也就無(wú)法獲取競(jìng)拍者發(fā)送的競(jìng)拍信息. 根據(jù)匿名拍賣(mài)方案不難看到,在所有中轉(zhuǎn)節(jié)點(diǎn)都是忠實(shí)的情況下,競(jìng)拍者的身份和位置隱私百分百得到保護(hù).如果中轉(zhuǎn)節(jié)點(diǎn)中存在惡意節(jié)點(diǎn),拍賣(mài)服務(wù)器與惡意節(jié)點(diǎn)串通,就有可能沿著轉(zhuǎn)發(fā)路徑追溯到競(jìng)拍者.定義匿名度: D=1-P (1) P為拍賣(mài)服務(wù)器追溯到競(jìng)拍者的概率.假定網(wǎng)絡(luò)中除了拍賣(mài)服務(wù)器和競(jìng)拍者本人之外一共有N個(gè)節(jié)點(diǎn),其中含有m個(gè)惡意節(jié)點(diǎn).競(jìng)拍者隨機(jī)選擇L個(gè)節(jié)點(diǎn)生成洋蔥路徑,容易看到,如果路徑長(zhǎng)度L>m,則轉(zhuǎn)發(fā)路徑中一定有非惡意節(jié)點(diǎn),那么拍賣(mài)服務(wù)器追溯到競(jìng)拍節(jié)點(diǎn)是不可能的,所以匿名度D=1.如果L≤m,則匿名度計(jì)算如下.第1個(gè)中轉(zhuǎn)節(jié)點(diǎn)恰好為惡意節(jié)點(diǎn)的概率為: (2) 依次類(lèi)推,L個(gè)中轉(zhuǎn)節(jié)點(diǎn)恰好均為惡意節(jié)點(diǎn)的概率為: (3) 所以: (4) 圖2表示轉(zhuǎn)發(fā)路徑L分別等于3,4,5時(shí),匿名度與惡意節(jié)點(diǎn)比例的關(guān)系.隨著惡意節(jié)點(diǎn)比例增大,匿名度不斷降低,跟預(yù)期是一樣的,惡意節(jié)點(diǎn)越多,與拍賣(mài)服務(wù)器同謀的節(jié)點(diǎn)越多,同謀的節(jié)點(diǎn)獲取競(jìng)拍節(jié)點(diǎn)身份的概率就越大.此外,轉(zhuǎn)發(fā)路徑越長(zhǎng),相應(yīng)的拍賣(mài)服務(wù)器追溯到競(jìng)拍者的概率就越小,匿名度越大.最后,即使是L=3的最短路徑下,假定惡意節(jié)點(diǎn)比例為50%,匿名度仍然高達(dá)0.88,而現(xiàn)實(shí)中惡意節(jié)點(diǎn)比例通常遠(yuǎn)遠(yuǎn)低于50%,因此,本方案具有很好的匿名性. 圖2 匿名度-惡意節(jié)點(diǎn)比例關(guān)系圖Fig.2 Anonymity-proportion diagram of malicious nodes 3.3.1 安全性 競(jìng)拍者采用構(gòu)造洋蔥路徑的方式確定轉(zhuǎn)發(fā)路徑.競(jìng)拍信息通過(guò)洋蔥路由層層加密,中轉(zhuǎn)節(jié)點(diǎn)只解密最外層,只有拍賣(mài)服務(wù)器才能解密競(jìng)拍信息,其他拍賣(mài)者不能獲取,保證了競(jìng)拍信息的安全到達(dá). 為防止攻擊者冒充競(jìng)拍者給拍賣(mài)服務(wù)器發(fā)送信息以干擾拍賣(mài)過(guò)程,拍賣(mài)服務(wù)器收到競(jìng)拍信息之后,使用自己的私鑰對(duì)ID號(hào)進(jìn)行簽名并將簽名附在確認(rèn)信息之后一起回復(fù)給競(jìng)拍者.由于ID號(hào)是競(jìng)拍者生成的,其它任何人都無(wú)法知道.只有等到競(jìng)拍截至,拍賣(mài)服務(wù)器在公告欄公布所有競(jìng)拍信息時(shí),ID號(hào)才公諸于眾.后續(xù)競(jìng)拍者與拍賣(mài)服務(wù)器再通信時(shí),必須提供(ID號(hào),ID號(hào)簽名),拍賣(mài)服務(wù)器驗(yàn)證簽名通過(guò)之后才與之通信,否則拒不接收對(duì)方發(fā)來(lái)的任何信息.因?yàn)槠渌硕疾豢赡塬@得ID號(hào)簽名,所以攻擊者無(wú)法仿冒競(jìng)拍者. 3.3.2 健壯性 在構(gòu)造洋蔥路徑時(shí),競(jìng)拍者首先通過(guò)查詢(xún)網(wǎng)絡(luò)路由器或者廣播查詢(xún)信息,確定當(dāng)前活躍節(jié)點(diǎn)集合.然后在活躍節(jié)點(diǎn)集合中隨機(jī)選擇選取一組轉(zhuǎn)發(fā)節(jié)點(diǎn).構(gòu)造洋蔥路由,層層加密,實(shí)現(xiàn)競(jìng)拍信息及位置隱私的保護(hù).洋蔥路徑上的節(jié)點(diǎn)選擇是隨機(jī)的,不依賴(lài)于特定的節(jié)點(diǎn),因此方案具有較好的健壯性. 當(dāng)然,現(xiàn)實(shí)中由于洋蔥路徑中某個(gè)節(jié)點(diǎn)的突發(fā)故障引起通信失敗是無(wú)法徹底杜絕的,但是這種概率很小,一般情況下系統(tǒng)仍然能正常運(yùn)行. 3.3.3 競(jìng)拍者違約規(guī)范 為防止惡意競(jìng)拍者中標(biāo)之后拒不付款導(dǎo)致流標(biāo),拍賣(mài)服務(wù)器提出競(jìng)拍者繳納保證金這一環(huán)節(jié).參與競(jìng)拍的競(jìng)拍者都需繳納保證金,未繳納視為作廢.公布競(jìng)拍情況時(shí)會(huì)公布作廢的競(jìng)拍信息.中標(biāo)者需在規(guī)定期限內(nèi)繳納剩余金額,沒(méi)有按時(shí)繳納則默認(rèn)自動(dòng)放棄,保證金將被沒(méi)收,此次拍賣(mài)作廢. 為了驗(yàn)證本文提出的利用洋蔥路由的匿名在線(xiàn)秘密拍賣(mài)方案的可行性,設(shè)計(jì)了此次實(shí)驗(yàn). 硬件環(huán)境:CPU為Intel(R)Core(TM)i5-9300H;主頻為2.40 GHz;內(nèi)存為16.0 GB;操作系統(tǒng)為:Windows 10 家庭中文版.實(shí)驗(yàn)的開(kāi)發(fā)工具:IntelliJ IDEA Community Edition 2021.3,jdk-16.0.1,編程語(yǔ)言為:JAVA. 實(shí)驗(yàn)中設(shè)置網(wǎng)絡(luò)中節(jié)點(diǎn)個(gè)數(shù)為50,選取不同的中轉(zhuǎn)路徑長(zhǎng)度L,分別做了200次模擬實(shí)驗(yàn).記錄拍賣(mài)服務(wù)器在不同情況下收到競(jìng)拍信息所需時(shí)間,求出平均響應(yīng)時(shí)間.從圖3可以看出,節(jié)點(diǎn)個(gè)數(shù)一定時(shí),隨著L增加,平均響應(yīng)時(shí)間緩慢增加.實(shí)驗(yàn)中平均響應(yīng)時(shí)間均在6秒內(nèi),說(shuō)明該方案具有較好適應(yīng)性,即使中轉(zhuǎn)路徑增長(zhǎng)也可以穩(wěn)定運(yùn)行. 圖3 平均響應(yīng)時(shí)間-平均路徑長(zhǎng)度關(guān)系圖Fig.3 Average response time -average path length diagram 圖4表示節(jié)點(diǎn)數(shù)目不同時(shí),平均響應(yīng)時(shí)間隨中轉(zhuǎn)路徑長(zhǎng)度L的變化,分別取中轉(zhuǎn)路徑長(zhǎng)度為5,10,15.對(duì)每一種情況分別做了200次模擬實(shí)驗(yàn),求出拍賣(mài)服務(wù)器在不同情況下的平均響應(yīng)時(shí)間.當(dāng)節(jié)點(diǎn)數(shù)目一定時(shí),平均響應(yīng)時(shí)間會(huì)隨著L的增加而增大.L一定時(shí),平均響應(yīng)時(shí)間會(huì)隨著節(jié)點(diǎn)數(shù)目的增加而增大.由于發(fā)送節(jié)點(diǎn)的增加,轉(zhuǎn)發(fā)信息所需時(shí)間就會(huì)增加,從而會(huì)增大平均響應(yīng)時(shí)間.節(jié)點(diǎn)數(shù)目和平均響應(yīng)時(shí)間呈近似線(xiàn)性關(guān)系,隨著系統(tǒng)中節(jié)點(diǎn)數(shù)目增加,系統(tǒng)也可以穩(wěn)定運(yùn)行. 圖4 平均響應(yīng)時(shí)間-節(jié)點(diǎn)個(gè)數(shù)關(guān)系圖Fig.4 Average response time-number of nodes diagram 圖5給出了隨著節(jié)點(diǎn)總數(shù)的增加,本文所提出的方案和王小麗等人[7]以及Zhang T等人[15]所提出方案的平均響應(yīng)時(shí)間的對(duì)比.本文選取中轉(zhuǎn)路徑長(zhǎng)度為5時(shí)的平均響應(yīng)時(shí)間.王小麗等人[7]分別測(cè)試了Pf=0.25,Pf=0.5和Pf=0.75時(shí)的平均響應(yīng)時(shí)間,選取Pf=0.75時(shí)的平均響應(yīng)時(shí)間.Zhang T等人[15]分別測(cè)試了4個(gè)內(nèi)容塊下MOAC和MRAC的平均響應(yīng)時(shí)間,8個(gè)內(nèi)容塊下MOAC和MRAC的平均響應(yīng)時(shí)間,選取8個(gè)內(nèi)容塊下MRAC的平均響應(yīng)時(shí)間.當(dāng)節(jié)點(diǎn)總數(shù)一樣時(shí),本方案的平均響應(yīng)時(shí)間低于另外兩種方案.隨著節(jié)點(diǎn)總數(shù)的增加,3種方案的平均響應(yīng)時(shí)間隨著節(jié)點(diǎn)總數(shù)增加而增大且呈線(xiàn)性關(guān)系,但是本方案增加的幅度更小,說(shuō)明本方案效率高且有更好的穩(wěn)定性. 圖5 平均響應(yīng)時(shí)間對(duì)比Fig.5 Comparison of average response times 本文提出了一種利用洋蔥路由的匿名在線(xiàn)秘密拍賣(mài)方案.競(jìng)拍過(guò)程中所有節(jié)點(diǎn)和拍賣(mài)服務(wù)器都無(wú)法獲取競(jìng)拍者的位置信息,競(jìng)拍信息只有拍賣(mài)服務(wù)器能夠解密得到.實(shí)驗(yàn)表明,該方案可以支持網(wǎng)絡(luò)中多個(gè)競(jìng)拍者順利完成拍賣(mài),系統(tǒng)平均響應(yīng)時(shí)間隨節(jié)點(diǎn)數(shù)量增長(zhǎng)而近似呈線(xiàn)性緩慢增長(zhǎng),具有較好的穩(wěn)定性和可擴(kuò)展性.洋蔥路徑選擇是隨機(jī)的,不依賴(lài)于特定的節(jié)點(diǎn),因此方案具有較好的健壯性.下一步研究是對(duì)方案如何改進(jìn)來(lái)提高通信效率.3 協(xié)議分析
3.1 匿名性
3.2 匿名度計(jì)算
3.3 本方案的優(yōu)越性
4 實(shí)驗(yàn)結(jié)果及分析
4.1 實(shí)驗(yàn)環(huán)境及參數(shù)配置
4.2 實(shí)驗(yàn)結(jié)果及分析
4.3 對(duì)比試驗(yàn)
5 結(jié)束語(yǔ)