基于计算加密的pytorch深度学习网络模型保护方法转让专利

申请号 : CN202210680480.5

文献号 : CN115102739B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 闫博通琚午阳罗鑫王达

申请人 : 北京睿芯高通量科技有限公司

摘要 :

本发明公开一种基于计算加密的pytorch深度学习网络模型保护方法,其应用于一系统中,通过将系统分为解密动态库的分发端和请求解密的部署端,其中分发端负责将模型加密并生成解密与加载用的动态库,部署端接收动态库后进行解密并加载模型,从而实现使深度学习网络模型的正常工作,既能保证模型的隐秘性、安全性,又能减少加密解密的时间成本,提高加密解密的效率。

权利要求 :

1.一种基于计算加密的pytorch深度学习网络模型保护方法,其应用于一系统中,其特征在于:所述系统包括分发端和部署端,所述分发端与所述部署端之间通过网络建立连接,其中,所述分发端部署一关系数据库,所述关系数据库内存储多个深度学习网络的原始模型的相关信息及模型路径对照表,所述模型路径对照表包含每个原始模型的名称及其对应的模型路径;所述分发端还设置一端口,用于收发消息;

所述方法具体为:

步骤S1:所述部署端通过调用动态链接库内预置的请求方法向所述分发端发送请求包,其中,所述请求包的内容包括模型的名称;

步骤S2:所述分发端监听所述端口的消息,当监听到请求包则接收并解析所述请求包,得到模型的名称,并根据模型的名称从所述模型路径对照表中获取对应的模型路径,若对应模型路径上的模型文件能够找到并正确校验其md5值,则进入下一步,否则终止运行并返回错误代码;

步骤S3:所述分发端读取模型文件的内容,获取当前标准时间毫秒级的时间戳,并将时间戳附在模型文件内容的末尾;

步骤S4:所述分发端通过256位加密算法将模型文件的内容及时间戳生成为一256位的随机字节,并将所述随机字节作为原始模型的加密秘钥;

步骤S5:所述分发端通过对称的加密方式与步骤S4中的加密秘钥将对应的不包含时间戳的原始模型文件进行加密,并生成加密模型文件;

步骤S6:所述分发端将步骤S4中的加密秘钥写入预置解密程序文件中对应解密秘钥的位置,并生成解密文件动态库;

步骤S7:将步骤S5生成的加密模型文件与步骤S6生成的解密文件动态库封装为tar包,并发送至所述部署端;

步骤S8:所述部署端接收tar包后调用解封程序对tar包解封,并将加密模型文件与解密文件动态库分别存入对应路径中;

步骤S9:所述部署端调用解密文件动态库中的解密程序文件将加密模型文件解密为流;

步骤S10:所述部署端调用预置的pytorch加载模型函数对步骤S9得到的流进行加载。

2.根据权利要求1所述的基于计算加密的pytorch深度学习网络模型保护方法,其特征在于,所述模型路径对照表中的模型路径与模型的名称为一一对应,且所述模型路径对照表中还包括:模型的召回率、模型的误检率、模型的版本号、模型文件的md5值及模型创建时间,同时所述模型路径对照表的内容能够通过登录所述分发端的服务器进行更新。

3.根据权利要求1所述的基于计算加密的pytorch深度学习网络模型保护方法,其特征在于,所述请求包的内容由预置的请求方法自动生成。

4.根据权利要求1所述的基于计算加密的pytorch深度学习网络模型保护方法,其特征在于,步骤S3中所述模型文件的内容包括存储模型结构类的路径和参数,时间戳的获取是在读取模型文件的内容时获取当前服务器的时间,并加入模型文件中。

5.根据权利要求4所述的基于计算加密的pytorch深度学习网络模型保护方法,其特征在于,步骤S4中将模型文件的内容及时间戳生成所述随机字节具体为将模型文件及加入模型文件中的时间戳生成所述随机字节;所采用的256位加密算法为SHA加密算法,所述256位的随机字节为256位的哈希值。

6.根据权利要求1所述的基于计算加密的pytorch深度学习网络模型保护方法,其特征在于,步骤S5中对称的加密方式为AES、DES或3DES,其中:当采用AES加密方式时,则加密密钥为256位;

当采用DES加密方式时,则取前56位作为加密密钥;

当采用3DES加密方式时,则取前168位作为加密密钥。

说明书 :

基于计算加密的pytorch深度学习网络模型保护方法

技术领域

[0001] 本发明涉及计算机技术领域,具体而言,涉及一种应用于一系统中的基于计算加密的pytorch(一个开源的Python机器学习库)深度学习网络模型保护方法。

背景技术

[0002] 人工智能深度学习是一种让计算机具有从经验中学习的能力,并根据具有层次体系的概念理解世界形式的机器学习。它可以通过让计算机构建简单的概念来学习复杂的概念,由此得到的结果即是深度学习网络模型。使用基于深度学习网络的应用已经慢慢渗透进入各行各业,网络模型的隐秘性问题成为技术保护方面的巨大考验。网络模型的结构和权重是深度学习网络的核心,更是技术的核心所在,而在应用程序的发布或开发项目的验收与交付时,如果模型能够被轻易获取,则会导致技术核心的暴露、被重用甚至被二次开发,因此需要对模型进行加密保护。
[0003] 图1为现有采用同态加密技术的的模型加密方法示意图,如图1所示,同态加密技术是一种安全的模型加密方式,其是将需要进行推理的数据进行加密后,传入经过加密的模型网络中进行推理,从而得到最终加密的推理结果并返回给请求方。这种方法涉及运用已经加密的模型网络对加密的数据进行同态运算,而不须要获取到请求推理的数据明文或了解未经加密的原始模型,同时可以完成对经过加密处理的数据的推理,并返回加密的推理结果,由请求数据推理的一方对返回的推理结果进行解密并获取实际推理的结果,因此这种方法确实可以对模型和用户数据起到保密的作用。
[0004] 但是,现有的同态加密模型算法可以进行的操作有限,如python‑paillier算法支持加法同态,SEAL‑CKKS算法支持有限次数的加法和乘法。这会对网络本身可以进行的运算造成极大的限制,使一些逻辑实现的难度加大,甚至根本无法实现,尤其对于一些已经在生产中大量使用的网络训练模型所包含的算法更是无法实现。另外,由于使用同态加密的网络能够进行的运算本身的限制,有些网络需要对网络层进行重构,以完成与之前网络近似或等价的运算。而重构后的网络可看作是新网络,所以又必须对其进行重新训练,使用重构网络进行训练不但开销较大,还可能会影响模型的准确性。由此可知同态加密技术在实际生产运用中仍然存在效率问题:1)对于重构的网络进行训练,可能导致计算成本增大甚至过高;2)为保证安全性,用于加密的秘钥长度一般要求达到一定的位数,以使得经过加密的数据不被轻易的破获,因此可能导致加密解密时间成本更大,获取最终推理结果的开销增大。因此,需要一种更高效更安全的加密解密方式来对深度学习网络模型进行保护。

发明内容

[0005] 为了解决上述问题,本发明提供一种基于计算加密的pytorch深度学习网络模型保护方法,其应用于一系统中,通过将系统分为解密动态库的分发端和请求解密的部署端,其中分发端负责将模型加密并生成解密与加载用的动态库,部署端接收动态库后进行解密并加载模型,从而实现使深度学习网络模型的正常工作,既能保证模型的隐秘性、安全性,又能减少加密解密的时间成本,提高加密解密的效率。
[0006] 为达到上述目的,本发明提供了一种基于计算加密的pytorch深度学习网络模型保护方法,其应用于一系统中,其中:
[0007] 所述系统包括分发端和部署端,所述分发端与所述部署端之间通过网络建立连接,其中,所述分发端部署一关系数据库,所述关系数据库内存储多个深度学习网络的原始模型的相关信息及模型路径对照表,所述模型路径对照表包含每个原始模型的名称及其对应的模型路径;所述分发端还设置一端口,用于收发消息;
[0008] 所述方法具体为:
[0009] 步骤S1:所述部署端通过调用动态链接库内预置的请求方法向所述分发端发送请求包,其中,所述请求包的内容包括模型的名称;
[0010] 步骤S2:所述分发端监听所述端口的消息,当监听到请求则接收并解析所述请求包,得到模型的名称,并根据模型的名称从所述模型路径对照表中获取对应的模型路径,若对应模型路径上的模型文件能够找到并正确校验其md5值,则进入下一步,否则终止运行并返回错误代码;
[0011] 步骤S3:所述分发端读取模型文件的内容,获取当前标准时间毫秒级的时间戳,并将时间戳附在模型文件内容的末尾;
[0012] 步骤S4:所述分发端通过256位加密算法将模型文件的内容及时间戳生成为一256位的随机字节,并将所述随机字节作为对应模型的加密秘钥;
[0013] 步骤S5:所述分发端通过对称的加密方式与步骤S4中的加密秘钥将对应的不包含时间戳的原始模型文件进行加密,并生成加密模型文件;
[0014] 步骤S6:所述分发端将步骤S4中的加密秘钥写入预置解密程序文件中对应解密秘钥的位置,并生成解密文件动态库;
[0015] 步骤S7:将步骤S5生成的加密模型文件与步骤S6生成的解密文件动态库封装为tar包,并发送至所述部署端;
[0016] 步骤S8:所述部署端接收tar包后调用解封程序对tar包解封,并将加密模型文件与解密文件动态库分别存入对应路径中;
[0017] 步骤S9:所述部署端调用解密文件动态库中的解密程序文件将加密模型文件解密为流;
[0018] 步骤S10:所述部署端调用预置的pytorch加载模型函数对步骤S9得到的流进行加载。
[0019] 在本发明一实施例中,其中,所述模型路径对照表中的模型路径与模型的名称为一一对应,且所述模型路径对照表中还包括:模型的召回率、模型的误检率、模型的版本号、模型文件的md5值及模型创建时间,同时所述模型路径对照表的内容能够通过登录所述分发端服务器进行更新。
[0020] 在本发明一实施例中,其中,所述请求包的内容由预置的请求方法自动生成。
[0021] 在本发明一实施例中,其中,步骤S3中所述模型文件的内容包括存储模型结构类的路径和参数,时间戳的获取是在读取模型文件的内容时获取当前服务器的时间,并加入模型文件中。
[0022] 在本发明一实施例中,其中,步骤S4中将模型文件的内容及时间戳生成所述随机字节具体为将模型文件及加入模型文件中的时间戳生成所述随机字节;所采用的256位加密算法为SHA加密算法,所述256位的随机字节为256位的哈希值。
[0023] 在本发明一实施例中,其中,步骤S5中的对称的加密方式为AES、DES或3DES,其中:
[0024] 当采用AES加密方式时,则加密密钥为256位;
[0025] 当采用DES加密方式时,则取前56位作为加密密钥;
[0026] 当采用3DES加密方式时,则取前168位作为加密密钥。本发明提供的基于计算加密的pytorch深度学习网络模型保护方法,与现有技术相比,由于采用了动态库的形式将解密秘钥和算法模型进行分发,且每次模型分发前,都使用新生成的秘钥对模型进行加密,因此能够在确保模型的隐秘性和安全性的基础上,减少加密解密的时间成本,使加密解密的效率更高。

附图说明

[0027] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0028] 图1为现有采用同态加密技术的的模型加密方法示意图;
[0029] 图2为本发明一实施例的流程图。

具体实施方式

[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 图2为本发明一实施例的流程图,如图2所示,本实施例提供一种基于计算加密的pytorch深度学习网络模型保护方法,其应用于一系统中,其中:
[0032] 所述系统包括分发端和部署端,所述分发端与所述部署端之间通过网络建立连接,其中,所述分发端部署一关系数据库,所述关系数据库内存储多个深度学习网络的原始模型的相关信息及模型路径对照表,所述模型路径对照表包含每个原始模型的名称及其对应的模型路径;所述分发端还设置一端口,用于收发消息;
[0033] 在本实施例中,其中,所述模型路径对照表中的模型路径与模型的名称为一一对应,且所述模型路径对照表中还包括:模型的召回率、模型的误检率、模型的版本号、模型文件的md5值及模型创建时间,同时所述模型路径对照表的内容能够通过登录所述分发端服务器进行更新。
[0034] 所述方法具体为:
[0035] 步骤S1:所述部署端通过调用动态链接库内预置的请求方法向所述分发端发送请求包,其中,所述请求包的内容包括模型的名称;
[0036] 在本实施例中,其中,所述请求包的内容由预置的请求方法自动生成。部署端在调用请求方法需要明确取用模型的代号及功能,例如代号Resnet50,功能smoking(主干网络为Resnet50,功能为吸烟),请求方法会按代号查找对应模型的名称并将请求包发送到分发端。
[0037] 步骤S2:所述分发端监听所述端口的消息,当监听到请求则接收并解析所述请求包,得到模型的名称,并根据模型的名称从所述模型路径对照表中获取对应的模型路径,若对应模型路径上的模型文件能够找到并正确校验其md5值,则进入下一步,否则终止运行并返回错误代码;
[0038] 步骤S3:所述分发端读取模型文件的内容,获取当前标准时间毫秒级的时间戳,并将时间戳附在模型文件内容的末尾;
[0039] 在本实施例中,其中,步骤S3中所述模型文件的内容包括存储模型结构类的路径和参数,时间戳的获取是在读取模型文件的内容时获取当前服务器的时间,并加入模型文件中。
[0040] 步骤S4:所述分发端通过256位加密算法将模型文件的内容及时间戳生成为一256位的随机字节,并将所述随机字节作为对应模型的加密秘钥;
[0041] 在本实施例中,其中,步骤S4中将模型文件的内容及时间戳生成所述随机字节具体为将模型文件及加入模型文件中的时间戳生成所述随机字节;所采用的256位加密算法为SHA(Secure Hash Algorithm)加密算法,所述256位的随机字节为256位的哈希值。在其他实施例中,256位加密算法还可以选择任何能够生成256位随机字节的加密算法,本发明不对其进行限定。
[0042] 步骤S5:所述分发端通过对称的加密方式与步骤S4中的加密秘钥将对应的不包含时间戳的原始模型文件进行加密,并生成加密模型文件;
[0043] 在本实施例中,其中,步骤S5中的对称的加密方式为AES(Advanced Encryption Standard,高级加密标准)、DES(一种比较传统的对称加密)或3DES(Triple DES,是三重数据加密算法),其中:
[0044] 当采用AES加密方式时,则加密密钥为256位;
[0045] 当采用DES加密方式时,则取前56位作为加密密钥;
[0046] 当采用3DES加密方式时,则取前168位作为加密密钥。
[0047] 本实施例中,由于DES和3DES的秘钥长度不是256位,因此如果使用SHA安全散列算法生成256位摘要信息,则可取前56位(DES)或前168位(3DES)作为加密秘钥,此方式只是一优选的实施方式,也可以采用其他实施方式,其中56和168位中不包含奇偶校验位。
[0048] 步骤S6:所述分发端将步骤S4中的加密秘钥写入预置解密程序文件中对应解密秘钥的位置,并生成解密文件动态库;
[0049] 步骤S7:将步骤S5生成的加密模型文件与步骤S6生成的解密文件动态库封装为tar包(一种文件打包格式),并发送至所述部署端;
[0050] 步骤S8:所述部署端接收tar包后调用解封程序对tar包解封,并将加密模型文件与解密文件动态库分别存入对应路径中;
[0051] 步骤S9:所述部署端调用解密文件动态库中的解密程序文件将加密模型文件解密为流;
[0052] 步骤S10:所述部署端调用预置的pytorch加载模型函数对步骤S9得到的流进行加载,从而使对应的模型可以正常运行。其中,pytorch加载模型函数是使用pytorch的函数,具体为torch.jit.load(f,map_location=None,_extra_files=None)函数。
[0053] 其中,本实施例以AES256算法(256位AES算法)为例,AES256算法的加密解密速度很快,在很多Inter和AMD的CPU中都带有AES‑NI指令,是Inter在2008年3月提出的X86处理器上的指令集扩展,包括6条硬件对AES的支持和1条进位乘法优化指令,可以极快地完成加密与解密工作。对于Inter处理器,几乎所有目前Inter还在生产的core,Xeon绝大部分支持AES‑NI,而AMD自从2011年基于Bulldozer的处理器开始就全部支持AES‑NI。
[0054] AES加密算法目前还没有直接的破解方式,对于AES256来说,具有的秘钥个数为2~256,如果需要进行暴力破解,每纳秒执行一次的解密所需时间为2~255纳秒,完成解密时间约为1.8×10~60年,而即使是每纳秒执行一万次解密也需要大约1.8×10~56年。而AES最大的问题在于秘钥的获取过程,因此本发明将秘钥生成在分发端,连同解密算法一起封装为一个动态库,并且秘钥是由原始模型文件与毫秒级时间戳拼接通过SHA256哈希后得到的,因此部署端无法直接的获取原始模型,也就无法通过直接的方式获取或计算出可能的秘钥。
[0055] 再者,从AES秘钥重复的可能性考虑,本发明提出的技术方案是将秘钥按照每次请求的时间使用SHA256生成,则每次生成的秘钥几乎不可能在短时间内有所重复,而进行加密的模型则是按照每次生成的秘钥进行加密与发送的。
[0056] 此外,本发明的模型可以在分发端再训练并更新,而对于再次请求得到的模型可能经过了更好的训练之后的模型,部署端可以通过请求获取以完成即时的模型更新。
[0057] 本发明提供的基于计算加密的pytorch深度学习网络模型保护方法,与现有技术相比,由于采用了动态库的形式将解密秘钥和算法模型进行分发,且每次模型分发前,都使用新生成的秘钥对模型进行加密,因此能够在确保模型的隐秘性和安全性的基础上,减少加密解密的时间成本,使加密解密的效率更高。
[0058] 本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0059] 本领域普通技术人员可以理解:实施例中的模块可以按照实施例描述分布于实施例的系统中,也可以进行相应变化位于不同于本实施例的一个或多个系统中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0060] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。