CN101281576A - 用于执行保护软件代码的方法及装置 - Google Patents
用于执行保护软件代码的方法及装置 Download PDFInfo
- Publication number
- CN101281576A CN101281576A CNA2008101065686A CN200810106568A CN101281576A CN 101281576 A CN101281576 A CN 101281576A CN A2008101065686 A CNA2008101065686 A CN A2008101065686A CN 200810106568 A CN200810106568 A CN 200810106568A CN 101281576 A CN101281576 A CN 101281576A
- Authority
- CN
- China
- Prior art keywords
- software code
- deciphering
- module
- protection software
- secure hardware
- 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
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种执行保护软件代码的方法,该方法包括:当软件执行单元需要执行保护的软件代码时,从外部获取保护软件代码并存储在安全硬件设备中;安全硬件设备解密并执行解密后的保护软件代码,同时存储执行结果;在执行完所有保软件代码后,安全硬件设备将保护软件代码的执行结果返回给软件执行单元。同时本发明还公开了一种执行保护软件代码的装置。本发明中的安全硬件设备自身采用具有高安全强度的安全芯片,确保了安全硬件设备内部的密钥的保密性。另外,将保护软件代码存储在独立于安全硬件设备的外部设备中,大大降低了对软件代码的保护的实现成本。
Description
技术领域
本发明涉及软件代码保密技术,特别涉及一种用于执行保护软件代码的方法及装置。
背景技术
软件由软件代码组成的,软件代码凝聚了软件开发人员的智慧,特别是核心代码,一旦被恶意获取,将泄漏软件开发人员的智力成果,降低软件的价值。
当软件在软件执行单元如公知的操作系统中运行时,如果软件代码在软件中以明文的方式存在,非常容易通过静态反汇编以及动态调试等方法对软件代码进行分析,获取软件代码的执行逻辑或算法。为了有效地保护软件,通常会对软件中需要保护的软件代码如核心代码等进行加密等保护,本发明将这种经过加密等保护手段处理的软件代码称为“保护软件代码”。
目前,通常将需要保护的代码存储到安全硬件设备如安全芯片中,以达到对软件代码的保护。在运行保护软件代码时,安全硬件设备通过重新编译的方式将该保护软件代码编译成明文,并一次性全部写入安全硬件设备的永久存储介质中,如闪存(Flash)或可电擦除只读存储器(EEPROM)中。可以看出,由于保护代码在自身存储的安全硬件设备中运行,而不在操作系统中运行,实现了对软件代码的保护。
现有运行保护软件代码的方法,需要将大量的保护软件代码存放在安全硬件设备的永久存储介质中,这样才能由安全硬件设备的处理器对保护软件代码进行处理和计算。为了有效安全地运行保护软件代码,不仅要求安全硬件设备具备相当的运算处理能力,而且安全硬件设备本身必须是一种安全芯片。
目前,安全芯片内部的永久存储介质的存储容量都非常小,一般只有几十千字节大小,远远不能满足保护软件代码的存储和运行要求,而且安全芯片价格昂贵,严重影响了对软件代码的保护。
发明内容
本发明的主要目的在于提供一种用于执行保护软件代码的方法和装置,从而能够有效安全地保证保护软件代码的运行。
根据本发明的一个方面,提供一种用于执行保护软件代码的方法,其特征在于,该方法包括以下步骤:
(A)从外部设备获取所述保护软件代码;
(B)将所述保护软件代码存储在安全硬件设备(20)中;
(C)所述安全硬件设备(20)对其中已存储的所述保护软件代码进行解密;
(D)执行解密后的软件代码,同时存储执行结果;
(E)在执行完所有所述保护软件代码后,所述安全硬件设备(20)返回所述保护软件代码的执行结果。
根据本发明的一个方面,其特征还在于,所述保护软件代码在加密时所采用的密钥与所述安全硬件设备(20)一一对应,只有与密钥相对应的所述安全硬件设备(20)才能对其内部所存储的已加密的保护软件代码进行解密。
根据本发明的一个方面,其特征还在于,在步骤(D)中执行解密后的软件代码之前,还包括步骤:在解密所述保护软件代码后直接执行所述保护软件代码。
根据本发明的一个方面,其特征还在于,在步骤(D)中执行解密后的软件代码之前,还包括步骤:通过所述安全硬件设备(20)内部的已有代码解释引擎将所述软件代码解析成所述安全硬件设备(20)能识别的指令格式。
根据本发明的一个方面,其特征还在于,在所述安全硬件设备(20)中执行完成所述保护软件代码。
根据本发明的一个方面,其特征还在于,在步骤(D)中执行已解密的所述保护软件代码之前或之后,还包括步骤:对所述保护软件代码进行安全鉴别。
根据本发明的一个方面,其特征还在于,在步骤(A)之前,还包括步骤:对需要保护的软件代码加密后存储在独立于所述安全硬件设备(20)的其他设备中。
根据本发明的一个方面,其特征还在于,还包括步骤:对所述加密后的保护软件代码进行认证。
根据本发明的一个方面,其特征还在于,还包括步骤:对需要保护的软件代码进行认证后再执行加密。
根据本发明的另一个方面,提供一种用于执行保护软件代码的装置,其特征在于,该装置包括:
安全硬件设备(20),用于解密其中已存储的所述保护软件代码,执行解密后的软件代码,并返回执行结果。
根据本发明的另一个方面,其特征还在于,按照分段的形式执行所述保护软件代码的各分段代码。
根据本发明的另一个方面,其特征还在于,所述保护软件代码在加密时所采用的密钥与所述安全硬件设备(20)一一对应,只有与密钥相对应的所述安全硬件设备(20)才能对其内部所存储的已加密的保护软件代码进行解密。
根据本发明的另一个方面,其特征还在于,所述安全硬件设备(20)包括:
硬件控制模块(200)、解密模块(201)和存储模块(202),其中,
硬件控制模块(200)用于接收解密通知,向解密模块(201)发送解密控制指令;接收来自解密模块(201)的解密完成通知,发送获取保护软件代码通知或获取执行结果通知,执行解密的软件代码并存储执行结果在存储单元(202);
解密模块(201)用于接收来自硬件控制模块(200)的解密控制指令,从存储模块(202)中读取保护软件代码,并进行解密后将解密后的软件代码存储在存储模块(202)中,向硬件控制模块(200)发送解密完成通知。
根据本发明的另一个方面,其特征还在于,所述安全硬件设备(20)还包括:
验证模块(203),用于接收来自硬件控制模块(200)的验证控制指令,对存储在存储模块(202)中的保护软件代码进行安全验证,并在通过验证后向硬件控制模块(200)发送验证完成通知,将解密控制指令转发给解密模块(210)。
根据本发明的另一个方面,其特征还在于,所述硬件控制模块(200)接收来自验证模块(203)的验证完成通知,向所述解密模块(201)发送解密控制指令。
根据本发明的另一个方面,其特征还在于,所述硬件控制模块(200)接收来自解密模块(201)的解密完成通知,向验证模块(203)发送验证控制指令,接收来自验证模块(203)的验证完成通知,发送获取保护软件代码通知或获取执行结果通知。
根据本发明的另一个方面,其特征还在于,其特征在于,所述安全硬件设备为安全芯片。
附图说明
图1是本发明执行保护软件代码的方法的流程图;
图2是本发明软件代码运行单元实施例的组成结构示意图;
图3a是本发明软件代码处理单元实施例一的组成结构示意图;
图3b是本发明软件代码处理单元实施例二的组成结构示意图。
具体实施方式
本发明的核心思想是:当软件执行单元需要执行保护软件代码时,从外部获取保护软件代码并存储在安全硬件设备中;安全硬件设备解密并执行解密后的软件代码,同时存储执行结果;在执行完所有保护软件代码后,安全硬件设备将保护软件代码的执行结果返回给软件执行单元。
为使本发明的目的、技术方案及其优点更加清楚明白,以下参照附图并例举较佳实施例,对本发明进一步详细说明。
图1是本发明执行软件代码的方法的流程图。当软件执行单元即公知的操作系统需要执行保护软件代码时,进行以下步骤:
步骤100:从外部获取保护软件代码并存储在安全硬件设备中。
在步骤100中,软件执行单元直接从独立于软件执行单元的存储了保护软件代码的外部设备中读取所需的保护软件代码,这种读取方法的具体实现技术属于本领域的公知常识,不再赘述。
步骤100所强调的是,第一,本发明的保护软件代码存储在与软件执行单元所在设备不同的其它设备上,比如移动硬盘(或者U盘)中,如果保护软件代码比较大,则可以按分段形式存储在移动硬盘中,并为每段保护软件代码设置标识,以便识别;第二,在软件执行单元获得保护软件代码后,并不立即执行保护软件代码,而是将该保护软件代码存储到安全硬件设备如安全芯片中。
步骤101:安全硬件设备解密并执行解密后的软件代码,同时存储执行结果。
安全硬件设备对保护软件代码进行解密的方法很多,属于公知技术,不再赘述。保护软件代码在加密时,需要密钥参与计算,该密钥信息与安全硬件设备一一对应,这样,一方面安全硬件设备自身采用具有高安全强度的安全芯片,确保了安全硬件设备内部的密钥的保密性;另一方面,由于只有配套的安全硬件设备可以在其内部对被加密的保护软件代码进行解密,从而保证了保护软件代码的安全性。
保护软件代码在未被加密之前,若被编译成安全硬件设备能够识别的指令格式,则在保护软件代码解密后即可直接执行;若被编译成软件执行单元能够识别的指令格式,则在保护软件代码解密后,通过安全硬件设备内部的已有代码解释引擎解析成安全硬件设备可以执行的指令格式后再执行。
步骤102:判断是否执行完所有保护软件代码,若是,则进入步骤103;否则,返回步骤100。
通常保护软件代码是分段存储的,则需要将当前执行的保护软件代码的各分段代码执行完成。分段存储及读取方法属于本领域的公知常识,这里不再详述。
步骤103:安全硬件设备将保护软件代码的执行结果返回给软件执行单元。
保护软件代码的执行在安全硬件设备中完成,在执行完保护软件代码后,安全硬件设备将执行结果返回给软件执行单元,以便软件执行单元进行后续软件代码的运行。
进一步地,保护软件代码在执行之前或之后,还包括对保护软件代码的安全鉴别过程,比如对签名或其它安全数据进行验证等,该安全鉴别过程是为了防止安全硬件设备执行未经授权的代码。
图2是本发明软件代码运行单元实施例的组成结构示意图,如图2所示,软件代码运行单元包括安全硬件设备20和软件执行单元21,其中,安全硬件设备20包括硬件控制模块200、解密模块201、存储模块202,还进一步包括验证模块203;软件执行单元21包括软件控制模块210和软件执行模块211。
安全硬件设备20,用于解密存储的保护软件代码,执行解密后的软件代码,并向软件执行单元21返回执行结果。
硬件控制模块200,用于接收来自软件控制模块210的解密通知,向解密模块201发送解密控制指令;接收来自解密模块201的解密完成通知,向软件控制模块210发送获取保护软件代码通知或获取执行结果通知,执行解密的软件代码并存储执行结果在存储模块202。
解密模块201,用于接收来自硬件控制模块200的解密控制指令,从存储模块202中读取保护软件代码,并进行解密后将解密后的软件代码存储在存储模块202中,向硬件控制模块200发送解密完成通知。
存储模块202,用于存储来自软件控制模块210的保护软件代码,或来自解密模块201的解密后的软件代码,或来自硬件控制模块200的执行结果。存储模块202为安全硬件设备20中的数据存储器(RAM)。
进一步地,安全硬件设备20包括验证模块203,验证模块203置于解密模块201之前时,验证模块203接收来自硬件控制模块200的解密控制指令,对存储在存储模块202中的保护软件代码进行安全验证并在通过验证后,向硬件控制模块200发送验证完成通知;此时,硬件控制模块200,接收到来自验证模块203的验证完成通知后,向所述解密模块201发送解密控制指令。
若验证模块203置于解密模块之后,则硬件控制模块200接收到来自解密模块201的解密完成通知后,向验证模块203发送验证控制指令,并在接收到来自验证模块203的验证完成通知后,向所述软件执行单元21发送获取保护软件代码通知或获取执行结果通知将解密控制指令转发给解密模块210。
软件执行单元21,用于执行软件代码,并在执行保护软件代码时,从外部获取保护软件代码,并发送给安全硬件设备20。
软件控制模块210,用于接收来自软件执行模块211的执行保护软件代码通知,接收来自外部的保护软件代码,将接收到的保护软件代码存储到安全硬件设备20的存储模块202中;向硬件控制模块200发送解密通知;接收来自硬件控制模块200的获取保护软件代码通知或获取执行结果通知,将接收到的保护软件代码存储到存储模块202或从存储模块202中读取执行结果;将读取的执行结果发送给软件执行模块211。
软件执行模块211,用于执行软件代码,向软件控制模块210发送执行保护软件代码通知,接收来自软件控制模块210的执行结果。
以上详细描述了本发明执行保护软件代码的方法及装置,从本发明方案可见,保护软件代码存储在独立的外部设备中,而不是存储在安全硬件设备如安全芯片中,解决了由于安全芯片内部的永久存储介质的存储容量小,远远不能满足保护软件代码的存储和运行要求的问题,也大大降低了对软件代码的保护的实现成本。
同时,保护软件代码在加密时,参与加密计算的密钥与安全硬件设备一一对应,这样,一方面安全硬件设备自身采用具有高安全强度的安全芯片,确保了安全硬件设备内部的密钥的保密性;另一方面,由于只有配套的安全硬件设备可以在其内部对被加密的保护软件代码进行解密,从而保证了保护软件代码的安全性。
本发明还进一步包括:对需要保护的软件代码进行加密和存储处理。图3a是本发明软件代码处理单元实施例一的组成结构示意图,如图3a所示,软件代码处理单元包括编译模块300、加密模块301、代码存储模块303。
编译模块300,用于接收需要保护的软件代码,对需要保护的软件代码进行编译,可编译成安全硬件设备能够执行的指令格式,也可以编译成软件执行单元能够执行的指令格式;将编译后的软件代码发送给加密模块301。
加密模块301,用于接收来自编译模块300的编译后的软件代码,存储加密后的保护软件代码在代码存储模块303。加密模块301可以通过硬件或软件实现,具体实现方法很多,属于本领域的公知技术,这里不再赘述。
软件代码处理单元30还进一步包括:签名模块302,用于对需要保护的软件代码进行认证,安全性认证可以采用多种方法,生成签名或其它安全数据。签名模块302可以置于加密模块301之后,也可以如图3b所示,设置在加密模块301之前。图3b是本发明软件代码处理单元实施例二的组成结构示意图。
由上述技术方案可见,在本发明中,软件执行单元获得保护软件代码后,并不立即执行保护软件代码,而是将该保护软件代码存储到安全硬件设备如安全芯片中,保护软件代码在安全硬件设备中解密并执行,之后再将执行结果返回软件执行单元。另外,本发明中,保护软件代码存储在与软件执行单元所在设备不同的其它设备上,比如移动硬盘中,而不是存储在安全硬件设备如安全芯片中,从而解决了由于安全芯片内部的永久存储介质的存储容量小,远远不能满足保护软件代码的存储和运行要求的问题,也大大降低了对软件代码的保护的实现成本。
保护软件代码在加密时,参与加密计算的密钥与安全硬件设备一一对应,这样,一方面安全硬件设备自身采用具有高安全强度的安全芯片,确保了安全硬件设备内部的密钥的保密性;另一方面,由于只有配套的安全硬件设备可以在其内部对被加密的保护软件代码进行解密,从而保证了保护软件代码的安全性。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (17)
1、一种用于执行保护软件代码的方法,其特征在于,该方法包括以下步骤:
(A)从外部设备获取所述保护软件代码;
(B)将所述保护软件代码存储在安全硬件设备(20)中;
(C)所述安全硬件设备(20)对其中已存储的所述保护软件代码进行解密;
(D)执行解密后的软件代码,同时存储执行结果;
(E)在执行完所有所述保护软件代码后,所述安全硬件设备(20)返回所述保护软件代码的执行结果。
2、根据权利要求1所述的方法,其特征在于,在步骤(D)中执行解密后的软件代码之前,还包括步骤:在解密所述保护软件代码后直接执行所述保护软件代码。
3、根据权利要求1所述的方法,其特征在于,在步骤(D)中执行解密后的软件代码之前,还包括步骤:通过所述安全硬件设备(20)内部的已有代码解释引擎将所述软件代码解析成所述安全硬件设备(20)能识别的指令格式。
4、根据权利要求1所述的方法,其特征在于,在所述安全硬件设备(20)中执行完成所述保护软件代码。
5、根据权利要求1所述的方法,其特征在于,在步骤(D)中执行已解密的所述保护软件代码之前或之后,还包括步骤:对所述保护软件代码进行安全鉴别。
6、根据权利要求1所述的方法,其特征在于,所述保护软件代码在加密时所采用的密钥与所述安全硬件设备(20)一一对应,只有与密钥相对应的所述安全硬件设备(20)才能对其内部所存储的已加密的保护软件代码进行解密。
7、根据权利要求1-6所述的任一方法,其特征在于,在步骤(A)之前,还包括步骤:对需要保护的软件代码加密后存储在独立于所述安全硬件设备(20)的其他设备中。
8、根据权利要求7所述的方法,其特征在于,还包括步骤:对所述加密后的保护软件代码进行认证。
9、根据权利要求7所述的方法,其特征在于,还包括步骤:对需要保护的软件代码进行认证后再执行加密。
10、一种用于执行保护软件代码的装置,其特征在于,该装置包括:
安全硬件设备(20),用于解密其中已存储的所述保护软件代码,执行解密后的软件代码,并返回执行结果。
11、根据权利要求10所述的装置,其特征在于,按照分段的形式执行所述保护软件代码的各分段代码。
12、根据权利要求10所述的装置,其特征在于,所述保护软件代码在加密时所采用的密钥与所述安全硬件设备(20)一一对应,只有与密钥相对应的所述安全硬件设备(20)才能对其内部所存储的已加密的保护软件代码进行解密。
13、根据权利要求10所述的装置,其特征在于,所述安全硬件设备(20)包括:
硬件控制模块(200)、解密模块(201)和存储模块(202),其中,
硬件控制模块(200)用于接收解密通知,向解密模块(201)发送解密控制指令;接收来自解密模块(201)的解密完成通知,发送获取保护软件代码通知或获取执行结果通知,执行解密的软件代码并存储执行结果在存储单元(202);
解密模块(201)用于接收来自硬件控制模块(200)的解密控制指令,从存储模块(202)中读取保护软件代码,并进行解密后将解密后的软件代码存储在存储模块(202)中,向硬件控制模块(200)发送解密完成通知。
14、根据权利要求10所述的装置,其特征在于,所述安全硬件设备(20)还包括:
验证模块(203),用于接收来自硬件控制模块(200)的验证控制指令,对存储在存储模块(202)中的保护软件代码进行安全验证,并在通过验证后向硬件控制模块(200)发送验证完成通知,将解密控制指令转发给解密模块(210)。
15、根据权利要求14所述的装置,其特征在于,所述硬件控制模块(200)接收来自验证模块(203)的验证完成通知,向所述解密模块(201)发送解密控制指令。
16、根据权利要求14所述的装置,其特征在于,所述硬件控制模块(200)接收来自解密模块(201)的解密完成通知,向验证模块(203)发送验证控制指令,接收来自验证模块(203)的验证完成通知,发送获取保护软件代码通知或获取执行结果通知。
17、根据权利要求10~16任一项所述的装置,其特征在于,所述安全硬件设备为安全芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101065686A CN101281576A (zh) | 2008-05-14 | 2008-05-14 | 用于执行保护软件代码的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101065686A CN101281576A (zh) | 2008-05-14 | 2008-05-14 | 用于执行保护软件代码的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101281576A true CN101281576A (zh) | 2008-10-08 |
Family
ID=40014039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101065686A Pending CN101281576A (zh) | 2008-05-14 | 2008-05-14 | 用于执行保护软件代码的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101281576A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020493A (zh) * | 2012-12-28 | 2013-04-03 | 杭州晟元芯片技术有限公司 | 一种防拷贝的软件保护与运行装置及方法 |
CN106789006A (zh) * | 2016-11-28 | 2017-05-31 | 范睿心 | 一种解密方法及系统 |
CN112241519A (zh) * | 2020-11-05 | 2021-01-19 | 王志平 | 一种软件版权保护的实现方法 |
-
2008
- 2008-05-14 CN CNA2008101065686A patent/CN101281576A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020493A (zh) * | 2012-12-28 | 2013-04-03 | 杭州晟元芯片技术有限公司 | 一种防拷贝的软件保护与运行装置及方法 |
CN106789006A (zh) * | 2016-11-28 | 2017-05-31 | 范睿心 | 一种解密方法及系统 |
CN112241519A (zh) * | 2020-11-05 | 2021-01-19 | 王志平 | 一种软件版权保护的实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101256613B (zh) | 无需制造者和用户知道彼此的加密信息的安全处理器系统 | |
US7636844B2 (en) | Method and system to provide a trusted channel within a computer system for a SIM device | |
JP6227772B2 (ja) | 動的ライブラリを保護する方法及び装置 | |
CN101419652B (zh) | 一种软硬件结合的保护程序的方法 | |
CN101506815A (zh) | 用于安全系统的双处理器结构 | |
CN102118512A (zh) | 一种手机应用程序防破解方法及系统 | |
CN103824032A (zh) | 在微控制器中用于数据安全性处理的方法和装置 | |
US8843766B2 (en) | Method and system for protecting against access to a machine code of a device | |
CN103210396A (zh) | 包括用于保护敏感代码和数据的架构的方法和装置 | |
US10027639B2 (en) | IC chip performing access control based on encrypted ID | |
US8745407B2 (en) | Virtual machine or hardware processor for IC-card portable electronic devices | |
CN101103404A (zh) | 在非安全区域中分配安全区域的方法和便携式存储装置 | |
CN110245466B (zh) | 软件完整性保护和验证方法、系统、设备及存储介质 | |
CN102855161A (zh) | 用于安全微控制器的外部存储器的数据交织方案 | |
CN103258152A (zh) | 执行包括已加密指令的软件应用程序的系统、装置和方法 | |
CN104583961A (zh) | 基于软件的侧信道攻击防止 | |
CN105827388A (zh) | 用于用密码处理数据的方法 | |
CN109299944B (zh) | 一种交易过程中的数据加密方法、系统及终端 | |
JP2007328789A (ja) | 入力データに関するアドレスを使用して入力データを符号化するための暗号システム、エラー検出回路、及びそれの動作方法 | |
CN107563226B (zh) | 一种存储器控制器、处理器模块及密钥更新方法 | |
CN101281576A (zh) | 用于执行保护软件代码的方法及装置 | |
US8413906B2 (en) | Countermeasures to secure smart cards | |
CN201029035Y (zh) | 一种执行保护软件代码的装置 | |
CN101795194B (zh) | 一种智能卡多数字证书保护方法 | |
CN105426702A (zh) | 基于安卓操作系统的应用程序加密解密方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20081008 |