基于AES算法的pytorch模型加密方法、系统及设备与流程

文档序号:29087821发布日期:2022-03-02 01:52阅读:498来源:国知局
基于AES算法的pytorch模型加密方法、系统及设备与流程
基于aes算法的pytorch模型加密方法、系统及设备
技术领域
1.本发明涉及面向深度学习模型的加密技术领域,具体涉及一种基于aes算法的pytorch模型加密方法、系统及设备。


背景技术:

2.近年来深度神经网络得到快速发展,在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题。但深度学习模型在实际的商业化部署中面临防止模型被窃取泄密的问题,因此,通过加密手段可以使得被窃取的模型失去商业价值,从而达到保护深度学习模型的目的。
3.目前pytorch模型加密主要方案是将外部资源文件嵌入二进制文件中(exe、 dll、lib),然后对二进制文件加壳保护,但这种方法不能把模型文件与工程代码独立开,不利于代码的管理、开发以及模型的跟踪管理。


技术实现要素:

4.本发明提出的一种基于aes算法的pytorch模型加密方法、系统及设备,可至少解决背景技术中的技术问题之一。
5.为实现上述目的,本发明采用了以下技术方案:
6.一种基于aes算法的pytorch模型加密方法,采用aes加密算法对模型二进制流进行加密,步骤如下:
7.以二进制格式打开pytorch模型文件转换成二进制流用于读写,设置aes密钥k,设置加密模式mode为对称加密,把已转换成二进制流的pytorch模型文件输入到aes加密函数中,生成模型加密文件。
8.进一步的,还包括采用aes加密算法对模型加密文件进行解密,步骤如下:
9.设置与加密时相同的aes密钥k及加密模式mode为对称加密,把模型加密文件输入到aes解密函数,生成解密后的pytorch模型二进制流文件,再以pytorch 框架中模型加载以流的方式读取解密后的模型二进制文件,进行网络的前向推理判断。
10.另一方面,本发明还包括一种基于aes算法的pytorch模型加密系统,包括加密单元,所述加密单元用于采用aes加密算法对模型二进制流进行加密,步骤如下:
11.以二进制格式打开pytorch模型文件转换成二进制流用于读写,设置aes密钥k,设置加密模式mode为对称加密,把已转换成二进制流的pytorch模型文件输入到aes加密函数中,生成模型加密文件。
12.进一步的,还包括解密单元,所述解密单元采用aes加密算法对模型加密文件进行解密,步骤如下:
13.设置与加密时相同的aes密钥k及加密模式mode为对称加密,把模型加密文件输入到aes解密函数,生成解密后的pytorch模型二进制流文件,再以pytorch 框架中模型加载
以流的方式读取解密后的模型二进制文件,进行网络的前向推理判断。
14.又一方面,本发明还公开一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上述方法的步骤。
15.再一方面,本发明还公开一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上方法的步骤。
16.由上述技术方案可知,本发明的基于aes算法的pytorch模型加密方法涉及一种应用于pytorch深度学习框架训练的模型在离线部署时的加密方法,能够保护模型内部网络结构及参数隐私,以防被人挪用,或者泄露出重要、敏感信息。
17.具体的说,本发明的优点如下:
18.从软件工程开发及维护角度上优点:把模型文件与工程代码独立开,实现模型文件与工程代码分离开发,利于代码的管理、后期维护以及模型的跟踪管理。
19.从商业价值角度上优点:训练一个实际商用的深度学习模型需要投入大量的人力、物力成本进行深度神经网络的设计、参数的调优,大量样本的训练。在这种情况下,模型即是商业价值的体现。因此,采用aes算法对模型进行加密,防止模型被窃取挪用,保护了模型内部参数、结构即保护了商业价值。
附图说明
20.图1为本发明的加密流程图;
21.图2为本发明的解密流程图;
22.图3是aes加密流程示意图;
23.图4是aes加密流程示意图是实例;
24.图5是图4中实例的密钥k;
25.图6是aes的整体结构示意图;
26.图7是aes状态矩阵经字节代换后的图;
27.图8是aes行移位操作示意图;
28.图9是aes轮密钥加示意图;
29.图10是aes密钥扩展示意图。
具体实施方式
30.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
31.如图1所示,本实施例所述的基于aes算法的pytorch模型加密方法,即提出一种应用于pytorch深度学习框架训练的模型在离线部署时的加密方法。该方法主要包括模型加密与模型的解密两个步骤:
32.(1)模型加密:采用aes加密算法对模型二进制流进行加密;以二进制格式打开pytorch模型文件转换成二进制流用于读写,设置aes密钥k,设置加密模式 mode为对称加密,把已转换成二进制流的pytorch模型文件输入到aes加密函数中,生成模型加密文件。加
密流程如图1所示;
33.(2)模型解密:采用aes加密算法对模型加密文件进行解密。设置与加密时相同的aes密钥k及加密模式mode为对称加密,把模型加密文件输入到aes解密函数,生成解密后的pytorch模型二进制流文件,再以pytorch框架中模型加载以流的方式读取解密后的模型二进制文件,进行网络的前向推理判断。解密流程如图2 所示。
34.aes的基本结构
35.aes为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在aes标准规范中,分组长度只能是 128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,如下表所示:
[0036][0037]
轮数在下面介绍,这里实现的是aes-128,也就是密钥的长度为128位,加密轮数为10轮。
[0038]
上面说到,aes的加密公式为c=e(k,p),在加密函数e中,会执行一个轮函数,并且执行10次这个轮函数,这个轮函数的前9次执行的操作是一样的,只有第10次有所不同。也就是说,一个明文分组会被加密10轮。aes的核心就是实现一轮中的所有操作。
[0039]
aes的处理单位是字节,128位的输入明文分组p和输入密钥k都被分成16 个字节,分别记为p=p0p1

p15和k=k0k1

k15。如,明文分组为p= abcdefghijklmnop,其中的字符a对应p0,p对应p15。一般地,明文分组用字节为单位的正方形矩阵描述,称为状态矩阵。在算法的每一轮中,状态矩阵的内容不断发生变化,最后的结果作为密文输出。
[0040]
该矩阵中字节的排列顺序为从上到下、从左至右依次排列,如图3所示;
[0041]
现在假设明文分组p为"abcdefghijklmnop",则对应上面生成的状态矩阵图如图4所示;上图中,0x51为字符a的十六进制表示。可以看到,明文经过aes 加密后,已经面目全非。
[0042]
类似地,128位密钥也是用字节为单位的矩阵表示,矩阵的每一列被称为1 个32位比特字。通过密钥编排函数该密钥矩阵被扩展成一个44个字组成的序列 w[0],w[1],

,w[43],该序列的前4个元素w[0],w[1],w[2],w[3]是原始密钥,用于加密运算中的初始密钥加(下面介绍);后面40个字分为10组,每组4个字(128 比特)分别用于10轮加密运算中的轮密钥加,如图5所示;
[0043]
上图中,设k=“abcdefghijklmnop”,则k0=a,k15=p,w[0]=k0k1 k2 k3 =“abcd”。
[0044]
aes的整体结构如图6所示,其中的w[0,3]是指w[0]、w[1]、w[2]和w[3] 串联组成的128位密钥。加密的第1轮到第9轮的轮函数一样,包括4个操作:字节代换、行位移、列混合和轮密钥加。最后一轮迭代不执行列混合。另外,在第一轮迭代之前,先将明文和原始密钥进行一次异或加密操作。
[0045]
图6中既展示了aes的加密过程同时也展示了aes的解密过程,解密过程仍为10轮,每一轮的操作是加密操作的逆操作。由于aes的4个轮操作都是可逆的,因此,解密操作的一轮就是顺序执行逆行移位、逆字节代换、轮密钥加和逆列混合。同加密操作类似,最后一轮不执行逆列混合,在第1轮解密之前,要执行1次密钥加操作。
[0046]
字节代换:
[0047]
1、字节代换操作
[0048]
aes的字节代换其实就是一个简单的查表操作。aes定义了一个s盒和一个逆s盒。
[0049]
aes的s盒如下表:
[0050][0051][0052]
状态矩阵中的元素按照下面的方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,取出s盒或者逆s盒中对应的行的元素作为输出。例如,加密时,输出的字节s1为0x12,则查s盒的第0x01行和0x02列,得到值 0xc9,然后替换s1原有的0x12为0xc9。状态矩阵经字节代换后的图如图7所示;
[0053]
2.字节代换逆操作,如下表:
[0054][0055][0056]
行移位
[0057]
1、行移位操作
[0058]
行移位是一个简单的左循环移位操作。当密钥长度为128比特时,状态矩阵的第0行左移0字节,第1行左移1字节,第2行左移2字节,第3行左移3字节,如图8所示;
[0059]
2.行移位的逆变换
[0060]
行移位的逆变换是将状态矩阵中的每一行执行相反的移位操作,例如 aes-128中,状态矩阵的第0行右移0字节,第1行右移1字节,第2行右移2 字节,第3行右移3字节。
[0061]
列混合
[0062]
1.列混合操作
[0063]
列混合变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵,如下公式所示:
[0064][0065]
状态矩阵中的第j列(0≤j≤3)的列混合可以表示为下所示:
[0066][0067][0068][0069][0070]
其中,矩阵元素的乘法和加法都是定义在基于gf(2^8)上的二元运算,并不是通常意义上的乘法和加法。二元运算的加法等价于两个字节的异或,乘法则复杂。对于一个8位的二进制数来说,使用域上的乘法乘以(00000010)等价于左移1位 (低位补0)后,再根据情况同(00011011)进行异或运算,设s1= (a7a6a5a4a3a2a1a0),刚0x02*s1如下所示:
[0071][0072]
因此,如果a7为1,则进行异或运算,否则不进行。类似地,乘以(00000100) 可以拆分成两次乘以(00000010)的运算:
[0073]
(00000100)*(a7a6a5a4a3a2a1a0)=(00000010)*(00000010)*(a7a6a5a4a3a2a1a0)
[0074]
乘以(0000 0011)可以拆分成先分别乘以(0000 0001)和(0000 0010),再将两个乘积异或:
[0075]
因此,本发明只需要实现乘以2的函数,其他数值的乘法都可以通过组合来实现。
[0076]
2.列混合逆运算
[0077]
逆向列混合变换可由下面的矩阵乘法定义
[0078][0079]
可以验证,逆变换矩阵同正变换矩阵的乘积恰好为单位矩阵。
[0080]
轮密钥加
[0081]
轮密钥加是将128位轮密钥ki同状态矩阵中的数据进行逐位异或操作,如下图9所
示。其中,密钥ki中每个字w[4i],w[4i+1],w[4i+2],w[4i+3]为32位比特字,包含4个字节,他们的生成算法下面在下面介绍。轮密钥加过程可以看成是字逐位异或的结果,也可以看成字节级别或者位级别的操作。也就是说,可以看成 s0s1s2s3组成的32位字与w[4i]的异或运算。
[0082]
轮密钥加的逆运算同正向的轮密钥加运算完全一致,这是因为异或的逆操作是其自身。轮密钥加非常简单,但却能够影响s数组中的每一位。
[0083]
密钥扩展
[0084]
aes首先将初始密钥输入到一个的状态矩阵中,如图10所示;
[0085]
这个44矩阵的每一列的4个字节组成一个字,矩阵4列的4个字依次命名为 w[0]、w[1]、w[2]和w[3],它们构成一个以字为单位的数组w。例如,设密钥k 为"abcdefghijklmnop",则k0=

a’,k1=

b’,k2=

c’,k3=

d’,w[0]=“abcd”。
[0086]
接着,对w数组扩充40个新列,构成总共44列的扩展密钥数组。新列以如下的递归方式产生:
[0087]
1.如果i不是4的倍数,那么第i列由如下等式确定:
[0088][0089]
2.如果i是4的倍数,那么第i列由如下等式确定:
[0090][0091]
其中,t是一个有点复杂的函数。
[0092]
函数t由3部分组成:字循环、字节代换和轮常量异或,这3部分的作用分别如下。
[0093]
a.字循环:将1个字中的4个字节循环左移1个字节。即将输入字[b0,b1,b2, b3]变换成[b1,b2,b3,b0]。
[0094]
b.字节代换:对字循环的结果使用s盒进行字节代换。
[0095]
c.轮常量异或:将前两步的结果同轮常量rcon[j]进行异或,其中j表示轮数。
[0096]
轮常量rcon[j]是一个字,其值见下表。
[0097]
j12345rcon[j]0100000002000000040000000800000010000000j678910rcon[j]2000000040000000800000001b00000036000000
[0098]
综上所述,本发明的基于aes算法的pytorch模型加密方法涉及一种应用于 pytorch深度学习框架训练的模型在离线部署时的加密方法,能够保护模型内部网络结构及参数隐私,以防被人挪用,或者泄露出重要、敏感信息。
[0099]
同时,本发明实施例还公开一种基于aes算法的pytorch模型加密系统,
[0100]
包括加密单元,所述加密单元用于采用aes加密算法对模型二进制流进行加密,步骤如下:
[0101]
以二进制格式打开pytorch模型文件转换成二进制流用于读写,设置aes密钥k,设置加密模式mode为对称加密,把已转换成二进制流的pytorch模型文件输入到aes加密函数中,生成模型加密文件;
[0102]
还包括解密单元,所述解密单元采用aes加密算法对模型加密文件进行解密,步骤
如下:
[0103]
设置与加密时相同的aes密钥k及加密模式mode为对称加密,把模型加密文件输入到aes解密函数,生成解密后的pytorch模型二进制流文件,再以pytorch 框架中模型加载以流的方式读取解密后的模型二进制文件,进行网络的前向推理判断。
[0104]
可理解的是,本发明实施例提供的系统与本发明实施例提供的方法相对应,相关内容的解释、举例和有益效果可以参考上述方法中的相应部分。
[0105]
本技术实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信,
[0106]
存储器,用于存放计算机程序;
[0107]
处理器,用于执行存储器上所存放的程序时,实现上述基于aes算法的pytorch 模型加密方法;
[0108]
上述电子设备提到的通信总线可以是外设部件互连标准(英文:peripheralcomponent interconnect,简称:pci)总线或扩展工业标准结构(英文:extendedindustry standard architecture,简称:eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
[0109]
通信接口用于上述电子设备与其他设备之间的通信。
[0110]
存储器可以包括随机存取存储器(英文:random access memory,简称: ram),也可以包括非易失性存储器(英文:non-volatile memory,简称:nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0111]
上述的处理器可以是通用处理器,包括中央处理器(英文:central processingunit,简称:cpu)、网络处理器(英文:network processor,简称:np)等;还可以是数字信号处理器(英文:digital signal processing,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)、现场可编程门阵列(英文:field-programmable gate array,简称:fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0112]
在本技术提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一基于aes算法的pytorch模型加密方法的步骤。
[0113]
在本技术提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一基于aes算法的 pytorch模型加密方法。
[0114]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)) 或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或
数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0115]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0116]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0117]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1