一種不需可信第三方的匿名提交系統(tǒng)的制作方法
【專利說明】—種不需可信第三方的匿名提交系統(tǒng)
[0001]
技術(shù)領(lǐng)域
[0002]本發(fā)明涉及匿名通信和數(shù)據(jù)匿名技術(shù)領(lǐng)域,具體是一種不需可信第三方的匿名提交系統(tǒng)。
【背景技術(shù)】
[0003]匿名提交或者匿名發(fā)布是人們一貫以來的一個(gè)需求。在現(xiàn)實(shí)環(huán)境下,人們通過傳遞小紙條和投信入信箱(如部門的舉報(bào)箱)的方式來匿名的表達(dá)和傳遞信息。在數(shù)字世界中,匿名做起來難的多,因?yàn)閿?shù)字通信總是有跡可循。隨著互聯(lián)網(wǎng)的興起,各商業(yè)公司和國(guó)防機(jī)構(gòu)也在探索這個(gè)領(lǐng)域。由于對(duì)匿名強(qiáng)度的需求不同,所以在不同的應(yīng)用場(chǎng)景下產(chǎn)生了不同的匿名方案。
[0004]現(xiàn)有的技術(shù)方案總體上分兩類。一類是通過可信的第三方的參與,由可信的第三方轉(zhuǎn)交通信內(nèi)容而不泄露消息來源信息?,F(xiàn)在普通民眾所使用的商業(yè)機(jī)構(gòu)提供的服務(wù)都屬于這類。如“秘密”app、QQ的匿名聊天、人人的樹洞等。此類應(yīng)用隱去了通信人的身份信息,其他通信過程不變。效果上,只是一種非嚴(yán)格的匿名,因?yàn)樗擞卸喾N辦法可以使得客戶端的身份信息被泄露,諸如提供服務(wù)的第三方被黑客利用了漏洞,客戶端的網(wǎng)絡(luò)路由被黑客監(jiān)聽,甚至第三方主動(dòng)泄露。使用此類方法,依賴于對(duì)第三方的信任,并且第三方除了不主動(dòng)泄露信息外而且還要提供的是確實(shí)安全的服務(wù)。
[0005]第二類是技術(shù)手段上的匿名,不依靠可信第三方的參與。目前投入實(shí)用的有TOR系統(tǒng)和I2P系統(tǒng)(后者是前者的一個(gè)升級(jí))。安裝有tor軟件的全球所有客戶端連接成為一個(gè)宏大的匿名網(wǎng)絡(luò)??蛻舳送ㄟ^tor匿名網(wǎng)絡(luò)連接到任何網(wǎng)站,而不會(huì)暴露自己的實(shí)際IP地址。tor軟件的關(guān)鍵技術(shù)是訪問路由選擇,由客戶端端自動(dòng)選擇路由,每個(gè)tor節(jié)點(diǎn)只知道某個(gè)數(shù)據(jù)包的上一節(jié)點(diǎn)和下一節(jié)點(diǎn),不知道數(shù)據(jù)包的源地址和目的地址。從而做到了不需信任第三方的匿名。技術(shù)效果上,安全性很高,也是比較出色的一個(gè)方案。安全的條件是安裝有tor軟件的各個(gè)客戶端是不合謀攻擊的。除非某個(gè)機(jī)構(gòu)掌握了很多個(gè)tor客戶端,才能獲得來源?目息。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問題是提供一種不需可信第三方的匿名提交系統(tǒng),即使在客戶端的所有出入流量都被監(jiān)聽的情況下仍然是安全的,且本發(fā)明能夠在用戶數(shù)量不是太多小型網(wǎng)絡(luò)環(huán)境下適用。
[0007]本發(fā)明的技術(shù)方案為:
一種不需可信第三方的匿名提交系統(tǒng),包括有一個(gè)用于接收消息的服務(wù)器端和若干個(gè)用于發(fā)送匿名消息的客戶端,所述的若干個(gè)客戶端圍成一個(gè)邏輯上的圈,即任一客戶端均有兩個(gè)相鄰的客戶端;所述的圈內(nèi)相鄰的兩個(gè)客戶端共享一個(gè)秘密隨機(jī)序列,即每個(gè)客戶端享有兩個(gè)秘密隨機(jī)序列;當(dāng)任一客戶端需要發(fā)送匿名消息時(shí),分別在自身的兩個(gè)秘密隨機(jī)序列中取一段與需要發(fā)送的匿名消息進(jìn)行異或運(yùn)算,最后將異或的結(jié)果發(fā)送給服務(wù)器端,其它不需要發(fā)送匿名消息的客戶端也從自身兩個(gè)秘密隨機(jī)序列中各選取一段進(jìn)行異或運(yùn)算,并將異或結(jié)果發(fā)送給服務(wù)器端,服務(wù)器端把若干個(gè)客戶端發(fā)送過來的消息進(jìn)行異或運(yùn)算后,即得到發(fā)送的匿名消息;其中,共享一個(gè)秘密隨機(jī)序列的兩個(gè)客戶端選取的一段相同。
[0008]所述的秘密隨機(jī)序列為一個(gè)足夠長(zhǎng)的二進(jìn)制比特序列,每次選取定長(zhǎng)的一段參與異或運(yùn)算,使用后則拋棄用過的一段。
[0009]所述的任一客戶端的兩個(gè)序列生成的步驟為:首先若干個(gè)客戶端均向服務(wù)器端發(fā)起TCP連接,以服務(wù)端為中介,相鄰的兩個(gè)客戶端之間進(jìn)行密鑰交換,每個(gè)客戶端得到兩個(gè)秘密數(shù),以這兩個(gè)秘密數(shù)作種子,使用密碼學(xué)安全的偽隨機(jī)數(shù)生成算法分別生成對(duì)應(yīng)的兩個(gè)秘密隨機(jī)序列。
[0010]密鑰交換即服務(wù)器端接收若干個(gè)客戶端的公鑰,任一客戶端接收服務(wù)器發(fā)送的相鄰的兩個(gè)客戶端的公鑰并與自己的私鑰通過運(yùn)算得到兩個(gè)與對(duì)應(yīng)的特定客戶端共享的秘密數(shù)。
[0011]所述的匿名消息以ASIIC碼的形式構(gòu)成第三個(gè)比特序列,與客戶端兩個(gè)秘密隨機(jī)序列的一段進(jìn)行異或運(yùn)算,得到一個(gè)最終的二進(jìn)制比特序列,作為發(fā)送給服務(wù)器端的報(bào)文。
[0012]所述的客戶端發(fā)送的報(bào)文的開頭均維護(hù)一個(gè)遞增的序列號(hào),服務(wù)器端對(duì)相同序列號(hào)的所有客戶端發(fā)送的報(bào)文進(jìn)行異或運(yùn)算,得到此次通訊的最終結(jié)果一如果異或結(jié)果是0,表示沒有客戶端傳遞了消息,結(jié)果非0則進(jìn)行譯碼,寫入日志,供服務(wù)器端使用者查看。
[0013]所述的服務(wù)器返回得到的所有消息的摘要值給各個(gè)客戶端,當(dāng)客戶端發(fā)現(xiàn)自己發(fā)送出去的消息沒有體現(xiàn)在返回的摘要中,則證明由于沖突等原因沒有發(fā)送成功,等待隨機(jī)的時(shí)間片間隔后再次發(fā)送。
[0014]本發(fā)明的有益效果為:
在互聯(lián)網(wǎng)絡(luò)中的匿名不可能做到絕對(duì)的,都是基于一定的條件下。本方案著重于盡可能的減少條件的依賴,強(qiáng)調(diào)匿名的可靠性和安全性。
[0015]現(xiàn)有各種匿名手段安全性依賴的條件有以下幾種:(1)、可信的第三方(托管方不會(huì)主動(dòng)或被動(dòng)泄露客戶端的信息);(2)、服務(wù)提供方不被黑客攻擊(即使不完全相關(guān)的諸如服務(wù)日志之類也能得到部分信息);(3)、客戶端出入流量不被監(jiān)控(現(xiàn)有幾乎所有用于匿名的技術(shù)都不能不依賴這點(diǎn),而在局域網(wǎng)環(huán)境下的管理員或者攻入了家庭路由器的黑客很容易能夠不被發(fā)覺的做到這點(diǎn));(4)、軟件的其他使用者是可信的(諸如TOR網(wǎng)絡(luò)和I2P網(wǎng)絡(luò),使用多個(gè)假的節(jié)點(diǎn)可以獲取到一部分信息)
本發(fā)明在所有客戶端服務(wù)端的出入流量被監(jiān)控情況下,攻擊者也無法得到關(guān)于消息來源的有用信息。在任意多個(gè)客戶端合謀的情況下,本發(fā)明亦能保證匿名的可靠性。只有在服務(wù)端與某客戶端A邏輯上相鄰的兩個(gè)客戶端合謀的情況下,客戶端A的信息才會(huì)泄露。而客戶端使用者是知道并且通過數(shù)字簽名驗(yàn)證了自己的“鄰居”是誰的,從而他能在相信這兩個(gè)人不會(huì)是間諜的情況下再發(fā)送敏感的匿名消息。
【具體實(shí)施方式】
[0016]—種Perl編程實(shí)現(xiàn)的本發(fā)明的【具體實(shí)施方式】,部署在一個(gè)服務(wù)端和若干個(gè)客戶端的小型網(wǎng)絡(luò)中,以后臺(tái)進(jìn)程的形式存在于各個(gè)客戶端和服務(wù)端。流程主要分為兩部分,初始化過程和工作過程。其中初始化用來喚醒進(jìn)程執(zhí)行并協(xié)商出執(zhí)行的參數(shù),工作過程在初始化之后開始在后臺(tái)定期執(zhí)行。整體的通訊支持上,使用Perl強(qiáng)大的用于事件驅(qū)動(dòng)編程的庫AnyEvent,具有非常優(yōu)異的性能,使得本發(fā)明可靠且易于維護(hù)。
[0017](1)、客戶端初始化:
a、若干個(gè)客戶端分別向服務(wù)器端發(fā)起TCP連接,通過使用10:: Socket模塊;
b、客戶端之間執(zhí)行Diffie-Hellman密鑰交換,得到的秘密數(shù)作為偽隨機(jī)算法的種子; 其中,Diffie-Hellman算法所需的p和g (模數(shù)和原根)作為參數(shù)在協(xié)議中公有,此參數(shù)手動(dòng)生成,采用512