经由隔离加密的隐私增强计算的制作方法

未命名 10-28 阅读:69 评论:0

经由隔离加密的隐私增强计算
1.相关申请的交叉引用
2.本专利申请要求于2020年12月18日提交的第63/127,183号美国临时专利申请以及于2021年7月14日提交的第63/221,594号美国临时专利申请的优先权,所述专利申请中的每个的公开内容通过引用各自全部并入本文。


背景技术:

3.随着云计算和物联网(iot)的发展,数据安全变得越来越重要。云服务提供商可以访问用户的个人信息。iot设备安装在我们的家庭、我们的汽车和我们的工作场所中。基于云和互联网的系统中无处不在的软件可能会被黑客攻击。不良行为者不断开发新的软件渗透方法,从而为针对已知攻击的防护留下了改进的空间。软件黑客可被用于获取数据和/或破坏被黑客攻击的系统的运行。此外,我们的数据可能容易受到侧通道攻击(side-channel attack),其中,攻击者测量响应于不同输入数据的算法的行为差异。
附图说明
4.图1是用于基于云的服务的包括具有隔离加密的电子电路的示例系统的框图。
5.图2是示出包括具有隔离加密的电子电路的示例服务器的框图。
6.图3是加法器的包括数据和数据标识符的处理在内的示例过程的流程图。
7.图4是用于配置具有隔离加密的电子电路的示例过程的流程图。
8.图5是用于对具有隔离加密的电子电路内的数据执行操作的示例过程的流程图。
9.图6是用于验证对数据执行的操作序列的示例过程的流程图。
具体实施方式
10.本文中公开了一种用于处理电子电路内的数据的系统,该系统仅利用硬件来对秘密数据进行操作,并且电子电路与其他设备的接口不允许访问未加密的秘密数据或数据密钥。电子电路不使用或包括任何软件,并因此不易受到软件黑客攻击。此外,对电子电路内的秘密数据执行的操作具有独立于它们正在处理的秘密的延迟,不使用针对秘密数据的共享存储器资源,并且以独立于控制的方式做出决策,以保护秘密数据免受侧通道攻击。如本文中所使用的,延迟是执行操作所需的时间量。在示例中,系统还可以包括数据标识符,数据标识符允许对来自对秘密数据执行的操作序列的结果的完整性和真实性进行确认。以这种方式,用户可以在硬件中对加密的秘密数据执行操作序列,而无需公开未加密形式的秘密数据。
11.本文公开的系统包括对加密数据执行操作的电子电路。所述电子电路包括电子电路元件,其电耦接以:接收包括第一数据标识符的加密的第一秘密数据块;解密所述加密的第一秘密数据块;组合所述数据标识符和要执行的操作的操作标识符以生成中间值;对所述中间值应用单向散列函数生成第二数据标识;以及加密第二数据标识符用于输出。
12.在该系统中,加密的第一秘密数据块还可以包括第一秘密数据。所述电子电路可
以进一步电耦接以:对加密的第一秘密数据块进行解密后,对第一秘密数据执行操作以生成第二秘密数据;将第二秘密数据与第二数据标识符一起加密以生成加密的第二秘密数据块;以及输出所述加密的第二秘密数据块。
13.在该系统中,第一秘密数据可以是来自向要执行的操作提供秘密数据的用户的秘密源数据;并且第一数据标识符可以是来自向要执行的操作提供秘密数据的用户的秘密源数据标识符。
14.在该系统中,在操作序列中,加密的第一秘密数据块可以是来自电子电路的先前操作的加密的第二秘密数据块。
15.在所述系统中,所述电子电路可以进一步电耦接以:接收一个或多个附加的加密的第一秘密数据块,每个附加加密的第一秘密数据块包括相应的附加第一秘密数据和相应的附加第一数据标识符;通过进一步基于所述一个或多个相应的附加第一秘密数据执行所述操作来生成第二秘密数据;以及进一步基于每个相应的附加第一数据标识符生成第二数据标识符。
16.在所述系统中,所述电子电路可以进一步电耦接以:接收一个或多个非秘密数据;通过进一步基于所述一个或多个非秘密数据的操作的执行来生成第二秘密数据;并且进一步基于所述一个或多个非秘密数据生成第二数据标识符。
17.在所述系统中,所述电子电路可以进一步电耦接以:从操作序列中的先前操作接收来自所述操作的第二数据标识符;解密来自所述操作的第二数据标识符;将来自所述操作的解密的第二数据标识符与来自所述操作的解密的预期第二数据标识符进行比较;以及当所述解密的第二数据标识符与来自所述操作的所述解密的预期第二数据标识符匹配时,输出来自所述操作的所述解密的第二秘密数据。
18.在该系统中,电子电路可以接收加密的预期第二数据标识符作为来自用户的输入。
19.在该系统中,可以基于将由电子电路执行的预期序列操作来确定加密的预期第二数据标识符。
20.在所述系统中,所述加密的第一秘密数据块可以包括布尔第一秘密数据值,并且所述电子电路可以进一步电耦接以:接收true_val,其中true_val是包括秘密真值和与该真值相关联的第一计算数据标识符的第一秘密数据块;接收false_val,其中false_val是包括秘密假值和与该假值相关联的第一计算标识符的第一秘密数据块;执行具有语义的条件移动操作:“results=encrypt(decrypt(input boolean value)?decrypt(true_val):decrypt(false_val))”以及基于用于条件移动操作的标识符、与布尔第一秘密值相关联的第一计算数据标识符、与true_val相关联的第一计算数据标识符、以及与false_val相关联的第一计算数据标识符,来生成第二数据标识符。
21.在所述系统中,所述电子电路可以进一步电耦接以:针对操作序列,基于操作的操作数和操作的标识符为每个操作计算加密的第二秘密数据块;其中所述操作数可以是所述第一秘密数据和非秘密数据;以及向用户提供操作序列的最终操作的加密的第二秘密数据块;其中:对于初始操作的加密的第一秘密数据包括来自用户的加密的秘密源标识符;并且对于后续操作的每个加密的第一秘密数据是来自相应的先前操作的加密的第二秘密数据。
22.该系统可以进一步包括计算机,该计算机包括处理器和存储器,该存储器包括指
令,使得该处理器被编程为:从所述电子电路接收来自所述最终操作的加密的第二秘密数据块;从来自所述最终操作的加密的第二秘密数据块解密第二数据标识符;将来自所述最终操作的解密的第二数据标识符与来自所述最终操作的预期第二数据标识符进行比较;以及向用户输出所述比较的结果。
23.该系统可以进一步包括计算机,该计算机包括处理器和存储器,该存储器包括指令,使得该处理器被编程为:向所述电子电路发送所述加密的第一秘密数据块;向所述电子电路发送要执行的操作;接收来自所述电子电路的加密的第二秘密数据块;以及将加密的第二秘密数据块提供给用户或由用户操作的第二计算机。
24.在该系统中,加密的第一秘密数据块可以基于第一秘密数据值和第一数据标识符的第一元组的加密。
25.在该系统中,加密的第二秘密数据值可以基于第二秘密数据值和第二数据标识符的第二元组的加密。
26.在该系统中,加密可以基于高熵加密算法,其中对相同明文值的每次加密产生随机选择的不同加密值。
27.在该系统中,可以基于对称加密算法对第一加密的秘密数据块和第二加密的秘密数据块进行加密。
28.在该系统中,电子电路可以包括防止电子电路外部的计算设备访问包括数据密钥、第一秘密数据和第二秘密数据的未加密数据的接口。
29.在该系统中,电子电路可以进一步电耦接以输出第二秘密数据块。
30.本文公开的方法包括:由电子电路接收包括第一秘密数据和第一数据标识符的加密的第一秘密数据块;解密所述加密的第一秘密数据块;基于所述第一数据标识符和要执行的操作的操作标识符生成中间值;对所述中间值应用单向散列函数生成第二数据标识;执行对第一秘密数据要执行的操作以生成第二秘密数据;将所述第二数据标识符与所述第二秘密数据一起加密以生成第二秘密数据块;以及将所述第二秘密数据块输出到计算机。
31.图1示出了用于向用户提供对基于云的服务的访问,以通过具有隔离加密的电子电路130(电子电路130)对秘密数据执行操作的示例系统100。在非限制性示例中,电子电路130被包括在被配置用于云计算服务的服务器106中。其他配置也是可能的。例如,电子电路130可以被包括在诸如膝上型计算机、台式计算机、平板电脑、移动电话等的移动或个人计算设备中。电子电路130被电耦接为仅基于硬件和电耦接执行操作。在本文,“具有隔离加密”意味着电子电路130具有防止在电子电路130外部的计算设备访问未加密的秘密数据(即,任何秘密操作数或秘密计算结果)和未加密的数据密钥的接口。由电子电路130仅基于硬件和电耦接执行操作序列在本文中意味着基于电子电路内的电子元件的耦接来执行操作,而不使用存储在存储器中的程序代码。电子电路130上的任何操作都不作为计算机可读指令(即,软件)来执行。
32.如下文详细描述的,电子电路130包括专用于执行特定操作的多个子电路。每个子电路是被电耦接以执行相应的特定操作的一组电子电路元件。本文中的操作序列意味着被布置为顺序地执行的一个或多个操作,即一个接一个地执行,其中,操作中的每个对应于电子电路130被电耦接以执行的操作中的一者。
33.系统100包括经由网络104与服务器106通信的用户设备102。“通信”在本文中意味
着交换数字数据和命令。
34.用户设备102是向用户提供对网络通信、数据处理、电子商务等的访问的计算设备。用户设备102的非限制性示例包括移动电话、膝上型计算机、存储设备和平板计算设备。为了便于讨论,系统100将被描述为具有一个用户设备102。然而,系统100可以包括许多(例如,数百或数千)用户设备102。
35.用户设备102包括计算机110,计算机110包括处理器和存储器。计算机110被编程为与网络104通信。如下面更详细描述的,计算机110被编程为用服务器公共密钥加密用户数据密钥并且将加密的用户数据密钥发送给服务器106。计算机110还被编程为用用户的数据密钥加密秘密数据并且将加密的秘密数据发送给服务器106。计算机110还被编程为发送要通过服务器106对秘密数据执行的操作序列。
36.网络104表示用户设备102可以通过其与服务器106通信的一种或多种机制。因此,网络104可以是各种有线或无线通信机制中的一种或多种,包括有线(例如,线缆和光纤)和/或无线(例如,蜂窝、无线、卫星、微波和射频)通信机制和任何期望的网络拓扑(或利用多种通信机制时的拓扑)的任何期望组合。示例性通信网络包括无线通信网络(例如,使用低功耗(ble)、ieee 802.11、诸如专用短程通信(dsrc)的车辆对车辆(v2v)、5g/lte等)、局域网(lan)和/或包括互联网的广域网(wan),从而提供数据通信服务。
37.服务器106可以是被编程为提供包括云计算服务的操作的计算设备。服务器106包括处理器122、存储器124和电子电路130。处理器122例如基于存储在存储器124中的指令被编程,用于经由网络104与用户设备102进行无线通信。处理器122还被编程为接收基于与私有密钥相关联的公共密钥而被加密的数据密钥,并且通过将加密的数据密钥发送给电子电路130来配置电子电路130。私有密钥包括在电子电路130中并且还可以与附加隔离加密设备的集群相关联,例如,在向用户提供对加密数据的计算的访问的组织的控制下。在示例中,隔离加密设备可以包括在一个或多个服务器106中,使得服务器106可以在同一秘密数据集上一起工作。私有密钥在电子电路130以及在其他隔离加密设备内受到保护,免于与相应电子电路或其他隔离加密设备进行任何类型的数字通信。处理器122还被编程为从用户设备102接收操作序列和秘密数据,其中,秘密数据基于数据密钥被加密。处理器122还被编程为通过顺序调用电子电路130来执行每个操作,从而对加密的秘密数据执行操作序列。
38.图2更详细地示出了服务器106。处理器122经由通信接口210与电子电路130通信地耦接。通信接口210提供过程122与电子电路130之间的数字通信并且可以是有线或无线通信系统和协议的任何配置。在非限制性示例中,通信接口210可以是单个通信总线,诸如axi或pci-e。通信接口的其他非限制性示例包括定制互连、usb端口或网络。此外,通信接口可以包括两个或更多个通信总线。如下所述,通信接口210与电子电路130交换加密数据和未加密数据。如下文更详细地描述,通过通信接口210交换的加密数据包括基于对称加密算法和非对称加密算法加密的数据。
39.作为配置过程的一部分,通信接口210将公共密钥基础设施(pki)加密的数据发送给电子电路130。基于pki的加密是利用公共密钥和私有密钥的非对称加密。作为非限制性示例,rsa(rivest-shamir-adleman)和diffie-hellman是使用公共密钥/私有密钥对的非对称加密的已知协议。在配置过程期间,并且如下面更详细描述的,处理器122利用通信接口总线210将用户数据密钥和可选地基于与服务器私有密钥相关联的公共密钥加密的签名
发送给电子电路130。
40.通信接口210还向电子电路130发送和接收高熵加密的秘密数据,其中加密的秘密数据基于高熵对称加密协议和用户数据密钥(在本文中也简称为“数据密钥”)。对称加密协议可以包括加密算法和解密算法,其特征在于其使用的加密密钥对于明文的加密和密文的解密二者都相同,或者对于明文的加密和密文的解密之间进行简单的变换。加密算法是对接收的明文执行操作序列以生成密文。类似地,解密算法是对密文执行操作序列,以生成明文。加密算法和解密算法二者的操作均基于包括在数据密钥中的参数。作为示例,数据密钥可以是aes对称密码算法的256位密钥。用于对称加密的数据密钥通常是128、256或更多位的数字值。如果需要在性能和强力加密强度之间进行权衡,则可以使用较大的数据密钥(更多的位)或更小的数据密钥(更少的位)。在示例中,对称加密协议可以包括高熵加密算法。在这种情况下,同一明文值的不同加密产生不同的加密值。已知的高熵协议的示例包括加盐加密,其中,要加密的值与大的n位真随机位序列组合,从而为每个加密的值呈现2n种不同的表示。加盐加密是将随机数据混合到加密中的加密,以破坏加密值与其关联密文之间的任何相关性。
41.通信接口210还以未加密的形式发送要通过电子电路130执行的操作或操作序列。
42.电子电路130包括被电耦接以执行操作的电子电路元件。在本文中所使用的电子电路元件是执行诸如传递电流、切换电流、切换电压、存储电荷、产生电压等电功能的组件,并且作为非限制性示例,包括:导体;绝缘体;晶体管,诸如双极晶体管、mos晶体管、cmos晶体管和其他可开关器件;二极管、电容器和电感器。如本文中所使用的,电耦接意味着被连接为使得电压水平可以被传输并且电流可以以通过耦接确定的方式在各个电子电路元件的节点之间流动。
43.为了便于理解,下面将电子电路130描述为包括以下电路块:pki解密块202,包括签名验证块204;私有密钥块206;数据密钥寄存器208;数据解密块220;功能块230,可选地包括多个操作单元232和指纹单元234;数据加密块240;以及,控制器250。这些电路块包含被耦接以执行相应块的功能的电子电路元件。这些块可以是分布式的,在某种意义上,用于相应块的电路元件可以分布在整个电子电路130中。不同的块还可以是互斥的,在某种意义上,各个块包括仅用于执行相应块的功能的专用电子组件,而不同块之间的组件没有重叠使用。电子电路130可以被组织为一个或多个同步机。本文中的同步状态机是一次只能处于单一状态的电子电路,并且与时钟同步地从状态前进到状态。在示例中,每个块可以单独地或共同地作为同步状态机操作。
44.电子电路130可以例如通过基于描述一组基本操作(例如,add、sub、mult、cmov)的指令组架构来描述电子电路130的操作或一组操作来设计,所述基本操作可以为诸如c++、python等编程语言提供秘密计算。电路操作可以例如用verilog作为硬件描述语言来设计,从而生成可以执行支持程序级秘密计算所需的秘密计算的硬件设计。然后,verilog工具可以实现一组电子电路元件的耦接,以执行操作或一组操作。在通过verilog实现电子电路元件的耦接之后,电路元件被“合成”以执行它们耦接的操作。即,它们被电耦接以执行该操作或该组操作。作为非限制性示例,电子电路130可以被实现为现场可编程门阵列(fpga)、定制集成电路、专用集成电路(asic)、可编程逻辑阵列(pla)或集成在基板上的电子电路中的一者或组合。
45.在示例中,包含未耦接或部分未耦接的电子电路元件的现场可编程门阵列(fpga)可以基于verilog程序的输出被电耦接以执行期望的操作或一组操作。在某些情况下,基于verilog程序生成的耦接可以是永久性的。在其他情况下,耦接可以是可擦除的,使得fpga可以重新用于其他应用。
46.作为另一示例,verilog工具的输出可以用于设计专用集成电路,然后根据标准半导体制造技术来制造该专用集成电路。
47.pki(公共密钥基础设施)解密块202从包括用户数据密钥和可选的数字签名的处理器122接收pki加密的配置数据。单独地,根据电子电路130的设计,pki解密块202从私有密钥块206接收与服务器106相关联的私有密钥的值作为输入。
48.pki解密块202对从处理器接收的配置数据进行解密,并且从配置数据中提取用户数据密钥和可选签名。用户数据密钥可以是例如由用户生成的随机数。本文中使用的签名是众所周知的值,电子电路130可以在解密之后查找该签名以确信所解密的消息是有效的。pki解密块202被电耦接以将用户数据密钥存储在数据密钥寄存器208中。pki解密块202还被电耦接以将签名提供给签名验证块204,如下所述,签名验证块204验证签名。pki解密块202还电耦接以基于用户数据密钥来加密消息并且将加密的消息发送给用户设备102。
49.pki解密块202接收已基于来自提供给用户的公共密钥的参数根据已知加密算法加密的配置数据。pki解密块202然后使用与加密算法相关联的已知解密算法并且还基于来自与公共密钥相关联的私有密钥的参数来解密。
50.可选地,pki解密块202可以包括签名验证块204。当可用时,签名验证块204可以验证接收到的签名。在示例中,签名验证块204将解密的签名与针对解密的签名的预期值进行比较。如果解密的签名与预期的解密的签名匹配,则签名验证块204确定接收到的消息(以及因此的数据密钥)是有效的。
51.私有密钥块206被电耦接以将针对电子电路130的私有密钥值提供给pki解密块202。在示例中,私有密钥块206可以是一组连接,每个连接用于将私有密钥的每个位连接到第一高电势或第二低电势,第一高电势通常可以是电子电路130的电源电压,第二低电势通常可以是电子电路130的接地(ov)电势。可以将连接作为控制pki解密块202的操作的输入数据提供给pki解密块202。作为示例,对于包括2048位的私有密钥,私有密钥块206可以向pki解密块202提供2048个连接,其中,每个连接被连接到第一高电势或第二低电势。
52.数据密钥寄存器208是被电耦接以存储解密的用户数据密钥的数字数据存储电路,并且可以被布置为存储与用于对称加密的数据密钥所需一样多的位,例如128或256位。数据密钥寄存器208在为用户配置电子电路130期间从pki解密块202接收用户数据密钥。数据密钥寄存器208将用户数据密钥的值提供给包括数据解密块220和数据加密块240的电子电路130内的其他电路块。
53.数据解密块220被电耦接以经由例如第二通信总线212接收加密的秘密数据块。加密的秘密数据块包括秘密数据并且还可以包括与秘密数据相关联的数据标识符。本文中的数据标识符是与秘密数据相关联的唯一数字值,唯一数字值可以用于确认秘密数据的后代。数据标识符反映已执行为生成秘密数据但独立于与其配对的秘密数据的值的操作。数据标识符在本文中也可以被称为计算指纹。
54.当接收到加密的秘密数据块时,数据解密块220还被电耦接以解密加密的秘密数
据块并且将(解密的)秘密数据提供给功能块230。如上所述,数据解密块220可以执行与已知加密协议相关联的解密算法,其中,解密算法的操作部分地基于包括在数据密钥中的参数。当数据标识符包括在秘密数据块中时,数据解密块220还将与秘密数据相关联的(解密的)数据标识符提供给功能块230。
55.功能块230被电耦接以对一个或多个第一秘密数据执行从一组可用操作中选择的操作并且生成第二秘密数据。功能块230可以被组织为包括用于对秘密数据执行相应操作的一个或多个操作单元232,并且还包括用于计算与秘密数据相关联的数据标识符的指纹单元234。除非另有说明,否则术语第一秘密数据在本文中将用于描述作为操作的操作数输入到功能块230的秘密数据,并且术语第二秘密数据在本文中将用于描述用于操作的从功能块230输出的秘密数据。每个操作可以具有一个或多个第一(输入)秘密数据和一个或多个第二(输出)第二数据。在某些情况下,例如,当操作包括隔离加速器时,可能存在许多(数十、数百或更多)第一秘密数据。第一数据标识符和第二数据标识符是分别与第一秘密数据和第二秘密数据相关联的数据标识符。在操作序列中,来自操作的第二秘密数据和第二数据标识符可以是(并且通常是)用于该序列中的后续操作的第一秘密数据和第一数据标识符。
56.功能块230可以包括一个或多个操作单元232,其中每个操作单元232是被电耦接以执行操作的单独的、专用的一组电子组件,并且进一步地,其中每组电子组件是互斥的。也就是说,例如,第一组电子组件add_enc 232可以被电耦接以执行加法操作,第二组电子组件mul_enc 232可以被电耦接以执行乘法操作等。
57.可用操作可以是诸如加法、减法等数学操作,并且作为非限制性示例,还可以包括诸如布尔操作、条件移动和数据授权等操作。下面描述允许将选择的解密的秘密数据输出给用户的数据授权的操作。功能块230被电耦接以以独立于其正在操作的第一秘密数据并且还独立于由该操作生成的第二秘密数据的延迟来执行每个操作。此外,为了保护秘密数据的机密性,因为声明的故障情况可以提供与秘密数据相关的信息,所以操作不能公开声明已发生故障。作为备选,在操作产生不确定的、未定义的或无效的结果的情况下,通过操作输出的第二秘密数据(作为加密数据)可以包括错误代码,以便通知用户错误。下面讨论可以通过功能块230执行的示例操作。
58.要执行的操作基于经由第二通信总线212从处理器122接收的操作标识符从一组可用操作中选择。例如,功能块230可以接收标识可用操作中的哪一个应该对来自处理器122的第一秘密数据执行操作的操作标识符。
59.作为非限制性示例,类似risc的操作组可以通过功能块230来实现。表1列出电子电路130内的处理器122与功能块230之间的示例接口。
60.61.表1:功能块230的示例操作
62.另外或备选地,更复杂的算法功能可以例如以硬件加速器的形式包括在功能块230中。
63.在示例中,add_enc命令与两个加密的秘密值一起发送给电子电路130,然后将这两个加密的秘密值解密、相加在一起,然后将结果加密并且返回到处理器122。sub_enc、mul_enc和div_enc分别对减法、乘法和除法执行类似的操作。
64.为了提供针对侧通道攻击的保护,操作可以被设计为遵守两个约束:(1)操作以独立于秘密数据的延迟来执行,以及(2)操作不能公开声明故障情况。这些条件可以通过考虑div_enc操作来理解。
65.如上所述,操作单元div_enc可以被设计为以独立于其操作的秘密数据的延迟来执行除法操作。然而,在div_enc操作的情况下,也有可能将值除以零,从而导致故障情况。为了防止公开声明故障情况,可以执行div_enc命令,使得在独立于该操作所操作的秘密数据并且还独立于故障情况的发生的固定时间量之后,故障指示符可以被嵌入到该操作的加密输出中并且由该操作输出。故障指示符可以传播到操作序列的任何后续结果,使得用户(或解密最终值的任何人)可以知道操作序列中的操作受到诸如除以零的计算故障的影响。下面提供了其他命令及其在操作序列中的实现的示例。
66.在提供与第一秘密数据相关联的第一数据标识符的情况下,指纹单元234中的功能块230计算与第二秘密数据相关联的第二数据标识符。第二数据标识符可以用于验证第二秘密数据已经被预期的操作序列处理。如下文更详细描述的,计算第二数据标识符包括将用于操作的一个或多个第一数据标识符与用于该操作的操作标识符以及用于该操作的任何非秘密输入数据连接在一起,以创建数据进行散列的步骤,然后对要散列的数据执行散列函数。
67.一旦完成操作,功能块230被电耦接以将第二秘密数据以及第二数据标识符(当可用时)输出到数据解密块240。
68.数据加密块240被电耦接以通过加密第二秘密数据以及第二数据标识符(当可用时)来生成第二加密的秘密数据块。数据加密块240可以基于通过用户数据密钥参数化的已知加密算法来执行加密。加密算法可以是如上面参考块220所描述的应用于秘密数据的解密算法的对应物。在生成第二加密数据块时,数据加密块240可以将第二加密数据块输出到控制器250,控制器250可以例如将第二加密数据块引导到第二通信总线212。
69.控制器250控制通信接口210上的数据流,并且还基于从处理器220接收到的操作来控制电子电路130的操作。也就是说,控制器250可以接收要通过电子电路130执行的操作的操作标识符以及来自处理器122的用于操作的输入数据。输入数据可以包括非秘密数据和/或秘密数据。基于该操作,控制器250可以引导数据解密块220解密秘密数据并且将秘密数据提供给功能块230。控制器还可以将非秘密数据引导到功能块230。控制器250还可以将操作标识符引导到功能块230,以选择要执行的操作并执行该操作。在功能块230执行操作之后,控制器250可以从数据加密块240接收第二加密秘密数据块并且将第二秘密数据块引导到处理器122。
70.如上所述,除了算术操作之外,为了支持更复杂的计算,电子电路130还可以支持谓词的计算、布尔表达式和条件移动。
71.作为布尔操作的示例,电子电路130可以包括比较两个加密值以产生加密谓词值(例如加密的真或假)的操作。布尔操作通常在软件中使用,以经由指令级别的条件分支做出控制决策。然而,为了保护秘密数据的机密性,程序分支和跳转不能受到秘密数据的影响。允许程序分支和跳转受到秘密数据的影响将提供控制侧通道,以通过检查程序的执行序列来发现秘密值。
72.如可以在电子电路130中提供的,cmov原语是一种以控制独立的方式做出程序决策的机制,使得可以由程序做出决策,同时保护秘密数据不被分析/发现,否则通过检查程序执行将是可能的。
73.cmov原语具有以下格式:
74.cmov_enc pred,true_val,false_val
75.具有以下语义:
76.result=encrypt(decrypt(pred)?decrypt(true_val):
77.decrypt(false_val))
78.其中,pred是布尔第一秘密数据值,true_val是加密的真值(即,表示真条件),并且false_val是加密的假值(即,表示假条件)。
79.即,cmov原语:
80.a.接收作为操作数的谓词(pred,第一加密秘密数据值)、加密的真值(true_val)和加密的假值(false_val);
81.b.解密谓词、真值和假值;
82.c.如果谓词等于真值,则将结果设置为等于真值;
83.d.如果谓词等于假值,则将结果设置为等于假值;
84.e.加密结果;和
85.f.将加密结果输出为第二秘密数据值。
86.决策安全性通过使操作序列执行与谓词的“真”和“假”条件相关联的代码序列来实现。然后,使用cmov原语,可以在功能块230中评估加密的布尔值,并且可以选择适当的真或假结果值作为cmov操作的结果。由于结果将通过应用高熵加密的加密块240,因此任何潜在的攻击者都无法推断出做出了哪个决定,这是因为cmov的结果将不类似于其“真”或“假”输入值。因此,cmov原语使得电子电路130能够以秘密且安全的方式执行决策处理。
87.下面是可以对利用布尔表达式和包括在电子电路130中的cmov_enc操作的加密数据执行的以c++编写的操作序列的示例。
[0088][0089][0090]
在该示例中,meso*变量和函数都是电子电路130特定对象。另外,编译器经由c++操作符重载或类似的方法将对meso*变量的计算引导至电子电路130。在加密字符串搜索中,主循环迭代所有字符串字符,而不知道字符串的长度。在循环的每个步骤,不匹配谓词会确定正在搜索的字符串是否与当前搜索字符串字符匹配。该测试的结果是精确的,但是因为字符串、搜索字符串和比较谓词都已加密,所以程序员不知道。端点谓词根据字符串的结尾或根据搜索字符串的结尾,确定当前字符比较是否是最后执行的。一旦计算出循环谓词,循环语句就会1)如果搜索完成,计算比较的意义(大于、小于、等于),2)发出不匹配信号,或3)继续比较。一旦确定了解决方案,软件(在处理器122中操作)不知道该解决方案,因此即使在可能找到搜索解决方案之后,软件也继续处理循环,直到已经访问了所有可能的搜索位置。
[0091]
可选地,电子电路130可以被增强为也验证计算的完整性。该安全措施确保先前提交给服务器106以供电子电路130执行的操作序列随后不会被例如攻击者改变。在示例中,电子电路130还可以包括电耦接到处理数据标识符的指纹单元234。本文中的数据标识符是与秘密数据相关联的唯一数字值,其可以用于确认秘密数据的后代。在示例中,与来自用户
的秘密数据相关联的数据标识符可以是由用户选择的唯一编号。由用户输入的秘密数据在本文中可以被称为秘密源数据,并且由用户输入的且与秘密源数据相关联的数据标识符可以被称为秘密源数据标识符。对于在电子电路130内执行的操作,可以计算与来自该操作的输出秘密数据相关联的后续数据标识符。这些后续数据标识符可以被计算为与操作的输入秘密数据、该操作的操作标识符和该操作的非秘密输入数据相关联的数据标识符的单向散列函数。以下是确定操作序列encvali中第i个操作的数据标识符的示例。
[0092]
对于操作序列中第i个操作的加密秘密数据块,encvali是元组《cfi,vali》的加密值,其中,cfi是第i个结果的数据标识符,vali是操作结果i的值的实际值(即整数或浮点值等)。encvali元组在数据密钥下加密:
[0093]
encvali=encrypt(《cfi,vali》)。
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
式1
[0094]
然后,要由电子电路130执行以下操作:
[0095]
se
op encval
x
,encvaly,immz[0096]
其中,se
op
是要由电子电路130执行的操作的标识符,encval
x
是来自先前操作x的加密结果,encvaly是来自先前操作y的加密结果,并且immz是也在该操作中使用的直接非秘密值,操作i的第二数据标识符cfi可以计算为:
[0097]
cfi=one-way-hash(《se
op
,cf
x
,cfy,immz》)
ꢀꢀꢀꢀꢀꢀꢀꢀ
式2
[0098]
one-way-hash()可以是适当的加密单向散列函数(例如,sha-1)。上面的式子是具有两个操作数encval
x
和encvaly的操作的数据标识符的示例计算。该方案可以有多种变化。例如,无论数量多少,所有操作数将必须合并到指纹散列中。而且,对于给定指令被散列的值的顺序并不重要,只要其对于由电子电路130执行的相应操作的每次执行是一致的即可。此外,如果使用多个即时值,则它们的所有信息都必须纳入到指纹计算中。
[0099]
作为示例,根据图3的流程图呈现了对秘密数据的“加法”操作,包括数据标识符的使用。在示例操作中,电子电路130接收第一加密秘密数据块
x 310和第一加密秘密数据块
x 320。第一加密秘密数据块
x 310包括加密数据标识符cf
x 312和第一加密秘密数据val
x 314。第一加密秘密数据块
y 320包括第一加密数据标识符cf
y 322和第一加密秘密数据val
y 324。
[0100]
电子电路130然后在解密块220中对第一加密秘密数据块
x 310和第一秘密加密数据块
y 320进行解密,以分别生成第一秘密数据块
x 330和第一秘密数据块
y 340。第一秘密数据块
x 330包括解密形式的第一数据标识符cf
x 332和第一秘密数据val
x 334。第一秘密数据块
y 340包括解密形式的第一数据标识符cf
y 342和第一秘密数据val
y 344。
[0101]
接下来,功能块230在指纹单元234中计算第二数据标识符cf
i 352。为此,指纹单元234将第一数据标识符cf
x 332和第一数据标识符cf
y 342连接起来,以生成数据,然后对要散列的数据应用单向散列函数,以生成第二数据标识符cf
i 352。注意的是,第二数据标识符cf
i 352的计算独立于第一秘密数据val
x 334的值以及第一秘密数据val
y 344。
[0102]
功能块230还在加法单元232中执行加法功能。即,加法单元232将第一秘密数据val
x 334和第一秘密数据val
y 344的值相加,以生成第二秘密数据val
i 354。
[0103]
功能块230然后形成第二数据标识符cf
i 352和第二秘密数据val
i 354的元组,以生成第二秘密数据块
i 350。加密块240然后加密第二秘密数据块
i 350,以生成加密的第二秘密数据块
i 360,加密的第二秘密数据块
i 360包括加密的第二数据标识符cf
i 362和加密
的第二秘密数据val
i 364。
[0104]
数据标识符的重要特征是数据标识符的值独立于与它们配对的秘密数据。为了防止数据标识符被对秘密数据的决策所改变,数据标识符可以与cmov操作结合使用。cmov原语以独立于控制的方式做出程序决策。也就是说,其实现的决策对正在运行的计算没有影响。该相同原语还停止控制侧通道的创建,这对于电子电路130的整体安全性很重要。
[0105]
如上所述,cmov操作具有以下格式:
[0106]
cmov_enc pred,true_val,false_val
[0107]
具有以下语义:
[0108]
result=encrypt(decrypt(pred)?decrypt(true_val):
[0109]
decrypt(false_val))
[0110]
其中,pred是布尔第一秘密数据值,true_val是加密的真值(即,表示真条件),并且false_val是加密的假值(即,表示假条件)。
[0111]
因此,任何秘密计算将必须计算真条件和假条件的结果,这将导致该操作的指纹(其包括cmov、cf
pred
、cf
true_val
和cf
false_val
)独立于cmov原语做出的任何决定。出于安全原因,重要的是true_val和false_val被解密,然后用包括在电子电路130中的高熵密码重新加密。否则,攻击者可以通过简单地查看两个源值中的哪一个被传递给结果来轻易地发现pred的布尔值。使用高熵密码,从攻击者的角度来看,所有结果是纯粹随机的。
[0112]
隐私保护计算提供了传统非私有计算模型(例如,通用计算)所不可用的数据标识符的基础设施。首先,因为这些值对于程序或程序员来说是不可见的,所以隐私增强的计算环境可以防止秘密数据值影响程序的控制流。此外,通过将数据标识符嵌入到加密的数据值中,除非破坏密码学,否则攻击者无法知道这些值或操纵它们。此外,通过将数据标识符和秘密值封装在同一加密数据包中,如果密文被操纵,则数据标识符和秘密值同时被破坏。
[0113]
数据授权是可以由电子电路130执行的操作的另一示例,其包括数据标识符的计算。数据授权利用数据标识符从对秘密数据的操作序列中安全地释放隐私保护秘密。在数据授权操作中,通过数据所有者的许可,可以释放操作序列中产生的特定值。在示例中,与数据授权相关的信息由数据所有者准备并加密。这可以防止数据所有者以外的人为特定算法提供数据授权。此外,通过程序更新或恶意黑客对算法进行的更改将使为该算法授权的数据无效。因此,数据授权(即加密秘密数据的释放)仅在数据标识符没有被破坏的情况下才起作用——这个属性是必需的,否则,攻击者可能会滥用数据授权来释放其他秘密信息。以下是数据授权操作的描述。
[0114]
操作i的结果的数据授权由以下信息组成:
[0115]
dgi=encrypt(cfi)
[0116]
电子电路130支持用于数据授权的附加指令:
[0117]
se
datagrant dgi,encvali[0118]
具有语义:
[0119]
if(decrypt(dgi)==decrypt(encvali).cfi)then result《=
[0120]
decrypt(encvali).val
i else#security-violation
[0121]
该操作将接收第i操作的加密预期的第二数据标识符dgi以及来自第i操作的第二秘密数据块encvali作为输入。该操作将使用数据密钥和加密的第二秘密数据块encvali的
指纹,来解密数据授权dgi,比较两个解密的数据标识符,如果它们匹配,则将encvali的解密值放入电子电路130的目的寄存器中。也就是说,在预期的第二数据标识符dgi等于实际第二数据标识符cfi的情况下,数据授权操作将以解密形式输出先前的秘密值encvali。这是允许的,因为两个值的等价表示两个重要条件:1)数据所有者允许解密和释放与dgi相关联的程序值,2)秘密计算已运行,直到同一程序点不受潜在黑客试图重新排序对秘密数据执行的操作的影响。注意的是,数据授权可以是任何值,包括非隐私保护值。因此,与程序开发者合作的数据所有者必须验证他们释放的数据授权的条件,以确保释放的信息确实是保护隐私的。
[0122]
在示例中,客户端可以运行数据标识符计算器来确定针对来自操作序列的操作的预期数据标识符。数据标识符计算器可以是例如从维护服务器106的组织提供给用户的程序。数据标识符计算器可以用于计算受到数据授权的数据值的预期数据标识符,并且还可以用于计算在操作序列结束时输出的数据的预期最终数据标识符。
[0123]
例如,用户设备102中的计算机110可以应用数据标识符计算器来生成操作序列的预期数据标识符cf
xpctd
。如上所述,可以根据下式计算用于要通过电子电路130执行的操作的数据标识符
[0124]
cfi=one-way-hash(《seop,cfx,cfy,immz》),
ꢀꢀꢀꢀꢀꢀ
式2
[0125]
其中,cfi是第i个操作的第二数据标识符,se
op
是第i个操作的操作标识符,cf
x
是来自先前操作
x
的第二数据标识符,cfy是来自先前操作的第二数据标识符y,immz是也在操作中使用的即时非秘密值。操作序列可以是导致数据授权操作的操作序列,或者直到并包括最终操作的整个操作序列。用户可以向数据标识符计算器提供操作序列以及向数据标识符计算器提供源数据标识符。然后,用户可以调用数据标识符计算器来计算预期的数据标识符cf
xpctd

[0126]
可以用投票机的示例来说明数据授权技术的使用。在该示例中,电子电路130可以以隐私保护的方式安全地公开关于选票是否与有效候选人匹配的信息。以下伪代码演示了此功能:
[0127][0128][0129]
在该示例中,dg变量datagrant是分配给加密布尔变量match的最终值的加密数据标识符。在投票算法结束时,如果匹配的候选人收到了选票,则matched为true;如果投票与任何有效候选人均不匹配,则matched为false。一旦该值被揭示,程序中的if语句就会评估解密的布尔dec_matched的值,如果没有选择有效的候选人,则会打印错误消息以通知候选人该情况。需要注意的是,如果datagrant密文以任何方式被破坏,则se
datagrant
操作将会失败。此外,如果秘密计算以任何方式发生更改,se
datagrant
操作也会失败。
[0130]
数据授权可以可选地通过第三方签名,以提供针对恶意代码木马的保护。这可以理解为护栏形式,其可以检测操作序列执行过程中的任何内容何时发生变化,从而提供防止供应链攻击的机制。在默认使用数据授权的情况下,开发者将标识操作序列的数据标识符,并且将这些数据标识符提供给数据所有者,然后数据所有者可以选择加密并且启用来自操作序列的选择值的释放。通过这种机制,开发者可以确保秘密计算免受运行操作序列的系统上各种形式的外部软件黑客攻击。数据标识符可以解决的另一威胁是恶意代码木马。恶意代码木马是流氓开发者秘密地将代码引入系统,以破坏计算或泄露敏感数据的地方。数据标识符可以通过利用数据授权的第三方签名来阻止恶意代码木马。开发者不是将数据授权直接提供给数据所有者,而是将数据授权提供给第三方,然后第三方将检查秘密计算代码,经由详细的代码检查来证明数据授权操作不是危险或恶意的,最后使用它们的
私有密钥(例如,使用rsa)对数据授权进行数字签名。然后,数据所有者可以通过使用证明实体的公共密钥对其进行解密来验证所证明的数据授权,然后加密该数据授权以用于验证秘密计算。使用这种证明方法,插入秘密计算中的任何恶意代码木马将破坏计算指纹,并且不允许数据授权继续进行。除了窃取证明实体的私有密钥之外,这种方法将防止秘密计算中的恶意代码木马。
[0131]
图4是用于通过安装用户数据密钥来为用户配置电子电路130的示例过程400的流程图。在过程400中,电子电路130接收基于公共密钥基础设施(pki)加密的用户数据密钥,存储用户数据密钥,验证与用户数据密钥的发送者相关联的数字签名,并且将消息返回给已根据用户数据密钥加密的用户。过程400开始于块402。
[0132]
在块402中,与电子电路130相关联的认证机构(例如维护服务器106并将其商业化的组织)向用户提供用于访问电子电路130的公共密钥。公共密钥与包括在电子电路130中的私有密钥相关联,使得通过使用公共密钥的加密算法加密的数据可以通过使用私有密钥的解密算法在电子电路130内解密。例如,组织可以根据用户的请求向潜在用户提供公共密钥。加密算法和解密算法可以是众所周知的并且是公开可用的,使得用户仅需要电子电路130的公共密钥来提供加密的数据。如上所述,rsa和diffie-hellman是用于非对称公共密钥/私有密钥加密的已知协议的示例。过程400在块404中继续。
[0133]
在块404中,如上所述,用户根据诸如rsa或diffie-hellman的公共密钥基础设施(pki)非对称加密协议使用公共密钥来加密电子电路130的配置数据。配置数据包括用户的数据密钥以及可选的签名。
[0134]
用户的数据密钥是可以被对称加密算法用于生成加密数据,并且还被解密算法用于解密数据的数字值。数据密钥可以是用户提供的随机数。在非限制性示例中,数据密钥可以是128位。根据系统所采用的加密和解密算法,还可以应用更小(更少的位)和更大(更多的位)的数据密钥。
[0135]
签名是可以通过电子电路130用于验证配置数据的数字值。在示例中,如上所述,签名可以是已知的数字值。签名值由例如维护服务器160的组织提供给用户,使得签名将与包括在电子电路130中的签名验证块204兼容。
[0136]
在对配置数据进行加密后,在块406中,用户将加密的数据发送给电子电路130。配置数据从用户设备102经由网络104发送给服务器106(图1)。在服务器106内,处理器122接收配置数据,然后将配置数据发送给电子电路130。作为备选,用户可以向服务器106提供对包括配置数据的数据存储的访问,并且服务器106可以检索配置数据。
[0137]
在块408中,电子电路130通过应用解密算法和私有密钥来解密配置数据。私有密钥可以是根据所选公共密钥基础设施(pki)加密协议与用户使用的公共密钥配对的数字值。当电子电路130解密配置数据时,过程在块410中继续。
[0138]
在块410中,电子电路130从配置数据中提取数据密钥并将数据密钥存储在数据密钥寄存器208中。过程在块412中继续。
[0139]
在块412中,可选地,在配置数据包括签名并且电子电路130包括签名验证块204的情况下,过程在块414中继续。否则,过程400结束。
[0140]
在块414中,例如在签名验证块204中的电子电路130验证包括在配置数据中的数字签名。在示例中,签名验证块204被电耦接以将从配置数据提取的签名与签名的预期值进
行比较。在包括在配置数据中的签名与预期的预期值匹配的情况下,电子电路130确定配置数据有效并在块416中继续。否则,过程400在块418中继续。
[0141]
在块416中,电子电路130准备好对秘密数据执行操作序列。过程400结束。
[0142]
在块418中,电子电路130的配置和电子电路将不能对秘密数据执行操作。过程400结束。
[0143]
图5是用于对电子电路130内的秘密数据执行操作的示例过程500的流程图。过程500开始于块502。
[0144]
在块502中,用户向服务器106中的处理器122提供加密的第一秘密数据块和要执行的操作序列。第一秘密数据块可以包括用户源秘密数据并且还可以包括用户源数据标识符。在示例中,用户源秘密数据和用户源数据标识符可以组合在元组中,并且可以基于对称加密协议和用户数据密钥来对元组进行加密。
[0145]
接下来,在块504中,电子电路130从处理器122接收标识要执行的操作的操作标识符。
[0146]
接下来,在块506中,电子电路130接收用于要执行的操作的输入数据,其中,输入数据可以包括非秘密数据并且还可以包括秘密数据,即,来自处理器122的一个或多个第一秘密数据块。过程500在块508中继续。
[0147]
在块508中,基于要执行的操作,电子电路130例如在数据解密块220中根据解密算法和用户数据密钥对第一秘密数据进行解密。在本文,解密算法必须与用于加密秘密数据的加密算法相对应。然后,数据解密块220将(解密的)秘密数据以及当适用时将数据标识符提供给电子电路130中的附加电路(例如,功能块230),以用于进一步处理。
[0148]
在块510中,电子电路130执行要对秘密数据执行的操作。例如,功能块230可以基于操作标识符来选择一组电耦接电路元件来执行操作。然后,电子电路130将秘密数据提供给所选择的一组电耦接电路元件,并且执行操作以生成第二秘密数据作为操作的输出。然后过程500在块512中继续。
[0149]
在块512中,在系统100电耦接到处理数据标识符的情况下,指纹单元234中的电子电路130如上所述计算第二数据标识符。指纹单元234通过将每个输入操作数的数据标识符连接到操作、输入到该操作的每个非秘密数据以及操作标识符来创建中间值。指纹单元234然后将单向散列应用于中间值,以生成用于操作的第二数据标识符。
[0150]
针对示例操作
[0151]
se
op encval
x
,encvaly,immz[0152]
其中se
op
是要由电子电路130执行的操作的标识符,encval
x
是来自先前操作x的加密结果,encvaly是来自先前操作y的加密结果,并且immz是也在操作中使用的直接非秘密值,操作i的第二数据标识符cfi可以计算为:
[0153]
cfi=one-way-hash(《se
op
,cf
x
,cfy,immz》)。
ꢀꢀꢀꢀ
式2
[0154]
当计算操作i的第二数据标识符cfi时,过程500在块514中继续。
[0155]
在块514中,在计算第二数据标识符之后,电子电路130基于块510中生成的第二秘密数据vali和块514中生成的第二数据标识符cfi来加密第二秘密数据块。例如,电子电路生成元组《cfi,vali》。然后,电子电路130对元组《cfi,vali》进行加密,以生成第二加密秘密数据块。过程500在块516中继续。
[0156]
在块516中,电子电路130将加密的第二秘密数据块输出到处理器122。
[0157]
当从电子电路130接收到加密的秘密数据块时,处理器122确定操作序列是否完成。在操作序列尚未完成的情况下,过程500在块504中继续,并且针对序列中的下一个操作重复块504至块516。在操作序列完成的情况下,过程500在块520中继续。
[0158]
在块520的情况下,处理器122将加密的第二秘密数据块发送给用户设备102。注意的是,在这种情况下,加密的第二秘密数据块是操作序列的最终操作的结果,因此也是加密的最终秘密数据块,包括来自操作序列的最终秘密数据和最终数据标识符。过程500结束。
[0159]
图6是用于通过将操作序列的预期最终数据标识符cf
ef
与实际最终数据标识符cff进行比较来验证对数据执行的操作序列的示例过程600的流程图。过程600开始于块602。
[0160]
在块602中,计算机(例如用户设备102中的计算机110)生成预期最终数据标识符cf
ef
。如上所述,计算机110可以包括数据标识符计算器,数据标识符计算器基于已知的操作序列和每个初始源秘密数据的初始源数据标识符cf
src
来计算预期数据标识符cf
xpctd
。操作序列中的最终操作的预期最终标识符cf
ef
则等于从数据标识符计算器输出的预期数据标识符cf
xpctd
。用户可以输入操作序列和初始源数据标识符cf
src
,并且运行数据标识符计算器来计算最终操作的cf
ef
。当计算出预期最终数据标识符cf
ef
时,过程600在块604中继续。
[0161]
在块604中,用户经由服务器106和电子电路130执行操作序列,如上面的过程500中所描述的。
[0162]
当完成操作序列的执行时,用户设备从服务器106接收最终数据标识符cff。过程600在块608中继续。
[0163]
在块608中,包括在用户设备102中的计算机110将预期最终数据标识符cf
ef
与最终数据标识符cff进行比较。在预期最终数据标识符cf
ef
不等于最终数据标识符cff的情况下,过程600在块610中继续。在预期最终数据标识符cf
ef
等于最终数据标识符cff的情况下,过程600在块612中继续。
[0164]
在块610中,计算机110确定在预期最终数据标识符cf
ef
或实际最终数据标识符cff的计算中发生了错误。计算机110可以向用户输出警告,指示由操作序列产生的秘密数据不是(或可能不是)有效的。过程600结束。
[0165]
在块612中,计算机110确定操作序列与预期操作序列匹配并且从操作序列产生的秘密数据是有效的。过程600结束。
[0166]
因此,公开了一种用于在电子电路内处理秘密数据的系统,该系统仅利用硬件来对秘密数据进行操作,并且电子电路与其他设备的接口不允许访问未加密的秘密数据或数据密钥。为了防止软件黑客攻击,电子电路不包含任何软件。对电子电路内的秘密数据执行的操作具有独立于秘密数据的延迟,不使用秘密数据的共享存储器资源,以独立于控制的方式做出决策,并且不声明故障情况以保护来自侧通道攻击的秘密数据。该系统还可以包括数据标识符,其允许对来自对秘密数据执行的操作序列的结果的完整性和真实性进行确认。
[0167]
除非本文中明确地做出相反的指示,否则权利要求中使用的所有术语意在给出本领域技术人员所理解的其简单且普通的含义。特别地,除非权利要求列举了相反的明确限制,诸如“一”、“该”、“所述”等单数冠词的使用应当被理解为列举一个或多个所指示的元素。
[0168]
本文中的术语“基于”是指全部或部分地基于。
[0169]
本文中在表示示例的意义上使用术语“示例性”,例如,对“示例性小部件”的引用应当被理解为简单地指代小部件的示例。
[0170]
在附图中,相同的附图标记表示相同的元件。此外,这些元素中的一些或全部可以改变。
[0171]
一般而言,所描述的计算系统和/或设备可以采用多种计算机操作系统中的任何一种,包括但决不限于microsoft 操作系统的版本和/或变体、unix操作系统(例如,由加利福尼亚州redwood shores的oracle corporation分发的操作系统)、由纽约armonk的international business machines分发的aix unix操作系统、由纽约州armonk分发的linux操作系统、mac osx和ios操作系统、加利福尼亚州库比蒂诺的苹果公司、加拿大滑铁卢的黑莓有限公司发行的黑莓操作系统以及谷歌公司和开放手机联盟开发的android操作系统。计算设备的示例包括但不限于诸如网关或终端的网络设备、计算机工作站、服务器、台式计算机、笔记本计算机、膝上型计算机或手持计算机、或一些其他计算系统和/或设备。
[0172]
计算设备通常包括计算机可执行指令,其中,该指令可以由一个或多个计算设备(诸如上面列出的那些)执行。计算机可执行指令可以从使用各种编程语言和/或包括但不限于单独或组合的java
tm
、c、c++、visual basic、java script、perl等技术创建的计算机程序编译或解释。应用程序中的一些可以在诸如java虚拟机、dalvik虚拟机等的虚拟机上编译和执行。一般而言,处理器(例如,微处理器)例如从存储器、计算机可读介质等接收指令,并且执行这些指令,从而执行一个或多个过程,包括本文中描述的过程中的一个或多个。这样的指令和其他数据可以使用各种计算机可读介质来存储和传输。
[0173]
计算机可读介质(也称为处理器可读介质)包括参与提供可由计算机(例如,由计算机的处理器)。这样的介质可以采用多种形式,包括但不限于非易失性介质和易失性介质。指令可以通过包括光纤、有线、无线通信在内的一种或多种传输介质来传输,包括包含耦接到计算机的处理器的系统总线的内部结构。计算机可读介质的常见形式包括例如ram、prom、eprom、flash-eeprom、任何其他存储器芯片或盒、或者计算机可以读取的任何其他介质。
[0174]
本文中描述的数据库、数据储存库或其他数据存储可以包括用于存储、访问和检索各种数据的各种机制,包括分层数据库、文件系统中的一组文件、专有格式的应用数据库、关系数据库管理系统(rdbms)等。每个这样的数据存储通常包括在采用诸如上述操作系统之一的计算机操作系统的计算设备内,并且经由网络以任何一个或多个方式访问。文件系统可以从计算机操作系统访问,并且可以包括以各种格式存储的文件。除了用于创建、存储、编辑和执行存储过程的语言(例如上面提到的pl/sql语言)之外,rdbms通常还采用结构化查询语言(sql)。
[0175]
在一些示例中,系统元件可以被实现为一个或多个计算设备(例如,服务器、个人计算机等)上的计算机可读指令(例如,软件),存储在与其相关联的计算机可读介质(例如,磁盘、存储器等)。计算机程序产品可以包括存储在计算机可读介质上的用于执行本文中描述的功能的指令。
[0176]
关于本文描述的过程、系统、方法、试探法等,应当理解,虽然这样的过程等的步骤
已经被描述为根据特定的有序序列发生,但是这样的过程可以以与本文中描述的顺序不同的顺序执行所描述的步骤来实践。还应当理解,某些步骤可以同时执行,可以添加其他步骤,或者可以省略本文描述的某些步骤。换句话说,本文中的过程的描述是为了说明某些实施例的目的而提供的,并且决不应被解释为限制权利要求。
[0177]
因此,应当理解,以上描述意在是说明性的而非限制性的。在阅读以上描述后,除了所提供的示例之外的许多实施例和应用将是显而易见的。应当不参考上述描述来确定范围,而是应当参考所附权利要求以及这些权利要求所享有的等同物的完整范围来确定范围。预期并意在本文中所讨论的技术将出现未来的发展,并且所公开的系统和方法将被并入这样的未来实施例中。总之,应当理解的是,该应用程序能够修改和变化。
[0178]
提供摘要是为了允许读者快速确定技术公开的性质。提交时应理解其不会用于解释或限制权利要求的范围或含义。另外,在前面的具体实施方式中,可以看出,为了简化本公开的目的,在各个实施例中将各种特征分组在一起。本公开的方法不应被解释为反映了所要求保护的实施例需要比每项权利要求中明确记载的特征更多的特征的意图。相比之下,如所附权利要求所反映的,发明主题在于少于单个公开的实施例的所有特征。因此,以下权利要求特此并入具体实施方式中,其中每个权利要求独立地作为单独要求保护的主题。

技术特征:
1.一种系统,包括:电子电路,所述电子电路对加密数据执行操作;其中所述电子电路包括电子电路元件,所述电子电路元件被电耦接以:接收包括第一数据标识符的加密的第一秘密数据块;解密所述加密的第一秘密数据块;将所述数据标识符和要被执行的操作的操作标识符进行组合,以生成中间值;对所述中间值应用单向散列函数,以生成第二数据标识符;以及加密所述第二数据标识符以用于输出。2.根据权利要求1所述的系统,其中:所述加密的第一秘密数据块还包括第一秘密数据;并且所述电子电路还被电耦接以:在所述加密的第一秘密数据块的解密后,执行要对所述第一秘密数据执行的所述操作,以生成第二秘密数据;将所述第二秘密数据与所述第二数据标识符一起加密,以生成加密的第二秘密数据块;以及输出所述加密的第二秘密数据块。3.根据权利要求2所述的系统,其中:所述第一秘密数据是来自向要被执行的所述操作提供秘密数据的用户的秘密源数据;并且所述第一数据标识符是来自向要被执行的所述操作提供所述秘密数据的所述用户的秘密源数据标识符。4.根据权利要求2所述的系统,其中,在操作序列中,所述加密的第一秘密数据块是来自所述电子电路的先前操作的所述加密的第二秘密数据块。5.根据权利要求2所述的系统,其中所述电子电路还被电耦接以:接收一个或多个附加加密的第一秘密数据块,每个附加加密的第一秘密数据块包括相应的附加第一秘密数据和相应的附加第一数据标识符;通过进一步基于所述一个或多个相应的附加第一秘密数据执行所述操作来生成所述第二秘密数据;以及进一步基于所述相应的附加第一数据标识符中的每一者来生成所述第二数据标识符。6.根据权利要求2所述的系统,其中所述电子电路还被电耦接以:接收一个或多个非秘密数据;通过进一步基于所述一个或多个非秘密数据执行所述操作来生成所述第二秘密数据;以及进一步基于所述一个或多个非秘密数据生成所述第二数据标识符。7.根据权利要求2所述的系统,其中所述电子电路还被电耦接以:从操作序列中的先前操作接收来自所述操作的所述第二数据标识符;从所述操作解密所述第二数据标识符;将来自所述操作的解密的所述第二数据标识符与来自所述操作的解密的预期第二数据标识符进行比较;以及当解密的所述第二数据标识符与来自所述操作的所述解密的预期第二数据标识符匹
配时,输出来自所述操作的解密的所述第二秘密数据。8.根据权利要求7所述的系统,其中所述电子电路接收所述加密的预期第二数据标识符作为来自用户的输入。9.根据权利要求7所述的系统,其中所述加密的预期第二数据标识符基于由所述电子电路要执行的预期操作序列而被确定。10.根据权利要求2所述的系统,其中所述加密的第一秘密数据块包括布尔第一秘密数据值,并且所述电子电路还被电耦接以:接收true_val,其中true_val是包括秘密真值和与所述真值相关联的第一计算数据标识符的第一秘密数据块;接收false_val,其中false_val是包括秘密假值和与所述假值相关联的第一计算标识符的第一秘密数据块;执行具有语义的条件移动操作:“results=encrypt(decrypt(input boolean value)?decrypt(true_val):decrypt(false_val))”以及基于用于所述条件移动操作的标识符、与所述布尔第一秘密值相关联的第一计算数据标识符、与所述true_val相关联的所述第一计算数据标识符、以及与所述false_val相关联的所述第一计算数据标识符,来生成所述第二数据标识符。11.根据权利要求2所述的系统,所述电子电路还被电耦接以:针对操作序列,基于针对所述操作的操作数和所述操作的标识符为每个操作计算加密的第二秘密数据块;其中所述操作数可以是第一秘密数据和非秘密数据;以及向用户提供所述操作序列的最终操作的所述加密的第二秘密数据块;其中:对于初始操作的所述加密的第一秘密数据包括来自用户的加密的秘密源标识符;并且对于后续操作的所述加密的第一秘密数据中的每一者是来自相应的先前操作的加密的第二秘密数据。12.根据权利要求11所述的系统,还包括计算机,所述计算机包括处理器和存储器,所述存储器包括指令,所述指令使得所述处理器被编程为:从所述电子电路接收来自所述最终操作的所述加密的第二秘密数据块;从来自所述最终操作的所述加密的第二秘密数据块解密所述第二数据标识符;将来自所述最终操作的所述解密的第二数据标识符与来自所述最终操作的预期的第二数据标识符进行比较;以及将所述比较的结果输出给用户。13.根据权利要求2所述的系统,还包括计算机,所述计算机包括处理器和存储器,所述存储器包括指令,所述指令使得所述处理器被编程为:将所述加密的第一秘密数据块发送到所述电子电路;将要被执行的所述操作发送到所述电子电路;从所述电子电路接收所述加密的第二秘密数据块;以及将所述加密的第二秘密数据块提供给用户或由所述用户操作的第二计算机。14.根据权利要求2所述的系统,其中所述加密的第一秘密数据块基于对所述第一秘密数据值和所述第一数据标识符的第一元组的加密。
15.根据权利要求2所述的系统,其中所述加密的第二秘密数据值基于对所述第二秘密数据值和所述第二数据标识符的第二元组的加密。16.根据权利要求1所述的系统,其中所述加密基于高熵加密算法,其中对相同明文值的每次加密产生随机选择的不同加密值。17.根据权利要求1所述的系统,其中所述第一加密的秘密数据块和所述第二加密的秘密数据块基于对称加密算法而被加密。18.根据权利要求1所述的系统,其中所述电子电路包括接口,所述接口防止通过在所述电子电路外部的计算设备访问包括所述数据密钥、所述第一秘密数据和所述第二秘密数据的未加密的数据。19.根据权利要求1所述的系统,其中所述电子电路还被电耦接以输出所述第二秘密数据块。20.一种方法,包括:由电子电路接收包括第一秘密数据和第一数据标识符的加密的第一秘密数据块;解密所述加密的第一秘密数据块;基于所述第一数据标识符和要被执行的操作的操作标识符来生成中间值;对所述中间值应用单向散列函数,以生成第二数据标识符;执行对所述第一秘密数据要被执行的所述操作,以生成第二秘密数据;将所述第二数据标识符与所述第二秘密数据一起加密,以生成第二秘密数据块;以及将所述第二秘密数据块输出到计算机。

技术总结
系统包括对加密数据执行操作的电子电路。该电子电路包括电子电路元件,该电子电路元件被电耦接以接收包括第一数据标识符的加密的第一秘密数据块,并且对加密的第一秘密数据块进行解密。该电子电路还包括电子电路元件,该电子电路元件被电耦接以对数据标识符和要被执行的操作的操作标识符进行组合以生成中间值;对中间值应用单向散列函数以生成第二数据标识;以及加密第二数据标识符以用于输出。以及加密第二数据标识符以用于输出。以及加密第二数据标识符以用于输出。


技术研发人员:T
受保护的技术使用者:阿吉塔实验室公司
技术研发日:2021.12.17
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐