CN113569265B - 一种数据处理方法、系统及装置 - Google Patents
一种数据处理方法、系统及装置 Download PDFInfo
- Publication number
- CN113569265B CN113569265B CN202111085665.3A CN202111085665A CN113569265B CN 113569265 B CN113569265 B CN 113569265B CN 202111085665 A CN202111085665 A CN 202111085665A CN 113569265 B CN113569265 B CN 113569265B
- Authority
- CN
- China
- Prior art keywords
- ciphertext
- parameter
- tee
- current
- subset
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Abstract
本说明书实施例提供一种数据处理方法、系统及装置,应用于终端设备,终端设备包含TEE和REE,TEE存储有目标模型的运行文件,运行文件用于执行目标模型的若干个算子,其中包括第一算子;REE中存储有执行第一算子所需的第一参数密文集合,第一参数密文集合被预先划分为多个密文子集,方法包括:通过多个执行流程,多次执行第一算子,其中任意一次执行流程包括:从REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集;在TEE中,利用所存储的第一密钥,解密当前密文子集,得到对应的当前明文子集;在TEE中,基于当前明文子集以及当前执行流程的输入数据,执行第一算子,得到当前执行流程对应的当前执行结果。
Description
技术领域
本说明书涉及信息安全技术领域,尤其涉及一种数据处理方法、系统及装置。
背景技术
随着隐私保护与效率的要求,越来越多的业务模型被部署到终端设备上执行。一个业务模型的生成涉及大量的训练以及研发等人力成本的投入,业务模型通常被看作一个企业的核心知识产权。
目前,为了更好的保护业务模型,当前许多方案尝试将部分或者全部业务模型放入终端设备的可信执行环境TEE中进行训练或者在TEE中进行计算。
然而,目前终端设备的TEE的存储空间等资源非常有限,在TEE中计算的业务模型规模受到TEE的存储空间等资源的限制。
发明内容
本说明书一个或多个实施例提供了一种数据处理方法、系统及装置,以实现在TEE中更好的完成业务模型的执行。
根据第一方面,提供一种数据处理方法,应用于终端设备,所述终端设备设置可信执行环境TEE和通用执行环境REE,所述TEE存储有目标模型的运行文件,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子;所述REE中存储有执行所述第一算子所需的第一参数密文集合,所述第一参数密文集合被预先划分为多个密文子集,所述方法包括:
通过多个执行流程,多次执行所述第一算子,其中任意一次执行流程包括:
从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集;
在所述TEE中,利用所存储的第一密钥,解密所述当前密文子集,得到对应的当前明文子集;
在所述TEE中,基于所述当前明文子集以及当前执行流程的输入数据,执行所述第一算子,得到当前执行流程对应的当前执行结果。
在一种可实施方式中,当所述当前执行流程为所述多个执行流程中的首个执行流程,所述输入数据包括,所述第一算子的前一算子的执行结果;
当所述当前执行流程不是首个执行流程,所述输入数据包括,前一执行流程的执行结果。
在一种可实施方式中,执行所述第一算子,包括:
将所述当前明文子集加载至所述TEE的内存中,基于内存中加载的数据执行所述第一算子;
所述得到当前执行流程对应的当前执行结果之后,还包括:
从所述TEE的内存中,删除所述当前明文子集。
在一种可实施方式中,所述预先划分基于所述TEE的内存上限进行,所述多个密文子集中每一密文子集的明文数据量与所述运行文件的数据量之和不大于所述内存上限。
在一种可实施方式中,所述执行所述第一算子,包括:
确定所述TEE的内存的当前可用容量;
判断所述当前可用容量是否不小于所述当前明文子集的数据量;
在所述当前可用容量不小于所述当前明文子集的数据量的情况下,基于所述当前明文子集以及所述输入数据执行所述第一算子。
在一种可实施方式中,所述TEE还存储有所述目标模型对应的索引表,所述索引表用于指示每一密文子集在第一参数密文集合的位置信息;
从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集,具体包括:
从所述索引表中,确定出所述当前密文子集在所述第一参数密文集合中的第一位置信息;
基于所述第一位置信息,从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集。
在一种可实施方式中,所述第一位置信息包括:所述当前密文子集的长度及其在所述第一参数密文集合中的偏移量。
在一种可实施方式中,还包括:
在所述REE中,获得模型存储服务器发送的所述目标模型的运行文件的密文、索引表密文以及参数密文总集,其中,所述参数密文总集包括所述第一参数密文集合;
在所述REE中,存储所述参数密文总集,并将所述运行文件密文、索引表密文发送至所述TEE;
在所述TEE中,解密所述运行文件的密文及所述索引表密文,得到解密后的运行文件和索引表;
在所述TEE中,存储所述运行文件及所述索引表。
在一种可实施方式中,所述REE中设置所述TEE与所述REE的共享存储区,所述第一参数密文集合存储在所述共享存储区。
根据第二方面,提供一种数据处理方法,应用于服务器,所述方法包括:
获得目标模型的运行文件的密文及其对应的参数总集,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子,所述参数总集包括所述第一算子执行所需的第一参数集合;
基于目标终端设备中可信执行环境TEE的内存上限,对所述第一参数集合进行划分,得到对应的多个参数子集;
对各参数子集进行加密,得到对应的各密文子集,以得到所述第一算子对应的第一参数密文集合;
基于所述第一参数密文集合,生成参数密文总集;
将所述运行文件的密文以及所述参数密文总集发送至所述目标终端设备,以使所述目标终端设备在其通用执行环境REE中存储所述参数密文总集,以及在其TEE中执行解密后的所述运行文件。
在一种可实施方式中,所述基于目标终端设备中可信执行环境TEE的内存上限,对所述第一参数集合进行划分,得到对应的多个参数子集,包括:
判断所述第一参数集合的数据量与所述运行文件的数据量之和是否大于所述TEE的内存上限;
若判断结果为大于,基于所述内存上限对所述第一参数集合进行划分,得到对应的多个参数子集,其中,每一参数子集的数据量与所述运行文件的数据量之和不大于所述内存上限。
在一种可实施方式中,所述对所述第一参数集合进行划分,包括:
基于所述TEE的内存上限以及参数粒度,对所述第一参数集合进行划分,其中,所述参数粒度用于限定第一算子在一次执行流程中最少所需的参数个数。
在一种可实施方式中,还包括:
确定各密文子集在所述第一参数密文集合中的位置信息;
至少利用所述位置信息,生成索引表;
对所述索引表加密,得到索引表密文;
所述将所述运行文件的密文以及所述参数密文总集发送至所述目标终端设备,包括:
将所述索引表密文、所述运行文件的密文以及所述参数密文总集,发送至所述目标终端设备。
在一种可实施方式中,所述位置信息包括:各密文子集的长度和在所述第一参数密文集合中的偏移量。
在一种可实施方式中,各密文子集为:所述第一算子执行所需的若干张量参数密文的集合;
所述至少利用所述位置信息,生成索引表,包括:
从所述运行文件中,确定出各密文子集的各张量参数对应的张量个数,各张量的张量名以及张量名长度;
至少利用所述各张量参数对应的张量个数,各张量的张量名,张量名长度,以及所述位置信息,生成索引表。
根据第三方面,提供一种数据处理系统,包括执行第一方面所述方法的终端设备,以及执行第一方面所述方法的服务器。
根据第四方面,提供一种数据处理装置,应用于终端设备,所述终端设备设置可信执行环境TEE和通用执行环境REE,所述TEE存储有目标模型的运行文件,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子;所述REE中存储有执行所述第一算子所需的第一参数密文集合,所述第一参数密文集合被预先划分为多个密文子集,所述装置包括:
执行模块,配置为通过多个执行流程,多次执行所述第一算子,其中,执行模块通过如下单元实现对所述第一算子的任意一次执行流程:
读取单元,配置为从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集;
解密单元,配置为在所述TEE中,利用所存储的第一密钥,解密所述当前密文子集,得到对应的当前明文子集;
执行单元,配置为在所述TEE中,基于所述当前明文子集以及当前执行流程的输入数据,执行所述第一算子,得到当前执行流程对应的当前执行结果。
根据第五方面,提供一种数据处理装置,应用于服务器,所述装置包括:
第一获得模块,配置为获得目标模型的运行文件的密文及其对应的参数总集,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子,所述参数总集包括所述第一算子执行所需的第一参数集合;
划分模块,配置为基于目标终端设备中可信执行环境TEE的内存上限,对所述第一参数集合进行划分,得到对应的多个参数子集;
第一加密模块,配置为对各参数子集进行加密,得到对应的各密文子集,以得到所述第一算子对应的第一参数密文集合;
第一生成模块,配置为基于所述第一参数密文集合,生成参数密文总集;
第一发送模块,配置为将所述运行文件的密文以及所述参数密文总集发送至所述目标终端设备,以使所述目标终端设备在其通用执行环境REE中存储所述参数密文总集,以及在其TEE中执行解密后的所述运行文件。
根据第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
根据第七方面,提供一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
根据第八方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第二方面所述的方法。
根据第九方面,提供一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面所述的方法。
根据本说明书实施例提供的方法、系统及装置,第一算子执行所需的第一参数密文集合被预先划分为多个密文子集,存储于终端设备的REE。在TEE中执行运行文件中的第一算子时,通过多个执行流程,完成对第一算子的执行,可以减少一次执行流程中内存的占用,在一定程度上克服TEE的存储空间等资源有限的问题,以实现在TEE中更好的完成模型的执行。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书披露的一个实施例的实施框架示意图;
图2为实施例提供的数据处理方法的一种流程示意图;
图3为实施例提供的数据处理方法的一种流程示意图;
图4为实施例提供的数据处理系统的一种示意性框图;
图5为实施例提供的数据处理装置的一种示意性框图;
图6为实施例提供的数据处理装置的一种示意性框图。
具体实施方式
下面将结合附图,详细描述本说明书实施例的技术方案。
本说明书实施例披露一种数据处理方法、系统及装置,下面对数据处理方法的应用场景和发明构思进行介绍,具体如下:
目前,为了更好的保护业务模型,当前许多方案尝试将部分或者全部业务模型放入终端设备的可信执行环境TEE中进行训练或者在TEE中进行计算。
然而,目前终端设备的TEE的存储空间等资源非常有限,在TEE中计算的业务模型规模受到TEE的存储空间等资源的限制。
鉴于此,本说明书实施例提供了一种数据处理方法。根据该方法,模型运算服务器供应方的模型存储服务器在向终端设备下发目标模型之前,对运行目标模型所需数据进行拆分,得到目标模型对应的用于执行目标模型的若干个算子的运行文件,以及该运行文件执行所需的参数总集,其中,目标模型可以是整个业务模型也可以是业务模型的部分模型。
可以理解的,目标模型对应的运行文件中的各算子,执行时所需参数的数据量有大有小。其中,某些算子执行时所需参数的数据量较大,例如不小于终端设备TEE的内存上限,本说明书实施例中,可以称这类算子为第一算子。而某些算子执行时所需参数的数据量较小,例如小于终端设备TEE的内存上限,本说明书实施例中,可以称这类算子为第二算子。
针对第一算子,为了保证其可以在TEE中执行,需要对第一算子执行所需的参数,称为第一参数集合进行划分。具体的,上述模型运算服务器基于终端设备的TEE的内存上限,对第一参数集合进行划分,得到对应的多个参数子集,其中,需要保证每一密文子集的明文数据量与运行文件的数据量之和不大于内存上限。然后,服务器对各参数子集进行加密,得到第一算子对应的第一参数密文集合;并基于第一参数密文集合,生成参数密文总集。最终,服务器可以将参数密文总集和运行文件的密文分别发送至终端设备。终端设备接收到上述参数密文总集和运行文件的密文后,在不同安全级别的环境中,分别对其进行存储和处理。其中,参数密文总集包括运行文件中所有算子执行所需的参数的密文。
后续的,在终端设备TEE中执行第一算子时,通过多次执行流程,多次执行完成第一算子。针对第二算子,其执行所需的参数集合可以不进行划分。在终端设备TEE中执行第二算子时,可以一次执行完成第二算子,进而实现对运行文件中所有算子的执行。
相应的,图1示出了根据本说明书披露的一个实施例终端设备中的实施框架示意图。如图1所示,终端设备设置有可信执行环境TEE和通用执行环境REE,TEE的安全存储区域存储有目标模型的运行文件,运行文件用于执行目标模型的若干个算子,其中包括第一算子;REE中的存储区域存储有执行各算子所需的参数密文总集,其中,如图1所示,包括第一算子所需的第一参数密文集合,第一参数密文集合被预先划分为多个密文子集,例如包括密文子集1、密文子集2……密文子集n。其中,算子执行所需的参数可以包括一个或多个张量对应的参数,后续的,可以将每一张量对应的参数称为张量参数。每一密文子集可以包括第一算子执行所需的一个或多个张量参数的密文(即张量参数密文),可以称每一张量参数密文为一个数据块block。如图1所示,密文子集1可以包括block1,block2……block m。张量可以表征算子执行所需参数的最小单位。其中,n和m均为正整数。
在该实施架构下,模型的数据处理方法可以包括:通过多个执行流程,多次执行第一算子,其中任意一次执行流程包括:从REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集,如图1所示,当前密文子集为密文子集1;在TEE中,利用所存储的第一密钥,解密当前密文子集,得到对应的当前明文子集;在TEE中,基于当前明文子集以及当前执行流程的输入数据,执行第一算子,得到当前执行流程对应的当前执行结果。
可以理解的是,当当前执行流程为多个执行流程中的首个执行流程,上述的当前执行流程的输入数据包括,第一算子的前一算子的执行结果;当当前执行流程不是首个执行流程,上述的当前执行流程的输入数据包括,前一执行流程的执行结果。
在一种实现方式中,该目标模型可以是某一完整的业务模型。考虑到TEE的物理存储空间的有限性,该目标模型也可以是某一业务模型中的指定模型部分,其中,该指定模型部分为业务模型中需要被保护的模型部分。在TEE中运行业务模型中需要被保护的目标模型,在一定程度上实现了对业务模型的保护,且避免了对TEE的物理存储空间的更多占用。
本实施例中,第一参数密文集合存储于REE中,既避免了目标模型参数的泄露,且在一定程度上减轻了终端设备的TEE中的存储资源消耗。运行文件存储于TEE中,避免了运行文件的泄露并避免了其被篡改。在TEE中执行运行文件中的第一算子的过程中,通过多个执行流程,执行完成第一算子。在各执行流程中,从REE中,读取得到当前执行流程所需的当前密文子集,对其解密,得到对应的当前明文子集,进而基于当前明文子集及当前执行流程的输入数据,执行第一算子。通过多个执行流程,完成对第一算子的执行,可以减少一次执行流程中内存的占用,以在一定程度上克服TEE的存储空间等资源有限的问题,实现在TEE中更好的完成模型的执行。
下面结合具体实施例,对本说明书提供的数据处理方法进行阐述。
图2示出了本说明书一个实施例中数据处理方法的流程示意图。该方法可以通过终端设备实现,该终端设备可以为任何具有计算、处理能力的设备,终端设备可以包括但不限于:智能手机、电脑以及IOT机具。终端设备设置有可信执行环境TEE和通用执行环境REE,TEE存储有目标模型的运行文件,运行文件用于执行目标模型的若干个算子,其中包括第一算子;REE中存储有执行第一算子所需的第一参数密文集合,第一参数密文集合被预先划分为多个密文子集。
运行文件用于执行目标模型的若干算子,其中包括第一算子。可以理解的,运行文件还限定各算子之间的执行逻辑,该执行逻辑用于限定各算子的执行顺序。终端设备在TEE中执行运行文件中各算子时,可以根据执行逻辑依次执行各算子。其中,该运行文件为目标模型的图文件。
第一参数密文集合为第一算子执行所需的各参数加密后生成的,包括第一算子执行所需的所有参数的密文。该第一参数密文集合被预先划分为多个密文子集,每一密文子集包括第一算子执行所需的一个或多个张量参数密文。算子运算所需的参数可以包括权重weight和偏差bias。第一参数密文集合包含于REE存储的目标模型对应的参数密文总集中,该参数密文总集包括运行文件中各算子执行所需的参数密文集合。
一种实现中,终端设备存在模型运算服务需求时,为了保护目标模型,模型存储服务器可以向终端设备下发该目标模型对应的运行文件的密文和参数密文总集,其中,参数密文总集包括第一算子的第一参数密文集合。终端设备获得运行文件的密文和参数密文总集,在不同安全级别的环境中,分别对其进行存储和处理。具体的,运行文件的密文被传输至终端设备的TEE中,并解密存储。参数密文总集被存储到REE的存储区域,该存储区域可被TEE以及REE共享。一种情况中,该存储区域为ION内存。
在上述架构下, 所述方法可以包括:通过多个执行流程,多次执行第一算子,其中,如图2所示,任意一次执行流程,可以包括如下步骤S210-S230:
S210:从REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集。
S220:在TEE中,利用所存储的第一密钥,解密当前密文子集,得到对应的当前明文子集。
S230:在TEE中,基于当前明文子集以及当前执行流程的输入数据,执行第一算子,得到当前执行流程对应的当前执行结果。
其中,该第一算子中的“第一”并不表示顺序或其他方面的限定,而是泛指某一个或任一个。第一算子可以为运行文件中任一个所对应参数密文集合被预先划分为多个密文集合的算子。在一种情况中,上述的预先划分基于TEE的内存上限进行,即第一算子的多个密文子集的划分是基于终端设备的TEE的内存上限进行的,该多个密文子集中每一密文子集的明文数据量与运行文件的数据量之和不大于内存上限。
在一种情况中,运行文件中还可以包括第二算子,该第二算子所对应参数密文集合未被预先划分。
终端设备在TEE中,可以按照运行文件中各算子的执行逻辑,依次顺序执行各算子。其中,在执行第一算子时,通过多个执行流程,多次执行第一算子。一种情况中,执行第一算子所需的执行流程的次数,与第一算子的第一参数密文集合被预先划分的密文子集的个数相关。例如:若第一算子的第一参数密文集合被预先划分为5个密文子集,相应的,可以通过5个执行流程,执行完成第一算子。在执行第二算子时,可以直接通过一个执行流程,一次执行完成第二算子。
终端设备在TEE中,执行第一算子和第二算子的一次执行流程中,其具体的执行动作相同,后续的,本说明书实施例以第一算子的一次执行流程为例,对本方案进行说明。
在第一算子的任意一次执行流程中,终端设备在TEE中,针对第一算子,从REE存储的该第一算子对应的第一参数密文集合,即其对应的多个密文子集中,读取当前执行流程所需的当前密文子集Em。在TEE中,利用所存储的第一密钥m,解密当前密文子集Em,得到当前密文子集Em对应的当前明文子集E。在TEE中,获得当前执行流程的输入数据,基于当前明文子集E以及当前执行流程的输入数据,执行第一算子,得到当前执行流程对应的当前执行结果。
一种实现中,在REE中存储第一参数密文集合之后,可以向TEE反馈第一参数密文集合中各密文子集的存储地址信息。在TEE中,针对当前待执行的第一算子,基于该存储地址信息,从REE存储的多个密文子集中,读取出当前执行流程所需的当前密文子集。
其中,当当前执行流程为多个执行流程中的首个执行流程,当前执行流程的输入数据包括,第一算子的前一算子的执行结果;当当前执行流程不是首个执行流程,当前执行流程的输入数据包括,前一执行流程的执行结果。
在TEE中,可以预先存储有第一密钥。其中,该第一密钥可以是终端设备与下发目标模型的模型存储服务器预先约定的密钥。在模型存储服务器侧,模型存储服务器利用第一密钥对应的第二密钥分别加密第一算子执行所需的参数,得到第一参数密文集合中的多个密文子集。相应的,终端设备侧,在TEE中,利用第一密钥解密从REE中读取的当前密文子集。在TEE中预存第一密钥,并且在TEE中利用第一密钥解密密文,更好的实现对模型的参数的保护,避免其被窃取。
一种情况,该第一密钥可以与第二密钥相同。模型存储服务器利用对称加密算法以及第二密钥加密参数;终端设备侧,在TEE中利用对称加密算法对应的解密算法以及第一密钥,解密当前密文子集,得到当前密文子集对应的当前明文子集。另一种情况,该第一密钥可以与第二密钥不同。模型存储服务器利用非对称加密算法以及第二密钥加密参数。终端设备侧,在TEE中利用该第一密钥以及该非对称加密算法对应的解密算法,解密当前密文子集,得到当前密文子集对应的当前明文子集。
本实施例中,通过多个执行流程,完成对第一算子的执行,可以减少一次执行流程中内存的占用,以在一定程度上克服TEE的存储空间等资源有限的问题,实现在TEE中更好的完成模型的执行。
在本说明书的一种可实施方式中,执行第一算子,可以包括如下步骤11:
步骤11:将当前明文子集加载至TEE的内存中,基于内存中加载的数据执行第一算子。
相应的,所述得到当前执行流程对应的当前执行结果之后,还可以包括如下步骤:从TEE的内存中,删除当前明文子集。
本实施方式中,将当前明文子集加载至TEE的内存中,基于内存中加载的数据执行第一算子。考虑到TEE内存的有限性,在得到当前执行流程对应的当前执行结果之后,需要将当前内存中加载的数据即当前明文子集,从TEE的内存中删除,避免内存的占用。可以理解的是,一种情况中,将当前明文子集加载至TEE的内存之前,当前执行流程的输入数据已被预先加载至TEE的内存。后续的,得到当前执行流程对应的当前执行结果后,该当前执行结果保留在内存中直接作为后一执行流程的输入数据。
在另一种实施方式中,得到当前执行流程对应的当前执行结果之后,在TEE中,读取到后一执行流程所需的密文子集,并解密得到明文子集之后,在TEE的内存中加载该明文子集时,可以直接覆盖内存中当前已加载的当前密文子集。其中,当前执行结果作为该后一执行流程的输入数据,保留在了TEE的内存中,覆盖了当前执行流程的输入数据。
在本说明书的一种可实施方式中,在该数据处理流程中,为了保证TEE中算子的正常执行,本说明书实施例中还设置了用于预判TEE内存是否足够的机制,相应的,所述执行第一算子,可以包括如下步骤21-23:
步骤21:确定TEE的内存的当前可用容量。
步骤22:判断当前可用容量是否不小于当前明文子集的数据量。
步骤23:在当前可用容量不小于当前明文子集的数据量的情况下,基于当前明文子集以及输入数据执行第一算子。
本实现方式中,在得到当前明文子集之后,可以首先确定TEE的内存的当前可用容量,并判断当前可用容量是否不小于当前明文子集的数据量,即判断TEE的内存是否可以承载当前明文子集。在判断当前可用容量不小于当前明文子集的数据量的情况下,将当前明文子集加载至TEE的内存,进而基于当前明文子集以及输入数据执行第一算子。在判断当前可用容量小于当前明文子集的数据量的情况下,可以直接输出警示TEE的内存不足的信息。本实现方式中,可以避免在TEE的内存不足以承载当前明文子集,即当前可用容量小于当前明文子集的数据量的情况下,将当前明文子集加载至内存的过程中,出现终端设备崩溃的情况。
在本说明书的一种可实施方式中,TEE还存储有目标模型对应的索引表,索引表用于指示每一密文子集在第一参数密文集合的位置信息;
S210,可以具体包括如下步骤31-32:
步骤31:从索引表中,确定出当前密文子集在第一参数密文集合中的第一位置信息。
步骤32:基于第一位置信息,从REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集。
本实施例中,TEE的安全存储区域还可以存储有目标模型对应的索引表,索引表用于指示每一密文子集在第一参数密文集合的位置信息。一种情况中,密文子集中包括第一算子执行所需的若干张量参数密文,相应的,索引表中还可以指示出各张量参数密文在密文子集中的位置信息,以保证可以读取到完整的张量参数密文。
一种实现中,索引表可以记录有运行文件中各算子执行所需的各张量参数密文在参数密文总集中的位置信息,从而可以指示出运行文件中各算子(包括第一算子)的参数密文集合在参数密文总集中的位置信息,以及指示出各算子执行所需的若干张量参数密文在相应的参数密文集合中以及参数密文总集中的位置信息。其中,参数密文总集为所有算子的参数密文集合所组成的总集合。
一种情况中,该索引表中还可以记录有各张量参数的其他相关信息,例如可以包括:运行文件中各算子执行所需的各张量参数对应的张量名、张量名长度以及张量名总个数。其中,通过张量名总个数,与运行文件中记载的张量名的总个数进行对比,可以辅助验证索引表与运行文件的对应性,也可以辅助验证索引表是否被篡改。
其中,算子执行所需的张量参数的张量名与张量参数密文是一一对应的,且算子执行所需的张量参数的张量名、与索引表中该张量参数密文在算子对应的参数密文集合中的位置信息是一一对应的。相应的,在TEE中,在针对第一算子的当前执行流程中,可以从索引表中,确定出当前执行流程所需的当前密文子集中各张量参数密文对应的第一张量名以及当前密文子集在第一参数密文集合中的第一位置信息(包括其中各张量参数密文在第一参数密文集合中的位置信息);进而基于第一张量名和第一位置信息,从REE 存储的多个密文子集中,读取当前执行流程所需的当前密文子集,即读取得到当前密文子集中各张量参数密文。
一种情况,该索引表可以是在模型存储服务器对参数密文总集中各算子运算所需的张量参数进行加密的过程中生成的。相应的,可以是由模型存储服务器对索引表进行加密后,下发至终端设备。终端设备在TEE中获得索引表密文,在TEE中对索引表密文解密,并存储解密所得的索引表。可以理解的,索引表加密传输至终端设备,且存储于终端设备的TEE中,可以避免其被恶意篡改。
在一种实现方式中,第一位置信息可以包括:当前密文子集的长度及其在第一参数密文集合中的偏移量。一种情况中,第一位置信息还可以包括:当前密文子集中各张量参数密文的长度以及各张量参数密文在第一参数密文集合及在参数密文总集中的偏移量。
本实施例中,终端设备在TEE中通过索引表确定得到第一算子在当前执行流程所需的当前密文子集,可以在一定程度上提高模型运算效率。
在本说明书的一种可实施方式中,目标模型为:模型运算服务供应方在终端设备存在使用模型运算服务的需求的情况下,向终端设备提供的。相应的,终端设备在存在使用模型运算服务的需求的情况下,可以向存储有目标模型的模型存储服务器请求下发目标模型,其中,该模型存储服务器为模型运算服务供应方所提供的服务器。
一种情况,模型存储服务器在接收到终端设备发送的目标模型下发请求的情况下,模型存储服务器将运行目标模型所需数据拆分为运行文件及其对应的参数总集,并为了保证数据下发过程中的安全,分别对运行文件以及参数总集进行加密,得到运行文件的密文以及参数密文总集,并将该运行文件的密文以及参数密文总集发送至终端设备。其中,参数总集包括运行文件中所有算子执行所需的参数集合,其中至少一个算子执行所需的参数集合被预先基于终端设备TEE的内存上限,划分为多个参数子集。
另一种情况,模型存储服务器直接存储有目标模型对应的运行文件的密文以及参数密文总集,在接收到终端设备发送的用于请求下发目标模型的请求的情况下,直接将所存储的目标模型对应的运行文件的密文以及参数密文总集发送至终端设备。
终端设备在REE中获得运行文件的密文以及参数密文总集,将参数密文总集存储在REE的存储区域,即REE和TEE的共享存储区中。将运行文件的密文发送至TEE,在TEE中解密运行文件的密文,得到运行文件并存储,进而执行后续的数据处理流程。
在一种可实施方式中,为了保证后续的终端设备在数据处理流程中,对参数密文总集中各算子执行所需的参数的准确读取,模型存储服务器侧,在生成参数密文总集的同时,生成索引表,以使得终端设备可以通过该索引表准确的从参数密文总集中读取到各算子执行所需参数的密文。所述方法还可以包括如下步骤41-44:
步骤41:在REE中,获得模型存储服务器发送的目标模型的运行文件的密文、索引表密文以及参数密文总集。其中,参数密文总集包括第一参数密文集合,还包括运行文件中除第一算子外的其他算子的参数密文集合。
步骤42:在REE中,存储参数密文总集,并将运行文件密文、索引表密文发送至TEE。
步骤43:在TEE中,解密运行文件的密文及索引表密文,得到解密后的运行文件和索引表。
步骤44:在TEE中,存储运行文件及索引表。
一种实现中,目标模型可以是某一完整的业务模型或某一业务模型中的指定模型部分,其中,该指定模型部分为业务模型中需要被保护的模型部分。在TEE中运行业务模型中需要被保护的目标模型,实现了对业务模型的保护,且避免了对TEE的存储空间的更多占用。
相应的,在一种可实施方式中,目标模型为业务模型中需要保护的模型部分,业务模型还包括除目标模型外的主干模型;在该情况下,该方法还可以包括:在REE中,获得模型存储服务器发送的主干模型;在REE中,基于所获得的模型输入数据,运行主干模型,得到对应的主干模型输出数据;将主干模型输出数据发送至TEE。后续的,在执行运行文件中位于执行逻辑的首位的算子时,该主干模型输出数据即为该算子的首次执行流程的输入数据。
一种实现中,在TEE中,运行文件执行完成即运行文件所有算子执行完成后,可以得到相应的计算结果,在TEE中,将该计算结果发送至REE,以供终端设备的目标应用的使用,其中,目标应用可以指终端设备中使用目标模型的运算服务的应用,也指终端设备中向模型存储服务器发送目标模型下发请求的应用。一种情况中,上述在TEE中,将该计算结果发送至REE的过程,可以是:在TEE中,将该计算结果发送至REE与TEE的共享存储区。
相应于上述方法实施例,本说明书实施例还提供了一种数据处理方法,应用于服务器,该服务器可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。该服务器为上述提到的模型存储服务器。如图3所示,该方法可以包括步骤S310-S350:
S310:获得目标模型的运行文件的密文及其对应的参数总集。
运行文件用于执行目标模型的若干个算子,其中包括第一算子,参数总集包括第一算子执行所需的第一参数集合。
其中,服务器在接收到目标终端设备发送的目标模型下发请求的情况下,获得待下发的目标模型的运行文件的密文及其对应的参数总集。在一种实现中,目标模型可以为一个功能完整的业务模型,也可以是一个业务模型中的需要保护的模型部分。该目标终端可以是任一需要服务器提供的模型运算服务的终端设备。
一种情况中,步骤S310可以具体设置为:服务器获得目标模型,将运行目标模型所需的数据划分为运行文件及其运行所需的参数总集,服务器可以调用第一加密接口,对运行文件进行加密,得到运行文件的密文。其中,该第一加密接口可以是openssl(OpenSecure Sockets Layer,开放式安全套接层协议)加密接口。可以通过调用第一加密接口,实现对第一加密算法的调用,进而实现对应数据的加密。该第一加密算法可以为对称加密算法,例如:AES加密算法。该第一加密算法也可以为非对称加密算法,服务器与终端设备预先约定好加解密数据的密钥即可。
由于目标模型对应的运行文件中的各算子,执行时所需参数的数据量有大有小,其中,可以包括执行时所需参数的数据量不小于终端设备TEE的内存上限的第一算子,以及执行时所需参数的数据量小于该内存上限的第二算子。为了保证第一算子在目标终端设备TEE中的正常执行,需要对第一算子执行时所需参数即第一参数集合进行划分,相应的执行步骤S320。
S320:基于目标终端设备中可信执行环境TEE的内存上限,对第一参数集合进行划分,得到对应的多个参数子集。其中每一参数子集的数据量小于该内存上限。
一种情况,服务器可以调控终端设备TEE的内存上限,例如:可以根据目标模型对应的各算子执行所需的参数的数据量,调控终端设备TEE的内存上限,以获得终端设备TEE的内存上限,进而执行步骤S320。另一种情况,服务器不可以调控终端设备TEE的内存上限,相应的,服务器可以预存该类终端设备的内存上限,或者可以确定在终端设备存在模型运算服务的情况下,从终端设备获得其TEE的内存上限,进而执行步骤S320。
S330:对各参数子集进行加密,得到对应的各密文子集,以得到第一算子对应的第一参数密文集合。服务器可以调用第二加密接口,对各参数子集进行加密,得到各参数子集对应的密文子集,以得到第一算子对应的第一参数密文集合。该第二加密接口可以是openssl加密接口。其中,可以通过调用第二加密接口,实现对第二加密算法的调用,进而实现对应数据的加密。一种情况中,该第二加密算法可以是对称加密算法,例如:AES加密算法。该第二加密算法也可以为非对称加密算法,服务器与终端设备预先约定好加解密数据的密钥即可。该第一加密接口与该第二加密接口可以为相同的加密接口,也可以为不同的加密接口。
一种情况中,上述对各参数子集进行加密的过程,可以是:对参数子集包括的各张量参数进行加密,得到各张量参数密文。以保证后续的目标终端设备对各张量参数的准确获得,保证算子的正常执行。
另一种情况,上述对各参数子集进行加密的过程,可以是,针对每一参数子集,对该参数子集包括的所有张量参数共同进行加密。相应的,后续的目标终端设备可以直接读取某一密文子集,进而解密得到该密文子集对应的所有张量参数明文。
S340:基于第一参数密文集合,生成参数密文总集。一种实现中,服务器得到运行文件中所有算子的参数密文集合(包括第一参数密文集合),基于所有的参数密文集合,生成参数密文总集。其中,各算子的参数密文集合中,可以存在部分或全部算子的参数密文集合被预先基于目标终端设备TEE的内存上限划分为多个密文子集。也可以存在部分算子的参数密文集合未被划分。其中,该类参数密文集合未被划分的算子,其执行所需参数的数据量与运行文件的数据量之和,不大于目标终端设备TEE的内存上限。
S350:将运行文件的密文以及参数密文总集发送至目标终端设备,以使目标终端设备在其通用执行环境REE中存储参数密文总集,以及在其TEE中执行解密后的运行文件。服务器通过与目标终端设备连接的传输路线,将运行文件的密文以及参数密文总集发送至目标终端设备。目标终端设备在其通用执行环境REE中存储参数密文总集和运行文件的密文,将参数密文总集存储于REE与TEE的共享存储区,将运行文件的密文传输至其TEE中,在TEE中解密运行文件的密文,得到运行文件,并执行运行文件。
本实施例中,基于目标终端设备TEE的内存上限,对第一参数集合进行划分,得到第一参数集合对应的多个参数子集,为后续的目标终端设备侧通过多次执行流程,多次执行第一算子提供基础,以在一定程度上克服TEE的存储空间等资源有限的问题,以实现在TEE中更好的完成模型的执行。
在本说明书的一种可实施方式中,为了保证后续的目标模型在目标终端设备侧TEE中的正常执行,服务器需要根据目标终端设备TEE的内存上限,对运行文件中的满足预设划分条件的算子执行所需的参数集合进行划分,其中,该满足预设划分条件为:执行所需参数集合的数据量不小于该内存上限。相应的,对于不满足预设划分条件的算子,可以不对该算子执行所需的参数集合进行划分。
下面以对第一算子的第一参数集合的划分过程为例,对各算子执行所需的参数集合是否进行划分以及具体的划分过程进行说明。所述S320,可以包括如下步骤321-322:
步骤321:判断第一参数集合的数据量与运行文件的数据量之和是否大于TEE的内存上限。
步骤322:若判断结果为大于,基于内存上限对第一参数集合进行划分,得到对应的多个参数子集,其中,每一参数子集的数据量与运行文件的数据量之和不大于内存上限。
本实施方式中,服务器首先判断第一参数集合的数据量与运行文件的数据量之和是否大于TEE的内存上限,若判断结果为大于,基于内存上限对第一参数集合进行划分,使得划分所得的各参数子集的数据量与运行文件的数据量之和不大于内存上限,以得到第一参数集合对应的多个参数子集。
可以理解的是,第一参数集合为第一算子执行所需的各张量参数的集合,在对第一参数集合划分时,每一参数子集可以包括连续的若干个张量参数。其中,该连续指的是在执行逻辑上连续,例如:第一算子需要先基于张量参数A执行,继而基于张量参数B执行,则可以称张量参数A和张量参数B连续。
在一种实现中,在划分第一参数集合时,需要考虑到参数运行的最小粒度,需要保证划分所得的参数子集可以输出相应的执行结果。相应的,所述对第一参数集合进行划分,可以包括:基于TEE的内存上限以及参数粒度,对第一参数集合进行划分,其中,参数粒度用于限定第一算子在一次执行流程中最少所需的参数个数。
可以理解的是,各参数子集中的张量参数个数可以相同也可以不同。
另一实现方式中,对于执行所需的参数集合的数据量与运行文件的数据量之和不大于TEE的内存上限的算子,可以不对其执行所需的参数集合进行划分。
在本说明书的一种可实施方式中,为了提高后续的目标终端设备侧目标模型的运行效率,所述方法还可以包括如下步骤51-53:
步骤51:确定各密文子集在第一参数密文集合中的位置信息;
步骤52:至少利用位置信息,生成索引表;
步骤53:对索引表加密,得到索引表密文;
相应的,所述S350,可以包括:将索引表密文、运行文件的密文以及参数密文总集,发送至目标终端设备。
本实现方式中,为了保证后续的目标终端设备侧目标模型的运行效率,可以针对参数密文总集生成相应的索引表,以用于指示各算子对应的参数密文集合在参数密文总集的位置信息以及参数密文集合中各密文子集在参数密文集合中的位置信息,并指示参数密文集合中各密文子集在参数密文总集的位置信息,并指示各张量参数密文在参数密文总集的位置信息等。
服务器确定各密文子集在第一参数密文集合中的位置信息,至少利用位置信息,生成索引表;调用第三加密接口,对索引表进行加密,得到索引表密文。该第三加密接口可以为与第一加密接口和第二加密接口不同的接口,也可以为与第一加密接口和第二加密接口相同的接口。
一种可实施方式中,位置信息可以包括:各密文子集的长度和在第一参数密文集合中的偏移量。在一种实现中,密文子集可以包括一个或多个张量参数密文,相应的,索引表中可以记录有各算子执行所需的张量参数密文在参数密文总集中的位置信息。后续的,终端设备在TEE中针对其当前待执行的算子,从索引表中,确定出其对应的张量参数密文在参数密文总集中的位置信息,进而在TEE中,基于该位置信息从参数密文总集中读取各张量参数密文。
在本说明书的一种可实施方式中,各密文子集为:第一算子执行所需的若干张量参数密文的集合;
所述步骤52,可以包括如下步骤521-522:
步骤521:从运行文件中,确定出各密文子集的各张量参数对应的张量个数,各张量的张量名以及张量名长度。
步骤522:至少利用各张量参数对应的张量个数,各张量的张量名,张量名长度,以及位置信息,生成索引表。
本实现方式中,所生成的索引表可以包括运行文件所有算子执行所需的张量参数对应的张量个数,即张量参数个数,各张量的张量名及张量名长度以及参数密文总集中各张量参数密文的位置信息(张量参数密文的长度以及在参数密文总集中的偏移量),目标终端设备通过索引表可以高速准确的定位到相应的张量参数密文,并且可以通过索引表及运行文件,确定索引表自身以及参数密文总集是否被篡改。例如:在通过运行文件确定索引表无误的情况下,基于索引表记录的位置信息有20个,但是参数密文总集中的张量参数密文为19个,则确定参数密文总集被篡改。
一种实现中,考虑到终端设备TEE中的物理存储空间的有限性,可以将业务模型基于各模型部分的重要性,即保密性,将业务模型拆分成两部分,分别为需要保护的模型部分以及一般保密性的模型部分(主干模型)。该目标模型为业务模型中需要保护的模型部分;相应的,上述S350,可以包括:将运行文件的密文、参数密文总集以及主干模型,发送至目标终端设备。其中,主干模型可以直接在目标终端设备的REE中进行存储和运算,所得的运算结果作为目标模型的运行文件运行的输入数据传输到目标终端设备的TEE中,以激励运行文件中各算子的执行。在一种情况中,为了保证主干模型在数据传输过程中的安全,也需要对主干模型进行加密传输。
上述内容对本说明书的特定实施例进行了描述,其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行,并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的,或者可能是有利的。
相应于上述方法实施例,本说明书实施例,提供了一种数据处理系统400,其示意性框图如图4所示,包括:执行上述数据处理方法的终端设备410,以及执行上述数据处理方法的服务器420。一种实现方式中,上述终端设备410可以包括一个或多个,如图4示例性所示,包括终端设备1、终端设备2……终端设备t,其中,t为正整数。上述服务器420可以针对不同类型的业务模型执行上述数据处理流程。不同终端设备410所需的目标模型可以相同也可以不同。
相应于上述方法实施例,本说明书实施例,提供了一种数据处理装置500,其示意性框图如图5所示,应用于终端设备,所述终端设备设置可信执行环境TEE和通用执行环境REE,所述TEE存储有目标模型的运行文件,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子;所述REE中存储有执行所述第一算子所需的第一参数密文集合,所述第一参数密文集合被预先划分为多个密文子集,所述装置包括:
执行模块510,配置为通过多个执行流程,多次执行所述第一算子,其中,执行模块510通过如下单元实现对所述第一算子的任意一次执行流程:
读取单元511,配置为从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集;
解密单元512,配置为在所述TEE中,利用所存储的第一密钥,解密所述当前密文子集,得到对应的当前明文子集;
执行单元513,配置为在所述TEE中,基于所述当前明文子集以及当前执行流程的输入数据,执行所述第一算子,得到当前执行流程对应的当前执行结果。
在一种可实施方式中,当所述当前执行流程为所述多个执行流程中的首个执行流程,所述输入数据包括,所述第一算子的前一算子的执行结果;
当所述当前执行流程不是首个执行流程,所述输入数据包括,前一执行流程的执行结果。
在一种可实施方式中,执行单元513,具体配置为将所述当前明文子集加载至所述TEE的内存中,基于内存中加载的数据执行所述第一算子;
所述得到当前执行流程对应的当前执行结果之后,还包括:
从所述TEE的内存中,删除所述当前明文子集。
在一种可实施方式中,所述预先划分基于所述TEE的内存上限进行,所述多个密文子集中每一密文子集的明文数据量与所述运行文件的数据量之和不大于所述内存上限。
在一种可实施方式中,所述执行单元513,具体配置为确定所述TEE的内存的当前可用容量;
判断所述当前可用容量是否不小于所述当前明文子集的数据量;
在所述当前可用容量不小于所述当前明文子集的数据量的情况下,基于所述当前明文子集以及所述输入数据执行所述第一算子。
在一种可实施方式中,所述TEE还存储有所述目标模型对应的索引表,所述索引表用于指示每一密文子集在第一参数密文集合的位置信息;
所述读取单元511,具体配置为从所述索引表中,确定出所述当前密文子集在所述第一参数密文集合中的第一位置信息;
基于所述第一位置信息,从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集。
在一种可实施方式中,所述第一位置信息包括:所述当前密文子集的长度及其在所述第一参数密文集合中的偏移量。
在一种可实施方式中,所述装置还包括:
第二获得模块(图中未示出),配置为在所述REE中,获得模型存储服务器发送的所述目标模型的运行文件的密文、索引表密文以及参数密文总集,其中,所述参数密文总集包括所述第一参数密文集合;
第二发送模块(图中未示出),配置为在所述REE中,存储所述参数密文总集,并将所述运行文件密文、索引表密文发送至所述TEE;
解密模块(图中未示出),配置为在所述TEE中,解密所述运行文件的密文及所述索引表密文,得到解密后的运行文件和索引表;
存储模块(图中未示出),配置为在所述TEE中,存储所述运行文件及所述索引表。
在一种可实施方式中,所述REE中设置所述TEE与所述REE的共享存储区,所述第一参数密文集合存储在所述共享存储区。
相应于上述方法实施例,本说明书实施例,提供了一种数据处理装置600,其示意性框图如图6所示,应用于服务器,所述装置包括:
第一获得模块610,配置为获得目标模型的运行文件的密文及其对应的参数总集,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子,所述参数总集包括所述第一算子执行所需的第一参数集合;
划分模块620,配置为基于目标终端设备中可信执行环境TEE的内存上限,对所述第一参数集合进行划分,得到对应的多个参数子集;
第一加密模块630,配置为对各参数子集进行加密,得到对应的各密文子集,以得到所述第一算子对应的第一参数密文集合;
第一生成模块640,配置为基于所述第一参数密文集合,生成参数密文总集;
第一发送模块650,配置为将所述运行文件的密文以及所述参数密文总集发送至所述目标终端设备,以使所述目标终端设备在其通用执行环境REE中存储所述参数密文总集,以及在其TEE中执行解密后的所述运行文件。
在一种可实施方式中,所述划分模块620,具体配置为判断所述第一参数集合的数据量与所述运行文件的数据量之和是否大于所述TEE的内存上限;
若判断结果为大于,基于所述内存上限对所述第一参数集合进行划分,得到对应的多个参数子集,其中,每一参数子集的数据量与所述运行文件的数据量之和不大于所述内存上限。
在一种可实施方式中,所述划分模块620,具体配置为基于所述TEE的内存上限以及参数粒度,对所述第一参数集合进行划分,其中,所述参数粒度用于限定第一算子在一次执行流程中最少所需的参数个数。
在一种可实施方式中,所述装置还包括:
确定模块(图中未示出),配置为确定各密文子集在所述第一参数密文集合中的位置信息;
第二生成模块(图中未示出),配置为至少利用所述位置信息,生成索引表;
第二加密模块(图中未示出),配置为对所述索引表加密,得到索引表密文;
所述第一发送模块650,具体配置为将所述索引表密文、所述运行文件的密文以及所述参数密文总集,发送至所述目标终端设备。
在一种可实施方式中,所述位置信息包括:各密文子集的长度和在所述第一参数密文集合中的偏移量。
在一种可实施方式中,各密文子集为:所述第一算子执行所需的若干张量参数密文的集合;
所述第二生成模块(图中未示出),配置为从所述运行文件中,确定出各密文子集的各张量参数对应的张量个数,各张量的张量名以及张量名长度;至少利用所述各张量参数对应的张量个数,各张量的张量名,张量名长度,以及所述位置信息,生成索引表。
上述装置实施例与方法实施例相对应,具体说明可以参见方法实施例部分的描述,此处不再赘述。装置实施例是基于对应的方法实施例得到,与对应的方法实施例具有同样的技术效果,具体说明可参见对应的方法实施例。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书所提供的终端设备侧的所述数据处理方法。
本说明书实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本说明书所提供的终端设备侧的所述数据处理方法。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书所提供的服务器侧的所述数据处理方法。
本说明书实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本说明书所提供的服务器侧的所述数据处理方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于存储介质和计算设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步的详细说明。所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (20)
1.一种数据处理方法,应用于终端设备,所述终端设备设置可信执行环境TEE和通用执行环境REE,所述TEE存储有由模型存储服务器下发的目标模型的运行文件密文解密后所得的运行文件,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子;所述REE中存储有执行所述第一算子所需的、由所述模型存储服务器下发的第一参数密文集合,所述第一参数密文集合被预先基于所述TEE的内存上限划分为多个密文子集,所述方法包括:
通过多个执行流程,多次执行所述第一算子,其中任意一次执行流程包括:
从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集;
在所述TEE中,利用所存储的第一密钥,解密所述当前密文子集,得到对应的当前明文子集;
在所述TEE中,基于所述当前明文子集以及当前执行流程的输入数据,执行所述第一算子,得到当前执行流程对应的当前执行结果。
2.根据权利要求1所述的方法,其中,当所述当前执行流程为所述多个执行流程中的首个执行流程,所述输入数据包括,所述第一算子的前一算子的执行结果;
当所述当前执行流程不是首个执行流程,所述输入数据包括,前一执行流程的执行结果。
3.根据权利要求1所述的方法,其中,执行所述第一算子,包括:
将所述当前明文子集加载至所述TEE的内存中,基于内存中加载的数据执行所述第一算子;
所述得到当前执行流程对应的当前执行结果之后,还包括:
从所述TEE的内存中,删除所述当前明文子集。
4.根据权利要求1所述的方法,其中,所述预先划分基于所述TEE的内存上限进行,所述多个密文子集中每一密文子集的明文数据量与所述运行文件的数据量之和不大于所述内存上限。
5.根据权利要求4所述的方法,所述执行所述第一算子,包括:
确定所述TEE的内存的当前可用容量;
判断所述当前可用容量是否不小于所述当前明文子集的数据量;
在所述当前可用容量不小于所述当前明文子集的数据量的情况下,基于所述当前明文子集以及所述输入数据执行所述第一算子。
6.根据权利要求1所述的方法,其中,所述TEE还存储有所述目标模型对应的索引表,所述索引表用于指示每一密文子集在第一参数密文集合的位置信息;
从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集,具体包括:
从所述索引表中,确定出所述当前密文子集在所述第一参数密文集合中的第一位置信息;
基于所述第一位置信息,从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集。
7.根据权利要求6所述的方法,其中,所述第一位置信息包括:所述当前密文子集的长度及其在所述第一参数密文集合中的偏移量。
8.根据权利要求6所述的方法,还包括:
在所述REE中,获得模型存储服务器发送的所述目标模型的运行文件的密文、索引表密文以及参数密文总集,其中,所述参数密文总集包括所述第一参数密文集合;
在所述REE中,存储所述参数密文总集,并将所述运行文件密文、索引表密文发送至所述TEE;
在所述TEE中,解密所述运行文件的密文及所述索引表密文,得到解密后的运行文件和索引表;
在所述TEE中,存储所述运行文件及所述索引表。
9.根据权利要求1所述的方法,其中,所述REE中设置所述TEE与所述REE的共享存储区,所述第一参数密文集合存储在所述共享存储区。
10.一种数据处理方法,应用于服务器,所述方法包括:
获得目标模型的运行文件的密文及其对应的参数总集,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子,所述参数总集包括所述第一算子执行所需的第一参数集合;
基于目标终端设备中可信执行环境TEE的内存上限,对所述第一参数集合进行划分,得到对应的多个参数子集;
对各参数子集进行加密,得到对应的各密文子集,以得到所述第一算子对应的第一参数密文集合;
基于所述第一参数密文集合,生成参数密文总集;
将所述运行文件的密文以及所述参数密文总集发送至所述目标终端设备,以使所述目标终端设备在其通用执行环境REE中存储所述参数密文总集,以及在其TEE中执行解密后的所述运行文件。
11.根据权利要求10所述的方法,其中,所述基于目标终端设备中可信执行环境TEE的内存上限,对所述第一参数集合进行划分,得到对应的多个参数子集,包括:
判断所述第一参数集合的数据量与所述运行文件的数据量之和是否大于所述TEE的内存上限;
若判断结果为大于,基于所述内存上限对所述第一参数集合进行划分,得到对应的多个参数子集,其中,每一参数子集的数据量与所述运行文件的数据量之和不大于所述内存上限。
12.根据权利要求10所述的方法,其中,所述对所述第一参数集合进行划分,包括:
基于所述TEE的内存上限以及参数粒度,对所述第一参数集合进行划分,其中,所述参数粒度用于限定第一算子在一次执行流程中最少所需的参数个数。
13.根据权利要求10所述的方法,还包括:
确定各密文子集在所述第一参数密文集合中的位置信息;
至少利用所述位置信息,生成索引表;
对所述索引表加密,得到索引表密文;
所述将所述运行文件的密文以及所述参数密文总集发送至所述目标终端设备,包括:
将所述索引表密文、所述运行文件的密文以及所述参数密文总集,发送至所述目标终端设备。
14.根据权利要求13所述的方法,其中,所述位置信息包括:各密文子集的长度和在所述第一参数密文集合中的偏移量。
15.根据权利要求13所述的方法,其中,各密文子集为:所述第一算子执行所需的若干张量参数密文的集合;
所述至少利用所述位置信息,生成索引表,包括:
从所述运行文件中,确定出各密文子集的各张量参数对应的张量个数,各张量的张量名以及张量名长度;
至少利用所述各张量参数对应的张量个数,各张量的张量名,张量名长度,以及所述位置信息,生成索引表。
16.一种数据处理系统,包括执行权利要求1-9任一项所述方法的终端设备,以及执行权利要求10-15任一项所述方法的服务器。
17.一种数据处理装置,应用于终端设备,所述终端设备设置可信执行环境TEE和通用执行环境REE,所述TEE存储有由模型存储服务器下发的目标模型的运行文件密文解密后所得的运行文件,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子;所述REE中存储有执行所述第一算子所需的、由所述模型存储服务器下发的第一参数密文集合,所述第一参数密文集合被预先基于所述TEE的内存上限划分为多个密文子集,所述装置包括:
执行模块,配置为通过多个执行流程,多次执行所述第一算子,其中,执行模块通过如下单元实现对所述第一算子的任意一次执行流程:
读取单元,配置为从所述REE存储的多个密文子集中,读取当前执行流程所需的当前密文子集;
解密单元,配置为在所述TEE中,利用所存储的第一密钥,解密所述当前密文子集,得到对应的当前明文子集;
执行单元,配置为在所述TEE中,基于所述当前明文子集以及当前执行流程的输入数据,执行所述第一算子,得到当前执行流程对应的当前执行结果。
18.一种数据处理装置,应用于服务器,所述装置包括:
第一获得模块,配置为获得目标模型的运行文件的密文及其对应的参数总集,所述运行文件用于执行所述目标模型的若干个算子,其中包括第一算子,所述参数总集包括所述第一算子执行所需的第一参数集合;
划分模块,配置为基于目标终端设备中可信执行环境TEE的内存上限,对所述第一参数集合进行划分,得到对应的多个参数子集;
第一加密模块,配置为对各参数子集进行加密,得到对应的各密文子集,以得到所述第一算子对应的第一参数密文集合;
第一生成模块,配置为基于所述第一参数密文集合,生成参数密文总集;
第一发送模块,配置为将所述运行文件的密文以及所述参数密文总集发送至所述目标终端设备,以使所述目标终端设备在其通用执行环境REE中存储所述参数密文总集,以及在其TEE中执行解密后的所述运行文件。
19.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-9中任一项所述的方法。
20.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求10-15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111085665.3A CN113569265B (zh) | 2021-09-16 | 2021-09-16 | 一种数据处理方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111085665.3A CN113569265B (zh) | 2021-09-16 | 2021-09-16 | 一种数据处理方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113569265A CN113569265A (zh) | 2021-10-29 |
CN113569265B true CN113569265B (zh) | 2021-12-24 |
Family
ID=78173807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111085665.3A Active CN113569265B (zh) | 2021-09-16 | 2021-09-16 | 一种数据处理方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113569265B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114091653A (zh) * | 2021-11-06 | 2022-02-25 | 支付宝(杭州)信息技术有限公司 | 模型的运行方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491784A (zh) * | 2018-10-18 | 2019-03-19 | 北京旷视科技有限公司 | 降低内存占用量的方法、装置、电子设备、可读存储介质 |
CN112016666A (zh) * | 2019-05-31 | 2020-12-01 | 微软技术许可有限责任公司 | 深度学习模型的执行 |
CN112766495A (zh) * | 2021-01-26 | 2021-05-07 | 支付宝(杭州)信息技术有限公司 | 一种基于混合环境的深度学习模型隐私保护方法及装置 |
-
2021
- 2021-09-16 CN CN202111085665.3A patent/CN113569265B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491784A (zh) * | 2018-10-18 | 2019-03-19 | 北京旷视科技有限公司 | 降低内存占用量的方法、装置、电子设备、可读存储介质 |
CN112016666A (zh) * | 2019-05-31 | 2020-12-01 | 微软技术许可有限责任公司 | 深度学习模型的执行 |
CN112766495A (zh) * | 2021-01-26 | 2021-05-07 | 支付宝(杭州)信息技术有限公司 | 一种基于混合环境的深度学习模型隐私保护方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113569265A (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3937046A1 (en) | Trusted startup methods and apparatuses of dedicated blockchain node device | |
CN110162992B (zh) | 数据处理方法、数据处理装置和计算机系统 | |
CN110580412B (zh) | 基于链代码的权限查询配置方法及装置 | |
US20150121478A1 (en) | Permission Management Method, Apparatus, and Terminal | |
EP3780483A1 (en) | Cryptographic operation method, method for creating work key, and cryptographic service platform and device | |
US11025415B2 (en) | Cryptographic operation method, method for creating working key, cryptographic service platform, and cryptographic service device | |
CN106055936B (zh) | 可执行程序数据包加密/解密方法及装置 | |
CN107196907B (zh) | 一种安卓so文件的保护方法及装置 | |
CN106682521B (zh) | 基于驱动层的文件透明加解密系统及方法 | |
CN113569265B (zh) | 一种数据处理方法、系统及装置 | |
CN115150821A (zh) | 离线包的传输、存储方法及装置 | |
CN110661621A (zh) | 一种基于hmac、aes、rsa的混合加解密方法 | |
US8862893B2 (en) | Techniques for performing symmetric cryptography | |
CN114124440B (zh) | 安全传输方法、装置、计算机设备和存储介质 | |
CN110764797A (zh) | 一种芯片中文件的升级方法、装置、系统及服务器 | |
CN112088376A (zh) | 一种文件存储方法、装置及存储介质 | |
US20230058046A1 (en) | Apparatus and Method for Protecting Shared Objects | |
CN115801296A (zh) | 一种数据传输方法、装置、设备和存储介质 | |
CN108259490B (zh) | 一种客户端校验方法及装置 | |
CN112416526A (zh) | 一种直接存储访问方法、装置及相关设备 | |
CN113672955B (zh) | 一种数据处理方法、系统及装置 | |
CN110737910A (zh) | 一种Android log解密管理方法、装置、设备和介质 | |
CN114615087B (zh) | 数据共享方法、装置、设备及介质 | |
KR101054075B1 (ko) | 보호키 사용 제한 방법 및 장치 | |
CN112948465B (zh) | 基于区块链的数据处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |