CN113946801B - 基于SGX的Python源码的保护方法和装置 - Google Patents
基于SGX的Python源码的保护方法和装置 Download PDFInfo
- Publication number
- CN113946801B CN113946801B CN202111282487.3A CN202111282487A CN113946801B CN 113946801 B CN113946801 B CN 113946801B CN 202111282487 A CN202111282487 A CN 202111282487A CN 113946801 B CN113946801 B CN 113946801B
- Authority
- CN
- China
- Prior art keywords
- python
- file
- encryption
- source code
- processing module
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000010276 construction Methods 0.000 claims abstract description 86
- 238000004590 computer program Methods 0.000 claims description 26
- 238000004806 packaging method and process Methods 0.000 claims description 11
- 238000004422 calculation algorithm Methods 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 3
- 238000007781 pre-processing Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000005336 cracking Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种基于SGX的Python源码的保护方法、装置、计算机设备和存储介质,应用于基于SGX的Python源码的保护系统。该方法包括:Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;SGX加解密处理模块根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;Python应用包构建模块对加密文件进行打包,得到Python应用包。采用本方法将加密算法和SGX框架完美结合,达到对Python源码文件的双重保护的效果。
Description
技术领域
本申请涉及对文件的加密保护的技术领域,特别是涉及一种基于SGX的Python源码的保护方法、装置、计算机设备和存储介质。
背景技术
随着大数据时代的到来,人工智能也越来越流行,使得用于实现人工智能的Python语言也越来越受欢迎,但是,在使用Python语言进行人工智能开发的过程中,为了对开发的内容进行保护,使其不被轻易的逆向,需要对Python源码进行保护。
现有的保护方法包括把py文件编译为pyc文件,Python解释器能够直接执行pyc文件,并且由于pyc文件是二进制文件,无法直接看出源码内容,从而达到保护Python源码的目的。或者将Python脚本转换为Windows平台上的可执行exe文件的工具,最终发行由py2exe打包出的二进制文件,从而达到保护源码的目的。
然而,上述两种方法的都存在兼容性差,且破解难度小的问题。也有少部分人从源码的自身出发,基于软件自身的加密算法进行加密,但是,其破解难度仍然不高。
发明内容
基于此,有必要针对上述技术问题,提供一种基于SGX的Python源码的保护方法、装置、计算机设备和存储介质。
一方面,提供一种基于SGX的Python源码的保护方法,应用于基于SGX的Python源码的保护系统,该方法包括:
Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;
Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包。
在其中一个实施例中,该方法还包括:
Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块;
Python解释器处理模块接收解密文件,进行执行解析。
在其中一个实施例中,上述的SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块,包括:
SGX加解密处理模块根据加密指令对Python源码文件进行加密,得到Python源码加密文件和随机密钥;
Python应用包构建模块读取RSA公钥文件,发送根据RSA公钥文件的公钥信息对随机密钥进行加密的密钥指令给SGX加解密处理模块;
SGX加解密处理模块根据密钥指令对随机密钥进行加密,得到AES密钥文件,并将AES密钥文件和Python源码加密文件发送给Python应用包构建模块。
在其中一个实施例中,上述的Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包,包括:
Python应用包构建模块接收AES密钥文件和Python源码加密文件,对AES密钥文件和Python源码加密文件进行打包,得到Python应用包。
在其中一个实施例中,上述的Python解析包包括Python源码加密文件和AES密钥文件;SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块,包括:
SGX加解密处理模块接收Python源码加密文件和AES密钥文件;并接收对Python源码加密文件进行解密的解密指令;
Python解释器处理模块读取预置的RSA私钥文件,发送根据RSA私钥文件的私钥信息对AES密钥文件进行解密的解钥指令;
SGX加解密处理模块接收解钥指令,对AES密钥文件进行解密,得到随机密钥;并根据解密指令采用随机密钥对Python源码加密文件进行解密,得到解密文件。
在其中一个实施例中,上述的Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块的步骤,还包括:
Python解释器处理模块读取Python应用包,识别Python应用包是否是加密文件;
在Python应用包是加密文件后,对Python应用包进行解析;
在Python应用包是非加密文件后,对Python应用包进行解释执行。
在其中一个实施例中,该方法还包括:
Python应用包构建模块、Python解释器处理模块以及SGX加解密处理模块之间均通过IPA接口调用的方式进行通信。
另一方面,提供了一种基于SGX的Python源码的保护装置,该装置包括:
Python应用包构建模块,用于读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块,用于接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;
Python应用包构建模块,还用于接收加密文件,对加密文件进行打包,得到Python应用包。
再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;
Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包。
又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;
Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包。
上述一种基于SGX的Python源码的保护方法、装置、计算机设备和存储介质,通过Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包。由于SGX(software guard extensions)指的是指令集扩展,其本身旨在以硬件安全为强制性保障,不依赖于固件和软件的安全状态,提供用户空间的可信执行环境;上述加密过程均是在安装有SGX的系统上,进行对Python源码文件的加密操作,使得加密的整个过程的安全性更高,将加密算法和SGX框架完美结合,达到对Python源码文件的双重保护的效果。
附图说明
图1为一个实施例中一种基于SGX的Python源码的保护方法的加密过程的流程示意图;
图2为一个实施例中一种基于SGX的Python源码的保护方法中的步骤204的流程示意图;
图3为一个实施例中一种基于SGX的Python源码的保护方法的解密过程的流程示意图;
图4为一个实施例中一种基于SGX的Python源码的保护方法中的步骤304的流程示意图;
图5为一个实施例中一种基于SGX的Python源码的保护装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的一种基于SGX的Python源码的保护方法,应用于基于SGX的Python源码的保护系统,如图1所示,包括以下步骤:
步骤202,Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块。
这里的Python源码文件即为原始待保护的Python文件。其中,Python应用包构建模块包括Python源码发送单元、RSA密钥处理单元以及Python应用打包单元。
具体地,Python源码发送单元对Python源码文件进行读取,且将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块。
步骤204,SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块。
具体的,SGX加解密处理模块接收Python源码发送单元发送来的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密处理以得到加密文件,且将加密文件发送给Python应用打包单元。
步骤206,Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包。
具体的,Python应用打包单元接收SGX加解密处理模块发送来的加密文件,对加密文件进行打包,得到Python应用包,从而,完成对Python源码文件的加密过程。
上述一种基于SGX的Python源码的保护方法,通过Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包。由于SGX(software guard extensions)指的是指令集扩展,本身旨在以硬件安全为强制性保障,不依赖于固件和软件的安全状态,提供用户空间的可信执行环境;上述加密过程均是在安装有SGX的系统上,进行对Python源码文件的加密操作,使得加密的整个过程的安全性更高,将加密算法和SGX框架完美结合,达到对Python源码文件的双重保护的效果。
在其中一个实施例中,上述的SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块,包括如下步骤:
如图2所示,步骤2042,SGX加解密处理模块根据加密指令对Python源码文件进行加密,得到Python源码加密文件和随机密钥。
这里的SGX加解密处理模块包括AES随机密钥生成单元、AES加密处理单元以及RSA加密处理单元。
具体的,AES随机密钥生成单元接收Python源码发送单元发送来的Python源码文件和加密指令,根据加密指令生成随机密钥,并将Python源码文件和随机密钥发送给AES加密处理单元,AES加密处理单元根据随机密钥对Python源码文件进行加密得到Python源码加密文件,并将Python源码加密文件和随机密钥发送给RSA加密处理单元。
步骤2044,Python应用包构建模块读取RSA公钥文件,发送根据RSA公钥文件的公钥信息对随机密钥进行加密的密钥指令给SGX加解密处理模块。
具体的,RSA公钥处理单元读取预置的RSA私钥文件,并发送根据RSA公钥文件的公钥信息对随机密钥进行加密的密钥指令给RSA加密处理单元。
步骤2046,SGX加解密处理模块根据密钥指令对随机密钥进行加密,得到AES密钥文件,并将AES密钥文件和Python源码加密文件发送给Python应用包构建模块。
具体的,RSA加密处理单元根据接收的随机密钥和密钥指令,对随机密钥进行加密,得到AES密钥文件,并将AES密钥文件和Python源码加密文件发送给Python应用打包单元。
通过上述操作,不仅仅对Python源码文件进行加密还对随机密钥进行加密,双重保障,实现对Python源码文件的进一步加密保护。
在其中一个实施例中,上述的Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包,包括如下步骤:
具体的,Python应用打包单元接收AES密钥文件和Python源码加密文件,对AES密钥文件和Python源码加密文件进行打包,得到Python应用包。
通过上述操作,对AES密钥文件和Python源码加密文件进行打包得到经过双重加密后的Python应用包,提高对Python源码文件的安全保障。
在其中一个实施例中,上述方法还包括如下步骤:
如图3所示,步骤302,Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块。
这里,Python解释器处理模块包括Python应用预处理单元、RSA私钥处理单元、Python源码接收单元以及Python解释器单元。
具体的,Python应用预处理单元接收Python应用打包单元发送的Python应用包,进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块。
步骤304,SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块。
具体的,SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件。
步骤306,Python解释器处理模块接收解密文件,进行执行解析。
具体的,Python解释器单元接收解密文件,进行执行解析,从而,实现对Python源码文件的破解操作。
这里需要进一步说明的是,Python应用包构建模块、Python解释器处理模块以及SGX加解密处理模块之间均通过IPA接口调用的方式进行通信,通过接口调用的方式,进一步增强其安全性能。
上述方式通过设置Python解释器处理模块,对Python应用包进行读取解析,得到Python解析包,并将其发送给SGX加解密处理模块进行解密,从而得到Python源码文件,实现对Python源码文件的解密操作。
在其中一个实施例中,上述的Python解析包包括Python源码加密文件和AES密钥文件;SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块,具体包括如下步骤:
如图4所示,步骤3042,SGX加解密处理模块接收Python源码加密文件和AES密钥文件;并接收对Python源码加密文件进行解密的解密指令。
这里的SGX加解密处理模块还包括AES解密处理单元和RSA解密处理单元。
具体的,由于Python解析包包括Python源码加密文件和AES密钥文件,RSA解密处理单元接收Python源码加密文件和AES密钥文件,并接收对Python源码加密文件进行解密的解密指令。
步骤3044,Python解释器处理模块读取预置的RSA私钥文件,发送根据RSA私钥文件的私钥信息对AES密钥文件进行解密的解钥指令。
具体的,RSA私钥处理单元读取预置的RSA私钥文件,发送根据RSA私钥文件对AES密钥文件进行解密的解钥指令给RSA解密处理单元。
步骤3046,SGX加解密处理模块接收解钥指令,对AES密钥文件进行解密,得到随机密钥;并根据解密指令采用随机密钥对Python源码加密文件进行解密,得到解密文件。
具体的,RSA解密处理单元接收来自RSA私钥处理单元发送的根据RSA私钥文件对AES密钥文件进行解密的解钥指令,对AES密钥进行解密,得到随机密钥,发送给AES解密处理单元。
AES解密处理单元根据解密指令采用随机密钥对Python源码加密文件进行解密,得到解密文件,即得到经过双重解密后的Python源码文件。
通过上述操作,依次对AES密钥文件和Python源码加密文件进行解密得到Python源码文件,实现对Python源码文件的解密过程。
在其中一个实施例中,上述的Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块的步骤,还包括如下步骤:
Python应用预处理单元读取Python应用包,识别Python应用包是否是加密文件。即Python应用预处理单元在对Python应用包读取的时候,要先进行判断,在判断Python应用包是加密文件后,才执行对Python应用包的解析操作,在判断Python应用包是非加密文件的时候,将其发送给Python解释器单元,Python解释器单元直接对Python应用包进行解释执行。
通过上述操作,Python应用预处理单元在对Python应用包进行读取时,首先要进行是否是加密文件的判断,以免不是加密文件的时候做无用功,在确定不是加密文件后则直接发送给Python解释器单元进行解释执行操作。
应该理解的是,虽然图1-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种基于SGX的Python源码的保护装置,包括:Python应用包构建模块402、SGX加解密处理模块404其中:
Python应用包构建模块402,用于读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块404,用于接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;
Python应用包构建模块402,还用于接收加密文件,对加密文件进行打包,得到Python应用包。
在其中一个实施例中,SGX加解密处理模块404,还用于:
根据加密指令对Python源码文件进行加密,得到Python源码加密文件和随机密钥;
Python应用包构建模块,读取RSA公钥文件,发送根据RSA公钥文件的公钥信息对随机密钥进行加密的密钥指令给SGX加解密处理模块;
SGX加解密处理模块,根据密钥指令对随机密钥进行加密,得到AES密钥文件,并将AES密钥文件和Python源码加密文件发送给Python应用包构建模块。
在其中一个实施例中,Python应用包构建模块402,还用于:
接收AES密钥文件和Python源码加密文件,对AES密钥文件和Python源码加密文件进行打包,得到Python应用包。
在其中一个实施例中,上述的装置还包括Python解释器处理模块406,该Python解释器处理模块406用于:
接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块;
Python解释器处理模块接收解密文件,进行执行解析。
在其中一个实施例中,上述的SGX加解密处理模块404,还用于:
接收Python源码加密文件和AES密钥文件;并接收对Python源码加密文件进行解密的解密指令;
Python解释器处理模块读取预置的RSA私钥文件,发送根据RSA私钥文件的私钥信息对AES密钥文件进行解密的解钥指令;
SGX加解密处理模块接收解钥指令,对AES密钥文件进行解密,得到随机密钥;并根据解密指令采用随机密钥对Python源码加密文件进行解密,得到解密文件。
在其中一个实施例中,上述的Python解释器处理模块406,还用于:
读取Python应用包,识别Python应用包是否是加密文件;
在Python应用包是加密文件后,对Python应用包进行解析;
在Python应用包是非加密文件后,对Python应用包进行解释执行。
在其中一个实施例中,上述的装置中的Python应用包构建模块、Python解释器处理模块以及SGX加解密处理模块之间均通过IPA接口调用的方式进行通信。
关于一种基于SGX的Python源码的保护装置的具体限定可以参见上文中对于一种基于SGX的Python源码的保护方法的限定,在此不再赘述。上述一种基于SGX的Python源码的保护装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于SGX的Python源码的保护方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;
Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块;
Python解释器处理模块接收解密文件,进行执行解析。
在一个实施例中,在处理器执行计算机程序实现上述的SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块的步骤时,具体实现以下步骤:
SGX加解密处理模块根据加密指令对Python源码文件进行加密,得到Python源码加密文件和随机密钥;
Python应用包构建模块读取RSA公钥文件,发送根据RSA公钥文件的公钥信息对随机密钥进行加密的密钥指令给SGX加解密处理模块;
SGX加解密处理模块根据密钥指令对随机密钥进行加密,得到AES密钥文件,并将AES密钥文件和Python源码加密文件发送给Python应用包构建模块。
在一个实施例中,在处理器执行计算机程序实现上述的Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包的步骤时,具体实现以下步骤:
Python应用包构建模块接收AES密钥文件和Python源码加密文件,对AES密钥文件和Python源码加密文件进行打包,得到Python应用包。
在一个实施例中,在处理器执行计算机程序实现上述的Python解析包包括Python源码加密文件和AES密钥文件;SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块步骤时,具体实现以下步骤:
SGX加解密处理模块接收Python源码加密文件和AES密钥文件;并接收对Python源码加密文件进行解密的解密指令;
Python解释器处理模块读取预置的RSA私钥文件,发送根据RSA私钥文件的私钥信息对AES密钥文件进行解密的解钥指令;
SGX加解密处理模块接收解钥指令,对AES密钥文件进行解密,得到随机密钥;并根据解密指令采用随机密钥对Python源码加密文件进行解密,得到解密文件。
在一个实施例中,在处理器执行计算机程序实现上述的Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块步骤时,具体实现以下步骤:
Python解释器处理模块读取Python应用包,识别Python应用包是否是加密文件;
在Python应用包是加密文件后,对Python应用包进行解析;
在Python应用包是非加密文件后,对Python应用包进行解释执行。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
Python应用包构建模块、Python解释器处理模块以及SGX加解密处理模块之间均通过IPA接口调用的方式进行通信。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
Python应用包构建模块读取Python源码文件,将Python源码文件和对Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块;
Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包。
在一个实施例中,在计算机程序被处理器执行时还实现以下步骤:
Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块;
SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块;
Python解释器处理模块接收解密文件,进行执行解析。
在一个实施例中,在计算机程序被处理器执行上述的SGX加解密处理模块接收Python应用包构建模块发送的Python源码文件和加密指令,根据加密指令对Python源码文件进行加密,得到加密文件,并将加密文件返回给Python应用包构建模块的步骤时,具体实现以下步骤:
SGX加解密处理模块根据加密指令对Python源码文件进行加密,得到Python源码加密文件和随机密钥;
Python应用包构建模块读取RSA公钥文件,发送根据RSA公钥文件的公钥信息对随机密钥进行加密的密钥指令给SGX加解密处理模块;
SGX加解密处理模块根据密钥指令对随机密钥进行加密,得到AES密钥文件,并将AES密钥文件和Python源码加密文件发送给Python应用包构建模块。
在一个实施例中,在计算机程序被处理器执行上述的Python应用包构建模块接收加密文件,对加密文件进行打包,得到Python应用包的步骤时,具体实现以下步骤:
Python应用包构建模块接收AES密钥文件和Python源码加密文件,对AES密钥文件和Python源码加密文件进行打包,得到Python应用包。
在一个实施例中,在计算机程序被处理器执行上述的Python解析包包括Python源码加密文件和AES密钥文件;SGX加解密处理模块接收Python解析包和解密指令,根据解密指令对Python解析包进行解密,得到解密文件,并将解密文件返回给Python解释器处理模块步骤时,具体实现以下步骤:
SGX加解密处理模块接收Python源码加密文件和AES密钥文件;并接收对Python源码加密文件进行解密的解密指令;
Python解释器处理模块读取预置的RSA私钥文件,发送根据RSA私钥文件的私钥信息对AES密钥文件进行解密的解钥指令;
SGX加解密处理模块接收解钥指令,对AES密钥文件进行解密,得到随机密钥;并根据解密指令采用随机密钥对Python源码加密文件进行解密,得到解密文件。
在一个实施例中,在计算机程序被处理器执行上述的Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对Python应用包进行读取解析,得到Python解析包;并将Python解析包和对Python解析包进行解密的解密指令发送给SGX加解密处理模块步骤时,具体实现以下步骤:
Python解释器处理模块读取Python应用包,识别Python应用包是否是加密文件;
在Python应用包是加密文件后,对Python应用包进行解析;
在Python应用包是非加密文件后,对Python应用包进行解释执行。
在一个实施例中,在计算机程序被处理器执行时还实现以下步骤:
Python应用包构建模块、Python解释器处理模块以及SGX加解密处理模块之间均通过IPA接口调用的方式进行通信。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种基于SGX的Python源码的保护方法,应用于基于SGX的Python源码的保护系统,其特征在于,所述方法包括:
Python应用包构建模块读取Python源码文件,将所述Python源码文件和对所述Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块根据所述加密指令对所述Python源码文件进行加密,得到Python源码加密文件和随机密钥;
Python应用包构建模块读取RSA公钥文件,发送根据所述RSA公钥文件的公钥信息对所述随机密钥进行加密的密钥指令给SGX加解密处理模块;
SGX加解密处理模块根据所述密钥指令对所述随机密钥进行加密,得到AES密钥文件,并将所述AES密钥文件和所述Python源码加密文件发送给Python应用包构建模块;
Python应用包构建模块接收所述AES密钥文件和所述Python源码加密文件,对所述AES密钥文件和所述Python源码加密文件进行打包,得到Python应用包;
Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对所述Python应用包进行读取解析,得到Python解析包;并将所述Python解析包和对所述Python解析包进行解密的解密指令发送给SGX加解密处理模块,其中,所述Python解析包包括Python源码加密文件和所述AES密钥文件;
SGX加解密处理模块接收所述Python源码加密文件和所述AES密钥文件;并接收对所述Python源码加密文件进行解密的解密指令;
Python解释器处理模块读取预置的RSA私钥文件,发送根据所述RSA私钥文件的私钥信息对所述AES密钥文件进行解密的解钥指令;
SGX加解密处理模块接收所述解钥指令,对所述AES密钥文件进行解密,得到随机密钥;并根据所述解密指令采用所述随机密钥对所述Python源码加密文件进行解密,得到解密文件,并将所述解密文件返回给Python解释器处理模块;
Python解释器处理模块接收所述解密文件,执行解析。
2.根据权利要求1所述的方法,其特征在于,所述Python解释器处理模块接收Python应用包构建模块发送的Python应用包,对所述Python应用包进行读取解析,得到Python解析包;并将所述Python解析包和对所述Python解析包进行解密的解密指令发送给SGX加解密处理模块的步骤,还包括:
所述Python解释器处理模块读取所述Python应用包,识别所述Python应用包是否是加密文件;
在所述Python应用包是加密文件后,对所述Python应用包进行解析;
在所述Python应用包是非加密文件后,对所述Python应用包进行解释执行。
3.根据权利要求1所述的方法,其特征在于,所述Python应用包构建模块、Python解释器处理模块以及SGX加解密处理模块之间均通过IPA接口调用的方式进行通信。
4.一种基于SGX的Python源码的保护装置,其特征在于,所述装置包括:
Python应用包构建模块,用于读取Python源码文件,将所述Python源码文件和对所述Python源码文件进行加密的加密指令发送给SGX加解密处理模块;
SGX加解密处理模块,用于根据所述加密指令对所述Python源码文件进行加密,得到Python源码加密文件和随机密钥;Python应用包构建模块读取RSA公钥文件,发送根据所述RSA公钥文件的公钥信息对所述随机密钥进行加密的密钥指令给SGX加解密处理模块;SGX加解密处理模块根据所述密钥指令对所述随机密钥进行加密,得到AES密钥文件,并将所述AES密钥文件和所述Python源码加密文件发送给Python应用包构建模块;
Python应用包构建模块,用于接收所述AES密钥文件和所述Python源码加密文件,对所述AES密钥文件和所述Python源码加密文件进行打包,得到Python应用包;
Python解释器处理模块,用于接收Python应用包构建模块发送的Python应用包,对所述Python应用包进行读取解析,得到Python解析包;并将所述Python解析包和对所述Python解析包进行解密的解密指令发送给SGX加解密处理模块,其中,所述Python解析包包括Python源码加密文件和所述AES密钥文件;SGX加解密处理模块接收所述Python源码加密文件和所述AES密钥文件;并接收对所述Python源码加密文件进行解密的解密指令;Python解释器处理模块读取预置的RSA私钥文件,发送根据所述RSA私钥文件的私钥信息对所述AES密钥文件进行解密的解钥指令;
SGX加解密处理模块接收所述解钥指令,对所述AES密钥文件进行解密,得到随机密钥;并根据所述解密指令采用所述随机密钥对所述Python源码加密文件进行解密,得到解密文件,并将所述解密文件返回给Python解释器处理模块;Python解释器处理模块接收所述解密文件,执行解析。
5.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3中任一项所述方法的步骤。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111282487.3A CN113946801B (zh) | 2021-11-01 | 2021-11-01 | 基于SGX的Python源码的保护方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111282487.3A CN113946801B (zh) | 2021-11-01 | 2021-11-01 | 基于SGX的Python源码的保护方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113946801A CN113946801A (zh) | 2022-01-18 |
CN113946801B true CN113946801B (zh) | 2024-06-04 |
Family
ID=79337343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111282487.3A Active CN113946801B (zh) | 2021-11-01 | 2021-11-01 | 基于SGX的Python源码的保护方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946801B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116522295A (zh) * | 2023-04-26 | 2023-08-01 | 北京青萌数海科技有限公司 | 一种保护r语言源代码的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760219A (zh) * | 2011-12-20 | 2012-10-31 | 北京安天电子设备有限公司 | 一种Android平台软件保护系统、方法及设备 |
CN106599628A (zh) * | 2016-12-08 | 2017-04-26 | 合肥康捷信息科技有限公司 | 一种基于模块钩子的Python字节码文件保护方法 |
CN107545189A (zh) * | 2017-06-26 | 2018-01-05 | 新华三技术有限公司 | 一种文件获得方法及装置 |
CN107808101A (zh) * | 2017-11-06 | 2018-03-16 | 上海金途信息科技有限公司 | 一种通过加密Python明文源码token的知识产权保护系统 |
CN109510708A (zh) * | 2018-10-24 | 2019-03-22 | 中国科学院信息工程研究所 | 一种基于Intel SGX机制的公钥密码计算方法和系统 |
CN109948354A (zh) * | 2019-03-19 | 2019-06-28 | 南京大学 | 一种跨平台使用硬件隔离环境对文件进行加密校验的方法 |
-
2021
- 2021-11-01 CN CN202111282487.3A patent/CN113946801B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760219A (zh) * | 2011-12-20 | 2012-10-31 | 北京安天电子设备有限公司 | 一种Android平台软件保护系统、方法及设备 |
CN106599628A (zh) * | 2016-12-08 | 2017-04-26 | 合肥康捷信息科技有限公司 | 一种基于模块钩子的Python字节码文件保护方法 |
CN107545189A (zh) * | 2017-06-26 | 2018-01-05 | 新华三技术有限公司 | 一种文件获得方法及装置 |
CN107808101A (zh) * | 2017-11-06 | 2018-03-16 | 上海金途信息科技有限公司 | 一种通过加密Python明文源码token的知识产权保护系统 |
CN109510708A (zh) * | 2018-10-24 | 2019-03-22 | 中国科学院信息工程研究所 | 一种基于Intel SGX机制的公钥密码计算方法和系统 |
CN109948354A (zh) * | 2019-03-19 | 2019-06-28 | 南京大学 | 一种跨平台使用硬件隔离环境对文件进行加密校验的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113946801A (zh) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177749B (zh) | 加密源代码文件处理方法、装置、计算机设备和存储介质 | |
JP4470982B2 (ja) | 情報処理装置及び情報処理プログラム | |
CN108399319B (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
CN111159658B (zh) | 字节码处理方法、系统、装置、计算机设备和存储介质 | |
CN110245466B (zh) | 软件完整性保护和验证方法、系统、设备及存储介质 | |
WO2023029447A1 (zh) | 模型保护方法、装置、设备、系统以及存储介质 | |
CN112469036A (zh) | 一种消息加解密方法、装置、移动终端和存储介质 | |
CN111431718A (zh) | 基于tee扩展的计算机通用安全加密转换层方法及系统 | |
CN113946801B (zh) | 基于SGX的Python源码的保护方法和装置 | |
CN107871066A (zh) | 基于安卓系统的代码编译方法及装置 | |
CN113032741B (zh) | 类文件加密方法、类文件运行方法、装置、设备及介质 | |
CN117313046A (zh) | 一种代码加固方法、代码加载方法、设备及介质 | |
CN112115430A (zh) | 一种apk的加固方法、电子设备及存储介质 | |
CN103605927A (zh) | 一种基于嵌入式Linux系统实现加密和解密方法 | |
CN109784072B (zh) | 一种安全文件管理方法和系统 | |
CN109450899B (zh) | 密钥管理方法及装置、电子设备、存储介质 | |
WO2013042409A1 (ja) | モジュールの暗号化/復号化プログラム | |
CN109995526A (zh) | 一种密钥的存储方法和装置、密钥的调用方法和装置 | |
CN116226881A (zh) | 一种基于编译型语言的源码加密方法 | |
EP3944106A1 (en) | Obfuscating method of protecting code | |
CN113420313A (zh) | 程序安全运行、加密方法及其装置、设备、介质 | |
MacFadden et al. | Performance Impacts of JavaScript-Based Encryption of HTML5 Web Storage for Enhanced Privacy | |
US9021271B1 (en) | Injecting code decrypted by a hardware decryption module into Java applications | |
CN107688729B (zh) | 基于可信主机的应用程序保护系统及方法 | |
CN110730166A (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 |