隐私保护的数据处理方法、装置及服务器转让专利

申请号 : CN202010919436.6

文献号 : CN111783130B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘颖婷周俊陈超超王力

申请人 : 支付宝(杭州)信息技术有限公司

摘要 :

本说明书提供一种隐私保护的数据处理方法、装置及服务器。一个方法实施例中,将秘密分享中的加法分片转化成乘法分片,进而可在基于隐私保护的浮点数平方根倒数算法中引入快速平方根算法的高精度初始化,从而减少后续基于隐私保护的牛顿法的迭代次数,在保护用户隐私的同时提高了算法效率,提高了计算设备的处理性能。

权利要求 :

1.一种隐私保护的数据处理方法,包括:

确定待处理数据在秘密分享下的第一参与方以浮点数形式存储的第一分片、第二参与方以浮点数形式存储的秘密分享下的第二分片;其中,所述第一分片和第二分片分别为所述待处理数据在秘密分享下第一参与方和第二参与方的加法分片;

将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片;其中,包括:将第一参与方与第二参与方秘密分享下的加法分片,利用加法秘密共享上的乘法运算转化为乘法分片;

根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片;

根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理,得到所述待处理数据的平方根倒数的加法分片。

2.如权利要求1所述的方法,所述将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片包括:第一参与方本地使用伪随机数生成器生成随机数 并求 ,以及计算得到,其中, ; 为第一参与方存储的待处理数据 在秘密分享下的第一分片, 为第二参与方存储的待处理数据 在秘密分享下的第二分片, ;

为以浮点数形式存储的整数;

第一参与方和第二参与方通过秘密分享乘法联合计算 ,第一参与方得到 ,第二参与方得到 ;

第一参与方计算 并将 发送至第二参与方;

第二参与方计算 ,此时 。

3.如权利要求2所述的方法,所述根据所述乘法分片确定第一参与方与第二参与方在本地计算的初始化的迭代估计值的乘法分片,包括:第一参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;

计算常数C ,并按照P位浮点数的存储方式进行读取,作为第一参与方迭代估计值的初始值的乘法分片 ;

第二参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ;

计算常数C ,并按照P位浮点数的存储方式进行读取,作为第二参与方迭代估计值的初始值的乘法分片 。

4.如权利要求3所述的方法,其中,P为2的T次方,T为大于5的整数;以及当P取值为5时,常数C取值0x5fe6eb50c7b537a9。

5.如权利要求2所述的方法,所述得到所述待处理数据的平方根倒数的加法分片包括:得到所述待处理数据 的平方根倒数的第一加法分片 和所述待处理数据 的平方根倒数的第二加法分片 ,和 为浮点数,且 。

6.一种隐私保护的数据处理方法,包括:

第一参与方以浮点数形式存储待处理数据在秘密分享下的第一分片;其中,所述第一分片为所述第一参与方存储的待处理数据在秘密分享下的一个加法分片;

第一参与方通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片的结果;其中,所述乘法分片是将第一参与方与第二参与方秘密分享下的加法分片利用加法秘密共享上的乘法运算转化得到的;

第一参与方利用第一参与方的乘法分片在本地计算迭代估计值的初始值的乘法分片,以使计算方根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;

第一参与方获取基于隐私保护的浮点数平方根倒数的牛顿迭代处理后所述待处理数据的平方根倒数的第一加法分片。

7.如权利要求6所述的方法,所述第一参与方通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片的结果,包括:第一参与方本地使用伪随机数生成器生成随机数 并求 ,以及计算得到,其中, ; 为第一参与方存储的待处理数据 在秘密分享下的第一分片, 为第二参与方存储的待处理数据 在秘密分享下的第二分片, ;

为以浮点数形式存储的整数;

第一参与方和第二参与方通过秘密分享乘法联合计算 ,第一参与方得到 ,第二参与方得到 ;

第一参与方计算 并将 发送至第二参与方,以使第二参与方B计算,此时 。

8.如权利要求7所述的方法,所述第一参与方利用第一参与方的乘法分片在本地计算迭代估计值的初始值的乘法分片包括:第一参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;

计算常数C ,并按照P位浮点数的存储方式进行读取,作为第一参与方迭代估计值的初始值的乘法分片 。

9.如权利要求8所述的方法,其中,P为2的T次方,T为大于5的整数;以及当P取值为5时,常数C取值0x5fe6eb50c7b537a9。

10.如权利要求7所述的方法,第一参与方得到所述待处理数据 的平方根倒数的第一加法分片 ,其中, ,和 为浮点数,为第二参与方得到所述数据 的平方根倒数的第二加法分片。

11.一种隐私保护的数据处理装置,包括:

分片确定模块,用于确定待处理数据在秘密分享下的第一参与方以浮点数形式存储的第一分片、第二参与方以浮点数形式存储的秘密分享下的第二分片;其中,所述第一分片和第二分片分别为所述待处理数据在秘密分享下第一参与方和第二参与方的加法分片;

转化模块,用于将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片;

其中,包括:将第一参与方与第二参与方秘密分享下的加法分片,利用加法秘密共享上的乘法运算转化为乘法分片;

初始模块,用于根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片;

迭代计算模块,用于根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理,得到所述待处理数据的平方根倒数的加法分片。

12.如权利要求11所述的装置,所述转化模块将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片包括:第一参与方本地使用伪随机数生成器生成随机数 并求 ,以及计算得到,其中, ;为第一参与方存储的待处理数据 在秘密分享下的第一分片, 为第二参与方存储的待处理数据 在秘密分享下的第二分片, ;

为以浮点数形式存储的整数;

第一参与方和第二参与方通过秘密分享乘法联合计算 ,第一参与方得到 ,第二参与方得到 ;

第一参与方计算 并将 发送至第二参与方;

第二参与方计算 ,此时 。

13.如权利要求12所述的装置,所述初始模块根据所述乘法分片确定第一参与方与第二参与方在本地计算迭代估计值的初始值的乘法分片,包括:第一参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;

计算常数C ,并按照P位浮点数的存储方式进行读取,作为第一参与方迭代估计值的初始值的乘法分片 ;

第二参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ;

计算常数C ,并按照P位浮点数的存储方式进行读取,作为第二参与方迭代估计值的初始值的乘法分片 。

14.如权利要求13所述的装置,其中,P为2的T次方,T为大于5的整数;以及当P取值为5时,常数C取值0x5fe6eb50c7b537a9。

15.如权利要求12所述的装置,所述迭代计算模块得到所述待处理数据的平方根倒数的加法分片包括:得到所述待处理数据 的平方根倒数的第一加法分片 和所述待处理数据 的平方根倒数的第二加法分片 ,和 为浮点数,且 。

16.一种隐私保护的数据处理装置,包括:

输入模块,用于获取第一参与方以浮点数形式存储的待处理数据 在秘密分享下的第一分片、第二参与方以浮点数存储的待处理数据 在秘密分享下的第二分片, ;

为以浮点数形式存储的整数;

计算模块,用于将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片;

还用于根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片;还根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;其中,将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片包括:将第一参与方与第二参与方秘密分享下的加法分片,利用加法秘密共享上的乘法运算转化为乘法分片;

输出模块,用于得到所述待处理数据的平方根倒数的第一加法分片 和第二加法分片,和 为浮点数,且 。

17.如权利要求16所述的装置,其中,所述计算模块根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片包括:第一参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;

计算常数C ,并按照P位浮点数的存储方式进行读取,作为第一参与方迭代估计值的初始值的乘法分片 ;

第二参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ;

计算常数C ,并按照P位浮点数的存储方式进行读取,作为第二参与方迭代估计值的初始值的乘法分片 。

18.一种隐私保护的数据处理装置,包括:

存储模块,用于第一参与方以浮点数形式存储待处理数据在秘密分享下的第一分片;

其中,所述第一分片为所述第一参与方存储的待处理数据在秘密分享下的一个加法分片;

乘法转化模块,用于通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将本端与第二参与方秘密分享下的加法分片转化成乘法分片的结果;其中,所述乘法分片是将第一参与方与第二参与方秘密分享下的加法分片利用加法秘密共享上的乘法运算转化得到的;

处理模块,用于利用本端的乘法分片在本地计算迭代估计值的初始值的乘法分片,以使计算方根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;

结果分片模块,用于获取基于隐私保护的浮点数平方根倒数的牛顿迭代处理后所述待处理数据的平方根倒数的第一加法分片。

19.如权利要求18所述的装置,所述通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将本端与第二参与方秘密分享下的加法分片转化成乘法分片的结果:本地使用伪随机数生成器生成随机数 并求 ,以及计算得到 ,其中,; 为本端存储的待处理数据 在秘密分享下的第一分片,为第二参与方存储的待处理数据 在秘密分享下的第二分片, ; 为以浮点数形式存储的整数;

和第二参与方通过秘密分享乘法联合计算 得到 ,第二参与方得到 ;

计算 并将 发送至第二参与方,以使第二参与方计算 ,此时 。

20.如权利要求19所述的装置,所述处理模块利用本端的乘法分片在本地计算迭代估计值的初始值的乘法分片包括:将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;

计算常数C ,并按照P位浮点数的存储方式进行读取,作为本端迭代估计值的初始值的乘法分片 。

21.如权利要求20所述的装置,其中,P为2的T次方,T为大于5的整数;以及当P取值为5时,常数C取值0x5fe6eb50c7b537a9。

22.如权利要求19所述的装置,其中得到的所述待处理数据 的平方根倒数的第一加法分片 满足 ,和 为浮点数,为第二参与方得到所述待处理数据 的平方根倒数的第二加法分片。

23.一种隐私保护服务器,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1-5中任意一项所述方法的步骤。

24.一种隐私保护服务器,包括至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求6-10中任意一项所述方法的步骤。

说明书 :

隐私保护的数据处理方法、装置及服务器

技术领域

[0001] 本说明书实施例属于密码学的隐私保护技术领域,尤其涉及一种隐私保护的数据处理方法、装置及服务器。

背景技术

[0002] 目前数据共享多种应用场景中,共享数据通常由多个参与方提供,且数据保留在本地,不进行明文的聚合。多个参与方数据需要统一建立模型时,需保证参与方输出的输出结果为私有的,对其他参与方是不可见的。数据共享不可避免会涉及到隐私泄露的问题,目前常用的解决方案包括基于密码学的多方安全计算(MPC:Multi-party Computation),其中,在MPC领域,主要用到的是秘密分享。目前在保护数据隐私的同时,需要参与方之间的通信与协作,而数据计算以及相互通信等开销对模型中涉及的算法运算效率影响较大。因此,在多方参与计算隐私保护场景下,如何保护数据隐私的同时更好的提高算法的效率就显得尤为重要。

发明内容

[0003] 本说明书的目的在于提供一种隐私保护的数据处理方法、装置及服务器,可以高效的实现基于隐私保护的浮点数平方根倒数的计算处理,提高构建的模型算法的效率,提高计算设备的处理效率。
[0004] 本说明书实施例提供的一种隐私保护的数据处理方法、装置及服务器至少通过以下方式实现:
[0005] 一种隐私保护的数据处理方法,包括:
[0006] 确定待处理数据在秘密分享下的第一参与方以浮点数形式存储的第一分片、第二参与方以浮点数形式存储的秘密分享下的第二分片;
[0007] 将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片;
[0008] 根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片;
[0009] 根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理,得到所述待处理数据的平方根倒数的加法分片。
[0010] 一种隐私保护的数据处理方法,包括:
[0011] 第一参与方以浮点数形式存储待处理数据在秘密分享下的第一分片;
[0012] 第一参与方通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片的结果;
[0013] 第一参与方利用第一参与方的乘法分片在本地计算迭代估计值的初始值的乘法分片,以使计算方根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;
[0014] 第一参与方获取基于隐私保护的浮点数平方根倒数的牛顿迭代处理后所述待处理数据的平方根倒数的第一加法分片。
[0015] 一种隐私保护的数据处理装置,包括:
[0016] 分片确定模块,用于确定待处理数据在秘密分享下的第一参与方以浮点数形式存储的第一分片、第二参与方以浮点数形式存储的秘密分享下的第二分片;
[0017] 转化模块,用于将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片;
[0018] 初始模块,用于根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片;
[0019] 迭代计算模块,用于根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理,得到所述待处理数据的平方根倒数的加法分片。
[0020] 一种隐私保护的数据处理装置,包括:
[0021] 输入模块,用于获取第一参与方以浮点数形式存储的待处理数据在秘密分享下的第一分片、第二参与方以浮点数存储的待处理数据在秘密分享下的第二分片, ;为以浮点数形式存储的整数;
[0022] 计算模块,用于将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片;还用于根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片;还根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;
[0023] 输出模块,用于得到所述待处理数据的平方根倒数的第一加法分片 和第二加法分片 ,和 为浮点数,且 。
[0024] 一种隐私保护的数据处理装置,包括:
[0025] 存储模块,用于以浮点数形式存储待处理数据在秘密分享下的第一分片;
[0026] 乘法转化模块,用于通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将本端与第二参与方秘密分享下的加法分片转化成乘法分片的结果;
[0027] 处理模块,用于利用本端的乘法分片在本地计算迭代估计值的初始值的乘法分片,以使计算方根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;
[0028] 结果分片模块,用于获取基于隐私保护的浮点数平方根倒数的牛顿迭代处理后所述待处理数据的平方根倒数的第一加法分片。
[0029] 一种隐私保护服务器,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现本说明书中任意一个方法实施例所述的步骤。
[0030] 一种隐私保护服务器,包括至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现本说明书中任意一个方法实施例所述的步骤。
[0031] 本说明书实施例提供的一种隐私保护的数据处理方法、装置及服务器,可以对基于隐私保护的浮点数的平方根倒数算法进行优化。本实施例中在两方联合进行牛顿法迭代计算时将秘密分享中的加法分片转化成乘法分片,在基于隐私保护的浮点数平方根倒数算法中引入快速平方根算法的高精度初始化,从而减少后续基于隐私保护的牛顿法的迭代次数,在保护参与方隐私的同时提高了算法效率,提高了计算设备的处理性能。

附图说明

[0032] 为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0033] 图1是本说明书提供的一个隐私保护的数据处理方法实施例的流程示意图;
[0034] 图2是本说明书提供的可应用单个参与方的一个隐私保护的数据处理方法实施例的流程示意图;
[0035] 图3是应用本发明实施例的一个隐私保护的服务器的硬件结构框图;
[0036] 图4是本说明书提供的一个隐私保护的数据处理装置实施例的模块结构示意图;
[0037] 图5是本说明书提供的另一个隐私保护的数据处理装置实施例的模块结构示意图;
[0038] 图6是本说明书提供的另一个隐私保护的数据处理装置实施例的模块结构示意图。

具体实施方式

[0039] 为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都应当属于本说明书保护的范围。
[0040] 秘密共享是信息安全和数据保密的重要手段,它在重要信息和秘密数据的安全保存、传输以及合法利用中起着关键作用。秘密共享是基于密码学的多方安全计算(MPC:Multi-party Computation)中的一个解决隐私泄漏、实现隐私保护的重要手段。秘密分享目前普遍使用的秘密共享方案包括由Shamir和Blakley提出的门限秘密共享概念,其基本思想是将共享秘密s分成多个分片(share),分别交给不同参与方保管。只有超过门限数量的参与方将他们的share合并,才能恢复秘密。例如,满足只有大于等于一定数量的服务器联合才能重构共享的秘密,而任意少于所述一定数据的服务器不能得到该秘密的任何信息。典型的基于拉格朗日插值的两方多项式秘密共享方案中,由秘密s和随机数t构成了秘密多项式f(x)=s+tx。假设Alice和Bob分别秘密拥有一对(x,f(x))信息,如Alice拥有f(1),Bob拥有f(2)。当需要还原出s时,双方发送自己的秘密给对方,任何一方可以利用拉格朗日插值法计算出s=2f(1)-f(2)。而一方只有一个插值信息的话,通常计算不出秘密s。
[0041] 秘密分享可以用于隐私保护的多方安全计算中。具体应用中,各个参与方的输入数据分别拆分成share并互相交换share。然后,各个参与方分别对本地的多个share进行运算,各自得到一个新的share(运算结果的share)。将各个参与方的新share进行合并可以得到运算结果。
[0042] 本说明书所述的隐私保护的数据处理方案、装置、设备等,包括在数据存储、计算、通信等需要进行隐私保护的实现方案。基于隐私保护的算法在数据处理中常常需要计算数据的平方根倒数。例如基于隐私保护的逻辑回归的参数显著性检验、基于隐私保护的线性回归的参数显著性检验、基于隐私保护的逻辑回归的一些优化器等。而浮点数 的平方根倒数为是一项基础的运算,可以采用快速平方根算法来求取近似值。常规的快速平方根算法中使用的是牛顿迭代法,迭代使用的初始化的值常常不够精确的,需要较多轮数的迭代才能得到精度较高的结果。而迭代轮数越多则数据计算及通信效率越低。为此,本说明书的一些实施例可以结合多方计算、隐私保护、快速平方根算法等提供一种隐私保护的数据处理方法,可以在多方参与并需要隐私保护的数据处理场景下高效的进行两方浮点数平方根倒数的计算处理。应用在基于隐私保护的线性回归特征显著性检验、基于隐私保护的神经网络等,可以有效的对模型算法进行优化,提高计算设备的处理效率。
[0043] 秘密分享,主要是把原始数据拆成随机数(秘密),通过随机数在多方之间的传递来完成计算。每个参与方拿到的都是原始数据的一部分,一个或少数几个参与方无法还原出原始数据,只有各个参与方把各自的数据凑在一起时才能还原真实数据。计算时,各参与方可以直接用它自己本地的数据进行计算,并且可以在适当的时候交换一些数据(交换的数据本身不包含关于原始数据的信息)。计算结束后的结果可以仍然以秘密分享的方式分散在各参与方。在需要使用最终结果的时候可以将各个参与方的数据合起来,还原出真实的原始数据。当然,秘密分享中每个参与方得到的分片是不相同的。例如多份分片中的其中一个分片Sc若给了参与方C,那么这个分片Sc可以不再分配给其他参与方。
[0044] 在一些基于多项式插值秘密共享方案的两方安全计算中,通常有共享秘密的加法、减法有直接的计算方法,而乘法、除法和模运算则可以根据具体场景采用一些算法进行转换/转化来实现。如秘密共享的矩阵乘法(Secret Matrix Multiplication,SMM),计算过程中双方对对方数据不可见,最终乘法结果为双方计算结果之和。另外,输出也可以不合并,分别保留在各自参与方。
[0045] 以两个参与方为例,Alice和Bob分别在本地将秘密(secret)切分成两个分片(share),一份留给自己,另一份发送至对方。生成预处理数据(Beaver Triples),Alice和Bob通过多轮参数的计算和交换,分别得到一个中间结果。例如通过一个半可信的服务生成预处理数据(u0,v0,z0)和(u1,v1,z1),并分别发送给Alice和Bob。半可信是指相信该服务器不会和Alice或Bob合谋窃取数据,但信任程度不足以能将原始数据都交给该服务器来做运算。Alice和Bob交换e=a-u和f=b-v的share后,各自计算出e和f。其中,u=u0+u1,即u的share为u0和u1,v=v0+v1即v的share为v0+v1。需要获得最终结果的一方收集Alice和Bob的中间结果,将这些中间结果相加,即可得到Alice和Bob所持有的两个分片的积。上述的处理过程可以成为两方联合计算。当然,其他的两方联合计算方式也可以不使用中间服务器,如上述的半可信的服务器,通过两方对随机数或预处理数据多轮的计算和交换来得到分片的积。
[0046] 在本说明书的一个或多个实施例中提供了一种新的隐私保护的数据处理方法,对基于隐私保护平方根倒数算法进行优化。两方联合进行牛顿法迭代计算时将秘密分享中的加法分片转化成乘法分片,进而可以在基于隐私保护的平方根倒数算法中引入快速平方根算法的高精度初始化,从而减少后续基于隐私保护牛顿法的迭代次数,在保护用户隐私的同时提高了算法效率。
[0047] 下面以一个具体的基于隐私保护下的两方秘密分享的实施场景对本说明书实施方案进行说明。在本实施例应用场景中,第一参与方A和第二参与方B分别拥有数据 在秘密分享下的两个分片( , , )中的一个,并可以以64位浮点数的形式存储在计算设备上。第一参与方A和第二参与方B联合进行牛顿法迭代计算 的平方根倒数。在计算过程中,通过两次秘密分享和一次迭代计算,参与方A和参与方B分别各自得到浮点数 的平方根倒数的加法分片( )中的其中一个。因此,本说明书实施例的方法也可以称为隐私保护平方根倒数算法(Secure Number Sqrt Invert,SNSI算法)。本说明书提供的实施方案可以将隐私保护下的加法分片转化成乘法分片,之后进行一轮基于隐私保护的牛顿迭代,还原回加法分片。然后可以根据还原为加法分片的加法分片进行其他秘密分享运算等处理。具体的,图1是本说明书提供的一个隐私保护的数据处理方法实施例的流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置、系统结构等,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或结构。所述的方法或系统结构的在实际中的装置、服务器、系统或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群、结合云计算或区块链技术的实施环境)。
[0048] 当然,下述实施例的描述并不对基于本说明书实施例得到的其它可扩展技术方案构成限制。具体的,本说明书提供的所述方法的一种实施例如图1所示,可以包括:
[0049] S0:确定待处理数据在秘密分享下的第一参与方以浮点数形式存储的第一分片、第二参与方以浮点数形式存储的秘密分享下的第二分片。
[0050] 本领域人员可以理解的是,这里所述的第一参与方、第二参与方是为便于描述和区分多个参与方的不同参与方,并非特定限定某个参与方。
[0051] 在两方浮点数平方根倒数计算的应用场景中,第一参与方可以在自己的(本端)计算设备中以浮点数的形式存储待处理数据 在秘密分享下的第一分片 ,第二参与方同样可以在本端的计算设备中以浮点数的形式存储数据 在秘密分享下的第二分片 ,其中,。因此, 和 为待处理数据 在秘密分享下的一种加法分片。 和 具体的可用由第三方对待处理数据 处理后生成,然后分别分发给第一参与方和第二参与方。本实施例中,待处理数据 也可以为整数,如待处理数据经过一些转换/映射/编码等得到的对应整数。在MPC下,参与计算的秘密分享分片是环(或有限域)上的整数。当然,在计算设备中,分片可以以64位浮点数存储,也可以以32位或128位浮点数存储。
[0052] 假设数据拥有者有一个待处理数据 ,现在将 秘密共享给两个参与方A和B。两个参与方分别拥有浮点数 在秘密分享下的两个分片( ,)中的一个。为便于描述,第一参与方A拥有的分片可以记做 ,第一参与方B拥有的加法分片可以记做 。其中,(分片 , 属于有限域 或环 )。两个参与方可以分别各自以64位浮点数的形式将加法分片存储在各自的计算设备上。有限域 表示一种仅含有限个元素的域。环 指伽罗华环,是一种元素的数量有限的环。
[0053] S2:将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片。
[0054] 将秘密分享下的第一参与方与第二参与方的加法分片转化成乘法分片,使得,其中, 为第一参与方本地生成的随机数。具体的可以使用伪随机数生成器生成随机数。加法分片转化成乘法分片的处理以及所述的联合计算可以由其中第三方处理,第三方的处理设备在处理过程中可以包括涉及与第一参与方和第二参与方的通信/交互过程,如第三方计算平台或服务器。其他的实施例中也可以由参与方之间相互进行数据计算和交互实现。
[0055] 一般的,秘密分享需要处理数据的时候,一方将自己的数据发给另一方,或者将数据一起发给第三方(计算方)。一些实施例中可以采用两个参与方A和B通过计算和交换来实现将加法分片转化为乘法分片。具体的可以结合前述所述的秘密共享的矩阵乘法,计算过程中双方对对方数据不可见,最终乘法结果为双方计算结果之和。另外,输出可以不合并,分别保留在各自平台上。具体的可以通过加法秘密共享上的乘法运算(也称为加法秘密分享下的乘法运算)(mulplication on two additives shares)来实现转化。
[0056] 例如一个实施例的处理示例中,第一参与方A本地使用伪随机数生成器生成随机数 并求 。第一参与方可以进一步得到 。可以由第二参与方通过与第一参与方秘密分享乘法联合计算得到。其中, , 。第一参与方A与
第二参与方B通过秘密分享乘法联合计算 ,此时第一参与方可以得到 ,第二参与方可以得到 。参与方A计算 并将 发送至第二参与方B。在秘密分享处理
中,一般的,第一参与方不可单独发送 和 给另一个参与方。第二参与方B计算。此时 。 和 可以作为待处理数据 的一种乘法分片。
[0057] S4:根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片。
[0058] 本说明书实施例第一参与方和第二参与可以分别利用各自的乘法分片在本地计算迭代估计值的初始值的乘法分片。可以结合求解平方根倒数的算法(例如快速平方根算法)以及浮点数在计算机设备中存储的方式来获得精度更高的算法的迭代估计值的初始值的乘法分片,从而减少后续基于隐私保护的牛顿法的迭代次数,提高计算设备的计算速度,在保护用户隐私的同时提高了算法效率。
[0059] 例如在利用快速平方根算法时,可以采用下述方式确定迭代估计值的初始值的乘法分片:
[0060] 第一参与方A可以将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;
[0061] 计算常数C ,并按照P位浮点数的存储方式进行读取, 作为第一参与方迭代估计值的初始值的乘法分片 ;
[0062] 第二参与方B将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ;
[0063] 计算常数C ,并按照P位浮点数的存储方式进行读取, 作为第二参与方迭代估计值的初始值的乘法分片 。
[0064] 在64位浮点类型的数据中(64位浮点数),P为64。所述的常数C在64位浮点类型的数据中(64位浮点数)可以为0x5fe6eb50c7b537a9。一些实施例中,所述按照P位整数的存储方式进行读取可以表示将数据按照P位整数的方式进行读取。在本实施例中,秘密分享的分片仍然是整数,在存储的时候是以P位的浮点数存储的。这P位的浮点数从整体看作是一个整数(分片),读取出来的时候是一个以P位浮点数形式存储的一个整数。P可以根据数据存储的位数取值。在二进制的计算机处理设备中,P可以为2的T次方,T为大于5的整数。当然,其他的实施例中P也可以取值3或4,即数据可以以8位或16位浮点数的形式存储。当P取值为5时,常数C取值0x5fe6eb50c7b537a9。该常数C是本实施例提供的通过一定算法计算得到的牛顿迭代算中计算的近似值更加准确的数值。
[0065] 以第一参与方A为例:
[0066] 将64位浮点数 的存储值按照64位整数的存储方式进行读取,并右移一位(除以2并下取整),记为 ;
[0067] 计算0x5fe6eb50c7b537a9 ,并按照64位浮点数的存储方式进行读取,记为第一参与方迭代估计值的初始值的乘法分片 。
[0068] 同样的,参数上述方式,第二参与方B读取 可以得到第二参与方迭代估计值的初始值的乘法分片 。
[0069] 需要说明的是,上述0x5fe6eb50c7b537a9是在64位浮点数的形式存储的计算设备上得到的常数。这个常数C在不同的计算机浮点数存储方式或推导算法中有相应的取值,例如浮点类型的数据在32位系统上对应的常数C可以为0x5f3759df。
[0070] S6:根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理,得到所述待处理数据的平方根倒数的加法分片。
[0071] 上述各个参与方可以各自得到的迭代估计值的初始值的乘法分片。该迭代估计值的初始值的乘法分片通常属于参与方的私密数据,由参与方本地保存。进行求解平方根倒数的处理时可以通过参与方的数据计算和交互来联合计算,或者第三方进行求解平方根倒数的处理时可以通过与参与方的数据计算和交互来联合计算,确定各个参与方确定了各自的迭代估计值的初始值的乘法分片。本说明书一些实施例中所述的进行计算浮点数平方根倒数的牛顿迭代处理可以指使用牛顿迭代法迭代计算浮点数的平方根倒数,一些实施例中并不要一定要计算出浮点数的平方根倒数的分片。本说明书实施例方案的创新之一是在隐私保护场景中计算平方根倒数的一些算法中将秘密分享中的加法分片转化成乘法分片,可以引入快速平方根算法(快速平方根算法中使用到牛顿迭代法)的高精度初始化,从而减少后续基于隐私保护的牛顿法的迭代次数,在保护用户隐私的同时提高了算法效率。另一方面,基于隐私保护的浮点数平方根倒数的牛顿迭代处理还可以使得两个参与方各自得到待处理数据 平方根倒数的其中一个加法分片 或 。这里的加法分片可以满足。和 也可以为以浮点数形式存储的整数。
[0072] 具体的一个处理实施例中,可以设迭代初始值 。两个参与方可拥有该迭代初始值 。本说明书实施例可以使用快速平方根算法计算平方根倒数。在快速平方根算法中使用到牛顿迭代公式 ,其中 为第 次迭代。当
时,即表示迭代初始值,相应的, 。
[0073] 将上述迭代初始值迭代牛顿迭代公式进行一次迭代,可得:
[0074]
[0075]
[0076]    (公式1)。
[0077] 在上述公式1中,即减数 可通过第一参与方A和第二参与方B进行一次秘密分享进行计算。减法的后半部分,即被减数 中,与 由第一参与方A存储,可以实现第一参与方A的本地计算;与 由第二参与方B存储,可以实现第二参与方B的本地计算。因此, 可视为 。这样,被减数 可通过第一参与方A和第二参
与方B进行另一次秘密分享进行计算。这样,本说明书实施例的方案中,牛顿迭代计算过程中使用两次秘密分享乘法,共迭代1次,两个参与方可以分别各自得到待处理数据 平方根倒数的两个加法分片中的其中一个。假设迭代后第一参与方A得到的第一加法分片记为 ,第二参与方B得到的第二加法分片记为 。加法分片 、可以同与 和 一样为浮点数形式存储的整数,以及属于有限域 或环 。此时, 。因此,所述
方法的另一个实施例中,所述得到所述待处理数据的平方根倒数的加法分片包括:
[0078] 得到所述待处理数据 的平方根倒数的第一加法分片 和所述待处理数据 的平方根倒数的第二加法分片 ,和 为浮点数,且 。
[0079] 为便于描述和理解本说明书实施例方案,下面对基于公式1得到分片 、的处理过程进行示意性说明。本领域技术人员基于说明书上述描述可以将加法分片转化成乘法分片。那么第一参与方A和第二参与方B通过计算与数据交互的联合计算可以将上述公式1可以转化为:
[0080] (Ma+Mb)-(Na+Nb)。
[0081] 进一步去括号后重新组合得到(Ma-Na)+(Mb-Nb)。其中,Ma和Na存储在第一参与方A,Mb和Nb存储在第二参与方B。令Ma-Na=Ca,Mb-Nb=Cb,这样,第一参与方A可以得到一个分片Ca(相当于分片 ),第二参与方B可以得到另一个分片Cb(相当于 )。
[0082] 当然,基于前述更加高效的浮点数平方根倒数的运算可以建立秘密共享场景下更加高效的模型。例如可应用于基于隐私保护的线性回归特征显著性检验、基于隐私保护的神经网络等,可以有效的对模型算法进行优化,提高计算设备的处理效率。
[0083] 本说明书实施例提供的一种隐私保护的数据处理方法,将秘密分享中的加法分片转化成乘法分片,对基于隐私保护平方根倒数算法进行优化,进而可在基于隐私保护的平方根倒数算法中引入快速平方根算法的高精度初始化,减少后续基于隐私保护的牛顿法的迭代次数,在保护用户隐私的同时提高了算法效率。
[0084] 本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。相关之处参见方法实施例的部分说明即可。
[0085] 可以理解的是,上实施例所述方法的全部或部分步骤可以在某个参与方的计算设备上执行或者多个参与方之间通过计算与通信完成,也可以由第三方的服务器执行,也可以由第三服务器和一个或多个参与方共同完成(如参与方共同使用的平台)。例如公式1中的迭代计算可以在第三方的服务器上执行,各个参与方通过公式1各自计算出平方根倒数的一个分片。基于前述描述,本说明书还提供一种可应用于参与方单侧的隐私保护数据处理方法。当然,由前述描述可知,单个参与方在处理的同时,可以包括与其他参与方或者第三方服务器交互的处理过程,以实现加法分片转化为乘法分片的、牛顿迭代等。具体的,如图2所示,本说明书提供另一种隐私保护的数据处理方法,可以包括:
[0086] S20:第一参与方以浮点数形式存储待处理数据在秘密分享下的第一分片;
[0087] S22:第一参与方通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片的结果;
[0088] S24:第一参与方利用第一参与方的乘法分片在本地计算迭代估计值的初始值的乘法分片,以使计算方根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;
[0089] S26:第一参与方获取基于隐私保护的浮点数平方根倒数的牛顿迭代处理后所述数据的平方根倒数的第一加法分片。
[0090] 基于前述方法实施例的描述,所述方法的另一个实施例中,所述第一参与方通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片的结果,包括:
[0091] 第一参与方本地使用伪随机数生成器生成随机数 并求 ,以及计算得到,其中, ; 为第一参与方存储的待处理数据 在秘密分享下的第一分片, 为第二参与方存储的待处理数据 在秘密分享下的第二分片, ;
为以浮点数形式存储的整数;
[0092] 第一参与方和第二参与方通过秘密分享乘法联合计算 ,第一参与方得到,第二参与方得到 ;
[0093] 第一参与方计算 并将 发送至第二参与方,以使第二参与方B计算 ,此时 。
[0094] 基于前述方法实施例的描述,所述方法的另一个实施例中,所述第一参与方利用第一参与方的乘法分片在本地计算迭代估计值的初始值的乘法分片包括:
[0095] 第一参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;
[0096] 计算常数C ,并按照P位浮点数的存储方式进行读取,作为第一参与方迭代估计值的初始值的乘法分片 。
[0097] 基于前述方法实施例的描述,所述方法的另一个实施例中,其中,P为2的T次方,T为大于5的整数;以及当P取值为5时,常数C取值0x5fe6eb50c7b537a9。
[0098] 基于前述方法实施例的描述,其中,第一参与方通过牛顿迭代计算得到所述待处理数据的平方根倒数的第一加法分片 满足 ,和 为浮点数,为第二参与方通过牛顿迭代计算得到所述待处理数据的平方根倒数的第二加法分片。
[0099] 本说明书实施例提供的一种隐私保护的数据处理方法,将秘密分享中的加法分片转化成乘法分片,对基于隐私保护的浮点数平方根倒数算法进行优化,进而可在基于隐私保护的平方根倒数算法中引入快速平方根算法的高精度初始化,减少后续基于隐私保护的牛顿法的迭代次数,在保护用户隐私的同时提高了算法效率。
[0100] 本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。相关之处参见方法实施例的部分说明即可。
[0101] 本说明书实施例所提供的方法实施例可以在手持终端、计算机终端、服务器、服务器集群、移动终端、区块链系统、分布式网络或者类似的运算装置中执行。所述的装置可以包括使用了本说明书实施例的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。以运行在服务器上的处理设备为例,图3是应用本发明实施例的一种隐私保护的服务器的硬件结构框图。如图3所示,服务器10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器200、以及用于通信功能的传输模块300。本邻域普通技术人员可以理解,图3所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图3中所示更多或者更少的组件,例如还可以包括其它的处理硬件,如内部总线、内存、数据库或多级缓存、显示器,或者具有与图3所示的不同的其他配置。
[0102] 存储器200可用于存储应用软件的软件程序以及模块,处理器100通过运行存储在存储器200内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其它非易失性固态存储器。在一些实例中,存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至服务器10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0103] 传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器10的区块链专用网络或者万维网或者通信供应商提供的网络。在一个实例中,传输模块300包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其它网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
[0104] 基于上述所述的隐私保护的数据处理方法实施例的描述,本说明书还提供一种隐私保护的数据处理装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0105] 具体地,图4是本说明书提供的一种隐私保护的数据处理装置实施例的模块结构示意图,如图4所示,所述装置可以包括:
[0106] 分片确定模块40,可以用于确定待处理数据在秘密分享下的第一参与方以浮点数形式存储的第一分片、第二参与方以浮点数形式存储的秘密分享下的第二分片;
[0107] 转化模块42,可以用于将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片;
[0108] 初始模块44,可以用于根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片;
[0109] 迭代计算模块46,可以用于根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理,得到所述待处理数据的平方根倒数的加法分片。
[0110] 基于前述方法实施例的描述,所述装置的另一个实施例中,所述转化模块42将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片包括:
[0111] 第一参与方本地使用伪随机数生成器生成随机数 并求 ,以及计算得到,其中, ;为第一参与方存储的待处理数据 在秘密分享下的第一分片, 为第二参与方存储的待处理数据 在秘密分享下的第二分片, ;
为以浮点数形式存储的整数;
[0112] 第一参与方和第二参与方通过秘密分享乘法联合计算 ,第一参与方得到,第二参与方得到 ;
[0113] 第一参与方计算 并将 发送至第二参与方;
[0114] 第二参与方计算 ,此时 。
[0115] 基于前述方法实施例的描述,所述装置的另一个实施例中,所述初始模块44根据所述乘法分片确定第一参与方与第二参与方在本地计算迭代估计值的初始值的乘法分片,包括:
[0116] 第一参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;
[0117] 计算常数C ,并按照P位浮点数的存储方式进行读取,作为第一参与方迭代估计值的初始值的乘法分片 ;
[0118] 第二参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ;
[0119] 计算常数C ,并按照P位浮点数的存储方式进行读取,作为第二参与方迭代估计值的初始值的乘法分片 。
[0120] 基于前述方法实施例的描述,所述装置的另一个实施例中,其中,P为2的T次方,T为大于5的整数;以及当P取值为5时,常数C取值0x5fe6eb50c7b537a9。
[0121] 基于前述方法实施例的描述,所述装置的另一个实施例中,所述迭代计算模块46得到所述数据的平方根倒数的分片包括:
[0122] 得到所述待处理数据 的平方根倒数的第一加法分片 和所述待处理数据 的平方根倒数的第二加法分片 ,和 为浮点数,且 。
[0123] 前述所述的方法还可以应用于另一种隐私保护的数据处理装置中。可以输入参与方各自存储的浮点数在秘密分享下的分片,经过计算处理后输出浮点数平方根倒数的分片。具体的,本说明书还提供另一个隐私保护的数据处理装置,如图5所示,可以包括:
[0124] 输入模块50,可以用于获取第一参与方以浮点数形式存储的待处理数据 在秘密分享下的第一分片、第二参与方以浮点数存储的待处理数据 在秘密分享下的第二分片,; 为以浮点数形式存储的整数;
[0125] 计算模块52,可以用于将第一参与方与第二参与方秘密分享下的加法分片转化成乘法分片;还用于根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片;还根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;
[0126] 输出模块54,可以用于得到所述待处理数据 的平方根倒数的第一加法分片 和第二加法分片 ,和 为浮点数,且 。
[0127] 基于前述方法实施例描述,本说明书提供所述装置的另一个实施例中, 所述确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片包括:
[0128] 第一参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ,P为浮点数的位数;
[0129] 计算常数C ,并按照P位浮点数的存储方式进行读取,作为第一参与方迭代估计值的初始值的乘法分片 ;
[0130] 第二参与方将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为 ;
[0131] 计算常数C ,并按照P位浮点数的存储方式进行读取,作为第二参与方迭代估计值的初始值的乘法分片 。
[0132] 基于前述方法实施例描述,本说明书提供所述装置的另一个实施例中,所述计算模块52根据所述乘法分片确定第一参与方与第二参与方在本地计算的迭代估计值的初始值的乘法分片,包括:
[0133] 第一参与方本地使用伪随机数生成器生成随机数 并求 ,以及计算得到,其中, ; 为第一参与方存储的待处理数据 在秘密分享下的第一分片, 为第二参与方存储的待处理数据 在秘密分享下的第二分片, ;
为浮点数形式存储的整数;
[0134] 第一参与方和第二参与方通过秘密分享乘法联合计算 ,第一参与方得到,第二参与方得到 ;
[0135] 第一参与方计算 并将 发送至第二参与方,以使第二参与方B计算 ,此时 。
[0136] 基于所述的可以应用于单侧参与方的隐私保护的数据处理方法,本说明书还提供可以另一张应用于参与方的隐私保护的数据处理装置。该装置可以与参与方的其他处理设备进行机械或电性的直接或间接偶尔,或者以计算机可执行代码的形式存储在参与方的存储介质中以实现相应的功能。具体的,本说明书还提供另一个隐私保护的数据处理装置,如图6所示,可以包括:
[0137] 存储模块60,可以以浮点数形式存储待处理数据在秘密分享下的第一分片;
[0138] 乘法转化模块62,可以用于通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将本端与第二参与方秘密分享下的加法分片转化成乘法分片的结果;
[0139] 处理模块64,可以利用本端的乘法分片在本地计算迭代估计值的初始值的乘法分片,以使计算方根据所述迭代估计值的初始值的乘法分片,通过第一参与方和第二参与方的联合计算进行基于隐私保护的浮点数平方根倒数的牛顿迭代处理;
[0140] 结果分片模块66,可以用于获取基于隐私保护的浮点数平方根倒数的牛顿迭代处理后所述待处理数据的平方根倒数的第一加法分片。
[0141] 所述的本端可以为所述隐私保护的数据处理装置或者包含所述隐私保护数据处理装置的设备。
[0142] 基于前述方法实施例描述,本说明书提供所述装置的另一个实施例中,所述通过本地计算和秘密分享计算出第二参与方在乘法分片中使用的预处理数据,并将所述预处理数据发送至所述第二参与方,以确定将本端与第二参与方秘密分享下的加法分片转化成乘法分片的结果包括:
[0143] 本地使用伪随机数生成器生成随机数 并求 ,以及计算得到 ,其中, ; 为本端存储的待处理数据 在秘密分享下的第一分片,为第二参与
方存储的待处理数据 在秘密分享下的第二分片, ; 为以浮点数形式存储
的整数;
[0144] 和第二参与方通过秘密分享乘法联合计算 得到 ,第二参与方得到 ;
[0145] 计算 并将 发送至第二参与方,以使第二参与方计算,此时 。
[0146] 基于前述方法实施例描述,本说明书提供所述装置的另一个实施例中,所述处理模块利用本端的乘法分片在本地计算迭代估计值的初始值的乘法分片包括:
[0147] 将P位浮点数 的存储值按照P位整数的存储方式进行读取,并右移一位,记为,P为浮点数的位数;
[0148] 计算常数C ,并按照P位浮点数的存储方式进行读取,作为本端迭代估计值的初始值的乘法分片 。
[0149] 基于前述方法实施例描述,本说明书提供所述装置的另一个实施例中,其中,P为2的T次方,T为大于5的整数;以及当P取值为5时,常数C取值0x5fe6eb50c7b537a9。
[0150] 基于前述方法实施例描述,本说明书提供所述装置的另一个实施例中,其中得到的所述待处理数据 的平方根倒数的第一加法分片 满足 ,和为浮点数,为第二参与方得到所述待处理数据 的平方根倒数的第二加法分片。
[0151] 需要说明的,上述所述的装置根据方法实施例的描述还可以包括其它的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
[0152] 本说明书中上述装置的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见或参照对应的方法实施例描述即可,每个实施例重点说明的都是与其它实施例的不同之处。相关之处参见方法实施例的部分说明即可。具体的可以根据前述方法实施例的描述的可以得到,且都应属于本申请所保护的实施范围之内,在此不做逐个实施例实现方案的赘述。
[0153] 本说明书实施例提供的上述隐私保护的数据处理方法或装置可以在计算机中由处理器执行相应的程序指令来实现,如使用Windows操作系统的C++语言在PC端实现、基于Linux系统实现,或其它例如使用Android、iOS系统程序设计语言在智能终端实现,或者服务器集群、云处理/云计算、区块链,以及基于量子计算的处理逻辑实现等。基于前述方法实施例的描述,本说明书还提供一种隐私保护服务器。一个实施例中,可以包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现本说明书中任意一项所述方法的步骤。所述的隐私保护服务器具体的可以为第三方服务器/第三方平台,可以在MPC下与参与数据计算的参与方进行联合计算。
[0154] 基于前述方法实施例的描述,本说明书还提供另一种隐私保护服务器。一个实施例中,可以包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现本说明书中任意一项所述方法的步骤。所述的隐私保护服务器具体的可以为在MPC下与参与数据计算的参与方,可以与第三方服务器/第三方平台以及其他参与方进行联合计算。
[0155] 所述隐私保护服务器可以包括使用了本说明书任意一个方法实施例或包含本说明书的任意一个装置实施例的并结合必要的实施硬件的设备。
[0156] 上述中所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其它方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
[0157] 如前所述,上述所述的隐私保护服务器的实施例具体的实现方式可以参见前述方法实施例的描述。并且根据方法相关实施例的描述还可以包括其它的实施方式,具体的实现方式可以参照对应方法实施例的描述,在此不作一一赘述。
[0158] 上述对本说明书特定实施例进行了描述。基于上述实施例描述的可扩展的实施例仍在本说明书提供的实施范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0159] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0160] 本说明书实施例提供的一种隐私保护的数据处理方法、装置及服务器,可以对基于隐私保护的浮点数的平方根倒数算法进行优化。本实施例中在两方联合进行牛顿法迭代计算时将秘密分享中的加法分片转化成乘法分片,在基于隐私保护的浮点数平方根倒数算法中引入快速平方根算法的高精度初始化,从而减少后续基于隐私保护的牛顿法的迭代次数,在保护参与方隐私的同时提高了算法效率,提高了计算设备的处理性能。
[0161] 本说明书实施例并不局限于必须是计算机中64位浮点数的平方根倒数计算、符合标准秘密共享的矩阵乘法或加法秘密共享上的乘法运算的方式、行业通信标准、标准程序语言、数据存储规则或本说明书一个或多个实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书实施例的可选实施方案范围之内。
[0162] 在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0163] 控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0164] 上述实施例阐明的服务器、装置、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0165] 虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
[0166] 为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0167] 本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0168] 这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0169] 这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0170] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0171] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0172] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其它数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其它类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其它内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其它光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其它磁性存储设备或任何其它非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0173] 本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0174] 本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0175] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0176] 以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。