使用模整数进行安全多方计算的算法

文档序号:441135 发布日期:2021-12-24 浏览:2次 >En<

阅读说明:本技术 使用模整数进行安全多方计算的算法 (Algorithm for secure multiparty computation using modular integers ) 是由 M·格奥尔基耶娃 N·迦玛 D·杰特切夫 于 2020-02-24 设计创作,主要内容包括:一种安全多方计算在后端使用模整数表示实现实数运算。作为所述实现的一部分,由多个参与方以第一模表示共同存储的秘密共享值被投射为具有较大最高有效位的第二模表示。所述参与方使用第一表示的秘密共享掩蔽值来掩蔽和透露所述秘密共享值和所述秘密共享掩蔽值的总和,所述第一表示的范围被分为两半。所述参与方使用标识所述范围中包含所述掩蔽值的所述一半的秘密共享位,连同所述总和以协同构建以第二模格式表示所述秘密共享值的一组秘密份额。与先前的工作相比,所公开的解决方案在不牺牲效率或安全性的情况下消除了错误的非零概率。(A secure multi-party computation implements real operations using modulo integer representation at the back-end. As part of the implementation, a secret sharing value stored in common by multiple parties in a first modulo representation is projected as a second modulo representation with a larger most significant bit. The participant uses a secret-sharing masking value of a first representation, the range of which is divided in half, to mask and reveal the sum of the secret-sharing value and the secret-sharing masking value. The participants use a secret sharing bit that identifies the half of the range that includes the masking value, along with the sum, to cooperatively construct a set of secret shares that represent the secret sharing value in a second pattern. In contrast to previous work, the disclosed solution eliminates a non-zero probability of error without sacrificing efficiency or safety.)

使用模整数进行安全多方计算的算法

相关申请

本申请的主题涉及2019年2月22日提交的美国临时申请第62809543号,其全部内容通过引用并入本文。本申请的主题还涉及2018年8月30日提交并于2019年3月7日公布为世界知识产权组织国际公开号WO2019046651A2的专利合作条约申请第PCT/US2018/048963号,其全部内容通过引用并入本文。

背景技术

隐私保护多方计算(MPC)技术使多个参与方能够协同评估一个函数,以在保持输入私密性的同时产生共享或透露的输出。当输入数据来自无法公开其数据的不同私有数据源,但需要基于机密数据的公开结果时,就会使用此类计算,例如在医疗和金融中。

MPC通常同时在时间和地理上跨越多个参与者。每个参与者代表一个单独的计算系统,通常包括个k个参与方和一个可信交易商。如本文所用,术语参与方和玩家可互换使用并且指参与多方计算的单独的参与方计算机系统。

在编译用来实现计算的代码之后,可信交易商首先执行MPC的离线阶段。在离线阶段,可信交易商产生掩码(掩蔽数据,也称为三元组),并将这些掩码的份额分配给各参与方,使得每个参与方只知道自己的掩码份额,而没有人知道由份额的总和所表示的明文掩码值。掩码的确定通常取决于从统计分析角度预期要对其进行操作的数据,以便与数据相关地适当配置掩码。

然后k个参与方协同执行MPC的在线阶段,其具有其中各参与方可以根据定义的MPC协议交换或广播消息的同步步骤。在线阶段可以在可信交易商无法访问的防火墙环境中运行。

MPC可以是明文伪代码的分布式等同形式,我们可以将其描述为MPC友好的基本操作的单一静态分配(SSA)图。SSA图的节点是明文变量,并且每个参与方都获得变量的本地视图(或秘密份额)。我们将该本地视图表示为MPC容器。MPC友好的基本操作被称为内建函数,其采用MPC容器和任选的一些静态参数作为输入并生成MPC容器作为输出。

图1示出了针对多方计算的k个参与方的MPC容器的示意图。全局上,一个MPC容器保存关于SSA中一个变量的所有信息,即明文值x(其可以是公开的(所有参与方都知道,但可信交易商不知道)或秘密共享的(每个参与方只知道自己的份额)、一个掩码(交易商知道,并且在所有参与方之间秘密共享)以及任选的掩码值a=x+λ(所有参与方都知道,但通常交易商不知道)。符号说明:这里使用双方括号符号来表示秘密共享值。

在本地,每个参与方都有MPC容器的踪迹,其可以是具有如下字段的结构:

—公共值x(如果容器被公开透露)

—公共值的一个份额xj

—容器的掩码的一个份额λj

—掩码值a(如果容器被掩蔽和透露)。

分析k个容器的联合,以下成立:如果容器是公共的,所有参与方都知道明文值,并且每个参与方都填充了该值x,则容器的明文值根据定义是所有份额的总和∑xj。在这种情况下,在MPC协议中不需要使用任何其他字段。容器的掩码为λ=∑λj。掩码的值只有可信交易商才知道(在离线阶段期间)。在在线阶段期间,任何参与方都不知道或了解实际的掩码。掩码值a等于λ+x。特殊的掩蔽和透露操作指示每个参与方广播其xjj,这允许他们共同重建并存储相同的字段a=x+λ。出现在内建函数中的所有其他技术或局部变量都称为临时变量。

两项先前的工作已经提出使用定点整数表示,而不是浮点表示,来表示MPC上下文中的实数。第一项先前工作在下文中将被称为“SecureML”,作者为P.Mohassel和Y.Zhang,标题为“SecureML:一种用于可扩展隐私保护机器学习的系统(SecureML:A system forscalable privacy-preserving machine learning)”,2017年IEEE安全和隐私研讨会,SP2017,美国加利福尼亚州圣何塞,2017年5月22-26日,第19-38页,2017。第二项先前工作在下文中将被称为“ABY3”,作者为P.Mohassel和P.Rindal,标题为“ABY3:机器学习的混合协议框架(ABY3:A mixed protocol framework for machine learning)”,2018年ACM SIGSAC计算机和通信安全会议论文集,CCS 2018,加拿大安大略省多伦多,2018年10月15-19日,第35-52页,2018。

modReal表示。在这些工作中,实数算法是通过对固定大小的整数类型(例如int64,即整数模264)进行加法、减法和舍入划分的评估来实现的。例如,要将两个30位整数x和y相乘并保留结果的30个最高有效位(类似于浮点乘法),可以首先计算xy(通过将乘积拟合为一个64位整数而没有任何溢出)然后将结果右移30位。这两项工作使这些运算适应MPC设定,其中明文在k个参与方(SecureML中k=2,ABY3中k≥3)之间秘密共享为(对于某个整数q),使得x=centermodq(x1+...+xk).有符号的数学提升centermodq(x)被定义为唯一整数使得我们将对运算份额的这种特殊的实数表示表示为modReal表示。

SecureML,第4.1节,标题为“对共享小数的算术运算(Arithmetic Operations onShared Decimal Numbers)”的小节建议如下。考虑以公共整数表示存储的两个二进制小数x和y的定点积,使得每个数的位被定义为表示数的小数部分(小数点后的二进制数字)。在这种情况下,将是可以使用整数后端本地表示的整数。然而,乘积z=x′y′(其中对于某个整数中进行乘法)在表示的小数部分中将有多达位。然而,在小数后保留额外的二进制数字可能不切实际,尤其是在MPC的上下文中。SecureML建议通过忽略或截断最后位来减少表示结果中小数部分的位数。例如,乘积可以表示为:其中并考虑结果只包括

然后SecureML将上述截断技术扩展到秘密共享值实际上,持有的相应秘密份额的两个参与方可以截断其各自的份额。然后在定理1中表明,两个截断的份额可以以很高的概率重建z的截断该解决方案依赖于以下前提:如果x1和x2是一个非常小的x的两个秘密份额,那么很有可能,这两个份额x1和x2在两个相对的半圆中。该解决方案仅适用于两个参与方,依赖于本地过程来截断份额,但所得到的秘密共享值不正确的概率为非零。

ABY3在5.1.1节中解决了SecureML的两个参与方截断技术的局限性,第5.2.2节提出了用于在MPC设置中扩展到三个或更多个参与方的其他截断技术。然而,这些其他技术在实践中同样具有不可忽略的失败概率。

在先前的两项工作中,乘法是使用比弗三元组模q进行的,可以在每个份额上本地执行舍入(以为界的明文值的小误差为代价),并且可以在每个份额上本地完成加法。提出了两种划分的变体:第一种,在SecureML中,是两个参与方之间没有通信的两方解决方案,第二种,在ABY3中,是基于比弗三元组的针对k个参与方的解决方案。在这两种情况下,划分的结果大部分时间都是正确的;然而,一个巨大的无法检测的溢出发生了,概率很小但并非零。M个整数元素的明文范围和份额模q的溢出概率为M/q。在上面提到的两个30位整数相乘的示例中,溢出概率为261/264=1/8,如果我们将精度降低到20位,则下降到241/264。当其发生时,溢出很大(由于SecureML,溢出幅度已得到缓解,但它仍会更改新ABY3修订版中结果的最高有效位)。因此,任何包含这些错误值的聚合函数都会受到影响。溢出概率是按系数计算的,因此如果我们对N个系数的向量或矩阵进行计算(对于大多数ML用例,例如逻辑回归、线性回归、神经网络),则存在至少一个破坏性溢出乘以N并变得不可忽略。

先前两项工作提出的处理数百万个系数的两种可能对策要么是降低精度(在64位后端上最多提供10位精度),要么将后端大小增加到例如128位(慢4到16倍)。请注意,在数值稳定的用例中,10位定点精度就足够了,在这些用例中,我们知道明文的确切分布(例如特征缩放输入、sigmoid的输出等)。然而,如果定点指数按估计比实际值高4或5位,我们也可能遇到严重的下溢情况,这是因为秘密明文分布的不确定性。

发明内容

在安全多方计算的上下文中,由多个参与方以第一模表示共同存储的秘密共享值被投射为具有较大最高有效位的第二模表示。该投射包括与个参与方共享掩蔽值的可信交易商秘密,该掩蔽值的范围被分成两半。各参与方使用掩蔽值来掩蔽和透露秘密共享值和掩蔽值的总和。可信交易商还与各参与方秘密共享对范围中包含掩蔽值的一半进行编码的位。各参与方使用秘密共享位连同总和以协同重建以第二模格式表示秘密共享值的一组秘密份额。与先前的工作相比,所公开的解决方案在不牺牲效率或安全性的情况下消除了错误的非零概率。该方法在以下详细说明的第3.1节中更详细地描述。

一种可以由配置为对秘密共享值执行多方计算的安全多方计算系统(SMPCS)执行的方法,其中SMPCS包括可信交易商计算系统和进行安全联网通信的多个参与方计算系统。该方法用于将秘密共享值从第一模表示投射为第二模表示,其中第一模表示具有由第一模表示的最高有效位位置和最低有效位位置定义的范围,并且其中第二模表示具有由第二模表示的最高有效位位置和最低有效位位置定义的范围,并且其中第二模表示的最高有效位位置大于第一模表示的最高有效位位置。

根据一个实施例,参与方计算系统中的每一个以第一模表示存储秘密共享值的相应秘密份额。可信交易商计算系统以第一模表示存储掩蔽值并且将掩蔽值的相应秘密份额传送给参与方计算系统中的每一个,从而使得掩蔽值以第一模表示在参与方计算系统之间秘密共享。可信交易商计算系统:确定掩蔽值所在的子范围,其中该子范围选自表示第一模表示的范围的多个预定的不重叠子范围;将所确定的子范围编码为数值子范围标识符,以及将数值子范围标识符的相应秘密份额传送给参与方计算系统中的每一个,从而使得数值子范围标识符在参与方计算系统之间秘密共享。可信交易商计算系统在第一转换中通过至少对掩蔽值执行第一数学提升将掩蔽值转换为转换掩蔽值。可信交易商计算系统以第二模表示将转换掩蔽值的相应秘密份额传送给参与方计算系统中的每一个,从而使得转换掩蔽值以第二模表示在参与方计算系统之间秘密共享。参与方计算系统协同计算并透露秘密共享值和掩蔽值的总和作为掩码值,而不透露秘密共享值的秘密份额或掩蔽值的秘密份额。

SMPCS在第二转换中通过至少对掩码值执行第二数学提升将掩码值转换为第一转换掩码值。SMPCS在第三转换中通过至少对掩码值执行第三数学提升将掩码值转换为第二转换掩码值,其中第一数学提升、第二数学提升和第三数学提升彼此各不相同。参与方计算系统协同计算第二模表示的秘密共享值,从而使得参与方计算系统中的每一个基于以下项计算第二模表示的秘密共享值的相应秘密份额:第一转换掩码值,第二转换掩码值,针对每一个参与方计算系统的数值子范围标识符的相应秘密份额,以及针对每一个参与方计算系统的转换掩蔽值的相应秘密份额。

可以执行该方法,其中第一数学提升和第二数学提升产生相对于彼此偏移第一模表示的范围的四分之一的值,并且其中第二数学提升和第三数学提升产生相对于彼此偏移第一模表示的范围的一半的值。

可以执行该方法,其中第一数学提升、第二数学提升和第三数学提升各自选自由以下组成的组:由参数化的quartermod提升,其中(Mmsb-1)是第一模表示的最高有效位位置;由参数化的centermod提升;以及由参数化的posmod提升。

可以执行该方法,其中第一数学提升是对由参数化的掩蔽值的quartermod提升,其中第二数学提升是对由参数化的掩码值的centermod提升,其中第三数学提升是对由参数化的掩码值的posmod提升,并且其中(Mmsb-1)是第一模表示的最高有效位位置。

可以执行该方法,其中对由2M参数化的x的quartermod提升被定义为唯一的实数使得其中对由2M参数化的x的centermod提升被定义为唯一的实数使得并且其中对由2M参数化的x的posmod提升被定义为唯一的实数使得

可以执行该方法,其中第一转换还包括:将第一数学提升的结果舍入到的最接近的倍数,其中p′lsb是第二模表示的最低有效位位置,并且取舍入的模,其中(M′msb-1)是第二模表示的最高有效位位置;其中第二转换还包括:将第二数学提升的结果舍入到的最接近的倍数,并且取舍入的模并且其中第三转换还包括:将第三数学提升的结果舍入到的最接近的倍数,并且取舍入的模

可以执行该方法,其中第一转换、第二转换和第三转换均包括将相关联的数学提升的结果投影到上,其中(M′msb-1)是第二模表示的最高有效位位置。

可以执行该方法,其中“多个预定的非重叠子范围”由两个大小相等的子范围组成,并且其中数值子范围标识符选自由数字0和1组成的组。

可以执行该方法,其中秘密共享数值子范围标识符由参与方计算系统协同使用以在第一转换掩码值和第二转换掩码值之间进行选择,以用于计算第二模表示的秘密共享值。

可以执行该方法,其中第一模表示和第二模表示是实数的定点整数表示。

一种可以由配置为对秘密共享值执行多方计算的SMPCS执行的方法,其中SMPCS包括进行安全联网通信的多个参与方计算系统。该方法用于将秘密共享值从第一模表示投射为第二模表示,其中第一模表示具有由第一模表示的最高有效位位置和最低有效位位置定义的范围,并且其中第二模表示具有由第二模表示的最高有效位位置和最低有效位位置定义的范围,并且其中第二模表示的最高有效位位置大于第一模表示的最高有效位位置。

根据一个实施例,参与方计算系统中的每一个以第一模表示存储秘密共享值的相应秘密份额。SMPCS将掩蔽值的相应秘密份额传送给参与方计算系统中的每一个,从而使得掩蔽值在参与方计算系统之间秘密共享。SMPCS将掩蔽值所在的子范围的指示的相应秘密份额传送给参与方计算系统中的每一个,其中该子范围选自表示第一模表示的范围的多个预定的非重叠子范围,从而使得子范围指示在参与方计算系统之间秘密共享。SMPCS在第一转换中通过至少对掩蔽值执行第一数学提升将掩蔽值转换为转换掩蔽值。SMPCS以第二模表示将转换掩蔽值的相应秘密份额传送给参与方计算系统中的每一个,从而使得转换掩蔽值以第二模表示在参与方计算系统之间秘密共享。参与方计算系统协同计算并透露秘密共享值和掩蔽值的总和作为掩码值,而不透露秘密共享值的秘密份额或掩蔽值的秘密份额。SMPCS在第二转换中通过至少对掩码值执行第二数学提升将掩码值转换为第一转换掩码值。SMPCS在第三转换中通过至少对掩码值执行第三数学提升将掩码值转换为第二转换掩码值,其中第一数学提升、第二数学提升和第三数学提升彼此各不相同。参与方计算系统协同计算第二模表示的秘密共享值,从而使得参与方计算系统中的每一个基于以下项计算第二模表示的秘密共享值的相应秘密份额:第一转换掩码值,第二转换掩码值,针对每一个参与方计算系统的子范围指示的相应秘密份额,以及针对每一个参与方计算系统的转换掩蔽值的相应秘密份额。

可以执行该方法,其中第一转换、第二转换和第三转换均包括将相关联的数学提升的结果投影到上,其中(M′msb-1)是第二模表示的最高有效位位置。

可以执行该方法,其中“多个预定的非重叠子范围”由两个大小相等的子范围组成,并且其中数值子范围标识符选自由数字0和1组成的组。

可以执行该方法,其中秘密共享数值子范围标识符由参与方计算系统协同使用以在第一转换掩码值和第二转换掩码值之间进行选择,以用于计算第二模表示的秘密共享值。

可以执行该方法,其中第一模表示和第二模表示是实数的定点整数表示。

一种用于执行以相应初始模表示存储的第一秘密共享值和以相应初始模表示存储的第二秘密共享值的乘法的方法,该方法可以包括:根据前述用于投射的方法中的任一种,将第一秘密共享值和第二秘密共享值中的至少一个投射为公共模表示,从而使得第一秘密共享值和第二秘密共享值以公共模表示存储;以及对公共模表示的第一秘密共享值和第二秘密共享值执行比弗乘法。。

一种用于组合多个秘密共享值和对应的多个静态系数的方法,每个秘密共享值以相应初始模表示存储,该方法可以包括:根据前述用于投射的方法中的任一种,将多个秘密共享值中的至少一个投射为公共模表示,从而使得多个秘密共享值全部以公共模表示存储;以及对以公共模表示存储的多个秘密共享值和对应的多个静态系数执行线性组合。

一种在秘密共享值上评估连续函数的方法可以包括:基于秘密共享值从多个确定的傅立叶级数中选择傅立叶级数,其中多个确定的傅立叶级数中的每一个被配置为在连续函数的域的相关子区间上逼近连续函数;基于该选择,根据前述用于投射的方法中的任一种,将秘密共享值从第一模表示投射为第二模表示;以及使用所选择的傅立叶级数在第二模表示的秘密共享值上逼近连续函数的值。

一种系统可以包括被配置为执行任何一种前述方法的多个计算机系统。

一种可以用计算机代码编码的非暂时性计算机可读介质,该计算机代码在由多个计算机系统执行时使多个计算机系统执行任何一种前述方法。

附图说明

图1示出了MPC容器的示意图。

图2示出了定点表示中位之间的关系。

图3示出了用于在类之间投射表示的四种投射运算。

图4示出了对示例性输入值的四种投射运算中的每一种的示例性应用。

图5示出了Lift(提升)运算的离线阶段的伪代码实现。

图6示出了Lift(提升)运算的在线阶段的伪代码实现。

图7示出了Share Refresh运算的离线阶段的伪代码实现。

图8示出了Share Refresh运算的在线阶段的伪代码实现。

图9示出了对模表示的两个秘密共享值的比弗乘法运算的伪代码实现。

图10示出了比弗乘法运算的示意图。

图11示出了对模表示的一个秘密共享值和一个公共值的比弗乘法运算的伪代码实现。

图12示出了比弗乘法运算的示意图。

图13示出了可以根据其执行清除步骤的示例性输入。

图14示出了使用ModReal表示的线性组合运算的伪代码实现。

图15示出了线性组合运算的示意图。

图16A显示了用于可信交易商模型的通信信道。

图16B显示了用于诚实但好奇模型的通信信道。

图17示出了在线阶段期间各参与方之间的通信信道的示意图。

图18示出了可以被适当地配置以实现本文所公开的组件的通用计算机架构。

具体实施方式

在以下描述中,参考了可以根据其实践所公开的主题的各种实施例。一些实施例可以使用表达一个/一/另一个实施例等来描述,其多个实例不一定指同一实施例。除非另有说明,否则可以在各种实施例中以任何合适的方式组合与此类实例相关联的特定特征、结构或特性。举例来说,本公开可以为一个实施例列出多个选项或可能性的集合或列表,并且在这种情况下,本公开具体考虑集合或列表中的项目的所有明显可行的组合和/或排列。

1概述

在本公开中,我们提出了在多方计算(MPC)设定中使用模整数表示以高数值精度执行实数运算的新技术。具体地,我们公开了一种用于将以第一模表示存储的秘密共享值投射为第二模表示的方法。与先前的工作相比,所公开的解决方案在不牺牲效率和安全性的情况下有利地消除了错误,这对于诸如线性回归和逻辑回归之类的机器学习技术很重要。

我们针对MPC采用全阈值安全模型,并将计算分为离线阶段和在线阶段。离线阶段(独立于输入数据)可以由可信交易商或诚实但好奇的交易商执行。这个阶段的更强大的模型和可验证性可以通过标准技术来实现,例如茫然传输和分割-选择。在线阶段计算结果的可加份额。

在我们的工作中,我们保持与之前工作中相同的份额定义,但我们通过添加一个完全消除溢出的小项来修改三元组(掩蔽值)定义(只要M/q≤1/2)。该方法在在线阶段期间保持单轮通信,并仅添加少量二进制运算以保留整体运行时间。新方法总是正确的,安全性是无条件的,并且其适用于任意数量的参与方。

简要概括,ABY3中的溢出来自这样一个事实,例如,在除法运算期间,必须由随机掩码r'mod q(在离线阶段期间选择)和掩码值α=x'-r'mod q重建小明文x∈Z。后者在应用与类mod q不兼容的除法运算之前的在线阶段期间透露。为了做到这一点,r'和a都被隐式提升为[-q/2,q/2)中的整数。更准确地说,在ABY3的§5.1.1、5.1.2中,这两个隐式居中提升发生在两个运算期间:1)在三元组r=r'/2d的定义中,其中是随机的,并且2)在透露和局部计算(x'-r')/2d运算中。这两个提升并不总是与在实数上a-r'等于x'的进一步假设相匹配(该等式可能相差+q或-q的概率很小)。在我们的新设定中,我们保留了r′的全部范围,从而确保了无条件的安全性。然而,我们将组 分成两半,在离线阶段期间,我们秘密共享对包含r'的半组进行编码的附加位,并将该秘密共享位添加到同一个三元组中。每个半组对应于针对a-r'的不同提升,因此各参与方可以计算两个提升,然后使用共享位在在线阶段期间茫然选择正确的提升。

2明文值和秘密份额的表示

2.1浮点和定点表示

明文实数x可以用浮点形式表示为其中

—尾数m被归一化,使得1/2≤|m|<1,并且

—指数e∈Z(取决于数据)。

在m和e都依赖于明文值x的意义上,这种表示显然是依赖于数据的。特别是,指数e的值正好是由于浮点表示需要有关x的大小的信息来确定指数e,因此它依赖于数据并且不是MPC友好的,因为在多方计算之前编译器不知道该值e。

明文实数值x也可以用定点(整数)形式表示为其中

尾数m被归一化,使得1/2≤|m|<1,并且

指数e∈Z(公共值)。

在开始多方计算之前,从编译器的角度来看,指数可以被认为或视为公共的,而尾数可以视为私密的。由于编译器在计算之前不知道秘密数字x,因此编译器无法确定保证针对m的上述归一化的确切值e。这种表示也不适合,因为它很容易溢出或下溢,如以下两个示例所示:

溢出。假设我们要乘以以下两个数字(二进制):x=10.1(2)和y=10(2)。这两者都有指数2。然而,如果结果的预先计算的公共指数仍然是二,则计算将溢出,因为:x×y=101(2)。因此,我们需要一个至少为3的指数来避免溢出。

下溢。假设我们处于尾数位数有界(比如4位)的场景中,我们想要计算x2=1.1(2)×1.1(2)=10.01(2)。如果我们预先计算的指数是3而不是2,在改限制下,我们将失去精度,即结果将是010.0(2)而不是10.01(2)

因此,我们采用了一种中间方法,在该方法中,我们针对程序中的每个值薄记了一个足够好的指数边界。该边界可以通过特定的统计分析通过专用编译器来静态估计。该方法尽可能精确地跟踪秘密值的公共边界,而不透露秘密值本身。从这个角度来看,我们的实数表示是通过组合定点数和浮点数的特征的混合体。

从编译器的角度来看,指数可以被认为是公开的,而尾数可以被认为是私密的。然而,由于编译器当然不知道秘密数字x,编译器无法确定保证针对m的上述归一化的确切指数e,而只能确定一个上限。

2.2实数的混合明文表示

我们引入以下参数以用定点(整数)表示来表示实数:

—plsb表示最低有效位的位位置;

—(pmsb-1)表示最高有效位的位位置;

—ρ=pmsb-plsb表示明文数值窗口,即定点精度。

参数pmsb和plsb可以由编译器基于预期运算的数据的统计分析来确定。在实践中,限制因素是数值窗口ρ的大小(即尾数m的位数;相当于编译器保存的指数边界与要保存的小数部分中的二进制位数之差)。ρ越小,后端的运算效率越高。因此,静态分析需要保证以下两个条件:

—静态确定的边界足以避免溢出。

—边界尽可能精确以避免精度损失(考虑到ρ的限制)。

定义1(实数的整数表示)。给定参数pmsb和plsb,使用这些参数表示的明文值类由表示,并且定义为:

例如,x=1则pmsb=1,x=3则pmsb=2。注意,该类表示严格介于之间步长为的所有实数(在本例中为有理数)。注意,plsb通常是负的(当我们想要计算精确的整数部分和小数部分的几位精度时),但一般情况下,情况并非如此。负plsb意味着我们考虑了小数部分的位。ρ=pmsb-plsb实质上告诉我们需要多少位来表示该数值。plsb越负,浮点数的精度越高,并且需要更多的位来表示它。

示例1.对于pmsb=40和plsb=-10,我们有ρ=40-(-10)=50。在这种情况下,最低有效位将在位置-10,最高有效位将在位置39,并且最低有效非小数位在位置0。

示例2.对于plsb=-2和pmsb=5,数值以二进制表示为1011.1(2),并且表示为01011.10(2)。在这种情况下,两个小数位将占据位位置-2和-1,而非小数位将占据位置0到4。注意,给定的实数可以属于多种不同的明文类(即,上例中的11.5属于但它也属于以及)。

图2示出了定点表示中的位pmsb和位plsb之间的关系,以及在下溢和溢出情况下会受到影响的相关位。

明文溢出。集合既不是组也不是环;尤其是在诸如加、减、乘等实际算术运算下,它是不稳定的。例如,数字3属于但是3+3、-3-3和3×3都超出了边界更一般地,在表达式的结果超过输出明文集合的的任何情况下,我们将称为明文溢出。

为了避免明文溢出的风险,我们确保pmsb至少是log2(x)。但是变量的参数pmsb和plsb必须在编译时指定(在知道值x的实际值之前),因此为了降低风险,我们需要将pmsb设定为所有可能值的上界。这确保在将实际值分配给变量时不会发生溢出。这也意味着实际(或浮点)精度始终小于定点精度pmsb-plsb

明文下溢。如果固定指数被选择成过大,可能会完全丢失明文信息。例如,如果x=1×10-3且y=6×10-6,xy=6×10-6,那么对于浮点表示,一位小数位数足以表示乘积的尾数,并且计算出的指数为

另一方面,在定点世界中,如果输入的明文参数已经设定为(pmsb,plsb)=(0,-14),对应于4个小数位数的精度,常见的错误是假设乘积pmsb是两个输入pmsb的总和,并且此时,期望得到相同的14位定点精度的结果,因此对于参数(pmsb,plsb)=(0,-14):在这种情况下,结果计算为:0.0010×0.0060=0.0000,这完全失去了结果。这种情况被称为明文下溢,尽管在该示例中我们实际上有14位的定点精度,但从浮点的角度来看,计算结果是完全错误的。

2.3 ModReal-实数的模表示

ModReal表示是指模整数表示实数运算,例如可以基于64位或128位整数。该表示可以使用计算机处理器的定点单元与实数的定点表示,在小数点后具有固定数量的二进制位。

为了在多方计算中实现安全性,一定大小的明文值是秘密共享的,以共享通常属于具有较大参数的一类值的值。此外,秘密份额被较大类的值所掩蔽。这些较大的秘密份额类由两个整数Mmsb和plsb参数化。我们自行使用相同的符号plsb,因为在所有情况下,它都匹配明文最低有效位位置;然而,用于秘密共享数据的参数Mmsb通常会大于用于相应明文的pmsb

—plsb表示掩码/份额的最低有效位的位位置;

—(Mmsb-1)表示掩码/份额的最高有效位的位位置。

定义2(实数的模表示)。给定参数Mmsb和plsb,用于实数秘密份额的模表示的类被定义为有限阿贝尔群

注意,同构(作为阿贝尔群)并且具有我们将使用的自然-模结构。

最终允许我们实现MPC计算的信息论安全属性的类(与所有实数的集合不同)的重要属性是它允许均匀分布。

示例.对于plsb=-2和pmsb=6,数字x=11.5=12+1+2+8,以二进制表示为1011.1并且以表示为001011.10。相反的数字x'=-11.5=52.5=1/2+4+16+32 mod 64,以二进制表示为110100.1并且以表示为110100.10。需注意x和x'的整数部分的位是相反的。第一位给出数字的符号:如果第一位为0,则该数字为正数,否则为负数。

2.4 ModReal数学提升

在我们定义秘密份额的概念之前,我们展示了环面(对于正整数M)到(实数)的若干自然提升,这些将在整个过程中使用。此处,提升是指自然满射的一部分。我们定义了从的四种数学提升,它们由整数2M参数化如下:

被定义为唯一的实数使得

被定义为唯一的实数使得

被定义为唯一的实数使得

被定义为该差异要么是0要么是2M,取决于x属于哪个半空间。

2.5份额的模表示

模表示可以有利地用于表示秘密共享实数的份额。

定义3(秘密份额的模表示)。在一个实施例中,数字以类被秘密共享为如果

如果log2|x|<Mmsb-1,当Mmsb≥pmsb+1满足该条件,则份额是正确且无条件安全的。

可以通过示例显示模表示相对于MPC份额的非模表示的优势。

示例1.我们首先考虑使用上述非模块化类对每个份额进行非模表示的情况。明文整数42可以在三个参与方之间秘密共享为以的[33,97,-88]或以的[164301,-806845,642586]。在这两种情况下,我们都需要所有三个份额来重新计算精确的明文整数。然而,在第一种情况下,前两个份额的总和与27=128相比相当大,并且强烈表明明文整数是正数。该问题在第二个示例中得到了缓解,其使用了更大的pmsb但以更大的表示为代价。

示例2:接下来,我们考虑相同的整数42,以在三个参与方之间共享为[33,97,40]。我们需要所有三个份额来重新计算精确的整数明文,但是这一次,由于是组并且具有均匀分布,前两个份额根本不提供有关明文值的信息。对于k个参与方中的k-1个参与方的联合,此类份额的安全性为信息论。

3投射运算

为了支持对以模整数形式表示的秘密共享实数进行诸如加法和乘法等基本算术运算,我们首先需要确保两个操作数可以以兼容的类(明文和秘密份额类)进行投射。因此,重要的是使投射运算能够有效地将关于给定参数集的表示转换为关于另一参数集的表示。在本节中,我们将解释如何用不同的参数M′msb、p′lsb将来自给定类的一组模份额转换为来自另一个类的另一组模份额。投射运算可能需要也可能不需要通信,这取决于我们是减少还是增加参数plsb和Mmsb

图3示出了根据我们是增加还是减少参数plsb和Mmsb中的任何一个,在类之间投射表示的四种投射运算。这四种投射运算包括Extend(扩展)、Round(舍入)、Project(投影)和Lift(提升)(Lift不同于上面提到的四种自然提升)。

图4示出了对示例性输入值的四种投射运算中的每一种的示例性应用。在所示示例中,针对明文值x=1011.1(2)的模份额在两个参与方之间秘密共享,其中的模份额x1=001000.10且x2=000011.00。该示例显示了如何用不同的参数plsb或Mmsb将份额x1投射为另一个模数。为简单起见,运算在标量上给出,但更一般地说,所有这些运算都将在任何向量/矩阵/张量的每个系数上独立执行。

Extend(扩展)(p′lsb<plsb):扩展投射运算向每个输入份额添加附加的最低有效位,并以新表示将新最低有效位设定为0以填充以该表示的新位。扩展运算不需要各参与方之间的通信。

Round(舍入)(p′lsb>plsb):舍入投射运算从每个输入份额中删除最低有效位。舍入投射运算可以在持有份额的各参与方之间进行或不进行通信的情况下实施。在没有通信的情况下实施舍入投射运算的情况下,每个参与方都舍入以从其份额中本地删除最低有效位。由于与进位相关的错误,该实现不保证明文的p′lsb最低有效位是正确的。然而,可以通过各参与方之间的通信来实施舍入投射运算,以确保秘密份额加起来是p′lsb正确的明文值。下面介绍了此类保留精度的舍入投射运算的实现,称为ShareRefresh,但它在运行时间、存储器和通信方面的成本更高。

Project(投影)(M′msb<Mmsb):投影投射运算,其也不需要各参与方之间进行通信,根据以下自然满射同态转换份额:

Lift(提升)(M′msb>Mmsb):Lift投射运算需要各参与方之间的通信以及离线阶段和在线阶段。下面介绍了100%正确计算结果的Lift投射运算的实现。该实现改进了其中运算是概率性的并且具有非零的失败概率的先前工作。

下面,我们根据一个实施例解释具有在线阶段和离线阶段的Lift投射运算的实现。我们以一种稍微更一般的方式来完成这一点,而不必假设p′lsb=plsb。这具有实际优势,即通常可以将Lift运算和ShareRefresh运算合并为一个需要通信的运算,而不是两个单独的运算。

3.1对整数模表示的秘密份额的Lift投射运算的实现

在本节中,我们将解释如何将一组份额从第一模类转换或投射为第二模类的另一组份额,其中第二类的M′msb大于第一类的Mmsb,并且其中第二类的p′lsb可以小于、等于或大于第一类的plsb。我们将对整数模表示的秘密份额的这种特殊投射运算称为Lift(大写以区别于上述更一般的自然提升)。在一个实施例中,Lift运算在用于包括可信任交易商的多方计算的系统中部分离线(没有各参与方之间的通信)和部分在线(有各参与方之间的通信)执行。

根据一个实施例,Lift运算在一个秘密的共享MPC容器上运行(回想一下,如上面背景技术部分介绍的那样),其被掩蔽和透露如下:

—明文的秘密份额其中pmsb≤Mmsb-2

—掩码份额其总和λ在中是均匀随机的且各参与方未知。

—掩码值被各参与方透露和知晓。

Lift运算的目标是计算针对相同明文x的秘密份额其中M′msb大于Mmsb

定义4。

我们将范围划分为不相交的并集其中我们定义一个选择变量或位如下

具体地,bλ=0等价于可以改写为类似地,bλ=1等价于可以改写为

投射运算利用了这两种可能性,可以将其编码到位bλ中,对于quartermodN(λ):λ∈I0或者λ∈I1。令可以考虑两种数学提升(均为)

我们可以要求秘密共享值x在范围x∈[-N/4,N/4)内,并且在满足该条件的情况下,我们观察到以下等式:

或者更简洁地

可以在逻辑上将该等式重写为

以便根据bλ的值有效地在值之间进行选择。

为了获得针对x的份额模(将x去遮蔽成第二类),可以通过自然满射将上述等式投影到环面由于可信交易商可以预先计算并秘密共享quartermodN(λ)的图像v(以),因此各参与方可以基于以上等式(1)结合v从在线阶段中的知识恢复

这可以更具体地如下进行。对于j∈{0,1}令各参与方可以基于透露的掩码值a来确定(a1-a0)。可信交易商预先计算bλ并在各参与方之间将其秘密分享为虽然bλ的秘密共享可以以完成,但我们需注意除了(a1-a0)的二进制表示的最高M′msb-Mmsb位之外的所有位都将始终为零。因此,对于可信交易商来说,使用较小的模类来秘密共享位bλ就足够了,以便各参与方对和(a1-a0)的份额执行乘法。

总而言之,可信交易商需要:

1.生成随机掩码

2.计算选择位bλ并以将其秘密共享

3.计算该λ到的特定提升v,并且以将其秘密共享。

更确切地说,

其中函数采用实数z和整数并将z舍入到的最接近的整数倍。然后可以以将v秘密分享为

在计算的在线阶段,各参与方使用提升a0和a1并且在以上centermodN(x)+quartermodN(λ)的计算中仅针对茫然选择提取最高M′msb-Mmsb位。

3.1.1 Lift运算的伪代码实现

图5示出了根据一个实施例的Lift(提升)运算的离线阶段的伪代码实现。图6示出了根据该实施例的Lift(提升)运算的在线阶段的伪代码实现。

除了上述的roundTo函数之外,图5和图6所示的Lift运算利用了secretShares函数,该函数将一个值和一个类的规范作为输入,并输出多个秘密份额相加到以所提供的类的规范的表示的输入值。

对于图6所示运算的在线阶段,我们将运算(对于)定义为

—最后用Mmsb-p′lsb个零扩展的在该定义中,函数msbN(x)输出x的N个最高有效位。

3.2 ShareRefresh运算

定义5。另(Mmsb,plsb)和(M′msb≤p′lsb)成为两对参数,使得M′msb≤Mmsb。映射

定义如下:对于令z0中的任意表示,并设定

可以观察到,这可以重写为:

符号说明:本文使用的符号表示将数字x舍入到最接近的整数。

命题1。定义5是明确定义的,即其不依赖于表示z0的选择。

证明。令z∈Mparams且令z1,z2中的z的两个表示。根据定义,存在使得由于p′lsb≤M′msb≤Mmsb,我们得到具体地,由于M′msb≤Mmsb,我们得到

从这一点上,我们假设params和params′满足命题1的假设。

在一个实施例中,Share Refresh运算部分离线(没有各参与方之间的通信)和部分在线(有各参与方之间的通信)执行。图7示出了根据一个实施例的Share Refresh运算的离线阶段的伪代码实现。图8示出了根据该实施例的Share Refresh运算的在线阶段的伪代码实现。

4比弗乘法

4.1 ModReal后端的乘法

两个秘密份额之间的乘法按以下定义:

其中被称为输出参数。这些参数通常由编译器在静态分析期间确定。

4.2参数计算表达式

以下表达式显示了与下面的比弗乘法运算的附图和描述结合使用的各种参数的计算:

4.3模后端的比弗乘法(Secret-Secret(秘密-秘密)

图9示出了根据一个实施例的对模表示的两个秘密共享值的比弗乘法运算的伪代码实现。图10示出了比弗乘法运算的示意图。

4.4模后端的比弗乘法(Secret-Public(秘密-公共)

图11示出了根据一个实施例的对模表示的一个秘密共享值和一个公共值的比弗乘法运算的伪代码实现。图12示出了比弗乘法运算的示意图。

5线性组合

令c(1),...,c(n)作为以双精度浮点数给出的公共实数,并且令是具有相应参数的秘密份额。令并且k(i):=24-v2(i)),其中对于素数p,vp(m)表示整数的p-adic估值。实际上,这些整数可以表示为64位有符号整数。公共向量

将是我们对系数的近似值。上面选择24是为了类似于float32类型的明文,其中尾数是24位。

然后目标是计算的秘密份额,其中相应的参数为我们假设输入份额同时为浮点表示或模表示。在一个实施例中,不支持混合输入并且需要显式投射。然而,输出后端可以与输入后端不同(例如,具有浮点表示的输入和模表示的输出也可以)。

5.1默认输出参数

当没有明文参数可用于输出时,编译器的统计分析器可以使用以下传播公式来估计结果的统计信息:如果所有明文都是均值和方差Var(x(i))的自变量,则输出

的均值和方差为:

注意,最后一个公式仅适用于自变量。在一个实施例中,我们对总和的方差使用以下估计:

基于该传播公式,编译器已经可以为输出容器推断出合理的pmsb、plsb,然后分配Mmsb>pmsb,以确保计算的正确性和安全性。如果编译器无法做出独立性假设,则应使用其他技术来估计结果的统计信息,例如模拟假值。

5.2清除步骤

在一个实施例中,在运行线性组合之前,编译器如下预处理线性组合输入:对于所有1≤i≤n,

—删除对其中α(i)=0的所有索引i。

—删除对其中的所有索引i。这意味着该项可以忽略不计并且可以丢弃。注意,如果我们逐项动态删除项,则上述不等式的右侧不会改变(被删除的项不可能具有等于最大值的plsb)。

图13示出了可以根据其执行清除步骤的示例性输入。在该示例中,标签为1的区间因为可忽略应该被丢弃,因为pmsb位置在剩余区间的最大plsb位置的左边。

此外,令是剩余的索引集,我们可以根据以下标准进行测试(输出参数应与输入参数窗口相交):

—确保不等式

否则,声明结果可忽略不计或为零。

—确保以下不等式

否则,就会出现未定义的行为。

5.3线性组合内建函数:ModReal实例

在一个实施例中,编译器为线性组合提供两个工作参数:以满足以下属性的方式选择这些参数:

—提升到输入的ModReal份额类确保可以计算单个纯量积而不会溢出并保持足够的精度(后者需要精确定义)。

—可以在该类中计算所有单个项(纯量积;其中有n个)的所有秘密份额(有k个)的总和,而不会出现溢出(后者需要精确定义)。

这使得以下参数的默认选择合理:

对于每个1≤i≤n,第i个输入容器首先用参数投射为ModReal数。当时,这需要一个提升三元组(涉及容器的掩码λ,以及两个临时的预计算数据b、ν。然后,乘以产生参数的可序列化值,该值与其他值累加。最后,总和被投射为输出参数。

图14示出了根据一个实施例的使用ModReal表示的线性组合运算的伪代码实现。图15示出了线性组合运算的示意图。

6实值函数的傅里叶近似

通常,复值函数f(x)的傅里叶近似将以以下形式给出

其中T为周期并且系数an通常是复数,但如果f(x)是实值函数,则其中,n>0且然后我们有

这产生了转换

傅立叶项将是三元组n=0,1,...,N,其中是实系数,并且是相位。

作为示例,考虑sigmoid函数则实值函数f(x)=σ(x)-1/2是奇数,这意味着相位都等于π/2。

6.1傅里叶级数评估:ModReal实例

我们现在解释如何针对和秘密份额评估表达式(2)。

回想掩码

可信交易商首先计算掩码λ、相应的位bλ,然后计算并秘密共享(在离线阶段)向量其中n=0,1,...,N。

然后如下执行在线计算:

1.计算作为的元素。

2.使用和bλ的秘密份额计算正确的提升这是可能的,因为

3.针对n=0,1,...,N计算e2πna/T(这需要提升a,而不仅仅是原始的)。

4.计算的秘密份额。这需要确定某个明文类中的局部乘法。

为了确定结果的明文参数,我们施加了约束,即整个计算发生在η位的最大数值窗口内(例如,如果我们只想在后端使用64位整数,则η=64)。

首先,可以使用微小边界估计

为了得到最优的令p为数值窗口,即我们的约束由以下不等式给出

2p+ε+2≤η,

这意味着我们需要确定用于计算输出的最大数值窗口。要了解为什么该不等式应该成立,注意,如果对以下乘积中的每个乘数都要求p位精度,

那么就是2p。则我们必须取这些项的总和ε,并为模块化份额类添加两个附加位。因此,我们可以设定

此外,编译器需要为傅立叶级数内建函数提供工作参数:

-针对掩码值a=x+λ的提升参数,

-针对掩码λ的提升参数。

为了确定工作参数,我们首先确定最低有效位位置(我们这样做是为了保证足够的精度)。以下公式是合理的:

该选择需要一定理由:参数确保我们在计算e2πina/T时有大小为p的数值窗口。实际上,该数量的最高有效位位置是0,因此我们至少需要小数部分中的p二进制位。然而,计算假设比弗(Beaver)的两个输入都需要相同的数值窗口,也就是说,我们进行的乘法可以视为映射

7通信模型

图16A和图16B示出了在多方计算(MPC)的离线阶段期间计算系统之间的通信信道的示意图。图16A显示了用于可信交易商模型的通信信道,而图16B显示了用于诚实但好奇模型的信道。在可信交易商模型中,交易商通过私人信道向每个参与方发送数字掩蔽数据(也称为三元组)。在诚实但好奇的模型中,各参与方可以访问他们所有人之间共享的私有广播信道,并且每个参与方都与交易商共享一个额外的私有信道。私有信道用虚线表示。在可信交易商模型中,交易商生成掩蔽数据并使用私有信道向每个参与方发送数据的相应份额(单向箭头)。在诚实但好奇的模型中,各参与方协同生成数字掩蔽数据,为此,他们需要在其之间建立一个交易商无法访问的额外的私有广播信道。虽然只显示了三个参与方,但该模型可以扩展到任意数量的参与方。

图17示出了根据一个实施例的在线阶段期间各参与方之间的通信信道的示意图。各参与方通过实线表示的公共广播信道发送和接收掩码值。在线阶段在可信交易商和诚实但好奇的模型中是相同的,并且交易商不在场。

尽管本文公开的方法在某些情况下是关于可信任交易商模型描述的,但这些方法也适用于诚实但好奇的模型。

8计算机实现

本文公开的实施例的组件可以被称为方法、过程、应用程序、程序、模块、引擎、功能等,其可以通过使用体现为非暂时性计算机可读介质上的指令的专用软件配置一个或多个计算机或计算机系统来实现。一个或多个计算机或计算机系统可以是或包括一个或多个独立的客户端和/或服务器计算机,它们可以任选地通过有线和/或无线网络联网作为联网计算机系统。

专用软件可以包括其一个或多个实例,每个实例可以包括例如客户端软件、服务器软件、桌面应用程序软件、应用程序软件、数据库软件、运行系统软件和驱动软件中的一个或多个。客户端软件被配置为将系统作为客户端来运行,该客户端向一个或多个服务器和/或数据库发送信息请求并从其接收信息。服务器软件可以被配置为将系统作为一个或多个服务器来运行,这些服务器接收对一个或多个客户端的信息请求并向其发送信息。桌面应用程序软件和/或应用程序软件可以在台式机和/或便携式计算机上运行桌面应用程序或应用程序。数据库软件可以被配置为在系统上运行一个或多个数据库以存储数据和/或信息并响应客户端软件的请求以检索、存储和/或更新数据。运行系统软件和驱动软件可以被配置为提供运行系统作为平台和/或驱动其作为硬件或进程的接口,以供计算机或计算机系统的其他软件使用。举例来说,由本文公开的实施例创建、使用或运行的任何数据都可以存储在在计算机系统上运行的数据库中、从该数据库访问和/或修改。

图18示出了可以被适当地配置以实现根据各种实施例所公开的组件的通用计算机架构1800。计算架构1800可以包括各种常见的计算元件,诸如计算机1801、网络1818和一个或多个远程计算机1830。然而,本文公开的实施例不限于通过通用计算架构1800的实现。

参考图18,计算机1801可以是多种通用计算机中的任一种,诸如例如服务器、台式计算机、膝上型计算机、平板计算机或移动计算设备。计算机1801可以包括处理单元1802、系统存储器1804和系统总线1806。

处理单元1802可以是或包括各种市售计算机处理器中的任何一个或多个,其各自可包括一个或多个可彼此独立运行的处理核心。附加的协同处理单元,诸如图形处理单元1803,也可以存在于计算机中。

系统存储器1804可以包括易失性设备,诸如动态随机存取存储器(DRAM)或其他随机存取存储器设备。系统存储器1804还可以或另选地包括非易失性设备,诸如只读存储器或闪存存储器。

计算机1801可以包括本地非易失性辅助存储装置1808,诸如磁盘驱动器、固态磁盘或可移动存储卡。本地存储装置1808可以包括一个或多个可移动和/或不可移动存储单元。本地存储装置1808可用于存储启动和管理在计算机上执行的各种应用程序的运行系统。本地存储装置1808还可以用于存储被配置为实现本文公开的实施例的组件和可以在运行系统下作为一个或多个应用程序来执行的专用软件。

计算机1801还可以包括通信设备1812,计算机通过该通信设备通过有线和/或无线计算机网络1818与其他设备诸如一个或多个远程计算机1830进行通信。通信设备1812可以包括例如用于通过有线计算机网络传送数据的网络接口。通信设备1812可以包括例如一个或多个无线电发射器,以用于通过Wi-Fi、蓝牙和/或移动电话网络进行通信。

计算机1801还可以通过计算机网络1818访问网络存储装置1820。网络存储装置可以包括例如位于本地网络上的网络附接存储设备,或者托管在一个或多个远程数据中心的基于云的存储装置。运行系统和/或专用软件可以另选地存储在网络存储装置1820中。

计算机1801可以具有各种输入设备1814,诸如键盘、鼠标、触摸屏、相机、麦克风、加速度计、温度计、磁力计或任何其他传感器。还可以包括输出设备1816,诸如显示器、扬声器、打印机或偏心旋转质量振动马达。

各种存储装置1808、通信设备1812、输出设备1816和输入设备1814可以集成在计算机的外壳内,或者可以通过计算机上的各种输入/输出接口设备连接,在这种情况下,附图标记1808、1812、1814和1816可以根据情况指示用于连接到设备的接口或设备本身。

前述方面中的任一个可在一个或多个实例中体现为计算机系统、由此类计算机系统执行的进程、此类计算机系统的任何单独组件、或包含计算机存储装置的制品,其中计算机程序指令被存储在计算机存储装置中并且当被一个或多个计算机处理时,配置一个或多个计算机以提供此类计算机系统或此类计算机系统的任何单独的组件。服务器、计算机服务器、主机或客户端设备均可以体现为计算机或计算机系统。计算机系统可以在分布式计算环境中实践,其中运算由通过通信网络链接的多个计算机执行。在分布式计算环境中,计算机程序可以位于本地和远程计算机存储介质中。

诸如本文所述的并且在一个或多个计算机上运行的计算机系统的每个组件可以使用计算机的一个或多个处理单元和由一个或多个处理单元处理的一个或多个计算机程序来实现。计算机程序包括计算机可执行指令和/或计算机解释的指令,诸如程序模块,这些指令由计算机中的一个或多个处理单元处理。通常,此类指令定义例程、程序、对象、组件、数据结构等,当被处理单元处理时,其指示处理单元对数据执行运算或配置处理器或计算机以实现各种组件或数据结构。

本文公开的实施例的组件可以被称为模块、引擎、进程、功能等,其可以在硬件中实现,诸如通过使用专用硬件逻辑组件、通过使用专用软件配置通用计算资源,或通过专用硬件和配置的通用计算资源的组合。可以使用的硬件逻辑组件的例示性类型包括,例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统系统(SOC)和复杂可编程逻辑器件(CPLD)。

9结束语

尽管已经根据某些实施例描述了主题,但可以或可以不提供本文阐述的各种特征和方面的其他实施例应当被理解为由本公开内容设想。上述具体实施例仅作为示例公开,并且专利主题的范围由所附权利要求限定。在权利要求中,术语“基于”应包括在产生结果或效果时直接和/或间接考虑一个因素,并可能与其他因素结合考虑的情况。在权利要求中,一部分应包括大于无并直至整个事物;物的加密包括对物的一部分进行加密。在方法权利要求中,任何参考字符仅用于描述方便,并不表示执行方法的特定顺序。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:三方密码握手协议

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!