一种安全两方比较方法及系统

文档序号:1963938 发布日期:2021-12-14 浏览:23次 >En<

阅读说明:本技术 一种安全两方比较方法及系统 (Safe two-party comparison method and system ) 是由 石宁 姜冲 李天莹 朱晓罡 于中磊 于 2021-11-15 设计创作,主要内容包括:本申请提供一种安全两方比较方法及系统。所述比较方法包括:第一方和第二方分别按照各自预设的加密规则对持有数据进行加密,并利用各自生成的随机向量对各自加密后的持有数据进行处理,分别得到第一目标向量和第二目标向量,第一方将第一目标向量发送给第二方,第二方再结合自身的随机向量生成第三目标向量,并发送给第一方,第一方再结合自身的随机向量生成第四目标向量,并发送给第二方,第二方再结合第二目标向量生成差值向量,如果差值向量中存在值为零的元素,则判定第一方持有数据大于第二方持有数据。整个比较方法中不涉及幂模运算,两方只需进行常数次通讯,即可在不暴露自身持有数据大小的情况下进行比较,计算效率和通信效率均较高。(The application provides a method and a system for comparing two safe parties. The comparison method comprises the following steps: the method comprises the steps that a first party and a second party encrypt holding data according to respective preset encryption rules, the encrypted holding data are processed by random vectors generated by the first party and the second party respectively, a first target vector and a second target vector are obtained respectively, the first party sends the first target vector to the second party, the second party generates a third target vector by combining the random vectors of the second party and sends the third target vector to the first party, the first party generates a fourth target vector by combining the random vectors of the first party and sends the fourth target vector to the second party, the second party generates a difference vector by combining the second target vector, and if elements with zero values exist in the difference vector, the fact that the holding data of the first party are larger than the holding data of the second party is judged. The whole comparison method does not involve power-mode operation, two parties only need to carry out constant communication for a plurality of times, comparison can be carried out under the condition that the size of data held by the parties is not exposed, and both the calculation efficiency and the communication efficiency are high.)

一种安全两方比较方法及系统

技术领域

本申请涉及信息安全技术领域,特别涉及一种安全两方比较方法及系统。

背景技术

随着电子商务的迅速发展,涉及敏感数据的计算通常会在网上进行,比如可以在计算机上完成交易。为了更好地保护用户隐私和自身利益,在电子商务中涉及需要比较数据大小的情况下,例如投标或者拍卖,用户通常希望可以不泄露自身数据信息,并且不借助第三方来实现比较数据大小的目的。类似于著名的百万富翁问题,即两个百万富翁都想比较到底谁更富有,但是又都不想让别人知道自己有多少钱,如此,需要在保密各自信息以及没有可信的第三方的情况下,比较两方所拥有的数据信息的大小。

目前解决百万富翁问题所采用的安全两方比较方法,主要是基于不经意传输技术并结合乘法和减法同态加密计算,提出安全两方计算协议,安全两方计算协议经过乘法和减法同态加密和解密计算后得到计算结果,最终根据计算结果所在区间,确定两方的数据大小。采用此种安全两方比较方法,由于主要使用同态加密计算,因此在计算过程中涉及较多的幂模计算,整个方法的计算效率和通信效率均较低。

发明内容

本申请提供了一种安全两方比较方法及系统,可用于解决现有安全两方比较方法的计算效率和通信效率均较低的技术问题。

第一方面,本申请实施例提供一种安全两方比较方法,包括:

第一方按照第一预设加密规则,对第一数据进行加密处理,得到第一加密向量;

所述第一方根据随机生成的第一随机向量,以及所述第一加密向量,生成第一目标向量;

第二方按照第二预设加密规则,对第二数据进行加密处理,得到第二加密向量;

所述第二方根据随机生成的第二随机向量,以及所述第二加密向量,生成第二目标向量;

所述第二方根据所述第一目标向量以及所述第二随机向量,生成第三目标向量;

所述第一方根据所述第三目标向量以及所述第一随机向量,生成第四目标向量;

所述第二方根据所述第四目标向量以及所述第二目标向量,生成差值向量;

所述第二方判断所述差值向量中是否存在值为零的元素,若存在,则判定所述第一数据大于所述第二数据;或者,若不存在,则判定所述第一数据小于或等于所述第二数据。

结合第一方面,在第一方面的一种可实现方式中,所述第一方按照第一预设加密规则,对第一数据进行加密处理,得到第一加密向量,包括:

第一方对第一数据进行二进制转换、长度调整和补位操作,得到第一中间数据,所述第一中间数据的二进制长度为补位目标长度,所述补位目标长度比预设的目标长度多一位,所述补位操作为在二进制转换和长度调整后的数据的最高位之前补一;

所述第一方对所述第一中间数据进行1编码,得到第一编码集合;

所述第一方对所述第一编码集合中的每一个元素进行数值转换处理,得到第一加密向量。

结合第一方面,在第一方面的一种可实现方式中,所述第一方对所述第一中间数据进行1编码,得到第一编码集合,包括:

所述第一方按照从最高位至最低位的顺序,依次判断所述第一中间数据中除最高位以外的每一位的数据是否为1;

如果任一目标位的数据为1,则所述第一方获取所述第一中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为1;如果任一目标位数据不为1,则所述第一方将极大值数据作为编码元素,并继续判断目标位的后一位是否为1,直至完成所述第一中间数据的最末位的判断,其中,所述极大值数据为所述补位目标长度所能表示的最大二进制数据;

按照获取顺序,所述第一方将各个编码元素共同排列为第一编码集合。

结合第一方面,在第一方面的一种可实现方式中,所述第一方根据随机生成的第一随机向量,以及所述第一加密向量,生成第一目标向量,包括:

所述第一方对所述第一加密向量进行转置,得到第一转置向量;

所述第一方将所述第一转置向量与随机生成的第一随机向量进行向量点乘运算,生成第一目标向量。

结合第一方面,在第一方面的一种可实现方式中,所述第二方根据所述第一目标向量以及所述第二随机向量,生成第三目标向量,包括:

所述第二方将所述第一目标向量与所述第二随机向量进行向量点乘运算,生成第三目标向量。

结合第一方面,在第一方面的一种可实现方式中,所述第一方根据所述第三目标向量以及所述第一随机向量,生成第四目标向量,包括:

所述第一方获取所述第一随机向量的第一逆向量;

所述第一方将所述第一逆向量与所述第三目标向量进行向量点乘运算,生成第四目标向量。

结合第一方面,在第一方面的一种可实现方式中,所述第二方按照第二预设加密规则,对第二数据进行加密处理,得到第二加密向量,包括:

第二方对第二数据进行二进制转换、长度调整和所述补位操作,得到第二中间数据,所述第二中间数据的二进制长度为所述补位目标长度;

所述第二方对所述第二中间数据进行0编码,得到第二编码集合;

所述第二方对所述第二编码集合中的每一个元素进行数值转换处理,得到第二加密向量。

结合第一方面,在第一方面的一种可实现方式中,所述第二方对所述第二中间数据进行0编码,得到第二编码集合,包括:

所述第二方按照从最高位至最低位的顺序,依次判断所述第二中间数据中除最高位以外的每一位的数据是否为0;

如果任一目标位的数据为0,则所述第二方获取所述第二中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为0;如果任一目标位数据不为0,则所述第二方将极小值数据作为编码元素,并继续判断目标位的后一位是否为0,直至完成所述第二中间数据的最末位的判断,其中,所述极小值数据为所述补位目标长度所能表示的最小非负二进制数据;

按照获取顺序,所述第二方将各个编码元素共同排列为第二编码集合。

结合第一方面,在第一方面的一种可实现方式中,所述第二方根据随机生成的第二随机向量,以及所述第二加密向量,生成第二目标向量,包括:

所述第二方对所述第二加密向量进行转置,得到第二转置向量;

所述第二方将所述第二转置向量与随机生成的第二随机向量进行向量点乘运算,生成第二目标向量。

第二方面,本申请实施例提供一种安全两方比较系统,包括第一方和第二方,所述第一方包括依次连接的第一加密向量生成模块、第一目标向量生成模块和第四目标向量生成模块,所述第二方包括依次连接的第二加密向量生成模块、第二目标向量生成模块和第三目标向量生成模块,所述第三目标向量生成模块还分别与所述第一目标向量生成模块和所述第四目标向量生成模块连接;

所述第二方还包括依次连接的差值向量生成模块和判定模块,所述差值向量生成模块还分别与所述第二目标向量生成模块和所述第四目标向量生成模块连接;其中:

所述第一加密向量生成模块,用于按照第一预设加密规则,对第一数据进行加密处理,得到第一加密向量;

所述第一目标向量生成模块,用于根据随机生成的第一随机向量,以及所述第一加密向量,生成第一目标向量;

所述第二加密向量生成模块,用于按照第二预设加密规则,对第二数据进行加密处理,得到第二加密向量;

所述第二目标向量生成模块,用于根据随机生成的第二随机向量,以及所述第二加密向量,生成第二目标向量;

所述第三目标向量生成模块,用于根据所述第一目标向量以及所述第二随机向量,生成第三目标向量;

所述第四目标向量生成模块,用于根据所述第三目标向量以及所述第一随机向量,生成第四目标向量;

所述差值向量生成模块,用于根据所述第四目标向量以及所述第二目标向量,生成差值向量;

所述判定模块,用于判断所述差值向量中是否存在值为零的元素,若存在,则判定所述第一数据大于所述第二数据;或者,若不存在,则判定所述第一数据小于或等于所述第二数据。

结合第二方面,在第二方面的一种可实现方式中,所述第一加密向量生成模块包括:

第一转换子模块,用于对第一数据进行二进制转换、长度调整和补位操作,得到第一中间数据,所述第一中间数据的二进制长度为补位目标长度,所述补位目标长度比预设的目标长度多一位,所述补位操作为在二进制转换和长度调整后的数据的最高位之前补一;

1编码子模块,用于对所述第一中间数据进行1编码,得到第一编码集合;

第一数值转换子模块,用于对所述第一编码集合中的每一个元素进行数值转换处理,得到第一加密向量。

结合第二方面,在第二方面的一种可实现方式中,所述1编码子模块包括:

第一判断单元,用于按照从最高位至最低位的顺序,依次判断所述第一中间数据中除最高位以外每一位的数据是否为1;

第一编码元素获取单元,用于如果任一目标位的数据为1,则获取所述第一中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为1;如果任一目标位数据不为1,则将极大值数据作为编码元素,并继续判断目标位的后一位是否为1,直至完成所述第一中间数据的最末位的判断,其中,所述极大值数据为所述补位目标长度所能表示的最大二进制数据;

第一编码集合生成单元,用于按照获取顺序,将各个编码元素共同排列为第一编码集合。

结合第二方面,在第二方面的一种可实现方式中,所述第一目标向量生成模块包括:

第一转置子模块,用于对所述第一加密向量进行转置,得到第一转置向量;

第一点乘子模块,用于将所述第一转置向量与随机生成的第一随机向量进行向量点乘运算,生成第一目标向量。

结合第二方面,在第二方面的一种可实现方式中,所述第三目标向量生成模块包括:

第二点乘子模块,用于将所述第一目标向量与所述第二随机向量进行向量点乘运算,生成第三目标向量。

结合第二方面,在第二方面的一种可实现方式中,所述第四目标向量生成模块包括:

逆向量获取子模块,用于获取所述第一随机向量的第一逆向量;

第三点乘子模块,用于将所述第一逆向量与所述第三目标向量进行向量点乘运算,生成第四目标向量。

结合第二方面,在第二方面的一种可实现方式中,所述第二加密向量生成模块包括:

第二转换子模块,用于对第二数据进行二进制转换、长度调整和所述补位操作,得到第二中间数据,所述第二中间数据的二进制长度为所述补位目标长度;

0编码子模块,用于对所述第二中间数据进行0编码,得到第二编码集合;

第二数值转换子模块,用于对所述第二编码集合中的每一个元素进行数值转换处理,得到第二加密向量。

结合第二方面,在第二方面的一种可实现方式中,所述0编码子模块包括:

第二判断单元,用于按照从最高位至最低位的顺序,依次判断所述第二中间数据中除最高位以外每一位的数据是否为0;

第二编码元素获取单元,用于如果任一目标位的数据为0,则获取所述第二中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为0;如果任一目标位数据不为0,则将极小值数据作为编码元素,并继续判断目标位的后一位是否为0,直至完成所述第二中间数据的最末位的判断,其中,所述极小值数据为所述补位目标长度所能表示的最小非负二进制数据;

第二编码集合生成单元,用于按照获取顺序,将各个编码元素共同排列为第二编码集合。

结合第二方面,在第二方面的一种可实现方式中,所述第二目标向量生成模块包括:

第二转置子模块,用于对所述第二加密向量进行转置,得到第二转置向量;

第四点乘子模块,用于将所述第二转置向量与随机生成的第二随机向量进行向量点乘运算,生成第二目标向量。

本申请实施例公开了一种安全两方比较方法及系统。在安全两方比较方法中,第一方和第二方分别按照各自预设的加密规则对持有数据进行加密,并利用各自生成的随机向量对各自加密后的持有数据进行处理,分别得到第一目标向量和第二目标向量,第一方将第一目标向量发送给第二方,第二方再结合自身的随机向量生成第三目标向量,并发送给第一方,第一方再结合自身的随机向量生成第四目标向量,并发送给第二方,第二方再结合第二目标向量生成差值向量,如果差值向量中存在值为零的元素,则判定第一方持有数据大于第二方持有数据。整个比较方法中不涉及幂模运算,两方只需进行常数次通讯,即可在不暴露自身持有数据大小的情况下进行比较,计算效率和通信效率均较高。

附图说明

图1为本申请实施例提供的一种安全两方比较方法所对应的整体流程示意图;

图2为本申请实施例提供的一种安全两方比较系统的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

为了解决现有安全两方比较方法的计算效率和通信效率均较低的技术问题,本申请通过以下实施例公开了一种安全两方比较方法。本申请实施例提供的安全两方比较方法用于比较两个参与方的持有数据的大小,图1示例性示出了本申请实施例提供的一种安全两方比较方法所对应的整体流程示意图,如图1所示,具体包括如下步骤:

101:第一方按照第一预设加密规则,对第一数据进行加密处理,得到第一加密向量。

具体地,可以通过以下步骤得到第一加密向量:

第一步,第一方对第一数据进行二进制转换、长度调整和补位操作,得到第一中间数据。

其中,第一中间数据的二进制长度为补位目标长度,补位目标长度比预设的目标长度多一位,补位操作为在二进制转换和长度调整后的数据的最高位之前补一。

需要说明的是,预设的目标长度应为一个固定的较大值,即应尽可能的设置的大一些,以确保可以完全覆盖第一数据和第二数据的二进制长度。

在进行二进制转换后,再进行长度调整,长度调整时,如果二进制转换后的第一数据的位数小于预设的目标长度,则可以在二进制转换后的第一数据最高位的前面补零,以使得位数可以达到预设的目标长度。长度调整后再进行补位操作,即在长度调整以后得到的数据的最高位之前补“1”。

第二步,第一方对第一中间数据进行1编码,得到第一编码集合。

进一步地,可以通过以下方式得到第一编码集合:

首先,第一方按照从最高位至最低位的顺序,依次判断第一中间数据中除最高位以外每一位的数据是否为1。

然后,如果任一目标位的数据为1,则第一方获取第一中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为1。如果任一目标位数据不为1,则第一方将极大值数据作为编码元素,并继续判断目标位的后一位是否为1,直至完成第一中间数据的最末位的判断。

其中,极大值数据为补位目标长度所能表示的最大二进制数据。例如,补位目标长度为5,则极大值数据为11111。

最后,按照获取顺序,第一方将各个编码元素共同排列为第一编码集合。

示例性地,假设第一数据a为15,预设的目标长度为4位,补位目标长度为5位,则二进制转换和长度调整后得到的数据为1111,再在最高位前面补“1”,得到第一中间数据为11111,共5位,1编码时,按照从最高位至最低位的顺序,依次判断第一中间数据中除最高位以外每一位的数据是否为1,从第二位开始,第二位为1,则将第一位数据1作为编码元素,继续判断第三位依然为1,则将前两位数据11作为编码元素,继续判断第四位为1,则将前三位数据111作为编码元素,继续判断第五位为1,则将前四位数据1111作为编码元素,最终按照获取顺序得到的第一编码集合为A={1,11,111,1111}。

第三步,第一方对第一编码集合中的每一个元素进行数值转换处理,得到第一加密向量。

具体地,可以采用以下方式进行数值转换处理:

对于第一编码集合中的每一项进行十进制转换,再对每一项十进制转换后的数据进行哈希加密。

示例性地,如果第一编码集合为A={1,11,111,1111},则十进制转换并且哈希加密后得到的第一加密向量为(H(1),H(3),H(7),H(15))。其中,H表示哈希加密。

如此,采用上述加密方式,较为简单易行,且效率较高。

在其他可能的示例中,对第一编码集合中的每一个元素进行数值转换处理,也可以采用直接对每一项进行哈希加密的方式,具体不作限定。

102:第一方根据随机生成的第一随机向量,以及第一加密向量,生成第一目标向量。

具体地,可以通过以下方式生成第一目标向量:

第一方对第一加密向量进行转置,得到第一转置向量。

第一方将第一转置向量与随机生成的第一随机向量进行向量点乘运算,生成第一目标向量。

示例性地,假设第一随机向量r=(r1,r2,r3,r4),第一加密向量a为(H(1),H(3),H(7),H(15)),则第一转置向量aT与第一随机向量r进行向量点乘运算,得到第一目标向量=aT·r=(H(1)×r1,H(3)×r2,H(7)×r3,H(15)×r4)。

需要说明的是,如果第一转置向量的维度与第一随机向量的维度不同,则进行向量点乘时,应选择维度相同的前n项进行点乘,其他多余项舍弃。

示例性地,假设第一随机向量r=(r1,r2,r3,r4),第一加密向量a为(H(1),H(3)),则第一转置向量aT与第一随机向量r进行向量点乘运算,得到第一目标向量=aT·r=(H(1)×r1,H(3)×r2)。

103:第二方按照第二预设加密规则,对第二数据进行加密处理,得到第二加密向量。

具体地,可以通过以下步骤得到第二加密向量:

第一步,第二方对第二数据进行二进制转换、长度调整和补位操作,得到第二中间数据。

其中,第二中间数据的二进制长度为补位目标长度。

需要说明的是,补位目标长度与步骤101中所述的补位目标长度相同,补位操作与步骤101中所述的补位操作相同,即为在二进制转换和长度调整后的数据的最高位之前补一,此处不再赘述。

在进行二进制转换后,再进行长度调整,长度调整时,如果二进制转换后的第二数据的位数小于预设的目标长度,则可以在二进制转换后的第二数据最高位的前面补零,以使得位数可以达到预设的目标长度。长度调整后再进行补位操作,即在长度调整后的数据的最高位之前补“1”。

第二步,第二方对第二中间数据进行0编码,得到第二编码集合。

进一步地,可以通过以下方式得到第二编码集合:

首先,第二方按照从最高位至最低位的顺序,依次判断第二中间数据中除最高位以外每一位的数据是否为0。

然后,如果任一目标位的数据为0,则第二方获取第二中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为0,如果任一目标位数据不为0,则第二方将极小值数据作为编码元素,并继续判断目标位的后一位是否为0,直至完成第二中间数据的最末位的判断。

其中,极小值数据为补位目标长度所能表示的最小非负二进制数据。也就是说,极小值数据为零。

最后,按照获取顺序,第二方将各个编码元素共同排列为第二编码集合。

示例性地,假设第二数据b为9,预设的目标长度为4位,补位目标长度为5位,则二进制转换和长度调整后得到的数据为1001,再在最高位前面补“1”,得到第二中间数据为11001,共5位,0编码时,按照从最高位至最低位的顺序,依次判断第二中间数据中除最高位以外每一位的数据是否为0,从第二位开始,第二位为1,则将极小值数据0作为编码元素,继续判断第三位为0,则将前两位数据11作为编码元素,继续判断第四位为0,则将前三位数据110作为编码元素,继续判断第五位为1,则将极小值数据0作为编码元素,最终按照获取顺序得到的第二编码集合为B={0,11,110,0}。

第三步,第二方对第二编码集合中的每一个元素进行数值转换处理,得到第二加密向量。

具体地,可以采用以下方式进行数值转换处理:

对于第二编码集合中的每一项进行十进制转换,再对每一项十进制转换后的数据进行哈希加密。

示例性地,如果第二编码集合为B={0,11,110,0},则十进制转换并且哈希加密后得到的第二加密向量为(H(0),H(3),H(6),H(0))。其中,H表示哈希加密。

如此,采用上述加密方式,较为简单易行,且效率较高。

在其他可能的示例中,对第一编码集合中的每一个元素进行数值转换处理,也可以采用直接对每一项进行哈希加密的方式,具体不作限定。

需要说明的是,第二方对第二编码集合中的每一个元素进行数值转换处理的方式,应与第一方对第一编码集合中的每一个元素进行数值转换处理的方式相同。

104:第二方根据随机生成的第二随机向量,以及第二加密向量,生成第二目标向量。

具体地,可以通过以下方式生成第二目标向量:

第二方对第二加密向量进行转置,得到第二转置向量。

第二方将第二转置向量与随机生成的第二随机向量进行向量点乘运算,生成第二目标向量。

示例性地,假设第二随机向量k=(k1,k2,k3,k4),第二加密向量b为(H(0),H(3),H(6),H(0)),则第二转置向量bT与第二随机向量k进行向量点乘运算,得到第二目标向量=bT·k=(H(0)×k1,H(3)×k2,H(6)×k3,H(0)×k4)。

需要说明的是,如果第二转置向量的维度与第二随机向量的维度不同,则进行向量点乘时,应选择维度相同的前n项进行点乘,其他多余项舍弃。

105:第一方将第一目标向量发送给第二方。

106:第二方根据第一目标向量以及第二随机向量,生成第三目标向量。

具体地,可以通过以下方式生成第三目标向量:

第二方将第一目标向量与第二随机向量进行向量点乘运算,生成第三目标向量。

示例性地,假设第一目标向量=aT·r=(H(1)×r1,H(3)×r2,H(7)×r3,H(15)×r4),第二随机向量为k=(k1,k2,k3,k4),则第三目标向量=aT·r·k=(H(1)×r1×k1,H(3)×r2×k2,H(7)×r3×k3,H(15)×r4×k4)。

107:第二方将第三目标向量发送给第一方。

108:第一方根据第三目标向量以及第一随机向量,生成第四目标向量。

具体地,可以通过以下方式生成第四目标向量:

第一方获取第一随机向量的第一逆向量。

第一方将第一逆向量与第三目标向量进行向量点乘运算,生成第四目标向量。

示例性地,假设第一随机向量r=(r1,r2,r3,r4),第三目标向量=aT·r·k=(H(1)×r1×k1,H(3)×r2×k2,H(7)×r3×k3,H(15)×r4×k4),则第四目标向量=r-1·aT·r·k=aT·k=(H(1)×k1,H(3)×k2,H(7)×k3,H(15)×k4)。

109:第一方将第四目标向量发送给第二方。

110:第二方根据第四目标向量以及第二目标向量,生成差值向量。

具体地,第二方利用第四目标向量减去第二目标向量,得到差值向量。

示例性地,假设第四目标向量=aT·k=(H(1)×k1,H(3)×k2,H(7)×k3,H(15)×k4),第二目标向量=bT·k=(H(0)×k1,H(3)×k2,H(6)×k3,H(0)×k4),则差值向量T=aT·k-bT·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)。

111:第二方判断差值向量中是否存在值为零的元素,若存在,则执行步骤112,若不存在,则执行步骤113。

112:第二方判定第一数据大于第二数据。

113:第二方判定第一数据小于或等于第二数据。

具体地,如果步骤110的执行结果中有0元素,则差值向量中存在值为零的元素,则第一编码集合与第二编码集合存在交集,即可得第一数据大于第二数据,如果差值向量中不存在值为零的元素,则第一编码集合与第二编码集合交集为空,即可得第一数据小于或等于第二数据。

采用上述方式,两方利用加密后的数据以及随机生成的向量,只需进行常数次通讯,即可在不暴露自身持有数据大小的情况下进行比较,计算效率和通信效率均较高。

如此,采用本申请实施例公开的一种安全两方比较方法,第一方和第二方分别按照各自预设的加密规则对持有数据进行加密,并利用各自生成的随机向量对各自加密后的持有数据进行处理,分别得到第一目标向量和第二目标向量,第一方将第一目标向量发送给第二方,第二方再结合自身的随机向量生成第三目标向量,并发送给第一方,第一方再结合自身的随机向量生成第四目标向量,并发送给第二方,第二方再结合第二目标向量生成差值向量,如果差值向量中存在值为零的元素,则判定第一方持有数据大于第二方持有数据。整个比较方法中不涉及幂模运算,两方只需进行常数次通讯,即可在不暴露自身持有数据大小的情况下进行比较,计算效率和通信效率均较高。

下述为本申请系统实施例,可以用于执行本申请方法实施例。对于本申请系统实施例中未披露的细节,请参照本申请方法实施例。

图2示例性示出了本申请实施例提供的一种安全两方比较系统的结构示意图。如图2所示,该系统具有实现上述安全两方比较方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该系统可以包括第一方201和第二方202,第一方201包括依次连接的第一加密向量生成模块2011、第一目标向量生成模块2012和第四目标向量生成模块2013,第二方202包括依次连接的第二加密向量生成模块2021、第二目标向量生成模块2022和第三目标向量生成模块2023,第三目标向量生成模块2023还分别与第一目标向量生成模块2012和第四目标向量生成模块2013连接。第二方202还包括依次连接的差值向量生成模块2024和判定模块2025,差值向量生成模块2024还分别与第二目标向量生成模块2022和第四目标向量生成模块2013连接。其中:

第一加密向量生成模块2011,用于按照第一预设加密规则,对第一数据进行加密处理,得到第一加密向量。

第一目标向量生成模块2012,用于根据随机生成的第一随机向量,以及第一加密向量,生成第一目标向量。

第二加密向量生成模块2021,用于按照第二预设加密规则,对第二数据进行加密处理,得到第二加密向量。

第二目标向量生成模块2022,用于根据随机生成的第二随机向量,以及第二加密向量,生成第二目标向量。

第三目标向量生成模块2023,用于根据第一目标向量以及第二随机向量,生成第三目标向量。

第四目标向量生成模块2013,用于根据第三目标向量以及第一随机向量,生成第四目标向量。

差值向量生成模块2024,用于根据第四目标向量以及第二目标向量,生成差值向量。

判定模块2025,用于判断差值向量中是否存在值为零的元素,若存在,则判定第一数据大于第二数据。或者,若不存在,则判定第一数据小于或等于第二数据。

在一种可实现方式中,第一加密向量生成模块2011包括:

第一转换子模块,用于对第一数据进行二进制转换、长度调整和补位操作,得到第一中间数据,第一中间数据的二进制长度为补位目标长度,补位目标长度比预设的目标长度多一位,补位操作为在二进制转换和长度调整后的数据的最高位之前补一。

1编码子模块,用于对第一中间数据进行1编码,得到第一编码集合。

第一数值转换子模块,用于对第一编码集合中的每一个元素进行数值转换处理,得到第一加密向量。

在一种可实现方式中,1编码子模块包括:

第一判断单元,用于按照从最高位至最低位的顺序,依次判断第一中间数据中除最高位以外的每一位的数据是否为1。

第一编码元素获取单元,用于如果任一目标位的数据为1,则获取第一中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为1,如果任一目标位数据不为1,则将极大值数据作为编码元素,并继续判断目标位的后一位是否为1,直至完成所述第一中间数据的最末位的判断,其中,所述极大值数据为所述补位目标长度所能表示的最大二进制数据。

第一编码集合生成单元,用于按照获取顺序,将各个编码元素共同排列为第一编码集合。

在一种可实现方式中,第一目标向量生成模块2012包括:

第一转置子模块,用于对第一加密向量进行转置,得到第一转置向量。

第一点乘子模块,用于将第一转置向量与随机生成的第一随机向量进行向量点乘运算,生成第一目标向量。

在一种可实现方式中,第三目标向量生成模块2023包括:

第二点乘子模块,用于将第一目标向量与第二随机向量进行向量点乘运算,生成第三目标向量。

在一种可实现方式中,第四目标向量生成模块2013包括:

逆向量获取子模块,用于获取第一随机向量的第一逆向量。

第三点乘子模块,用于将第一逆向量与第三目标向量进行向量点乘运算,生成第四目标向量。

在一种可实现方式中,第二加密向量生成模块2021包括:

第二转换子模块,用于对第二数据进行二进制转换、长度调整和补位操作,得到第二中间数据,第二中间数据的二进制长度为补位目标长度。

0编码子模块,用于对第二中间数据进行0编码,得到第二编码集合。

第二数值转换子模块,用于对第二编码集合中的每一个元素进行数值转换处理,得到第二加密向量。

在一种可实现方式中,0编码子模块包括:

第二判断单元,用于按照从最高位至最低位的顺序,依次判断第二中间数据中除最高位以外的每一位的数据是否为0。

第二编码元素获取单元,用于如果任一目标位的数据为0,则获取第二中间数据中位于目标位之前的所有数据,将其作为编码元素,并继续判断目标位的后一位是否为0,如果任一目标位数据不为0,则将极小值数据作为编码元素,并继续判断目标位的后一位是否为0,直至完成第二中间数据的最末位的判断,其中,极小值数据为补位目标长度所能表示的最小非负二进制数据。

第二编码集合生成单元,用于按照获取顺序,将各个编码元素共同排列为第二编码集合。

在一种可实现方式中,第二目标向量生成模块2022包括:

第二转置子模块,用于对第二加密向量进行转置,得到第二转置向量。

第四点乘子模块,用于将第二转置向量与随机生成的第二随机向量进行向量点乘运算,生成第二目标向量。

如此,采用本申请实施例公开的一种安全两方比较系统,第一方和第二方分别按照各自预设的加密规则对持有数据进行加密,并利用各自生成的随机向量对各自加密后的持有数据进行处理,分别得到第一目标向量和第二目标向量,第一方将第一目标向量发送给第二方,第二方再结合自身的随机向量生成第三目标向量,并发送给第一方,第一方再结合自身的随机向量生成第四目标向量,并发送给第二方,第二方再结合第二目标向量生成差值向量,如果差值向量中存在值为零的元素,则判定第一方持有数据大于第二方持有数据。整个比较方法中不涉及幂模运算,两方只需进行常数次通讯,即可在不暴露自身持有数据大小的情况下进行比较,计算效率和通信效率均较高。

以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于农产品的敏感数据加密方法、装置及电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类