CN113190877B - 一种模型加载方法、装置、可读存储介质及电子设备 - Google Patents
一种模型加载方法、装置、可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN113190877B CN113190877B CN202110476549.8A CN202110476549A CN113190877B CN 113190877 B CN113190877 B CN 113190877B CN 202110476549 A CN202110476549 A CN 202110476549A CN 113190877 B CN113190877 B CN 113190877B
- Authority
- CN
- China
- Prior art keywords
- file
- model file
- target model
- target
- user equipment
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及网络安全技术领域,尤其涉及一种模型加载方法、装置、可读存储介质及电子设备。本申请通过将解密后的目标模型文件写入对用户设备不可见的内存储器中,可以防止目标模型文件被泄露,进而提升目标模型文件的保密性,进一步地,针对用户设备使用的不同目标部署语言,可以采用该目标部署语言适配的调用方式将解密后的目标模型文件从内存储器中调用出来,采用这样的方式,可以不受深度学习框架部署场景的限制,即使当前深度学习框架不支持从内存储器中加载模型,通过设计的不同部署语言的调用方式来实现对目标模型的加载,可以提升模型加载针对语言和深度学习框架的通用性。
Description
技术领域
本申请涉及网络安全技术领域,尤其涉及一种模型加载方法、装置、可读存储介质及电子设备。
背景技术
深度学习是人工智能中重要的研究方向,在部署深度学习应用的同时也需要部署相应的模型,比如,在终端部署、公有云部署、私有化方案部署等,但是,在部署模型时模型存在泄露的风险,因此,在这些部署场景下均有对模型加密的需求。
现阶段,模型加密面临着三个难点:第一、模型训练和部署的时,一般采用的是开源方案,而开源方案由于其代码的可见性,很难做到真正的加密;第二、模型加密的通用性需求,需要对多种深度学习框架的模型进行加密(如同时满足pytorch和openvino两种框架模型),也可能是需要对同种深度学习框架下的不同文件(如模型描述文件和模型权重文件)进行加密;第三、为了降低部署难度,往往会选择直接使用训练时的python语言,而python作为一种脚本语言,具有人类可读性,通用模型加密需要考虑到如何支持python作为部署语言的情况。
综上,找出一种在任何深度学习框架的部署场景下,可以做到对模型文件进行通用性的加密,保证模型加载不受部署框架、部署语言(c++/python)、部署场景(服务器或者终端设备)的约束,以保证模型文件的高安全性是目前亟待解决的问题。
发明内容
有鉴于此,本申请实施例至少提供一种模型加载方法、装置、可读存储介质及电子设备,提升目标模型文件的保密性通过设计的不同部署语言的调用方式来实现对目标模型的加载,可以提升模型加载针对不同语言的通用性。
本申请主要包括以下几个方面:
第一方面,本申请实施例提供一种模型加载方法,所述模型加载方法包括:
在接收到用户设备发送的针对目标模型文件的加载请求时,根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
若解密成功,将解密后的所述目标模型文件写入内存储器中;所述内存储器中存储的内容对所述用户设备不可见;
采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,并根据调用出的所述目标模型文件生成目标应用程序接口;
将所述目标应用程序接口提供给所述用户设备,以供所述用户设备运行目标模型。
在一种可能的实施方式中,若所述目标部署语言为python语言;所述采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,包括:
使用BytesIO方法将所述内存储器中解密后的所述目标模型文件转换成虚拟磁盘中的文件,将解密后的所述目标模型文件从所述虚拟磁盘中读取出来。
在一种可能的实施方式中,若所述目标部署语言为c++语言;所述采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,包括:
判断所述目标模型文件所使用的深度学习框架,是否支持从所述内存储器中读取所述目标模型文件;
若支持,则根据解密后的目标模型文件的存储地址,将解密后的所述目标模型文件从所述内存储器中读取出来;
若不支持,在真实磁盘中创建临时文件,将解密后的所述目标模型文件写入所述临时文件中,并将解密后的所述目标模型文件从所述临时文件中读取出来;所述临时文件的文件名称对所述用户设备不可见。
在一种可能的实施方式中,所述在真实磁盘中创建临时文件,将解密后的所述目标模型文件写入所述临时文件中,包括:
在所述真实磁盘中创建所述临时文件,并将所述临时文件的文件名称删除;
将解密后的所述目标模型文件写入所述临时文件中。
在一种可能的实施方式中,在接收到用户设备发送的针对目标模型文件的加载请求之前,所述模型加载方法还包括:
向所述内存储器申请映射存储区域,并在所述内存储器中对所述目标模型文件进行加密,将加密后的所述目标模型文件映射至所述映射存储区域。
在一种可能的实施方式中,所述在所述内存储器中对所述目标模型文件进行加密,包括:
采用多线程并行任务处理方式,同时对所述目标模型文件中的各个子文件进行加密。
在一种可能的实施方式中,根据以下步骤对所述目标模型文件进行加密:
获取加密时刻对应的第一时间戳;
根据所述第一时间戳生成第二密钥,并通过所述第二密钥对所述目标模型文件进行加密。
在一种可能的实施方式中,所述根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密,包括:
判断所述第一密钥和所述第二密钥是否相同;
若相同,则根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
若不同,则拒绝解密。
在一种可能的实施方式中,在所述判断所述第一密钥和所述第二密钥是否相同之前,所述模型加载方法还包括:
获取所述用户设备发送所述加载请求时对应的第二时间戳,并判断所述第二时间戳与所述第一时间戳之间的时间差是否超出预设阈值;
若是,则拒绝解密;
若否,则判断所述第二密钥和所述第一密钥是否相同。
第二方面,本申请实施例还提供一种模型加载装置,所述模型加载装置包括:
解密模块,用于在接收到用户设备发送的针对目标模型文件的加载请求时,根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
写入模块,用于若解密成功,将解密后的所述目标模型文件写入内存储器中;所述内存储器中存储的内容对所述用户设备不可见;
生成模块,用于采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,并根据调用出的所述目标模型文件生成目标应用程序接口;
运行模块,用于将所述目标应用程序接口提供给所述用户设备,以供所述用户设备运行目标模型。
在一种可能的实施方式中,若所述目标部署语言为python语言,所述生成模块用于:
使用BytesIO方法将所述内存储器中解密后的所述目标模型文件转换成虚拟磁盘中的文件,将解密后的所述目标模型文件从所述虚拟磁盘中读取出来。
在一种可能的实施方式中,所述生成模块包括:
第一判断单元,用于判断所述目标模型文件所使用的深度学习框架,是否支持从所述内存储器中读取所述目标模型文件;
第一读取单元,用于若支持,则根据解密后的目标模型文件的存储地址,将解密后的所述目标模型文件从所述内存储器中读取出来;
第二读取单元,用于若不支持,在真实磁盘中创建临时文件,将解密后的所述目标模型文件写入所述临时文件中,并将解密后的所述目标模型文件从所述临时文件中读取出来;所述临时文件的文件名称对所述用户设备不可见。
在一种可能的实施方式中,所述第二读取单元用于:
在所述真实磁盘中创建所述临时文件,并将所述临时文件的文件名称删除;
将解密后的所述目标模型文件写入所述临时文件中。
在一种可能的实施方式中,所述模型加载装置还包括映射模块,所述映射模块用于:
向所述内存储器申请映射存储区域,并在所述内存储器中对所述目标模型文件进行加密,将加密后的所述目标模型文件映射至所述映射存储区域。
在一种可能的实施方式中,所述映射模块用于:
采用多线程并行任务处理方式,同时对所述目标模型文件中的各个子文件进行加密。
在一种可能的实施方式中,所述映射模块用于根据以下步骤对所述目标模型文件进行加密:
获取加密时刻对应的第一时间戳;
根据所述第一时间戳生成第二密钥,并通过所述第二密钥对所述目标模型文件进行加密。
在一种可能的实施方式中,所述解密模块用于:
判断所述第一密钥和所述第二密钥是否相同;
若相同,则根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
若不同,则拒绝解密。
在一种可能的实施方式中,所述模型加载装置还包括检测模块,所述检测模块包括:
第二判断单元,用于获取所述用户设备发送所述加载请求时对应的第二时间戳,并判断所述第二时间戳与所述第一时间戳之间的时间差是否超出预设阈值;
拒绝单元,用于若是,则拒绝解密;
第三判断单元,用于若否,则判断所述第二密钥和所述第一密钥是否相同。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行上述第一方面或第一方面中任一种可能的实施方式中所述的模型加载方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面或第一方面中任一种可能的实施方式中所述的模型加载的步骤。
本申请实施例提供的模型加载方法、装置、可读存储介质及电子设备,将模型文件的解密过程设置在内存储器中完成,并将解密后的目标模型文件写入到用户设备不可见的内存储器中,与现有技术中在磁盘中进行模型文件的解密或将解密的模型文件存储在磁盘中相比,可以提升模型文件的保密性,进一步保证了模型文件的安全性;同时本申请设计了针对不同的目标部署语言对应的调用方式,可以将解密后的目标模型文件从内存储器中调用出来,与现有技术中需要根据深度学习部署框架专用的部署语言和专用的加密方式进行调用,无法实现模型文件加载的语言通用性以及框架通用性相比,本申请通过设计的不同部署语言的调用方式来实现对目标模型的加载,可以提升模型加载针对语言和深度学习框架的通用性。
进一步,本申请实施例提供的模型加载方法,通过利用内存映射文件的方式对模型文件进行读取,可以提升模型文件的读取速度,同时在对模型文件加密过程中采用多线程并行任务处理方式,这样可以提升对模型文件进行加密的速度。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种模型加载方法的流程图;
图2示出了模型加密阶段的流程图;
图3示出了模型解密阶段的流程图;
图4示出了本申请实施例提供的一种模型加载装置的功能模块图之一;
图5示出了图4中生成模块的功能模块图;
图6示出了本申请实施例提供的一种模型加载装置的功能模块图之二;
图7示出了图6中检测模块的功能模块图;
图8示出了本申请实施例提供的一种电子设备的结构示意图。
主要元件符号说明:
图中:400-模型加载装置;410-解密模块;420-写入模块;430-生成模块;431-第一判断单元;432-第一读取单元;433-第二读取单元;440-运行模块;450-映射模块;460-检测模块;461-第二判断单元;462-拒绝单元;463-第三判断单元;800-电子设备;810-处理器;820-存储器;830-总线。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中的附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本申请保护的范围。
为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“模型加载”,给出以下实施方式,对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。
本申请实施例下述方法、装置、电子设备或计算机可读存储介质可以应用于任何需要进行模型文件加载的场景,本申请实施例并不对具体的应用场景作限制,任何使用本申请实施例提供的模型加载方法及装置的方案均在本申请保护范围内。
值得注意的是,在本申请提出之前,模型加密面临着三个难点:第一、模型训练和部署的时,一般采用的是开源方案,而开源方案由于其代码的可见性,很难做到真正的加密;第二、模型加密的通用性需求,需要对多种深度学习框架的模型进行加密(如同时满足pytorch和openvino两种框架模型),也可能是需要对同种深度学习框架下的不同文件(如模型描述文件和模型权重文件)进行加密;第三、为了降低部署难度,往往会选择直接使用训练时的python语言,而python作为一种脚本语言,具有人类可读性,通用模型加密需要考虑到如何支持python作为部署语言的情况。
通常,现有模型加密方法存在以下问题:
1)缺乏框架间通用性。现有的方案依赖所使用的深度学习框架,甚至如果框架不提供加密方法,则完全不能保证模型的安全性。
2)缺乏python语言支持。即使选择了一个可以提供加密方法的深度学习推理框架,但是大部分的专用推理框架是只提供了c++的API,无法保证对python语言的支持。
3)强制要求从内存读写模型。现有的加密方法要求框架提供从内存中读取模型的方法,这样可以直接将解密后的模型在内存中加载,避免将解密后的文件再次导入磁盘上。但是在部署的时候,所使用的深度学习框架,如pytorch等就不支持从内存中读取模型。
4)安全等级低。现有方案使用的一般是很简单的加密方法。
因此,找出一种在任何深度学习框架的部署场景下,可以做到对模型文件进行通用性的加密,保证模型加载不受部署框架、部署语言(c++/python)、部署场景(服务器或者终端设备)的约束,以保证模型文件的高安全性是目前亟待解决的问题。
针对上述问题,本申请实施例通过将解密后的目标模型文件写入对用户设备不可见的内存储器中,可以防止目标模型文件被泄露,进而提升目标模型文件的保密性,进一步地,针对用户设备使用的不同目标部署语言,可以采用该目标部署语言适配的调用方式将解密后的目标模型文件从内存储器中调用出来,采用这样的方式,可以不受深度学习框架部署场景的限制,即使当前深度学习框架不支持从内存储器中加载模型,通过设计的不同部署语言的调用方式来实现对目标模型的加载,可以提升模型加载针对语言和深度学习框架的通用性。
需要说明的是,各种不同的深度学习框架(Deep learning framework)是供研究者们使用来达到他们的研究目的框架,流行的深度学习框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。深度学习框架的出现降低了入门的门槛,不需要从复杂的神经网络开始编代码,就可以根据需要选择已有的模型,通过训练得到模型参数,也可以在已有模型的基础上增加自己的layer,或者是在顶端选择自己需要的分类器和优化算法(比如常用的梯度下降法)。
为便于对本申请进行理解,下面结合具体实施例对本申请提供的技术方案进行详细说明。
图1示出了本申请实施例所提供的一种模型加载方法的流程图。如图1所示,本申请实施例提供的模型加载方法,包括以下步骤:
S101:在接收到用户设备发送的针对目标模型文件的加载请求时,根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密。
在具体实施中,在接收到用户设备发送的针对于需要加载的目标模型文件的加载请求时,从加载请求中拿到第一密钥,并根据拿到的第一密钥对加密的目标模型文件进行加密。
这里,用户设备提供的第一密钥可能为目标模型文件的解密密钥,也可能不为目标模型文件的解密密钥,若第一密钥为目标模型文件的解密密钥可以对加密后的目标模型文件解密成功,否则,解密不成功。
需要说明的是,执行模型加载方法的设备可以是与用户设备进行交互的服务器,服务器可以理解为是模型提供端,用户设备可以理解为模型需求端。
这里,本申请实施例提供的模型加载方法适用于需要模型部署的场景,部署场景包括但不限于终端部署、公有云部署、私有化方案部署等场景。目标模型可以为适用于各种应用的模型,比如,游戏捏脸模型、人脸识别模型、图像处理模型等。
这里,对于目标模型文件的解密过程是在内存中进行的,并将解密后的模型文件存储在内存中,由于存储至内存中的内容对用户设备不可见,所以用户设备端的目标用户无法查看到目标模型文件的内容,可以保证目标模型文件的安全性。
进一步地,模型提供方通常将训练好的模型进行加密,在将加密后的模型文件进行发布,下面对模型加密过程进行详细阐述,也即,在步骤S101接收到用户设备发送的针对目标模型文件的加载请求之前,所述模型加载方法还包括以下步骤:
向所述内存储器申请映射存储区域,并在所述内存储器中对所述目标模型文件进行加密,将加密后的所述目标模型文件映射至所述映射存储区域。
在具体实施中,向内存储器申请可以存储目标模型文件的映射存储区域,并在内存储器中对目标模型文件进行加密,将加密后的目标模型文件映射到内存储器中的映射存储区域。
需要说明的是,由于本申请实施例中是针对于深度学习模型部署的方案,而一般情况下深度学习模型文件都很大,可能达到几百兆(比如500M等)相关技术中,采用的一般文件读取方式耗时严重,导致模型文件读取速度较慢。
这里,本申请实施例在进行模型文件在内存储器中的映射采用的是mmap内存映射处理方法,该方法可以将文件或者其它对象映射进内存,同时mmap提供了一种机制,让用户程序直接访问设备内存,这种机制,相比较在用户空间和内核空间互相拷贝数据,效率更高,mmap方法调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用读写等操作,从而加快了模型文件的读取速度。
其中,mmap会自动申请内存,将模型文件中的数据与内存中的映射存储区域对应,这样,可以进一步地加快对模型文件的读取速度。
一示例中,文件映射的调用代码如下所示:
uchar*src_map=(uchar*)mmap(0,fileInfo.st_size,PROT_READ,MAP_PRIVATE,fd,0);
其中,第一参数0表示***自动选定地址(内存中的存储地址);第二个参数fileInfo.st_size表示目标模型文件的长度;第三个参数PROT_READ表示设置映射的映射存储区域是可读的(读写权限);第四个参数MAP_PRIVATE表示其他进程不可访问(访问权限);第五个参数fd表示目标模型文件的句柄(文件-地址的映射);第六个参数0表示offset(偏移值,具体从哪个位置开始映射)。
进一步地,下面对目标模型文件的加密过程进行阐述,所述在所述内存储器中对所述目标模型文件进行加密,包括以下步骤:
采用多线程并行任务处理方式,同时对所述目标模型文件中的各个子文件进行加密。
在具体实施中,在对内存储器中的目标文件进行加密时采用多线程并行任务处理方式,同时对目标模型文件中的各个子文件进行加密。
这里,对目标模型文件进行加密、解密的方法均可以采用AES、DES、3DES、RSA、Diffe-Hellman、ECC、ABE、PRE或FHE算法中的一种,优选地,为了保证目标模型文件的安全性以克服现有加密方式中安全性等级不高的问题,在本申请实施例中可以选择安全性较高的密码学中的高级加密标准(Advanced Encryption Standard,AES)进行加密。
这里,在对目标模型文件进行加密时可以采用共享存储并行编程(Open Multi-Processing,OpenMP)对加密算法进行加速,OpenMP提供的这种对于并行描述的高层抽象降低了并行编程的难度和复杂度,同时提供了并行的任务处理方式,从而提升对模型进行加密的速度。
需要说明的是,本申请可以采用AES加密方法对各个子文件进行加密,对于AES加密的过程是开源的,在本申请实施例中使用了OpenMP对AES的加密过程进行了加速处理方式,即对OpenMP原语进行了优化,举例来说,OpenMP原语可以如下所示:
进一步地,下面具体阐述目标模型文件的过程,根据以下步骤对所述目标模型文件进行加密:
a1:获取加密时刻对应的第一时间戳。
在具体实施中,获取在进行加密时的当前加密时刻的第一时间戳。
这里,对于本申请实施例中优选的加密算法AES来说,在密钥的生成策略上,采用的是随机时间随机生成的方式,以此来保证每次对目标模型文件进行加密的密钥都不相同,避免了现有技术中使用相同密钥对模型文件进行加密的情况下,破解了一个模型文件导致全部模型文件被破解的情况,提升了模型文件的安全性。为了生成相应的加密密钥,从而需要确定加密时刻的第一时间戳,从而根据相应的时间戳生成相应的加密密钥。
a2:根据所述第一时间戳生成第二密钥,并通过所述第二密钥对所述目标模型文件进行加密。
在具体实施中,根据前序步骤a1确定出的第一时间戳生成相应的第二密钥,并利用第二密钥对目标文件进行加密。
这里,根据第一时间戳生成第二密钥的方式可以是:根据第一时间戳生成128或者256个字节的密钥。
这里,在生成第二密钥后,需要对生成的第二密钥进行保存,以便后续根据第二密钥对加密后的目标模型文件进行解密,对第二密钥的保存方式可以是:将第二密钥与加密后的模型文件相关联存储至磁盘;还可以是将第二密钥作为一个独立的密钥许可文件进行存储;也可以是将第一时间戳以及第二密钥一同写入要一个密钥许可文件进行存储。对于密钥的存储方式可以依据用户的具体需求进行选择。
其中,对于第一时间戳,为了防止用户破解第一时间戳,进而破解与第一时间戳对应的第二密钥,需要对第一时间戳进行加密,对第一时间戳进行加密的方式可以是使用异或加密法进行加密。
进一步地,请参阅图2,图2示出了模型加密阶段的流程图,如图2中所示,在模型文件加密的阶段,首先获取原始的目标模型文件,并将原始的目标模型文件通过mmap技术映射到模型文件内存映射区域;在模型文件内存映射区域内通过OpenMP加速过的AES加密算法对目标模型文件进行加密,得到加密后的目标模型文件;将加密后的所述目标模型文件映射至加密后的映射存储区域;最后通过mmap技术将加密过后的目标模型文件映射到磁盘相应位置进行存储,得到加密后的模型文件。
进一步地,步骤S101中根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密,包括以下步骤:
b1:判断所述第一密钥和所述第二密钥是否相同。
在具体实施中,在获取到用户设备发送的针对目标模型文件的加载请求时,确定出加载请求中携带的第一密钥,是否与预先存储的目标模型文件对应的第二密钥是否相同。
这里,对目标模型文件进行解密时需要确定出第一密钥与第二密钥是否是一致的,只有在第一密钥与第二密钥一致的情况下才能进行对目标模型文件的解密操作,以防止目标模型文件被泄露。b2:若相同,则根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密。
在具体实施中,若是第一密钥与第二密钥相同,根据加载请求中携带的第一密钥对加密后的目标文件进行解密。
这里,确定出第一密钥与第二密钥相同,是指第一密钥与第二密钥完全一致,举例来说,若是第一密钥与第二密钥是字符串,需要检测第一密钥与第二密钥的字符串长度是否一致,以及相同位置上的字符是否一致,若是第一密钥与第二密钥的字符串长度一致且相同位置上的字符一致,此时可以认定第一密钥与第二密钥相同,进而再次使用第一密钥对模型文件进行解密。
其中,在对目标模型文件进行解密的过程中还可以是使用存在加密文件中的或者密钥许可证文件中的密钥对目标模型文件进行解密。
这里,在AES解密的过程中,依然使用了OpenMP原语加速解密的过程。解密原语代码可以为:
b3:若不同,则拒绝解密。
在具体实施中,若是第一密钥与第二密钥不相同,则拒绝解密目标模型文件。
这里,确定出第一密钥与第二密钥不相同,是指第一密钥与第二密钥不完全一致,针对于上述示例,若是第一密钥与第二密钥的字符串长度不一致或者相同位置上的字符不一致,此时可以认定第一密钥与第二密钥不相同,即,发送模型加载请求的用户设备端的用户为不合法用户,不允许不合法用户使用目标模型。
这里,在确定出第一密钥与第二密钥不相同并拒绝解密时,可以生成加密失败的提示信息发送至用户设备,以提示用户设备检查密钥的正确性,同时接收用户设备再次发送的模型加载请求。
进一步地,在步骤b1:判断所述第一密钥和所述第二密钥是否相同之前,还包括以下步骤:
c1:获取所述用户设备发送所述加载请求时对应的第二时间戳,并判断所述第二时间戳与所述第一时间戳之间的时间差是否超出预设阈值。
在具体实施中,获取用户设备发送加载请求时对应的第二时间戳,同时判断第二时间戳与第一时间戳之间的时间差是否超出预设时间阈值。
c2:若是,则拒绝解密。
在具体实施中,若是第二时间戳与第一时间戳之间的时间差超出预设时间阈值,即,超出第一密钥的有效期,则拒绝解密目标模型文件。
这里,与第一密钥与第二密钥不一致时相同,可以向生成解密请求超时的提示信息发送至用户设备,以提示用户设备对模型文件解密失败。
c3:若是,则判断所述第二密钥和所述第一密钥是否相同。
在具体实施中,若是确定出第二时间戳与第一时间戳之间的时间差未超出预设时间阈值,即,第一密钥在有效期,则继续进行对目标模型文件解密的过程,进而判断第二密钥与第一密钥是否一致的步骤。
S102:若解密成功,将解密后的所述目标模型文件写入内存储器中;所述内存储器中存储的内容对所述用户设备不可见。
在具体实施中,若是第一密钥对目标模型文件解密成功,将解密后的目标文件写入到内存储器中,其中,对于内存储器中存储的内容用户设备是无法访问的。
这里,在用户设备要使用模型时,对于用户设备请求加载的目标模型网文件的解密过程在内存中进行,并且解密后的目标模型文件存储在内存中,由于内存储器用户设备无法进行访问,这进一步保证了模型文件的安全性。
S103:采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,并根据调用出的所述目标模型文件生成目标应用程序接口。
在具体实施中,根据设计的目标设备使用的目标语言对应的调用方式,将解密后的目标模型文件按照对应的调用方式从内存储器中调用出来,并根据调用出的目标模型文件来生成对应的目标应用程序接口。
这里,针对于不同用户设备采用的目标部署语言的不同,从内存储器中加载相应的模型文件的方式也不相同,有的部署语言要求必须从磁盘中进行模型文件的加载,但是在磁盘中加载模型文件易造成模型文件的泄露,模型文件的安全性不能保证,本申请实施例中通过设计出的不同目标部署语言对应的调用方式,来从内存储器中调取解密后的目标模型文件,这样,可以使对模型文件的加载像是在磁盘中加载一样,可以不受深度学习框架部署场景的限制,即使当前深度学习框架不支持从内存储器中加载模型,通过设计的不同部署语言的调用方式来实现对目标模型的加载,可以提升模型加载针对语言和深度学习框架的通用性。
这里,目标应用程序接口是可以供用户设备直接调用的接口,即,语言的应用程序接口(Application Programming Interface,API),不同部署语言对应的应用程序接口不同,比如,C++语言与C++语言的API接口相匹配,并且生成的目标应用程序接口可以在各种操作***上使用,其中操作***包括但不限于:windows、linux、android、iOS。
进一步地,若所述目标部署语言为python语言,步骤S103中的采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,包括以下步骤:
使用BytesIO方法将所述内存储器中解密后的所述目标模型文件转换成虚拟磁盘中的文件,将解密后的所述目标模型文件从所述虚拟磁盘中读取出来。
在具体实施中,当用户设备的目标部署语言为python语言时,采用BytesIO方法将内存储器中解密后的目标模型文件转换成虚拟磁盘中的文件,将内存中的数据转化成像文件一样的读取方式,将解密后的目标模型文件从虚拟磁盘中读取出来。
其中,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。
这里,BytesIO方法可以用于处理二进制类型的数据,BytesIO实现了在内存中读写bytes,BytesIO方法的具体执行步骤为:磁盘上放入一个加密后的模型文件(假设文件名为Model);磁盘中加密后的模型文件导入内存,并在内存中对模型文件进行解密,用户可以看到可以调用的函数;通过BytesIO方法将内存中的区域当成一个文件,进行加载;得到解密后的模型文件至内存。
其中,BytesIO方法的具体执行步骤的python代码如下所示:
model=‘./model/encrypted_mnist_cnn.pt’Model是文件名,在磁盘上放入一个加密后的模型文件;
decrypted_model=dd.decrypt(model)将磁盘中加密后的模型文件导入内存,并在内存中对模型文件进行解密;
buffer=io.BytesIO(decrypted_model)通过bytesIO方法将内存中的区域当成一个文件;
model=torch.load(buffer)加载;
model.cuda()
print(model)
进一步地,若所述目标部署语言为c++语言,步骤S103中的采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,包括以下步骤:
d1:判断所述目标模型文件所使用的深度学习框架,是否支持从所述内存储器中读取所述目标模型文件。
在具体实施中,判断目标模型文件使用的深度学习框架是否是支持从内存储器中读取目标模型文件。
需要说明的是,相关技术中,在对模型文件进行加密的过程中是基于特定的C++推理框架。例如,ncnn、mnn、tflite等,思路都是使用c++的方法把加密后的模型读进内存后,在内存中按照某种解密规则进行解密,要实现这种加密方法,首先要求是以C++的方式,强制要求从内存中读取模型,其次,模型的加载框架必须是特定的支持C++API的推理框架,而针对于在深度学习开发过程中的tensorflow和pytorch等,这些框架一般是python语言的API,且模型的加载也是直接从文件中加载,所以现有技术方案无法支持,现有技术中存在语言不通用、框架不通用的技术问题。
其中,C++语言它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
需要说明的是,本申请实施例提供的方案,可以通过判断目标模型文件所使用的深度学习框架是否支持从内存中读取目标模型文件,从而提供不同的模型文件的加载方法,从而达到了在模型文件加载过程中的语言通用以及框架通用的技术效果。
d2:若支持,则根据解密后的目标模型文件的存储地址,将解密后的所述目标模型文件从所述内存储器中读取出来。
在具体实施中,若是确定出解密后的目标模型文件的深度学习框架支持从内存储器中读取所述目标模型文件,根据解密后的目标模型文件的存储地址将解密后的目标模型文件从内存储器中直接读取出来。
这里,直接从内存储器中的相应地址中读取目标模型文件之后,对目标模型文件进行封装,生成相应的目标应用程序接口。
d3:若不支持,在真实磁盘中创建临时文件,将解密后的所述目标模型文件写入所述临时文件中,并将解密后的所述目标模型文件从所述临时文件中读取出来;所述临时文件的文件名称对所述用户设备不可见。
在具体实施中,若是确定出解密后的目标模型文件的深度学习框架不支持从内存储器中读取所述目标模型文件,在真实磁盘中创建临时文件,将解密后的目标模型文件写入到临时文件中,将解密后的目标模型文件从临时文件中读取出来。
其中,临时文件的文件名称对所述用户设备不可见。
这里,若是目标模型文件的深度学习框架不支持从内存储器中读取模型文件,需要在磁盘中建立一个临时文件以为从磁盘中读取模型文件提供读取条件,在真实磁盘中建立临时文件的步骤可以为:创建临时文件;模型文件还没写入磁盘,就删除临时文件名字;调取API实现模型文件的加载。
其中,在真实磁盘中创建临时文件的代码如下所示:
这里,在创建临时文件时,为了保证模型文件的安全性,选择将临时文件的名称删除,对用户设备不可见,所以用户设备端的用户无法通过临时文件的文件名称来查看到模型文件的内容。
进一步地,步骤在真实磁盘中创建临时文件,将解密后的所述目标模型文件写入所述临时文件中,包括以下步骤:
e1:在所述真实磁盘中创建所述临时文件,并将所述临时文件的文件名称删除。
在具体实施中,在真实磁盘中创建临时文件后,立即将临时文件的名称删除。
这里,对创建的临时文件的名称的删除可以采用拆解(Unlink)方法,将临时文件从文件***中删除(删除名称,但是临时文件本身还是存在在原来的位置),以保证用户设备无法查到临时文件,二解密文件通过文件句柄(文件-区域映射)方式进行加载。
e2:将解密后的所述目标模型文件写入所述临时文件中。
在具体实施中,在创建完临时文件并将临时文件的名称删除后,将解密后的目标模型文件写入到临时文件中。
这里,用户设备可以访问到临时文件中解密后的目标模型文件,并对解密后的目标模型文件进行封装,生成相应的目标应用程序接口。
这样,保证了用户设备无法查看磁盘中的解密后的目标模型文件,从而保证了模型文件的安全性。
请参阅图3,图3示出了模型解密阶段的流程图,如图3中所示,在模型文件解密的阶段,加载加密的目标模型文件至内存,即使用mmap的技术创建内存并将目标模型文件内容导入到内存;在内存中对目标模型文件进行解密;根据不同的部署语言的调用方式调用解密后的目标模型文件;根据调用出的目标模型文件生成目标应用程序接口。
S104:将所述目标应用程序接口提供给所述用户设备,以供所述用户设备运行目标模型。
在具体实施中,将确定出的目标应用程序接口提供给用户设备,用户设备可以直接调用目标应用程序接口来达到运行目标模型的目的,至此,目标模型的加载步骤完成,用户设备可以直接使用目标模型。
在本申请实施例中,通过将解密后的目标模型文件写入对用户设备不可见的内存储器中,可以防止目标模型文件被泄露,进而提升目标模型文件的保密性,进一步地,针对用户设备使用的不同目标部署语言,可以采用该目标部署语言适配的调用方式将解密后的目标模型文件从内存储器中调用出来,采用这样的方式,可以不受深度学习框架部署场景的限制,即使当前深度学习框架不支持从内存储器中加载模型,通过设计的不同部署语言的调用方式来实现对目标模型的加载,可以提升模型加载针对语言和深度学习框架的通用性。
基于同一申请构思,本申请实施例中还提供了与上述实施例提供的模型加载方法对应的模型加载装置,由于本申请实施例中的装置解决问题的原理与本申请上述实施例的模型加载方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图4至图7所示,图4示出了本申请实施例提供的一种模型加载装置400的功能模块图之一,图5示出了图4中生成模块430的功能模块图,图6示出了本申请实施例提供的一种模型加载装置400的功能模块图之二,图7示出了图6中检测模块460的功能模块图。
在一种可能实施方式中,如图4所示,所述模型加载装置400包括:
解密模块410,用于在接收到用户设备发送的针对目标模型文件的加载请求时,根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
写入模块420,用于若解密成功,将解密后的所述目标模型文件写入内存储器中;所述内存储器中存储的内容对所述用户设备不可见;
生成模块430,用于采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,并根据调用出的所述目标模型文件生成目标应用程序接口;
运行模块440,用于将所述目标应用程序接口提供给所述用户设备,以供所述用户设备运行目标模型。
在一种可能实施方式中,若所述目标部署语言为python语言,如图4所述,所述生成模块430用于:
使用BytesIO方法将所述内存储器中解密后的所述目标模型文件转换成虚拟磁盘中的文件,将解密后的所述目标模型文件从所述虚拟磁盘中读取出来。
在一种可能实施方式中,如图5所示,所述生成模块430包括:
第一判断单元431,用于判断所述目标模型文件所使用的深度学习框架,是否支持从所述内存储器中读取所述目标模型文件;
第一读取单元432,用于若支持,则根据解密后的目标模型文件的存储地址,将解密后的所述目标模型文件从所述内存储器中读取出来;
第二读取单元433,用于若不支持,在真实磁盘中创建临时文件,将解密后的所述目标模型文件写入所述临时文件中,并将解密后的所述目标模型文件从所述临时文件中读取出来;所述临时文件的文件名称对所述用户设备不可见。
在一种可能实施方式中,如图5所示,所述第二读取单元433用于:
在所述真实磁盘中创建所述临时文件,并将所述临时文件的文件名称删除;
将解密后的所述目标模型文件写入所述临时文件中。
在一种可能的实施方式中,所述解密模块410在用于根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密时,所述解密模块410用于:
判断所述第一密钥和所述第二密钥是否相同;
若相同,则根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
若不同,则拒绝解密。
在一种可能实施方式中,如图6所示,所述模型加载装置400还包括映射模块450以及检测模块460。
在一种可能实施方式中,如图6所示,所述映射模块450用于:
向所述内存储器申请映射存储区域,并在所述内存储器中对所述目标模型文件进行加密,将加密后的所述目标模型文件映射至所述映射存储区域。
在一种可能的实施方式中,如图6所示,所述映射模块450用于:
采用多线程并行任务处理方式,同时对所述目标模型文件中的各个子文件进行加密。
在一种可能的实施方式中,如图6所示,所述映射模块450用于根据以下步骤对所述目标模型文件进行加密:
获取加密时刻对应的第一时间戳;
根据所述第一时间戳生成第二密钥,并通过所述第二密钥对所述目标模型文件进行加密。
在一种可能的实施方式中,如图7所示,所述检测模块460包括:
第二判断单元461,用于获取所述用户设备发送所述加载请求时对应的第二时间戳,并判断所述第二时间戳与所述第一时间戳之间的时间差是否超出预设阈值;
拒绝单元462,用于若是,则拒绝解密;
第三判断单元463,用于若否,则判断所述第二密钥和所述第一密钥是否相同。
在申请实施例中,通过在解密过程中将解密后的目标模型文件写入到内存储器中,对于模型文件的解密过程均在内存储器中完成,对模型的保密性增强,进一步保证了模型文件的安全性;同时针对不同的目标部署语言对应的调用方式,将解密后的目标模型文件从内存储器中调用出来,提升了模型文件加载的语言通用性以及框架通用性,无需根据不同的框架不同的语言调整模型文件的加载,一方面提升了模型加载的通用性,另一方面提升了模型加载的过程中的效率。
基于同一申请构思,参见图8所示,图8示出了本申请实施例提供的一种电子设备800的结构示意图,包括:处理器810、存储器820和总线830,所述存储器820存储有所述处理器810可执行的机器可读指令,当电子设备800运行时,所述处理器810与所述存储器820之间通过所述总线830进行通信,所述机器可读指令被所述处理器810运行时执行如上述实施例中任一所述的模型加载方法的步骤。
具体地,所述机器可读指令被所述处理器810执行时可以执行如下处理:
在接收到用户设备发送的针对目标模型文件的加载请求时,根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
若解密成功,将解密后的所述目标模型文件写入内存储器中;所述内存储器中存储的内容对所述用户设备不可见;
采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,并根据调用出的所述目标模型文件生成目标应用程序接口;
将所述目标应用程序接口提供给所述用户设备,以供所述用户设备运行目标模型。
本申请实施例中,通过将解密后的目标模型文件写入对用户设备不可见的内存储器中,可以防止目标模型文件被泄露,进而提升目标模型文件的保密性,进一步地,针对用户设备使用的不同目标部署语言,可以采用该目标部署语言适配的调用方式将解密后的目标模型文件从内存储器中调用出来,采用这样的方式,可以不受深度学习框架部署场景的限制,即使当前深度学习框架不支持从内存储器中加载模型,通过设计的不同部署语言的调用方式来实现对目标模型的加载,可以提升模型加载针对语言和深度学习框架的通用性。
基于同一申请构思,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例提供的模型加载方法的步骤。
具体地,所述存储介质能够为通用的存储介质,如移动磁盘、硬盘等,所述存储介质上的计算机程序被运行时,能够执行上述模型加载方法,通过。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应所述理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的部分可以以软件产品的形式体现出来,所述计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种模型加载方法,其特征在于,所述模型加载方法包括:
在接收到用户设备发送的针对目标模型文件的加载请求时,根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
若解密成功,将解密后的所述目标模型文件写入内存储器中;所述内存储器中存储的内容对所述用户设备不可见;
采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,并将调用出的所述目标模型文件进行封装,生成目标应用程序接口;其中,不同目标部署语言对应的调用方式不同;
将所述目标应用程序接口提供给所述用户设备,以供所述用户设备运行目标模型。
2.根据权利要求1所述的模型加载方法,其特征在于,若所述目标部署语言为python语言;所述采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,包括:
使用BytesIO方法将所述内存储器中解密后的所述目标模型文件转换成虚拟磁盘中的文件,将解密后的所述目标模型文件从所述虚拟磁盘中读取出来。
3.根据权利要求1所述的模型加载方法,其特征在于,若所述目标部署语言为c++语言;所述采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,包括:
判断所述目标模型文件所使用的深度学习框架,是否支持从所述内存储器中读取所述目标模型文件;
若支持,则根据解密后的目标模型文件的存储地址,将解密后的所述目标模型文件从所述内存储器中读取出来;
若不支持,在真实磁盘中创建临时文件,将解密后的所述目标模型文件写入所述临时文件中,并将解密后的所述目标模型文件从所述临时文件中读取出来;所述临时文件的文件名称对所述用户设备不可见。
4.根据权利要求3所述的模型加载方法,其特征在于,所述在真实磁盘中创建临时文件,将解密后的所述目标模型文件写入所述临时文件中,包括:
在所述真实磁盘中创建所述临时文件,并将所述临时文件的文件名称删除;
将解密后的所述目标模型文件写入所述临时文件中。
5.根据权利要求1所述的模型加载方法,其特征在于,在接收到用户设备发送的针对目标模型文件的加载请求之前,所述模型加载方法还包括:
向所述内存储器申请映射存储区域,并在所述内存储器中对所述目标模型文件进行加密,将加密后的所述目标模型文件映射至所述映射存储区域。
6.根据权利要求5所述的模型加载方法,其特征在于,所述在所述内存储器中对所述目标模型文件进行加密,包括:
采用多线程并行任务处理方式,同时对所述目标模型文件中的各个子文件进行加密。
7.根据权利要求5所述的模型加载方法,其特征在于,根据以下步骤对所述目标模型文件进行加密:
获取加密时刻对应的第一时间戳;
根据所述第一时间戳生成第二密钥,并通过所述第二密钥对所述目标模型文件进行加密。
8.根据权利要求7所述的模型加载方法,其特征在于,所述根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密,包括:
判断所述第一密钥和所述第二密钥是否相同;
若相同,则根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
若不同,则拒绝解密。
9.根据权利要求8所述的模型加载方法,其特征在于,在所述判断所述第一密钥和所述第二密钥是否相同之前,所述模型加载方法还包括:
获取所述用户设备发送所述加载请求时对应的第二时间戳,并判断所述第二时间戳与所述第一时间戳之间的时间差是否超出预设阈值;
若是,则拒绝解密;
若否,则判断所述第二密钥和所述第一密钥是否相同。
10.一种模型加载装置,其特征在于,所述模型加载装置包括:
解密模块,用于在接收到用户设备发送的针对目标模型文件的加载请求时,根据所述加载请求中携带的第一密钥对加密后的所述目标模型文件进行解密;
写入模块,用于若解密成功,将解密后的所述目标模型文件写入内存储器中;所述内存储器中存储的内容对所述用户设备不可见;
生成模块,用于采用所述用户设备使用的目标部署语言对应的调用方式,将解密后的所述目标模型文件从所述内存储器中调用出来,并将调用出的所述目标模型文件进行封装,生成目标应用程序接口;其中,不同目标部署语言对应的调用方式不同;
运行模块,用于将所述目标应用程序接口提供给所述用户设备,以供所述用户设备运行目标模型。
11.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至9任一所述的模型加载方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至9任一所述的模型加载方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110476549.8A CN113190877B (zh) | 2021-04-29 | 2021-04-29 | 一种模型加载方法、装置、可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110476549.8A CN113190877B (zh) | 2021-04-29 | 2021-04-29 | 一种模型加载方法、装置、可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190877A CN113190877A (zh) | 2021-07-30 |
CN113190877B true CN113190877B (zh) | 2022-10-04 |
Family
ID=76980685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110476549.8A Active CN113190877B (zh) | 2021-04-29 | 2021-04-29 | 一种模型加载方法、装置、可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190877B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115102739B (zh) * | 2022-06-15 | 2023-05-19 | 北京睿芯高通量科技有限公司 | 基于计算加密的pytorch深度学习网络模型保护方法 |
CN115344886B (zh) * | 2022-07-22 | 2023-11-24 | 安徽深信科创信息技术有限公司 | 一种模型加密方法、模型解密方法及装置 |
CN117313704B (zh) * | 2023-11-28 | 2024-02-23 | 江西师范大学 | 基于公有与私有特征分解的混合可读性评估方法与*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110826031A (zh) * | 2019-10-31 | 2020-02-21 | 北京东软望海科技有限公司 | 加密方法、装置、计算机设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108629193B (zh) * | 2018-04-26 | 2020-06-16 | 成都大象分形智能科技有限公司 | 一种针对人工神经网络模型的加密保护***及方法 |
CN110062014B (zh) * | 2019-06-11 | 2021-08-20 | 思必驰科技股份有限公司 | 网络模型的加密、解密方法及*** |
CN111191267B (zh) * | 2019-12-04 | 2023-03-31 | 杭州海康威视数字技术股份有限公司 | 一种模型数据的处理方法、装置及设备 |
CN111209013A (zh) * | 2020-01-15 | 2020-05-29 | 深圳市守行智能科技有限公司 | 一种高效的深度学习后端模型部署框架 |
CN111222637B (zh) * | 2020-01-17 | 2023-11-28 | 上海商汤智能科技有限公司 | 神经网络模型部署方法及装置、电子设备和存储介质 |
CN111260080A (zh) * | 2020-01-20 | 2020-06-09 | 深圳壹账通智能科技有限公司 | 基于机器学习的流程优化方法、装置、终端及存储介质 |
CN111338693B (zh) * | 2020-02-22 | 2023-07-14 | 深圳市魔数智擎人工智能有限公司 | 基于模型构建的目标文件生成方法、服务器及存储介质 |
CN111859415A (zh) * | 2020-06-18 | 2020-10-30 | 上海艾麒信息科技有限公司 | 神经网络模型加密***和方法 |
US20200327454A1 (en) * | 2020-06-26 | 2020-10-15 | Intel Corporation | Secured deployment of machine learning models |
CN111651149B (zh) * | 2020-07-03 | 2022-11-22 | 东软教育科技集团有限公司 | 一种便于部署的机器学习模型***及其调用方法 |
CN112085217B (zh) * | 2020-09-08 | 2024-04-16 | 中国平安人寿保险股份有限公司 | 部署人工智能服务的方法、装置、设备及计算机介质 |
CN112596735A (zh) * | 2020-12-18 | 2021-04-02 | 西安法士特汽车传动有限公司 | 一种加密模型的代码生成及集成编译方法 |
CN112685050A (zh) * | 2020-12-31 | 2021-04-20 | 北京配天技术有限公司 | TensorFlow在Windows***下的部署方法 |
-
2021
- 2021-04-29 CN CN202110476549.8A patent/CN113190877B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110826031A (zh) * | 2019-10-31 | 2020-02-21 | 北京东软望海科技有限公司 | 加密方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113190877A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113190877B (zh) | 一种模型加载方法、装置、可读存储介质及电子设备 | |
US20240126930A1 (en) | Secure Collaboration Between Processors And Processing Accelerators In Enclaves | |
JP6570663B2 (ja) | フィッシングおよびブランド保護のためのシステムおよび方法 | |
US10409984B1 (en) | Hierarchical data security measures for a mobile device | |
EP3038004A1 (en) | Method for providing security for common intermediate language-based program | |
CN106454528A (zh) | 基于可信执行环境的业务处理方法和客户端 | |
CN110637301B (zh) | 减少虚拟机中敏感数据的泄密 | |
CN113010856A (zh) | 一种动态非对称加解密的JavaScript代码混淆方法与*** | |
WO2023029447A1 (zh) | 模型保护方法、装置、设备、***以及存储介质 | |
CN112131595B (zh) | 一种SQLite数据库文件安全存取方法及装置 | |
CN108229190B (zh) | 透明加解密的控制方法、装置、程序、存储介质和电子设备 | |
CN108111622A (zh) | 一种下载白盒库文件的方法、装置及*** | |
CN101504622B (zh) | 进程间信息交互的方法及装置 | |
WO2019134276A1 (zh) | 一种保护网页代码的方法、存储介质、电子设备和*** | |
CN103530169B (zh) | 虚拟机文件保护方法和用户终端 | |
US20170262640A1 (en) | Database operation method and device | |
CN111683052A (zh) | 基于租户身份信息的可信虚拟机vTPM私密信息保护方法、*** | |
CN111182010B (zh) | 一种本地服务提供方法及装置 | |
CN105893862A (zh) | 一种浏览器缓存数据的保护方法及装置 | |
CN109408085A (zh) | 硬件钱包的升级方法、装置、***和存储介质 | |
CN108074151B (zh) | 电子商务的防刷单方法和*** | |
CN108427559B (zh) | 一种脚本文件生成和调用方法以及装置 | |
CN108958771B (zh) | 应用程序的更新方法、装置、服务器及存储介质 | |
CN110659509B (zh) | 一种内存快照文件的生成方法、装置、电子设备及介质 | |
CN113591040B (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 |