具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
本说明书实施例涉及的可信执行环境(TEE)可以为软件提供安全的执行环境,TEE是基于 CPU 硬件的安全扩展,且与外部完全隔离的可信执行环境。TEE最早是由GlobalPlatform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作系统为应用程序提供可信安全的执行环境。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,比如软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的Intel SGX、ARM Trustzone(信任区)和AMD PSP(Platform SecurityProcessor,平台安全处理器)等。
以Intel SGX(以下简称SGX)技术为例。可信计算节点可以基于SGX技术创建enclave(围圈或飞地),以作为用于执行区块链交易的TEE。其中,可信计算节点利用CPU中新增的处理器指令,在内存中可以分配一部分区域 EPC(Enclave Page Cache,围圈页面缓存或飞地页面缓存),以用于驻留上述的enclave。上述EPC对应的内存区域被CPU内部的内存加密引擎MEE(Memory Encryption Engine)加密,该内存区域中的内容(enclave中的代码和数据)只有在CPU内核中才能够被解密,且用于加解密的密钥只有在EPC启动时生成并存储在CPU中。可见,enclave的安全边界只包含其自身和CPU,无论是特权或非特权软件都无法访问enclave,即便是操作系统管理员和VMM(virtual machine monitor,虚拟机监视器;或称为,Hypervisor)也无法影响enclave中的代码和数据,因而具有极高的安全性,并且在上述安全性保障的前提下,CPU能够在enclave中对明文形式的区块链交易进行处理,具有极高的运算效率,从而兼顾了数据安全性和计算效率。
请参考图1,图1是本说明书根据一示例性实施例提供的一种应用场景图,在该应用场景中,可信计算节点上部署有可信执行环境,并且可信执行环境中的内存中运行有可信应用,该可信应用的程序部分用于执行本说明书抗侧信道攻击的数据处理的方案逻辑。可信应用的程序部分在被编译为机器码后会被CPU所接收,从而控制CPU进行各类操作,例如从内存空间中读取或写入数据,CPU在响应程序编译得到的机器码后,可以通过查询页表的方式将程序指令中需要访问的虚拟地址转化成内存空间上的物理地址,从而实现在对应的物理地址上的读取或者写入数据。以SGX为例,图1中的可信应用就相当于一个enclave,其运行在EPC上,由于数据部分已经被MEE加密,因此即使操作系统也无法访问获得可信应用中的明文信息,然而,虽然无法获得明文信息,但在攻击者掌握足够多的其他信息时,例如代码的基本框架、功能或者数据存储的数据结构时,也可以通过各类方式进行有效的攻击,侧信道攻击一般假设攻击者知道enclave 初始化时候的代码和数据,并且知道内存布局。内存布局包括虚拟地址,物理地址以及他们之间的映射关系。有些侧信道攻击假设攻击者知道enclave 的输入数据,并且可以反复触发enclave,进行多次观察记录。侧信道攻击还假设攻击者知道运行enclave 平台的硬件配置、特性和性能,比如CPU,TLB(TranslationLookaside Buffer,转译后备缓冲器),cache(高速缓冲存储器),DRAM,页表,中断以及异常等各种系统底层机制。
本说明书实施例涉及的侧信道攻击主要手段是通过TEE的攻击面获取数据,推导获得控制流和数据流信息,最终获取被可信应用中的代码和数据的信息,比如加密密钥,隐私数据等等。例如比较典型的SGX 侧信道攻击就是基于页表的攻击,这类利用页表对enclave 页面的访问控制权,设置enclave 页面为不可访问。这个时候任何访问都会触发缺页异常,从而能够区分enclave 访问了哪些页面。按照时间顺序把这些信息组合,就能够反推出enclave 的某些状态和保护的数据。又例如,cache侧信道攻击是基于cache 的侧信道攻击可以进行细粒度的监控。最小粒度可以做到一个cache line,即64 个字节。由于粒度更小,基于cache 的侧信道可以比基于页表的侧信道获得更多的信息。
虽然在TEE中的内存在存储数据时经过加密处理且可信应用以外的程序无法读取可信应用中的数据部分,但外部攻击者在完全控制操作系统的情况下,可以通过页表或者cache获知哪些内存空间被访问,那么假如攻击者可以获取被访问的内存空间中所包含数据的取值范围,就有可能利用页表或者cache对应的攻击方式获知TEE中的可信应用访问了哪些内存空间,进而推理出其访问的数据的取值范围。在本说明书实施例中,可信应用中运行有生成第一数据集合与第二数据集合对应的数据处理结果的程序逻辑,那么在攻击者知晓可信应用中的服务核心逻辑的情况下,就很可能通过CPU访问有哪些内存空间,从而推导出第一数据集合、第二数据集合或数据处理结果的一些相关信息,破坏了TEE的内部数据的机密性。
图2是本说明书根据一示例性实施例示出的一种抗侧信道攻击的数据处理方法的流程图,所述方法应用于图1所示的部署有可信执行环境的可信计算节点,包括:
S202:将获取的第一数据集合密文与第二数据集合密文传入所述可信执行环境。
本说明书实施例中,可信计算节点获取的第一数据集合密文与第二数据集合密文可以被包含于调用方发送的数据处理请求中,可信计算节点在接收该数据处理请求后,获取其中包含的第一数据集合密文与第二数据集合密文,所述第一数据集合密文和第二数据集合密文均是通过可信计算节点对应的公钥或者可信执行环境中维护的对称密钥加密得到,例如可以通过流式加密的形式加密得到,以使其传入所述可信执行环境中被其所维护的可信计算节点的私钥或者对称密钥解密得到第一数据集合和第二数据集合。
本说明书实施例涉及的第一数据集合或第二数据集合为包含若干数据元素的数据文件,其数据元素可以包括任意形式或类型的数据,如字符串或数字等。
S204:在所述可信执行环境中,将第一数据集合密文解密得到的第一数据集合中包含的数据元素存入所述可信执行环境中的第一内存空间,将第二数据集合密文解密得到的第二数据集合中包含的数据元素存入所述可信执行环境中的第二内存空间。
在本说明书实施例中,可信计算节点部署的可信执行环境中运行有可信应用,其中用于执行本说明书实施例涉及的抗侧信道攻击的数据处理方案的程序部分运行在TEE中的内存空间中,而第一数据集合密文在TEE中通过TEE维护的对称密钥/非对称密钥进行解密得到第一数据集合后,会被以文件形式存储在所述可信应用的数据部分的第一内存空间中备用,同理,第二数据集合密文被解密后以文件形式存储在所述可信应用的数据部分的第二内存空间中备用,CPU在访问第一内存空间或第二内存空间时,需要首先在页表中查找对应的物理地址,然后才能进一步在第一内存空间或第二内存空间上读取数据。当然,第一数据集合或第二数据集合在被存入到对应的内存空间时,也可以采用哈希表或者哈希树的数据结构,或者key-value的数据结构,本申请对此并不作任何限制。
S206:在所述可信执行环境中,从第一内存空间与第二内存空间中的任一内存空间中逐次读取数据元素,将每次读取出的数据元素与从第一内存空间与第二内存空间中的另一内存空间中逐次读取出的每一个数据元素逐一进行比对,并根据比对结果生成第一数据集合与第二数据集合对应的数据处理结果。
在本说明书实施例中涉及到一个双层的循环结构,它能够使得任一内存空间中的每一个数据元素均能够与另一内存空间中的每一个数据元素进行比对,实现遍历式的数据访问和数据对比,这不仅体现在程序代码上,更重要的是直接体现在CPU的读取操作上,这意味着,即使程序代码包含双层的循环结构,但只要不涉及内存管理相关的操作,即不包含本说明书上述对第一内存空间和第二内存空间的逐次读取内存的过程,就不能视为本说明书所实际公开的上述内存管理的处理过程。
本说明书涉及的数据处理结果可以包括交集结果或并集结果,所述交集结果指的是第一数据集合与第二数据集合中共有数据元素所对应的集合,所述并集结果中既包含第一数据集合中所有的数据元素又包含第二数据集合中的所有数据元素。或者,本说明书涉及的数据处理结果也可以包括其他运算方式所得到的结果,本说明书并不对此进行限制,仅以交集或并集进行举例说明。
在一个典型的求交集或求并集的场景中,假设所述任一内存空间为第一内存空间,所述另一内存空间为第二内存空间,此时需要将第一数据集合与第二数据集合之间进行数据碰撞,从而确定第一数据集合中的任一数据元素是否包含在第二数据集合中。现有技术中,在从第一数据集合中取出任一数据元素与第二数据集合中的各数据元素进行比对的过程中,第二数据集合中的各数据元素是以哈希表或哈希树的数据结构存储在内存空间中,因此,现有技术中需要进行一次或两次内存访问的操作访问两个存储地址对应的数据便可以实现任一数据元素对应的比对过程,从而确定任一数据元素是否包含在第二数据集合中,即首先从第一数据集合所在的第一内存空间中读取出任一数据元素,然后计算该任一数据元素的哈希值,根据哈希表或哈希树找到该哈希值对应的第二数据集合在第二内存空间中对应存储地址,从该存储地址读取数据与该任一数据元素进行比较得到比较结果,因此只需要两次内存读取过程,并且,当该任一数据元素不存在于第二内存空间的情况下,由于该任一数据的哈希值在所述哈希表中或哈希树中不存在,因此只需要一次内存读取过程就能够实现任一数据元素对应的比对过程,并确定任一数据元素不包含在第二数据集合中。然而,对于知晓第二内存空间中各存储地址对应数据的取值范围的外部攻击者而言,由于CPU在访问第二内存空间时,仅访问一个存储地址,因此外部攻击者可以马上定位到该存储地址对应数据的取值访问,从而进一步获知额外的信息:①第一数据集合与第二数据集合中是否含有该存储地址对应的数据;②第一数据集合中的任一数据元素在所述第二内存空间上的存储地址及其取值范围。
而本说明书实施例则通过在从任一内存空间中读取出任一数据元素后,逐次读取另一内存空间中的各数据元素,使得外部攻击者即使获知另一内存空间中各存储地址对应数据的数据取值范围,也无法通过页表或者cache对应的攻击方式获取任何额外的信息,这是因为,对于任一内存空间中的任一数据元素而言,其需要进行N+1次(N为第二内存空间中数据元素的数量)内存访问的操作访问N+1个存储地址对应的数据才能实现所述任一数据元素对应的比对过程,确定任意数据元素是否包含在另一内存空间中,由于在任一数据元素对应的比对过程中另一内存空间被遍历式的读取而不是仅读取一个存储地址,因此外部攻击者将既无法知晓另一内存空间中是否包含有任一内存空间的数据元素,也不会确定该任一数据元素的准确位置,从而无法进一步缩小所述任一数据元素已知的取值范围。本说明书实施例这种通过双层循环的遍历式访问和对比,可以避免暴露比对过程中向外部攻击者透露任何额外的信息,有效防止外部攻击者的侧信道攻击。
可选的,根据比对结果生成第一数据集合与第二数据集合对应的数据处理结果,包括:
在任一数据元素对应的比对结果表明所述任一数据元素满足写入条件的情况下,将所述任一数据元素写入所述数据处理结果对应的内存空间;在任一数据元素对应的比对结果表明所述任一数据元素不满足写入条件的情况下,将预设数据写入所述数据处理结果对应的内存空间。可选的,所述写入条件包括:所述任一数据元素对应的至少一个比对结果为比对一致,此时本说明书的技术方案用于对第一数据集合与第二数据集合进行交集运算;或者,所述写入条件包括:任一数据元素对应的所有比对结果均为比对不一致,此时本说明书的技术方案用于对第一数据集合与第二数据集合进行并集运算。
在本说明书实施例中,外部攻击者可以通过页表或者cache对应的攻击方式获知哪些内存空间被写入了数据,而当外部攻击者能够实时监测本说明书所生成的数据处理结果所在的内存空间时,就能够通过数据处理结果在任意时刻的大小变化,反推此时写入的数据元素是作为数据处理结果这一额外的信息,当然数据处理结果的大小本身也属于机密性数据之一,在外部攻击者可以反复输入其中一个数据集合作为可信应用的输入的情况下,甚至可以推断出另一数据集合或数据处理结果,例如,在本说明书的技术方案用于对第一数据集合与第二数据集合进行并集运算的情况下,外部攻击者虽然不知晓第一数据集合中的内容,但可以控制第二数据集合中的内容,那么假设初次进行数据比对后得到的交集结果的大小为50个数据元素的大小,那么在第二次将第二数据集合中的一个数据元素进行删除后再将其与第一数据集合进行比对时,如果得到大小为49个数据元素的交集结果,那么外部攻击者就可以推理出删除的数据元素包含在原交集结果与第一数据集合中,同样的例子,如果第二次在第二数据集合中新增一个数据元素再将其与第一数据集合进行比对,如果得到大小为51个数据元素的交集结果,那么外部攻击者就可以推理出新增的数据元素包含在第一数据集合中。而本说明书实施例通过无论是否满足写入条件,均向数据处理结果写入数据的方式,只不过在不满足写入条件时写入无意义的数据,从而可以使得外部攻击者无法获知何时写入的是真正的数据处理结果,但作为知晓预设的无意义数据的授权方却可以将该数据处理结果中的无意义结果删去从而获得只包含满足写入条件时写入的数据元素,并且此时外部攻击者获取的数据处理结果的文件大小也是没有意义的,因为它没有体现真正满足写入条件的那些数据元素的数量,更无法根据数据处理结果的大小变化来反推作为输入的数据集合或数据处理结果中的内容。
可选的,将所述任一数据元素写入所述数据处理结果所使用的编程语句,与将所述预设数据写入所述数据处理结果所使用的编程语句为同一编程语句。在本说明书实施例中,由于无论是否满足写入条件均向数据处理结果中写入数据,因此完全可以取缔if-else的编程语句,采用数据置空、调整长度、与非操作等代替,例如,以数据处理结果为交集结果为例,所述同一编程语句如下:
(((uint64_t)(((int64_t)(((uint64_t)a) ^ ((uint64_t)b))) - 1)) >>(sizeof(a) * 8)) & (uint32_t)a;
解释如下:^表示异或操作,>>表示向右移位操作,sizeof(a)表示取a的字节大小,设a与b均为32位数据,a属于所述任一内存空间,b属于所述另一内存空间。
(uint64)a = 00...00 || a;// 高位增加了32位0,||表示连接符
如果a==b,那么(uint64)a ^ (uint64)b = 00..00||00..00,即低32位一定是00..00, 那么-1之后为 11..11||11..11,即需要向高32位借位,高32位变成11..11,向右移位出低32位的1,得到的64位数的低32位还是1,&(uint32_t)a之后就是a。
如果a!=b,那么(uint64)a ^ (uint64)b = 00..00||xx..xx,即低32位一定不是00..00, 那么-1之后为 00..00||yy..yy,即无需向高32位借位,高32位还是00..00,向右移位出低32位的0,得到的64位数的低32位是0,&(uint32_t)a之后还是0。
即当满足写入条件时将写入所述任一数据元素,而当不满足写入条件时写入的预设数据为0,此时只需保证第一数据集合与第二数据集合中的数据均不为0从而防止歧义即可。由于外部攻击者可能通过CPU内部对if-else语句执行时不同条件分支响应时间的区别从而反推出本申请数据处理代码逻辑对应的控制流程,这使得可信应用中程序部分的安全性大大降低,而本说明书实施例通过将if-else编程语句进行替换,从而取消了if-else对应的逻辑流程,使得外部攻击者无法通过CPU侧信道攻击来反推控制流程,从而保护程序部分的机密性。
可选的,还包括:
在所述写入条件包括所述任一数据元素对应的所有比对结果均为比对不一致的情况下,将从所述另一内存空间中读取出的所有数据元素写入所述数据处理结果对应的内存空间。在所述写入条件包括所述任一数据元素对应的所有比对结果均为比对不一致的情况,即在求第一数据集合与第二数据集合对应并集的情况下,假设从第一内存空间中逐次读取数据元素,将每次读取出的数据元素与从第二内存空间中逐次读取出的每一个数据元素逐一进行比对,若第一内存空间中的任一数据元素对应的所有比对结果均为比对不一致,则说明该任一数据元素并不包含于第二内存空间,是属于第一内存空间所独有的数据元素,此时将其写入第一数据集合与第二数据集合对应的并集集合,以此类推,在第一内存空间中的所有数据元素逐一与第二内存空间中的各数据元素比较完成后,第一数据集合与第二数据集合对应的并集结果中就必然包含有所有独属于第一数据集合而不属于第二数据集合的数据元素,而根据并集的定义可知,第一数据集合与第二数据集合对应的并集结果中应该包含独属于第一数据集合的数据元素以及第二数据集合中的数据元素,因此,可以将第一内存空间中的各数据元素均读取并完成对应的比对过程后,再向并集结果对应的内存空间中写入从第二内存空间中读取出的属于第二数据集合的所有数据元素,从而使得写入第二数据集合中所有数据元素后的并集结果能够真正用于表示第一数据集合与第二数据集合对应的并集。当然,在另一实施例中,也可以在将第一内存空间中的各数据元素均读取并完成对应的比对过程之前,先就在并集结果中写入第二数据集合中所有数据元素,或者在第一内存空间中的各数据元素均读取并完成对应的比对过程中,同时在并集结果中写入第二数据集合中所有数据元素,本说明书对此并不做任何限制。
可选的,所述任一内存空间为第一内存空间与第二内存空间中包含更多数据元素的内存空间。在本说明书实施例中,任一内存空间对应于所述双层循环结构中的外循环,另一内存空间对应于所述双层循环结构中的内循环,由于外循环的遍历次数为1,即任一内存空间中的数据元素均只需要访问一次,而内循环的遍历次数为任一内存空间中的数据元素的数量,因此在整个双层循环的数据读取比对过程中,作为内循环的另一内存空间中数据元素往往会比作为外循环的任一内存空间中的数据元素被更多次的访问,而这意味着,整个程序执行过程中,内循环过程对程序执行效率的影响要远大于外循环过程,由于访问内存空间中的数据元素需要首先查找页表,而在内存访问的过程中切换页表时需要耗费更多的时间,而数据元素越多的内存空间就需要更多的页表存储其虚拟地址到物理地址的对应关系,因此,在本说明书实施例中,可以通过将作为外循环的任一内存空间设置为第一内存空间与第二内存空间中包含更多数据元素的内存空间,而作为内循环的另一内存空间设置为第一内存空间与第二内存空间中包含更少数据元素的内存空间,使得主要影响执行程序执行效率的内循环每次都只需要切换更少的页表,从而改善整体的程序执行效率。
可选的,所述从所述任一内存空间中逐次读取数据元素,包括:按照预设顺序从所述任一内存空间中每次读取至少一个的数据元素,直至所述任一内存空间中的所有数据元素均被读取完成;所述从所述另一内存空间中逐次读取数据元素,包括:按照预设顺序从所述另一内存空间中每次读取至少一个数据元素,直至所述另一内存空间中的所有数据元素均被读取完成。在本说明书实施例中,在CPU从内存空间中读取数据元素时,可以一次仅读取一个数据元素,实现逐一比对的过程,例如,在所述任一内存空间为第一内存空间、所述另一内存空间为第二内存空间的情况下,从第一内存空间读取出第一数据集合中的数据元素a1,然后从第二内存空间中读取出第二数据集合中的数据元素b1,将a1和b1进行比对得到比对结果,根据比对结果决定是否将a1写入数据处理结果中,然后继续从第二内存空间中读取出第二数据集合中的数据元素b2,将a1和b2进行比对,以此类推,直至第二内存空间中不再存在所有数据元素均被读取完成,那么可以认为a1对应的比对过程结束,下面继续从第一内存空间按照顺序读取出a2,并重复进行遍历读取第二内存空间中的各个数据元素进行比对,从而完成a2对应的比对过程,接着继续从第一内存空间中读取数据元素,重复上述流程,直至第一内存空间中不存在其他数据元素。或者,可以通过特殊的指令集来控制每次读取一个或多个数据元素,例如从第一内存空间中一次性读取出a1和a2,而从第二内存空间中一次性读取出b1和b2,从而在根据比对指令进行数据比对时,可以一次性进行a1和b1、a1和b2、a2和a1、a2和b2共4次比对过程,并根据获得的4个比对结果决定是否将a1或a2写入数据处理结果,因此一方面加快了程序的处理效率,另一方面对于外部攻击者而言,由于同时获取的a1和a2之间无法区分,b1和b2之间也无法区分,因此即使攻击者在分别掌握b1对应内存空间的取值范围、以及b2对应内存空间的取值范围的情况下,也无法进一步推出具体时刻下的内存操作是针对哪一个数据元素,因而无法进一步缩减取值范围,从而起到降低单个数值元素被推导出的作用。
在另一实施例中,可以控制CPU从内存空间中读取数据元素时每次读取至少两个数据元素,但在比对指令执行时,却不依赖于特殊的指令集,而是仅做一次两个数据元素之间的数据比对。例如从第一内存空间中一次性读取出a1和a2,而从第二内存空间中一次性读取出b1和b2,但在根据比对指令进行数据比对时,只会进行a1和b1之间的比对过程,然后从第二内存空间中一次性读取出b2和b3,只进行a1和b2之间的比对过程,以此类推,在第二内存空间中的数据元素读取完成后,进一步从第一内存空间中读取a2和a3,然后继续只将a2作为比对数据,与从第二内存空间中遍历读取的各数据元素完成比对。从本说明书实施例中不难发现,虽然CPU从内存空间中一次性读取了多个数据元素,但每次只需比对指令时也只有两个数据元素之间进行比对,并且每次从同一内存空间中读取数据元素时,都会取出上一次从该内存空间中读取的重复的数据元素,因此,本说明书实施例并没有增加比对程序的运行效率,但也能做到混淆单个数据元素,对真正参与比对运算的数据元素起到一定的掩护作用。
可选的,在从所述任一内存空间或所述另一内存空间中每次读取至少两个的数据元素的情况下,使用SIMD指令进行比对运算。SIMD全称single instruction multipledata,指的是单指令流多数据流,也就是说一次运算指令可以执行多个数据流,这样在大多数情况下均可以提高运算速度,SEE(Streaming SIMD Extensions)作为一种SIMD指令集,有8个128位寄存器,XMM0~XMM7。这些128位的寄存器,可以用来存放4个32位的单精度浮点数,SEE浮点数的运算就是使用这些寄存器实现的,在本说明书实施例中,所述任一内存空间或所述另一内存空间中的数据元素均为32位,因此在SEE中,可以通过同时读取4个数据元素从而构成一个具有128位的数据,并将其存放入新的XMM中,从而给在后续进行比对运算时,可以使用SEE指令集中的算术指令实现,例如在所述任一内存空间每次读取4个数据元素并整合为SEE数据类型,那么在一条比对指令中可以实现4次数据元素之间的比对过程,又例如在所述任一内存空间与所述另一内存空间均每次读取至少4个元素数据的情况下,即可以在一条比对指令中至少实现16次数据元素之间的比对过程,从而高效地实现任一内存空间与另一内存空间中各数据元素逐一比对的过程,同时,由于一次性取出多个数据元素,因此对于外部攻击者看来,参与一次比对指令内部的多个数据元素之间变得无法区分,例如上述在一次性取出4个数据元素的情况下,那么这4个数据元素之间对于外部攻击者而言就是不可区分的,因此一定程度上做到混淆,降低单个数据元素被推导出的可能性。
可选的,还包括:在所述任一内存空间中包含的所有数据元素均被读取完成的情况下,将所述数据处理结果加密后传出所述可信执行环境,以提供至所述数据处理结果对应的需求方。在本说明书实施例中,可信计算节点是通过获取调用方发出的数据处理请求,从而获取的所述数据处理请求中包含的第一数据集合密文与第二数据集合密文,然后,在所述可信执行环境中生成所述数据处理结果后,可信计算节点进一步将所述数据处理结果传出可信执行环境并返回至根据所述调用方,此时调用方即为所述数据处理结果对应的需求方,本说明书涉及的调用方包括可信计算节点上的其他程序,这种情况下相当于调用方发起的是本地调用,或者,调用方还可以包括可信计算节点以外的其他程序,这种情况下相当于调用方发起的是网络调用。可信计算节点在接收到数据处理请求并获取数据处理结果后,可以不将所述数据处理结果返回所述调用方,而是将其提供至其他所述数据处理结果对应的需求方,例如所述数据处理请求中所指定的需求方的IP地址,那么可信计算程序将基于该IP地址将数据处理结果转发至所述指定的需求方,从而实现向所述调用方或指定的需求方提供抗侧信道攻击的数据处理服务。
可选的,所述可信计算节点为区块链节点,以及,在所述可信计算节点为区块链节点的情况下,所述区块链节点通过调用本地部署的智能合约实现所述抗侧信道攻击的数据处理方法。在本说明书实施例中,抗侧信道攻击的数据处理的相关执行逻辑将被封装于区块链节点上部署的智能合约中,使区块链节点在执行数据处理交易时,可以调用该智能合约实现所述抗侧信道攻击的数据处理方法,同时,作为输入的第一数据集合密文和第二数据集合密文,以及作为输出的数据处理结果也可以在所述数据处理交易执行完成后被写入相应收据的事件中,从而以收据形式被记录在区块上,实现对抗侧信道攻击的数据处理的相关流程和结果的共识存证。
与前述方法的实施例相对应,本说明书还提供了装置、电子设备以及存储介质的实施例。
图3是一示例性实施例提供的一种设备的示意结构图。请参考图3,在硬件层面,该设备包括处理器302、内部总线304、网络接口306、内存308以及非易失性存储器310,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器302从非易失性存储器310中读取对应的计算机程序到内存308中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
如图4所示,图4是本说明书根据一示例性实施例示出的一种抗侧信道攻击的数据处理装置的框图,该装置可以应用于如图3所示的设备中,以实现本说明书的技术方案,该装置应用于部署有可信执行环境的可信计算节点,包括:
获取单元401,用于将获取的第一数据集合密文与第二数据集合密文传入所述可信执行环境;
解密单元402,用于在所述可信执行环境中,将第一数据集合密文解密得到的第一数据集合中包含的数据元素存入所述可信执行环境中的第一内存空间,将第二数据集合密文解密得到的第二数据集合中包含的数据元素存入所述可信执行环境中的第二内存空间;
处理单元403,用于在所述可信执行环境中,从第一内存空间与第二内存空间中的任一内存空间中逐次读取数据元素,将每次读取出的数据元素与从第一内存空间与第二内存空间中的另一内存空间中逐次读取出的每一个数据元素逐一进行比对,并根据比对结果生成第一数据集合与第二数据集合对应的数据处理结果。
可选的,所述处理单元403具体用于:
在任一数据元素对应的比对结果表明所述任一数据元素满足写入条件的情况下,将所述任一数据元素写入所述数据处理结果对应的内存空间;
在任一数据元素对应的比对结果表明所述任一数据元素不满足写入条件的情况下,将预设数据写入所述数据处理结果对应的内存空间。
可选的,
所述写入条件包括:所述任一数据元素对应的至少一个比对结果为比对一致;或者,
所述写入条件包括:任一数据元素对应的所有比对结果均为比对不一致。
可选的,将所述任一数据元素写入所述数据处理结果所使用的编程语句,与将所述预设数据写入所述数据处理结果所使用的编程语句为同一编程语句。
可选的,还包括:
写入单元404,用于在所述写入条件包括所述任一数据元素对应的所有比对结果均为比对不一致的情况下,将从所述另一内存空间中读取出的所有数据元素写入所述数据处理结果对应的内存空间。
可选的,所述任一内存空间为第一内存空间与第二内存空间中包含更多数据元素的内存空间。
可选的,所述处理单元403从所述任一内存空间中逐次读取数据元素,包括:
按照预设顺序从所述任一内存空间中每次读取至少一个的数据元素,直至所述任一内存空间中的所有数据元素均被读取完成;
所述处理单元403从所述另一内存空间中逐次读取数据元素,包括:
按照预设顺序从所述另一内存空间中每次读取至少一个数据元素,直至所述另一内存空间中的所有数据元素均被读取完成。
可选的,在从所述任一内存空间或所述另一内存空间中每次读取至少两个的数据元素的情况下,使用SIMD指令进行比对运算。
可选的,还包括:
提供单元405,用于在所述任一内存空间中包含的所有数据元素均被读取完成的情况下,将所述数据处理结果加密后传出所述可信执行环境,以提供至所述数据处理结果对应的需求方。
可选的,所述可信计算节点为区块链节点。
可选的,还包括:
合约单元406,用于使所述区块链节点通过调用本地部署的智能合约实现所述抗侧信道攻击的数据处理方法。
相应的,本说明书还提供一种装置,所述装置包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为实现上述全部方法实施例提供的实现可信计算方法的步骤。
相应的,本说明书还提供一种计算机可读存储介质,其上存储有可执行的指令;其中,该指令被处理器执行时,实现上述全部方法实施例提供的实现可信计算方法的步骤。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。