CN104573425B - 一种基于对称算法和专用加载模块的Python程序模块加密方法 - Google Patents

一种基于对称算法和专用加载模块的Python程序模块加密方法 Download PDF

Info

Publication number
CN104573425B
CN104573425B CN201410850871.2A CN201410850871A CN104573425B CN 104573425 B CN104573425 B CN 104573425B CN 201410850871 A CN201410850871 A CN 201410850871A CN 104573425 B CN104573425 B CN 104573425B
Authority
CN
China
Prior art keywords
python
module
encryption
key
load
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
Application number
CN201410850871.2A
Other languages
English (en)
Other versions
CN104573425A (zh
Inventor
任伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Geer software Limited by Share Ltd
Original Assignee
GEER SOFTWARE CO Ltd SHANGHAI
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by GEER SOFTWARE CO Ltd SHANGHAI filed Critical GEER SOFTWARE CO Ltd SHANGHAI
Priority to CN201410850871.2A priority Critical patent/CN104573425B/zh
Publication of CN104573425A publication Critical patent/CN104573425A/zh
Application granted granted Critical
Publication of CN104573425B publication Critical patent/CN104573425B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Abstract

本发明公开了一种基于对称算法和专用加载模块的Python程序模块加密方法,其使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。本发明可以保护Python程序模块不被轻易反编译分析,从而保护Python所开发程序的知识产权。

Description

一种基于对称算法和专用加载模块的Python程序模块加密 方法
技术领域
本发明涉及一种网络安全技术,具体涉及一种Python程序模块的安全技术。
背景技术
随着Python语言的流行,不少应用开始采用Python来实现。但Python语言开发的程序模块(pyc、pyo),很容易被反编译出源代码。而且由于Python语言自身的特性,无法用类似Java、C#的混淆器对程序模块进行混淆,所以用Python开发的应用很难保护其源代码的知识产权。
现有的一些保护方法,要么影响开发(比如定制一个专用的Python解释器,开发和发布用不同),要么仅仅是将其打包成一个exe文件(如py2exe工具,但Python程序模块仍可以很容易地拿出并反编译),缺少一个方便易用的、防护性较强的代码保护方法。
发明内容
针对现有Python语言开发的程序模块在安全防护方面所存在的问题,本发明提供一种Python程序模块加密方法,可以在不影响开发的前提下,保护Python程序模块不被反编译。
为了达到上述目的,本发明采用如下的技术方案:
一种基于对称算法和专用加载模块的Python程序模块加密方法,所述加密方法使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。
优选的,所述加密方法具体包括如下步骤:
1)采用固定密钥和对称算法加密需要保护的Python程序模块;
2)基于步骤1)中的固定密钥和对称算法,形成一Python程序专用加载模块,来加载、解密所加密的Python程序模块;
3)应用启动时先加载专用加载模块;
4)应用发布时,只发布加密后的Python程序模块和应用的启动部分。
进一步的,所述步骤2)中形成的专用加载模块编译为Python扩展模块,并通过固定密钥和对称算法加密Python程序模块。
基于本发明提供的加密方法,除了应用的启动部分外,所有用Python写的业务逻辑程序模块,都可以用对称算法的加密得到保护,而且专用的加载模块也是C语言编译的Python扩展模块,从而保护这些程序模块不会轻易被反编译,从而保护应用的知识产权。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合实例,进一步阐述本发明。
本发明提供的Python程序模块加密方法,其基于对称算法和专用加载模块,使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。
基于上述原理,该Python程序模块加密方法具体通过如下步骤实现:
1)采用固定密钥和对称算法加密需要保护的Python程序模块。
2)基于步骤1)中的固定密钥和对称算法,形成一Python程序专用加载模块,来加载、解密所加密的Python程序模块。该专用加载模块具体编译为Python扩展模块,以此来保护密钥以及加密算法不被轻易反编译。
3)应用启动时先加载专用加载模块;
4)应用发布时,只发布加密后的Python程序模块和应用的启动部分。
以下通过一具体实例来进一步说明本发明的方案:
1)选择一种对称加密算法(如果RC4算法),并生成一个随机的对称密钥。
2)用步骤1)中生成的对称密钥和对称算法,对需要保护的Python的编译文件(pyc、pyo)加密,加密后的文件以.pye结尾。
3)用Python实现一个专用加载模块。具体为,实现Python中的一个finder(负责搜索并加载Python程序模块)对象,此对象可以在指定搜索路径中搜索以.pye结尾的加密Python程序模块,并可根据步骤1)中的对称密钥和对称算法对加密的Python程序模块解密。
4)将步骤3)中用Python实现的专用加载模块,用Cython工具转换生成C语言,并进一步编译生成为Python扩展模块,以保护其中定义的对称密钥和对称算法实现不被轻易地反编译。
5)在应用的启动部分,首先加载步骤4)中生成的Python扩展模块,并指定待搜索的加密Python程序模块的路径。
6)在应用发布时,只发布加密后的Python程序模块和应用的启动部分。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (1)

1.一种基于对称算法和专用加载模块的Python程序模块加密方法,其特征在于,所述加密方法使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致;
所述加密方法具体包括如下步骤:
1)选择一种对称加密算法,并生成一个随机的对称密钥;
2)用步骤1)中生成的对称密钥和对称算法,对需要保护的Python的编译文件pyc、pyo加密,加密后的文件以.pye结尾;
3)用Python实现一个专用加载模块,具体为,实现Python中的一个负责搜索并加载Python程序模块对象,此对象可以在指定搜索路径中搜索以.pye结尾的加密Python程序模块,并可根据步骤1)中的对称密钥和对称算法对加密的Python程序模块解密;
4)将步骤3)中用Python实现的专用加载模块,用Cython工具转换生成C语言,并进一步编译生成为Python扩展模块,以保护其中定义的对称密钥和对称算法实现不被轻易地反编译;
5)在应用的启动部分,首先加载步骤4)中生成的Python扩展模块,并指定待搜索的加密Python程序模块的路径;
6)在应用发布时,只发布加密后的Python程序模块和应用的启动部分。
CN201410850871.2A 2014-12-31 2014-12-31 一种基于对称算法和专用加载模块的Python程序模块加密方法 Active CN104573425B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410850871.2A CN104573425B (zh) 2014-12-31 2014-12-31 一种基于对称算法和专用加载模块的Python程序模块加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410850871.2A CN104573425B (zh) 2014-12-31 2014-12-31 一种基于对称算法和专用加载模块的Python程序模块加密方法

Publications (2)

Publication Number Publication Date
CN104573425A CN104573425A (zh) 2015-04-29
CN104573425B true CN104573425B (zh) 2018-01-30

Family

ID=53089468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410850871.2A Active CN104573425B (zh) 2014-12-31 2014-12-31 一种基于对称算法和专用加载模块的Python程序模块加密方法

Country Status (1)

Country Link
CN (1) CN104573425B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105574368B (zh) * 2015-12-10 2018-05-04 华青融天(北京)技术股份有限公司 一种Python程序模块的安全调用方法和装置
CN106599628B (zh) * 2016-12-08 2019-04-02 合肥康捷信息科技有限公司 一种基于模块钩子的Python字节码文件保护方法
CN107808101B (zh) * 2017-11-06 2020-11-06 上海金途信息科技有限公司 一种通过加密Python明文源码token的知识产权保护系统
CN108363911B (zh) * 2018-02-11 2021-10-29 西安四叶草信息技术有限公司 一种Python脚本混淆、水印的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101419652A (zh) * 2008-08-22 2009-04-29 航天信息股份有限公司 一种软硬件结合的保护程序的方法
CN103745141A (zh) * 2013-12-02 2014-04-23 上海斐讯数据通信技术有限公司 智能终端android系统中防止应用程序反编译的方法
CN103761457A (zh) * 2013-12-27 2014-04-30 华为技术有限公司 一种软件保护方法、装置及系统
CN103761456A (zh) * 2013-10-12 2014-04-30 利尔达科技集团股份有限公司 一种单片机核心代码防破解的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007045743A1 (de) * 2007-09-25 2009-04-02 Siemens Ag Verfahren und System zum Schutz gegen einen Zugriff auf einen Maschinencode eines Gerätes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101419652A (zh) * 2008-08-22 2009-04-29 航天信息股份有限公司 一种软硬件结合的保护程序的方法
CN103761456A (zh) * 2013-10-12 2014-04-30 利尔达科技集团股份有限公司 一种单片机核心代码防破解的方法
CN103745141A (zh) * 2013-12-02 2014-04-23 上海斐讯数据通信技术有限公司 智能终端android系统中防止应用程序反编译的方法
CN103761457A (zh) * 2013-12-27 2014-04-30 华为技术有限公司 一种软件保护方法、装置及系统

Also Published As

Publication number Publication date
CN104573425A (zh) 2015-04-29

Similar Documents

Publication Publication Date Title
CN104573425B (zh) 一种基于对称算法和专用加载模块的Python程序模块加密方法
CN105426708B (zh) 一种Android系统的应用程序的加固方法
CN102890758B (zh) 一种保护可执行文件的方法及系统
CN106203128B (zh) 网页数据加解密方法、装置和系统
US9100170B2 (en) File packing and unpacking method, and device thereof
CN107977553A (zh) 移动应用程序的安全加固的方法及装置
BR112015026372B8 (pt) Dispositivo de comunicação que reforça a segurança para um arquivo armazenado em uma unidade virtual
US20120144208A1 (en) Indexed table based code encrypting/decrypting device and method thereof
GB201215241D0 (en) Protecting application programs from malicious software or malware
RU2018141237A (ru) Использование аппаратно-обеспечиваемой защищенной изолированной области для предотвращения пиратства и мошенничества в электронных устройствах
CN104268444A (zh) 一种云OS Java源代码保护方法
GB2509422A (en) Decryption and encryption of application data
JP2010140473A5 (zh)
BRPI0908621A2 (pt) método de criptografia de um item de dados que tem um identificador para identificar o item de dados, método de descriptografia de um item de dados criptografado, produto de programa de computador, sistema de computação, método de gestão de direitos digitais drm
CN105426777A (zh) 一种动态链接库文件加密、解密方法及装置
AR088823A1 (es) Aparato de procesamiento de informacion, aparato de almacenamiento de informacion, sistema de procesamiento de informacion, metodo de procesamiento de informacion y programa
PH12018500929A1 (en) Method and system for generating ciphertext by pin entry device
CN104657635A (zh) 一种应用处理方法、装置和服务器
CN103595524B (zh) 一种基于流密码的丢位加密-补位解密的加解密方法
CN104504310A (zh) 基于壳技术的软件保护方法和装置
CN105335666A (zh) 一种防止电子文档外泄的方法
WO2011111981A3 (ko) 데이터 자동 암복호화 방법 및 장치
CN106650342B (zh) 一种Jar包加固方法及系统
WO2015188202A3 (en) Point-to-point secure data store and communication system and method
Kim et al. Robust anti reverse engineering technique for protecting android applications using the aes algorithm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 200436 Room 601, Lane 299, Lane 299, JIANGCHANG West Road, Jingan District, Shanghai

Patentee after: Geer software Limited by Share Ltd

Address before: 200070 B, 501E, 199 JIANGCHANG West Road, Zhabei District, Shanghai.

Patentee before: Geer Software Co., Ltd., Shanghai

CP03 Change of name, title or address