CN111435911A - 一种在线多方安全数据处理方法及装置 - Google Patents
一种在线多方安全数据处理方法及装置 Download PDFInfo
- Publication number
- CN111435911A CN111435911A CN201910032643.7A CN201910032643A CN111435911A CN 111435911 A CN111435911 A CN 111435911A CN 201910032643 A CN201910032643 A CN 201910032643A CN 111435911 A CN111435911 A CN 111435911A
- Authority
- CN
- China
- Prior art keywords
- client
- clients
- elements
- random
- public
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0442—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种在线多方安全数据处理方法及装置,参与同一轮次数据处理至少包括2个客户端,每个客户端在生成各自的加密密钥和解密密钥之后,依次对目标数组进行加密和打乱顺序处理得到加密后的目标数组,再依次从加密后的目标数组中选取与其他客户端不同的索引元素,经过其他客户端依次对其进行解密后得到索引数字,最后所有客户端生成相同的随机数组,并将各自的索引数字对应在该随机数组中得到与其他客户端不同、具有私密性和不可预测的私有元素。因此,该私有元素可以为棋牌游戏中的手牌、在线抽奖的开奖结果以及摇号系统的摇号结果等。本发明无需服务器端进行核心运算,所有核心运算均由在线参与的客户端完成,保证数据处理结果的真实性。
Description
技术领域
本发明涉及计算机技术领域,更具体的,涉及一种在线多方安全数据处理方法及装置。
背景技术
目前,在线棋牌游戏、在线抽奖、在线摇号系统中,所有核心运算均部署在中心服务器端,通过中心服务器进行随机运算、分配运算等核心运算,实现游戏发牌、抽奖开奖,摇号中签结果等。中心服务器是“上帝节点”,有权限,也有能力操纵结果,且被操控过的结果不容易被察觉,参与方也无法验证结果的真实性。
中心服务器进行核心运算,作弊成本低且不易察觉,从而导致主办方失去公信力,并给参与方带来极大损失。
发明内容
有鉴于此,本发明提供了一种在线多方安全数据处理方法及装置,所有核心运算均由在线参与的客户端完成,解决了传统中心化服务器结构中数据处理结果不被信任的问题,保证了数据处理结果的真实可信。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种在线多方安全数据处理方法,应用于参与同一轮次数据处理的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,所述方法包括:
生成加密密钥和解密密钥;
接收目标数组,当本客户端为本轮次数据处理的第一个客户端时,生成一个包括第一预设数量元素的数组,作为本客户端接收的目标数组,并向本轮次其他客户端进行公布;
利用所述加密密钥对目标数组中的每个元素进行加密,将元素的顺序打乱,从而生成下一客户端的目标数组并发送到下一客户端,使下一客户端对其接收到的目标数组进行同样的加密和打乱顺序处理,直到所有客户端都完成对各自目标数组的加密和打乱顺序处理,得到加密后的目标数组;
从所述加密后的目标数组中,选取第二预设数量且与本轮次其他客户端选取的元素不同的元素作为本客户端选取的索引元素,将所述索引元素发送到下一客户端,使下一客户端利用其解密密钥对所述索引元素进行解密,直到接收到本轮次其他所有客户端都解密后的索引元素,并利用所述解密密钥对其进行解密得到第二预设数量的索引数字;
当本轮次所有客户端都得到各自的索引数字后,将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,本轮次每个客户端生成的随机数组相同;
分别依据每个所述索引数字在所述随机数组中匹配到相应的元素,得到第二预设数量的私有元素。
可选的,所述生成加密密钥和解密密钥,包括:
当本客户端为指定客户端时,生成两个不相等的大素数,并向参与本轮次数据处理的所有客户端公布生成的两个大素数;
当本客户端不是指定客户端时,接收指定客户端公布的两个大素数;
依据两个大素数,生成符合RSA加密算法的加密密钥和解密密钥,其中,所述加密密钥和所述解密密钥作为本客户端的私密密钥,不向本轮次的其他客户端公开。
可选的,所述将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,包括:
生成一个第一随机数;
计算第一随机数的哈希值,并将第一随机数的哈希值向所有客户端进行公开;
当所有客户端都公开各自第一随机数的哈希值后,公开第一随机数;
当轮次所有客户端都公布第一随机数后,对所有的第一随机数进行求和,得到第一随机数种子;
根据所述第一随机数种子和预设随机算法,将将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组。
可选的,在本轮次所有客户端都得到各自的私有元素之后,所述方法还包括:
在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,所述公共元素与本轮次每个客户端的私有元素都不相同;
当选取第三预设数量的公共元素之后,将所述公共元素向本轮次所有客户端公开。
可选的,在本轮次数据处理的过程中,当所有客户端都在线的情况下,所述在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,包括:
在所述加密后的目标数组中剔除掉本轮次每个客户端选取的元素,得到待选取公共元素数组;
生成并公布一个第二随机数,当所有客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子,根据所述第二随机数种子和预设随机算法生成第三预设数量的随机索引;
分别依据每个所述随机索引在所述待选取公共元素数组中匹配到相应的元素,得到第三预设数量的公共索引元素;
当本轮次所有客户端依次按照本轮次的数据处理顺序对每个所述公共索引元素进行解密后,得到第三预设数量的公共索引数字;
分别依据每个所述公共索引数字在所述随机数组中匹配到相应的元素,得到第三预设数量的公共元素。
可选的,在本轮次数据处理的过程中,当有客户端掉线且在线客户端的数量不小于3的情况下,所述在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,包括:
生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;
根据所述第二随机数种子和预设随机算法生成一个随机索引,依据所述随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共元素;
对所述待定公共元素与自身的私有元素进行比较,并根据比较结果向其他在线客户端公布表示是否将所述待定公共元素作为公共元素的表决结果;
当所有在线客户端的表决结果为可以将所述待定公共元素作为公共元素时,将所述待定公共元素作为公共元素,当不是所有在线客户端的表决结果为可以将所述待定公共元素作为公共元素时,返回执行所述生成并公布一个第二随机数这一步骤,直到得到第三预设数量的公共元素。
可选的,所述根据比较结果向其他在线客户端公布表示是否将所述待定公共元素作为公共元素的表决结果,包括:
执行多轮抛硬币协议表决,当所述待定公共元素与自身的私有元素重复时,在多轮抛硬币协议表决中随机选择第四预设数量的轮次进行否定表决,并向其他在线客户端公布表决结果;
当所述待定公共元素与自身的私有元素不重复时,在多轮抛硬币协议表决中以预设概率进行否定表决,并向其他在线客户端公布表决结果。
可选的,所述执行多轮抛硬币协议表决,包括:
在执行每一轮抛硬币协议表决的过程中,按照预先设定的顺序确定本客户端两个相邻的在线客户端,分别与两个相邻的在线客户端之间进行私密的模拟抛硬币,并分别获取两次抛硬币的结果,抛硬币的结果包括:两次抛硬币的结果相同和两次抛硬币的结果不同;
当进行否定表决时则向其他在线客户端公布与实际抛硬币结果相反的抛硬币结果,当进行肯定表决时则向其他在线客户端公布与实际抛硬币结果相同的抛硬币结果。
可选的,在本轮次数据处理的过程中,当有客户端掉线且仅有2个在线客户端的情况下,所述在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,包括:
生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;
根据所述第二随机数种子和预设随机算法生成一个随机索引,依据所述随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共元素;
当所述待定公共元素与自身的私有元素重复时,向本轮次其他在线客户端进行否定表决,并当所述待定公共元素与自身的私有元素不重复时,以1/2的概率向本轮次其他在线客户端进行否定表决;
当本轮次所有在线客户端都进行非否定表决时,将所述待定公共元素确定为公共元素,并返回执行根据所述第二随机数种子和预设随机算法生成一个随机索引这一步骤,直到得到第三预设数量的公共元素。
一种在线多方安全数据处理装置,应用于参与同一轮次数据处理的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,所述装置包括:
密钥生成单元,用于生成加密密钥和解密密钥;
目标数组接收单元,用于接收目标数组,当本客户端为本轮次数据处理的第一个客户端时,生成一个包括第一预设数量元素的数组,作为本客户端接收的目标数组,并向本轮次其他客户端进行公布;
目标数组加密单元,用于利用所述加密密钥对目标数组中的每个元素进行加密,将元素的顺序打乱,从而生成下一客户端的目标数组并发送到下一客户端,使下一客户端对其接收到的目标数组进行同样的加密和打乱顺序处理,直到所有客户端都完成对各自目标数组的加密和打乱顺序处理,得到加密后的目标数组;
选取元素解密单元,用于从所述加密后的目标数组中,选取第二预设数量且与本轮次其他客户端选取的元素不同的元素作为本客户端选取的索引元素,将所述索引元素发送到下一客户端,使下一客户端利用其解密密钥对所述索引元素进行解密,直到接收到本轮次其他所有客户端都解密后的索引元素,并利用所述解密密钥对其进行解密得到第二预设数量的索引数字;
随机数组生成单元,用于当本轮次所有客户端都得到各自的索引数字后,将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,本轮次每个客户端生成的随机数组相同;
私有元素获取单元,用于分别依据每个所述索引数字在所述随机数组中匹配到相应的元素,得到第二预设数量的私有元素。
可选的,所述密钥生成单元,具体用于当本客户端为指定客户端时,生成两个不相等的大素数,并向参与本轮次数据处理的所有客户端公布生成的两个大素数;当本客户端不是指定客户端时,接收指定客户端公布的两个大素数;依据两个大素数,生成符合RSA加密算法的加密密钥和解密密钥,其中,所述加密密钥和所述解密密钥作为本客户端的私密密钥,不向本轮次的其他客户端公开。
可选的,所述随机数组生成单元具体用于:
生成一个第一随机数;计算第一随机数的哈希值,并将第一随机数的哈希值向所有客户端进行公开;当所有客户端都公开各自第一随机数的哈希值后,公开第一随机数;当轮次所有客户端都公布第一随机数后,对所有的第一随机数进行求和,得到第一随机数种子;根据所述第一随机数种子和预设随机算法,将将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组。
可选的,所述装置还包括:
公共元素选取单元,用于在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,所述公共元素与本轮次每个客户端的私有元素都不相同;
公共元素公开单元,用于当选取第三预设数量的公共元素之后,将所述公共元素向本轮次所有客户端公开。
可选的,在本轮次数据处理的过程中,当所有客户端都在线的情况下,所述公共元素选取单元,具体用于在所述加密后的目标数组中剔除掉本轮次每个客户端选取的元素,得到待选取公共元素数组;生成并公布一个第二随机数,当所有客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子,根据所述第二随机数种子和预设随机算法生成第三预设数量的随机索引;分别依据每个所述随机索引在所述待选取公共元素数组中匹配到相应的元素,得到第三预设数量的公共索引元素;当本轮次所有客户端依次按照本轮次的数据处理顺序对每个所述公共索引元素进行解密后,得到第三预设数量的公共索引数字;分别依据每个所述公共索引数字在所述随机数组中匹配到相应的元素,得到第三预设数量的公共元素。
可选的,在本轮次数据处理的过程中,当有客户端掉线且在线客户端的数量不小于3的情况下,所述公共元素选取单元包括:
随机数种子生成子单元,用于生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;
待定公共元素获取子单元,用于根据所述第二随机数种子和预设随机算法生成一个随机索引,依据所述随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共索引元素;
结果表决子单元,用于对所述待定公共元素与自身的私有元素进行比较,并根据比较结果向其他在线客户端公布表示是否将所述待定公共元素作为公共元素的表决结果;
公共元素确定子单元,用于当所有在线客户端的表决结果为可以将所述待定公共元素作为公共元素时,将所述待定公共元素作为公共元素,当不是所有在线客户端的表决结果为可以将所述待定公共元素作为公共元素时,触发所述随机数种子生成子单元,直到得到第三预设数量的公共元素。
可选的,所述结果表决子单元,具体用于执行多轮抛硬币协议表决,当所述待定公共元素与自身的私有元素重复时,在多轮抛硬币协议表决中随机选择第四预设数量的轮次进行否定表决,并向其他在线客户端公布表决结果;当所述待定公共元素与自身的私有元素不重复时,在多轮抛硬币协议表决中以预设概率进行否定表决,并向其他在线客户端公布表决结果。
可选的,所述结果表决子单元,具体用于在执行每一轮抛硬币协议表决的过程中,按照预先设定的顺序确定本客户端两个相邻的在线客户端,分别与两个相邻的在线客户端之间进行私密的模拟抛硬币,并分别获取两次抛硬币的结果,抛硬币的结果包括:两次抛硬币的结果相同和两次抛硬币的结果不同;当进行否定表决时则向其他在线客户端公布与实际抛硬币结果相反的抛硬币结果,当进行肯定表决时则向其他在线客户端公布与实际抛硬币结果相同的抛硬币结果。
可选的,在本轮次数据处理的过程中,当有客户端掉线且仅有2个在线客户端的情况下,所述公共元素选取单元,具体用于生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;根据所述第二随机数种子和预设随机算法生成一个随机索引,依据所述随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共元素;当所述待定公共元素与自身的私有元素重复时,向本轮次其他在线客户端进行否定表决,并当所述待定公共元素与自身的私有元素不重复时,以1/2的概率向本轮次其他在线客户端进行否定表决;当本轮次所有在线客户端都进行非否定表决时,将所述待定公共元素确定为公共元素,并返回执行根据所述第二随机数种子和预设随机算法生成一个随机索引这一步骤,直到得到第三预设数量的公共元素。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种在线多方安全数据处理方法及装置,应用于参与同一轮次数据处理的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,整个数据处理过程中无需中心服务器的参与,所有核心运算均由在线参与的客户端完成,避免了传统中心化服务器结构中数据处理结果不被信任的问题。所有参与数据处理的客户端均生成各自的加密密钥和解密密钥,依次对目标数组进行加密和和打乱顺序处理得到加密后的目标数组,再依次从加密后的目标数组中选取与其他客户端不同的索引元素,经过其他客户端依次对其进行解密后得到索引数字,最后所有客户端将本轮次第一个客户端公布的目标数组中的元素的顺序打乱生成相同的随机数组,并将各自的索引数字对应在该随机数组中得到各自的私有元素,任意一个客户端都无法得知其他客户端的私有元素,私有元素具有私密性且不可预测。因此,私有元素可以为棋牌游戏中的手牌、在线抽奖的开奖结果以及摇号系统的摇号结果等,保证了数据处理结果的真实性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种在线多方安全数据处理方法的流程示意图;
图2为本发明实施例公开的另一种在线多方安全数据处理方法的流程示意图;
图3为本发明实施例公开的一种选取公共元素的方法的流程示意图;
图4为本发明实施例公开的又一种选取公共元素的方法的流程示意图;
图5为本发明实施例公开的另一种选取公共元素的方法的流程示意图;
图6为本发明实施例公开的一种在线多方安全数据处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例公开了一种在线多方安全数据处理方法,可以应用于参与同一轮次的棋牌游戏、在线抽奖、以及在线摇号等场景的数据处理过程中的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,具体的,可以按客户端进入本轮次数据处理的先后顺序设定客户端进行数据处理的顺序,也可以随机设定客户端进行数据处理的顺序等方式。请参阅图1,本实施例公开的在线多方安全数据处理方法具体包括以下步骤:
S101:生成加密密钥和解密密钥;
具体的,每个客户端生成加密密钥和解密密钥的加密算法相同,本轮次所有客户端利用该加密算法生成的加密密钥可以通过任意顺序进行加密,并可以通过任意顺序对加密后的数据进行解密,如按客户端P1、P2、P3的顺序对数据加密,可以按客户端P1、P2、P3的顺序对加密后的数据进行解密得到原始数据,也可以按客户端P1、P3、P2的顺序对加密后的数据进行解密得到原始数据,也可以按客户端P3、P2、P1的顺序对加密后的数据进行解密得到原始数据。
上述加密算法可以为RSA加密算法,其中,依据RSA加密算法生成加密密钥和解密密钥的方法包括:每个客户端根据两个不相等的长度足够安全的大素数,生成符合RSA加密算法规则,且公私钥长度足够安全的公钥和私钥,其中,将通过RSA加密算法生成的公钥作为加密密钥,并将通过RSA加密算法生成的私钥作为解密密钥,所述加密密钥和所述解密密钥作为本客户端的私密密钥,不向本轮次的其他客户端公开。
其中,两个大素数是由指定客户端生成的,指定客户端为初始化后系统指定的客户端,指定的方式可以为随机指定,也可以将数据处理顺序中的第一个客户端指定为指定客户端,还可以为其他任意一种方式,在此不再赘述。
当本客户端为指定客户端时,生成两个不相等的大素数,并向参与本轮次数据处理的所有客户端公布生成的两个大素数;当本客户端不是指定客户端时,接收指定客户端公布的两个大素数。
S102:接收目标数组,当本客户端为本轮次数据处理的第一个客户端时,生成一个包括第一预设数量元素的数组,作为本客户端接收的目标数组,并向本轮次其他客户端进行公布;
以德州扑克为例,目标数组表示52张扑克牌,此时第一预设数量为52,目标数组可以为M={1,2,3,…,50,51,52},M中元素之间互不重复。
以在线抽奖为例,目标数组中元素的数量可以预先设定,可以理解的是,目标数组中元素的数量不小于本轮次参与抽奖的客户端的总数,目标数组中的元素可以重复也可以互不重复,如规定中奖号码为1时,目标数组中可以包括若干数量为1的元素以及若干可重复的非中奖号码元素,如规定中奖号码为1,2,3,目标数组中可以包括元素1,2,3,以及若干互不重复的非中奖号码元素。
当本客户端不是本轮次数据处理的第一个客户端时,接收上一个客户端发送的加密并打乱顺序处理后的数组,作为本客户端的目标客户端。
S103:利用加密密钥对目标数组中的每个元素进行加密,将元素的顺序打乱,从而生成下一客户端的目标数组并发送到下一客户端,使下一客户端对其接收到的目标数组进行同样的加密和打乱顺序处理,直到所有客户端都完成对各自目标数组的加密和打乱顺序处理,得到加密后的目标数组;
以第一个客户端P1,第二个客户端P2,第三个客户端P3为例,客户端P1利用加密密钥对目标数组M={1,2,3,…,50,51,52}中的每个元素进行加密,并将加密后的元素的顺序打乱,从而生成客户端P2的目标数组,使客户端P2利用其自身的加密密钥对接收到的目标数组进行同样的加密和打乱顺序处理,生成客户端P3的目标数组,使客户端P2利用其自身的加密密钥对接收到的目标数组进行同样的加密和打乱顺序处理,得到最终加密后的目标数组M2,再将M2发送给客户端P1,此时M2中每一个元素都经过本轮次所有客户端的加密,并且任何一个客户端都不知道M2与M的对应关系。
S104:从加密后的目标数组中,选取第二预设数量且与本轮次其他客户端选取的元素不同的元素作为本客户端选取的索引元素,将索引元素发送到下一客户端,使下一客户端利用其解密密钥对索引元素进行解密,直到接收到本轮次其他所有客户端都解密后的索引元素,并利用解密密钥对其进行解密得到第二预设数量的索引数字;
需要说明的是,第二预设数量小于第一预设数量且不小于1,每个客户端都需要从加密后的目标数组中选取相同数量,即第二预设数量的元素,且每个客户端选取的元素各不相同。
此时,每个客户端都知道加密后的目标数组中已被选取的索引元素,但是每个客户端都不知道其他客户端解密后得到的索引数字,即每个客户端都只知道自己的索引数字。
每个客户端解密后得到的索引数字必然是目标数组中的元素,该索引数字为私密信息,不可公开。
S105:当本轮次所有客户端都得到各自的索引数字后,将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,本轮次每个客户端生成的随机数组相同;
具体的,生成一个第一随机数;计算第一随机数的哈希值,并将第一随机数的哈希值向所有客户端进行公开;当所有客户端都公开各自第一随机数的哈希值后,公开第一随机数;当轮次所有客户端都公布第一随机数后,对所有的第一随机数进行求和,得到第一随机数种子;根据所述第一随机数种子和预设随机算法,将将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组。
S106:分别依据每个索引数字在随机数组中匹配到相应的元素,得到第二预设数量的私有元素。
由于每个客户端都不知道其他客户端解密后得到的索引数字,因此,每个客户端分别依据每个索引数字在随机数组中匹配到相应的元素,得到第二预设数量的私有元素也具有私密性,每个客户端只知道自己的私有元素,并不知道其他客户端的私有元素。因此,私有元素可以为棋牌游戏中的手牌、在线抽奖的开奖结果以及摇号系统的摇号结果等。
为了进一步对本实施例公开的在线多方安全数据处理方法进行说明,下面分别进行举例说明。
德州扑克为每个玩家发放手牌的过程
德州扑克中共有52张扑克牌,对应的目标数组为M={1,2,3,…,50,51,52},参与本轮德州扑克游戏的有3名玩家,分别对应3个客户端P1,P2和P3,3个客户端的顺序为P1、P2、P3。
客户端P1利用加密密钥对目标数组M={1,2,3,…,50,51,52}中的每个元素进行加密,并将加密后的元素的顺序打乱,从而生成客户端P2的目标数组,使客户端P2利用其自身的加密密钥对接收到的目标数组进行同样的加密和打乱顺序处理,生成客户端P3的目标数组,使客户端P2利用其自身的加密密钥对接收到的目标数组进行同样的加密和打乱顺序处理,得到最终加密后的目标数组M2,再将M2发送给客户端P1,此时M2中每一个元素都经过本轮次所有客户端的加密,并且任何一个客户端都不知道M2与M的对应关系。
客户端P1从M2中随机挑选2个元素x,y,并把x、y发送给P2,P2使用自己的解密密钥解密x、y,并把解密的结果发送给下一个客户端P3,即每个客户端依次解密后发送给下一个客户端,最终P1收到经过其他客户端对x、y元素的解密结果,此时P1使用自己的解密密钥再进行解密,得到P1的手牌索引X、Y,X、Y必然是M中的元素。依据此方法P2可以从M2中挑选不同于x、y的两个元素发送给其他客户端解密来得到自己的手牌索引。直到所有客户端得到与其他客户端不重复,且属于M的两个索引数字作为自己的手牌索引。此时,每个客户端的两个索引数字只有客户端自己知道,且其他客户端无法破解。
P1、P2、P3进行洗牌,即P1、P2、P3分别生成并公布一个随机数,当P1、P2、P3都公布随机数后,对所有的随机数进行求和,得到随机数种子,P1、P2、P3根据随机数种子和预设随机算法生成一个随机数组,由于P1、P2、P3的随机数种子相同、随机算法也相同,因此,P1、P2、P3生成的随机数组也相同,即完成了洗牌操作。P1、P2、P3分别依据自己的手牌索引在随机数组中匹配到相应的元素,得到自己的两张手牌。
在线抽奖中,每个客户端分别对应一个抽奖用户,经过本实施例所公开的一种在线多方安全数据处理方法,每个抽奖用户得到一个仅自己知道的私有元素,即抽奖号码。系统预先设定中奖号码并于抽奖行为前提前公开,每个抽奖用户在抽奖的过程中,即获取私有元素的过程中不可预测自己的抽奖号码且与其他客户端不重复,每个抽奖用户的抽中奖的几率相同,抽奖结果真实可信。
本实施例公开的一种在线多方安全数据处理方法,应用于参与同一轮次数据处理的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,整个数据处理过程中无需中心服务器的参与,所有核心运算均由在线参与的客户端完成,避免了传统中心化服务器结构中数据处理过程容易作弊,导致结果不被信任的问题。所有参与数据处理的客户端均生成各自的加密密钥和解密密钥,依次对目标数组进行加密和和打乱顺序处理得到加密后的目标数组,再依次从加密后的目标数组中选取与其他客户端不同的索引元素,经过其他客户端依次对其进行解密后得到索引数字,最后所有客户端生成相同的随机数组,并将各自的索引数字对应匹配在该随机数组中得到各自的私有元素,任意一个客户端都无法得知其他客户端的私有元素,私有元素具有私密性且不可预测。因此,私有元素可以为棋牌游戏中的手牌、在线抽奖的开奖结果以及摇号系统的摇号结果等,保证了数据处理结果的真实性。
在德州扑克游戏中,玩家在获取自己的手牌之后,还需要有公共牌,对应的,本实施例公开了另一种在线多方安全数据处理方法,请参阅图2,该方法具体包括以下步骤:
S201:生成加密密钥和解密密钥;
S202:接收目标数组,当本客户端为本轮次数据处理的第一个客户端时,生成一个包括第一预设数量元素的数组,作为本客户端接收的目标数组,并向本轮次其他客户端进行公布;
S203:利用加密密钥对目标数组中的每个元素进行加密,将元素的顺序打乱,从而生成下一客户端的目标数组并发送到下一客户端,使下一客户端对其接收到的目标数组进行同样的加密和打乱顺序处理,直到所有客户端都完成对各自目标数组的加密和打乱顺序处理,得到加密后的目标数组;
S204:从加密后的目标数组中,选取第二预设数量且与本轮次其他客户端选取的元素不同的元素作为本客户端选取的索引元素,将索引元素发送到下一客户端,使下一客户端利用其解密密钥对索引元素进行解密,直到接收到本轮次其他所有客户端都解密后的索引元素,并利用解密密钥对其进行解密得到第二预设数量的索引数字;
S205:当本轮次所有客户端都得到各自的索引数字后,,将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,本轮次每个客户端生成的随机数组相同;
S206:分别依据每个索引数字在随机数组中匹配到相应的元素,得到第二预设数量的私有元素;
S207:在本轮次第一个客户端公布的目标数组或随机数组中选取第三预设数量的不可预测的公共元素,公共元素与本轮次每个客户端的私有元素都不相同;
需要说明的是,第三预设数量不小于1且小于第一预设数量,进一步的,(第二预设数量*参与本轮次数据处理的客户端数量+第三预设数量)<第一预设数量。
以德州扑克游戏为例,这里的公共元素为德州扑克游戏中的公共牌,第三预设数量为5,公共牌是在发手牌之后发放的,可以理解的是,公共牌与每个玩家的手牌不存在重复,且公开牌翻开之前是不可预测的。
S208:当选取第三预设数量的公共元素之后,将公共元素向本轮次所有客户端公开。
得到公共元素,在德州扑克游戏中对应的是公共牌翻开的过程,翻开的公共牌对所有玩家公开。其中,请参阅图3,在本轮次数据处理的过程中,当所有客户端都在线的情况下,选取公共元素的方法具体包括以下步骤:
S301:在所述加密后的目标数组中剔除掉本轮次每个客户端选取的元素,得到待选取公共元素数组;
通过S301的操作,保证待选取公共元素数组中的元素与每个客户端选取的元素不存在重复。
S302:生成并公布一个第二随机数,当所有客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子,根据所述第二随机数种子和预设随机算法生成第三预设数量的随机索引;
S303:分别依据每个所述随机索引在所述待选取公共元素数组中匹配到相应的元素,得到第三预设数量的公共索引元素;
由于公共索引元素是在加密后的目标数组中选取的,因此,每个客户端都不知道公共索引元素在目标索引中对应的元素,也不知道公共索引元素在随机数组中对应的元素,即公共索引元素在解密之前不可预测。
S304:当本轮次所有客户端依次按照本轮次的数据处理顺序对每个公共索引元素进行解密后,得到第三预设数量的公共索引数字;
即第一个客户端利用自身的解密密钥对每个公共索引元素进行解密后发送至第二个客户端,第二个客户端利用自身的解密密钥对其进行解密后发送至第三个客户端,直到本轮次所有客户端都对公共索引元素解密后,得到公共索引数字。
S305:分别依据每个所述公共索引数字在所述随机数组中匹配到相应的元素,得到第三预设数量的公共元素。
由于公共索引元素与每个客户端在加密后的目标数组中选取的元素不同,因此,解密后得到的公共索引数字与每个客户端解密后得到的索引数字不同,进而,公共索引数字在随机数组中匹配得到的公共元素也与每个客户端自身的私有元素不同。
需要说明的是,上述实施例公共元素是通过参与本轮次数据处理的所有客户端解密后得到的,当参与本轮次数据处理的所有客户端均不掉线的情况下,每个客户端都可以提供解密服务,而当参与本轮次数据处理的客户端存在掉线的情况时,掉线的客户端无法提供解密服务,则选取的公共索引元素没法通过解密得到公共元素,可能导致数据处理无法正常进行。
为了解决上述问题,本实施例提供了存在客户端掉线情况下的容错机制,保证即使出现客户端掉线或客户端网络连接不稳定等情况,数据处理仍能正常进行。
具体的,在本轮次数据处理的过程中,当有客户端掉线且此时在线客户端的数量不小于3的情况下,请参阅图4,选取公共元素的方法具体包括以下步骤:
S401:生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;
S402:根据第二随机数种子和预设随机算法生成一个随机索引,依据随机索引在本轮次第一个客户端公布的目标数组或随机数组中匹配到相应的元素,得到待定公共元素;
可以理解的是,得到的待定公共元素可能与本轮次在线客户端的私有元素重复,也有可能与本轮次在线客户端的私有元素不重复,需要进一步进行确认。
S403:对待定公共元素与自身的元素进行比较,并根据比较结果向其他在线客户端公布表示是否将所述待定公共元素作为公共元素的表决结果;
其中,表决结果可以为肯定表决结果,也可以为否定表决结果。由于待定公共元素对所有在线客户端是公开的,若客户端P1的私有元素为1和2,待定公共元素为1,若客户端P1进行否定表决,则其他在线客户端知道客户端P1的私有元素中必定存在1,这种情况会导致在表决过程中泄露自身的私有元素。
为了解决这一问题,本实施例采用匿名广播协议中的一种抛硬币协议进行表决。
具体的,抛硬币协议具体如下:
所有在线客户端(至少为3个在线客户端)构建一个环状拓扑结构。
每两个相邻的客户端之间进行私密的模拟抛硬币,其中模拟抛硬币可以通过P2P网络或将结果加密传输至中转服务器实现,每个客户端公开左右两边抛硬币的结果,例如:如果左右两边抛硬币的结果一样则公开‘0’,反之则公开‘1’。
如果每个客户端诚实的参与抛硬币协议,则所有客户端公开的结果求和后再对2取余一定为0;如果仅有1个客户端说谎,即应该公开0却实际公开1,应该公开1却实际公开0,则所有客户端公开的结果求和后再对2取余一定为1。
当客户端P1决定在当前轮抛硬币协议中进行否定表决,则P1就会在公开抛硬币结果的时候‘说谎’,这样既保证了客户端P1不会被暴露,又保证了P1的否定表决被全部客户端知晓。
在此基础上,根据比较结果向其他在线客户端公布表示是否将待定公共元素作为公共元素的表决结果,包括:
执行多轮抛硬币协议表决,当待定公共元素与自身的私有元素重复时,在多轮抛硬币协议表决中随机选择第四预设数量的轮次进行否定表决,并向其他在线客户端公布表决结果;
当待定公共元素与自身的私有元素不重复时,在多轮抛硬币协议表决中以预设概率进行否定表决,并向其他在线客户端公布表决结果。
其中,执行多轮抛硬币协议表决,包括:
在执行每一轮抛硬币协议表决的过程中,按照预先设定的顺序确定本客户端两个相邻的在线客户端,分别与两个相邻的在线客户端之间进行私密的模拟抛硬币,并分别获取两次抛硬币的结果,抛硬币的结果包括:两次抛硬币的结果相同和两次抛硬币的结果不同;
当进行否定表决时则向其他在线客户端公布与实际抛硬币结果相反的抛硬币结果,当进行肯定表决时则向其他在线客户端公布与实际抛硬币结果相同的抛硬币结果。
S404:当所有在线客户端的表决结果为可以将待定公共元素作为公共元素时,将待定公共元素作为公共元素。
需要说明的是,当不是所有在线客户端的表决结果为可以将待定公共元素作为公共元素时,不能将待定公共元素作为公共元素,需要返回执行S401这一步骤,直到得到第三预设数量的公共元素。
上述匿名广播协议,即抛硬币协议只能在存在三个及三个以上在线客户端的情况下执行,在本轮次数据处理的过程中,当有客户端掉线且仅有2个在线客户端的情况下,请参阅图5,选取公共元素的方法具体包括以下步骤:
S501:生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;
S502:根据第二随机数种子和预设随机算法生成一个随机索引,依据随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共元素;
S503:当待定公共元素与自身的私有元素重复时,向本轮次其他在线客户端进行否定表决,并当待定公共元素与自身的私有元素不重复时,以1/2的概率向本轮次其他在线客户端进行否定表决;
可以理解的是,当本轮次所有在线客户端都进行否定表决时,并不能代表待定公共元素与其中一个在线客户端的私有元素重复,但是,当本轮次所有在线客户端都进行非否定表决时,则表示待定公共元素与任意一个在线客户端的私有元素都不重复。
S504:当本轮次所有在线客户端都进行非否定表决时,将待定公共元素确定为公共元素,并返回执行S502这一步骤,直到得到第三预设数量的公共元素。
基于上述实施例,只要同一轮次存在至少两个在线客户端都可以正常执行公共元素的选取,不影响数据处理的运行过程,且选取公共元素的过程不可预测,选取的公共元素不与任意一个在线客户端的私有元素重复,保证了数据处理的可靠性和安全性,且保证数据处理的结果真实可信。
基于上述实施例公开的一种在线多方安全数据处理方法,本实施例对应公开了一种在线多方安全数据处理装置,应用于参与同一轮次数据处理的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,请参阅图6,该在线多方安全数据处理装置包括:
密钥生成单元601,用于生成加密密钥和解密密钥;
可选的,所述密钥生成单元601,具体用于当本客户端为指定客户端时,生成两个不相等的大素数,并向参与本轮次数据处理的所有客户端公布生成的两个大素数;当本客户端不是指定客户端时,接收指定客户端公布的两个大素数;依据两个大素数,生成符合RSA加密算法的加密密钥和解密密钥,其中,所述加密密钥和所述解密密钥作为本客户端的私密密钥,不向本轮次的其他客户端公开。
目标数组接收单元602,用于接收目标数组,当本客户端为本轮次数据处理的第一个客户端时,生成一个包括第一预设数量元素的数组,作为本客户端接收的目标数组,并向本轮次其他客户端进行公布;
目标数组加密单元603,用于利用所述加密密钥对目标数组中的每个元素进行加密,将元素的顺序打乱,从而生成下一客户端的目标数组并发送到下一客户端,使下一客户端对其接收到的目标数组进行同样的加密和打乱顺序处理,直到所有客户端都完成对各自目标数组的加密和打乱顺序处理,得到加密后的目标数组;
选取元素解密单元604,用于从所述加密后的目标数组中,选取第二预设数量且与本轮次其他客户端选取的元素不同的元素作为本客户端选取的索引元素,将所述索引元素发送到下一客户端,使下一客户端利用其解密密钥对所述索引元素进行解密,直到接收到本轮次其他所有客户端都解密后的索引元素,并利用所述解密密钥对其进行解密得到第二预设数量的索引数字;
随机数组生成单元605,用于当本轮次所有客户端都得到各自的索引数字后,将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,本轮次每个客户端生成的随机数组相同;
可选的,所述随机数组生成单元605具体用于:
生成一个第一随机数;计算第一随机数的哈希值,并将第一随机数的哈希值向所有客户端进行公开;当所有客户端都公开各自第一随机数的哈希值后,公开第一随机数;当轮次所有客户端都公布第一随机数后,对所有的第一随机数进行求和,得到第一随机数种子;根据所述第一随机数种子和预设随机算法,将将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组。
私有元素获取单元606,用于分别依据每个所述索引数字在所述随机数组中匹配到相应的元素,得到第二预设数量的私有元素。
可选的,所述装置还包括:
公共元素选取单元,用于在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,所述公共元素与本轮次每个客户端的私有元素都不相同;
公共元素公开单元,用于当选取第三预设数量的公共元素之后,将所述公共元素向本轮次所有客户端公开。
可选的,在本轮次数据处理的过程中,当所有客户端都在线的情况下,所述公共元素选取单元,具体用于在所述加密后的目标数组中剔除掉本轮次每个客户端选取的元素,得到待选取公共元素数组;生成并公布一个第二随机数,当所有客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子,根据所述第二随机数种子和预设随机算法生成第三预设数量的随机索引;分别依据每个所述随机索引在所述待选取公共元素数组中匹配到相应的元素,得到第三预设数量的公共索引元素;当本轮次所有客户端依次按照本轮次的数据处理顺序对每个所述公共索引元素进行解密后,得到第三预设数量的公共索引数字;分别依据每个所述公共索引数字在所述随机数组中匹配到相应的元素,得到第三预设数量的公共元素。
可选的,在本轮次数据处理的过程中,当有客户端掉线且在线客户端的数量不小于3的情况下,所述公共元素选取单元包括:
随机数种子生成子单元,用于生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;
待定公共元素获取子单元,用于根据所述第二随机数种子和预设随机算法生成一个随机索引,依据所述随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共索引元素;
结果表决子单元,用于对所述待定公共元素与自身的私有元素进行比较,并根据比较结果向其他在线客户端公布表示是否将所述待定公共元素作为公共元素的表决结果;
公共元素确定子单元,用于当所有在线客户端的表决结果为可以将所述待定公共元素作为公共元素时,将所述待定公共元素作为公共元素,当不是所有在线客户端的表决结果为可以将所述待定公共元素作为公共元素时,触发所述随机数种子生成子单元,直到得到第三预设数量的公共元素。
可选的,所述结果表决子单元,具体用于执行多轮抛硬币协议表决,当所述待定公共元素与自身的私有元素重复时,在多轮抛硬币协议表决中随机选择第四预设数量的轮次进行否定表决,并向其他在线客户端公布表决结果;当所述待定公共元素与自身的私有元素不重复时,在多轮抛硬币协议表决中以预设概率进行否定表决,并向其他在线客户端公布表决结果。
可选的,所述结果表决子单元,具体用于在执行每一轮抛硬币协议表决的过程中,按照预先设定的顺序确定本客户端两个相邻的在线客户端,分别与两个相邻的在线客户端之间进行私密的模拟抛硬币,并分别获取两次抛硬币的结果,抛硬币的结果包括:两次抛硬币的结果相同和两次抛硬币的结果不同;当进行否定表决时则向其他在线客户端公布与实际抛硬币结果相反的抛硬币结果,当进行肯定表决时则向其他在线客户端公布与实际抛硬币结果相同的抛硬币结果。
可选的,在本轮次数据处理的过程中,当有客户端掉线且仅有2个在线客户端的情况下,所述公共元素选取单元,具体用于生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;根据所述第二随机数种子和预设随机算法生成一个随机索引,依据所述随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共元素;当所述待定公共元素与自身的私有元素重复时,向本轮次其他在线客户端进行否定表决,并当所述待定公共元素与自身的私有元素不重复时,以1/2的概率向本轮次其他在线客户端进行否定表决;当本轮次所有在线客户端都进行非否定表决时,将所述待定公共元素确定为公共元素,并返回执行根据所述第二随机数种子和预设随机算法生成一个随机索引这一步骤,直到得到第三预设数量的公共元素。
本实施例公开的一种在线多方安全数据处理装置,应用于参与同一轮次数据处理的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,整个数据处理过程中无需中心服务器的参与,所有核心运算均由在线参与的客户端完成,避免了传统中心化服务器结构中数据处理结果不被信任的问题。所有参与数据处理的客户端均生成各自的加密密钥和解密密钥,依次对目标数组进行加密和和打乱顺序处理得到加密后的目标数组,再依次从加密后的目标数组中选取与其他客户端不同的索引元素,经过其他客户端依次对其进行解密后得到索引数字,最后所有客户端生成相同的随机数组,并将各自的索引数字对应匹配在该随机数组中得到各自的私有元素,任意一个客户端都无法得知其他客户端的私有元素,私有元素具有私密性且不可预测。因此,私有元素可以为棋牌游戏中的手牌、在线抽奖的开奖结果以及摇号系统的摇号结果等,保证了数据处理结果的真实性。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种在线多方安全数据处理方法,其特征在于,应用于参与同一轮次数据处理的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,所述方法包括:
生成加密密钥和解密密钥;
接收目标数组,当本客户端为本轮次数据处理的第一个客户端时,生成一个包括第一预设数量元素的数组,作为本客户端接收的目标数组,并向本轮次其他客户端进行公布;
利用所述加密密钥对目标数组中的每个元素进行加密,将元素的顺序打乱,从而生成下一客户端的目标数组并发送到下一客户端,使下一客户端对其接收到的目标数组进行同样的加密和打乱顺序处理,直到所有客户端都完成对各自目标数组的加密和打乱顺序处理,得到加密后的目标数组;
从所述加密后的目标数组中,选取第二预设数量且与本轮次其他客户端选取的元素不同的元素作为本客户端选取的索引元素,将所述索引元素发送到下一客户端,使下一客户端利用其解密密钥对所述索引元素进行解密,直到接收到本轮次其他所有客户端都解密后的索引元素,并利用所述解密密钥对其进行解密得到第二预设数量的索引数字;
当本轮次所有客户端都得到各自的索引数字后,将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,本轮次每个客户端生成的随机数组相同;
分别依据每个所述索引数字在所述随机数组中匹配到相应的元素,得到第二预设数量的私有元素。
2.根据权利要求1所述的方法,其特征在于,所述生成加密密钥和解密密钥,包括:
当本客户端为指定客户端时,生成两个不相等的大素数,并向参与本轮次数据处理的所有客户端公布生成的两个大素数;
当本客户端不是指定客户端时,接收指定客户端公布的两个大素数;
依据两个大素数,生成符合RSA加密算法的加密密钥和解密密钥,其中,所述加密密钥和所述解密密钥作为本客户端的私密密钥,不向本轮次的其他客户端公开。
3.根据权利要求1所述的方法,其特征在于,所述将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,包括:
生成一个第一随机数;
计算第一随机数的哈希值,并将第一随机数的哈希值向所有客户端进行公开;
当所有客户端都公开各自第一随机数的哈希值后,公开第一随机数;
当轮次所有客户端都公布第一随机数后,对所有的第一随机数进行求和,得到第一随机数种子;
根据所述第一随机数种子和预设随机算法,将将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组。
4.根据权利要求1所述的方法,其特征在于,在本轮次所有客户端都得到各自的私有元素之后,所述方法还包括:
在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,所述公共元素与本轮次每个客户端的私有元素都不相同;
当选取第三预设数量的公共元素之后,将所述公共元素向本轮次所有客户端公开。
5.根据权利要求4所述的方法,其特征在于,在本轮次数据处理的过程中,当所有客户端都在线的情况下,所述在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,包括:
在所述加密后的目标数组中剔除掉本轮次每个客户端选取的元素,得到待选取公共元素数组;
生成并公布一个第二随机数,当所有客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子,根据所述第二随机数种子和预设随机算法生成第三预设数量的随机索引;
分别依据每个所述随机索引在所述待选取公共元素数组中匹配到相应的元素,得到第三预设数量的公共索引元素;
当本轮次所有客户端依次按照本轮次的数据处理顺序对每个所述公共索引元素进行解密后,得到第三预设数量的公共索引数字;
分别依据每个所述公共索引数字在所述随机数组中匹配到相应的元素,得到第三预设数量的公共元素。
6.根据权利要求4所述的方法,其特征在于,在本轮次数据处理的过程中,当有客户端掉线且在线客户端的数量不小于3的情况下,所述在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,包括:
生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;
根据所述第二随机数种子和预设随机算法生成一个随机索引,依据所述随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共元素;
对所述待定公共元素与自身的私有元素进行比较,并根据比较结果向其他在线客户端公布表示是否将所述待定公共元素作为公共元素的表决结果;
当所有在线客户端的表决结果为可以将所述待定公共元素作为公共元素时,将所述待定公共元素作为公共元素,当不是所有在线客户端的表决结果为可以将所述待定公共元素作为公共元素时,返回执行所述生成并公布一个第二随机数这一步骤,直到得到第三预设数量的公共元素。
7.根据权利要求6所述的方法,其特征在于,所述根据比较结果向其他在线客户端公布表示是否将所述待定公共元素作为公共元素的表决结果,包括:
执行多轮抛硬币协议表决,当所述待定公共元素与自身的私有元素重复时,在多轮抛硬币协议表决中随机选择第四预设数量的轮次进行否定表决,并向其他在线客户端公布表决结果;
当所述待定公共元素与自身的私有元素不重复时,在多轮抛硬币协议表决中以预设概率进行否定表决,并向其他在线客户端公布表决结果。
8.根据权利要求7所述的方法,其特征在于,所述执行多轮抛硬币协议表决,包括:
在执行每一轮抛硬币协议表决的过程中,按照预先设定的顺序确定本客户端两个相邻的在线客户端,分别与两个相邻的在线客户端之间进行私密的模拟抛硬币,并分别获取两次抛硬币的结果,抛硬币的结果包括:两次抛硬币的结果相同和两次抛硬币的结果不同;
当进行否定表决时则向其他在线客户端公布与实际抛硬币结果相反的抛硬币结果,当进行肯定表决时则向其他在线客户端公布与实际抛硬币结果相同的抛硬币结果。
9.根据权利要求4所述的方法,其特征在于,在本轮次数据处理的过程中,当有客户端掉线且仅有2个在线客户端的情况下,所述在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,包括:
生成并公布一个第二随机数,当所有在线客户端都公布第二随机数后,对所有的第二随机数进行求和,得到第二随机数种子;
根据所述第二随机数种子和预设随机算法生成一个随机索引,依据所述随机索引在本轮次第一个客户端公布的目标数组或所述随机数组中匹配到相应的元素,得到待定公共元素;
当所述待定公共元素与自身的私有元素重复时,向本轮次其他在线客户端进行否定表决,并当所述待定公共元素与自身的私有元素不重复时,以1/2的概率向本轮次其他在线客户端进行否定表决;
当本轮次所有在线客户端都进行非否定表决时,将所述待定公共元素确定为公共元素,并返回执行根据所述第二随机数种子和预设随机算法生成一个随机索引这一步骤,直到得到第三预设数量的公共元素。
10.一种在线多方安全数据处理装置,其特征在于,应用于参与同一轮次数据处理的任意一个客户端,其中,同一轮次包括至少2个客户端,且同一轮次中客户端按照预先设定的顺序依次进行数据处理,所述装置包括:
密钥生成单元,用于生成加密密钥和解密密钥;
目标数组接收单元,用于接收目标数组,当本客户端为本轮次数据处理的第一个客户端时,生成一个包括第一预设数量元素的数组,作为本客户端接收的目标数组,并向本轮次其他客户端进行公布;
目标数组加密单元,用于利用所述加密密钥对目标数组中的每个元素进行加密,将元素的顺序打乱,从而生成下一客户端的目标数组并发送到下一客户端,使下一客户端对其接收到的目标数组进行同样的加密和打乱顺序处理,直到所有客户端都完成对各自目标数组的加密和打乱顺序处理,得到加密后的目标数组;
选取元素解密单元,用于从所述加密后的目标数组中,选取第二预设数量且与本轮次其他客户端选取的元素不同的元素作为本客户端选取的索引元素,将所述索引元素发送到下一客户端,使下一客户端利用其解密密钥对所述索引元素进行解密,直到接收到本轮次其他所有客户端都解密后的索引元素,并利用所述解密密钥对其进行解密得到第二预设数量的索引数字;
随机数组生成单元,用于当本轮次所有客户端都得到各自的索引数字后,将本轮次第一个客户端公布的目标数组中的元素的顺序打乱,生成一个随机数组,本轮次每个客户端生成的随机数组相同;
私有元素获取单元,用于分别依据每个所述索引数字在所述随机数组中匹配到相应的元素,得到第二预设数量的私有元素。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
公共元素选取单元,用于在本轮次第一个客户端公布的目标数组或所述随机数组中选取第三预设数量的不可预测的公共元素,所述公共元素与本轮次每个客户端的私有元素都不相同;
公共元素公开单元,用于当选取第三预设数量的公共元素之后,将所述公共元素向本轮次所有客户端公开。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910032643.7A CN111435911B (zh) | 2019-01-14 | 2019-01-14 | 一种在线多方安全数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910032643.7A CN111435911B (zh) | 2019-01-14 | 2019-01-14 | 一种在线多方安全数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111435911A true CN111435911A (zh) | 2020-07-21 |
CN111435911B CN111435911B (zh) | 2023-02-17 |
Family
ID=71580746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910032643.7A Active CN111435911B (zh) | 2019-01-14 | 2019-01-14 | 一种在线多方安全数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111435911B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102194271A (zh) * | 2010-03-16 | 2011-09-21 | 李代甫 | 一种计算机选号的方法、装置及其应用 |
CN101729554B (zh) * | 2008-11-27 | 2013-05-29 | 北京大学 | 一种分布式计算中基于密码学的除法协议构造方法 |
EP2639997A1 (en) * | 2012-03-15 | 2013-09-18 | ATS Group (IP Holdings) Limited | Method and system for secure access of a first computer to a second computer |
US8850203B2 (en) * | 2009-08-28 | 2014-09-30 | Alcatel Lucent | Secure key management in multimedia communication system |
CN104580250A (zh) * | 2015-01-29 | 2015-04-29 | 成都卫士通信息产业股份有限公司 | 一种基于安全芯片进行可信身份认证的系统和方法 |
CN103107890B (zh) * | 2013-02-08 | 2016-08-31 | 彭艳兵 | 一种多方加密、签名、零知识证明的方法 |
CN106664205A (zh) * | 2014-04-17 | 2017-05-10 | 赫尔实验室有限公司 | 用于安全弹性分布式生成具有主动安全性的基于椭圆曲线数字签名算法(ecdsa)的数字签名的方法 |
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及系统 |
US9787650B2 (en) * | 2007-11-07 | 2017-10-10 | Toposis Corporation | System and method for multiparty billing of network services |
CN107294937A (zh) * | 2016-04-11 | 2017-10-24 | 平安科技(深圳)有限公司 | 基于网络通信的数据传输方法、客户端及服务器 |
CN108173906A (zh) * | 2017-12-07 | 2018-06-15 | 东软集团股份有限公司 | 安装包下载方法、装置、存储介质及电子设备 |
CN108282327A (zh) * | 2017-01-06 | 2018-07-13 | 重庆邮电大学 | 一种基于混沌rsa加密的opc ua秘钥交换方法 |
CN108768998A (zh) * | 2018-05-24 | 2018-11-06 | 王逸人 | 一种基于ssl加密的智能无线通讯系统 |
-
2019
- 2019-01-14 CN CN201910032643.7A patent/CN111435911B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9787650B2 (en) * | 2007-11-07 | 2017-10-10 | Toposis Corporation | System and method for multiparty billing of network services |
CN101729554B (zh) * | 2008-11-27 | 2013-05-29 | 北京大学 | 一种分布式计算中基于密码学的除法协议构造方法 |
US8850203B2 (en) * | 2009-08-28 | 2014-09-30 | Alcatel Lucent | Secure key management in multimedia communication system |
CN102194271A (zh) * | 2010-03-16 | 2011-09-21 | 李代甫 | 一种计算机选号的方法、装置及其应用 |
EP2639997A1 (en) * | 2012-03-15 | 2013-09-18 | ATS Group (IP Holdings) Limited | Method and system for secure access of a first computer to a second computer |
CN103107890B (zh) * | 2013-02-08 | 2016-08-31 | 彭艳兵 | 一种多方加密、签名、零知识证明的方法 |
CN106664205A (zh) * | 2014-04-17 | 2017-05-10 | 赫尔实验室有限公司 | 用于安全弹性分布式生成具有主动安全性的基于椭圆曲线数字签名算法(ecdsa)的数字签名的方法 |
CN104580250A (zh) * | 2015-01-29 | 2015-04-29 | 成都卫士通信息产业股份有限公司 | 一种基于安全芯片进行可信身份认证的系统和方法 |
CN107294937A (zh) * | 2016-04-11 | 2017-10-24 | 平安科技(深圳)有限公司 | 基于网络通信的数据传输方法、客户端及服务器 |
CN108282327A (zh) * | 2017-01-06 | 2018-07-13 | 重庆邮电大学 | 一种基于混沌rsa加密的opc ua秘钥交换方法 |
CN107017993A (zh) * | 2017-04-01 | 2017-08-04 | 北京江南天安科技有限公司 | 一种多方联合密钥产生和数字签名方法及系统 |
CN108173906A (zh) * | 2017-12-07 | 2018-06-15 | 东软集团股份有限公司 | 安装包下载方法、装置、存储介质及电子设备 |
CN108768998A (zh) * | 2018-05-24 | 2018-11-06 | 王逸人 | 一种基于ssl加密的智能无线通讯系统 |
Non-Patent Citations (6)
Title |
---|
HYUNGHOON CHO ECT.: "Secure genome-wide association analysis using multiparty computation", 《NATURE BIOTECHNOLOGY》 * |
LI WENG: "A Privacy-Preserving Framework for Large-Scale Content-Based Information Retrieval", 《IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY》 * |
仲红等: "基于安全多方求和的多候选人电子选举方案", 《计算机研究与发展》 * |
傅泽源等: "基于安全多方的公平秘密共享方案", 《数学建模及其应用》 * |
刘家宏等: "随机数在保密传输中的应用", 《网络安全技术与应用》 * |
叶云等: "一种基于top-m Dk-Outlier的隐私保护异常数据检测算法", 《小型微型计算机系统》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111435911B (zh) | 2023-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10748377B1 (en) | Distributed secrets for validation of gaming transactions | |
Ziegeldorf et al. | Coinparty: Secure multi-party mixing of bitcoins | |
CN113111373B (zh) | Vbft共识机制的随机数生成方法和共识机制系统 | |
EP3574482B1 (en) | Voting system and method | |
EP4117228B1 (en) | Systems and methods for communication, storage and processing of data provided by an entity over a blockchain network | |
Lee et al. | Providing receipt-freeness in mixnet-based voting protocols | |
AU2013326169B2 (en) | Methods for securing data generation via multi-part generation seeds | |
CN112511307B (zh) | 一种基于单粒子的量子保密投票方法 | |
CN101908961B (zh) | 一种短密钥环境下多方秘密握手方法 | |
Syta et al. | Security analysis of accountable anonymity in dissent | |
Abe et al. | Flaws in some robust optimistic mix-nets | |
CN111052673A (zh) | 匿名广播方法、密钥交换方法、匿名广播系统、密钥交换系统、通信装置、程序 | |
Corman et al. | A secure event agreement (SEA) protocol for peer-to-peer games | |
US11784822B2 (en) | System and method for transmitting a notification to a network | |
CN111435911B (zh) | 一种在线多方安全数据处理方法及装置 | |
JP4776378B2 (ja) | 複数鍵認証端末装置及び複数鍵認証管理装置及び複数鍵認証システム及びプログラム | |
Simić et al. | A review on generating random numbers in decentralised environments | |
KR102021164B1 (ko) | “페어 플레이” 온라인 게이밍의 생성 및 모니터링 | |
CN111420405A (zh) | 基于区块链技术的去中心化牌类游戏方法及其系统 | |
Chang et al. | Detecting dealer cheating in secret sharing systems | |
Silva et al. | A Fair, Traceable, Auditable and Participatory Randomization Tool for Legal Systems | |
WO2004035159A1 (es) | Método para la obtención de un resultado imparcial de un juego a través de una red de comunicación y protocolos y programas asociados | |
Vives | Shuffling Public Keys (A Peer-to-peer Voting Algorithm) | |
Jakobsen | Practical aspects of secure multiparty computation | |
Aboud et al. | An efficient Internet bingo scheme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |