專(zhuān)利名稱(chēng):用于使用密鑰密碼術(shù)實(shí)現(xiàn)消息的匿名通信的系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳送系統(tǒng),其中,多個(gè)發(fā)送者傳送消息到一個(gè)接收者,并且該消息是秘密且匿名的,更具體地,本發(fā)明涉及一種用于使用密鑰密碼術(shù)實(shí)現(xiàn)消息的匿名通信的系統(tǒng)。
背景技術(shù):
目前提出的保密通信系統(tǒng)由密鑰(也稱(chēng)為對(duì)稱(chēng)密鑰)密碼或者由公鑰(也稱(chēng)為非對(duì)稱(chēng))加密、或者更經(jīng)常地由這兩個(gè)的組合進(jìn)行保護(hù)。一方面,公鑰密碼術(shù)允許分發(fā)以及甚至公布公鑰,而將解密(和簽名)的可能性限制到僅私鑰的所有者。另一方面,密鑰通信在計(jì)算上更高效。而且,只要密鑰仍然是秘密的,則(從密碼學(xué)的觀點(diǎn)來(lái)看)特定類(lèi)型的密鑰加密術(shù),即已知的一次填充(one timepad)就是絕對(duì)安全的。
上面的兩個(gè)方案確保了消息的機(jī)密性。然而,在某些情形如選舉系統(tǒng)或匿名支付系統(tǒng)中,不僅應(yīng)當(dāng)保護(hù)通信的內(nèi)容,還應(yīng)當(dāng)保護(hù)每個(gè)參與者的身份。例如,消息的接收者應(yīng)當(dāng)有可能是(除了發(fā)送者之外)唯一將消息解密的人,而他仍然不可能知道誰(shuí)發(fā)送了該消息。
通常的問(wèn)題在于從消息本身的內(nèi)容中分離關(guān)于發(fā)送者的知識(shí)的困難,即,使消息對(duì)接收者為匿名,同時(shí)對(duì)中間方保密。
在傳統(tǒng)的對(duì)稱(chēng)加密情況中,密鑰被安全地分發(fā)給其它參與者,并且兩個(gè)參與者均保存該相同密鑰的副本。發(fā)送者利用該密鑰將消息加密,并將加密后的消息發(fā)送給接收者。然后,該接收者利用密鑰將消息解密。在此方案中,主要問(wèn)題在于接收者知道誰(shuí)是消息的發(fā)送者。這樣,如果消息是選票,則因?yàn)榻邮照呔哂凶銐虻闹R(shí)以在投票者和他/她的選票之間建立聯(lián)系,所以該選票對(duì)于接收者將不是秘密的。
因此,有必要具有中間代理人。在David Chaum著的文章“UntraceableE1ectronic Mail,Return Addresses,and Digital Pseudonyms(難以追蹤的電子郵件、返回地址和數(shù)字假名)”(Comm.ACM 24,2,1981年2月,84-88)中描述了這種基于公鑰密碼術(shù)的系統(tǒng),其中,作者提出將接收者劃分給不同的代理人。例如,在兩個(gè)代理人的情況下,發(fā)送者將其使用一系列公鑰加密的加密消息傳送給代理人1,該代理人1只使用他的私鑰將該消息解密,進(jìn)而又將結(jié)果發(fā)送給代理2,而不告訴后者發(fā)送者的身份(如圖0.3所示)。
相同的策略可以擴(kuò)展到很多代理人。因?yàn)橹虚g代理人只能將公鑰傳遞給發(fā)送者而不能將消息解密,因此在不是所有代理都串通的情況下,該系統(tǒng)將實(shí)現(xiàn)匿名性。但是此系統(tǒng)也具有公鑰加密的典型缺陷,即-它缺乏絕對(duì)安全的協(xié)議(對(duì)于選舉,這將成為爭(zhēng)議)-它在計(jì)算方面要求苛刻-如上所述,由于人們可以查驗(yàn)(prove)其選票,因此它不能防止買(mǎi)選票。
-它不能僅由人執(zhí)行,換句話說(shuō),它在所有情況中都強(qiáng)制使用電子設(shè)備。
反之,如果使用密鑰,則給出發(fā)送者密鑰而使得接收者不知道發(fā)送者的身份但可以將消息解密而中間代理人則不可以的問(wèn)題仍然存在。這樣,在兩個(gè)代理人的情況下,第一代理人將密鑰給予第二代理人,隨后這個(gè)代理人添加他自己的密鑰,并將該密鑰轉(zhuǎn)發(fā)給用戶(hù)。然后,用戶(hù)將他的選票加密兩次,一次利用第一代理人的密鑰,并用第二代理人的密鑰將結(jié)果再次加密,并且,最后將加密兩次的消息發(fā)送給第二代理人?,F(xiàn)在,由于第二代理人已經(jīng)發(fā)送了兩個(gè)密鑰,因此他能夠用這兩個(gè)密鑰將結(jié)果解密,并因此建立內(nèi)容與發(fā)送者之間的聯(lián)系。這是除可不通過(guò)加密手段來(lái)確保機(jī)密性的時(shí)候以外密鑰加密和投票的主要問(wèn)題。
為了避免上面的問(wèn)題,兩個(gè)代理人均可將他們各自的密鑰獨(dú)立地發(fā)送給用戶(hù)。發(fā)送者將用兩個(gè)密鑰把他/她的消息加密,并將加密后的消息首先發(fā)送給第一代理人,該第一代理人隨后將利用其密鑰將消息解密,然后將部分解密的消息轉(zhuǎn)發(fā)給第二代理人,該第二代理人隨后將解密和讀取該消息。不幸的是,保密的問(wèn)題還沒(méi)有解決,而只不過(guò)是轉(zhuǎn)移到了既知道該消息(他將該消息解密)又知道其發(fā)送者(以前他曾將他的密鑰分發(fā)給發(fā)送者)的第二代理人。
發(fā)明內(nèi)容
因此,本發(fā)明的主要目的是提供一種使得能夠?qū)崿F(xiàn)從多個(gè)發(fā)送者到一個(gè)接收者的消息的匿名通信的系統(tǒng)。
本發(fā)明的另一目的是提供一種適于選舉的系統(tǒng),其中,由于有中間受托人,因此對(duì)接收選票的接收者保持每個(gè)投票者的匿名性。
因此,本發(fā)明涉及一種用于實(shí)現(xiàn)從多個(gè)發(fā)送者到一個(gè)接收者的消息的匿名通信的系統(tǒng),其中,利用通過(guò)合并若干中間受托人(trustee)的密鑰獲得的發(fā)送者密鑰來(lái)將發(fā)送者發(fā)送的消息加密。中間受托人根據(jù)k-1列,而每列j具有k+1-j個(gè)受托人從而導(dǎo)致等于(k-1)(k+2)/2的受托人總數(shù)目的數(shù)目進(jìn)行布置。列j的每個(gè)受托人將特定的密鑰發(fā)送給列j-1中的相同行的對(duì)應(yīng)受托人,例外的是,行k+1-j的受托人將特定密鑰發(fā)送給列j-1中相同行的對(duì)應(yīng)受托人、并將特定密鑰發(fā)送給列j-1中行k+2-j的受托人,由此發(fā)送者從列1的k個(gè)受托人中的每個(gè)受托人接收密鑰,該發(fā)送者密鑰是從第一列的受托人接收的所有密鑰的合并。
通過(guò)閱讀以下結(jié)合附圖的對(duì)本發(fā)明的更具體的描述,將更好地理解本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn),其中圖1表示根據(jù)本發(fā)明的包括3個(gè)受托人的系統(tǒng)中的密鑰分發(fā);圖2表示根據(jù)本發(fā)明的包括3個(gè)受托人的系統(tǒng)中的消息解密;圖3表示根據(jù)本發(fā)明的包括6個(gè)受托人的系統(tǒng)中的密鑰分發(fā);圖4表示根據(jù)本發(fā)明的包括6個(gè)受托人的系統(tǒng)中的消息解密;圖5表示根據(jù)本發(fā)明的包括布置在根據(jù)本發(fā)明原理的矩陣中的k(k+1)/2個(gè)受托人的系統(tǒng)中的密鑰分發(fā);圖6表示包括布置在根據(jù)本發(fā)明原理的矩陣中的k(k+1)/2個(gè)受托人的系統(tǒng)中的消息解密;圖7A至7F表示包括6個(gè)受托人的系統(tǒng),其中,在幾個(gè)受托人之間存在串通,該串通在一些情況(圖7A、圖7C和圖7E)中有害,而在其它情況(圖7B、圖7D和圖7F)中無(wú)害;以及圖8是示出根據(jù)本發(fā)明的用于一般選舉的具有3個(gè)受托人的系統(tǒng)中涉及的步驟次序的圖。
具體實(shí)施例方式
本發(fā)明的原理是將受托人和最后的接收者組織成受托人的行和列。消息仍然保持利用來(lái)自其它行或受托人的密鑰加密,使得沒(méi)有受托人能夠訪問(wèn)其中的明文,由此滿(mǎn)足了匿名性的要求。
在以下描述中,符號(hào)“°”表示利用組成表達(dá)式第二部分的密鑰對(duì)該表達(dá)式第一部分進(jìn)行的對(duì)稱(chēng)加密。在優(yōu)選實(shí)施例中,利用密鑰進(jìn)行的加密是簡(jiǎn)單加法,逐位對(duì)10取模,其具有可交換的優(yōu)點(diǎn)。在此情況中,解密是簡(jiǎn)單的減法對(duì)10取模。但是,本發(fā)明以相同的方式適用于可交換的所有加密術(shù),如Vernam密碼中的Xor函數(shù)。不可交換的對(duì)稱(chēng)加密(如DES和AES)也可以使用,但是它要求用戶(hù)以正確的順序使用所有對(duì)稱(chēng)密鑰來(lái)將他/她的消息加密。
具有3個(gè)受托人的系統(tǒng)如圖1所示,作為消息接收者的代理人3分別將它們與對(duì)應(yīng)于每個(gè)密鑰(key)的索引(index)一起分別地分發(fā)給代理人1和代理人2。隨后,代理人1和代理人2將他們自己隨機(jī)產(chǎn)生的密鑰和他們從代理人3接收的密鑰合并(這可以是加法,逐位對(duì)10取模),然后將結(jié)果單獨(dú)地發(fā)送給公民。代理人將他們的密鑰與從代理人3接收的索引一起保存在數(shù)據(jù)庫(kù)中。
現(xiàn)在,該流為*代理人3→代理人1Key3a、indexKey3a*代理人3→代理人2Key3b、indexKey3b*代理人1→公民KeyA=Key3a°Key1*代理人2→公民KeyB=Key3b°Key2必須注意,公民將只接收到兩個(gè)密鑰、他/她甚至不需要注意到每個(gè)密鑰實(shí)際上是來(lái)自不同代理人的密鑰的合并。
公民利用兩個(gè)密鑰將他的消息(在實(shí)施例中,這將是選票)加密。
加密選票=選票°KeyA°KeyB=選票°Key3a°Key1°Key3b°Key2(式1.a)圖2中示出了描述流。首先,公民將他的加密選票(參見(jiàn)式1.a)發(fā)送給代理人1。代理人1將只把他的密鑰Key1施加到該消息上(=將該消息減去他的密鑰Key1),附上key3a的索引,并將結(jié)果和公民的身份標(biāo)識(shí)一起發(fā)送給代理人2。代理人2將只把他的key2施加到消息上,附上key3b的索引,刪除公民的身份標(biāo)識(shí),并將結(jié)果發(fā)送給代理人3。代理人3將使用消息中的索引查找密鑰key3a和key3b,然后將最后的消息解密。
更正式地寫(xiě)為公民→代理人1選票°Key3a°Key1°Key3b°Key2、以及公民身份標(biāo)識(shí)代理人1→代理人2選票°Key3a°Key3b°Key2、以及公民身份標(biāo)識(shí)、index Key3a代理人2→代理人3選票°Key3a°Key3b、index Key3a、index Key3b、無(wú)公民身份標(biāo)識(shí)選票保持機(jī)密的條件是3個(gè)代理人中只有2個(gè)適當(dāng)?shù)乇Wo(hù)了他們的數(shù)據(jù)。第三代理人可以公開(kāi)其全部數(shù)據(jù)。在該極端的情況中,仍然可以由其它代理人來(lái)保護(hù)對(duì)外界的機(jī)密性。
不僅應(yīng)當(dāng)因?yàn)榇砣说陌踩A(chǔ)結(jié)構(gòu),還應(yīng)當(dāng)因?yàn)樗麄儾淮ǖ穆曌u(yù)而選擇代理人。使公眾信服的方式是在存在足夠數(shù)目的審核員的情況下將所有受托人安排在一個(gè)地點(diǎn),并在適當(dāng)?shù)臅r(shí)候密封所使用的硬件或擦除數(shù)據(jù)。
具有6個(gè)受托人的系統(tǒng)圖3圖示在具有6個(gè)代理人的示例模型中如何分發(fā)密鑰。它示出了最初由3行和3列代理人組成的矩陣,但是已經(jīng)省略了具有索引(i,j)而k-j+1小于i的所有代理人。為了有效性,這一省略是適當(dāng)?shù)?。例如位?k,k-1)處的代理人可以直接與消息的最終接收者(位置(1,k)處的“代理人”)串通;這將使位置(1,k)處的代理人之下的所有代理人幾乎不起作用。
對(duì)圖3的解釋類(lèi)似于先前具有3個(gè)受托人的實(shí)施例。該過(guò)程如下代理人f→代理人dKey_fd、indexKey_fd代理人f代理人eKey_fe、indexKey_fe代理人d代理人aKey_fd°Key_da、indexKey_da代理人e代理人bKey_fe°Key_eb、indexKey_eb代理人e代理人cKey_fe°Key_ec、indexKey_ec代理人a公民KeyA=Key_fd°Key_da°Key_a代理人b公民KeyB=Key_fe°Key_eb°Key_b代理人c公民KeyC=Key_fe°Key_ec°Key_c其中,Key_xy從代理人x發(fā)到代理人y的密鑰。
IndexKey_xy與Key_xy一起發(fā)送給代理人y的、x的數(shù)據(jù)庫(kù)中的Key_xy的索引。
必須注意,公民接收兩次Key_fe,一次通過(guò)代理人b接收,一次通過(guò)代理人c接收。這就是為什么在加密階段我們將要求接收后來(lái)被復(fù)制的密鑰的每個(gè)代理人應(yīng)當(dāng)去除多余的密鑰,并把只利用該密鑰加密了一次的消息發(fā)送給列中的下一個(gè)代理人。
圖4示出了在包括6個(gè)受托人的示例中如何將來(lái)自公民的消息解密。該解釋類(lèi)似于在包括3個(gè)受托人的第一實(shí)施例的情況下描述的內(nèi)容。該過(guò)程如下公民→代理人a選票°KeyA°KeyB°KeyC°、以及公民身份標(biāo)識(shí),代理人a→代理人b選票°Key_fd°Key_da°KeyB°KeyC、indexKey_da、以及公民身份標(biāo)識(shí),代理人b→代理人c選票°Key_fd°Key_da°Key_fe°Key_eb°KeyC、indexKey_da、indexKey_eb、以及公民身份標(biāo)識(shí),代理人c→代理人e選票°Key_fd°Key_da°Key_fe°Key_eb°Key_fe°Key_ec、indexKey_da、indexKey_eb、indexKey_ec(無(wú)公民身份標(biāo)識(shí)),代理人e→代理人d選票°Key_fd°Key_da°Key_fe、indexKey_da、indexKey_fe(警告代理人e有必要利用Key_fe解密一次。實(shí)際上,傳遞給代理人e的消息包含利用相同密鑰Key_fe的兩次加密。如果該代理人保持此狀態(tài)不變,則這將允許代理人d對(duì)選票有所了解;最明顯的示例是使用加法對(duì)2取模(Xor)作為加密手段的時(shí)候。在該情況中,Key_fe°Key_fe總是為0;這樣,代理人d將只接收到選票°Key_fd,并且,由于他知道Key_fd,因此他能夠在選票到達(dá)代理人f之前將其解密)。
代理人d→代理人f選票°Key_fd°Key_fe、indexKey_fe、indexKey_fd代理人f可以查找到上面的表達(dá)式中的所有密鑰,因此可以將消息解密并獲得選票。
具有多個(gè)受托人的系統(tǒng)圖5中示出了具有多于6個(gè)受托人或代理人的一般系統(tǒng),其中,代理人i,j是第i行第j列(1≤i,j≤k)上的代理人。
每個(gè)代理人i,j(j=k)(在圖5中的三角形矩陣中,只在最右邊的列中有這樣的代理人,即代理人1,k)將隨機(jī)地產(chǎn)生密鑰,并將它傳遞給他的相鄰代理i,k-1。最右邊列的底層代理人(如已經(jīng)提及的,其為代理人1,k)將隨機(jī)地產(chǎn)生另一個(gè)密鑰,并通過(guò)代理人i+1,k-1傳遞它,其中,在三角形矩陣中,代理人i+1,k-1將是代理人2,k-1。密鑰與它們的索引一起遞送。注意,對(duì)于接收者,存在(k-1)(k+2)/2個(gè)中間受托人。
每個(gè)代理人i,j(j不同于1和k)將
1)從他的相鄰代理人i,j+1接收Key(i,j+1)和Index(i,j+1),并存儲(chǔ)所接收的Index(i,j+1)。
2)隨機(jī)產(chǎn)生新密鑰Key*(i,j)。
3)將索引(i,j)關(guān)聯(lián)到Key*(i,j),并存儲(chǔ)該索引。
4)將Key*(i,j)加到Key(i,j+1)上,并將所得到的Key(i,j)=Key(i,j+1)°Key*(i,j)與該密鑰的索引Index(i,j)一起傳遞給代理人i,j-1。
在三角形矩陣中,底層代理人將隨機(jī)地產(chǎn)生另一個(gè)密鑰,并如上面的步驟2至4所述通過(guò)代理人i+1,j-1來(lái)傳遞它。
每個(gè)代理人i,j(j=1)將*進(jìn)行上面的步驟1至3。
*將Index(i,j)映射到公民的身份標(biāo)識(shí),或者映射到最終將被映射到公民的序列號(hào),其中,Index(i,j)將是Index(i,2)。
*將Key*(i,1)加到Key(i,2)上,并將所得的Key(i,1)=Key*(i,1)°Key(i,2)以安全的且經(jīng)過(guò)認(rèn)證的方式傳遞給用戶(hù)。
圖6圖示在具有相同的多個(gè)代理人的系統(tǒng)中如何將消息解密。
對(duì)于最左邊的列(已經(jīng)將其特定密鑰直接交給客戶(hù)的實(shí)體),換句話說(shuō),每個(gè)代理人i,j(j=1)將*使用公民的身份標(biāo)識(shí)來(lái)查找Key(i,j)。
*僅利用Key*(i,1)將加密消息解密。
*使用公民的身份標(biāo)識(shí)來(lái)查找在密鑰分發(fā)階段已經(jīng)向其傳遞了密鑰的列2的代理人的索引(通常,這將是Index(i,2))。
*將查找到的索引附到消息上。
*將所得的消息傳遞給該列中下一個(gè)代理人,或者,如果到達(dá)了該列的末尾,則刪除公民身份標(biāo)識(shí),并將所得的消息傳遞給第二列中的代理人。
每個(gè)代理i,j(j不同于k和1)將*從消息中提取Index(i,j),以查找Key*(i,j)。
*僅利用Key*(i,1)將加密消息解密。
*當(dāng)且僅當(dāng)該代理人已經(jīng)將特定密鑰發(fā)送給列j-1的兩個(gè)代理人時(shí),以所接收的第二Index(i,j)重復(fù)上面兩個(gè)步驟。
*使用Index(i,j)來(lái)查找在密鑰分發(fā)階段已經(jīng)向其傳遞了密鑰的下一列j+1處的代理人的索引(通常,這將是Index(i,j+1))。
*將查找到的(列j+1中的代理人的)索引附到消息上。
*從該消息中刪除Index(i,j)。
*當(dāng)且僅當(dāng)該代理人已經(jīng)將特定密鑰發(fā)送給列j-1的兩個(gè)代理人時(shí),利用從列j+1接收的密鑰將消息解密一次,以便如上面所解釋的避免傳遞利用相同密鑰加密了兩次的消息。
*將所得的消息傳遞給該列中的下一個(gè)代理人,或者,如果到達(dá)了該列的末尾,則將所得的消息傳遞給下一列j+1中的代理人。
每個(gè)代理人i,j(j=k)(在圖6的三角形矩陣中,只有一個(gè)這樣的代理人,即代理人1,k)將*從消息中提取Index(i,k)以查找Key*(i,k)。
*利用Key*(i,k)將加密消息解密。
*如果代理人已經(jīng)將特定密鑰發(fā)送給列k-1的兩個(gè)代理人(在三角形矩陣中肯定是這種情況),則以另一個(gè)Index(i+1,k)重復(fù)上面的兩個(gè)步驟,并取回明文消息或選票。
信任要求為了可靠,根據(jù)本發(fā)明的系統(tǒng)必須避免有人能夠建立明文消息及其發(fā)送者之間的聯(lián)系。下文指出代理人的哪種串通破壞了該系統(tǒng)以及哪種串通不足以破壞該系統(tǒng)。盡管在本章中用來(lái)圖示串通的系統(tǒng)是具有6個(gè)受托人或代理人的系統(tǒng),但是很清楚,該原理可以擴(kuò)展到具有任意數(shù)目代理人的系統(tǒng)。在下面的圖中,灰框中的代理人之間存在串通。
在圖7A中,最左邊列的代理人之間存在串通。該最左邊列的代理人知道發(fā)送給用戶(hù)的密鑰,因此,他們合起來(lái)能夠?qū)⑾⒔饷?,并建立與用戶(hù)的聯(lián)系。
在圖7B中,在最左邊列中除一個(gè)以外的所有代理人(代理人b和c)之間存在串通。在這樣的情況中,他們?nèi)匀蝗鄙賹⑾⒔饷芩璧淖詈笠粋€(gè)密鑰。
在圖7C中,最左邊代理人除一個(gè)以外的全部和位置1,2處的代理人(代理人D)之間存在串通。在最左邊的列中,所有的代理人都知道他們接收的密鑰。位置1,2處的代理人知道他必須把什么發(fā)送給位置1,1處的代理人。他們合起來(lái)可以如下將消息解密代理人b引入Key_fe°Key_eb,代理人c引入Key_fe°Key_ec,
代理人d引入Key_fd°Key_da,代理人c將以下信息發(fā)送給代理人e選票°Key_fe°Key_eb°Key_fe°Key_ec°Key_fd°Key_da,使得他們可以使用他們引入的信息來(lái)解密并得到選票。由于在其,代理人b和代理人c均知道公民的名字,使得他們可以建立選票與公民之間的聯(lián)系。
在圖7D中,最左邊實(shí)體除一個(gè)以外的全部和位置(m,2)處的實(shí)體之間存在串通,其中,(m,1)是最左邊的不可靠實(shí)體之一的位置。在此情況中,仍然存在其實(shí)體沒(méi)有公開(kāi)他們的任何秘密的一整行。因此,在任何時(shí)候,消息都將利用Key_fd°Kev_da或Key_da(對(duì)不可靠方)保持加密。
在圖7E中,一個(gè)完整的行已經(jīng)妥協(xié)。因此,可以通過(guò)索引簡(jiǎn)單地建立用戶(hù)與其消息之間的聯(lián)系。
在圖7F中,除最左邊列的代理人之外的所有代理人均已妥協(xié)。但是,由于他們都不知道公民的身份,因此不能建立在消息與用戶(hù)之間的聯(lián)系。
根據(jù)上述內(nèi)容清楚的是,本系統(tǒng)的優(yōu)點(diǎn)是在一方面與用戶(hù)有聯(lián)系并且知曉用戶(hù)的實(shí)體和另一方面可將最終消息解密的實(shí)體之間將實(shí)體分離開(kāi)的可能性、和使用對(duì)稱(chēng)密鑰并且除非上述特定和足夠大的組合否則無(wú)需絕對(duì)信任實(shí)體(的某些組合)的可能性。這使得本系統(tǒng)也適于消息的實(shí)時(shí)(與只能是成批處理的相對(duì))匿名性。
用于一般選舉的實(shí)施例圖8中示出的用于在一般選舉中使用根據(jù)本發(fā)明的系統(tǒng)的方案包括三個(gè)步驟·根據(jù)上述矩陣的密鑰分發(fā),·投票者對(duì)選票的加密和發(fā)送,·根據(jù)上述矩陣對(duì)選票的解密。
保證密鑰保密性的一個(gè)要求是隨機(jī)地產(chǎn)生它們。為了增大可靠程度,可以通過(guò)密碼術(shù)和/或物理地產(chǎn)生并密封若干系列的密鑰。然后,若干審核員可以共同隨機(jī)選擇最終將發(fā)送所述系列的哪一個(gè)。然后,應(yīng)當(dāng)將該系列保持為秘密的,而公開(kāi)/發(fā)布其它系列以供驗(yàn)證。
密鑰的發(fā)送可以通過(guò)像密封紙一樣的不可竊聽(tīng)(untappable)的通道進(jìn)行,或者可以將它們加載到包括JavaCard的智能卡上。
如廣為人知的,密封紙可包含適當(dāng)?shù)耐繉樱员阍试S用戶(hù)核實(shí)密鑰尚未被公開(kāi)。為了避免投票人能夠查驗(yàn)此選票,可以在一疊松散的紙片上將若干密鑰發(fā)送給他/她,其中只有一個(gè)會(huì)包含正確的密鑰。在一張單獨(dú)的紙片上,人們可以指出哪張紙片包含正確的密鑰。所有這些可以在一個(gè)或多于一個(gè)密封信封里發(fā)送。因?yàn)榭梢噪S時(shí)將紙片攪亂,因此任何人都不可能查驗(yàn)他/她的選票(這是個(gè)優(yōu)點(diǎn)),除非從打開(kāi)密封信封的瞬間開(kāi)始在物理上出現(xiàn)脅迫者(coercer)。
投票者可以通過(guò)一次填充或通過(guò)其它對(duì)稱(chēng)加密技術(shù)將選票加密。然后,他將其具有認(rèn)證的加密選票發(fā)送給第一受托人。注意,可以公布該加密選票,以允許投票者驗(yàn)證該選票正確地到達(dá)。
可以通過(guò)讓消息流經(jīng)一起放置在一個(gè)地點(diǎn)的受托人來(lái)進(jìn)行解密,其中,足夠數(shù)目的審核員集中地監(jiān)控所述地點(diǎn)?;蛘撸跃哂腥齻€(gè)受托人為例,將代理人1和代理人2看作投票辦公室(voting office),并規(guī)定代理人3為計(jì)票辦公室(counting office)。流經(jīng)代理人之間的信息應(yīng)當(dāng)保持秘密且完整。確保此狀態(tài)的手段是使用有如物理密封的CD-ROM的密封數(shù)據(jù)載體。當(dāng)硬件不被監(jiān)控時(shí),也可以將其密封,以便防止有人修改或讀取數(shù)據(jù)。
在下面的示例中,有三個(gè)代理人或受托人,即計(jì)票辦公室(代理人1)、國(guó)際組織(代理人2)和當(dāng)?shù)卣?代理人3),以及用于控制投票者的加密選票的公告板(public board)。
步驟1計(jì)票辦公室隨機(jī)且秘密地產(chǎn)生可用于5個(gè)投票者的情況中的密鑰和索引3a
計(jì)票辦公室在不可修改的數(shù)據(jù)載體上存儲(chǔ)并密封這個(gè)表,并將副本發(fā)送給國(guó)際組織。不可修改的數(shù)據(jù)載體可包括以密封的格式打印在紙上,或者存儲(chǔ)在CD-ROM上并隨后將其密封。
步驟2
國(guó)際組織隨機(jī)且秘密地產(chǎn)生他自己的密鑰和索引2
國(guó)際組織在不可修改的數(shù)據(jù)載體上存儲(chǔ)并密封這個(gè)表。
步驟3然后,國(guó)際組織將他自己的密鑰打亂順序(mix)后合并到從計(jì)票辦公室接收的(打亂順序的或未打亂順序的)表中如下打亂順序的國(guó)際組織的表+(在這里也被打亂順序的)計(jì)票辦公室的表=
+
=
最后,把最后的這個(gè)表與最終用戶(hù)的身份標(biāo)識(shí)一起預(yù)先計(jì)劃好,如以下示例所示
在主要的實(shí)現(xiàn)中,索引2將起序列號(hào)的作用,以便應(yīng)付丟失了其密鑰的用戶(hù)。在那些實(shí)現(xiàn)中,所產(chǎn)生的密鑰的數(shù)目將大于用戶(hù)的數(shù)目;每個(gè)用戶(hù)將與一序列號(hào)相關(guān)聯(lián)。如果用戶(hù)丟失了他/她的密鑰,則將使他/她與另一序列號(hào)相關(guān)聯(lián)。
現(xiàn)在,將把密鑰發(fā)送給用戶(hù)。為了做到這一點(diǎn),例如可以將密鑰打印在密封且認(rèn)證過(guò)的信封里發(fā)送,或者例如發(fā)放其上具有密鑰的智能卡。
*Mme Janssens將從國(guó)際組織得到密鑰0。
*Mr Peeters將從國(guó)際組織得到密鑰2。
*Mr Grosjean將從國(guó)際組織得到密鑰6。
*Mme Petitbois將從國(guó)際組織得到密鑰3。
*Mme Van Peteghem將從國(guó)際組織得到密鑰0。
在這一步驟中,可以從上面示出的數(shù)據(jù)中刪除列Keys 2+3a。其它數(shù)據(jù)應(yīng)當(dāng)存儲(chǔ)在密封且不可修改的數(shù)據(jù)載體上。
步驟4計(jì)票辦公室隨機(jī)且秘密地產(chǎn)生密鑰和索引3b
計(jì)票辦公室安全地存儲(chǔ)這個(gè)表,并將副本發(fā)送給當(dāng)?shù)卣?br>
步驟5當(dāng)?shù)卣S機(jī)且秘密地產(chǎn)生他自己的密鑰和索引1
步驟6然后,當(dāng)?shù)卣畬⑺约旱拿荑€打亂順序后合并到從計(jì)票辦公室接收的(打亂順序的或未打亂順序的)表中,如下當(dāng)?shù)卣谋?計(jì)票辦公室的表=
+
=
最后,將最后的這個(gè)表與最終用戶(hù)的身份標(biāo)識(shí)一起準(zhǔn)備好,如以下示例所示
此外,如上面在步驟3中所述,可以使用索引Index1作為序列號(hào)。
現(xiàn)在,將把特定密鑰發(fā)送給用戶(hù),如上面在步驟2中所述。
*Mme Janssens將從當(dāng)?shù)卣玫矫荑€6。
*Mr Peeters將從當(dāng)?shù)卣玫矫荑€2。
*Mr Grosjean將從當(dāng)?shù)卣玫矫荑€9。
*Mme Petitbois將從當(dāng)?shù)卣玫矫荑€9。
*Mme Van Peteghem將從當(dāng)?shù)卣玫矫荑€1。
在這一步驟中,可以從上面示出的數(shù)據(jù)中刪除列Keys 1+3a。其它數(shù)據(jù)應(yīng)當(dāng)存儲(chǔ)在密封且不可修改的數(shù)據(jù)載體上。
步驟7用戶(hù)得到如步驟3和步驟6末尾所述的密鑰。例如,Mme Janssens將從國(guó)際組織接收到密鑰0,并從當(dāng)?shù)卣邮盏矫荑€6。
步驟8用戶(hù)遠(yuǎn)程計(jì)算他/她的加密選票。
假設(shè)有4個(gè)候選人1.Jan Jannsen2.Peter Persen3.Bernard Bernardsen4.Julie Junesco
Mme Janssens、Mr Peeters和Mr Grosjean想將票投給2號(hào)候選人,即PeterPersen。其它兩個(gè)投票人將票投給4號(hào)候選人,即Julie Junesco。
如果使用個(gè)人計(jì)算機(jī),則Mme Janssens登錄到(包含javascript的)網(wǎng)頁(yè)上,選擇2號(hào)候選人,并輸入她接收到的兩個(gè)密鑰加上在此進(jìn)行認(rèn)證的信息。Javascript本地計(jì)算2(候選人)加上0(來(lái)自國(guó)際組織的密鑰)加上6(來(lái)自當(dāng)?shù)卣拿荑€)對(duì)10取模,得出8。8是Mme Janssens的加密選票,她將該選票提交到公共布告板網(wǎng)站。
Mr Peeters沒(méi)有使用個(gè)人計(jì)算機(jī)的途經(jīng)。他手工計(jì)算他的選票2+2+2對(duì)10取模=6Mr Peeters使用簡(jiǎn)單的電話(語(yǔ)音響應(yīng))應(yīng)用,(使用一次性密碼和/和聲紋(voice print))進(jìn)行認(rèn)證,并傳送他的加密選票6。
Mr Grosjean也不具有使用個(gè)人計(jì)算機(jī)的途徑。他手工計(jì)算他的選票2+6+9對(duì)10取模=7Mr Grosjean發(fā)送包含他的用戶(hù)Id和一次性密碼以及隨后的加密選票7的SMS。
Mme Petitbois像Mme Janssens一樣使用個(gè)人計(jì)算機(jī)來(lái)投她的選票,在認(rèn)證之后,她提交4(候選人的號(hào)碼)+3+9對(duì)10取模=6Mme Van Peteghem也使用PC來(lái)投她的選票,在認(rèn)證之后,她提交4(候選人的號(hào)碼)+0+1對(duì)10取模=5語(yǔ)音響應(yīng)系統(tǒng)、網(wǎng)站和SMS網(wǎng)關(guān)都更新相同的公共布告板。
步驟9和10公共布告板收集到以下選票
公民可以用多種方式驗(yàn)證是否正確列出了加密選票網(wǎng)站、語(yǔ)音服務(wù)器、通過(guò)SMS發(fā)出的請(qǐng)求。在這里,為了驗(yàn)證而進(jìn)行的認(rèn)證不是必需的。
步驟11在當(dāng)?shù)卣那疤嵯?,查找密鑰1。
對(duì)于Mme Van Peteghemindex1=5key1=7。
5(加密選票)-7(密鑰)對(duì)10取模=8。8是部分解密的選票。
當(dāng)?shù)卣€查找針對(duì)Mme Van Peteghem的Index 3b=1。
所以,對(duì)于Mme Van Peteghem,將存儲(chǔ)以下數(shù)據(jù)Mme Van Peteghem,8,Index 3b=1同樣,對(duì)于其它投票者,將存儲(chǔ)以下數(shù)據(jù)*Mme Petitbois,8,Index 3b=2*Mr Grosjean,6,Index 3b=5*Mme Janssens,4,Index 3b=4*Mr Peeters,2,Index 3b=3結(jié)果當(dāng)?shù)卣畬⑾旅娴臄?shù)據(jù)秘密地發(fā)送給國(guó)際組織
注意當(dāng)?shù)卣畬?duì)投票意向毫不知情。對(duì)于當(dāng)?shù)卣?,甚至部分解密的選票也仍然是被牢不可破地加密的;實(shí)際上,那些部分解密的消息保持加密所利用的密鑰之一是當(dāng)?shù)卣肋h(yuǎn)不會(huì)得到的密鑰3a。
步驟12在國(guó)際組織的前提下,查找密鑰2。
對(duì)于Mme Van Peteghemindex2=4key2=0。
8(來(lái)自當(dāng)?shù)卣牟糠纸饷艿倪x票)-0對(duì)10取模=8。8是國(guó)際組織解密后的部分解密的選票。通過(guò)訪問(wèn)它所存儲(chǔ)的表,國(guó)際組織還發(fā)現(xiàn)Index 3a=2結(jié)果國(guó)際組織將為Mme Van Peteghem而向計(jì)票辦公室發(fā)送消息8,Index 3b=1,Index 3a=2而不提及他的名字,并打亂消息的順序,使得不能通過(guò)查看行號(hào)碼推導(dǎo)出投票者的身份。
出于以后審核的目的,將打亂行順序的方式也存儲(chǔ)在不可修改的數(shù)據(jù)載體中并將其密封。
下面是國(guó)際組織的這種打亂順序方式的示例
在這樣打亂順序之后,國(guó)際組織將以下消息發(fā)送給計(jì)票辦公室
注意國(guó)際組織也對(duì)投票意向毫不知情。對(duì)于國(guó)際組織,甚至部分解密的選票也仍然是牢不可破地加密的?,F(xiàn)在,它知道索引3b,但不知道密鑰3b本身。
步驟13上面的消息到達(dá)計(jì)票辦公室而沒(méi)有附帶姓名。
對(duì)于第一條消息,計(jì)票辦公室在Index 3b=5中查找密鑰,該密鑰是8。然后,它在Index 3a=1中查找密鑰,該密鑰是3。
3-8-3對(duì)10取模=2同樣,其它消息產(chǎn)生3-1-8對(duì)10取模=43-2-9對(duì)10取模=28-4-0對(duì)10取模=47-8-7對(duì)10取模=2因此,在沒(méi)有任何人知道誰(shuí)將票投給哪位的情況下,投票意向被解密。
在公布上面的最終結(jié)果之前,再次隨機(jī)地打亂行順序。
例如,如果打亂順序的方式如下
然后將秘密地存儲(chǔ)上面打亂順序的表,并且,最后發(fā)布的解密選票將是
通常,將密鑰、索引和每個(gè)部分解密步驟、以及關(guān)于每次打亂順序的數(shù)據(jù)寫(xiě)入到不可修改且密封的數(shù)據(jù)載體上,以允許以后審核。
步驟14對(duì)上面的消息計(jì)數(shù),并產(chǎn)生以下結(jié)果1.Jan Jannsen0票2.Peter Persen3票3.Bernard Bernardsen0票4.Julie Junesco2票通過(guò)隨機(jī)選擇是否進(jìn)行以下操作來(lái)進(jìn)行審核-向不具有對(duì)國(guó)際組織和計(jì)票辦公室處的數(shù)據(jù)的訪問(wèn)權(quán)的審核員披露(reveal)-存儲(chǔ)在當(dāng)?shù)卣幍拿荑€Key1和索引-發(fā)送給國(guó)際組織的消息或-向不具有對(duì)當(dāng)?shù)卣陀?jì)票辦公室處的數(shù)據(jù)的訪問(wèn)權(quán)的審核員披露-從當(dāng)?shù)卣邮盏南?存儲(chǔ)在國(guó)際組織處的密鑰Key2和索引-國(guó)際組織的打亂順序的表
-發(fā)送給計(jì)票辦公室的消息或-向不具有對(duì)當(dāng)?shù)卣蛧?guó)際組織處的數(shù)據(jù)的訪問(wèn)權(quán)的審核員披露-從國(guó)際組織接收的消息-存儲(chǔ)在計(jì)票辦公室處的密鑰3a和3b以及索引-計(jì)票辦公室的打亂順序的表-以便與所公布的解密選票的最后列表相比較。
權(quán)利要求
1.一種用于實(shí)現(xiàn)從多個(gè)發(fā)送者到一個(gè)接收者的消息匿名通信的系統(tǒng),其中利用通過(guò)合并若干中間受托人的密鑰獲得的發(fā)送者密鑰來(lái)將發(fā)送者發(fā)送的消息加密;其特征在于所述受托人可以根據(jù)k-1列,而每列j具有k+1-j個(gè)受托人從而導(dǎo)致等于(k-1)(k+2)/2的中間受托人總數(shù)目的數(shù)目進(jìn)行布置,列j的每個(gè)受托人將特定密鑰發(fā)送給列j-1中相同行的對(duì)應(yīng)受托人,例外的是,行k+1-j的受托人將特定密鑰發(fā)送給列j-1中相同行的對(duì)應(yīng)受托人,并將特定密鑰發(fā)送給列j-1中行k+2-j的受托人,由此,所述發(fā)送方從列1的k個(gè)受托人中的每個(gè)受托人接收密鑰,所述發(fā)送者密鑰是從所述第一列的受托人接收的所有密鑰的合并。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中,由列j的受托人發(fā)送給列j-1的受托人的所述特定密鑰是從列j+1的受托人接收到的密鑰和隨機(jī)產(chǎn)生的密鑰的合并,并且,由此與所述特定密鑰一起發(fā)送索引,所述特定密鑰及其對(duì)應(yīng)索引存儲(chǔ)在數(shù)據(jù)庫(kù)中,使得當(dāng)所述索引被發(fā)送回所述受托人時(shí)可以找出所述特定密鑰。
3.根據(jù)權(quán)利要求2的系統(tǒng),其中,所述發(fā)送者在利用所述從所述第一列的受托人接收的所有密鑰的合并將所述消息加密之后,將該消息發(fā)送回所述第一列的第一受托人,所述第一受托人使用由所述第一受托人存儲(chǔ)的特定密鑰將所述加密消息解密,并且其中,將由所述第一受托人解密的所述消息發(fā)送給相同列的第二受托人,該第二受托人通過(guò)使用由所述第二受托人存儲(chǔ)的特定密鑰將該消息解密,所述被解密了兩次的消息被發(fā)送給相同列的后面的受托人,該后面的受托人利用其特定密鑰將該消息解密,如此進(jìn)行下去,直到所述第一列的最后一個(gè)受托人為止,并且,其中所述第一列的所述最后一個(gè)受托人在利用其特定密鑰進(jìn)行解密之后將部分解密的消息發(fā)送給倒數(shù)第二列的最后一個(gè)受托人,如此進(jìn)行下去,直到相同列的第一受托人為止,其中,該相同列的第一受托人在利用其特定密鑰進(jìn)行解密之后將部分解密的消息發(fā)送給下一列中的受托人序列,如此進(jìn)行下去,直到部分解密的消息被發(fā)送給利用其特定密鑰將其解密以獲得所述消息的所述接收者為止。
4.根據(jù)權(quán)利要求3的系統(tǒng),其中,所述第一列的每個(gè)受托人將發(fā)送者身份標(biāo)識(shí)和部分解密的消息一起發(fā)送給相同列的相鄰受托人,使得每個(gè)受托人可以查明為所述發(fā)送者使用了哪個(gè)特定密鑰。
5.根據(jù)權(quán)利要求4的系統(tǒng),其中,除所述最后一列以外的每一列的每個(gè)受托人將與特定密鑰相關(guān)的索引和部分解密的消息一起發(fā)送給相同或相鄰列的受托人,使得每個(gè)受托人可以查明為所述發(fā)送者使用了哪個(gè)特定密鑰。
6.根據(jù)權(quán)利要求1至5中任何一項(xiàng)的系統(tǒng),其中,所述特定密鑰的合并是加法逐位對(duì)10取模。
7.根據(jù)權(quán)利要求6的系統(tǒng),其中,每個(gè)受托人使用其特定密鑰對(duì)部分解密消息的解密包括從所述解密消息中逐位減去所述特定密鑰并對(duì)10取模。
8.根據(jù)權(quán)利要求6的系統(tǒng),用于一般的選舉,并且其中,所述發(fā)送者是將選票作為消息發(fā)送給所述接收者的投票者,由此相對(duì)于所述接收者保持所述投票者的匿名性。
9.根據(jù)權(quán)利要求8的系統(tǒng),其中,存在兩個(gè)中間受托人,其每一個(gè)都從所述接收者接收特定密鑰,并給所述投票者提供這樣的密鑰,該密鑰是從所述接收者接收的所述特定密鑰和它們自己的密鑰的合并,所述投票者的選票用從所述兩個(gè)中間受托人接收的特定密鑰的合并進(jìn)行加密。
10.根據(jù)權(quán)利要求9的系統(tǒng),其中,所述兩個(gè)中間受托人之一是國(guó)際組織,而另一個(gè)是當(dāng)?shù)卣怼?br>
全文摘要
一種用于實(shí)現(xiàn)從多個(gè)發(fā)送者到一個(gè)接收者的消息匿名通信的系統(tǒng),其中利用通過(guò)合并若干中間受托人的密鑰獲得的發(fā)送者密鑰來(lái)將發(fā)送者發(fā)送的消息加密。受托人根據(jù)k-1列,而每列j具有k+1-j個(gè)受托人從而導(dǎo)致等于(k-1)(k+2)/2的中間受托人總數(shù)目的數(shù)目進(jìn)行布置。列j的每個(gè)受托人將特定密鑰發(fā)送給列j-1中相同行的對(duì)應(yīng)受托人,例外的是,行k+1-j的受托人將特定密鑰發(fā)送給列j-1中相同行的對(duì)應(yīng)受托人,并將特定密鑰發(fā)送給列j-1中行k+2-j的受托人,由此,發(fā)送者從列1的k個(gè)受托人中的每個(gè)受托人接收密鑰,該發(fā)送者密鑰是從第一列的受托人接收的所有密鑰的合并。
文檔編號(hào)H04L9/08GK1661957SQ20051005093
公開(kāi)日2005年8月31日 申請(qǐng)日期2005年2月24日 優(yōu)先權(quán)日2004年2月27日
發(fā)明者伯納德·范阿克, 弗蘭克·塞利格, 安娜·馬里諾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司