首页> 中国专利> 用于使用密钥密码术实现消息的匿名通信的系统

用于使用密钥密码术实现消息的匿名通信的系统

摘要

一种用于实现从多个发送者到一个接收者的消息匿名通信的系统,其中利用通过合并若干中间受托人的密钥获得的发送者密钥来将发送者发送的消息加密。受托人根据k-1列,而每列j具有k+1-j个受托人从而导致等于(k-1)(k+2)/2的中间受托人总数目的数目进行布置。列j的每个受托人将特定密钥发送给列j-1中相同行的对应受托人,例外的是,行k+1-j的受托人将特定密钥发送给列j-1中相同行的对应受托人,并将特定密钥发送给列j-1中行k+2-j的受托人,由此,发送者从列1的k个受托人中的每个受托人接收密钥,该发送者密钥是从第一列的受托人接收的所有密钥的合并。

著录项

  • 公开/公告号CN1661957A

    专利类型发明专利

  • 公开/公告日2005-08-31

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200510050937.0

  • 申请日2005-02-24

  • 分类号H04L9/00;

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人邸万奎;黄小临

  • 地址 美国纽约州

  • 入库时间 2023-12-17 16:29:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-02-18

    未缴年费专利权终止 IPC(主分类):H04L9/00 授权公告日:20090513 终止日期:20190224 申请日:20050224

    专利权的终止

  • 2009-05-13

    授权

    授权

  • 2005-10-26

    实质审查的生效

    实质审查的生效

  • 2005-08-31

    公开

    公开

说明书

技术领域

本发明涉及数据传送系统,其中,多个发送者传送消息到一个接收者,并且该消息是秘密且匿名的,更具体地,本发明涉及一种用于使用密钥密码术实现消息的匿名通信的系统。

背景技术

目前提出的保密通信系统由密钥(也称为对称密钥)密码或者由公钥(也称为非对称)加密、或者更经常地由这两个的组合进行保护。一方面,公钥密码术允许分发以及甚至公布公钥,而将解密(和签名)的可能性限制到仅私钥的所有者。另一方面,密钥通信在计算上更高效。而且,只要密钥仍然是秘密的,则(从密码学的观点来看)特定类型的密钥加密术,即已知的一次填充(one timepad)就是绝对安全的。

上面的两个方案确保了消息的机密性。然而,在某些情形如选举系统或匿名支付系统中,不仅应当保护通信的内容,还应当保护每个参与者的身份。例如,消息的接收者应当有可能是(除了发送者之外)唯一将消息解密的人,而他仍然不可能知道谁发送了该消息。

通常的问题在于从消息本身的内容中分离关于发送者的知识的困难,即,使消息对接收者为匿名,同时对中间方保密。

在传统的对称加密情况中,密钥被安全地分发给其它参与者,并且两个参与者均保存该相同密钥的副本。发送者利用该密钥将消息加密,并将加密后的消息发送给接收者。然后,该接收者利用密钥将消息解密。在此方案中,主要问题在于接收者知道谁是消息的发送者。这样,如果消息是选票,则因为接收者具有足够的知识以在投票者和他/她的选票之间建立联系,所以该选票对于接收者将不是秘密的。

因此,有必要具有中间代理人。在David Chaum著的文章“UntraceableE1ectronic Mail,Return Addresses,and Digital Pseudonyms(难以追踪的电子邮件、返回地址和数字假名)”(Comm.ACM 24,2,1981年2月,84-88)中描述了这种基于公钥密码术的系统,其中,作者提出将接收者划分给不同的代理人。例如,在两个代理人的情况下,发送者将其使用一系列公钥加密的加密消息传送给代理人1,该代理人1只使用他的私钥将该消息解密,进而又将结果发送给代理2,而不告诉后者发送者的身份(如图0.3所示)。

相同的策略可以扩展到很多代理人。因为中间代理人只能将公钥传递给发送者而不能将消息解密,因此在不是所有代理都串通的情况下,该系统将实现匿名性。但是此系统也具有公钥加密的典型缺陷,即:

-它缺乏绝对安全的协议(对于选举,这将成为争议)

-它在计算方面要求苛刻

-如上所述,由于人们可以查验(prove)其选票,因此它不能防止买选票。

-它不能仅由人执行,换句话说,它在所有情况中都强制使用电子设备。

反之,如果使用密钥,则给出发送者密钥而使得接收者不知道发送者的身份但可以将消息解密而中间代理人则不可以的问题仍然存在。这样,在两个代理人的情况下,第一代理人将密钥给予第二代理人,随后这个代理人添加他自己的密钥,并将该密钥转发给用户。然后,用户将他的选票加密两次,一次利用第一代理人的密钥,并用第二代理人的密钥将结果再次加密,并且,最后将加密两次的消息发送给第二代理人。现在,由于第二代理人已经发送了两个密钥,因此他能够用这两个密钥将结果解密,并因此建立内容与发送者之间的联系。这是除可不通过加密手段来确保机密性的时候以外密钥加密和投票的主要问题。

为了避免上面的问题,两个代理人均可将他们各自的密钥独立地发送给用户。发送者将用两个密钥把他/她的消息加密,并将加密后的消息首先发送给第一代理人,该第一代理人随后将利用其密钥将消息解密,然后将部分解密的消息转发给第二代理人,该第二代理人随后将解密和读取该消息。不幸的是,保密的问题还没有解决,而只不过是转移到了既知道该消息(他将该消息解密)又知道其发送者(以前他曾将他的密钥分发给发送者)的第二代理人。

发明内容

因此,本发明的主要目的是提供一种使得能够实现从多个发送者到一个接收者的消息的匿名通信的系统。

本发明的另一目的是提供一种适于选举的系统,其中,由于有中间受托人,因此对接收选票的接收者保持每个投票者的匿名性。

因此,本发明涉及一种用于实现从多个发送者到一个接收者的消息的匿名通信的系统,其中,利用通过合并若干中间受托人(trustee)的密钥获得的发送者密钥来将发送者发送的消息加密。中间受托人根据k-1列,而每列j具有k+1-j个受托人从而导致等于(k-1)(k+2)/2的受托人总数目的数目进行布置。列j的每个受托人将特定的密钥发送给列j-1中的相同行的对应受托人,例外的是,行k+1-j的受托人将特定密钥发送给列j-1中相同行的对应受托人、并将特定密钥发送给列j-1中行k+2-j的受托人,由此发送者从列1的k个受托人中的每个受托人接收密钥,该发送者密钥是从第一列的受托人接收的所有密钥的合并。

附图说明

通过阅读以下结合附图的对本发明的更具体的描述,将更好地理解本发明的上述和其它目的、特征和优点,其中:

图1表示根据本发明的包括3个受托人的系统中的密钥分发;

图2表示根据本发明的包括3个受托人的系统中的消息解密;

图3表示根据本发明的包括6个受托人的系统中的密钥分发;

图4表示根据本发明的包括6个受托人的系统中的消息解密;

图5表示根据本发明的包括布置在根据本发明原理的矩阵中的k(k+1)/2个受托人的系统中的密钥分发;

图6表示包括布置在根据本发明原理的矩阵中的k(k+1)/2个受托人的系统中的消息解密;

图7A至7F表示包括6个受托人的系统,其中,在几个受托人之间存在串通,该串通在一些情况(图7A、图7C和图7E)中有害,而在其它情况(图7B、图7D和图7F)中无害;以及

图8是示出根据本发明的用于一般选举的具有3个受托人的系统中涉及的步骤次序的图。

具体实施方式

本发明的原理是将受托人和最后的接收者组织成受托人的行和列。消息仍然保持利用来自其它行或受托人的密钥加密,使得没有受托人能够访问其中的明文,由此满足了匿名性的要求。

在以下描述中,符号“°”表示利用组成表达式第二部分的密钥对该表达式第一部分进行的对称加密。在优选实施例中,利用密钥进行的加密是简单加法,逐位对10取模,其具有可交换的优点。在此情况中,解密是简单的减法对10取模。但是,本发明以相同的方式适用于可交换的所有加密术,如Vernam密码中的Xor函数。不可交换的对称加密(如DES和AES)也可以使用,但是它要求用户以正确的顺序使用所有对称密钥来将他/她的消息加密。

具有3个受托人的系统

如图1所示,作为消息接收者的代理人3分别将它们与对应于每个密钥(key)的索引(index)一起分别地分发给代理人1和代理人2。随后,代理人1和代理人2将他们自己随机产生的密钥和他们从代理人3接收的密钥合并(这可以是加法,逐位对10取模),然后将结果单独地发送给公民。代理人将他们的密钥与从代理人3接收的索引一起保存在数据库中。

现在,该流为:

*代理人3→代理人1:Key3a、indexKey3a

*代理人3→代理人2:Key3b、indexKey3b

*代理人1→公民:KeyA=Key3a°Key1

*代理人2→公民:KeyB=Key3b°Key2

必须注意,公民将只接收到两个密钥、他/她甚至不需要注意到每个密钥实际上是来自不同代理人的密钥的合并。

公民利用两个密钥将他的消息(在实施例中,这将是选票)加密。

加密选票=选票°KeyA°KeyB=选票°Key3a°Key1°Key3b°Key2(式1.a)

图2中示出了描述流。首先,公民将他的加密选票(参见式1.a)发送给代理人1。代理人1将只把他的密钥Key1施加到该消息上(=将该消息减去他的密钥Key1),附上key3a的索引,并将结果和公民的身份标识一起发送给代理人2。代理人2将只把他的key2施加到消息上,附上key3b的索引,删除公民的身份标识,并将结果发送给代理人3。代理人3将使用消息中的索引查找密钥key3a和key3b,然后将最后的消息解密。

更正式地写为:

公民→代理人1:选票°Key3a°Key1°Key3b°Key2、以及公民身份标识

代理人1→代理人2:选票°Key3a°Key3b°Key2、以及公民身份标识、index Key3a

代理人2→代理人3:选票°Key3a°Key3b、index Key3a、index Key3b、无公民身份标识

选票保持机密的条件是3个代理人中只有2个适当地保护了他们的数据。第三代理人可以公开其全部数据。在该极端的情况中,仍然可以由其它代理人来保护对外界的机密性。

不仅应当因为代理人的安全基础结构,还应当因为他们不串通的声誉而选择代理人。使公众信服的方式是在存在足够数目的审核员的情况下将所有受托人安排在一个地点,并在适当的时候密封所使用的硬件或擦除数据。

具有6个受托人的系统

图3图示在具有6个代理人的示例模型中如何分发密钥。它示出了最初由3行和3列代理人组成的矩阵,但是已经省略了具有索引(i,j)而k-j+1小于i的所有代理人。为了有效性,这一省略是适当的。例如:位置(k,k-1)处的代理人可以直接与消息的最终接收者(位置(1,k)处的“代理人”)串通;这将使位置(1,k)处的代理人之下的所有代理人几乎不起作用。

对图3的解释类似于先前具有3个受托人的实施例。该过程如下:

代理人f→代理人d:Key_fd、indexKey_fd

代理人f代理人e:Key_fe、indexKey_fe

代理人d代理人a:Key_fd°Key_da、indexKey_da

代理人e代理人b:Key_fe°Key_eb、indexKey_eb

代理人e代理人c:Key_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发到代理人y的密钥。

IndexKey_xy:与Key_xy一起发送给代理人y的、x的数据库中的Key_xy的索引。

必须注意,公民接收两次Key_fe,一次通过代理人b接收,一次通过代理人c接收。这就是为什么在加密阶段我们将要求接收后来被复制的密钥的每个代理人应当去除多余的密钥,并把只利用该密钥加密了一次的消息发送给列中的下一个代理人。

图4示出了在包括6个受托人的示例中如何将来自公民的消息解密。该解释类似于在包括3个受托人的第一实施例的情况下描述的内容。该过程如下:

公民→代理人a:选票°KeyA°KeyB°KeyC°、以及公民身份标识,

代理人a→代理人b:选票°Key_fd°Key_da°KeyB°KeyC、indexKey_da、以及公民身份标识,

代理人b→代理人c:选票°Key_fd°Key_da°Key_fe°Key_eb°KeyC、indexKey_da、indexKey_eb、以及公民身份标识,

代理人c→代理人e:选票°Key_fd°Key_da°Key_fe°Key_eb°Key_fe°Key_ec、indexKey_da、indexKey_eb、indexKey_ec(无公民身份标识),

代理人e→代理人d:选票°Key_fd°Key_da°Key_fe、indexKey_da、indexKey_fe(警告:代理人e有必要利用Key_fe解密一次。实际上,传递给代理人e的消息包含利用相同密钥Key_fe的两次加密。如果该代理人保持此状态不变,则这将允许代理人d对选票有所了解;最明显的示例是使用加法对2取模(Xor)作为加密手段的时候。在该情况中,Key_fe°Key_fe总是为0;这样,代理人d将只接收到选票°Key_fd,并且,由于他知道Key_fd,因此他能够在选票到达代理人f之前将其解密)。

代理人d→代理人f:选票°Key_fd°Key_fe、indexKey_fe、indexKey_fd

代理人f可以查找到上面的表达式中的所有密钥,因此可以将消息解密并获得选票。

具有多个受托人的系统

图5中示出了具有多于6个受托人或代理人的一般系统,其中,代理人i,j是第i行第j列(1≤i,j≤k)上的代理人。

每个代理人i,j(j=k)(在图5中的三角形矩阵中,只在最右边的列中有这样的代理人,即代理人1,k)将随机地产生密钥,并将它传递给他的相邻代理i,k-1。最右边列的底层代理人(如已经提及的,其为代理人1,k)将随机地产生另一个密钥,并通过代理人i+1,k-1传递它,其中,在三角形矩阵中,代理人i+1,k-1将是代理人2,k-1。密钥与它们的索引一起递送。注意,对于接收者,存在(k-1)(k+2)/2个中间受托人。

每个代理人i,j(j不同于1和k)将

1)从他的相邻代理人i,j+1接收Key(i,j+1)和Index(i,j+1),并存储所接收的Index(i,j+1)。

2)随机产生新密钥Key*(i,j)。

3)将索引(i,j)关联到Key*(i,j),并存储该索引。

4)将Key*(i,j)加到Key(i,j+1)上,并将所得到的Key(i,j)=Key(i,j+1)°Key*(i,j)与该密钥的索引Index(i,j)一起传递给代理人i,j-1。

在三角形矩阵中,底层代理人将随机地产生另一个密钥,并如上面的步骤2至4所述通过代理人i+1,j-1来传递它。

每个代理人i,j(j=1)将

*进行上面的步骤1至3。

*将Index(i,j)映射到公民的身份标识,或者映射到最终将被映射到公民的序列号,其中,Index(i,j)将是Index(i,2)。

*将Key*(i,1)加到Key(i,2)上,并将所得的Key(i,1)=Key*(i,1)°Key(i,2)以安全的且经过认证的方式传递给用户。

图6图示在具有相同的多个代理人的系统中如何将消息解密。

对于最左边的列(已经将其特定密钥直接交给客户的实体),换句话说,每个代理人i,j(j=1)将:

*使用公民的身份标识来查找Key(i,j)。

*仅利用Key*(i,1)将加密消息解密。

*使用公民的身份标识来查找在密钥分发阶段已经向其传递了密钥的列2的代理人的索引(通常,这将是Index(i,2))。

*将查找到的索引附到消息上。

*将所得的消息传递给该列中下一个代理人,或者,如果到达了该列的末尾,则删除公民身份标识,并将所得的消息传递给第二列中的代理人。

每个代理i,j(j不同于k和1)将

*从消息中提取Index(i,j),以查找Key*(i,j)。

*仅利用Key*(i,1)将加密消息解密。

*当且仅当该代理人已经将特定密钥发送给列j-1的两个代理人时,以所接收的第二Index(i,j)重复上面两个步骤。

*使用Index(i,j)来查找在密钥分发阶段已经向其传递了密钥的下一列j+1处的代理人的索引(通常,这将是Index(i,j+1))。

*将查找到的(列j+1中的代理人的)索引附到消息上。

*从该消息中删除Index(i,j)。

*当且仅当该代理人已经将特定密钥发送给列j-1的两个代理人时,利用从列j+1接收的密钥将消息解密一次,以便如上面所解释的避免传递利用相同密钥加密了两次的消息。

*将所得的消息传递给该列中的下一个代理人,或者,如果到达了该列的末尾,则将所得的消息传递给下一列j+1中的代理人。

每个代理人i,j(j=k)(在图6的三角形矩阵中,只有一个这样的代理人,即代理人1,k)将:

*从消息中提取Index(i,k)以查找Key*(i,k)。

*利用Key*(i,k)将加密消息解密。

*如果代理人已经将特定密钥发送给列k-1的两个代理人(在三角形矩阵中肯定是这种情况),则以另一个Index(i+1,k)重复上面的两个步骤,并取回明文消息或选票。

信任要求

为了可靠,根据本发明的系统必须避免有人能够建立明文消息及其发送者之间的联系。下文指出代理人的哪种串通破坏了该系统以及哪种串通不足以破坏该系统。尽管在本章中用来图示串通的系统是具有6个受托人或代理人的系统,但是很清楚,该原理可以扩展到具有任意数目代理人的系统。在下面的图中,灰框中的代理人之间存在串通。

在图7A中,最左边列的代理人之间存在串通。该最左边列的代理人知道发送给用户的密钥,因此,他们合起来能够将消息解密,并建立与用户的联系。

在图7B中,在最左边列中除一个以外的所有代理人(代理人b和c)之间存在串通。在这样的情况中,他们仍然缺少将消息解密所需的最后一个密钥。

在图7C中,最左边代理人除一个以外的全部和位置1,2处的代理人(代理人D)之间存在串通。在最左边的列中,所有的代理人都知道他们接收的密钥。位置1,2处的代理人知道他必须把什么发送给位置1,1处的代理人。他们合起来可以如下将消息解密:

代理人b引入Key_fe°Key_eb,

代理人c引入Key_fe°Key_ec,

代理人d引入Key_fd°Key_da,

代理人c将以下信息发送给代理人e:

选票°Key_fe°Key_eb°Key_fe°Key_ec°Key_fd°Key_da,使得他们可以使用他们引入的信息来解密并得到选票。由于在其,代理人b和代理人c均知道公民的名字,使得他们可以建立选票与公民之间的联系。

在图7D中,最左边实体除一个以外的全部和位置(m,2)处的实体之间存在串通,其中,(m,1)是最左边的不可靠实体之一的位置。在此情况中,仍然存在其实体没有公开他们的任何秘密的一整行。因此,在任何时候,消息都将利用Key_fd°Kev_da或Key_da(对不可靠方)保持加密。

在图7E中,一个完整的行已经妥协。因此,可以通过索引简单地建立用户与其消息之间的联系。

在图7F中,除最左边列的代理人之外的所有代理人均已妥协。但是,由于他们都不知道公民的身份,因此不能建立在消息与用户之间的联系。

根据上述内容清楚的是,本系统的优点是在一方面与用户有联系并且知晓用户的实体和另一方面可将最终消息解密的实体之间将实体分离开的可能性、和使用对称密钥并且除非上述特定和足够大的组合否则无需绝对信任实体(的某些组合)的可能性。这使得本系统也适于消息的实时(与只能是成批处理的相对)匿名性。

用于一般选举的实施例

图8中示出的用于在一般选举中使用根据本发明的系统的方案包括三个步骤:

·根据上述矩阵的密钥分发,

·投票者对选票的加密和发送,

·根据上述矩阵对选票的解密。

保证密钥保密性的一个要求是随机地产生它们。为了增大可靠程度,可以通过密码术和/或物理地产生并密封若干系列的密钥。然后,若干审核员可以共同随机选择最终将发送所述系列的哪一个。然后,应当将该系列保持为秘密的,而公开/发布其它系列以供验证。

密钥的发送可以通过像密封纸一样的不可窃听(untappable)的通道进行,或者可以将它们加载到包括JavaCard的智能卡上。

如广为人知的,密封纸可包含适当的涂层,以便允许用户核实密钥尚未被公开。为了避免投票人能够查验此选票,可以在一叠松散的纸片上将若干密钥发送给他/她,其中只有一个会包含正确的密钥。在一张单独的纸片上,人们可以指出哪张纸片包含正确的密钥。所有这些可以在一个或多于一个密封信封里发送。因为可以随时将纸片搅乱,因此任何人都不可能查验他/她的选票(这是个优点),除非从打开密封信封的瞬间开始在物理上出现胁迫者(coercer)。

投票者可以通过一次填充或通过其它对称加密技术将选票加密。然后,他将其具有认证的加密选票发送给第一受托人。注意,可以公布该加密选票,以允许投票者验证该选票正确地到达。

可以通过让消息流经一起放置在一个地点的受托人来进行解密,其中,足够数目的审核员集中地监控所述地点。或者,以具有三个受托人为例,将代理人1和代理人2看作投票办公室(voting office),并规定代理人3为计票办公室(counting office)。流经代理人之间的信息应当保持秘密且完整。确保此状态的手段是:使用有如物理密封的CD-ROM的密封数据载体。当硬件不被监控时,也可以将其密封,以便防止有人修改或读取数据。

在下面的示例中,有三个代理人或受托人,即计票办公室(代理人1)、国际组织(代理人2)和当地政府(代理人3),以及用于控制投票者的加密选票的公告板(public board)。

步骤1:

计票办公室随机且秘密地产生可用于5个投票者的情况中的密钥和索引3a:

    Key3a    Index3a    3    1    0    2    7    3    9    4    8    5

计票办公室在不可修改的数据载体上存储并密封这个表,并将副本发送给国际组织。不可修改的数据载体可包括以密封的格式打印在纸上,或者存储在CD-ROM上并随后将其密封。

步骤2:

国际组织随机且秘密地产生他自己的密钥和索引2:

    Key2    Index2    5    1    5    2    1    3    0    4    3    5

国际组织在不可修改的数据载体上存储并密封这个表。

步骤3:

然后,国际组织将他自己的密钥打乱顺序(mix)后合并到从计票办公室接收的(打乱顺序的或未打乱顺序的)表中如下:

打乱顺序的国际组织的表+(在这里也被打乱顺序的)计票办公室的表=

    Key2    Index2    1    3    5    2    3    5    5    1    0    4

                         +

    Key3a    Index3a    9    4    7    3    3    1    8    5    0    2

                            =

    Index2  Keys2+3a    Index3a    3    0    4    2    2    3    5    6    1
    1    3    5    4    0    2

最后,把最后的这个表与最终用户的身份标识一起预先计划好,如以下示例所示:

 投票者    Index2   Keys 2+3a   Index3a Mme Janssens    3   0   4 Mr Peeters    2   2   3 Mr Grosjean    5   6   1 Mme PetitBois    1   3   5 Mme Van Peteghem    4   0   2

在主要的实现中,索引2将起序列号的作用,以便应付丢失了其密钥的用户。在那些实现中,所产生的密钥的数目将大于用户的数目;每个用户将与一序列号相关联。如果用户丢失了他/她的密钥,则将使他/她与另一序列号相关联。

现在,将把密钥发送给用户。为了做到这一点,例如可以将密钥打印在密封且认证过的信封里发送,或者例如发放其上具有密钥的智能卡。

*Mme Janssens将从国际组织得到密钥:0。

*Mr Peeters将从国际组织得到密钥:2。

*Mr Grosjean将从国际组织得到密钥:6。

*Mme Petitbois将从国际组织得到密钥:3。

*Mme Van Peteghem将从国际组织得到密钥:0。

在这一步骤中,可以从上面示出的数据中删除列Keys 2+3a。其它数据应当存储在密封且不可修改的数据载体上。

步骤4:

计票办公室随机且秘密地产生密钥和索引3b

    Key3b    Index3b    4    1    1    2    8    3    2    4
    8    5

计票办公室安全地存储这个表,并将副本发送给当地政府。

步骤5:

当地政府随机且秘密地产生他自己的密钥和索引1:

    Key1    Index1    4    3    4    2    1    1    8    4    7    5

步骤6:

然后,当地政府将他自己的密钥打乱顺序后合并到从计票办公室接收的(打乱顺序的或未打乱顺序的)表中,如下:

当地政府的表+计票办公室的表=

    Key1    Index1    4    3    4    2    1    1    8    4    7    5

                       +

    Key3b    Index3b    2    4    8    3    8    5    1    2    4    1

                              =

    Index1  Keys 1+3a    Index3b    3  6    4
    2    2    3    1    9    5    4    9    2    5    1    1

最后,将最后的这个表与最终用户的身份标识一起准备好,如以下示例所示:

 投票者    Index1   Keys 1+3a   Index3b Mme Janssens    3   6   4 Mr Peeters    2   2   3 Mr Grosjean    1   9   5 Mme PetitBois    4   9   2 Mme Van Peteghem    5   1   1

此外,如上面在步骤3中所述,可以使用索引Index1作为序列号。

现在,将把特定密钥发送给用户,如上面在步骤2中所述。

*Mme Janssens将从当地政府得到密钥:6。

*Mr Peeters将从当地政府得到密钥:2。

*Mr Grosjean将从当地政府得到密钥:9。

*Mme Petitbois将从当地政府得到密钥:9。

*Mme Van Peteghem将从当地政府得到密钥:1。

在这一步骤中,可以从上面示出的数据中删除列Keys 1+3a。其它数据应当存储在密封且不可修改的数据载体上。

步骤7:

用户得到如步骤3和步骤6末尾所述的密钥。例如,Mme Janssens将从国际组织接收到密钥0,并从当地政府接收到密钥6。

步骤8:

用户远程计算他/她的加密选票。

假设有4个候选人:

1.Jan Jannsen

2.Peter Persen

3.Bernard Bernardsen

4.Julie Junesco

Mme Janssens、Mr Peeters和Mr Grosjean想将票投给2号候选人,即PeterPersen。其它两个投票人将票投给4号候选人,即Julie Junesco。

如果使用个人计算机,则Mme Janssens登录到(包含javascript的)网页上,选择2号候选人,并输入她接收到的两个密钥加上在此进行认证的信息。Javascript本地计算2(候选人)加上0(来自国际组织的密钥)加上6(来自当地政府的密钥)对10取模,得出8。8是Mme Janssens的加密选票,她将该选票提交到公共布告板网站。

Mr Peeters没有使用个人计算机的途经。他手工计算他的选票:

2+2+2对10取模=6

Mr Peeters使用简单的电话(语音响应)应用,(使用一次性密码和/和声纹(voice print))进行认证,并传送他的加密选票6。

Mr Grosjean也不具有使用个人计算机的途径。他手工计算他的选票:

2+6+9对10取模=7

Mr Grosjean发送包含他的用户Id和一次性密码以及随后的加密选票7的SMS。

Mme Petitbois像Mme Janssens一样使用个人计算机来投她的选票,在认证之后,她提交:

4(候选人的号码)+3+9对10取模=6

Mme Van Peteghem也使用PC来投她的选票,在认证之后,她提交:

4(候选人的号码)+0+1对10取模=5

语音响应系统、网站和SMS网关都更新相同的公共布告板。

步骤9和10:

公共布告板收集到以下选票:

 用户    加密选票 Mme Van Peteghem    5 Mr PetitBois    6 Mr Grosjean    7 Mme Janssens    8 Mr Peeters    6

公民可以用多种方式验证是否正确列出了加密选票:网站、语音服务器、通过SMS发出的请求。在这里,为了验证而进行的认证不是必需的。

步骤11:

在当地政府的前提下,查找密钥1。

对于Mme Van Peteghem:index1=5key1=7。

5(加密选票)-7(密钥)对10取模=8。8是部分解密的选票。

当地政府还查找针对Mme Van Peteghem的Index 3b=1。

所以,对于Mme Van Peteghem,将存储以下数据:

Mme Van Peteghem,8,Index 3b=1

同样,对于其它投票者,将存储以下数据:

*Mme Petitbois,8,Index 3b=2

*Mr Grosjean,6,Index 3b=5

*Mme Janssens,4,Index 3b=4

*Mr Peeters,2,Index 3b=3

结果:当地政府将下面的数据秘密地发送给国际组织:

 Mme Van Peteghem    8,Index 3b=1 Mme PetitBois    8,Index 3b=2 Mr Grosjean    6,Index 3b=5 Mme Janssens    4,Index 3b=4 Mr Peeters    2,Index 3b=3

注意:当地政府对投票意向毫不知情。对于当地政府,甚至部分解密的选票也仍然是被牢不可破地加密的;实际上,那些部分解密的消息保持加密所利用的密钥之一是当地政府永远不会得到的密钥3a。

步骤12:

在国际组织的前提下,查找密钥2。

对于Mme Van Peteghem:index2=4key2=0。

8(来自当地政府的部分解密的选票)-0对10取模=8。8是国际组织解密后的部分解密的选票。通过访问它所存储的表,国际组织还发现:

Index 3a=2

结果:国际组织将为Mme Van Peteghem而向计票办公室发送消息:

8,Index 3b=1,Index 3a=2

而不提及他的名字,并打乱消息的顺序,使得不能通过查看行号码推导出投票者的身份。

出于以后审核的目的,将打乱行顺序的方式也存储在不可修改的数据载体中并将其密封。

下面是国际组织的这种打乱顺序方式的示例:

 名字    旧行号    新行号 Mme Van Peteghem    1    4 Mme PetitBois    2    2 Mr Grosjean    3    1 Mme Janssens    4    3 Mr Peeters    5    5

在这样打乱顺序之后,国际组织将以下消息发送给计票办公室:

3,Index 3b=5,Index 3a=1(来自Mr Grosjean但没有提及)3,Index 3b=2,Index 3a=5(来自Mme PetitBois但没有提及)3,Index 3b=4,Index 3a=4(来自Mme Janssens但没有提及)8,Index 3b=1,Index 3a=2(来自Mme Van Peteghem但没有提及)7,Index 3b=3,Index 3a=3(来自Mr Peeters但没有提及)

注意:国际组织也对投票意向毫不知情。对于国际组织,甚至部分解密的选票也仍然是牢不可破地加密的。现在,它知道索引3b,但不知道密钥3b本身。

步骤13:

上面的消息到达计票办公室而没有附带姓名。

对于第一条消息,计票办公室在Index 3b=5中查找密钥,该密钥是8。然后,它在Index 3a=1中查找密钥,该密钥是3。

3-8-3对10取模=2

同样,其它消息产生:

3-1-8对10取模=4

3-2-9对10取模=2

8-4-0对10取模=4

7-8-7对10取模=2

因此,在没有任何人知道谁将票投给哪位的情况下,投票意向被解密。

在公布上面的最终结果之前,再次随机地打乱行顺序。

例如,如果打乱顺序的方式如下:

    旧行号    新行号    1    5    2    3    3    1    4    2    5    4

然后将秘密地存储上面打乱顺序的表,并且,最后发布的解密选票将是:

    新行号    解密选票    1    2    2    4    3    4    4    2    5    2

通常,将密钥、索引和每个部分解密步骤、以及关于每次打乱顺序的数据写入到不可修改且密封的数据载体上,以允许以后审核。

步骤14:

对上面的消息计数,并产生以下结果:

1.Jan Jannsen:0票

2.Peter Persen:3票

3.Bernard Bernardsen:0票

4.Julie Junesco:2票

通过随机选择是否进行以下操作来进行审核:

-向不具有对国际组织和计票办公室处的数据的访问权的审核员披露(reveal):

-存储在当地政府处的密钥Key1和索引

-发送给国际组织的消息

-向不具有对当地政府和计票办公室处的数据的访问权的审核员披露:

-从当地政府接收的消息

-存储在国际组织处的密钥Key2和索引

-国际组织的打乱顺序的表

-发送给计票办公室的消息

-向不具有对当地政府和国际组织处的数据的访问权的审核员披露:

-从国际组织接收的消息

-存储在计票办公室处的密钥3a和3b以及索引

-计票办公室的打乱顺序的表

-以便与所公布的解密选票的最后列表相比较。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号