CN111240699A - 软件产品处理方法和装置、源码解释器 - Google Patents
软件产品处理方法和装置、源码解释器 Download PDFInfo
- Publication number
- CN111240699A CN111240699A CN202010074173.3A CN202010074173A CN111240699A CN 111240699 A CN111240699 A CN 111240699A CN 202010074173 A CN202010074173 A CN 202010074173A CN 111240699 A CN111240699 A CN 111240699A
- Authority
- CN
- China
- Prior art keywords
- software product
- processing
- target object
- protection
- information
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 9
- 238000012545 processing Methods 0.000 claims abstract description 144
- 238000000034 method Methods 0.000 claims abstract description 111
- 238000010511 deprotection reaction Methods 0.000 claims abstract description 30
- 238000013475 authorization Methods 0.000 claims description 78
- 230000008569 process Effects 0.000 claims description 53
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 5
- 238000009434 installation Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012407 engineering method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本公开实施例提供一种软件产品处理方法和装置、源码解释器,获取软件产品对应的文件包,所述文件包用于在待部署所述软件产品的部署结点上部署所述软件产品;从所述文件包中获取用于对所述软件产品进行解保护处理的第一标签信息;根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理。
Description
技术领域
本公开涉及计算机软件技术领域,尤其涉及软件产品处理方法和装置、源码解释器。
背景技术
软件产品在研发成功之后,往往需要部署到第三方的部署结点,以供第三方使用。然而,有一些软件产品是基于Python等解释性语言进行编写的,在部署到第三方之后,第三方可以查看到软件产品的源代码等核心IP(Intellectual Property,知识产权),从而不利于软件产品的保护。因此,有必要对软件产品进行保护,以防止软件产品的核心IP泄露。
发明内容
本公开提供一种软件产品处理方法和装置、源码解释器。
根据本公开实施例的第一方面,提供一种软件产品的部署方法,所述方法包括:获取软件产品对应的文件包,所述文件包用于在待部署所述软件产品的部署结点上部署所述软件产品;从所述文件包中获取用于对所述软件产品进行解保护处理的第一标签信息;根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理。
在一些实施例中,所述保护处理包括加密处理和/或扰乱处理;在所述保护处理包括加密处理的情况下,与所述保护处理对应的所述解保护处理包括解密处理;在所述保护处理包括扰乱处理的情况下,与所述保护处理对应的所述解保护处理包括解扰乱处理。
在一些实施例中,在所述保护处理包括解密处理的情况下,所述第一标签信息包括解密密钥;和/或在所述保护处理包括解扰乱处理的情况下,所述第一标签信息包括解扰乱规则信息。
在一些实施例中,所述根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理,包括:在检测到用于存储所述目标对象的对象文件中包括第二标签信息的情况下,根据所述第一标签信息对所述目标对象进行解保护处理;其中,所述第二标签信息用于表示所述对象文件中的所述目标对象已经过保护处理。
在一些实施例中,所述方法还包括:在根据所述第一标签信息对所述目标对象进行所述解保护处理之前,将所述第一标签信息加载到内存。
在一些实施例中,所述第一标签信息存储在所述文件包中的用于对所述软件产品的部署进行授权的授权证书中。
在一些实施例中,所述方法还包括:从所述文件包中加载所述授权证书;根据所述授权证书对所述待部署所述软件产品的部署结点的部署环境进行授权认证;在授权认证成功的情况下,将所述软件产品部署到所述待部署所述软件产品的部署环境中。
在一些实施例中,所述方法还包括:在从所述文件包中加载所述授权证书之前,对所述待部署所述软件产品的部署结点的部署环境进行注册,以生成所述授权证书。
在一些实施例中,所述对所述待部署所述软件产品的部署结点的部署环境进行注册,包括:获取所述待部署所述软件产品的部署结点的部署环境信息;向所述授权服务器发送所述部署环境信息,以对所述待部署所述软件产品的部署结点的部署环境进行注册。
在一些实施例中,所述授权认证为在线授权认证或者离线授权认证。
根据本公开实施例的第二方面,提供一种源码解释器,所述源码解释器用于执行以上任一实施例所述的方法。
根据本公开实施例的第三方面,提供一种软件产品处理方法,所述方法包括:获取待部署的软件产品;确定所述软件产品中待保护的目标对象;对所述目标对象进行保护处理。
在一些实施例中,所述对所述目标对象进行保护处理,包括:对所述目标对象进行加密处理和/或扰乱处理。
在一些实施例中,用于存储所述目标对象的对象文件中包括用于对所述目标对象进行保护处理的第二标签信息;所述确定所述软件产品中待保护的目标对象,包括:在所述对象文件中包括所述第二标签信息的情况下,确定所述对象文件中的目标对象为待保护的目标对象。
在一些实施例中,在所述保护处理包括加密处理的情况下,所述第一标签信息包括加密密钥;和/或在所述保护处理包括扰乱处理的情况下,所述第一标签信息包括扰乱规则信息。
根据本公开实施例的第四方面,提供一种软件产品处理装置,所述装置包括:第一获取模块,用于获取软件产品对应的文件包,所述文件包用于在待部署所述软件产品的部署结点上部署所述软件产品;第二获取模块,用于从所述文件包中获取用于对所述软件产品进行解保护处理的第一标签信息;解保护处理模块,用于根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理。
根据本公开实施例的第五方面,提供一种软件产品处理装置,所述装置包括:第三获取模块,用于获取待部署的软件产品;确定模块,用于确定所述软件产品中待保护的目标对象;保护处理模块,用于对所述目标对象进行保护处理。
根据本公开实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
根据本公开实施例的第七方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
根据本公开实施例的第八方面,提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在设备上运行的情况下,所述设备中的处理器执行用于实现任一实施例所述方法的指令。
根据本公开实施例,通过获取软件产品对应的文件包,从所述文件包中获取用于对所述软件产品进行解保护处理的第一标签信息,并根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理。一方面,目标对象经过保护处理,从而避免目标对象被第三方获取,提高了目标对象的安全性;另一方面,能够对经保护处理的目标对象进行解保护处理,从而不影响经保护处理的目标对象在第三方的部署结点进行部署,便于软件产品的推广和应用。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1是本公开实施例的应用场景的示意图。
图2是本公开实施例的软件产品处理方法的流程图。
图3是本公开实施例的源代码保护处理的示意图。
图4是本公开实施例的源代码保护和解保护的总体过程示意图。
图5是本公开实施例的授权认证过程中的交互示意图。
图6是本公开实施例的软件产品处理的总体流程图。
图7是本公开另一些实施例的软件产品处理方法的流程图。
图8是本公开实施例的软件产品的部署装置的框图。
图9是本公开另一些实施例的软件产品的部署装置的框图。
图10是本公开实施例的计算机设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。
部署在第三方的部署环境中的软件产品可能包括相应的数据处理、特征工程方法、算法核心源码、训练算法模型等核心IP,由于许多软件产品都是基于Perl、LUA、PHP、Python等解释性语言进行研发的,因此,第三方客户能够轻易地获取到核心IP的源代码,从而导致对核心IP的保护较为困难。
此外,如图1所示,在将软件产品部署到第三方的内部环境(即图1所示第三方环境)之后,由于第三方的敏感数据保护、数据不能出场等原因,第三方的部署结点与服务器(即软件产品的发布方用来对第三方的软件部署环境中部署的软件产品进行权限管理的设备)之间不存在数据交互。因此,服务器无法获取到软件产品的部署信息,导致难以控制第三方对软件产品的授权使用范围。例如,第三方可能会对软件产品进行越权拷贝(即,拷贝到不具有软件产品使用权限的部署环境下),或者在软件产品的使用期限到期后仍然在使用该软件产品,又或者在软件产品的使用次数达到上限后仍然在使用该软件产品。
基于此,本公开实施例提供一种软件产品处理方法,如图2所示,所述方法包括:
步骤201:获取软件产品对应的文件包,所述文件包用于在待部署所述软件产品的部署结点上部署所述软件产品;
步骤202:从所述文件包中获取用于对所述软件产品进行解保护处理的第一标签信息;
步骤203:根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理。
本公开实施例可以由解释器执行,或是由部署了解释器的设备执行,甚至是通过与解释器具备相同、相似功能的设备执行,在本公开实施例中,对于本公开提供的技术方案的执行主体不予限定,可以包括但不限于上述例举的情况。
所述解释器(例如,可以是Python2.7解释器)可以安装在第三方的软件产品部署结点上。软件产品是指向用户提供的计算机软件、信息系统或设备中嵌入的软件或在提供计算机信息系统集成、应用服务等技术服务时提供的计算机软件。其中,所述软件产品可包括源代码、模型以及各种与软件产品运行相关的文件。在本公开实施例中,所述软件产品是基于解释性语言进行编写的。不同于通过编译器把程序编译成机器语言的编译性语言(例如,C语言),基于解释性语言进行编写的程序不进行预先编译,以文本方式存储程序代码,因此,将基于解释性语言进行编写的软件产品部署到第三方的部署结点之后,存在核心IP泄露的风险。
在上述步骤201中,待部署的软件产品对应的文件包用于将所述软件产品部署到部署结点上,所述部署包括对所述软件产品进行安装、补丁修复或者升级维护等;相应地,所述文件包可以是所述待部署的安装包,或者补丁包等。
在上述步骤202中,所述第一标签信息用于对所述软件产品进行解保护处理。在将所述软件产品部署到第三方的部署结点之前,可以对所述软件产品中的目标对象进行保护处理。其中,目标对象可以是所述软件产品中的核心IP,例如,核心源代码,核心模型参数等。对于经保护处理的目标对象,可以根据所述第一标签信息来进行解保护处理。在解保护处理完成之后,再将所述软件产品部署到第三方的部署结点。如果所述软件产品在部署到第三方的部署结点之前未经过保护处理,则所述第一标签信息可以用于指示所述软件产品未经过保护处理。特别地,在这种情况下,所述第一标签信息可以为空。所述第一标签信息可以是一串字符串,所述字符串中可以包括用于表征对所述软件产品进行解保护处理的处理方式的信息,例如,可以包括加密方式,或者扰乱规则词典。
在一些实施例中,所述保护处理包括加密处理和/或扰乱处理;在所述保护处理包括加密处理的情况下,与所述保护处理对应的所述解保护处理包括解密处理;在所述保护处理包括扰乱处理的情况下,与所述保护处理对应的所述解保护处理包括解扰乱处理。
在所述保护处理包括加密处理的情况下,可以生成一对密钥,在进行保护处理时,通过加密密钥来对所述目标对象进行加密处理;在进行解保护处理时,通过解密密钥来对所述目标对象进行解密处理。在所述解保护处理包括解密处理的情况下,所述第一标签信息包括解密密钥。在所述保护处理包括扰乱处理的情况下,在进行保护处理时,可以根据扰乱规则来对所述目标对象进行扰乱处理;在进行解保护处理时,根据解扰乱规则来对所述目标对象进行解扰乱处理。在所述解保护处理包括解扰乱处理的情况下,所述第一标签信息包括解扰乱规则信息。其中,解扰乱规则为扰乱规则的逆向规则,例如,扰乱规则为将字母a转换为字母z,则解扰乱规则为将字母z转换为字母a。
在一些实施例中,可以在用于存储所述目标对象的对象文件中添加第二标签信息,所述第二标签信息用于表示所述对象文件中的所述目标对象已经过保护处理。在检测到用于存储所述目标对象的对象文件中包括第二标签信息的情况下,可以根据所述第一标签信息对所述目标对象进行解保护处理。通过设置第二标签信息,可以自动化地识别出经过保护处理的目标对象。所述第二标签信息中可以包括用于表征对所述目标对象进行保护处理的处理方式的信息。在所述目标对象为源代码的情况下,用于存储所述目标对象的对象文件可以是源代码文件。所述第二标签信息可以包括在源代码文件的文件头注释中。
如图3所示,在对源代码进行的保护处理为加密处理的情况下,所述源代码文件的文件头注释中的第二标签信息可包括用于指示保护处理的处理方式为加密处理的指示信息,还可以包括用于指示加密方式的指示信息。例如,所述第二标签信息的形式可以是“#crypto:AES256”。其中,“crypto”表示所述保护处理为加密处理,“AES256”表示加密方式为AES256。又例如,在对源代码进行的保护处理为扰乱处理的情况下,所述源代码的文件头注释中的第二标签信息可包括用于指示保护处理的处理方式为扰乱处理的指示信息,还可以包括用于扰乱处理所使用的扰乱规则词典。例如,所述第二标签信息的形式可以是“obfuscation:SenseDic1”。其中,“obfuscation”表示所述保护处理为扰乱处理,“SenseDic1”表示选择使用SenseDic1字典规则扰乱保护该源代码。图3所示的实施例示出了基于python解释器的情况。当然,本公开实施例的软件产品并不限于基于python语言编写,也可以采用其他脚本语言进行编写。基于其他语言编写的情况下,第二标签信息的形式可能与图3所示的实施例有所不同,此处不再赘述。
可以在编写源代码的时候,将所述第二标签信息添加到源代码文件的文件头注释中。如图4所示,在将软件产品部署到第三方的部署结点之前,可以将软件产品上传加载到服务器上,服务器可以自动静态解析识别待保护的目标对象的边界(即,文件头注释中的所述第二标签信息)以及代码保护方式(加密和/或扰乱)。在实际应用中,可以仅对核心IP进行保护,其他内容不进行保护;也可以对所有代码都进行保护。未进行保护的代码可以直接运行;被保护的代码在运行之前需要先解除保护。通过在文件头注释中加入所示第二标签信息,无需人工选择需要进行保护的代码,提高了代码保护效率。
此外,由于对源代码进行保护往往需要耗费更多额外的资源来实现源代码的加密、解密,或是扰乱、解扰乱,因此,在确保对核心内容进行保护的情况下,采用部分内容进行保护、部分内容不进行保护的方式,可以有效减少处理资源的占用,同时,提升处理效率。
需要说明的是,服务器可以根据预先配置的数据(即反映实际保护需求的数据),和/或结合资源占用情况,来选择恰当的代码保护方式,以对部分或者全部源代码进行保护处理。
在源代码经过保护处理的情况下,还可以在根据所述第一标签信息对所述源代码进行解保护处理之前,将所述第一标签信息加载到内存。由于从内存中读取数据的效率比较高,通过这种方式,能够加快解保护处理的效率。
在一些实施例中,所述第一标签信息存储在所述文件包中的用于对所述软件产品的部署进行授权的授权证书(license)中。可为每个第三方生成一个授权证书,不同的第三方的授权证书可能相同,也可能不同。所述授权证书中可以包括但不限于以下至少任一有效信息:第三方调用所述软件产品的有效次数信息、有效期信息、有效部署环境信息等。
其中,所述有效次数信息用于表示所述软件产品可以被调用的次数,超过该次数以后第三方无法继续调用所述软件产品。所述有效期信息用于表示所述软件产品可以被调用的有效时间段,超过该有效时间段以后第三方无法继续调用所述软件产品。所述有效部署环境信息用于表示有权限部署所述软件产品的部署环境的信息,与所述有效部署环境信息对应的部署环境不匹配的部署环境无法部署所述软件产品。所述部署环境包括软件环境和/或硬件环境,部署环境信息包括但不限于以下的一项或是多项的组合:各种机器或者虚拟化环境的硬件CPU(Central Processing Unit,中央处理器)或GPU(GraphicsProcessing Unit,图形处理器)等设备信息,以及各种各样的平台软件信息,OS(OperatingSystem,操作系统)版本信息,网段信息,MAC(Media Access Control,媒体存取控制)地址等。
在一些实施例中,可以从所述文件包中加载所述授权证书;根据所述授权证书对所述待部署所述软件产品的部署结点的部署环境进行授权认证;在授权认证成功的情况下,将所述软件产品部署到所述待部署所述软件产品的部署环境中。本公开实施例根据所述授权证书对待部署所述软件产品的部署结点的部署环境进行授权认证,即,判断待部署所述软件产品的部署结点的部署环境是否具有部署所述软件产品的权限,从而可以对第三方使用软件产品的权限进行控制。具体来说,可以判断所述授权证书中的各项有效信息是否均得到满足。例如,对于所述有效次数信息,可以判断所述软件产品已被调用的次数是否达到所述有效次数信息对应的次数。若未达到,则判定授权认证成功。又例如,对于所述有效期信息,可以判断当前时间是否在所述有效期信息对应的时间段之内。若是,则判定授权认证成功。又例如,对于所述有效部署环境信息,可以判断待部署所述软件产品的部署结点的部署环境是否与所述有效部署环境信息对应的部署环境相匹配。若是,则判定授权认证成功。在所述授权证书中包括多项有效信息的情况下,若存在至少一项有效信息未得到满足,则判定授权认证失败;只有在各项有效信息均得到满足的情况下,才判定授权认证成功。
授权认证的方式可采用在线认证方式或者离线认证方式,具体采用何种认证方式可根据实际情况而确定。例如,对于无法连接到外网服务器的第三方,可以采用离线认证方式进行授权认证。又例如,在授权认证过程中需要与授权认证服务器进行交互的情况下,则采用在线认证方式进行认证。
若授权认证成功,则可以将所述软件产品部署到待部署所述软件产品的部署结点的部署环境中。若授权认证失败,则禁止将所述软件产品部署到待部署所述软件产品的部署结点的部署环境中。进一步地,还可以向待部署所述软件产品的部署结点的部署环境返回提示信息,用于提示所述软件产品授权失败的原因,例如,超过使用期限,超过使用次数,或者部署环境不匹配等中的一项或是多项。
在一些实施例中,在从所述文件包中加载所述授权证书之前,还可以对所述待部署所述软件产品的部署结点的部署环境进行注册,以生成所述授权证书。在一些实际应用场景中,所述软件产品需要部署在特定环境的部署结点中。因此,需要获取所述待部署所述软件产品的部署结点的部署环境信息;向所述授权服务器发送所述部署环境信息,以对所述待部署所述软件产品的部署结点的部署环境进行注册。通过这种方式注册得到的授权证书中可包括有权限部署所述软件产品的部署结点的部署环境信息,不满足该部署环境信息的部署结点则无法部署所述软件产品。例如,软件产品需要部署在具有特定型号的CPU的部署结点上,则在进行注册时,可以向所述授权服务器发送所述该CPU的型号信息。授权服务器在接收到所述CPU的型号信息的情况下,根据所述CPU的型号信息对所述待部署所述软件产品的部署结点的部署环境进行注册。
如图5所示,是本公开实施例的授权认证过程中的交互示意图。在注册过程中,可以先启动执行解释器环境,解释器会自动采集部署环境信息,并将一系列部署环境信息发送到授权认证服务器,授权认证服务器接收到部署环境信息之后,进行注册备案。授权认证服务器根据部署结点的备案信息,并根据软件产品部署的权限控制范围(比如软件产品的使用期限、调用次数、部署结点信息等)注册生成与待部署的软件产品相匹配的授权证书。
在另一些实际应用场景中,所述软件产品可部署在第三方的任意部署环境中。在这种情况下,进行注册时也可以不获取待部署所述软件产品的部署结点的部署环境信息。例如,可以直接根据所述软件产品的有效次数信息和/或有效期信息来进行注册。
如图6所示,是本公开实施例的软件产品处理的总体流程图。首先,在授权认证阶段,解释器先加载软件产品安装包中的授权证书,并根据授权证书进行授权认证。图中示出了需要进行授权认证的三部分内容,包括部署结点信息认证、软件产品的使用期限认证以及使用次数认证。本领域技术人员可以理解,在实际应用场景中,需要认证的信息可以仅包括以上至少一项或是多项的组合,也可以包括除上述列举情况以外的其他信息。在上述列举的场景中,如果以上信息均授权认证成功,则加载软件产品的源代码。对于源代码中经保护处理的内容,则先进行解保护处理,再运行;对于源代码中未经保护处理的内容,则直接运行。在上述列举的场景中,如果以上存在至少一项信息授权认证失败,则停止操作。
本公开实施例在解释器中集成授权认证功能,能够对部署在第三方的软件产品的部署权限进行控制。并且,通过设置第一标签信息,能够对需要保护的代码内容进行静态解析,并自动对其进行加密或者扰乱等保护处理,确保了核心源代码的安全性。在运行代码之前,通过解释器可以对经过保护处理的源代码进行还原处理,从而不会影响代码运行。同时,也可以兼容未经保护处理的代码,方便第三方扩展。
通过采用本公开实施例的方案,从实验室阶段的脚本代码到商业化可用的软件产品,只需要按照该方案进行部署,能够节省产品化环节,快速缩短周期,实现开放式部署。举例来说,教育事业部研究员研发了一种新的无人驾驶车辆寻迹的python算法软件产品demo,并希望快速地商业化发布给某学校的20个实验室课堂使用,采用本公开实施例的部署方案,只需要给学校安装定制化的解释器运行环境,生成相应的授权证书,自动化生成保护核心源码的Python算法软件产品demo,整个软件产品demo就可以在20台机器上正常执行,不仅保护了源代码IP,同时也防止了用户拷贝多次,超授权范围使用。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
本公开实施例还提供一种软件工程的部署方法。其中,软件工程可以包括但不限于上述例举的软件产品。所述方法包括:在获取到包括待部署的软件工程的文件包的情况下,从所述文件包中加载用于对所述软件工程的部署进行授权的授权证书;根据所述授权证书对待部署所述软件工程的部署结点的部署环境进行授权认证;若授权认证成功,将所述软件工程部署到所述待部署所述软件工程的部署结点的部署环境中。
在一些实施例中,所述方法还包括:在从所述文件包中加载用于对所述软件工程的部署进行授权的授权证书之前,对待部署所述软件工程的部署结点的部署环境进行注册,以生成所述授权证书。
在一些实施例中,所述对待部署所述软件工程的部署结点的部署环境进行注册,包括:获取所述待部署所述软件工程的部署结点的部署环境的部署环境信息;将所述部署环境信息发送至授权服务器,以对所述待部署所述软件工程的部署结点的部署环境进行注册。
在一些实施例中,所述授权证书中包括用于对所述软件工程的源代码进行保护处理的第一标签信息;所述方法还包括:在将所述软件工程部署到所述待部署所述软件工程的部署结点的部署环境中之后,根据所述第一标签信息对所述软件产品中的目标对象进行解保护处理。
在一些实施例中,所述保护处理包括加密处理和/或扰乱处理;其中,在所述保护处理包括加密处理的情况下,与所述保护处理对应的所述解保护处理包括解密处理;在所述保护处理包括扰乱处理的情况下,与所述保护处理对应的所述解保护处理包括解扰乱处理。
在一些实施例中,在所述保护处理包括解密处理的情况下,所述第一标签信息包括解密密钥;和/或在所述保护处理包括解扰乱处理的情况下,所述第一标签信息包括解扰乱规则信息。
在一些实施例中,所述根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理,包括:在检测到用于存储所述目标对象的对象文件中包括第二标签信息的情况下,根据所述第一标签信息对所述目标对象进行解保护处理;其中,所述第二标签信息用于表示所述对象文件中的所述目标对象已经过保护处理。
在一些实施例中,所述方法还包括:在根据所述第一标签信息对所述目标对象进行所述解保护处理之前,将所述第一标签信息加载到内存。
在一些实施例中,所述授权认证为在线授权认证或者离线授权认证。
在一些实施例中,所述权限包括以下任一:所述软件工程的使用期限、调用次数、部署结点的环境信息。
本方法实施例中的技术细节详见前述方法实施例,此处不再赘述。
本公开实施例还提供一种源码解释器,所述源码解释器用于执行任一前述实施例所述的方法。
如图7所示,本公开实施例还提供一种软件产品处理方法,所述方法可包括:
步骤701:获取待部署的软件产品;
步骤702:确定所述软件产品中待保护的目标对象;
步骤703:对所述目标对象进行保护处理。
在一些实施例中,所述对所述目标对象进行保护处理,包括:对所述目标对象进行加密处理和/或扰乱处理。
在一些实施例中,用于存储所述目标对象的对象文件中包括用于对所述目标对象进行保护处理的第二标签信息;所述确定所述软件产品中待保护的目标对象,包括:在所述对象文件中包括所述第二标签信息的情况下,确定所述对象文件中的目标对象为待保护的目标对象。
在一些实施例中,在所述保护处理包括加密处理的情况下,所述第一标签信息包括加密密钥;和/或在所述保护处理包括扰乱处理的情况下,所述第一标签信息包括扰乱规则信息。
前述方法实施例中的解保护处理可用于对软件产品中经本方法实施例处理过的目标对象进行解保护处理。本方法实施例的技术细节详见前述方法实施例中与保护处理相关的实施例,此处不再赘述。
如图8所示,本公开还提供一种软件产品处理装置,所述装置包括:
第一获取模块801,用于获取软件产品对应的文件包,所述文件包用于在待部署所述软件产品的部署结点上部署所述软件产品;
第二获取模块802,用于从所述文件包中获取用于对所述软件产品进行解保护处理的第一标签信息;
解保护处理模块803,用于根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理。
如图9所示,本公开实施例还提供一种软件产品处理装置,所述装置包括:
第三获取模块901,用于获取待部署的软件产品;
确定模块902,用于确定所述软件产品中待保护的目标对象;
保护处理模块903,用于对所述目标对象进行保护处理。
本公开实施例还提供一种软件工程的部署装置,所述装置包括:加载模块,用于在获取到包括待部署的软件工程的文件包时,从所述文件包中加载用于对所述软件工程的部署进行授权的授权证书;授权认证模块,用于根据所述授权证书对待部署所述软件工程的部署结点的部署环境进行授权认证;部署模块,用于若授权认证成功,将所述软件工程部署到所述待部署所述软件工程的部署结点的部署环境中。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
图10示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1001、存储器1002、输入/输出接口1003、通信接口1004和总线1005。其中处理器1001、存储器1002、输入/输出接口1003和通信接口1004通过总线1005实现彼此之间在设备内部的通信连接。
处理器1001可以采用通用的CPU、微处理器、应用专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1002可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1002可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1002中,并由处理器1001来调用执行。
输入/输出接口1003用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1004用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1005包括一通路,在设备的各个组件(例如处理器1001、存储器1002、输入/输出接口1003和通信接口1004)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1001、存储器1002、输入/输出接口1003、通信接口1004和总线1005,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本公开实施例还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
本公开实施例还提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在设备上运行的情况下,所述设备中的处理器执行用于实现任一实施例所述方法的指令。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
Claims (20)
1.一种软件产品处理方法,其特征在于,所述方法包括:
获取软件产品对应的文件包,所述文件包用于在待部署所述软件产品的部署结点上部署所述软件产品;
从所述文件包中获取用于对所述软件产品进行解保护处理的第一标签信息;
根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理。
2.根据权利要求1所述的方法,其特征在于,所述保护处理包括加密处理和/或扰乱处理;
在所述保护处理包括加密处理的情况下,与所述保护处理对应的所述解保护处理包括解密处理;
在所述保护处理包括扰乱处理的情况下,与所述保护处理对应的所述解保护处理包括解扰乱处理。
3.根据权利要求1或2所述的方法,其特征在于,在所述保护处理包括解密处理的情况下,所述第一标签信息包括解密密钥;和/或
在所述保护处理包括解扰乱处理的情况下,所述第一标签信息包括解扰乱规则信息。
4.根据权利要求1至3任意一项所述的方法,其特征在于,所述根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理,包括:
在检测到用于存储所述目标对象的对象文件中包括第二标签信息的情况下,根据所述第一标签信息对所述目标对象进行解保护处理;其中,所述第二标签信息用于表示所述对象文件中的所述目标对象已经过保护处理。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:
在根据所述第一标签信息对所述目标对象进行所述解保护处理之前,将所述第一标签信息加载到内存。
6.根据权利要求1至5任意一项所述的方法,其特征在于,所述第一标签信息存储在所述文件包中的用于对所述软件产品的部署进行授权的授权证书中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
从所述文件包中加载所述授权证书;
根据所述授权证书对所述待部署所述软件产品的部署结点的部署环境进行授权认证;
在授权认证成功的情况下,将所述软件产品部署到所述待部署所述软件产品的部署环境中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在从所述文件包中加载所述授权证书之前,对所述待部署所述软件产品的部署结点的部署环境进行注册,以生成所述授权证书。
9.根据权利要求8所述的方法,其特征在于,所述对所述待部署所述软件产品的部署结点的部署环境进行注册,包括:
获取所述待部署所述软件产品的部署结点的部署环境信息;
向所述授权服务器发送所述部署环境信息,以对所述待部署所述软件产品的部署结点的部署环境进行注册。
10.根据权利要求7至9任意一项所述的方法,其特征在于,所述授权认证为在线授权认证或者离线授权认证。
11.一种软件产品处理方法,其特征在于,所述方法包括:
获取待部署的软件产品;
确定所述软件产品中待保护的目标对象;
对所述目标对象进行保护处理。
12.根据权利要求11所述的方法,其特征在于,所述对所述目标对象进行保护处理,包括:
对所述目标对象进行加密处理和/或扰乱处理。
13.根据权利要求11或12所述的方法,其特征在于,用于存储所述目标对象的对象文件中包括用于对所述目标对象进行保护处理的第二标签信息;
所述确定所述软件产品中待保护的目标对象,包括:
在所述对象文件中包括所述第二标签信息的情况下,确定所述对象文件中的目标对象为待保护的目标对象。
14.根据权利要求11至13任意一项所述的方法,其特征在于,在所述保护处理包括加密处理的情况下,所述第一标签信息包括加密密钥;和/或
在所述保护处理包括扰乱处理的情况下,所述第一标签信息包括扰乱规则信息。
15.一种软件产品处理装置,其特征在于,所述装置包括:
第一获取模块,用于获取软件产品对应的文件包,所述文件包用于在待部署所述软件产品的部署结点上部署所述软件产品;
第二获取模块,用于从所述文件包中获取用于对所述软件产品进行解保护处理的第一标签信息;
解保护处理模块,用于根据所述第一标签信息对所述软件产品中经保护处理的目标对象进行所述解保护处理。
16.一种软件产品处理装置,其特征在于,所述装置包括:
第三获取模块,用于获取待部署的软件产品;
确定模块,用于确定所述软件产品中待保护的目标对象;
保护处理模块,用于对所述目标对象进行保护处理。
17.一种源码解释器,其特征在于,所述源码解释器用于执行权利要求1至10任意一项所述的方法。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至14任意一项所述的方法。
19.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至14任意一项所述的方法。
20.一种计算机程序,包括计算机可读代码,其特征在于,在所述计算机可读代码在设备上运行的情况下,所述设备中的处理器执行用于实现权利要求1至14任一项所述方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010074173.3A CN111240699A (zh) | 2020-01-22 | 2020-01-22 | 软件产品处理方法和装置、源码解释器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010074173.3A CN111240699A (zh) | 2020-01-22 | 2020-01-22 | 软件产品处理方法和装置、源码解释器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111240699A true CN111240699A (zh) | 2020-06-05 |
Family
ID=70869754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010074173.3A Pending CN111240699A (zh) | 2020-01-22 | 2020-01-22 | 软件产品处理方法和装置、源码解释器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111240699A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106657137A (zh) * | 2017-01-17 | 2017-05-10 | 腾讯科技(上海)有限公司 | 一种软件产品合法性的验证方法、装置以及系统 |
CN107122634A (zh) * | 2017-04-26 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 软件安装包的加固保护方法及装置 |
CN107506111A (zh) * | 2017-08-30 | 2017-12-22 | 维沃移动通信有限公司 | 一种终端应用的加密、解密方法及终端 |
CN108229112A (zh) * | 2016-12-22 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种保护应用程序、应用程序的运行方法以及装置 |
CN109583156A (zh) * | 2018-12-05 | 2019-04-05 | 杭州安恒信息技术股份有限公司 | 基于认证授权的代码保护方法、装置、系统及设备 |
CN109683899A (zh) * | 2017-10-18 | 2019-04-26 | 中移(苏州)软件技术有限公司 | 一种软件集成方法及装置 |
CN109840398A (zh) * | 2019-02-14 | 2019-06-04 | 北京儒博科技有限公司 | 软件授权方法、装置、设备及存储介质 |
-
2020
- 2020-01-22 CN CN202010074173.3A patent/CN111240699A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229112A (zh) * | 2016-12-22 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种保护应用程序、应用程序的运行方法以及装置 |
CN106657137A (zh) * | 2017-01-17 | 2017-05-10 | 腾讯科技(上海)有限公司 | 一种软件产品合法性的验证方法、装置以及系统 |
CN107122634A (zh) * | 2017-04-26 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 软件安装包的加固保护方法及装置 |
CN107506111A (zh) * | 2017-08-30 | 2017-12-22 | 维沃移动通信有限公司 | 一种终端应用的加密、解密方法及终端 |
CN109683899A (zh) * | 2017-10-18 | 2019-04-26 | 中移(苏州)软件技术有限公司 | 一种软件集成方法及装置 |
CN109583156A (zh) * | 2018-12-05 | 2019-04-05 | 杭州安恒信息技术股份有限公司 | 基于认证授权的代码保护方法、装置、系统及设备 |
CN109840398A (zh) * | 2019-02-14 | 2019-06-04 | 北京儒博科技有限公司 | 软件授权方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101503785B1 (ko) | 동적 라이브러리를 보호하는 방법 및 장치 | |
US9536080B2 (en) | Method for validating dynamically loaded libraries using team identifiers | |
WO2015124018A1 (zh) | 基于智能终端设备的应用程序访问方法与装置 | |
CN106203007B (zh) | 一种代码处理方法、装置及计算设备 | |
WO2015058620A1 (en) | Method and apparatus for generating installation package corresponding to an application and executing application | |
CN106599629B (zh) | 一种安卓应用程序加固方法及装置 | |
US20150095653A1 (en) | Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package | |
CN108229144B (zh) | 一种应用程序的验证方法、终端设备及存储介质 | |
KR20140023606A (ko) | 트러스트 존에 의한 실행 환경에서 결제 요청을 처리하는 디바이스 및 방법 | |
CN104751049A (zh) | 一种应用程序安装方法及移动终端 | |
CN112199661A (zh) | 一种基于隐私保护的设备身份处理方法、装置及设备 | |
CN113868691B (zh) | 一种基于云原生的区块链的授权运行方法及装置 | |
Lee et al. | Classification and analysis of security techniques for the user terminal area in the internet banking service | |
CN111240699A (zh) | 软件产品处理方法和装置、源码解释器 | |
CN111046440B (zh) | 一种安全区域内容的篡改验证方法及系统 | |
CN114238943A (zh) | 应用程序防护方法、装置、设备及存储介质 | |
CN114139117A (zh) | 应用程序加固方法、装置、电子设备及存储介质 | |
US20230058046A1 (en) | Apparatus and Method for Protecting Shared Objects | |
CN111611551A (zh) | 一种基于国密算法的动态链接库保护方法及其系统 | |
JP6297149B2 (ja) | モバイル機器及び該モバイル機器の動作方法 | |
CN112231702B (zh) | 应用保护方法、装置、设备及介质 | |
JP6215468B2 (ja) | プログラム保護装置 | |
EP4009202A1 (en) | Information processing method and recording medium | |
Kalutarage et al. | A certification process for android applications | |
CN115906029A (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 |