使用函数的事件评价的制作方法

文档序号:22481019发布日期:2020-10-09 22:30阅读:271来源:国知局
使用函数的事件评价的制作方法

各个实施例涉及使用函数对第一事件的评价,并且特别涉及用于在使用函数对第一事件进行评价中使用的节点及其操作方法。



背景技术:

大数据的最新发展带来了几乎无限量的数据,这些数据可能用于做出更好的决策。数据分析算法使得能够对数据执行复杂的分析并找到趋势和异常。这样的分析允许得到关于当前事件的精细化结论以及关于未来事件的预测。这可能会对诸如医疗保健(例如基于对患者信息的分析)和财务(例如基于对交易数据的分析)等领域产生巨大影响。

然而,出于各种各样的原因,各种各样的公司和机构常常会收集数据来进行这类数据分析,并且通常在可以对该数据进行分析的单个位置中无法使用该数据。有许多原因导致无法将这样的信息轻松地存储或组合到单个位置中。一个明显的担忧是私密性。对于能够如何使用对私密性敏感的信息(特别是与医疗保健有关的信息),存在严格的法律约束,但是其他担忧是某些数据是有价值的或机密的,或者所有者根本不想发布该数据。这些担忧会与执行数据分析的需求直接冲突。

在一些形式的数据分析中,期望对事件执行连续监测(例如,数据测量)以确定新事件是否满足触发条件,并且如果满足触发条件则触发警告或其他过程。简单触发条件的示例可以是“报告的值(事件)超出允许的带宽或范围”。更为复杂的触发条件的示例可能是:“报告的值(事件)不在最近1000个条目的均值的一个标准偏差内”至“在上一半年报告的数据上外推的预后预测下一年的不幸”。



技术实现要素:

鉴于前述内容,有益的是提供改进的技术来在所涉及的多方中的一方或多方不愿意或者不能共享相关信息(例如,事件信息)时评价函数以确定是否满足触发条件。

私密性保护计算(ppc)允许对来自互不信任方的敏感(私密)输入计算联合函数,而无需各方将这些输入透露给受信任的第三方。一般而言,私密性/安全性中的典型问题是,a方的值是x1,并且b方的值是x2,并且双方都希望对另一方保密其值,但是他们也想计算某个函数f:(y1,y2)=f(x1,x2),其中,输出y1应当仅流向a方,并且输出y2应当仅流向b方。ppc允许解决该问题,因此ppc可以(至少在理论上)解决在单个分析中组合各个数据集的问题,而无需共享这些数据集的实际内容。

然而,当前,该分析在某种意义上是静态的,因为在计算开始之前,需要作为输入而分析的所有数据或数据集都可用,并且计算会在这些特定输入上给出输出。这意味着无论何时输入数据发生改变,都需要再次运行整个安全计算,因此当前方法并不是特别适合用于监测发生新的数据事件并且需要针对先前事件进行评价的场景(对于先前事件,计算已经完成)。

通过使用增量函数来实施监测并使用私密性保护计算来执行对监测函数的评价,能够减轻该问题。这样做的好处是,评价监测函数的一方不需要访问完成评价所需的所有(甚至大部分)输入信息,从而解决了与共享私密性敏感的、竞争敏感的、公司专有的或机密数据有关的问题。

因此,监测函数能够将当前监测状态和最新事件作为输入并且产生新的(更新的)监测状态、对是否满足触发条件的指示以及公共输出。监测状态包含在给定所有先前接收到的事件的情况下评价触发条件所需的所有信息。然后将更新的监测状态用作到监测函数的输入以评价下一事件。这样的函数被称为增量计算。

将意识到,在本文设想的这些数据分析场景中,提供要进行评价的输入事件的一方可以随时间改变(例如,不同方可能正在测量事件,并且每一方都需要提交事件以进行分析)。针对两方计算的现有技术假定在整个计算期间这两个角色是固定的。在上面提到的场景中,一个角色是固定的(例如,服务器),而另一角色(例如,客户端)由于使用了增量函数而能够在多方之间移动。

如上面所指示的,对监测函数的评价应当以私密性保护的方式来执行。一种能够实施私密性保护计算的方式是通过使用混淆电路。在这种情况下,第一方会产生所谓的“混淆电路”,该“混淆电路”是二元电路的一次性加密版本,该函数能够由第二方来评价,而第二方不会知道电路中的线的实际值。第二方使用其输入来评价混淆电路并且确定针对该函数的加密输出。

假设在对监测函数的各个评价中所涉及的客户端和服务器中的每个均忠实地运行,则能够保护输入的私密性并确保确定的输出的真实性。然而,并不总是这种合理假设的情况,特别是在监测环境中,预期会有大量彼此不认识的不同客户协作。在这样的环境中,服务器和多个客户端不一定会彼此信任以忠实地执行协议,至少会有两个可期望的特性。第一个是每个客户端应当确保,除了监测函数的状态所暗示的信息以外,关于该客户端的输入的任何信息都不会泄漏到任何其他方(的组合);第二个是任何客户端或服务器本身都不应当能够操纵状态更新操作而产生不正确的结果。

在混淆电路的情况下,服务器对电路进行混淆处理并且客户端评价该电路的解决方案允许主动损坏的服务器操纵所计算的函数并与被动损坏的其他客户端一起工作,从而获得关于客户端的输入的信息。客户端对电路进行混淆处理并且服务器对该电路进行评价的解决方案具有以下特征:客户端可以确保不会泄露来自其输入的信息,但是主动损坏的客户端现在能够操纵状态更新操作。

鉴于这些问题,本文描述的技术提供了对函数进行两次评价:一次由服务器对电路进行混淆处理并由客户端对该电路进行评价,一次由客户端对电路进行混淆处理并由服务器对该电路进行评价。这被称为“双运行”。在huang等人的“quid-pro-quo-tocols:strengtheningsemi-honestprotocolswithdualexecution”(ieee安全与私密性研讨会,sp2012,2012年5月21日至23日,美国加利福尼亚州旧金山市,第272-284页,2012年)中描述了双运行,并且本文描述的技术修改了该文章中描述的双运行并将其作为增量计算而应用于对函数的评价。

因此,根据第一方面,提供了一种用于在使用函数评价第一事件中使用的第一节点,其中,所述函数由包括一个或多个逻辑运算的第一电路表示,所述第一电路具有一条或多条当前状态输入线和一条或多条事件输入线,所述一条或多条当前状态输入线用于将所述函数的当前状态输入到所述第一电路中,所述一条或多条事件输入线用于将所述第一事件输入到所述第一电路中,并且所述第一电路具有一条或多条结果输出线和一条或多条更新状态输出线,所述一条或多条结果输出线用于使用所述函数来输出对所述第一事件的评价结果的指示,所述一条或多条更新状态输出线用于输出所述函数的更新状态,所述第一节点被配置为:获得当前状态信息,其中,所述当前状态信息包括:(i)线密钥的第一集合,所述第一集合包括针对所述一条或多条当前状态输入线中的每条的线密钥的相应的子集,线密钥的每个子集包括多个线密钥,所述多个线密钥中的每个线密钥与针对相应的当前状态输入线的可能值相关联,以及(ii)以针对所述一条或多条当前状态输入线中的每条的相应的线密钥的形式的当前状态,其中,每个相应的线密钥来自线密钥的第二集合,每个相应的线密钥表示针对所述一条或多条当前状态输入线中的相应的一条的值;使用线密钥的所述第一集合和线密钥的第三集合对所述第一电路进行混淆处理以形成第一混淆电路,其中,线密钥的所述第一集合用于所述一条或多条当前状态输入线,并且线密钥的所述第三集合包括针对所述第一电路中的所述一条或多条事件输入线中的每条和所述输出线中的每条的线密钥的相应的子集,所述第三集合中的线密钥的每个子集包括多个线密钥,所述多个线密钥中的每个线密钥与针对相应的事件输入线或输出线的可能值相关联;向第二节点发送所述第一混淆电路的表示和来自线密钥的所述第三集合的表示所述第一事件的一个或多个线密钥,以供所述第二节点来评价;从所述第二节点接收第二混淆电路的表示,其中,所述第二混淆电路是由所述第二节点使用针对所述一条或多条当前状态输入线的线密钥的所述第二集合和包括针对所述第一电路中的每条其他输入线和每条输出线的线密钥的相应的子集的线密钥的第四集合来混淆处理的所述第一电路,所述第四集合中的线密钥的每个子集包括多个线密钥,所述多个线密钥中的每个线密钥与针对相应的其他输入线或输出线的可能值相关联;从所述第二节点接收来自线密钥的所述第四集合的表示所述第一事件的一个或多个线密钥;使用接收到的所述第二混淆电路的表示、所获得的来自线密钥的所述第二集合的表示所述当前状态的一个或多个线密钥以及接收到的来自线密钥的所述第四集合的表示所述第一事件的一个或多个线密钥来评价所述第二混淆电路的表示,其中,所述评价确定来自线密钥的所述第四集合的针对所述一条或多条结果输出线的一个或多个线密钥,并且确定来自线密钥的所述第四集合的针对所述一条或多条更新状态输出线的一个或多个线密钥;并且与所述第二节点协作以根据由所述第二节点对所述第一混淆电路的评价和由所述第一节点对所述第二混淆电路的评价来确定所述第一事件的所述评价结果。

根据第二方面,提供了一种操作第一节点以使用函数来评价第一事件的计算机实施的方法,其中,所述函数由包括一个或多个逻辑运算的第一电路表示,所述第一电路具有一条或多条当前状态输入线和一条或多条事件输入线,所述一条或多条当前状态输入线用于将所述函数的当前状态输入到所述第一电路中,所述一条或多条事件输入线用于将所述第一事件输入到所述第一电路中,并且所述第一电路具有一条或多条结果输出线和一条或多条更新状态输出线,所述一条或多条结果输出线用于使用所述函数来输出对所述第一事件的评价结果的指示,所述一条或多条更新状态输出线用于输出所述函数的更新状态,所述方法包括以下步骤:获得当前状态信息,其中,所述当前状态信息包括:(i)线密钥的第一集合,所述第一集合包括针对所述一条或多条当前状态输入线中的每条的线密钥的相应的子集,线密钥的每个子集包括多个线密钥,所述多个线密钥中的每个线密钥与针对相应的当前状态输入线的可能值相关联,以及(ii)以针对所述一条或多条当前状态输入线中的每条的相应的线密钥的形式的当前状态,其中,每个相应的线密钥来自线密钥的第二集合,每个相应的线密钥表示针对所述一条或多条当前状态输入线中的相应的一条的值;使用线密钥的所述第一集合和线密钥的第三集合对所述第一电路进行混淆处理以形成第一混淆电路,其中,线密钥的所述第一集合用于所述一条或多条当前状态输入线,并且线密钥的所述第三集合包括针对所述第一电路中的所述一条或多条事件输入线中的每条和所述输出线中的每条的线密钥的相应的子集,所述第三集合中的线密钥的每个子集包括多个线密钥,所述多个线密钥中的每个线密钥与针对相应的事件输入线或输出线的可能值相关联;向第二节点发送所述第一混淆电路的表示和来自线密钥的所述第三集合的表示所述第一事件的一个或多个线密钥,以供所述第二节点来评价;从所述第二节点接收第二混淆电路的表示,其中,所述第二混淆电路是由所述第二节点使用针对所述一条或多条当前状态输入线的线密钥的所述第二集合和包括针对所述第一电路中的每条其他输入线和每条输出线的线密钥的相应的子集的线密钥的第四集合来混淆处理的所述第一电路,所述第四集合中的线密钥的每个子集包括多个线密钥,所述多个线密钥中的每个线密钥与针对相应的其他输入线或输出线的可能值相关联;从所述第二节点接收来自线密钥的所述第四集合的表示所述第一事件的一个或多个线密钥;使用接收到的所述第二混淆电路的表示、所获得的来自线密钥的所述第二集合的表示所述当前状态的一个或多个线密钥以及接收到的来自线密钥的所述第四集合的表示所述第一事件的一个或多个线密钥来评价所述第二混淆电路的表示,其中,所述评价确定来自线密钥的所述第四集合的针对所述一条或多条结果输出线的一个或多个线密钥,并且确定来自线密钥的所述第四集合的针对所述一条或多条更新状态输出线的一个或多个线密钥;并且与所述第二节点协作以根据由所述第二节点对所述第一混淆电路的评价和由所述第一节点对所述第二混淆电路的评价来确定所述第一事件的所述评价结果。

根据第三方面,提供了一种计算机程序产品,其包括计算机可读介质,所述计算机可读介质具有体现于其中的计算机可读代码,所述计算机可读代码被配置为使得在由合适的计算机或处理器运行时令所述计算机或处理器执行第二方面的方法。

附图说明

现在将参考以下附图仅以举例的方式来描述示例性实施例,在附图中:

图1是包括服务器和多个客户端节点的系统的框图;

图2是图示服务器和两个客户端节点在评价作为增量计算的函数中的操作的信令和流程图;

图3是表示要进行评价的函数的电路的图示;

图4(i)和图4(ii)是图示根据实施例的服务器和两个客户端节点在使用混淆电路评价函数中的操作的信令和流程图;

图5是示出由第一客户端节点生成的用于对电路进行混淆处理的线密钥的表;

图6是示出由服务器生成的用于对电路进行混淆处理的线密钥的表;

图7是示出由第二客户端节点生成的用于对电路进行混淆处理的线密钥的表;

图8是示出由服务器生成的用于对电路进行混淆处理的线密钥的表;

图9是图示根据实施例的操作节点的方法的流程图;并且

图10是图示如何将函数的评价结果揭示给节点中的一者或两者的信令和流程图。

具体实施方式

图1是其中可以实施本文描述的技术和原理的系统2的框图。系统2包括固定方4(其在本文中被称为服务器4)和一个或多个其他方6(其在本文中被称为客户端节点6)。虽然图1示出了三个客户端节点6,但是,将意识到,系统2能够包括多于或少于三个的客户端节点6。更一般地,服务器4和客户端节点6可以被简称为“节点”。

在本文描述的技术的实施例中,将基于测量或观察到的事件来评价函数。在某些实施例中,服务器4负责关于由客户端节点6测量或观察到的事件来评价函数。在其他实施例中,客户端节点6能够负责关于由服务器4测量或观察到的事件来评价函数。更一般地,虽然在本文中将各种技术描述为涉及服务器4和一个或多个客户端节点6(例如,服务器4和客户端节点6使用函数来评价由客户端节点6测量或观察到的事件),但是将将意识到,本文描述的技术不限于这种场景,并且实际上,本文描述的技术能够应用于能够使用函数来评价由节点4、6中的一个测量或观察到的事件的任何两个节点4、6。

该函数被评价为两方私密性保护计算(ppc),其中,一个节点(例如,服务器4)是这两方中的一方,并且使得评价事件的另一节点(例如,客户端节点6)是另一方。如果随后由客户端节点6中的不同的一个(例如,第二客户端节点6)测量或观察到事件,则服务器4在计算中的角色可能不会改变,并且另一方现在可能是第二客户端节点6。因此,就服务器4始终是函数评价的一方而不管哪个客户端节点6使得评价事件而言,服务器4能够是固定方4。备选地,从一个计算到下一计算,任何一方都能够改变。

服务器4和客户端节点6经由网络8(例如,互联网)互连,并且因此可以分别位于不同的位置处。当然,将意识到,客户端节点6中的一个或多个可以在服务器8的本地,并且经由有线或无线连接而互连。

服务器4(或更一般地,固定方4)能够是客户端节点6能够连接到的任何类型的电子设备或计算设备,以便关于函数来评价针对那些客户端节点6的事件。

客户端节点6能够是能够连接到服务器4的任何类型的电子设备或计算设备,以便关于函数来评价针对客户端节点6的事件。例如,客户端节点6能够是计算机(包括服务器)、膝上型计算机、平板计算机、智能电话等。将意识到,客户端节点6不必测量或观察事件本身(例如,它不需要测量患者参数),而是可以从其他设备接收事件或者从客户端节点6本地的数据库检索事件。

服务器4包括接口电路10,接口电路10用于实现到其他设备(例如,客户端节点6)的数据连接。特别地,接口电路10能够经由任何可期望的有线或无线通信协议来实现服务器4与网络8(例如,互联网)之间的连接。服务器4还包括处理单元12,处理单元12用于对数据执行操作并用于在总体上控制对服务器4的操作。服务器4还包括存储器单元14,存储器单元14用于存储运行本文描述的技术所需的任何数据并且用于存储计算机程序代码,该计算机程序代码用于令处理单元12执行在下文中更加详细地描述的方法的步骤。

能够以多种方式利用软件和/或硬件来实施处理单元12,以执行本文描述的各种功能。处理单元12可以包括一个或多个微处理器或数字信号处理器(dsp),可以使用软件或计算机程序代码对该一个或多个微处理器或数字信号处理器(dsp)进行编程以执行所需的功能并且/或者控制处理单元12的部件以实现所需的功能。处理单元12可以被实施为用于执行一些功能的专用硬件(例如,放大器、前置放大器、模数转换器(adc)和/或数模转换器(dac))与用于执行其他功能的处理器(例如,一个或多个编程的微处理器、控制器、dsp以及相关联的电路)组合。可以在本公开内容的各种实施例中采用的部件的示例包括但不限于常规的微处理器、dsp、专用集成电路(asic)以及现场可编程门阵列(fpga)。

存储器单元14能够包括任何类型的非瞬态机器可读介质,例如,高速缓存或系统存储器,包括易失性和非易失性计算机存储器,例如,随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、只读存储器(rom)、可编程rom(prom)、可擦除prom(eprom)以及电可擦除prom(eeprom)。

每个客户端节点6包括接口电路16,接口电路16用于实现到其他设备(例如,服务器4)的数据连接。特别地,接口电路16能够经由任何可期望的有线或无线通信协议来实现客户端节点6与网络8(例如,互联网)之间的连接。客户端节点6还包括处理单元18,处理单元18用于对数据执行操作并且在总体上控制对客户端节点6的操作。客户端节点6还包括存储器单元20,存储器单元20用于存储运行本文描述的技术所需的任何数据并且用于存储计算机程序代码,该计算机程序代码用于令处理单元18执行在下文中更加详细地描述的方法的步骤。

类似于服务器4中的处理单元12和存储器单元14,能够以多种方式实施处理单元18和存储器单元20。

为了使用函数来评价事件,需要将函数的当前状态与事件一起输入。函数的当前状态包含在给定所有先前接收到的事件的情况下根据准则或触发条件来评价事件所需的所有信息。该函数获取当前状态和最新事件并且产生新(更新)状态和对评价结果的指示。对评价结果的指示可以是例如对事件是否满足某种准则或触发条件的指示或对事件与已经评价的先前事件之间的关系的指示等。作为特定示例,指示可能是“报告的值(事件)超出允许的带宽或范围”或者“报告的值(事件)不在最近1000个条目的均值的一个标准偏差内”至“在上一半年报告的数据上外推的预后预测下一年的不幸”。针对一些函数,对函数结果的指示能够包括多种类型的输出。例如,该函数能够输出关于新事件是否满足准则或触发条件的指示,并且如果新事件确实满足该准则或触发条件,则该函数还能够输出指示结果的公共输出(例如“平均收缩压已经超过120mmhg”,或者更详细的公共输出可以是“最近10次测量的平均收缩压为113mmhg;最近10次测量的平均舒张压为93mmhg”)。在给定所有先前接收到的事件(包括已经评价的事件)的情况下,函数的更新状态包含针对后续事件评价准则或触发条件所需的所有信息。更新状态用作到函数的输入以用于评价下一事件。在本文描述的一些实施例中,该函数被称为监测函数,当前状态被称为当前监测状态,更新状态被称为更新监测状态,并且对评价结果的指示是对事件是否满足触发条件以及公共输出(如果事件满足触发条件的话)的指示。

在本文提出的技术的实施例中,服务器4监测连续事件,直到满足触发条件为止。这些事件是由相互不信任的各种客户端节点6测量、观察或获得的,因此彼此并不共享事件。假定服务器4一次可以使用一个事件来进行评价。

以下描述涉及某些元素或术语,其通常被定义如下。

事件——事件是由客户端节点6中的一个客户端节点报告的可量化的观察结果或测量结果。在一些实施例中,事件以加密形式被发送到服务器4。例如,事件可能是针对患者的收缩压和舒张压的最新值。

触发条件——触发条件是谓词p,它对系统2/服务器4正在监测的条件进行建模。触发条件(或者更确切地说,是否满足触发条件)可以取决于由所有客户端节点6输入到系统2/服务器4中的所有先前事件(其可以是相同类型的)。达到或满足触发条件时,谓词评价为真;而在所有其他条件下,谓词评价为假。触发条件的示例是“最近10次测量的平均收缩压大于120mmhg,或者最近10次测量的平均舒张压大于80mmhg。”

状态——状态是状态s,其包含关于已经评价的先前事件的信息。状态s包含在给定到目前为止接收到的所有事件更新的情况下评价触发条件所需的所有信息。在本文描述的技术中,在以下意义上讲,状态是“分散的”:一方具有状态s的表示,如果没有另一方的帮助,该状态s无法解读或打开。因此,状态s能够被认为包括两部分,第一部分由一方(例如,服务器4)导出,而第二部分由另一方(例如,客户端节点6)导出。在本文描述的技术中,一部分是通过评价混淆电路导出的状态s的线密钥表示,而另一部分是将线密钥链接到实际线值的信息(其中,另一方已经生成了针对可能的线值的那些线密钥)。另外,在本文描述的技术中,由于服务器4和客户端节点6中的每个都生成供另一方评价的混淆电路并然后评价来自另一方的混淆电路,因此服务器4和客户端节点6中的每个都导出状态s的相应的线密钥表示,并且每个都具有关于针对由另一方导出的状态的线密钥/线值的信息。

函数——函数或监测函数是评价触发条件谓词的函数f。正式地,该函数是将当前状态s和最新事件en作为输入并产生新状态s'以及对评价结果的指示(例如,指示触发条件是否为真(得到满足)的公共位t以及公共输出o)的函数,使得:

(t,o,s')=f(s,en)(1)

其中,

{t=0,o=空如果p(e1,…,en)为假

t=1,o=公共输出如果p(e1,…,en)为真

这样的函数被称为增量计算。如下面更详细地描述的,该函数是使用私密性保护计算(特别是使用混淆电路)来评价的。在能够向参与评价的各方和/或其他方指示评价结果的意义上,公共输出o是公共的。

服务器——服务器4可以以加密形式一次从客户端节点6接收一个新事件,然后在提供事件的客户端节点6的帮助下评价监测函数。基于本文描述的技术,该评价的输出t和o将被加密,并且服务器4和客户端节点6相互协作以对输出t和o进行解密或翻译并使它们成为公共信息(即,服务器4和/或(一个或多个)客户端节点6已知的和/或其他方已知的)。在一些实施例中,服务器4存储更新的监测状态s'的部分(即,线密钥表示),该部分能够与来自客户端节点6的信息组合以重建更新的监测状态s'。服务器4还能够存储供客户端节点6在根据由客户端节点6导出的更新的监测状态s'的部分(即,线密钥表示)重建的更新的监测状态s'中使用的信息。

客户端节点——客户端节点6测量或获得事件中的信息并将其提交给服务器4。根据本文描述的技术,客户端节点6还执行函数评价以确定加密的输出t和o(即,输出t和o的线密钥表示),并且客户端节点6与服务器4协作以对加密的输出t和o进行解密或翻译并使其变为公共的。在系统2中能够有多个客户端节点6,其中的每个客户端节点都独立地向服务器4提交事件。这能够以任何顺序发生;例如,多个客户端节点6能够按照固定的时间表提交事件,或者客户端节点6能够在另一客户端节点6提交事件之前提交许多事件。假定客户端节点6经由受保护的连接与服务器6进行通信,即,客户端节点6无法直接获知彼此的消息。客户端节点6的示例是医生或全科医生(gp)的计算机。

在本公开内容中,“评价”或“监测”被视为针对每一个新事件en的函数f的重复评价,其中,函数f的状态s是在评价之间维持的持久状态,服务器4在事件之间保持或保留状态s(或者更确切地说,状态s的线密钥表示)。使用私密性保护计算(ppc)对函数进行评价,但是这样的计算至少需要两个参与方。因此,对函数的每一次评价都被建模为服务器4与提交最新事件的客户端节点6之间的两方计算。特别地,评价的每一方(例如,服务器4和客户端节点6)对表示要评价的函数的电路进行混淆处理并将混淆电路发送到另一方进行评价。在该两方计算中,客户端节点6提供事件en作为私密输入(即,在计算中对另一方保密或私密的输入),而当前状态s(其被分散在客户端节点6与服务器4之间)在本评价中被重新使用。在计算之后,服务器4将接收更新状态s'(的线密钥表示)作为私密输出(即,在计算中对另一方保密或私密的输出),并且输出t和o将是公共输出(即,在计算中由各方共享)。对于随后的事件,将重复该过程,其中,服务器4在计算中保持相同的角色,但是不同事件之间的客户端节点6(即,提交事件的客户端节点6)不同。

图2中的信令和流程图示出了示例性方式,其中,能够通过被实施为增量计算的函数来评价事件。特别地,图2示出了针对服务器4和提交第一事件以进行评价的第一客户端节点6的信息交换和处理步骤以及针对服务器4和提交第二事件以进行评价的第二客户端节点6的信息交换和处理步骤。如上所述,任何类型的节点都能够执行图2所示的任何角色。

在图2所示的实施方式中,主要思想是,该函数的所有连续运行都作为服务器4与单个假设客户端节点6之间的一项大型私密性保护计算而执行,其中,每一个事件之后都有中间输出。这被视为“增量计算”。在该大型计算期间,服务器4和客户端节点6都具有函数f的状态的线密钥表示(其分别被表示为ss和sc),并且服务器4和客户端节点6的每个都具有关于由表示另一方所保持的状态的线密钥表示的实际线值的信息。在下文中,对“状态ss”或“状态sc”的引用应被理解为是指分别由服务器4和客户端节点6保持的状态s的线密钥表示。因此,客户端节点6具有关于由表示服务器4具有的状态ss的线密钥表示的实际线值的信息,反之亦然。在每一次输出之后,都会分解该大型计算,并且通过将客户端节点的表示/状态sc的部分传递到下一客户端节点6,可以将计算的控制权传递到下一客户端节点6。在服务器4的帮助下,控制权的这种传递是间接发生的。

首先,假定所有客户端节点6都具有共享秘密密钥sk(图2中的框52)。服务器4没有或者不能访问该秘密密钥sk。每个客户端节点6都能够将秘密密钥存储在存储器单元20中。

客户端节点6能够启动与服务器4的两方协议。在启动时,假定该函数不具有当前状态,因此服务器4和客户端节点6都不具有与要进行评价的函数有关的相应的当前状态(或者更确切地说是当前状态的相应的线密钥表示)。

首先,第一客户端节点6测量、观察或获得事件e1。该事件e1对第一客户端节点6是私密的,因此第一客户端节点6不会将事件e1直接发送到服务器4。而是,第一客户端节点6向服务器4指示将对事件进行评价(信号54)。

接下来,服务器4和第一客户端节点6将函数评价为私密性保护计算(ppc)——步骤56,其中,第一客户端节点6输入事件e1。ppc涉及服务器4与第一客户端节点6之间的信息交换,而第一客户端节点6并不与服务器4直接共享第一事件e1。

作为ppc的结果,服务器4和第一客户端节点6分别以它们自己的状态表示sc和ss(分别由框60和62指示)结束。如下面更详细地指出的,这些状态部分/表示使得服务器4本身无法对ss进行解密/翻译,并且第一客户端节点6本身无法对sc进行解密/翻译。正因如此,服务器4和第一客户端节点6都不知道函数的实际状态。函数的ppc还得到被加密(即,由线密钥表示)的输出t和o,使得服务器4和第一客户端节点6都不能在没有彼此协助的情况下对输出t和o进行解密或翻译。如上面所指示的,输出t是对事件e1是否满足触发条件的指示。如果t=0,则输出o将为空。因此,服务器4和第一客户端节点6彼此协作以确定评价结果(框64)。

为了使计算的控制权能够由服务器4传递到下一客户端节点6以提交事件以进行评价,第一客户端节点6使用秘密密钥sk52对状态s的本地状态部分sc进行加密,从而得到esk(sc),并且将其发送到服务器4(信号66)。服务器4将ss(由服务器4在ppc中确定的函数的分散的状态s的表示)和esk(sc)都存储在存储器单元14中(步骤68)。由于服务器4不知道秘密密钥sk52,因此服务器4无法对esk(sc)进行解密以获知状态s的线密钥表示sc,这样使协议的安全性保持得完好无损。

当另一客户端节点6(或者甚至第一客户端节点6)具有另一要评价的事件时,该客户端节点6能够如下所示与服务器4继续进行两方协议。因此,第二客户端节点6具有事件e2,事件e2已经由第二客户端节点6测量、观察或获得。该事件e2对于第二客户端节点6是私密的,因此第二客户端节点6不会将事件e2直接发送到服务器4。而是,第二客户端节点6向服务器4指示将对事件进行评价(信号70)。

服务器4将被存储在存储器单元14中的加密的客户端状态表示esk(sc)发送到第二客户端节点6(信号72)。由于第二客户端节点6知道共享秘密密钥sk52,因此第二客户端节点6使用秘密密钥sk52对esk(sc)进行解密,以在客户端节点处找到函数的当前状态部分/表示sc(步骤74)。

然后,服务器4和第二客户端节点6恢复私密性保护计算,以根据函数来评价第二事件e2(步骤76)。第二客户端节点6在客户端节点处输入事件e2和函数的当前状态表示sc(不与服务器4直接共享事件e2和当前状态表示sc),并且服务器4在服务器4处输入函数的当前状态表示ss(不与第二客户端节点6直接共享当前状态表示ss)。

函数的私密性保护计算得到分散的输出t和o,使得服务器4和第二客户端节点6都无法在没有彼此辅助的情况下翻译输出t和o。这些输出在与状态s相同的意义进行分散。也就是说,一方具有(一个或多个)输出的线密钥表示,而另一方具有关于由线密钥表示的实际线值的信息。因此,服务器4和第二客户端节点6彼此协作以确定评价结果(信号84)。服务器4和第二客户端节点6分别以其自己的更新状态s'的更新状态表示ss'和sc'结束(分别为框80和82)。如下面更详细地指出的(并且类似于上面的状态s),更新状态被分散并且服务器4自身无法根据ss'来获知s',并且第二客户端节点6自身无法根据sc'来获知s'。正因如此,服务器4或第二客户端节点6都不知道函数的实际状态(或更新状态)。

接下来,第二客户端节点6使用sk52对更新状态sc'的部分/表示进行加密,从而得到esk(sc),并且第二客户端节点6将esk(sc')发送到服务器4(信号86)。服务器4将ss'(服务器4处的函数的更新状态的表示)和第二客户端节点6处的函数的更新状态sc'的加密表示(esk(sc'))都存储在存储器单元14中(步骤88)。再次地,由于服务器4不知道秘密密钥sk52,因此服务器4无法获知更新状态表示sc'的内容(服务器4知道该更新状态表示sc'的由线密钥表示的实际值),这样使协议的安全性保持的完好无损。

如上所述,混淆电路能够用于实施私密性保护计算。混淆电路是本质上不对称的技术,其中,一方充当“混淆者”并且设置加密的二元电路以计算函数f,然后将其发送到另一方。这种“混淆电路”能够用于明显地计算f,而另一方在计算期间不会看到该状态。混淆者的私密输入已经被嵌入到电路中。能够使用例如gax来完成混淆处理,在mihirbellare等人的“efficientgarblingfromafixed-keyblockcipher”(iacrcryptologyeprintarchive2013,2013年,第426页)中描述了gax。另一方充当针对电路的“评价者”。为此,另一方需要从混淆者获得与其私密输入线有关的特殊密钥。这些密钥能够使用2取1不经意传输来获得,如在tungchou和claudioorlandi的“thesimplestprotocolforoblivioustransfer”(latincrypt2015,密码学进展,第四届拉丁美洲密码学和信息安全国际会议,墨西哥瓜达拉哈拉,2015年8月23-26日,会议记录)中所述的那样。电路的输出对评价者而言是公共的,或者包括能够由混淆者解码的输出线密钥。

为了实施图2所示的使用混淆电路来评价监测函数的技术,有两个要求。首先,触发条件的触发应当是可识别的,其次,一个计算的状态需要被转移到下一计算。

通过具有一系列混淆电路(每个事件有一个混淆电路),能够满足这些要求。这些电路中的每个都能够具有一条易于识别的输出线以用于输出t,该信号将指示是否满足触发条件。触发该条件能够引起对状态的部分进行解密而作为输出o。两次计算之间的状态由一组输出线密钥来表示,该组输出线密钥将被重新用作针对下一计算的输入线密钥。在两次计算之间,混淆者将保持针对0条线和1条线的所有输出线密钥而作为状态,而不知道评价了哪些密钥。评价者将在评价期间计算0个线密钥或1线密钥,而不知道它们表示什么并将保持它们而作为状态。在下一计算中,评价者将这些线密钥用作输入线,而无需进行不经意传输(ot)。

在使用混淆电路的情况下,服务器4或当前客户端节点6都能够充当混淆者。无论哪种情况,客户端节点6的状态都必须被传递给下一客户端节点6。

如上所述,利用上述ppc实施方式,假设在监测函数的各个评价中所涉及的客户端和服务器中的每个均忠实地运行,则能够保留输入的私密性并确保所确定的输出的真实性。然而,并不总是这种合理假设的情况,特别是在监测环境中,预期会有大量彼此不认识的不同客户协作。在这样的环境中,服务器和多个客户端不一定会彼此信任以忠实地执行协议,至少会有两个可期望的特性。第一个是每个客户端应当确保,除了监测函数的状态所暗示的信息以外,关于该客户端的输入的任何信息都不会泄漏到任何其他方(的组合);第二个是任何客户端或服务器本身都不应当能够操纵状态更新操作而产生不正确的结果。

为了实现这些特性,本文描述的技术提供了对函数进行两次评价:一次由服务器对电路进行混淆处理并由客户端对该电路进行评价,一次由客户端对电路进行混淆处理并由服务器对该电路进行评价。然后,服务器和客户端能够协作以确定评价结果。

图3是表示要进行评价的函数的电路100的图示。要进行评价的函数f能够由电路100表示,电路100包括一个或多个逻辑运算(例如,布尔逻辑运算)和诸如加、减、乘、除等的运算。因此,电路100能够包括一个或多个逻辑门(例如,and、or,not等)和/或其组合。电路100具有多条输入线102,这多条输入线102用于使得要被输入到函数的信息能够被输入到电路100。电路100还具有多条输出线104,这多条输出线104用于使得要通过函数生成和输出的信息能够从电路100输出。多条输入线102中的每条用于将单个位输入到电路100中(因此是二元的,1或0)。同样,多条输出线104中的每条用于从电路100输出单个位(因此是二元的,1或0)。

多条输入线102包括一条或多条事件输入线106,这一条或多条事件输入线106用于将事件(例如,诸如血压之类的生理特性的测量结果)输入到电路100中。电路100中的事件输入线106的数量将取决于用于表示事件的位数。例如,如果事件能够被表示为16位值,则电路100将包括16条事件输入线106,事件的每个位有一条事件输入线。图3示出了j条事件输入线106(被标示为e1至ej),其中,j是大于0的任一整数。

多条输入线102还包括一条或多条当前状态输入线108,这一条或多条当前状态输入线108用于将函数的当前状态输入到电路100中。图3示出了k条当前状态输入线108(被标示为c1至ck),其中,k是大于0的任一整数。如上所述,函数的当前状态包含在给定所有先前接收到的事件的情况下根据准则或触发条件评价新事件所需的所有信息,而不必将那些先前事件重新输入到电路100中。

多条输出线104包括一条或多条结果输出线110,这一条或多条结果输出线110用于从电路100输出函数的评价结果。结果输出线110的数量将取决于用于表示评价结果的位数。图3示出了m条结果输出线110(被标示为r1至rm),其中,m是大于0的任一整数。在一些实施例中,从函数(并且因此电路100)输出的结果包括对所评价的事件是否满足触发条件的指示。该指示可以是单个位(例如,“0”指示不满足触发条件,而“1”指示满足触发条件),在这种情况下,可以存在单条结果输出线110。然而,将意识到,可以通过多个位来表示对是否满足触发条件的指示,在这种情况下,可以存在多条结果输出线110。在一些实施例中,从函数输出的结果包括指示评价结果的公共输出(例如,“平均收缩压已经超过120mmhg”)。该公共输出通常由多个位表示,在这种情况下,可以存在用于输出公共输出的多条结果输出线110。在一些实施例中,从函数输出的结果能够既包括对是否满足触发条件的指示,又包括公共输出,在这种情况下,针对触发条件和公共输出中的每个都有一条或多条结果输出线110。取决于特定的函数,除非已评价的事件已经满足了触发条件,否则公共输出可能为空或0。

多条输出线104还包括一条或多条更新状态输出线112,这一条或多条更新状态输出线112用于从电路100输出函数的更新状态。图3示出了k条更新状态输出线112(被标示为u1至uk),因此与用于输入当前状态的当前状态输入线108的线数(其为k)相同。函数的更新状态包含在给定所有先前接收到的事件(包括刚刚评价的事件)的情况下根据准则或触发条件评价下一新事件所需的所有信息,而不必将那些先前事件重新输入到电路100中。

当电路100被节点(例如,服务器4或客户端节点6)混淆处理时,节点针对输入线102中的每条和输出线104中的每条(以及实际上电路100内的任何中间线,例如,将电路100中的逻辑函数链接在一起的中间线)生成线密钥对,其中,每个对中的线密钥中的一个表示该线上的“0”位,而每个对中的线密钥中的另一个表示该线上的“1”位。线密钥通常是随机生成的位串(例如,线密钥能够用随机位串(例如包括128位)来替换二元值“0”或“1”。然后,用针对该线和位值的适当线密钥来替换针对电路100中的(一个或多个)逻辑函数的真值表中的所有“0”和“1”。然后,使用针对提供该值的输入的线密钥对每个真值表中的每个输出值进行加密。例如,针对两条输入线g和h以及一条输出线z,由线g上的“1”输入和线h上的“0”输入产生的针对线z的“0”输出将由来表示,其中,是针对线y和位值x的线密钥。然后,对真值表中的加密输出进行随机排列以生成“混淆表”。

能够与另一节点共享针对电路100中的逻辑运算中的每个的混淆表以进行评价,并且能够与另一节点共享针对来自对电路100进行混淆处理的节点的输入的一个或多个线密钥(例如,事件),如果需要的话,还能够与另一节点共享针对由另一节点提供的到电路100的输入的一个或多个线密钥(例如,函数的当前状态)。然后,另一节点能够尝试使用接收到的线密钥对每个混淆表中的行进行解密。接收到的线密钥将使得节点能够对每个表解密一行(对应于与那些线密钥相关联的输入值),由此找到针对电路100的(一个或多个)输出值。该输出值是每条输出线104的线密钥,但是在不知道线密钥表示什么的情况下,评价混淆电路的节点无法确定电路100的实际输出。因此,该节点必须与对电路100进行混淆处理的节点协作以对混淆电路的输出进行“解密”。

在如上所述的被实施为增量计算的函数的背景中,混淆者将保持更新状态输出线112的0值和1值的所有线密钥作为状态,而不知道哪些线密钥是由评价者确定的。评价者将在评价期间针对更新状态计算0或1线密钥,而不知道它们表示什么,并且保持该线密钥作为状态。在下一计算(即,对事件的下一评价)时,混淆者将使用针对更新状态输出线112的0和1线密钥作为当前状态输入线108,评价者将使用针对更新状态的0或1线密钥作为状态输入线108,而无需为了获得针对该当前状态的线密钥而进行不经意传输(ot)。

作为上述内容的替代方案,将意识到,电路100可以具有一条或多条(输入和/或输出)线102、104,其能够表示或具有任意数量的值,即,不仅仅是0位和/或1位,而是值的范围或值的集合(特别是两个以上的可能值)。在这种情况下,当对电路100进行混淆处理时,针对每条输入线102和每条输出线104的每个可能值生成相应的线密钥。因此,每条(输入和输出)线102、104具有相关联的线密钥的子集,其中,子集中的每个线密钥表示针对线的可能值。为了简单起见,在下面对本文提出的技术的描述中,假定电路100的(一条或多条)输入线102和(一条或多条)输出线104仅具有或者仅使用0位值和1位值,但是,将意识到,以下所有技术也能够应用于其中(一条或多条)输入线102和/或(一条或多条)输出线104能够具有不同(和/或更多)值的电路。在每条线都能够表示任何数量的值的实施例中,能够根据第一线密钥来生成针对特定线的线密钥,例如,k0和偏移值r,其中,针对值i的线密钥是根据例如k0+i*r生成的。

如上所述,根据本文描述的技术,在图2的步骤56和76中使用双运行来评价函数,因此针对ppc的两方中的每一方(例如,服务器和第一客户端节点6)分别对电路100进行混淆处理并将其发送给另一个进行评价。

简要地,双运行如下所示地应用于图2中的技术。最初,客户端节点6针对每个第i个状态位保持0/1线密钥并且服务器4针对每个第i个状态位保持线密钥对称地,服务器4针对每个第i个状态位保持0/1线密钥并且客户端节点6针对每个第i个状态位保持线密钥

然后,客户端节点6和服务器4使用混淆电路来计算f。客户端节点6(使用针对当前状态输入线108的线密钥)对电路进行混淆处理,并且服务器4(使用针对状态的线密钥si并从客户端节点6获得客户端节点的线输入密钥)对其进行评价。客户端节点6获知针对状态、触发和公共输出线的状态g0、g1而服务器4获知与实际值相对应的线密钥si、g、oi。对应地,服务器4(使用针对当前状态输入线108的线密钥)对电路进行混淆处理,并且客户端节点6(使用针对状态的线密钥ti,使用主动安全ot来获得其线输入密钥)对其进行评价。服务器4获知针对状态、触发和公共输出线的线密钥ti0、ti1、h0、h1、pi0、pi1,而客户端节点6获知与实际值相对应的线密钥ti、h、pi。然后,服务器4和客户端节点6能够协作以确定触发和公共输出的实际值。

图4中的信令和流程图更详细地示出了双运行的构思能够如何通过图2的步骤56所示的第一客户端节点6和服务器4应用于函数的第一评价以及如何通过图2所示的步骤76中的第二客户端节点6和服务器4应用于函数的第二评价。特别地,图4的步骤和信号200-222对应于图2的步骤56,并且图4的步骤232-250对应于图2的步骤76。将意识到,虽然双运行的构思被图示为在服务器4与客户端节点6之间,但是双运行也能够被使用在两个服务器4之间,或者在两个客户端节点6之间,或者更一般地在任何两个节点4、6之间。

因此,在从第一客户端节点6向服务器4发送指示存在要对事件e1进行评价的指示54之后,第一客户端节点6对电路100进行混淆处理以形成被称为客户端混淆电路的混淆电路(步骤200)。假定对函数f的评价是对该函数的第一评价,因此,电路100没有可用的线密钥和函数的当前状态。

因此,为了对电路100进行混淆处理,第一客户端节点6针对输入线102中的每条和输出线104中的每条(以及实际上电路100内的任何中间线,例如,将电路100中的逻辑函数链接在一起的中间线)生成线密钥对,其中,每个对中的线密钥中的一个表示该线上的“0”位,而每个对中的线密钥中的另一个表示该线上的“1”位。

图5中的表示出了用于由第一客户端节点6针对输入线102中的每条和输出线104中的每条生成的线密钥的符号。因此,每条事件输入线106ej(其中,1≤j≤j,其中,j是大于或等于1的整数)具有相应的线密钥对其中,是针对第j条事件输入线106的表示1位的线密钥,并且是针对第j条事件输入线106的表示0位的线密钥。针对事件输入线106中的每条的相应的线密钥对能够被统称为针对事件输入线106的线密钥集合并且能够被总体地表示为ae。

每条当前状态输入线108ck(其中,1≤k≤k,其中,k为大于或等于1的整数)具有相应的线密钥对其中,是针对第k个当前状态输入线108的表示1位的线密钥,并且是针对第k条当前状态输入线108的表示0位的线密钥。针对当前状态输入线108中的每条的相应的线密钥对能够被统称为针对当前状态输入线108的线密钥集合并且能够被总体地表示为ac。

每条结果输出线110rm(其中,1≤m≤m,其中,m是大于或等于1的整数)具有相应的线密钥对其中,是针对第m条结果输出线110的表示1位的线密钥,并且是针对第m条结果输出线110的表示0位的线密钥。针对结果输出线110中的每条的相应的线密钥对能够被统称为针对结果输出输入线110的线密钥集合并且能够被总体地表示为ar。

每条更新状态输出线112uk(其中,1≤k≤k,其中,k是大于或等于1的整数,即,与当前状态输入线108的线数相同)具有线密钥对其中,是针对第k条更新状态输出线112的表示1位的线密钥,并且是针对第k条更新状态输出线112的表示0位的线密钥。针对更新状态输出线112中的每条的相应的线密钥对能够被统称为针对更新状态输出线112的线密钥集合并且能够被总体地表示为au。为了完整起见,应当注意,线密钥ac不同于线密钥au。

服务器4还对电路100进行混淆处理以形成被称为服务器混淆电路的混淆电路(步骤202)。步骤202能够在与第一客户端节点6执行的步骤200相同或相似的时间发生。

因此,为了对电路100进行混淆处理,服务器4针对输入线102中的每条和输出线104中的每条(以及实际上电路100内的任何中间线,例如,将电路100中的逻辑函数链接在一起的中间线)生成线密钥对,其中,每个对中的线密钥中的一个表示该线上的“0”位,而每个对中的线密钥中的另一个表示该线上的“1”位。由于线密钥通常是随机位串,因此由服务器4生成的线密钥将不同于由第一客户端节点6生成的线密钥。

图6中的表示出了用于由服务器4针对输入线102中的每条和输出线104中的每条生成的线密钥的符号。因此,每条事件输入线106ej具有相应的线密钥对其中,是针对第j条事件输入线106的表示1位的线密钥,并且是针对第j条事件输入线106的表示0位的线密钥。针对事件输入线106中的每条的相应的线密钥对能够被统称为针对事件输入线106的线密钥集合并且能够被总体地表示为be。

每条当前状态输入线108ck具有相应的线密钥对其中,是针对第k条当前状态输入线108的表示1位的线密钥,并且是针对第k条当前状态输入线108的表示0位的线密钥。针对当前状态输入线108中的每条的相应的线密钥对能够被统称为针对当前状态输入线108的线密钥集合并且能够被总体地表示为bc。

每条结果输出线110rm具有相应的线密钥对其中,是针对第m条结果输出线110的表示1位的线密钥,并且是针对第m条结果输出线110的表示0位的线密钥。针对结果输出线110中的每条的相应的线密钥对能够被统称为针对结果输出输入线110的线密钥集合并且能够被总体地表示为br。

每条更新状态输出线112uk具有相应的线密钥对其中,是针对第k条更新状态输出线112的表示1位的线密钥,并且是针对第k条更新状态输出线112的表示0位的线密钥。针对更新状态输出线112中的每条的相应的线密钥对能够被统称为针对更新状态输出线112的线密钥集合并且能够被总体地表示为bu。为了完整起见,应当注意,线密钥bc不同于线密钥bu。

接下来,第一客户端节点6将客户端混淆电路的表示发送到服务器4(信号204)。客户端混淆电路的表示能够是针对电路100中的逻辑运算中的每个的混淆真值表。

第一客户端节点6还将表示要评价的事件(即,事件e1)的线密钥发送到服务器4(信号206)。也就是说,第一客户端节点6在针对与形成事件e1的位值相对应的每条事件输入线106的每个对中识别适当的线密钥并且将它们发送到服务器4。表示特定事件的该线密钥集合被表示为考虑具有四条事件输入线106的示例,这意味着每个事件由4位值来表示,其中,示例性事件的值为1011。因此,表示该事件的线密钥将是并且这些线密钥被发送到服务器4(信号206)。将这些线密钥发送到服务器4使得服务器4能够将事件e1输入到客户端混淆电路中。然而,由于服务器4不知道线密钥与它们表示的位之间的关系(即,服务器4不知道任何给定的线密钥(随机位串)是“0”还是“1”),因此服务器4无法获知事件e1是什么,因此事件e1对于第一客户端节点6仍然是私密的。

因为这是对函数的第一评价,因此服务器4不具有针对函数的初始状态,因此第一客户端节点6还将表示初始状态的线密钥发送到服务器4(信号208)。例如,初始状态能够是默认状态或空状态。类似于针对事件e1的线密钥第一客户端节点6在针对与形成初始状态的位值相对应的每条当前状态输入线108的每个对中识别适当的线密钥并且将它们发送到服务器4。表示特定的当前状态的该线密钥集合被表示为

服务器4还将服务器混淆电路的表示发送到第一客户端节点6(信号210)。服务器混淆电路的表示能够是针对电路100中的逻辑运算中的每个的混淆真值表。

服务器4还需要将针对事件e1的线密钥发送到第一客户端节点6,使得第一客户端节点6能够将事件e1输入到服务器混淆电路中。然而,事件e1是第一客户端节点6的私密输入,因此不应与服务器4直接共享。因此,能够使用不经意传输(ot)来使得第一客户端节点6能够从服务器4获得针对事件e1的线密钥,而不会使服务器4获知事件e1(即,不会获知集合be中的哪些线密钥已经被发送到第一客户端节点6)。来自集合be的表示特定事件的该线密钥集合被表示为在一些实施例中,能够使用2取1不经意传输来获得针对事件e1的线密钥,如在tungchou和claudioorlandi的“thesimplestprotocolforoblivioustransfer”(latincrypt2015,密码学进展,第四届拉丁美洲密码学和信息安全国际会议,墨西哥瓜达拉哈拉,2015年8月23-26日,会议记录)中所述的那样。

图4中的信号212示出了来自集合be的针对事件e1的相关的线密钥该线密钥被发送到第一客户端节点6,但是,将意识到,在第一客户端节点6与服务器4之间可能存在其他信令以完成在图4中未示出的ot。

由于这是对函数的第一评价,因此第一客户端节点6不具有针对函数的初始状态,因此服务器4还将表示初始状态的线密钥发送到第一客户端节点6(信号214)。例如,初始状态能够是默认状态或空状态。服务器4能够在针对与形成初始状态的位值相对应的每条当前状态输入线108的每个对中简单地识别适当的线密钥并且将它们发送到第一客户端节点6(信号214)。表示特定的当前状态的该线密钥集合被表示为

然后,在步骤216中,第一客户端节点6评价服务器混淆电路的表示。也就是说,第一客户端节点6尝试使用接收到的来自集合be的表示事件e1的(如在信号212中发送的)线密钥和接收到的来自集合bc的表示当前(初始)状态的(如在信号214中发送的)线密钥来对表示中的每个混淆表中的行进行解密。接收到的线密钥将仅使得第一客户端节点6能够对每个表中的一行(对应于与那些线密钥相关联的输入值)进行解密,并且因此最终找到以下形式的电路100的输出:来自br的针对每条结果输出线110的线密钥和来自bu的针对每条更新状态输出线112的线密钥(如步骤218所示)。来自br的表示评价结果的线密钥集合被表示为来自bu的表示更新状态的线密钥集合被表示为该更新状态对应于图2的框62中的状态sc。由于第一客户端节点6不知道中的这些线密钥中的每个表示哪个位值,因此第一客户端节点6不知道在该阶段处函数的更新状态是什么或者评价结果是什么。

在步骤220(其能够在与步骤216相同或相似的时间发生)中,服务器4评价客户端混淆电路的表示。也就是说,服务器4尝试使用接收到的来自集合ae的表示事件e1的(如在信号206中发送的)线密钥和接收到的来自集合ac的表示当前(初始)状态的(如在信号208中发送的)线密钥来对表示中的每个混淆表中的行进行解密。接收到的线密钥将仅使得服务器4能够对每个表中的一行(对应于与那些线密钥相关联的输入值)进行解密,并且因此最终找到以下形式的电路100的输出:来自ar的针对每条结果输出线110的线密钥和来自au的针对每条更新状态输出线112的线密钥(如步骤222所示)。来自ar的表示评价结果的线密钥集合被表示为来自au的表示更新状态的线密钥集合被表示为该更新状态对应于图2的框60中的状态ss。由于服务器4不知道这些线密钥中的每个表示哪个位值,因此服务器4不知道在该阶段处函数的更新状态是什么或者评价结果是什么。

接下来,第一客户端节点6和服务器4协作以确定评价结果(步骤64)。下面将更详细地描述这种协作。

与确定评价结果分开地,第一客户端节点6使用与其他客户端节点6共享(但不与服务器4共享)的秘密密钥sk对更新状态进行加密,并且还(使用秘密密钥sk)对线密钥集合au(以及关于au中的线密钥中的每个表示“0”和“1”中的哪个的信息)进行加密,第一客户端节点6使用线密钥集合au对更新状态输出线112进行混淆处理。该加密被示为步骤224。

然后,第一客户端节点6将加密的和加密的线密钥集合au发送到服务器4(被示为信号226)。这对应于图2中的信号66。

服务器4不具有或者不知道共享秘密密钥sk,因此服务器4无法对接收到的加密的和加密的线密钥集合au进行解密。因此,服务器4无法确定并且因此无法获知由第一客户端节点6计算的函数的更新状态并且无法确定au,au将使得服务器4能够通过服务器对客户端混淆电路的评价来确定函数输出的更新状态。

服务器4存储接收到的加密的和加密的线密钥集合au(步骤228,也对应于图2中的步骤68)。服务器4还存储根据对客户端混淆电路的评价确定的更新状态并且还存储线密钥集合bu(以及关于bu中的线密钥中的每个表示“0”和“1”中的哪个的信息),服务器4使用线密钥集合bu对更新状态输出线112进行混淆处理。下次要评价事件时,将使用该存储信息。

当第二客户端节点6具有要评价的事件e2时,从第二客户端节点6向服务器4发送指示存在要使用函数f评价的事件e2的指示70。服务器4检索所存储的从第一客户端节点6接收到的(或者更一般地,从先前评价函数的客户端节点6接收到的)加密的和加密的线密钥集合au,并且将其发送到第二客户端节点6(在图4中被示为信号230,对应于图2中的信号72)。

第二客户端节点6使用(第二客户端节点6具有的)共享秘密密钥sk对接收到的加密的和加密的线密钥集合au进行解密以获得和线密钥集合au,第一客户端节点6将该和线密钥集合au用于更新状态输出线(步骤231)。

接下来,第二客户端节点6对电路100进行混淆处理以形成混淆电路。该混淆电路被称为客户端混淆电路(步骤232)。为了对电路100进行混淆处理,第二客户端节点6使用针对当前状态输入线112的该线密钥集合au,并且针对事件输入线102中的每条和输出线104中的每条(以及实际上电路100内的任何中间线,例如,将电路100中的逻辑函数链接在一起的中间线)生成线密钥对,和前面的内容一样,每个对中的线密钥中的一个表示该线上的“0”位,而每个对中的线密钥中的另一个表示该线上的“1”位。

通过使用针对当前状态输入线112的线密钥集合au,使得服务器4能够输入它在函数的先前评价之后存储的函数的更新状态作为针对事件e2的评价的当前状态,而服务器4或第二客户端节点6不会获知状态的内容。

图7中的表示出了用于由第二客户端节点6针对输入线102中的每条和输出线104中的每条生成的线密钥的符号。因此,每条事件输入线106ej具有相应的线密钥对其中,是针对第j条事件输入线106的表示1位的线密钥,并且是针对第j条事件输入线106的表示0位的线密钥。针对事件输入线106中的每条的相应的线密钥对能够被统称为针对事件输入线106的线密钥集合并且能够被总体地表示为ce。

如上所述,当前状态输入线108具有线密钥au,第一客户端节点6在先前评价中使用线密钥au对更新状态输出线112进行混淆处理。特别地,每条当前状态输入线108被分配有相应的线密钥对中的一个,其中,是针对第k条当前状态输入线108的表示1位的线密钥,并且是针对第k条当前状态输入线108的表示0位的线密钥。针对当前状态输入线108中的每条的相应的线密钥对被统称为针对当前状态输入线108的线密钥集合并且通常被表示为au。

每条结果输出线110rm具有相应的线密钥对其中,是针对第m条结果输出线110的表示1位的线密钥,并且是针对第m条结果输出线110的表示0位的线密钥。针对结果输出线110中的每条的相应的线密钥对能够被统称为针对结果输出输入线110的线密钥集合并且能够被总体地表示为cr。

每条更新状态输出线112uk具有相应的线密钥对其中,是针对第k条更新状态输出线112的表示1位的线密钥,并且是针对第k条更新状态输出线112的表示0位的线密钥。针对更新状态输出线112中的每条的相应的线密钥对能够被统称为针对更新状态输出线112的线密钥集合并且能够被总体地表示为cu。为了完整起见,应当注意,针对当前状态输入线108的线密钥au不同于针对更新状态输出线112的线密钥cu。

服务器4还对电路100进行混淆处理以形成被称为服务器混淆电路的混淆电路(步骤234)。步骤234能够在与第二客户端节点6执行的步骤232相同或相似的时间发生。

为了对电路100进行混淆处理,服务器4使用所存储的针对当前状态输入线112的线密钥集合bu,并且针对事件输入线102中的每条和输出线104中的每条(以及实际上电路100内的任何中间线,例如,将电路100中的逻辑函数链接在一起的中间线)生成线密钥对。

通过使用针对当前状态输入线112的线密钥集合bu,使得第二客户端节点6能够输入它在信号230中接收到的并在步骤231中进行解密的函数的更新状态作为针对事件e2的评价的当前状态,而服务器4或第二客户端节点6不会获知状态的内容。

图8中的表示出了用于由服务器4在步骤232中针对输入线102中的每条和输出线104中的每条生成的线密钥的符号。因此,每条事件输入线106ej具有相应的线密钥对其中,是针对第j条事件输入线106的表示1位的线密钥,并且是针对第j条事件输入线106的表示0位的线密钥。针对事件输入线106中的每条的相应的线密钥对能够被统称为针对事件输入线106的线密钥集合并且能够被总体地表示为de。

如上所述,当前状态输入线108具有线密钥bu,服务器4在先前评价中使用线密钥bu对更新状态输出线112进行混淆处理。特别地,每条当前状态输入线108被分配有相应的线密钥对中的一个,其中,是针对第k条当前状态输入线108的表示1位的线密钥,并且是针对第k条当前状态输入线108的表示0位的线密钥。针对当前状态输入线108中的每条的相应的线密钥对被统称为针对当前状态输入线108的线密钥集合并且通常被表示为bu。

每条结果输出线110rm具有相应的线密钥对其中,是针对第m条结果输出线110的表示1位的线密钥,并且是针对第m条结果输出线110的表示0位的线密钥。针对结果输出线110中的每条的相应的线密钥对能够被统称为针对结果输出输入线110的线密钥集合并且能够被总体地表示为dr。

每条更新状态输出线112uk具有相应的线密钥对其中,是针对第k条更新状态输出线112的表示1位的线密钥,并且是针对第k条更新状态输出线112的表示0位的线密钥。针对更新状态输出线112中的每条的相应的线密钥对能够被统称为针对更新状态输出线112的线密钥集合并且能够被总体地表示为du。为了完整起见,应当注意,针对当前状态输入线108的线密钥bu不同于针对更新状态输出线112的线密钥du。

接下来,第二客户端节点6将客户端混淆电路的表示发送到服务器4(信号236)。客户端混淆电路的表示能够是针对电路100中的逻辑运算中的每个的混淆真值表。

第二客户端节点6还将表示要评价的事件(即,事件e2)的线密钥发送到服务器4(信号238)。也就是说,第二客户端节点6在针对与形成事件e2的位值相对应的每条事件输入线106的每个对中识别适当的线密钥并且将它们发送到服务器4。表示特定事件的该线密钥集合被表示为将这些线密钥发送到服务器4使得服务器4能够将事件e2输入到客户端混淆电路中。如在上述函数的第一评价中一样,由于服务器4不知道线密钥与它们表示的位之间的关系(即,服务器4不知道任何给定的线密钥(随机位串)是“0”还是“1”),因此服务器4无法获知事件e2是什么,因此事件e2对于第二客户端节点6仍然是私密的。

由于服务器4已经具有由适当的线密钥表示的函数的当前状态(即,它是在步骤220中确定的所存储的更新状态),并且当前状态输入线108使用相同的线密钥集合作为输出所存储的更新状态的更新状态输出线112,因此,在该函数评价中,第二客户端节点6不需要将针对函数的当前状态的任何线密钥发送到服务器4。

服务器4还将服务器混淆电路的表示发送到第二客户端节点6(信号240)。服务器混淆电路的表示能够是针对电路100中的逻辑运算中的每个的混淆真值表。

服务器4还需要将针对事件e2的线密钥发送到第二客户端节点6,使得第二客户端节点6能够将事件e2输入到服务器混淆电路中。如在函数的第一评价中的事件e1一样,事件e2是客户端节点6的私密输入,因此不应与服务器4直接共享。因此,使用ot来使得第二客户端节点6能够从服务器4获得针对事件e2的线密钥,而服务器4不会获知事件e2(即,不会获知集合de中的哪些线密钥已经被发送到第二客户端节点6)。来自集合de的表示特定事件的该线密钥集合被表示为在一些实施例中,能够使用2取1不经意传输来获得针对事件e2的线密钥。

图4中的信号242示出了来自集合de的针对事件e1的相关的线密钥该线密钥被发送到第二客户端节点6,但是,将意识到,在第二客户端节点6与服务器4之间可能存在其他信令以完成在图4中未示出的ot。

由于第二客户端节点6已经具有由适当的线密钥表示的函数的当前状态(即,它是在步骤231中确定的更新状态),并且当前状态输入线108使用相同的线密钥集合作为输出更新状态的更新状态输出线112,因此,在该函数评价中,服务器4不需要将针对函数的当前状态的任何线密钥发送到第二客户端节点6。

然后,在步骤244中,第二客户端节点6评价服务器混淆电路的表示。也就是说,第二客户端节点6尝试使用接收到的来自集合de的表示事件e1的(如在信号212中发送的)线密钥和更新(现在是当前)状态来对表示中的每个混淆表中的行进行解密。接收到的线密钥将仅使得第二客户端节点6能够对每个表中的一行(对应于与那些线密钥相关联的输入值)进行解密,并且因此最终找到以下形式的电路100的输出:来自dr的针对每条结果输出线110的线密钥和来自du的针对每条更新状态输出线112的线密钥(如步骤246所示)。来自dr的表示评价结果的线密钥集合被表示为来自du的表示更新状态的线密钥集合被表示为该更新状态对应于图2的框82中的状态sc'。由于第二客户端节点6不知道这些线密钥中的每个表示哪个位值,因此第二客户端节点6不知道在该阶段处函数的更新状态是什么或者评价结果是什么。

在步骤248(其能够在与步骤244相同或相似的时间发生)中,服务器4评价客户端混淆电路的表示。也就是说,服务器4尝试使用接收到的来自集合ce的表示事件e2的(如在信号238中发送的)线密钥和接收到的来自集合au的表示先前的更新(现在是当前)状态的线密钥来对表示中的每个混淆表中的行进行解密。该线密钥将仅使得服务器4能够对每个表中的一行(对应于与那些线密钥相关联的输入值)进行解密,并且因此最终找到以下形式的电路100的输出:来自cr的针对每条结果输出线110的线密钥和来自cu的针对每条更新状态输出线112的线密钥(如步骤250所示)。来自cr的表示评价结果的线密钥集合被表示为来自cu的表示更新状态的线密钥集合被表示为该更新状态对应于图2的框80中的状态ss'。由于服务器4不知道这些线密钥中的每个表示哪个位值,因此服务器4不知道在该阶段处函数的更新状态是什么或者评价结果是什么。

接下来,第二客户端节点6和服务器4协作以确定评价结果(步骤84)。下面将更详细地描述这种协作。

与确定评价结果分开地,第二客户端节点6使用与其他客户端节点6共享(但不与服务器4共享)的秘密密钥sk对更新状态进行加密,并且还(使用秘密密钥sk)对线密钥集合cu(以及关于cu中的线密钥中的每个表示“0”和“1”中的哪个的信息)进行加密,第二客户端节点6使用线密钥集合cu对更新状态输出线112进行混淆处理。该加密被示为步骤252。

然后,第二客户端节点6将加密的和加密的线密钥集合cu发送到服务器4(被示为信号254)。这对应于图2中的信号86。

服务器4不具有或者不知道共享秘密密钥sk,因此服务器4无法对接收到的加密的和加密的线密钥集合cu进行解密。因此,服务器4无法确定并且因此无法获知由第二客户端节点6计算的函数的更新状态并且无法确定cu,cu将使得服务器4能够通过服务器对客户端混淆电路的评价来确定函数输出的更新状态。

服务器4存储接收到的加密的和加密的线密钥集合cu(步骤256,也对应于图2中的步骤88)。服务器4还存储根据对客户端混淆电路的评价确定的更新状态并且还存储线密钥集合du(以及关于du中的线密钥中的每个表示“0”和“1”中的哪个的信息),服务器4使用线密钥集合du对更新状态输出线112进行混淆处理。下次要评价事件时,将使用该存储信息。

针对函数对事件的任何后续评价,重复从信号230到步骤256的流程。

在图4中的步骤216和220中对两个混淆电路进行评价之后(或者在图4中的步骤244和248之后),客户端节点6对客户端混淆电路进行混淆处理并且服务器4对客户端混淆电路进行评价。对于该混淆电路,针对电路100的各种输出(更新状态和结果输出,例如,触发和公共输出)的每条线,客户端节点6已经确定了线密钥对k0和k1,它们分别表示位值0和1,并且服务器4已经针对每条线确定了相应的线密钥k,其中,如果该输出位的值为0,则k=k0;而如果该输出位的值为1,则k=k1。类似地,针对相同的函数,服务器4对服务器混淆电路进行混淆处理并且客户端节点6对服务器混淆电路进行评价。针对上面的相同输出线中的每条,服务器4分别知道表示位值0和1的l0和l1,并且客户端节点6已经针对每条线确定了相应的线密钥l,其中,如果输出位的值为0,则l=l0;而如果输出位的值为1,则l=l1。

假设这两个混淆电路是对相同电路100在相同输入值上的评价,则它们应当产生相同输出值。因此,在一些实施例中,节点4、6之间的协作能够包括执行检查以验证它们是否已经产生了相同值。在一些实施例中,能够在输出仍然被加密的同时(即,在将由混淆电路输出的线密钥翻译为实际线值之前)执行该检查。能够对评价后的函数状态(其不被输出到评价中的另一节点)与评价结果的指示(在结果被翻译之前)执行相等性检查。加密的相等性检查在文章“quid-pro-quo-tocols:strengtheningsemi-honestprotocolswithdualexecution”中有描述,但是如本文所述,该检查不仅应用于混淆电路的评价结果输出线ri,而且还应用于从一次计算/评价转移到下一次计算/评价的更新状态输出线ui。对状态一致性的这种检查的作用是确保在其上传递状态的节点不会泄露关于其输入的任何意外信息。

通常,使用上面的k和l线密钥符号,针对电路100的特定输出线,相等性检查旨在确定以下条件是否成立:

(k=k0并且l=l0)或者(k=k1并且l=l1)

也就是说,确定是k和l都表示值0,还是k和l都表示值1。混淆电路将位作为输入和输出,实际上,密钥k/k0/k1和l/l0/l1是每个为128位的位串(例如,由于使用了高级加密标准aes),因此在位的方面,上面的检查可以被写成:

(k1=k0,1并且…并且k128=k0,128并且l1=l0,1并且…并且l128=l0,128)或者(k1=k1,1并且…并且k128=k1,128并且l1=l1,1并且l128=l1,128)

实施该检查的电路可能只有一条(二元)输出线,如果检查失败(即,两个混淆电路的输出不匹配),则提供0;而如果检查成功(即,两个混淆电路的输出确实匹配),则提供1。

上面的检查仅处理电路100的一条输出线,因此应对电路100的每条输出线重复该检查,并将所有这些检查的结果加在一起而得到一个总体二元结果。

因此,更一般地,为了执行相等性检查,节点4、6执行混淆电路的另一双运行,但是这次该电路是检查来自以上两次运行的输出线密钥是否表示相同的更新状态和结果输出的电路。特别地,电路具有作为第一双运行的所有输出线104的线密钥的输入(例如,针对由第一客户端节点6在步骤200中生成的所有输出线的线密钥,以及针对由服务器4在步骤202中生成的所有输出线的线密钥),并且电路的输出仅是一位,其表示对客户端混淆电路的评价和对服务器混淆电路的评价是否提供了相同的计算输出。

使用上面参考图4所描述的函数的第一评价为例,第一客户端节点6对相等性检查的输入将是:(针对结果输出线110的线密钥),(针对更新状态输出线112的线密钥),(表示评价结果的线密钥集合)以及(表示更新状态的线密钥集合);并且服务器4对相等性检查的输入将是:(针对结果输出线110的线密钥),(针对更新状态输出线112的线密钥),(表示评价结果的线密钥集合)以及(表示更新状态的线密钥集合)。

用于执行相等性检查的电路评价以下布尔公式:

其中,布尔公式是所有更新状态和结果输出线的结合。实际上,当且仅当服务器4输出1时,该布尔公式针对每条输出线检查客户端节点6是否输出1以及所有输出是否正确对应于0或1。

将意识到,使用双运行来执行该相等性检查仅是一种选择,并且对于该检查,能够使用用于安全抵抗恶意对手的安全两方计算的任何通用协议。例如,能够使用jesperbuusnielsen等人在“anewapproachtopracticalactive-securetwo-partycomputation”(密码学进展,crypto2012,第681-700页)中描述的技术。

如果相等性检查指示对混淆电路的评价提供了不同的输出(即使只是输出线值中的一个不同,也会是这种情况),则服务器4能够认为客户端节点6具有恶意行为并且能够阻止该客户端节点6提供进一步的信息或更新。然后,能够基于上一次成功状态更新/输出后的状态来继续进行函数评价。

如果相等性检查指示对混淆电路的评价提供了相同的输出(或者如果省去了相等性检查),则节点4、6能够协作以揭示评价结果(图2和图4中的步骤64和84)。图9是示出能够揭示输出方式的实施例流程和信令图,该实施例被应用于确定触发条件输出和在满足触发条件时将被揭示的公共输出的电路100。因此,在这些实施例中,结果输出线110rm包括一条或多条触发输出线rt(其中,1≤t≤m)和一条或多条公共输出输出线rp(其中,1≤p≤m并且p≠t)。

在示例性实施例中,由每个混淆电路输出的针对触发条件输出线ri的(一个或多个)线密钥被发送到另一节点4、6以翻译为实际值,并且如果设置了触发(即,如果所评价的事件满足触发条件),则节点4、6中的一者或两者能够将针对公共输出输出线rp的(一个或多个)线密钥发送到另一节点4、6以进行翻译。

图9示出了服务器4和第二客户端节点6如何协作以确定图4的步骤84中的评价结果。因此,在对混淆电路进行评价之后,服务器4将(一条或多条)触发条件线rt的输出发送(信号300)到第二客户端节点6。该输出为第二客户端节点6将(一条或多条)触发条件线rt的输出发送(信号302)到服务器4。该输出为

第二客户端节点6通过将接收到的与当在步骤232中由第二客户端节点6对电路100进行混淆处理时用于触发条件输出线的线密钥(即,)进行比较来确定是否满足触发条件(步骤304)。服务器4通过将接收到的与当在步骤234中由服务器4对电路100进行混淆处理时用于触发条件输出线的线密钥(即,)进行比较来确定是否满足触发条件(步骤306)。

如果在步骤304或步骤306中节点4、6确定接收到的触发条件输出值与触发条件输出线密钥中的任意一个都不匹配,则发生了错误并且能够丢弃评价结果。

如果第二客户端节点6确定已经满足了触发条件,则第二客户端节点6能够将(一条或多条)公共输出线rp的输出发送到服务器4(信号308)。该输出为假设服务器4还确定已经满足了触发条件,则服务器4通过将接收到的与当在步骤234中由服务器4对电路100进行混淆处理以确定公共输出输出线的1位值或0位值时用于公共输出输出线的线密钥(即,)进行比较来确定评价结果(即,公共输出)(步骤310)。服务器4能够将该公共输出共享给任何相关方(包括第二客户端节点6)。服务器4还可以共享对已经满足触发条件的指示。

作为上述方案的替代(或任选为附加)方案,如果服务器4确定已经满足了触发条件,则服务器4能够将(一条或多条)公共输出线rp的输出发送到第二客户端节点6(信号312)。该输出为假设第二客户端节点6还确定已经满足了触发条件,则第二客户端节点6通过将接收到的与当在步骤232中由第二客户端节点6对电路100进行混淆处理以确定公共输出输出线的1位值或0位值时用于公共输出输出线的线密钥(即,)进行比较来确定评价结果(即,公共输出)(步骤314)。第二客户端节点6能够将该公共输出共享给任何相关方(包括服务器4)。第二客户端节点6还可以共享对已经满足触发条件的指示。

作为图9中的方法的替代方法,能够通过使用和调整在文章“quid-pro-quo-tocols:strengtheningsemi-honestprotocolswithdualexecution”中描述的渐进式启示技术,该文章逐位(即,逐线)打开(解密/翻译)输出线104,从触发条件线开始,并且如果没有满足触发条件,则停止打开(解密/翻译)。

图10中的流程图图示了根据各种实施例的操作节点4、6的总体方法。该方法用于结合另一节点4、6使用函数来评价事件。该方法能够由处理单元12或18来执行,例如通过运行被存储在存储器单元14或20中的合适的计算机程序代码来执行。

在图10的方法中,如在本公开内容中提出的技术和实施例的较早描述中那样,函数由包括一个或多个逻辑运算的第一电路100来表示。第一电路100具有一条或多条当前状态输入线108和一条或多条事件输入线106,一条或多条当前状态输入线108用于将函数的当前状态输入到第一电路100中,一条或多条事件输入线106用于将第一事件输入到第一电路100中。第一电路100还具有一条或多条结果输出线110和一条或多条更新状态输出线112,一条或多条结果输出线110用于输出对使用函数对第一事件的评价结果的指示,一条或多条更新状态输出线112用于输出函数的更新状态。

在该方法的第一步骤(即,步骤901)中,第一节点4、6获得当前状态信息。当前状态信息包括:(i)线密钥的第一集合,第一集合包括针对(一条或多条)当前状态输入线108中的每条的线密钥的相应的子集(其中,线密钥的每个子集包括多个线密钥,多个线密钥中的每个线密钥与针对相应的当前状态输入线108的可能值(例如,0和1)相关联),以及(ii)以针对(一条或多条)当前状态输入线108中的每条的相应的线密钥的形式的当前状态,其中,每个相应的线密钥来自线密钥的第二集合,并且每个相应的线密钥表示针对(一条或多条)当前状态输入线108中的相应的一条的值。

在第一节点是客户端节点6(并且第二节点是服务器4)的实施例中,步骤901能够包括客户端节点6从服务器4接收加密的第一信号,并且客户端节点6使用秘密密钥对加密的第一信号进行解密。对加密的第一信号进行解密提供了线密钥的第一集合,该第一集合包括针对(一条或多条)当前状态输入线108中的每条的线密钥的相应的子集以及以来自线密钥的第二集合的针对一条或多条状态输入线108中的每条的相应的线密钥的形式的当前状态sc。

在第一节点是服务器4(并且第二节点是客户端节点6)的实施例中,步骤901能够包括服务器4从存储器单元检索当前状态信息(ss)。

接下来,在步骤903中,第一节点4、6使用线密钥的第一集合和线密钥的第三集合对第一电路100进行混淆处理以形成第一混淆电路,在对第一电路100进行混淆处理中,线密钥的第一集合用于(一条或多条)当前状态输入线108。线密钥的第三集合包括针对第一电路100中的(一条或多条)事件输入线106中的每条和(一条或多条)输出线104中的每条的线密钥的相应的子集。第三集合中的线密钥的每个子集包括多个线密钥,多个线密钥中的每个线密钥与针对相应的事件输入线106或输出线104的可能值相关联。

在步骤905,第一节点4、6向第二节点4、6发送第一混淆电路的表示和来自线密钥的第三集合的表示第一事件的(一个或多个)线密钥,以供第二节点4、6来评价。

在第一节点是服务器4(并且第二节点是客户端节点6)的实施例中,步骤905能够包括服务器4使用不经意传输将来自线密钥的第三集合的表示第一事件的(一个或多个)线密钥发送到第二节点。

在步骤907中,第一节点4、6从第二节点4、6接收第二混淆电路的表示。第二混淆电路是由第二节点4、6使用针对(一条或多条)当前状态输入线108的线密钥的第二集合和包括针对第一电路100中的每条其他输入线106和每条输出线104的线密钥的相应的子集的线密钥的第四集合来混淆处理的第一电路100。

第一节点4、6还(在步骤909中)从第二节点接收来自线密钥的第四集合的表示第一事件的一个或多个线密钥。在第一节点是客户端节点6(并且第二节点是服务器4)的情况下,步骤909能够包括使用不经意传输从服务器4接收表示第一事件的(一个或多个)线密钥。

然后,第一节点4、6能够评价第二混淆电路的表示。因此,在步骤911中,第一节点4、6使用接收到的第二混淆电路的表示、来自线密钥的第二集合的表示当前状态的(一个或多个)线密钥以及接收到的来自线密钥的第四集合的表示第一事件的(一个或多个)线密钥来确定来自线密钥的第四集合的针对(一条或多条)结果输出线110的(一个或多个)线密钥并确定来自线密钥的第四集合的针对(一条或多条)更新状态输出线112的(一个或多个)线密钥。

最后,在步骤913中,第一节点4、6与第二节点4、6协作以根据由第二节点4、6对第一混淆电路的评价和由第一节点4、6对第二混淆电路的评价来确定第一事件的评价结果。

步骤913能够包括:第一节点4、6从第二节点4、6接收来自线密钥的第三集合的针对第一混淆电路的(一条或多条)结果输出线110中的每条的线密钥;并且第一节点4、6能够基于接收到的针对第一混淆电路的(一条或多条)结果输出线110中的每条的线密钥和来自线密钥的第三集合的针对(一条或多条)结果输出线110中的每条的相应的线密钥对来确定(一条或多条)结果输出线110中的每条的位值。

步骤913还能够或者备选地包括:将来自线密钥的第四集合的针对第二混淆电路的(一条或多条)结果输出线110的(一个或多个)线密钥发送到第二节点4、6。以这种方式,第二节点4、6能够翻译在(一条或多条)结果输出线110上获得的线密钥以确定结果输出。

在一些实施例中,函数用于评价事件以确定事件是否满足触发条件并且用于在事件满足触发条件时输出公共输出。因此,(一条或多条)结果输出线110包括一条或多条触发条件输出线和一条或多条公共输出输出线,该一条或多条触发条件输出线用于输出对事件是否满足触发条件的指示,该一条或多条公共输出输出线用于在第一事件满足触发条件时输出公共输出。在这些实施例中,步骤913能够包括第一节点4、6将来自线密钥的第四集合的针对(一条或多条)触发条件输出线的(一个或多个)线密钥发送到第二节点4、6。

在这些实施例中,步骤913还能够或者备选地包括:从第二节点4、6接收来自线密钥的第三集合的针对(一条或多条)触发条件输出线的(一个或多个)线密钥;然后根据接收到的来自线密钥的第三集合的针对(一条或多条)触发条件输出线的(一个或多个)线密钥来确定第一事件是否满足触发条件。

在以上实施例中,步骤913还能够包括:在第一事件被确定为满足触发条件的情况下,向第二节点4、6发送来自线密钥的第四集合的针对(一条或多条)公共输出输出线的(一个或多个)线密钥。

在一些实施例中,步骤913还能够包括:从第二节点4、6接收来自线密钥的第三集合的针对(一条或多条)公共输出输出线的(一个或多个)线密钥;并且在第一事件被确定为满足触发条件的情况下,根据接收到的来自线密钥的第三集合的针对(一条或多条)公共输出输出线的(一个或多个)线密钥来确定(一条或多条)公共输出输出线中的每条的位值。

在一些实施例中,在步骤913中,能够逐位确定第一事件的评价结果。

在一些实施例中,步骤913包括:对根据第一节点4、6对第二混淆电路的评价所确定的线密钥所表示的位值与根据第二节点4、6对第一混淆电路的评价所确定的线密钥所表示的位值执行相等性检查。

如上所述,能够通过使用线密钥的第五集合对第二电路进行混淆处理以形成第三混淆电路来执行这种相等性检查。能够将第三混淆电路的表示与来自线密钥的第五集合的表示到多条输入线中的每条的输入的线密钥一起发送到第二节点4、6以进行评价。第一节点4、6能够从第二节点接收第四混淆电路的表示(其中,第四混淆电路是第二节点4、6使用线密钥的第六集合进行混淆处理的第二电路),并且第一节点4、6能够接收来自线密钥的第六集合的表示到多条输入线中的每条的输入的线密钥。然后使用接收到的第四混淆电路和接收到的来自线密钥的第六集合的表示到多条输入线中的每条的输入的多个线密钥以确定针对一条或多条相等性输出线中的每条的值,从而评价第四混淆电路的表示。

在第一节点是客户端节点6(并且第二节点是服务器4)的实施例中,该方法还能够包括:客户端节点6形成新的当前状态信息,新的当前状态信息包括:来自线密钥的第四集合的针对(一条或多条)更新状态输出线112的(一个或多个)线密钥,以及来自线密钥的第三集合的针对(一条或多条)更新状态输出线112中的每条的相应的线密钥对;使用秘密密钥对新的当前状态信息进行加密;并且将加密的新的当前状态信息发送到第二节点4。

在第一节点是服务器4(并且第二节点是客户端节点6)的实施例中,该方法还能够包括:形成新的当前状态信息,新的当前状态信息包括:来自线密钥的第四集合的针对(一条或多条)更新状态输出线112的(一个或多个)线密钥,以及来自线密钥的第三集合的针对(一条或多条)更新状态输出线112中的每条的相应的线密钥对。然后服务器4存储新的当前状态信息。

将意识到,本文描述的技术能够用于评价许多不同领域和技术领域中的函数和事件。下面列出了一些示例。

空气质量——可以期望将关于空气污染的信息与针对呼吸问题的测试结果相互关联,以监控是否存在重大问题。虽然空气污染水平能够作为公共信息,但是关于呼吸问题的测试结果却是敏感的并且分散在各个医生、gp和医院中。每次进行测试时,测试结果和区号都能够由相关的gp加密并发送到服务器。如果在任何区中测试结果都明显比正常情况差,则触发条件将引起发出警报。

安全性分析——服务器保留活动日志。这些日志能够用于检测攻击。一个示例是从同一远程系统尝试重复登录。然而,并非始终需要为所有诚实用户保留身份日志。本文描述的技术能够用于组合来自许多不同系统的日志记录信息并执行异常检测。如果检测到这样的异常,则触发条件将引起发出警报并释放和识别这种情况。

金融市场操纵——针对市场操纵监测金融市场的框架能够实现对敏感数据(即,银行和/或交易者不愿公开的事实和见解)的使用。在监测框架识别出可能的市场操纵时,触发条件将引起发出警报并释放证明。

帆布切割/对象监督——这涉及检测涉及车辆的不良行为或可疑行为。第一类涉及罪犯经常通过切割保护货物的帆布来抢劫停在停靠站的卡车。第二类涉及罪犯将要进行的犯罪活动的地点。检测这些罪犯的一种方法是使用相机来查找在几小时内进入若干不同休息站的车辆以及一些其他可观察到的行为。这些车辆是可疑的。其他过往车辆应保持匿名。通过使用本文描述的技术,每一个登记的车辆能够是一个事件。在车辆被标示为可疑时,触发条件引起发出警报并释放其车牌信息。

平均速度检查——一些国家已经部署了平均速度检查系统,该系统可以测量车辆在一段道路上的速度。这需要某种形式的存储来确定行进一段路程所花费的时间。通过使用本文描述的技术,能够确定车辆过快地通过两个测量站并释放其车牌,同时使所有其他车辆保持匿名。

因此,提供了用于以保护私密性的方式使用函数来评价第一事件的改进的技术。

本领域技术人员通过研究附图、公开内容以及权利要求,在实践本文描述的原理和技术时能够理解并实现对所公开的实施例的变型。在权利要求中,“包括”一词不排除其他元件或步骤,并且词语“一”或“一个”不排除多个。单个处理器或其他单元可以实现在权利要求中记载的若干项的功能。虽然某些措施被记载在互不相同的从属权利要求中,但是这并不指示不能有利地使用这些措施的组合。计算机程序可以被存储或分布在合适的介质上,例如,与其他硬件一起或作为其他硬件的部分供应的光学存储介质或固态介质,但是也可以以其他形式分布,例如,经由互联网或其他有线或无线的电信系统分布。权利要求中的任何附图标记都不应被解释为对范围的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1