用于执行保护软件代码的方法及装置的制作方法

文档序号:6463542阅读:161来源:国知局
专利名称:用于执行保护软件代码的方法及装置的制作方法
技术领域
本发明涉及软件代码保密技术,特别涉及一种用于执行保护软件代码的 方法及装置。
背景技术
软件由软件代码组成的,软件代码凝聚了软件开发人员的智慧,特别是 核心代码, 一旦被恶意获取,将泄漏软件开发人员的智力成果,降低软件的 价值。当软件在软件执行单元如公知的操作系统中运行时,如果软件代码在软 件中以明文的方式存在,非常容易通过静态反汇编以及动态调试等方法对软 件代码进行分析,获取软件代码的执行逻辑或算法。为了有效地保护软件, 通常会对软件中需要保护的软件代码如核心代码等进行加密等保护,本发明 将这种经过加密等保护手段处理的软件代码称为"保护软件代码"。目前,通常将需要保护的代码存储到安全硬件设备如安全芯片中,以达 到对软件代码的保护。在运行保护软件代码时,安全硬件设备通过重新编译 的方式将该保护软件代码编译成明文,并一次性全部写入安全硬件设备的永久存储介质中,如闪存(Flash)或可电擦除只读存储器(EEPROM)中。可 以看出,由于保护代码在自身存储的安全硬件设备中运行,而不在操作系统 中运行,实现了对软件代码的保护。现有运行保护软件代码的方法,需要将大量的保护软件代码存放在安全 硬件设备的永久存储介质中,这样才能由安全硬件设备的处理器对保护软件 代码进行处理和计算。为了有效安全地运行保护软件代码,不仅要求安全硬 件设备具备相当的运算处理能力,而且安全硬件设备本身必须是一种安全芯片。目前,安全芯片内部的永久存储介质的存储容量都非常小, 一般只有几 十千字节大小,远远不能满足保护软件代码的存储和运行要求,而且安全芯 片价格昂贵,严重影响了对软件代码的保护。发明内容本发明的主要目的在于提供一种用于执行保护软件代码的方法和装置, 从而能够有效安全地保证保护软件代码的运行。根据本发明的一个方面,提供一种用于执行保护软件代码的方法,其特征在于,该方法包括以下步骤(A)从外部设备获取所述保护软件代码;(B )将所述保护4欠件代码存储在安全硬件设备(20 )中;(C) 所述安全硬件设备(20)对其中已存储的所述保护软件代码进行解密;(D) 执行解密后的软件代码,同时存储执行结果;(E) 在执行完所有所述保护软件代码后,所述安全硬件设备(20)返回 所述保护软件代码的执行结果。 '根据本发明的一个方面,其特征还在于,所述保护软件代码在加密时所采用的密钥与所述安全硬件设备(20)--对应,只有与密钥相对应的所述安全硬件设备(20)才能对其内部所存储的已加密的保护软件代码进行解密。根据本发明的一个方面,其特征还在于,在步骤(D)中执行解密后的软 件代码之前,还包括步骤在解密所述保护软件代码后直接执行所述保护软件 代码。根据本发明的一个方面,其特征还在于,在步骤(D)中执行解密后的软 件代码之前,还包括步骤通过所述安全硬件设备(20)内部的已有代码解释 引擎将所述软件代码解析成所述安全硬件设备(20 )能识别的指令格式。'根据本发明的一个方面,其特征还在于,在所述安全硬件设备(20 )中执行完成所述保护软件代码。根据本发明的一个方面,其特征还在于,在步骤(D)中执行已解密的所述保护软件代码之前或之后,还包括步骤对所述保护软件代码进行安全鉴别。 根据本发明的一个方面,其特征还在于,在步骤(A)之前,还包括步骤 对需要保护的软件代码加密后存储在独立于所述安全硬件设备(20 )的其他设 备中。根据本发明的一个方面,其特征还在于,还包括步骤对所述加密后的保 护软件代码进^f于i人i正。根据本发明的一个方面,其特征还在于,还包括步骤对需要保护的软件 代码进行认证后再执行加密。根据本发明的另一个方面,提供一种用于执行保护软件代码的装置,其特征 在于,该装置包括安全硬件设备(20),用于解密其中已存储的所述保护软件代码,执行 解密后的软件代码,并返回执行结果。根据本发明的另一个方面,其特征还在于,按照分段的形式执行所述保护软 件代码的各分段代码。根据本发明的另一个方面,其特征还在于,所述保护软件代码在加密时所采 用的密钥与所述安全硬件设备(20)——对应,只有与密钥相对应的所述安全 硬件设备(20)才能对其内部所存储的已加密的保护软件代码进行解密。根据本发明的另一个方面,其特征还在于,所述安全硬件设备(20)包括硬件控制模块(200)、解密模块(201)和存储模块(202),其中,硬件控制模块(200)用于接收解密通知,向解密模块(201 )发送解密控制 指令;接收来自解密模块(201)的解密完成通知,发送获取保护软件代码通知 或获取执行结果通知,执行解密的软件代码并存储执行结果在存储单元(202);解密模块(201)用于接收来自硬件控制模块(200)的解密控制指令,从存 储模块(202)中读取保护软件代码,并进行解密后将解密后的软件代码存储在 存储模块(202)中,向硬件控制模块(200)发送解密完成通知。根据本发明的另一个方面,其特征还在于,所述安全硬件设备(20)还包括 验证模块(203 ),用于接收来自硬件控制模块(200)的验证控制指令,对存储在存储4莫块(202 )中的保护软件代码进行安全验证,并在通过验证后向硬件控制模块(200)发送验证完成通知,将解密控制指令转发给解密模块(210 )。 根据本发明的另一个方面,其特征还在于,所述硬件控制模块(200)接收来自验证模块(203)的验证完成通知,向所述解密模块(201)发送解密控制指令。根据本发明的另一个方面,其特征还在于,所迷硬件控制才莫块(200)接收 来自解密模块(201 )的解密完成通知,向l^正模块(203 )发送验证控制指令, 接收来自验证模块(203)的验证完成通知,发送获取保护软件代码通知或获取 执行结果通知。根据本发明的另一个方面,其特征还在于,其特征在于,所述安全硬件设备 为安全芯片。


图l是本发明执行保护软件代码的方法的流程图; 图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是本发明软件代码处理单元实施例二的组成 结构示意图。由上述技术方案可见,在本发明中,软件执行单元获得保护软件代码后, 并不立即执行保护软件代码,而是将该保护软件代码存储到安全硬件设备如 安全芯片中,保护软件代码在安全硬件设备中解密并执行,之后再将执行结 果返回软件执行单元。另外,本发明中,保护软件代码存储在与软件执行单 元所在设备不同的其它设备上,比如移动硬盘中,而不是存储在安全硬件设小,远远不能满足保护软件代码的存储和运行要求的问题,也大大降低了对 软件代码的保护的实现成本。保护软件代码在加密时,参与加密计算的密钥与安全硬件设备——对硬件设备自身釆用具有高安全强度的安全芯片,确保了安全硬件设备内部的密钥的保密性;另一方面,由于只有配套的安全硬件 设备可以在其内部对被加密的保护软件代码进行解密,从而保证了保护软件 代码的安全性。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护 范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
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、 根据权利要求l-6所述的任一方法,其特征在于,在步骤(A)之前, 还包括步骤对需要保护的软件代码加密后存储在独立于所述安全硬件设备(20)的其他设备中。
8、 根据权利要求7所述的方法,其特征在于,还包括步骤对所述加密后 的保护软件代码进行认证。
9、 根据权利要求7所述的方法,其特征在于,还包括步骤对需要保护的 软件代码进行认证后再执行加密。
10、 一种用于执行保护软件代码的装置,其特征在于,该装置包括 安全硬件设备(20),用于解密其中已存储的所述保护软件代码,执行解密后的软件代码,并返回执行结果。
11、 根据权利要求10所述的装置,其特征在于,按照分段的形式执行所 述保护软件代码的各分段代码。
12、 根据权利要求10所述的装置,其特征在于,所述保护软件代码在加 密时所采用的密钥与所述安全硬件设备(20) —一对应,只有与密钥相对应的 所述安全硬件设备(20)才能对其内部所存储的已加密的保护软件代码进行解 密。
13、 根据权利要求IO所述的装置,其特征在于,所述安全硬件设备(20) 包括硬件控制模块(200)、解密模块(201)和存储模块(202),其中, 硬件控制模块(200)用于接收解密通知,向解密模块(201 )发送解密控制 指令;接收来自解密模块(201)的解密完成通知,发送获取保护软件代码通知 或获取执行结果通知,执行解密的软件代码并存储执行结果在存储单元(202 );解密模块(201)用于接收来自硬件控制模块(200)的解密控制指令,从存 储模块(202)中读取保护软件代码,并进行解密后将解密后的软件代码存储在 存储模块(202)中,向硬件控制模块(200)发送解密完成通知。
14、 根据权利要求IO所述的装置,其特征在于,所述安全硬件设备(20) 还包括验证模块(203 ),用于接收来自硬件控制模块(200)的验证控制指令,对 存储在存储模块(202)中的保护软件代码进行安全aS正,并在通过验证后向硬件控制模块(200 )发送验证完成通知,将解密控制指令转发给解密模块(210 )。
15、 根据权利要求14所述的装置,其特征在于,所述硬件控制模块(200) 接收来自验证模块(203)的验证完成通知,向所述解密模块(201)发送解密 控制指令。
16、 根据权利要求14所述的装置,其特征在于,所述硬件控制模块(200) 接收来自解密模块(201)的解密完成通知,向验证模块(203 )发送验证控制 指令,接收来自验证模块(203)的验证完成通知,发送获取保护软件代码通知 或获取执行结果通知。
17、 根据权利要求10-16任一项所述的装置,其特征在于,所述安全硬件 设备为安全芯片。
全文摘要
本发明公开了一种执行保护软件代码的方法,该方法包括当软件执行单元需要执行保护的软件代码时,从外部获取保护软件代码并存储在安全硬件设备中;安全硬件设备解密并执行解密后的保护软件代码,同时存储执行结果;在执行完所有保软件代码后,安全硬件设备将保护软件代码的执行结果返回给软件执行单元。同时本发明还公开了一种执行保护软件代码的装置。本发明中的安全硬件设备自身采用具有高安全强度的安全芯片,确保了安全硬件设备内部的密钥的保密性。另外,将保护软件代码存储在独立于安全硬件设备的外部设备中,大大降低了对软件代码的保护的实现成本。
文档编号G06F21/22GK101281576SQ200810106568
公开日2008年10月8日 申请日期2008年5月14日 优先权日2008年5月14日
发明者孙吉平, 勇 韩 申请人:北京深思洛克数据保护中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1