一种安全两方比较方法及系统转让专利
申请号 : CN202111344055.0
文献号 : CN113792322B
文献日 : 2022-02-15
发明人 : 石宁 , 姜冲 , 李天莹 , 朱晓罡 , 于中磊
申请人 : 南京可信区块链与算法经济研究院有限公司
摘要 :
权利要求 :
1.一种安全两方比较方法,其特征在于,包括:第一方按照第一预设加密规则,对第一数据进行加密处理,得到第一加密向量;
所述第一方根据随机生成的第一随机向量,以及所述第一加密向量,生成第一目标向量;
第二方按照第二预设加密规则,对第二数据进行加密处理,得到第二加密向量;
所述第二方根据随机生成的第二随机向量,以及所述第二加密向量,生成第二目标向量;
所述第二方根据所述第一目标向量以及所述第二随机向量,生成第三目标向量;
所述第一方根据所述第三目标向量以及所述第一随机向量,生成第四目标向量;
所述第二方根据所述第四目标向量以及所述第二目标向量,生成差值向量;
所述第二方判断所述差值向量中是否存在值为零的元素,若存在,则判定所述第一数据大于所述第二数据;或者,若不存在,则判定所述第一数据小于或等于所述第二数据;
其中,所述第一方按照第一预设加密规则,对第一数据进行加密处理,得到第一加密向量,包括:
第一方对第一数据进行二进制转换、长度调整和补位操作,得到第一中间数据,所述第一中间数据的二进制长度为补位目标长度,所述补位目标长度比预设的目标长度多一位,所述补位操作为在二进制转换和长度调整后的数据的最高位之前补一;
所述第一方对所述第一中间数据进行1编码,得到第一编码集合;
所述第一方对所述第一编码集合中的每一个元素进行数值转换处理,得到第一加密向量;
所述第一方根据随机生成的第一随机向量,以及所述第一加密向量,生成第一目标向量,包括:
所述第一方对所述第一加密向量进行转置,得到第一转置向量;
所述第一方将所述第一转置向量与随机生成的第一随机向量进行向量点乘运算,生成第一目标向量;
所述第二方根据所述第一目标向量以及所述第二随机向量,生成第三目标向量,包括:所述第二方将所述第一目标向量与所述第二随机向量进行向量点乘运算,生成第三目标向量;
所述第一方根据所述第三目标向量以及所述第一随机向量,生成第四目标向量,包括:所述第一方获取所述第一随机向量的第一逆向量;
所述第一方将所述第一逆向量与所述第三目标向量进行向量点乘运算,生成第四目标向量;
所述第二方按照第二预设加密规则,对第二数据进行加密处理,得到第二加密向量,包括:
第二方对第二数据进行二进制转换、长度调整和所述补位操作,得到第二中间数据,所述第二中间数据的二进制长度为所述补位目标长度;
所述第二方对所述第二中间数据进行0编码,得到第二编码集合;
所述第二方对所述第二编码集合中的每一个元素进行数值转换处理,得到第二加密向量;
所述第二方根据随机生成的第二随机向量,以及所述第二加密向量,生成第二目标向量,包括:
所述第二方对所述第二加密向量进行转置,得到第二转置向量;
所述第二方将所述第二转置向量与随机生成的第二随机向量进行向量点乘运算,生成第二目标向量;
所述第一方对所述第一中间数据进行1编码,得到第一编码集合,包括:所述第一方按照从最高位至最低位的顺序,依次判断所述第一中间数据中除最高位以外的每一位的数据是否为1;
如果任一目标位的数据为1,则所述第一方获取所述第一中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为1;如果任一目标位数据不为1,则所述第一方将极大值数据作为编码元素,并继续判断目标位的后一位是否为1,直至完成所述第一中间数据的最末位的判断,其中,所述极大值数据为所述补位目标长度所能表示的最大二进制数据;
按照获取顺序,所述第一方将各个编码元素共同排列为第一编码集合;
所述第二方对所述第二中间数据进行0编码,得到第二编码集合,包括:所述第二方按照从最高位至最低位的顺序,依次判断所述第二中间数据中除最高位以外的每一位的数据是否为0;
如果任一目标位的数据为0,则所述第二方获取所述第二中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为0;如果任一目标位数据不为0,则所述第二方将极小值数据作为编码元素,并继续判断目标位的后一位是否为0,直至完成所述第二中间数据的最末位的判断,其中,所述极小值数据为所述补位目标长度所能表示的最小非负二进制数据;
按照获取顺序,所述第二方将各个编码元素共同排列为第二编码集合。
2.一种安全两方比较系统,其特征在于,包括第一方和第二方,所述第一方包括依次连接的第一加密向量生成模块、第一目标向量生成模块和第四目标向量生成模块,所述第二方包括依次连接的第二加密向量生成模块、第二目标向量生成模块和第三目标向量生成模块,所述第三目标向量生成模块还分别与所述第一目标向量生成模块和所述第四目标向量生成模块连接;
所述第二方还包括依次连接的差值向量生成模块和判定模块,所述差值向量生成模块还分别与所述第二目标向量生成模块和所述第四目标向量生成模块连接;其中:所述第一加密向量生成模块,用于按照第一预设加密规则,对第一数据进行加密处理,得到第一加密向量;
所述第一目标向量生成模块,用于根据随机生成的第一随机向量,以及所述第一加密向量,生成第一目标向量;
所述第二加密向量生成模块,用于按照第二预设加密规则,对第二数据进行加密处理,得到第二加密向量;
所述第二目标向量生成模块,用于根据随机生成的第二随机向量,以及所述第二加密向量,生成第二目标向量;
所述第三目标向量生成模块,用于根据所述第一目标向量以及所述第二随机向量,生成第三目标向量;
所述第四目标向量生成模块,用于根据所述第三目标向量以及所述第一随机向量,生成第四目标向量;
所述差值向量生成模块,用于根据所述第四目标向量以及所述第二目标向量,生成差值向量;
所述判定模块,用于判断所述差值向量中是否存在值为零的元素,若存在,则判定所述第一数据大于所述第二数据;或者,若不存在,则判定所述第一数据小于或等于所述第二数据;
其中,所述第一加密向量生成模块包括:第一转换子模块,用于对第一数据进行二进制转换、长度调整和补位操作,得到第一中间数据,所述第一中间数据的二进制长度为补位目标长度,所述补位目标长度比预设的目标长度多一位,所述补位操作为在二进制转换和长度调整后的数据的最高位之前补一;
1编码子模块,用于对所述第一中间数据进行1编码,得到第一编码集合;
第一数值转换子模块,用于对所述第一编码集合中的每一个元素进行数值转换处理,得到第一加密向量;
所述第一目标向量生成模块包括:第一转置子模块,用于对所述第一加密向量进行转置,得到第一转置向量;
第一点乘子模块,用于将所述第一转置向量与随机生成的第一随机向量进行向量点乘运算,生成第一目标向量;
所述第三目标向量生成模块包括:第二点乘子模块,用于将所述第一目标向量与所述第二随机向量进行向量点乘运算,生成第三目标向量;
所述第四目标向量生成模块包括:逆向量获取子模块,用于获取所述第一随机向量的第一逆向量;
第三点乘子模块,用于将所述第一逆向量与所述第三目标向量进行向量点乘运算,生成第四目标向量;
所述第二加密向量生成模块包括:第二转换子模块,用于对第二数据进行二进制转换、长度调整和所述补位操作,得到第二中间数据,所述第二中间数据的二进制长度为所述补位目标长度;
0编码子模块,用于对所述第二中间数据进行0编码,得到第二编码集合;
第二数值转换子模块,用于对所述第二编码集合中的每一个元素进行数值转换处理,得到第二加密向量;
所述第二目标向量生成模块包括:第二转置子模块,用于对所述第二加密向量进行转置,得到第二转置向量;
第四点乘子模块,用于将所述第二转置向量与随机生成的第二随机向量进行向量点乘运算,生成第二目标向量;
所述1编码子模块包括:
第一判断单元,用于按照从最高位至最低位的顺序,依次判断所述第一中间数据中除最高位以外每一位的数据是否为1;
第一编码元素获取单元,用于如果任一目标位的数据为1,则获取所述第一中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为1;如果任一目标位数据不为1,则将极大值数据作为编码元素,并继续判断目标位的后一位是否为1,直至完成所述第一中间数据的最末位的判断,其中,所述极大值数据为所述补位目标长度所能表示的最大二进制数据;
第一编码集合生成单元,用于按照获取顺序,将各个编码元素共同排列为第一编码集合;
所述0编码子模块包括:
第二判断单元,用于按照从最高位至最低位的顺序,依次判断所述第二中间数据中除最高位以外每一位的数据是否为0;
第二编码元素获取单元,用于如果任一目标位的数据为0,则获取所述第二中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为0;如果任一目标位数据不为0,则将极小值数据作为编码元素,并继续判断目标位的后一位是否为0,直至完成所述第二中间数据的最末位的判断,其中,所述极小值数据为所述补位目标长度所能表示的最小非负二进制数据;
第二编码集合生成单元,用于按照获取顺序,将各个编码元素共同排列为第二编码集合。
说明书 :
一种安全两方比较方法及系统
技术领域
背景技术
据大小的情况下,例如投标或者拍卖,用户通常希望可以不泄露自身数据信息,并且不借助
第三方来实现比较数据大小的目的。类似于著名的百万富翁问题,即两个百万富翁都想比
较到底谁更富有,但是又都不想让别人知道自己有多少钱,如此,需要在保密各自信息以及
没有可信的第三方的情况下,比较两方所拥有的数据信息的大小。
减法同态加密和解密计算后得到计算结果,最终根据计算结果所在区间,确定两方的数据
大小。采用此种安全两方比较方法,由于主要使用同态加密计算,因此在计算过程中涉及较
多的幂模计算,整个方法的计算效率和通信效率均较低。
发明内容
据。
位,所述补位操作为在二进制转换和长度调整后的数据的最高位之前补一;
位数据不为1,则所述第一方将极大值数据作为编码元素,并继续判断目标位的后一位是否
为1,直至完成所述第一中间数据的最末位的判断,其中,所述极大值数据为所述补位目标
长度所能表示的最大二进制数据;
位数据不为0,则所述第二方将极小值数据作为编码元素,并继续判断目标位的后一位是否
为0,直至完成所述第二中间数据的最末位的判断,其中,所述极小值数据为所述补位目标
长度所能表示的最小非负二进制数据;
成模块,所述第二方包括依次连接的第二加密向量生成模块、第二目标向量生成模块和第
三目标向量生成模块,所述第三目标向量生成模块还分别与所述第一目标向量生成模块和
所述第四目标向量生成模块连接;
二数据。
的目标长度多一位,所述补位操作为在二进制转换和长度调整后的数据的最高位之前补
一;
1;如果任一目标位数据不为1,则将极大值数据作为编码元素,并继续判断目标位的后一位
是否为1,直至完成所述第一中间数据的最末位的判断,其中,所述极大值数据为所述补位
目标长度所能表示的最大二进制数据;
0;如果任一目标位数据不为0,则将极小值数据作为编码元素,并继续判断目标位的后一位
是否为0,直至完成所述第二中间数据的最末位的判断,其中,所述极小值数据为所述补位
目标长度所能表示的最小非负二进制数据;
向量对各自加密后的持有数据进行处理,分别得到第一目标向量和第二目标向量,第一方
将第一目标向量发送给第二方,第二方再结合自身的随机向量生成第三目标向量,并发送
给第一方,第一方再结合自身的随机向量生成第四目标向量,并发送给第二方,第二方再结
合第二目标向量生成差值向量,如果差值向量中存在值为零的元素,则判定第一方持有数
据大于第二方持有数据。整个比较方法中不涉及幂模运算,两方只需进行常数次通讯,即可
在不暴露自身持有数据大小的情况下进行比较,计算效率和通信效率均较高。
附图说明
具体实施方式
用于比较两个参与方的持有数据的大小,图1示例性示出了本申请实施例提供的一种安全
两方比较方法所对应的整体流程示意图,如图1所示,具体包括如下步骤:
使得位数可以达到预设的目标长度。长度调整后再进行补位操作,即在长度调整以后得到
的数据的最高位之前补“1”。
据不为1,则第一方将极大值数据作为编码元素,并继续判断目标位的后一位是否为1,直至
完成第一中间数据的最末位的判断。
11111,共5位,1编码时,按照从最高位至最低位的顺序,依次判断第一中间数据中除最高位
以外每一位的数据是否为1,从第二位开始,第二位为1,则将第一位数据1作为编码元素,继
续判断第三位依然为1,则将前两位数据11作为编码元素,继续判断第四位为1,则将前三位
数据111作为编码元素,继续判断第五位为1,则将前四位数据1111作为编码元素,最终按照
获取顺序得到的第一编码集合为A={1,11,111,1111}。
(7),H(15)),则第一转置向量a 与第一随机向量r进行向量点乘运算,得到第一目标向量=
T
a·r=(H(1)×r1,H(3)×r2,H(7)×r3,H(15)×r4)。
则第一转置向量a与第一随机向量r进行向量点乘运算,得到第一目标向量=a·r=(H(1)×
r1,H(3)×r2)。
一,此处不再赘述。
使得位数可以达到预设的目标长度。长度调整后再进行补位操作,即在长度调整后的数据
的最高位之前补“1”。
据不为0,则第二方将极小值数据作为编码元素,并继续判断目标位的后一位是否为0,直至
完成第二中间数据的最末位的判断。
11001,共5位,0编码时,按照从最高位至最低位的顺序,依次判断第二中间数据中除最高位
以外每一位的数据是否为0,从第二位开始,第二位为1,则将极小值数据0作为编码元素,继
续判断第三位为0,则将前两位数据11作为编码元素,继续判断第四位为0,则将前三位数据
110作为编码元素,继续判断第五位为1,则将极小值数据0作为编码元素,最终按照获取顺
序得到的第二编码集合为B={0,11,110,0}。
(6),H(0)),则第二转置向量b 与第二随机向量k进行向量点乘运算,得到第二目标向量=
T
b·k=(H(0)×k1,H(3)×k2,H(6)×k3,H(0)×k4)。
r4),第二随机向量为k=(k1,k2,k3,k4),则第三目标向量=a·r·k=(H(1)×r1×k1,H(3)
×r2×k2,H(7)×r3×k3,H(15)×r4×k4)。
×r1×k1,H(3)×r2×k2,H(7)×r3×k3,H(15)×r4×k4),则第四目标向量=r ·a·r·k
T
=a·k=(H(1)×k1,H(3)×k2,H(7)×k3,H(15)×k4)。
k4),第二目标向量=b·k=(H(0)×k1,H(3)×k2,H(6)×k3,H(0)×k4),则差值向量T=a·
T
k‑b·k=(H(1)×k1‑H(0)×k1,H(3)×k2‑H(3)×k2,H(7)×k3‑H(6)×k3,H(15)×k4‑H(0)
×k4)=(H(1)×k1‑H(0)×k1,0,H(7)×k3‑H(6)×k3,H(15)×k4‑H(0)×k4)。
不存在值为零的元素,则第一编码集合与第二编码集合交集为空,即可得第一数据小于或
等于第二数据。
持有数据进行处理,分别得到第一目标向量和第二目标向量,第一方将第一目标向量发送
给第二方,第二方再结合自身的随机向量生成第三目标向量,并发送给第一方,第一方再结
合自身的随机向量生成第四目标向量,并发送给第二方,第二方再结合第二目标向量生成
差值向量,如果差值向量中存在值为零的元素,则判定第一方持有数据大于第二方持有数
据。整个比较方法中不涉及幂模运算,两方只需进行常数次通讯,即可在不暴露自身持有数
据大小的情况下进行比较,计算效率和通信效率均较高。
以由硬件执行相应的软件实现。该系统可以包括第一方201和第二方202,第一方201包括依
次连接的第一加密向量生成模块2011、第一目标向量生成模块2012和第四目标向量生成模
块2013,第二方202包括依次连接的第二加密向量生成模块2021、第二目标向量生成模块
2022和第三目标向量生成模块2023,第三目标向量生成模块2023还分别与第一目标向量生
成模块2012和第四目标向量生成模块2013连接。第二方202还包括依次连接的差值向量生
成模块2024和判定模块2025,差值向量生成模块2024还分别与第二目标向量生成模块2022
和第四目标向量生成模块2013连接。其中:
度多一位,补位操作为在二进制转换和长度调整后的数据的最高位之前补一。
果任一目标位数据不为1,则将极大值数据作为编码元素,并继续判断目标位的后一位是否
为1,直至完成所述第一中间数据的最末位的判断,其中,所述极大值数据为所述补位目标
长度所能表示的最大二进制数据。
果任一目标位数据不为0,则将极小值数据作为编码元素,并继续判断目标位的后一位是否
为0,直至完成第二中间数据的最末位的判断,其中,极小值数据为补位目标长度所能表示
的最小非负二进制数据。
持有数据进行处理,分别得到第一目标向量和第二目标向量,第一方将第一目标向量发送
给第二方,第二方再结合自身的随机向量生成第三目标向量,并发送给第一方,第一方再结
合自身的随机向量生成第四目标向量,并发送给第二方,第二方再结合第二目标向量生成
差值向量,如果差值向量中存在值为零的元素,则判定第一方持有数据大于第二方持有数
据。整个比较方法中不涉及幂模运算,两方只需进行常数次通讯,即可在不暴露自身持有数
据大小的情况下进行比较,计算效率和通信效率均较高。
可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请
的范围内。本申请的保护范围以所附权利要求为准。