著录项信息
专利名称 | 一种基于对称算法和专用加载模块的Python程序模块加密方法 |
申请号 | CN201410850871.2 | 申请日期 | 2014-12-31 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2015-04-29 | 公开/公告号 | CN104573425A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/14 | IPC分类号 | G;0;6;F;2;1;/;1;4查看分类表>
|
申请人 | 上海格尔软件股份有限公司 | 申请人地址 | 上海市静安区江场西路299弄5号601室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 格尔软件股份有限公司 | 当前权利人 | 格尔软件股份有限公司 |
发明人 | 任伟 |
代理机构 | 上海天翔知识产权代理有限公司 | 代理人 | 刘常宝 |
摘要
本发明公开了一种基于对称算法和专用加载模块的Python程序模块加密方法,其使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。本发明可以保护Python程序模块不被轻易反编译分析,从而保护Python所开发程序的知识产权。
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程序模块和应用的启动部分。
一种基于对称算法和专用加载模块的Python程序模块加密\n方法\n技术领域\n[0001] 本发明涉及一种网络安全技术,具体涉及一种Python程序模块的安全技术。\n背景技术\n[0002] 随着Python语言的流行,不少应用开始采用Python来实现。但Python语言开发的程序模块(pyc、pyo),很容易被反编译出源代码。而且由于Python语言自身的特性,无法用类似Java、C#的混淆器对程序模块进行混淆,所以用Python开发的应用很难保护其源代码的知识产权。\n[0003] 现有的一些保护方法,要么影响开发(比如定制一个专用的Python解释器,开发和发布用不同),要么仅仅是将其打包成一个exe文件(如py2exe工具,但Python程序模块仍可以很容易地拿出并反编译),缺少一个方便易用的、防护性较强的代码保护方法。\n发明内容\n[0004] 针对现有Python语言开发的程序模块在安全防护方面所存在的问题,本发明提供一种Python程序模块加密方法,可以在不影响开发的前提下,保护Python程序模块不被反编译。\n[0005] 为了达到上述目的,本发明采用如下的技术方案:\n[0006] 一种基于对称算法和专用加载模块的Python程序模块加密方法,所述加密方法使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。\n[0007] 优选的,所述加密方法具体包括如下步骤:\n[0008] 1)采用固定密钥和对称算法加密需要保护的Python程序模块;\n[0009] 2)基于步骤1)中的固定密钥和对称算法,形成一Python程序专用加载模块,来加载、解密所加密的Python程序模块;\n[0010] 3)应用启动时先加载专用加载模块;\n[0011] 4)应用发布时,只发布加密后的Python程序模块和应用的启动部分。\n[0012] 进一步的,所述步骤2)中形成的专用加载模块编译为Python扩展模块,并通过固定密钥和对称算法加密Python程序模块。\n[0013] 基于本发明提供的加密方法,除了应用的启动部分外,所有用Python写的业务逻辑程序模块,都可以用对称算法的加密得到保护,而且专用的加载模块也是C语言编译的Python扩展模块,从而保护这些程序模块不会轻易被反编译,从而保护应用的知识产权。\n具体实施方式\n[0014] 为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合实例,进一步阐述本发明。\n[0015] 本发明提供的Python程序模块加密方法,其基于对称算法和专用加载模块,使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。\n[0016] 基于上述原理,该Python程序模块加密方法具体通过如下步骤实现:\n[0017] 1)采用固定密钥和对称算法加密需要保护的Python程序模块。\n[0018] 2)基于步骤1)中的固定密钥和对称算法,形成一Python程序专用加载模块,来加载、解密所加密的Python程序模块。该专用加载模块具体编译为Python扩展模块,以此来保护密钥以及加密算法不被轻易反编译。\n[0019] 3)应用启动时先加载专用加载模块;\n[0020] 4)应用发布时,只发布加密后的Python程序模块和应用的启动部分。\n[0021] 以下通过一具体实例来进一步说明本发明的方案:\n[0022] 1)选择一种对称加密算法(如果RC4算法),并生成一个随机的对称密钥。\n[0023] 2)用步骤1)中生成的对称密钥和对称算法,对需要保护的Python的编译文件(pyc、pyo)加密,加密后的文件以.pye结尾。\n[0024] 3)用Python实现一个专用加载模块。具体为,实现Python中的一个finder(负责搜索并加载Python程序模块)对象,此对象可以在指定搜索路径中搜索以.pye结尾的加密Python程序模块,并可根据步骤1)中的对称密钥和对称算法对加密的Python程序模块解密。\n[0025] 4)将步骤3)中用Python实现的专用加载模块,用Cython工具转换生成C语言,并进一步编译生成为Python扩展模块,以保护其中定义的对称密钥和对称算法实现不被轻易地反编译。\n[0026] 5)在应用的启动部分,首先加载步骤4)中生成的Python扩展模块,并指定待搜索的加密Python程序模块的路径。\n[0027] 6)在应用发布时,只发布加密后的Python程序模块和应用的启动部分。\n[0028] 以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
法律信息
- 2018-10-26
专利权人的姓名或者名称、地址的变更
专利权人由上海格尔软件股份有限公司变更为格尔软件股份有限公司
地址由200070 上海市闸北区江场西路199号B幢501E变更为200436 上海市静安区江场西路299弄5号601室
- 2018-01-30
- 2015-05-27
实质审查的生效
IPC(主分类): G06F 21/14
专利申请号: 201410850871.2
申请日: 2014.12.31
- 2015-04-29
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-04-30
|
2013-10-12
| | |
2
| |
2014-04-23
|
2013-12-02
| | |
3
| |
2009-04-29
|
2008-08-22
| | |
4
| |
2014-04-30
|
2013-12-27
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |