一种不需可信第三方的匿名提交系统的制作方法_2

文档序号:9618711阅读:来源:国知局
bit (比特)数;Perl的Crypt::DH模块根据参数生成该客户端自己的Diffie-Hellman公私钥对,其中,私钥调用客户端操作系统自己的随机源随机生成,公钥按照算法对应于私钥计算得到;
把自己的公钥,后面附上自己的DSA数字签名,发送给服务器端,服务器端返回给该客户端相邻两个客户端的公钥,客户端检查接收的公钥的签名以避免服务器端的欺骗;
任一客户端接收服务器发送的相邻的两个客户端的公钥并与自己的私钥通过Diffie-Hellman规定的运算得到两个仅与对应的特定客户端共享的秘密数;
c、Perl的Math::Random::Secure模块根据此两个512比特的秘密数,使用密码学安全的伪随机数生成算法,分别生成两个伪随机比特序列,得到够用的长度后保存在本地安全的位置。
[0018]d、等待服务器端的就绪信号。
[0019](2)、服务器端初始化:
a、TCPsocket监听服务器端用于与客户端通讯的特定端口号,等待连接数量达到预定的数量;如不是工作在内网环境下则同时需要检查源端ip是否是合法客户端;
b、从每个连接中读取客户端发来的公钥,全部读取完之后进行公钥的分发,即把所有客户端按顺序围成一个逻辑上的圈,对任一客户端把它相邻的两个客户端的公钥发送给它;
c、下达就绪信号。
[0020]( 3)、客户端的工作过程:
a、通过本地Socket形式建立上层应用和本服务之间的通信,监听本地一个端口,该端口用来接收上层应用传递的消息。为该Socket注册一个AnyEvent库中的10 Watcher,一旦此连接可读,那么把读到的消息赋值给一个全局变量,以此传递给下面的Timer Watcher处理;
b、通过一个TimerWatcher (AnyEvent中的定时器)在固定的时间间隔,从两个伪随机序列中向后读取一段(设定为128B~1024B为佳),转换成两个大整数类型,并把上层应用传递过来匿名消息的字符串通过ASIIC编码后拼接起来,构成另一个大整数,三者异或发送到与服务器端连接的Socket中;字符串构成的那个大整数(可选地)左移一个随机的值,以减少冲突的产生;c、接收服务器端返回的验证性消息,如果某序列号下返回的接收到内容的摘要里没有自己发送出去的消息,则证明由于冲突等原因没有发送成功,使用指数退避的时间间隔重发。
[0021](4)、服务器端的工作过程:
通过10 Watcher读取收到的内容写入数组,通过Timer Watcher,读取当前序列号下每个客户端发过来的消息,以整数的形式进行异或,再对结果进行解码,以一个字节(8个比特)为单位,读到〇丢弃,如果读到非〇的字节,意味着这是一个字符串的开始,一个字节一个字节读取字符,存到一个字符串变量中,直到读到〇,意味着字符串结束;继续往后读可能的另一个客户端的字符串;把最后内容写到LOG中,并返回每个字符串的摘要给所有客户端(如果为空则不返回);由于先前随机左移操作的存在,故而当两个客户端都在某个序列号中发送了有内容的消息时,原本的两个字符串可能会避开位置从而能够都解码出来。此举降低冲突概率。本方案的设计背景中,由于客户端提交匿名消息并不会频繁,所以冲突不会严重。
【主权项】
1.一种不需可信第三方的匿名提交系统,包括有一个用于接收消息的服务器端和若干个用于发送匿名消息的客户端,其特征在于:所述的若干个客户端围成一个逻辑上的圈,即任一客户端均有两个相邻的客户端;所述的圈内相邻的两个客户端共享一个秘密随机序列,即每个客户端享有两个秘密随机序列;当任一客户端需要发送匿名消息时,分别在自身的两个秘密随机序列中取一段与需要发送的匿名消息进行异或运算,最后将异或的结果发送给服务器端,其它不需要发送匿名消息的客户端也从自身两个秘密随机序列中各选取一段进行异或运算,并将异或结果发送给服务器端,服务器端把若干个客户端发送过来的消息进行异或运算后,即得到发送的匿名消息;其中,共享一个秘密随机序列的两个客户端选取的一段相同。2.根据权利要求1所述的一种不需可信第三方的匿名提交系统,其特征在于:所述的秘密随机序列为一个足够长的二进制比特序列,每次选取定长的一段参与异或运算,使用后则抛弃用过的一段。3.根据权利要求1所述的一种不需可信第三方的匿名提交系统,其特征在于:所述的任一客户端的两个序列生成的步骤为:首先若干个客户端均向服务器端发起TCP连接,以服务端为中介,相邻的两个客户端之间进行密钥交换,每个客户端得到两个秘密数,以这两个秘密数作种子,使用密码学安全的伪随机数生成算法分别生成对应的两个秘密随机序列。4.根据权利要求1所述的一种不需可信第三方的匿名提交系统,其特征在于:所述的匿名消息以ASIIC码的形式构成第三个比特序列,与客户端两个秘密随机序列的一段进行异或运算,得到一个最终的二进制比特序列,作为发送给服务器端的报文。5.根据权利要求4所述的一种不需可信第三方的匿名提交系统,其特征在于:所述的客户端发送的报文的开头均维护一个递增的序列号,服务器端对相同序列号的所有客户端发送的报文进行异或运算,得到此次通讯的最终结果一如果异或结果是0,表示没有客户端传递了消息,结果非0则进行译码,写入日志,供服务器端使用者查看。6.根据权利要求5述的一种不需可信第三方的匿名提交系统,其特征在于:所述的服务器返回得到的所有消息的摘要值给各个客户端,当客户端发现自己发送出去的消息没有体现在返回的摘要中,则证明由于冲突等原因没有发送成功,等待随机的时间片间隔后再次发送。
【专利摘要】本发明公开了一种不需可信第三方的匿名提交系统,包括有一个用于接收消息的服务器端和若干个用于发送匿名消息的客户端,若干个客户端围成一个逻辑上的圈,圈内相邻的两个客户端共享一个秘密随机序列;当任一客户端需要发送匿名消息时,分别在自身的两个秘密随机序列中取一段与需要发送的匿名消息进行异或运算,最后将异或的结果发送给服务器端,其他不需要发送匿名消息的客户端也从自身两个秘密随机序列中各选取进行异或运算,并将异或结果发送给服务器端,服务器端把若干个客户端发送过来的消息进行异或运算后,即得到发送的匿名消息。本发明在客户端的所有出入流量都被监听的情况下仍然是安全的。
【IPC分类】H04L29/06
【公开号】CN105376240
【申请号】CN201510832711
【发明人】俞能海, 张卫明, 田辉, 郭玉刚, 刘文钊
【申请人】合肥高维数据技术有限公司
【公开日】2016年3月2日
【申请日】2015年11月26日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1