CN116701831B - 处理数据的方法、装置及存储介质 - Google Patents
处理数据的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116701831B CN116701831B CN202310594205.6A CN202310594205A CN116701831B CN 116701831 B CN116701831 B CN 116701831B CN 202310594205 A CN202310594205 A CN 202310594205A CN 116701831 B CN116701831 B CN 116701831B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- operation result
- tee
- linear operation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 207
- 238000000034 method Methods 0.000 title claims abstract description 120
- 230000004044 response Effects 0.000 claims abstract description 38
- 239000011159 matrix material Substances 0.000 claims description 496
- 239000013598 vector Substances 0.000 claims description 230
- 238000012549 training Methods 0.000 claims description 48
- 230000015654 memory Effects 0.000 claims description 25
- 230000001131 transforming effect Effects 0.000 claims description 16
- 238000006073 displacement reaction Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013473 artificial intelligence Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 abstract description 11
- 230000008569 process Effects 0.000 description 32
- 238000004422 calculation algorithm Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 206010047289 Ventricular extrasystoles Diseases 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000005129 volume perturbation calorimetry Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012946 outsourcing Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101100533725 Mus musculus Smr3a gene Proteins 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Abstract
本申请公开了一种处理数据的方法、装置及存储介质,属于通信领域。所述方法包括:接收终端设备发送的待处理的第一数据和第二数据;将第一数据和第二数据输入到TEE中;向线性运算设备发送线性运算请求,线性运算请求包括TEE中的与第一数据相对应的第三数据和与第二数据相对应的第四数据;接收线性运算设备发送的线性运算响应,线性运算响应包括第一运算结果,第一运算结果是第三数据和第四数据之间的线性运算结果;将第一运算结果输入到TEE中;向终端设备发送与第一运算结果相对应的第二运算结果,第二运算结果是第一数据和第二数据之间的线性运算结果。本申请能够提高处理数据的运算效率和安全性。
Description
本申请要求于2023年2月28日提交的申请号为202310181818.7、发明名称为“安全神经网络训练方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信领域,特别涉及一种处理数据的方法、装置及存储介质。
背景技术
随着终端技术的发展,终端设备得到广泛应用,例如目前的手机、平板电脑和/或物联网终端等已应用在人们的生活各方各面中。但是终端设备的运算资源有限,终端设备在需要运算数据量很大的数据时,运算的效率很低。例如,终端设备需要运算的数据是矩阵,矩阵可能包括数万或数十万的数据元素,导致终端设备对矩阵的运算效率很低。
在相关技术中,为了解决该问题,终端设备可以将需要处理的数据发送给云平台,云平台对该数据进行处理,然后向终端设备返回处理得到的结果。但是近年来数据泄漏和大数据杀熟事件层数据不穷,将终端设备的数据交给云平台来处理,可能出现数据泄漏或隐私泄漏等问题。
因此,如何提高处理数据的运算效率且处理数据的安全性是相关技术急需要解决的问题。
发明内容
本申请提供了一种处理数据的方法、装置及存储介质,以提高处理数据的运算效率和安全性。所述技术方案如下:
第一方面,本申请提供了一种处理数据的方法,所述方法应用于云服务系统包括的安全处理设备,安全处理设备包括可信执行环境TEE,云服务系统还包括线性运算设备。在所述方法中,接收终端设备发送的数据处理请求,该数据处理请求包括待处理的第一数据和第二数据。将第一数据和第二数据输入到TEE中。向线性运算设备发送线性运算请求,该线性运算请求包括TEE中的与第一数据相对应的第三数据和与第二数据相对应的第四数据。接收线性运算设备发送的线性运算响应,该线性运算响应包括第一运算结果,第一运算结果是第三数据和第四数据之间的线性运算结果。将第一运算结果输入到TEE中。向终端设备发送数据处理响应,该处理响应包括TEE中的与第一运算结果相对应的第二运算结果,第二运算结果是第一数据和第二数据之间的线性运算结果。
TEE是可信执行环境,TEE中的数据不会出现数据泄漏或者被攻击者访问,而线性运算设备对数据进行线性运算的效率很高。所以将第一数据和和第二数据输入到TEE中,在TEE中将第一数据和第二数据分别处理成第一数据对应的第三数据和第二数据对应的第四数据,向线性运算设备发送第三数据和第四数据,线性运算设备对第三数据和第四数据进行线性运算时,避免泄漏第一数据和第二数据。将第一运算结果输入到TEE中,在TEE中将第一运算结果处理成第二运算结果,向终端设备发送第二运算结果。由于TEE提供的可信执行环境可以防止第一数据、第二数据和第一运算结果泄漏,在TEE中将第一数据和第二数据分别处理成第三数据和第四数据,线性运算设备对第三数据和第四数据进行线性运算,即可以阻止泄漏第一数据和第二数据,又可以提高线性运算的运算效率,如此提高处理数据的运算效率以及处理数据的安全性。
在一种可能的实现方式中,第一数据是用于训练人工智能AI模型的训练数据,第二数据是AI模型的参数;或者,第一数据是需要AI模型推理的数据,第二数据是所述AI模型的参数。如此即可以实现训练AI模型,也可以实现使用AI模型来推理数据。
在另一种可能的实现方式中,第一数据包括第一矩阵,第二数据包括第二矩阵。在TEE中,基于多个混淆向量,混淆第一矩阵包括的数据元素得到第三矩阵,以及混淆第二矩阵包括的数据元素得到第四矩阵,该混淆向量包括多个随机数,第三数据包括第三矩阵,第四数据包括第四矩阵。
由于混淆向量包括多个随机数,使得混淆向量不是规律变化,基于多个混淆向量,混淆第一矩阵包括的数据元素得到第三矩阵,以及混淆第二矩阵包括的数据元素得到第四矩阵。这样从第三矩阵和第四矩阵中无法推理出第一矩阵和第二矩阵,所以在线性运算设备对第三矩阵和第四矩阵进行线性运算时,避免泄漏第一矩阵和第二矩阵,保证数据安全。由于线性运算设备是专用于进行线性运算的设备,线性运算设备对第三矩阵和第四矩阵进行线性运算,能够很快得到第一运算结果,提高了线性运算的效率。
在另一种可能的实现方式中,第一运算结果是第三矩阵和第四矩阵相乘得到的结果,或者,第一运算结果是第三矩阵和第四矩阵相除得到的结果。在TEE中,矩阵之间的乘法或除法运算的效率低,因此由线性运算设备来进行矩阵之间的乘法或除法运算,从而提高了运算效率。
在另一种可能的实现方式中,基于第一矩阵和第二矩阵获取多个混淆向量。这样保证对不同矩阵进行线性运算使用的混淆向量不同,大幅增加攻击者从第三矩阵和第四矩阵中推理出第一矩阵和第二矩阵的难度,提高了数据安全性。
在另一种可能的实现方式中,第一矩阵的行数为m,列数为n,第二矩阵的行数为n,列数为s,m,n和s均为大于1的整数,该多个混淆向量包括第一混淆向量、第二混淆向量和第三混淆向量,第一混淆向量包括m个随机数,第二混淆向量包括n个随机数,第三混淆向量包括s个随机数。基于第一矩阵和第二矩阵获取实数范围,该实数范围包括多个非零实数。从该实数范围中随机选取得到第一混淆向量包括的m个随机数,第二混淆向量包括的n个随机数和第三混淆向量包括的s个随机数。
由于实数范围是基于第一矩阵和第二矩阵获取的,且不包括0,该多个混淆向量又是从实数范围中随机选取得到的,这样扩大第一矩阵和第三矩阵之间的差异,以及扩展第二矩阵和第四矩阵之间的差异,大幅增加攻击者从第三矩阵和第四矩阵中推理出第一矩阵和第二矩阵的难度,提高了数据安全性。
在另一种可能的实现方式中,从第一矩阵包括的每个数据元素的绝对值和第二矩阵包括的每个数据元素的绝对值中选择最大绝对值。基于该最大绝对值获取实数范围,其中,该实数范围的下限值为-2L/2,该实数范围的上限值为2L/2,在为偶数时,MAX为所述最大绝对值,为向上取整运算,在为奇数时,如此实现了基于第一矩阵和第二矩阵获取实数范围。
在另一种可能的实现方式中,基于第一混淆向量和第二混淆向量,混淆第一矩阵得到第三矩阵。由于第一混淆向量包括m个随机数,第二混淆向量包括n个随机数,第一矩阵是m行n列的矩阵,保证了基于第一混淆向量和第二混淆向量,能够成功混淆第一矩阵。
在另一种可能的实现方式中,基于第二混淆向量和第三混淆向量,混淆第二矩阵得到第四矩阵。由于第二混淆向量包括n个随机数,第三混淆向量包括s个随机数,第二矩阵是n行s列的矩阵,保证了基于第二混淆向量和第三混淆向量,能够成功混淆第二矩阵。
在另一种可能的实现方式中,获取多个置换向量。基于该多个置换向量对第一矩阵包括的数据元素的位置进行变换得到第五矩阵,以及对第二矩阵包括的数据元素的位置进行变换得到第六矩阵。基于该多个混淆向量,混淆第五矩阵包括的数据元素得到第三矩阵,以及混淆第六矩阵包括的数据元素得到第四矩阵。
由于基于该多个置换向量对第一矩阵包括的数据元素的位置进行变换,以及对第二矩阵包括的数据元素的位置进行变换,从而大幅增加攻击者从第三矩阵和第四矩阵中推理出第一矩阵和第二矩阵的难度,提高了数据安全性。
在另一种可能的实现方式中,该多个置换向量包括第一置换向量、第二置换向量和第三置换向量,第一置换向量包括m个不同的数据元素,第一置换向量中的每个数据元素是大于或等于1且小于或等于m的整数,第二置换向量包括n个不同的数据元素,第二置换向量中的每个数据元素是大于或等于1且小于或等于n的整数,第三置换向量包括s个不同的数据元素,第三置换向量中的每个数据元素是大于或等于1且小于或等于s的整数。
基于第一置换向量和第二置换向量对第一矩阵包括的数据元素的位置进行变换得到第五矩阵。由于第一置换向量包括m个数据元素,第二置换向量包括n个数据元素,第一矩阵是m行n列的矩阵,保证了基于第一置换向量和第二置换向量,能够成功对第一矩阵包括的数据元素的位置进行变换。
基于第二置换向量和第三置换向量对第二矩阵包括的数据元素的位置进行变换得到第六矩阵。由于第二置换向量包括n个数据元素,第三置换向量包括s个数据元素,第二矩阵是n行s列的矩阵,保证了基于第二置换向量和第三置换向量,能够成功对第二矩阵包括的数据元素的位置进行变换。
在另一种可能的实现方式中,将第一矩阵包括的值为0的数据元素以及第二矩阵包括的值为0的数据元素均替换为第一实数,第一实数不等于0。这样可以防止零值泄漏,提高了数据安全性。
第二方面,本申请提供了一种处理数据的装置,用于执行第一方面或第一方面的任意一种可能的实现方式中的方法。具体地,所述装置包括用于执行第一方面或第一方面的任意一种可能的实现方式中的方法的单元。
第三方面,本申请提供了一种处理数据的集群,所述集群包括至少一个计算设备,所述至少一个计算设备中的每个设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述集群实现第一方面或第一方面的任意一种可能的实现方式中的方法。
第四方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过处理器进行加载来实现上述第一方面或第一方面任意可能的实现方式的方法。
第五方面,本申请提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序通过处理器进行加载来执行上述第一方面或第一方面任意可能的实现方式的方法。
第六方面,本申请提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第一方面或第一方面任意可能的实现方式的方法。
附图说明
图1是本申请实施例提供的一种云服务系统的结构示意图;
图2是本申请实施例提供的一种网络架构的结构示意图;
图3是本申请实施例提供的一种处理数据的方法流程图;
图4是本申请实施例提供的另一种处理数据的方法流程图;
图5是本申请实施例提供的一种混淆矩阵的方法流程图;
图6是本申请实施例提供的另一种混淆矩阵的方法流程图;
图7是本申请实施例提供的一种处理数据的装置结构示意图;
图8是本申请实施例提供的一种计算设备的结构示意图;
图9是本申请实施例提供的一种处理数据的集群的结构示意图;
图10是本申请实施例提供的另一种处理数据的集群的结构示意图。
具体实施方式
下面将结合附图对本申请实施方式作进一步地详细描述。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
TEE是一种硬件支持的安全隔离环境,TEE可以让应用在隔离环境下运行。这样,应用中的敏感数据就不会被其他应用甚至操作系统访问到。当在TEE中输入敏感数据,这意味着在TEE中对敏感数据既可以进行明文计算,又可以阻止敏感数据不被攻击者访问到,实现了高效地隐私保护。可选地,TEE可以为软件防护扩展(software guard extension,SGX)技术,TrustZone技术(是一种可信环境技术)和Sanctum技术(是一种可信环境技术)等。
处理数据的运算操作包括线性运算,在TEE中对某些数据的线性运算的效率不高,而线性处理设备的运算效率非常高,这时可以通过线性处理设备对这些数据进行线性运算。
例如,在TEE中需要处理的数据可能是两个矩阵,对两个矩阵的线性运算包括如下一个或多个,该两个矩阵之间的乘法运算,或者,该两个矩阵之间的除法运算。该两个矩阵之间的乘法运算和该两个矩阵之间的除法运算的运算复杂度非常高。在TEE中进行该两个矩阵之间的乘法运算或该两个矩阵的除法运算,严重降低了线性运算的效率。
为了提高线性运算的效率,可以将TEE中的该两个矩阵发送给用于进行线性运算的线性运算设备,由线性运算设备对该两个矩阵进行线性运算,得到线性运算结果。线性运算设备进行线性运算的效率非常高,能够非常高效地对该两个矩阵进行线性运算,即非常高效地对该两个矩阵进行乘法运算或除法运算,然后将线性运算结果返回到TEE中。
如果将该两个矩阵发送给线性运行设备,而线性运算设备的安全性较低,在线性运算设备中该两个矩阵很容易发生数据泄漏或被攻击者访问到,因此数据安全性很低。为此,本申请可以通过如下任意实施例来实现矩阵之间的线性运算,既提高数据安全性,又提高线性运算的效率。
参见图1,本申请实施例提供了一种云服务系统100,所述云服务系统100包括安全处理设备101和线性运算设备102,安全处理设备101包括TEE,安全处理设备101与线性运算设备102通信。
在一些实施例中,TEE位于安全处理设备101中的处理器上。可选地,处理器可以为中央处理器(central processing unit,CPU),网络处理器(network processing unit,NPU)或现场可编程逻辑门阵列(field programmable gate array,FPDA)等。
在一些实施例中,安全处理设备101可以是服务器等计算设备,该计算设备包括TEE,该计算设备可以将需要处理的数据输入到TEE中,在TEE提供的安全环境中处理数据,可以提高处理数据的安全性。
处理数据的运算操作包括线性运算和/或非线性运算。例如,可以在TEE中对第一数据和第二数据进行线性运算。
在一些实施例中,线性运算设备102的线性运算效率高,可以将TEE中需要进行线性运算的第一数据和第二数据外包给线性运算设备102。可选地,在实现时:
安全处理设备101,用于在TEE中对第一数据进行混淆处理得到第三数据,对第二数据进行混淆处理得到第四数据,向线性运算设备102发送线性运算请求,该线性运算请求包括第三数据和第四数据。
线性运算设备102,用于接收该线性运算请求,对该线性运算请求包括的第三数据和第四数据进行线性运算得到第一运算结果;向安全处理设备101发送线性运算响应,该线性运算响应包括第一运算结果。
安全处理设备101,用于接收该线性运算响应,将第一运算结果输入到TEE中,在TEE中获取与第一运算结果相对应的第二运算结果,第二运算结果为第一数据和第二数据之间的线性运算结果。
在一些实施例中,在TEE中需要进行线性运算的第一数据可能包括第一矩阵,在TEE中需要进行线性运算的第二数据可能包括第二矩阵,可以在TEE中对第一矩阵和第二矩阵进行线性运算。
在一些实施例中,对该两个矩阵(第一矩阵和第二矩阵)进行的线性运算包括如下一个或多个运算,对该两个矩阵进行加法运算,对该两个矩阵进行减法运算,对该两个矩阵进行乘法运算,或者,对该两个矩阵进行除法运算。为了便于描述,使用X表示第一矩阵,使用Y表示第二矩阵。
第一矩阵与第二矩阵之间的加法可以表示为X+Y。第一矩阵与第二矩阵之间的减法运算可以表示为X-Y。第一矩阵乘以第二矩阵的乘法运算可以表示为X*Y,*为乘法运算。第一矩阵除以第二矩阵的除法运算可以转换为第一矩阵乘以第二矩阵的逆矩阵,即第一矩阵除以第二矩阵的除法运算可以表示为X/Y=X*Y-1,/表示除法运算,Y-1为第二矩阵的逆矩阵。
在TEE中对第一矩阵和第二矩阵进行的线性运算是乘法运算或除法运算,性线运算的效率非常低下。为了提高对第一矩阵和第二矩阵进行线性运算的效率,可以将该线性运算外包给线性运算设备102,请求线性运算设备102来进行该线性运算。
在实现时,安全处理设备101,用于在TEE中基于多个混淆向量,混淆第一矩阵包括的数据元素得到第三矩阵,以及混淆第二矩阵包括的数据元素得到第四矩阵,该混淆向量包括多个随机数;向线性运算设备102发送线性运算请求,该线性运算请求包括第三矩阵和第四矩阵。
线性运算设备102,用于接收该线性运算请求,对该线性运算请求包括的第三矩阵和第四矩阵进行线性运算得到第一运算结果,该线性运算包括如下一个或多个:第三矩阵和第四矩阵之间的乘法运算,或者,第三矩阵和第四矩阵之间的除法运算;向安全处理设备101发送线性运算响应,该线性运算响应包括第一运算结果。
安全处理设备101,用于接收该线性运算响应,在TEE中基于该多个混淆向量和第一运算结果获取第二运算结果,第二运算结果为第一矩阵和第二矩阵之间的线性运算结果。
其中,将混淆后的第三矩阵和第四矩阵发送给线性运算设备102,可以避免泄漏第一矩阵和第二矩阵,或者,防止攻击者访问到第一矩阵和第二矩阵,从而可以提高数据安全。而线运算设备102对第三矩阵和第四矩阵进行线性运算的效率非常高,能够很快得到第一运算结果。安全处理设备101很快就可以接收到第一运算结果,基于该多个混淆向量和第一运算结果获取第二运算结果,提高得到第二运算结果的效率,即提高线性运算的效率。
参见图2,本申请提供了一种网络架构200,该网络架构200包括云服务系统100和终端设备103,安全处理设备101可以与终端设备103通信。可选地,网络架构200包括的终端设备103的个数为一个或多个。
终端设备103,用于向安全处理设备101发送数据处理请求,该数据处理请求包括第一数据和第二数据(例如第一矩阵和第二矩阵)。
安全处理设备101,还用于接收该数据处理请求,将该数据处理请求包括的第一数据和第二数据输入到TEE中。
在一些实施例中,上述第一矩阵(或第二矩阵)可能是图片或人工智能(artificial intelligence,AI)模型的参数等,在第一矩阵是图片时,第一矩阵(或第二矩阵)中的每个数据元素可能是图片中的像素值等,在第一矩阵(或第二矩阵)是AI模型的参数,第一矩阵(或第二矩阵)中的每个数据元素可能是AI模型的不同参数。
在一些实施例中,该网络架构200可以用于进行AI模型训练的场景。
在AI模型训练的场景中,第一矩阵是用于训练AI模型的训练数据,第二矩阵是该AI模型的参数。终端设备103向安全处理设备101发送的数据处理请求可以是模型训练请求,该模型训练请求包括至少一个训练样本,每个训练样本包括训练数据和标签信息,即每个训练样本包括第一矩阵和标签信息。第二矩阵是该AI模型的参数,在训练该AI模型的过程中不断地优化和调整该AI模型的参数,所以第二矩阵不是固定的,是在不断地变化的数据。
在一些实施例中,该网络架构200可以用于进行数据推理的场景。
在数据推理的场景中,已训练出AI模型,第一矩阵是需要该AI模型推理的数据,第二矩阵是该AI模型的参数。终端设备103向安全处理设备101发送的数据处理请求可以是数据推理请求,该数据推理请求包括第一矩阵。第二矩阵是该AI模型的参数,且第二矩阵是固定不变的数据。
在一些实施例中,线性运算设备102包括至少一个图形处理器(graphicsprocessing unit,GPU)等部件,GPU对两个矩阵之间的乘法运算和除法运算的效率非常高,所以使得线性运算设备102对矩阵的线性运算的效率非常高。
在一些实施例中,安全处理设备101和线性运算设备102是云服务系统100中的两个不同设备,或者,安全处理设备101和线性运算设备102集成在同一设备上,是同一设备的两个不同部件,例如,安全处理设备101是该设备上的包括TEE的处理器,线性运算设备102是该设备上的至少一个GPU。
参见图3,本申请提供了一种处理数据的方法300,所述方法300应用于图2所示的网络架构200。所述方法300包括如下流程。
步骤301:终端设备向安全处理设备发送数据处理请求,该数据处理请求包括待处理的第一数据和第二数据。
在一些实施例中,第一数据可能是用于训练AI模型的训练数据,第二数据是AI模型的参数;或者,第一数据是需要AI模型推理的数据,第二数据是AI模型的参数。
步骤302:安全处理设备接收终端设备发送的数据处理请求,将该数据处理请求包括的第一数据和第二数据输入到TEE中。
在将第一数据和第二数据输入到TEE后,可以在TEE中,基于多个混淆向量,对第一数据进行混淆处理得到与第一数据相对应的第三数据,对第二数据进行混淆处理得到与第二数据相对应的第四数据,每个混淆向量包括多个随机数。
步骤303:安全处理设备向线性运算设备发送线性运算请求,该线性运算请求包括与第一数据相对应的第三数据和与第二数据相对应的第四数据。
由于第三数据和第四数据是分别对第一数据和第二数据进行混淆处理后得到的数据,这样攻击者无法从该线性运算请求包括的第三数据和第四数据中得到第一数据和第二数据,提高了数据的安全性。
步骤304:线性运算设备接收该线性运算请求,对该线性运算请求包括的第一数据和第二数据进行线性运算,得到第一运算结果。
步骤305:线性运算设备向安全处理设备发送线性运算响应,该线性运算响应包括第一运算结果。
步骤306:安全处理设备接收该线性运算响应,将该线性运算响应包括的第一运算结果输入到TEE中。
在TEE中,基于第一运算结果和该多个混淆向量获取与第一运算结果相对应的第二运算结果,第二运算结果是第一数据和第二数据之间的线性运算结果。
步骤307:安全处理设备向终端设备发送数据处理响应,该处理响应包括与第一运算结果相对应的第二运算结果。
步骤308:终端设备接收该数据处理响应,从该数据处理响应中获取第二运算结果。
在本申请实施例中,由于TEE是可信执行环境,TEE中的数据不会出现数据泄漏或者被攻击者访问,而线性运算设备对数据进行线性运算的效率很高。所以安全处理设备将终端设备发送的第一数据和和第二数据输入到TEE中,在TEE中将第一数据和第二数据分别处理成第一数据对应的第三数据和第二数据对应的第四数据,向线性运算设备发送第三数据和第四数据。线性运算设备对第三数据和第四数据进行线性运算时,避免泄漏第一数据和第二数据,向安全处理设备发送线性运算得到的第一运算结果。安全处理设备将第一运算结果输入到TEE中,在TEE中将第一运算结果处理成第二运算结果,向终端设备发送第二运算结果。由于TEE提供的可信执行环境可以防止第一数据、第二数据和第一运算结果泄漏,在TEE中将第一数据和第二数据分别处理成第三数据和第四数据,线性运算设备对第三数据和第四数据进行线性运算,即可以阻止泄漏第一数据和第二数据,又可以提高线性运算的运算效率,如此提高处理数据的运算效率以及处理数据的安全性。
参见图4,本申请提供了一种处理数据的方法400,所述方法400应用图1所示的云服务系统100或应用图2所示的网络架构200。所述方法400在TEE中执行,在所述方法400中以第一数据包括第一矩阵,第二数据包括第二矩阵为例进行说明。所述方法400包括如下流程。
步骤401:获取第一矩阵和第二矩阵,第一矩阵和第二矩阵是TEE中需要进行性线运算的数据。
在一些实施例中,第一矩阵的行数为m,列数为n,第二矩阵的行数为n,列数为s,m,n和s均为大于1的整数,即第一矩阵是m行n列的矩阵,第二矩阵是n行s列的矩阵。
对第一矩阵和第二矩阵进行的线性运算可以是第一矩阵和第二矩阵之间的乘法运算或者是第一矩阵和第二矩阵之间的除法运算。
在一些实施例中,第一矩阵和/或第二矩阵可能是安全处理设备中的数据,安全处理设备将第一矩阵和第二矩阵输入到TEE中。或者,第一矩阵和/或第二矩阵是安全处理设备接收的来自于终端设备的数据,安全处理设备将接收第一矩阵和/或第二矩阵输入到TEE中。
例如,在AI模型训练的场景中,第一矩阵是用于训练AI模型的训练数据,第二矩阵是该AI模型的参数。终端设备向安全处理设备发送模型训练请求,该模型训练请求包括第一矩阵和第二矩阵,第一矩阵是训练数据,第二矩阵是该AI模型的参数,可选地,该模型训练请求还包括标签信息。安全处理设备接收该模型训练请求,将该模型训练请求包括的第一矩阵和第二矩阵输入到TEE中。或者,
TEE包括该AI模型,即TEE包括第二矩阵,终端设备向安全处理设备发送模型训练请求,该模型训练请求包括第一矩阵,第一矩阵是训练数据,可选地,该模型训练请求还包括标签信息。安全处理设备接收该模型训练请求,将该模型训练请求包括的第一矩阵输入到TEE中。
再例如,在数据推理的场景中,已训练出AI模型,第一矩阵是需要该AI模型推理的数据,第二矩阵是该AI模型的参数。终端设备向安全处理设备发送数据推理请求,该数据推理请求包括第一矩阵和第二矩阵。安全处理设备接收该数据推理请求,将该数据推理请求包括的第一矩阵和第二矩阵输入到TEE中。或者,
TEE包括已训练出的该AI模型,即TEE包括第二矩阵。终端设备向安全处理设备发送数据推理请求,该数据推理请求包括第一矩阵。安全处理设备接收该数据推理请求,将该数据推理请求包括的第一矩阵输入到TEE中。
在一些实施例中,在终端设备向安全处理设备发送第一矩阵和/或第二矩阵之前,终端设备与安全处理设备协商共享密钥。然后,终端设备基于该共享密钥,通过对称加密算法对第一矩阵和/或第二矩阵进行加密得到密文,向安全处理设备发送数据处理请求,该数据处理请求包括该密文。安全处理设备接收该数据处理请求,基于共享密钥,通过对称解密算法对该密文进行解密得到第一矩阵和/或第二矩阵。
在一些实施例中,共享密钥包括第一部分和第二部分。安全处理设备启动TEE,终端设备采用远程认证方式,请求安全处理设备进行认证。安全处理设备在TEE中对终端设备进行认证通过后,终端设备与安全处理设备协商共享密钥。该协商共享密钥的过程可以为:
终端设备生成第一部分,向安全处理设备发送第一部分。安全处理设备在TEE中生成第二部分,接收终端设备发送的第一部分,将第一部分输入到TEE中,在TEE中将第一部分和第二部分组成共享密钥,向终端设备发送第二部分。终端设备接收第二部分,将第一部分和第二部分组成共享密钥。
在一些实施例中,在得到第一矩阵和第二矩阵后,还可以将第一矩阵包括的值为0的数据元素以及第二矩阵包括的值为0的数据元素均替换为第一实数,第一实数不等于0。
第一矩阵和第二矩阵可能包括大量的0,如果不把0替换为第一实数,攻击者容易推理出第一矩阵和第二矩阵包括大量的0,给数据安全带来隐患。将第一矩阵包括的值为0的数据元素以及第二矩阵包括的值为0的数据元素均替换为第一实数,就可以消除该隐患,提高数据安全性。
在一些实施例中,第一实数是大于或等于-2-R且小于或等于2-R的范围中的任一非零实数,R为大于0的系统参数。
步骤402:基于多个混淆向量,混淆第一矩阵包括的数据元素得到第三矩阵,以及混淆第二矩阵包括的数据元素得到第四矩阵,该混淆向量包括多个随机数。
该多个混淆向量包括第一混淆向量、第二混淆向量和第三混淆向量,第一混淆向量包括m个数据元素数,第二混淆向量包括n个数据元素,第三混淆向量包括s个数据元素。第一混淆向量包括的m个数据元素数、第二混淆向量包括的n个数据元素和第三混淆向量包括的s个数据元素均为随机数。所谓随机数据是随机选择的数值。
在一些实施例中,第一混淆向量包括的m个随机数均是随机实数,第二混淆向量包括的n个随机数均是随机实数,第三混淆向量包括的s个随机数也均是随机实数。可选地,第一混淆向量包括的m个随机数均是随机非零实数,第二混淆向量包括的n个随机数均是随机非零实数,第三混淆向量包括的s个随机数也均是随机非零实数。这样通过该多个混淆向量能够更好的混淆和隐藏第一矩阵和第二矩阵中的数据元素,可以提高数据安全性。
在执行步骤402之前,还需要获取多个混淆向量。
在一些实施例中,可以获取安全处理设备的TEE中保存的该多个混淆向量,TEE中保存的多个混淆向量是上一次生成的混淆向量。
在一些实施例中,基于第一矩阵和第二矩阵生成多个混淆向量。
由于该多个混淆向量是基于第一矩阵和第二矩阵生成的,这样保证对不同矩阵进行线性运算使用的混淆向量不同,使得攻击者很难从混淆得到的矩阵中推理出该多个混淆向量,第一矩阵以及第二矩阵,提高了数据安全性。
其中,可以通过如下4021-4022的操作生成该多个混淆向量。
4021:基于第一矩阵和第二矩阵获取实数范围,该实数范围包括多个非零实数。
在4021中,从第一矩阵包括的每个数据元素的绝对值和第二矩阵包括的每个数据元素的绝对值中选择最大绝对值。
然后,基于该最大绝对值获取实数范围,其中,该实数范围的下限值为-2L/2,该实数范围的上限值为2L/2,在为偶数时,,MAX为该最大绝对值,为向上取整运算,在为奇数时,
在一些实施例中,可以获取大于或等于-2L/2的且小于或等于2L/2的范围,将该范围与不等于零的各实数取交集,得到不包括0且大于或等于-2L/2的且小于或等于2L/2的该实数范围,该实数范围包括的每个数值为非零实数。
4022:从该实数范围中随机选取得到第一混淆向量包括的m个随机数,第二混淆向量包括的n个随机数和第三混淆向量包括的s个随机数。
在步骤402中,可以采用如下两种方式,基于该多个混淆向量,混淆第一矩阵包括的数据元素和第二矩阵包括的数据元素。
参见图5,方式一,使用多个混淆向量混淆第一矩阵中的数据元素的具体数值和第二矩阵中的数据元素的具体数值。可以通过如下11至12的操作来实现。
11:基于第一混淆向量和第二混淆向量,混淆第一矩阵得到第三矩阵。
其中,使用X表示第一矩阵,使用Y表示第二矩阵,使用X1表示第三矩阵,使用O表示第一混淆向量,使用P表示第二混淆向量,使用Q表示第三混淆向量。
第三矩阵X1中的第i行第j列的数据元素为X1 i,j=Xi,j+Oi*Pj。i=1、2、3、……、m,j=1、2、3、……、n,Xi,j为第一矩阵X中的第i行第j列的数据元素,Oi为第一混淆向量O的第i个数据元素,Pj为第二混淆向量P的第j个数据元素。
12:基于第二混淆向量和第三混淆向量,混淆第二矩阵得到第四矩阵。
其中,使用Y1表示第四矩阵,第四矩阵Y1中的第i行第j列的数据元素为Y1 i,j=Yi,j+Pi*Qj。i=1、2、3、……、n,j=1、2、3、……、s,Yi,j为第二矩阵Y中的第i行第j列的数据元素,Pi为第二混淆向量P的第i个数据元素,Qj为第三混淆向量Q的第j个数据元素。
参见图6,方式二,使用多个置换向量变换第一矩阵中的数据元素的位置得到第五矩阵,变换第二矩阵中的数据元素的位置得到第六矩阵,然后,使用多个混淆向量混淆第五矩阵中的数据元素的具体数值和第六矩阵中的数据元素的具体数值。可以通过如下21至23的操作来实现。
21:基于m,n和s获取多个置换向量。
多个置换向量包括第一置换向量、第二置换向量和第三置换向量。
第一置换向量包括m个不同的数据元素,第一置换向量中的每个数据元素是大于或等于1且小于或等于m的整数。也就是说,将1至m的m个整数的位置进行打乱得到第一置换向量。假设,m=8,将1、2、3、4、5、6、7、8的位置进行打乱得到第一置换向量,如第一置换向量为[1,3,4,8,2,5,7,6]。
第二置换向量包括n个不同的数据元素,第二置换向量中的每个数据元素是大于或等于1且小于或等于n的整数。也就是说,将1至n的n个整数的位置进行打乱得到第二置换向量。假设,n=6,将1、2、3、4、5、6的位置进行打乱得到第二置换向量,如第二换向量为[6,2,5,1,3,4]。
第三置换向量包括s个不同的数据元素,第三置换向量中的每个数据元素是大于或等于1且小于或等于s的整数。也就是说,将1至s的s个整数的位置进行打乱得到第三置换向量。假设,s=10,将1、2、3、4、5、6、7、8、9、10的位置进行打乱得到第三置换向量,如第二换向量为[7,9,4,1,3,2,5,8,10,6]。
22:基于该多个置换向量对第一矩阵包括的数据元素的位置进行变换得到第五矩阵,以及对第二矩阵包括的数据元素的位置进行变换得到第六矩阵。
在一些实施例中,基于第一置换向量和第二置换向量对第一矩阵包括的数据元素的位置进行变换得到第五矩阵。
使用A表示第一置换向量,使用B表示置换向量,使用X2表示第五矩阵。第五矩阵X2中的第i行第j列的数据元素X2 i,j=XA(i),B(j),i=1、2、3、……、m,j=1、2、3、……、n,A(i)表示第一置换向量A中的第i个数据元素,B(j)表示第二置换向量B中的第j个数据元素。
例如,如果i=2,j=3,A(2)为上述第一置换向量A中的第2个数据元素3,B(3)为上述第二置换向量B中的第3个数据元素5。也就是说,第五矩阵X2的第2行第3列的数据元素是第一矩阵X中的第3行第5列的数据元素,即X2 2,3=X3,5,从而变换了第一矩阵X中的数据元素的位置。
在一些实施例中,基于第二置换向量和第三置换向量对第二矩阵包括的数据元素的位置进行变换得到第六矩阵。
使用C表示第三置换向量,使用Y2表示第六矩阵。第六矩阵Y2中的第i行第j列的数据元素Y2 i,j=XB(i),C(j),i=1、2、3、……、n,j=1、2、3、……、s,B(i)表示第二置换向量B中的第i个数据元素,C(j)表示第三置换向量C中的第j个数据元素。
例如,如果i=3,j=5,B(3)为上述第二置换向量B中的第3个数据元素5,C(5)为上述第三置换向量C中的第5个数据元素3。也就是说,第六矩阵Y2的第3行第5列的数据元素是第二矩阵Y中的第5行第3列的数据元素,即Y2 3,2=Y5,3,从而变换了第二矩阵Y中的数据元素的位置。
23:基于该多个混淆向量,混淆第五矩阵包括的数据元素得到第三矩阵,以及混淆第六矩阵包括的数据元素得到第四矩阵。
在一些实施例中,基于第一混淆向量和第二混淆向量,混淆第五矩阵得到第三矩阵。
第三矩阵X1中的第i行第j列的数据元素为X1 i,j=X2 i,j+Oi*Pj=XA(i),B(j)+Oi*Pj。i=1、2、3、……、m,j=1、2、3、……、n,Oi为第一混淆向量O的第i个数据元素,Pj为第二混淆向量P的第j个数据元素。
在一些实施例中,基于第二混淆向量和第三混淆向量,混淆第六矩阵得到第四矩阵。
第四矩阵Y1中的第i行第j列的数据元素为Y1 i,j=Y2 i,j+Pi*Qj=YB(i),C(j)+Pi*Qj。i=1、2、3、……、n,j=1、2、3、……、s,Pi为第二混淆向量P的第i个数据元素,Qj为第三混淆向量Q的第j个数据元素。
在混淆第一矩阵和第二矩阵前先把第一矩阵和第二矩阵中的数据元素的位置打乱,得到第五矩阵和第六矩阵。然后使用多个混淆向量对第五矩阵和第六矩阵进行混淆,得到第三矩阵和第四矩阵。这样更无法让攻击者从第三矩阵和第四矩阵中推理出第一矩阵和第二矩阵,使第一矩阵和第二矩阵更加安全。
步骤403:请求线性运算设备对第三矩阵和第四矩阵进行线性运算,得到第一运算结果。
该线性运算包括如下一个或多个:第三矩阵和第四矩阵之间的乘法运算,或者,第三矩阵和第四矩阵之间的除法运算。
在步骤403中,安全处理设备向线性运算设备发送线性运算请求,该线性运算请求包括该线性运算的标识信息,第三矩阵和第四矩阵。
线性安全设备接收该线性运算请求,基于该标识信息确定该线性运算,对第三矩阵和第四矩阵进行该线性运算,得到第一运算结果,向安全处理设备发送线性运算响应,该线性运算响应包括第一运算结果。
安全处理设备接收该线性运算响应,将该线性运算响应包括的第一运算结果输入到TEE中。
在一些实施例中,线性运算设备包括至少一个GPU,线性运算设备使用该至少一个GPU,对第三矩阵和第四矩阵进行该线性运算。
如果该线性运算是第三矩阵和第四矩阵之间的乘法运算,则将第三矩阵乘以第四矩阵,得到第一运算结果。
如果该线性运算是第三矩阵和第四矩阵之间的除法运算,则计算第四矩阵的逆矩阵,将第三矩阵乘以第四矩阵的逆矩阵,得到第一运算结果。
步骤404:基于该多个混淆向量和第一运算结果获取第二运算结果,第二运算结果为第一矩阵和第二矩阵之间的线性运算结果。
第一运算结果和第二运算结果也均是矩阵。
在采用上述方式一混淆得到第三矩阵和第四矩阵的情况,第二运算结果Z=Z1-S,S=(X+OT*P)*PT*Q+OT*(P*Y),Z1为第一运算结果,OT为第一混淆向量的转置向量,PT为第二混淆向量的转置向量。
在采用上述方式二混淆得到第三矩阵和第四矩阵的情况,基于该多个置换向量对第一运算结果中的数据元素的位置进行变换,得到第三运算结果,基于该多个混淆向量和第三运算结果获取第二运算结果。
使用Z2表示第三运算结果,第三运算结果中的第i行第j列的数据元素为Z2 i,j=Z1 A -1 (i),C -1 (i),A-1(i)为第一置换向量A的逆向量中的第i个数据元素,C-1(j)为第三置换向量C的逆向量中的第j个数据元素,第二运算结果Z=Z2-S=Z2-(X+OT*P)*PT*Q+OT*(P*Y)。
其中,S是矩阵与向量的乘法,矩阵与向量的乘法的运算复杂度较低,在安全处理设备的TEE中很快就能计算出S,即很快就能计算出第二运算结果Z,从而提高了线性运算的效率。
在一些实施例中,所述方法400可能是模型训练过程中的一个线性运算的步骤,安全处理设备在得到第二运算结果后,基于第二运算结果继续执行模型训练过程中的剩余步骤。
在一些实施例中,所述方法400可能是数据推理过程中的一个线性运算的步骤,安全处理设备在得到第二运算结果后,基于第二运算结果继续执行数据推理过程中的剩余步骤。
接下来,列举一个安全处理设备为服务器,终端设备可以是客户端,服务器中的TEE为SGX环境的示例。在该示例中可以包括如下S1-S3的流程。
S1:在SGX环境进行认证及共享密钥建立。可选地,服务器启用SGX环境;客户端采用远程认证的方式,通过服务器软件,对服务器的SGX环境进行认证,并与服务器的SGX环境建立共享密钥。
在实现时,可以通过如下S11-S18的操作来实现步骤S1。
S11:客户端生成一对公私钥,该公私钥包括公钥Pk和私钥Sk,其中公钥Pk格式为SGX定义的256比特椭圆曲线公钥格式(sgx_ec256_public_t),向认证服务器(attestationservice for SGX,AS)申请一个服务提供商身份(service provider ID,SPID),然后向服务器发送请求,该请求公钥Pk。
S12:服务器接收到客户端的请求,将该请求包括的公钥Pk保存起来,调用SGX应用程序接口(application programming interface,API)中的sgx_get_extended_epid_group_id函数,获取服务器的扩展隐私标识(enhanced privacy ID,EPID)的组标识(extended epid group ID,ExGID),ExGID的格式为无符号32位;向客户端返回包含ExGID的Msg_0(消息0)。
S13:客户端软件接收到服务器的Msg_0,从Msg_0中提取ExGID;当ExGID为0时,表示服务器支持EPID认证和密钥建立方式,客户端执行如下S14。
当ExGID不为0时,客户端退出连接,结束操作。
S14:服务器以保存的公钥Pk为输入调用SGX API中的sgx_ra_init函数对SGX环境认证及密钥建立过程创建上下文,返回格式为SGX上下文类型(sgx_ra_context_t)的上下文内容,以该内容为输入调用Intel提供的SGX API中的sgx_ra_get_msg1函数,返回Msg_1(消息1),其中Msg1包含G_a和GID;G_a是服务器基于国家标准与技术研究院(nationalinstitute of standards and technology,NIST)定义的名称为P-256的椭圆曲线迪菲-赫尔曼秘钥交换(elliptic curve diffie–hellman key exchange,ECDH)公钥,而GID是服务器为EPID认证方式分配的群组身份标识;服务器发送Msg_1给客户端,Msg_1包括G_a||GID给客户端,其中“||”符号标识比特串串接。
S15:客户端接收服务器发送的Msg_1,提取G_a和GID,将GID发送给AS;使AS根据GID来查询签名撤销列表(SigRL),并将SigRL返回给客户端;客户端基于NIST P-256椭圆曲线生成临时ECDH公钥G_b和私钥priv_key,计算协商密钥dh_key=priv_key*G_a;然后采用AES-128CMAC算法,以dh_key为密钥,以“0x01||‘SMK’||0x00||0x80||0x00”为消息,计算派生密钥SMK;设置引用(quote)的类型为quote_type=0x1,表示客户端可以从服务端的两个签名验证是否都来自于同一个服务端的TEE环境;设置密钥派生函数ID(KDF_ID)为0x1,表示采用AES-128CMAC算法;客户端软件用私钥Sk对G_a||G_b采用椭圆曲线数字签名算法(elliptic curve digital signature algorithm,ECDSA)数字签名算法进行签名,得到签名值Sig_(Ga_Gb);使用派生密钥SMK,用算法AES-128CMAC,对消息“G_b||SPID||quote_type|(|KDF_ID|)|Sig_(Ga_Gb)”计算校验值MAC;构造消息Msg_2,Msg_2为G_b||SPID||quote_type|(|KDF_ID|)|Sig_(Ga_Gb)|(|MAC|)|SigRL_size||SigRL,其中SigRL_size为签名撤销列表的大小;最后将消息Msg_2发送给服务器。
S16:服务器接收到Msg_2,以其为参数调用SGX API中的sgx_ra_proc_msg2函数对Msg_2进行处理;该函数主要完成以下几个任务:1.使用Pk验证客户端的签名;2.检查SigRL;3.生成Msg_3。消息Msg_3中包含用于证明该SGX安全环境的引用内容(quote);引用内容中包括当前SGX中飞地的测量值,该飞地使用平台的EPID私钥签名得到的签名值,平台服务飞地(PSE)的信息,协商密钥的校验码等;除了引用内容,Msg_3中还包括一个消息校验码MAC,该校验码是使用SMK密钥对消息“G_a||ps_sec_prop||quote”进行AES-128CMAC算法的计算得到的,其中ps_sec_prop是SGX平台服务的安全属性;构造Msg_3,Msg_3为mac||G_a||ps_sec_prop||quote,发送Msg_3给客户端。
S17:客户端接收Msg_3,执行以下操作:1,比较G_a和Msg_1中的G_a是否相同;2,利用SMK验证Msg_3中的MAC字段;3,验证Msg_3中引用内容的协商密钥相关的校验码;4,客户端将引用内容提交给IAS;IAS通过引用的签名来验证引用内容是合法的,并且返回带签名的报告给客户端;客户端通过IAS的公钥检测此报告的合法性,并获取报告内容;5,检测报告内容中关于飞地状态的报告是否合法;6,检测引用内容中的测量值来确认飞地中的代码和数据是符合的;7,生成共享密钥SK,其生成方式和SMK以的方式是类似的,内部的消息此时为“0x01||‘SK’||0x00||0x80||0x00”,算法依旧是AES-128CMAC算法;8,生成Msg_4作为响应,返回给服务器。
S18:服务器端收到Msg_4,继续后续的流程。
S2:数据注入。其中,客户端使用用共享密钥SK和AES-128GCM对称加密算法对训练数据进行加密得到密文,之后将该密文传输给服务器,由服务器输入到SGX环境,在SGX环境中解密后得到用户注入的训练数据。
S3:模型训练:服务器在SGX环境得到用户注入的训练数据;之后采用的该训练数据对AI模型进行训练;在训练过程中将需要线性运算的两个矩阵外包给GPU;服务器的SGX环境收集GPU的运算结果并完成训练。
其中,在SGX环境进行模型训练中的线性运算的操作可以包括如下S31-S34的操作。
AI模型为卷积神经网络,在计算卷积时,将数据和卷积核形成矩阵,进行外包计算,设一次计算中,数据形成了500*600的维度的矩阵,而卷积核形成的矩阵为600*700的维度。
S31:在SGX环境将第一矩阵X(500×600的矩阵)以及第二矩阵Y(为600×700的矩阵),进行外包。
首先设置R=7,随机在大于或等于-2-7且小于或等于2-7的区间内随机选择不等于0的实数作为第一实数,将第一矩阵X和第二矩阵Y中的数值0替换为第一实数。然后从第一矩阵X中的数据元素的绝对值和第二矩阵Y中的数据元素的绝对值选择最大绝对值MAX,假设最大绝对值MAX=6。如此,
之后,基于数值4获取包括非零实数的实数范围,该实数范围是大于或等于-2L/2的且小于或等于2L/2的范围,即该实数范围是大于或等于-4且小于或等于4的非零实数范围。从该实数范围中随机选取三组随机混淆向量,分别为第一混淆向量O,第二混淆向量P和第三混淆向量Q。随机生成维度分别为500的第一置换向量A,维度为600的第二置换向量B和维度为700的第三置换向量C,从而得到一次性密钥为(O、P、Q、A、B、C)。
其中如下随机列举的三个置换向量的一个示例为:
A=(430,468,390,452,247,479,278,352,388,343,…,84,183,87,48,53,108,60,221,219,42),
B=(340,286,260,451,512,365,415,354,325,16,…,29,240,8,227,22,44,239,145,235,59),
C=(364,374,302,501,353,60,324,382,279,676,…,692,63,5,215,25,93,177,11,143,247)。
S32:在SGX环境中使用一次性密钥计算第三矩阵X1,其中第三矩阵X1的第i行第j列的数据元素X1 i,j=XA(i),B(j)+Oi*Pj,X为第一矩阵。类似计算第四矩阵Y1,其中第四矩阵Y1的第i行第j列的数据元素Y1 i,j=YB(i),C(j)+Pi*Qj,Y为第二矩阵。将第三矩阵X1和第四Y1外包给GPU计算。
S33:GPU计算第一运算结果Z1=X1*Y1,并将第一运算结果Z1返回到SGX环境中。
S34:在SGX环境计算第二运算结果Z,其中第二运算结果Z的第i行第j列的数据元素Z(i,j)=Z2 i,j-S=Z1 A -1 (i),C -1 (i)-S=Z1 A -1 (i),C -1 (i)-(X+OT*P)*PT*Q+OT*(P*Y)。
在本申请实施例中,对于TEE中需要线性运算的第一矩阵和第二矩阵,基于第一矩阵和第二矩阵获取多个混淆向量,这样保证对不同矩阵进行线性运算,得到不同的混淆向量,使用混淆向量混淆第一矩阵和第二矩阵,使得得到的第三矩阵和第四矩阵更加安全可靠。将第三矩阵和第四矩阵发送给线性运算设备,线性运算设备是专用于线性运算,能够很对第三矩阵和第四矩阵进行线性运算,得到第一运算结果。接收线性运算设备返回的第一运算结果,基于该多个混淆向量和第一运算结果,获取第一运算结果,从而提高了线性运算的效率。
参见图7,本申请提供了一种处理数据的装置700,所述装置700部署在图1或图2所示的云服务系统100的安全处理设备101上,所述装置700部署图3所示方法300或图4所示方法400的安全处理设备上。
所述装置600应用于云服务系统100包括的安全处理设备,安全处理设备包括可信执行环境TEE,所述云服务系统100还包括线性运算设备,所述装置600包括:
接收单元701,用于接收终端设备发送的数据处理请求,该数据处理请求包括待处理的第一数据和第二数据;
处理单元702,用于将第一数据和第二数据输入到TEE中;
发送单元703,用于向线性运算设备发送线性运算请求,该线性运算请求包括TEE中的与第一数据相对应的第三数据和与第二数据相对应的第四数据;
接收单元701,还用于接收线性运算设备发送的线性运算响应,该线性运算响应包括第一运算结果,第一运算结果是第三数据和第四数据之间的线性运算结果;
处理单元702,还用于将第一运算结果输入到TEE中;
发送单元703,还用于向终端设备发送数据处理响应,该处理响应包括TEE中的与第一运算结果相对应的第二运算结果,第二运算结果是第一数据和第二数据之间的线性运算结果。
可选地,接收单元701接收终端设备发送的数据处理请求的详细实现过程参见图3所示方法300的步骤302中的相关内容,在此不再详细说明。
可选地,处理单元702将第一数据和第二数据输入到TEE中的详细实现过程参见图3所示方法300的步骤302中的相关内容,在此不再详细说明。
可选地,发送单元703向线性运算设备发送线性运算请求的详细实现过程参见图3所示方法300的步骤303中的相关内容,在此不再详细说明。
可选地,接收单元701接收线性运算响应的详细实现过程参见图3所示方法300的步骤306中的相关内容,在此不再详细说明。
可选地,处理单元702将第一运算结果输入到TEE中的详细实现过程参见图3所示方法300的步骤306中的相关内容,在此不再详细说明。
可选地,发送单元703向终端设备发送数据处理响应的详细实现过程参见图3所示方法300的步骤307中的相关内容,在此不再详细说明。
可选地,第一数据是用于训练人工智能AI模型的训练数据,第二数据是AI模型的参数;或者,第一数据是需要AI模型推理的数据,第二数据是AI模型的参数。
可选地,第一数据包括第一矩阵,第二数据包括第二矩阵,处理单元702,还用于:
在TEE中,基于多个混淆向量,混淆第一矩阵包括的数据元素得到第三矩阵,以及混淆第二矩阵包括的数据元素得到第四矩阵,该混淆向量包括多个随机数,第三数据包括第三矩阵,第四数据包括第四矩阵。
可选地,处理单元702混淆第一矩阵包括的数据元素得到第三矩阵,以及混淆第二矩阵包括的数据元素得到第四矩阵的详细实现过程参见图4所示方法400的步骤402中的相关内容,在此不再详细说明。
可选地,第一运算结果是第三矩阵和第四矩阵相乘得到的结果,或者,第一运算结果是第三矩阵和第四矩阵相除得到的结果。
可选地,处理单元702,还用于:
基于第一矩阵和第二矩阵获取该多个混淆向量。
可选地,处理单元702基于第一矩阵和第二矩阵获取该多个混淆向量的详细实现过程参见图4所示方法400的步骤402中的相关内容,在此不再详细说明。
可选地,第一矩阵的行数为m,列数为n,第二矩阵的行数为n,列数为s,m,n和s均为大于1的整数,该多个混淆向量包括第一混淆向量、第二混淆向量和第三混淆向量,第一混淆向量包括m个随机数,第二混淆向量包括n个随机数,第三混淆向量包括s个随机数。
处理单元702,用于:
基于第一矩阵和第二矩阵获取实数范围,该实数范围包括多个非零实数;
从该实数范围中随机选取得到第一混淆向量包括的m个随机数,第二混淆向量包括的n个随机数和第三混淆向量包括的s个随机数。
可选地,处理单元7025基于第一矩阵和第二矩阵获取实数范围的详细实现过程参见图4所示方法400的步骤4021中的相关内容,在此不再详细说明。
可选地,处理单元702从该实数范围中随机选取得到第一混淆向量包括的m个随机数,第二混淆向量包括的n个随机数和第三混淆向量包括的s个随机数的详细实现过程参见图4所示方法400的步骤4022中的相关内容,在此不再详细说明。
可选地,处理单元702,用于:
从第一矩阵包括的每个数据元素的绝对值和第二矩阵包括的每个数据元素的绝对值中选择最大绝对值;
基于该最大绝对值获取该实数范围,其中,该实数范围的下限值为-2L/2,该实数范围的上限值为2L/2,在为偶数时,MAX为该最大绝对值,为向上取整运算,在为奇数时,
可选地,处理单元702选择最大绝对值的详细实现过程参见图4所示方法400的步骤4021中的相关内容,在此不再详细说明。
可选地,处理单元702基于该最大绝对值获取该实数范围的详细实现过程参见图4所示方法400的步骤4021中的相关内容,在此不再详细说明。
可选地,处理单元702,用于:
基于第一混淆向量和第二混淆向量,混淆第一矩阵得到第三矩阵;
基于第二混淆向量和第三混淆向量,混淆第二矩阵得到第四矩阵。
可选地,处理单元702混淆第一矩阵得到第三矩阵的详细实现过程参见图4所示方法400的步骤402中的相关内容,在此不再详细说明。
可选地,处理单元702混淆第二矩阵得到第四矩阵的详细实现过程参见图4所示方法400的步骤402中的相关内容,在此不再详细说明。
可选地,处理单元702,还用于:
获取多个置换向量;
基于该多个置换向量对第一矩阵包括的数据元素的位置进行变换得到第五矩阵,以及对第二矩阵包括的数据元素的位置进行变换得到第六矩阵;
基于该多个混淆向量,混淆第五矩阵包括的数据元素得到第三矩阵,以及混淆第六矩阵包括的数据元素得到第四矩阵。
可选地,处理单元702获取多个置换向量的详细实现过程参见图4所示方法400的步骤402中的相关内容,在此不再详细说明。
可选地,处理单元702基于该多个置换向量对第一矩阵包括的数据元素的位置进行变换得到第五矩阵,以及对第二矩阵包括的数据元素的位置进行变换得到第六矩阵的详细实现过程参见图4所示方法400的步骤402中的相关内容,在此不再详细说明。
可选地,处理单元702基于该多个混淆向量,混淆第五矩阵包括的数据元素得到第三矩阵,以及混淆第六矩阵包括的数据元素得到第四矩阵的详细实现过程参见图4所示方法400的步骤402中的相关内容,在此不再详细说明。
可选地,该多个置换向量包括第一置换向量、第二置换向量和第三置换向量,第一置换向量包括m个不同的数据元素,第一置换向量中的每个数据元素是大于或等于1且小于或等于m的整数,第二置换向量包括n个不同的数据元素,第二置换向量中的每个数据元素是大于或等于1且小于或等于n的整数,第三置换向量包括s个不同的数据元素,第三置换向量中的每个数据元素是大于或等于1且小于或等于s的整数。处理单元601,用于:
基于第一置换向量和第二置换向量对第一矩阵包括的数据元素的位置进行变换得到第五矩阵;
基于第二置换向量和第三置换向量对第二矩阵包括的数据元素的位置进行变换得到第六矩阵。
可选地,处理单元702基于第一置换向量和第二置换向量对第一矩阵包括的数据元素的位置进行变换得到第五矩阵的详细实现过程参见图4所示方法400的步骤402中的相关内容,在此不再详细说明。
可选地,处理单元702基于第二置换向量和第三置换向量对第二矩阵包括的数据元素的位置进行变换得到第六矩阵的详细实现过程参见图4所示方法400的步骤4302中的相关内容,在此不再详细说明。
可选地,处理单元702,还用于:
将第一矩阵包括的值为0的数据元素以及第二矩阵包括的值为0的数据元素均替换为第一实数,第一实数不等于0。
可选地,处理单元702将第一矩阵包括的值为0的数据元素以及第二矩阵包括的值为0的数据元素均替换为第一实数的详细实现过程参见图4所示方法400的步骤401中的相关内容,在此不再详细说明。
其中,接收单元701、处理单元702和发送单元703均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以处理单元702为例,介绍处理单元702的实现方式。类似的,接收单元701和发送单元703的实现方式可以参考处理单元702的实现方式。
单元作为软件功能单元的一种举例,处理单元702可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,处理单元702可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
单元作为硬件功能单元的一种举例,处理单元702可以包括至少一个计算设备,如服务器等。或者,处理单元702也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
处理单元702包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。处理单元702包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,处理单元702包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,接收单元701可以用于执行上述任意实施例提供的方法中的任意接收步骤,发送单元703可以用于执行上述任意实施例提供的方法中的任意发送步骤,处理单元702可以用于执行上述任意实施例提供的方法中的除接收步骤和发送步骤之外的任意步骤。接收单元701、处理单元702和发送单元703负责实现的步骤可根据需要指定,通过接收单元701、处理单元702和发送单元703分别实现上述任意实施例提供的方法中不同的步骤来实现数据处理的装置700的全部功能。
在本申请实施例中,TEE是可信执行环境,TEE中的数据不会出现数据泄漏或者被攻击者访问,而线性运算设备对数据进行线性运算的效率很高。所以处理单元将第一数据和和第二数据输入到TEE中,发送单元向线性运算设备发送与第一数据相对应的第三数据和与第二数据相对应的第四数据,使线性运算设备对第三数据和第四数据进行线性运算时,避免泄漏第一数据和第二数据。处理单元将第一运算结果输入到TEE中,发送单元向终端设备发送第二运算结果。由于TEE提供的可信执行环境可以防止第一数据、第二数据和第一运算结果泄漏,在TEE中将第一数据和第二数据分别处理成第三数据和第四数据,线性运算设备对第三数据和第四数据进行线性运算,即可以阻止泄漏第一数据和第二数据,又可以提高线性运算的运算效率,如此提高处理数据的运算效率以及处理数据的安全性。在第一数据包括第一矩阵以及第二数据包括第二矩阵的情况,由于混淆向量包括多个随机数,使得混淆向量不是规律变化,处理单元基于多个混淆向量,混淆第一矩阵包括的数据元素得到第三矩阵,以及混淆第二矩阵包括的数据元素得到第四矩阵。这样从第三矩阵和第四矩阵中无法推理出第一矩阵和第二矩阵,所以请求线性运算设备对第三矩阵和第四矩阵进行线性运算时,避免泄漏第一矩阵和第二矩阵,保证数据安全。由于线性运算设备是专用于进行线性运算的设备,线性运算设备对第三矩阵和第四矩阵进行线性运算,能够很快得到第一运算结果。从处理单元基于该多个混淆向量和第一运算结果很快得到第二运算结果,提高了线性运算的效率。
参见图8,本申请实施例提供了一种计算设备800。例如,该计算设备800可以是图1或图2所示的实施例中的安全处理设备,或者,是图3所示方法300或图4所示方法400中的安全处理设备。
如图8所示,计算设备800包括:总线802、处理器804、存储器806和通信接口808。处理器804、存储器806和通信接口808之间通过总线802通信。计算设备800可以是服务器或终端设备。应理解,本申请不限定计算设备800中的处理器、存储器的个数。
总线802可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线802可包括在计算设备800各个部件(例如,处理器804、存储器806、通信接口808)之间传送信息的通路。
处理器804可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器806可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器806还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
参见图8,存储器806中存储有可执行的程序代码,处理器804执行该可执行的程序代码以分别实现图7所示的装置700中的接收单元701、处理单元702和发送单元703的功能,从而实现上述任意实施例提供的方法。也即,存储器806上存有用于执行上述任意实施例提供的方法的指令。或者,
通信接口808使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备800与其他设备或通信网络之间的通信。
本申请实施例还提供了一种处理数据的集群。该处理数据的集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图9所示,所述处理数据的集群包括至少一个计算设备800。处理数据的集群中的一个或多个计算设备800中的存储器806中可以存有相同的用于执行上述任意实施例提供的方法的指令。
在一些可能的实现方式中,该处理数据的集群中的一个或多个计算设备800的存储器806中也可以分别存有用于执行上述数据管理的方法的部分指令。换言之,一个或多个计算设备800的组合可以共同执行用于执行上述任意实施例提供的方法的指令。
在一些可能的实现方式中,处理数据的集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图10示出了一种可能的实现方式。如图10所示,两个计算设备800A和800B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。
在这一类可能的实现方式中,计算设备800A中的存储器806中存有执行如图7所示实施例中的处理单元702功能的指令。同时,计算设备800B中的存储器806中存有执行如图7所示实施例中的接收单元701和发送单元703的功能的指令。
应理解,图10中示出的计算设备800A的功能也可以由多个计算设备800完成。同样,计算设备800B的功能也可以由多个计算设备800完成。
本申请实施例还提供了另一种处理数据的集群。该处理数据的集群中各计算设备之间的连接关系可以类似的参考图10所述处理数据的集群的连接方式。不同的是,该处理数据的集群中的一个或多个计算设备800中的存储器806中可以存有相同的用于执行上述任意实施例提供的方法的指令。
在一些可能的实现方式中,该处理数据的集群中的一个或多个计算设备800的存储器806中也可以分别存有用于执行上述任意实施例提供的方法的部分指令。换言之,一个或多个计算设备800的组合可以共同执行用于执行上述任意实施例提供的方法的指令。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行上述任意实施例提供的方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述任意实施例提供的方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种处理数据的方法,其特征在于,所述方法应用于云服务系统包括的安全处理设备,所述安全处理设备包括可信执行环境TEE,所述云服务系统还包括线性运算设备,所述线性运算设备是图形处理器GPU,所述方法包括:
接收终端设备发送的数据处理请求,所述数据处理请求包括待处理的第一数据和第二数据;
将所述第一数据和所述第二数据输入到所述TEE中;
向所述GPU发送线性运算请求,所述线性运算请求包括所述TEE中的与所述第一数据相对应的第三数据和与所述第二数据相对应的第四数据;
接收所述GPU发送的线性运算响应,所述线性运算响应包括第一运算结果,所述第一运算结果是所述第三数据和所述第四数据之间的线性运算结果;
将所述第一运算结果输入到所述TEE中;
向所述终端设备发送数据处理响应,所述处理响应包括所述TEE中的与所述第一运算结果相对应的第二运算结果,所述第二运算结果是所述第一数据和所述第二数据之间的线性运算结果;
其中,所述第一数据包括第一矩阵,所述第二数据包括第二矩阵,所述第三数据包括第三矩阵,所述第四数据包括第四矩阵,所述向所述GPU发送线性运算请求之前,还包括:
从所述第一矩阵包括的每个数据元素的绝对值和所述第二矩阵包括的每个数据元素的绝对值中选择最大绝对值,基于所述最大绝对值获取实数范围,所述实数范围包括的每个数值为非零实数;
其中,所述实数范围的下限值为-2L/2,所述实数范围的上限值为2L/2,在为偶数时,MAX为该最大绝对值,为向上取整运算,在为奇数时,
从所述实数范围中随机选取得到多个混淆向量;
在所述TEE中,基于所述多个混淆向量,混淆所述第一矩阵包括的数据元素得到所述第三矩阵,以及混淆所述第二矩阵包括的数据元素得到所述第四矩阵。
2.如权利要求1所述的方法,其特征在于,所述第一数据是用于训练人工智能AI模型的训练数据,所述第二数据是所述AI模型的参数;或者,
所述第一数据是需要所述AI模型推理的数据,所述第二数据是所述AI模型的参数。
3.如权利要求1所述的方法,其特征在于,所述第一运算结果是所述第三矩阵和所述第四矩阵相乘得到的结果,或者,所述第一运算结果是所述第三矩阵和所述第四矩阵相除得到的结果。
4.如权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
获取多个置换向量;
所述基于所述多个混淆向量,混淆所述第一矩阵包括的数据元素得到所述第三矩阵,以及混淆所述第二矩阵包括的数据元素得到所述第四矩阵,包括:
基于所述多个置换向量对所述第一矩阵包括的数据元素的位置进行变换得到第五矩阵,以及对所述第二矩阵包括的数据元素的位置进行变换得到第六矩阵;
基于所述多个混淆向量,混淆所述第五矩阵包括的数据元素得到所述第三矩阵,以及混淆所述第六矩阵包括的数据元素得到所述第四矩阵。
5.如权利要求1-4任一项所述的方法,其特征在于,所述基于所述多个混淆向量,混淆所述第一矩阵包括的数据元素得到所述第三矩阵,以及混淆所述第二矩阵包括的数据元素得到所述第四矩阵之前,还包括:
将所述第一矩阵包括的值为0的数据元素以及所述第二矩阵包括的值为0的数据元素均替换为第一实数,所述第一实数不等于0。
6.一种处理数据的装置,其特征在于,所述装置应用于云服务系统包括的安全处理设备,所述安全处理设备包括可信执行环境TEE,所述云服务系统还包括线性运算设备,所述线性运算设备是图形处理器GPU,所述装置包括:
接收单元,用于接收终端设备发送的数据处理请求,所述数据处理请求包括待处理的第一数据和第二数据;
处理单元,用于将所述第一数据和所述第二数据输入到所述TEE中;
发送单元,用于向所述GPU发送线性运算请求,所述线性运算请求包括所述TEE中的与所述第一数据相对应的第三数据和与所述第二数据相对应的第四数据;
所述接收单元,还用于接收所述GPU发送的线性运算响应,所述线性运算响应包括第一运算结果,所述第一运算结果是所述第三数据和所述第四数据之间的线性运算结果;
所述处理单元,还用于将所述第一运算结果输入到所述TEE中;
所述发送单元,还用于向所述终端设备发送数据处理响应,所述处理响应包括所述TEE中的与所述第一运算结果相对应的第二运算结果,所述第二运算结果是所述第一数据和所述第二数据之间的线性运算结果;
其中,所述第一数据包括第一矩阵,所述第二数据包括第二矩阵,所述第三数据包括第三矩阵,所述第四数据包括第四矩阵,所述处理单元,还用于:
从所述第一矩阵包括的每个数据元素的绝对值和所述第二矩阵包括的每个数据元素的绝对值中选择最大绝对值,基于所述最大绝对值获取实数范围,所述实数范围包括的每个数值为非零实数;
其中,所述实数范围的下限值为-2L/2,所述实数范围的上限值为2L/2,在为偶数时,MAX为该最大绝对值,为向上取整运算,在为奇数时,
从所述实数范围中随机选取得到多个混淆向量;
在所述TEE中,基于所述多个混淆向量,混淆所述第一矩阵包括的数据元素得到所述第三矩阵,以及混淆所述第二矩阵包括的数据元素得到所述第四矩阵。
7.如权利要求6所述的装置,其特征在于,所述第一数据是用于训练人工智能AI模型的训练数据,所述第二数据是所述AI模型的参数;或者,
所述第一数据是需要所述AI模型推理的数据,所述第二数据是所述AI模型的参数。
8.如权利要求6所述的装置,其特征在于,所述第一运算结果是所述第三矩阵和所述第四矩阵相乘得到的结果,或者,所述第一运算结果是所述第三矩阵和所述第四矩阵相除得到的结果。
9.如权利要求6-8任一项所述的装置,其特征在于,所述处理单元,用于:
获取多个置换向量;
基于所述多个置换向量对所述第一矩阵包括的数据元素的位置进行变换得到第五矩阵,以及对所述第二矩阵包括的数据元素的位置进行变换得到第六矩阵;
基于所述多个混淆向量,混淆所述第五矩阵包括的数据元素得到所述第三矩阵,以及混淆所述第六矩阵包括的数据元素得到所述第四矩阵。
10.如权利要求6-9任一项所述的装置,其特征在于,所述处理单元,还用于:
将所述第一矩阵包括的值为0的数据元素以及所述第二矩阵包括的值为0的数据元素均替换为第一实数,所述第一实数不等于0。
11.一种处理数据的集群,其特征在于,所述集群包括至少一个计算设备,所述至少一个计算设备中的每个设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述集群执行如权利要求1-5任一项所述的方法。
12.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-5任一项所述的方法。
13.一种计算机程序产品,其包括计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-5任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310181818 | 2023-02-28 | ||
CN2023101818187 | 2023-02-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116701831A CN116701831A (zh) | 2023-09-05 |
CN116701831B true CN116701831B (zh) | 2024-07-05 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704850A (zh) * | 2019-09-03 | 2020-01-17 | 华为技术有限公司 | 人工智能ai模型的运行方法和装置 |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704850A (zh) * | 2019-09-03 | 2020-01-17 | 华为技术有限公司 | 人工智能ai模型的运行方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于矩阵变换的大数据隐私保护关键技术研究;刘錞;《中国优秀硕士学位论文全文数据库-信息科技辑》(第01期);I138-59 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110892672B (zh) | 提供设备匿名性的密钥认证声明生成 | |
US10693848B2 (en) | Installation of a terminal in a secure system | |
CN108566381A (zh) | 一种安全升级方法、装置、服务器、设备和介质 | |
CN110492990B (zh) | 区块链场景下的私钥管理方法、装置及系统 | |
Lu et al. | Robust biometrics based authentication and key agreement scheme for multi-server environments using smart cards | |
US20190238519A1 (en) | Layered encryption for end to end communication | |
US10601590B1 (en) | Secure secrets in hardware security module for use by protected function in trusted execution environment | |
CN109981576B (zh) | 密钥迁移方法和装置 | |
CN113347206A (zh) | 一种网络访问方法和装置 | |
Velliangiri et al. | An efficient lightweight privacy-preserving mechanism for industry 4.0 based on elliptic curve cryptography | |
JP6893626B1 (ja) | エッジコンピューティングによるビッグデータ・ネットワークデータの保護方法及びシステム | |
CN109660534B (zh) | 基于多商户的安全认证方法、装置、电子设备及存储介质 | |
US20180130056A1 (en) | Method and system for transaction security | |
CN102970135B (zh) | 用于发现共享秘密而不泄漏非共享秘密的方法和设备 | |
CN111295861B (zh) | 多因素认证 | |
WO2018112482A1 (en) | Method and system for distributing attestation key and certificate in trusted computing | |
WO2023151479A1 (zh) | 数据处理方法及设备 | |
Kang et al. | Efficient and robust user authentication scheme that achieve user anonymity with a Markov chain | |
KR101246339B1 (ko) | 큐알 코드 보안인증 시스템 및 그 방법 | |
CN115473655A (zh) | 接入网络的终端认证方法、装置及存储介质 | |
Diaz et al. | A formal methodology for integral security design and verification of network protocols | |
CN114240347A (zh) | 业务服务安全对接方法、装置、计算机设备、存储介质 | |
CN116097615B (zh) | 使用密钥协商的认证 | |
US20170214670A1 (en) | Symmetric encryption key generation/distribution | |
CN113434882A (zh) | 应用程序的通讯保护方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |