用于在执行期间验证应用程序的真实性的系统和方法_3

文档序号:9524462阅读:来源:国知局
引导期间)验证其真实性。此外,可注意到的是,在未经授权方能够查明在何处(存储器电路26和/或处理电路24中)或何时(在电子装置10的操作期间)攻击电子装置10的电路时,上述EM攻击的成功机率更大。因此,某些当前公开的实施例允许电子装置10的处理电路24持续处在活动状态,持续验证应用程序28的真实性,这使得未经授权方更难以计划和实现攻击,从而使得电子装置10更安全。
[0040]图2是示出计算机实现的过程50的一实施例的流程图,由此诸如电子装置10的制造商等经授权的软件提供商可生成数据包27 (例如,软件数据包27)以便在电子装置10的存储器电路26中安装。所示过程50从经授权的软件提供商编译(框52)指令以生成可执行应用程序28开始。例如,通过使用适合的处理装置,以编程语言(例如,C、C++、Ada、Fortran)编写的人类可读代码集可被编译成二进制可执行应用程序28。
[0041]继续图2所示过程50,随后,可计算用于在框52中编译的应用程序的摘要值(框54)。也就是说,通过使用适合的处理装置,在框52中生成的可执行应用程序28可作为输入提供到输出摘要值30的算法。摘要值30可一般是使用加密哈希功能(例如,MD4、MD5、3说-1、3说-2、3说-3、3说-256)计算(例如,生成或确定)的加密哈希值。因此,摘要值30可一般包括从应用程序28的逐比特摘要生成的固定长度字符串,使得输入(例如,应用程序28)中甚至单比特差别也产生不同摘要值30。
[0042]随后,通过使用适合的处理装置,可生成(框56)包括在框52中生成的应用程序30及在框54中生成的摘要值30的数据包27 (例如,软件数据包27)。例如,数据包27可以是包括二进制可执行应用程序文件30的文件容器(例如,zip文件、tar文件)和包括摘要值30的文本文件。在某些实施例中,数据包27可被压缩,使得数据包27在电子装置10的存储器电路26中占用更少空间。此外,在某些实施例中,可完全或部分加密数据包27。也就是说,在某些实施例中,适合的处理装置可使用与电子装置10的制造商相关联的加密密钥或者与经授权软件提供商相关联的加密密钥将一些或全部数据包27加密。例如,在某些实施例中,可加密整个数据包27。在其它实施例中,可对在数据包27内的应用程序28和存储的摘要值30进行单独加密。在还有的其它实施例中,在数据包27中包括摘要值30前,可将其独自加密。此外,如下讨论的一样,对于利用加密的实施例,制造商或经授权软件提供商用于加密数据包27的加密密钥与在例如制造时在电子装置10的存储器电路26内存储的对应解密密钥相关联。
[0043]鉴于以上所述,图3是示出其中电子装置10引导,验证和有条件执行应用程序的过程60的一实施例的流程图。所示过程60在电子装置10通电时开始(框62)。在通电后,电子装置10在某些实施例中可执行一个或更多个检查(例如,存储器电路26的存储器检查、处理电路24的电压检查)以在继续前验证电子装置的硬件组件的适当操作。接着,电子装置10的处理电路24可开始执行引导加载应用程序(框64)。引导加载应用程序可以是在存储器电路26中存储并且由电子装置10的处理电路24可执行的指令的集合,这些指令允许选择,验证和有条件执行应用程序。
[0044]执行引导加载应用程序的电子装置10的处理电路24随后可确定在存储器电路26中存储的要执行的应用程序(框66)。例如,在某些实施例中,引导加载应用程序可提示用户(例如,使用上述I/O电路32)选择在存储器电路26中存储的特定应用程序28以便执行。在其它实施例中,引导加载应用程序可基于识别与应用程序28相关联的信息(例如,名称、大小、版本或存储器电路26中的位置),自动选择要执行的应用程序28。
[0045]接着,在电子装置10的处理电路24执行有关包括应用程序28的数据包27的完整性检查例程(框68)时,所示过程60继续。在某些实施例中,完整性检查例程可以是引导加载应用程序的一部分,或者可以是由引导加载应用程序调用的单独例程。在本文中使用时,完整性检查是通常确保数据包27可能包括合法应用程序但不涉及数据包27或应用程序28的内容的比特式分析的高端检查。例如,完整性检查可确保数据包27是适当文件类型(例如,zip文件或tar文件),数据包27包括二进制可执行文件28和摘要值30,数据包27是正确文件大小,数据包27符合适当文件命名标准或其它高端检查。在某些实施例中,完整性检查例程可涉及计算和比较校验和值(例如,循环冗余校验(CRC))以验证数据包27的完整性及其中存储的应用程序28。
[0046]如果(框70)数据包27未通过完整性检查,则电子装置的处理电路24可修改应用程序28和/或应用程序数据包27以使其不可引导(框72)。例如,如果引导加载应用程序的完整性检查例程确定数据包27或应用程序28缺乏完整性,则引导加载应用程序可修改数据包27和/或应用程序28的内容(例如,插入标志,修改一个或更多个比特的值,或者完全擦除数据包27),使得引导加载程序将不试图再次执行应用程序28。随后,引导加载程序促使电子装置10执行系统重置(框74),从而允许电子装置开始重新执行引导加载应用程序(框64)。
[0047]然而,如果(框70)数据包27确实通过完整性检查,则处理电路24可随后执行有关包括应用程序28的数据包27的真实性检查例程(框76)。真实性检查例程的示例在下面参照图4详细描述。在某些实施例中,框76的真实性检查例程可以是引导加载应用程序的一部分,或者可以是由引导加载应用程序调用的单独例程。无论如何,如下所述,真实性检查例程一般执行数据包27中存储的应用程序28的比特式分析,以确定应用程序28是否匹配也在数据包27中存储的摘要值30。关于上面讨论的完整性检查,如果(框78)电子装置10的处理电路24确定数据包27的应用程序28不真实,则处理电路24可修改数据包27和/或应用程序28以使其不可引导(框72)并且启动系统重置(框74)。在某些实施例中,在应用程序未通过完整性或真实性检查时(例如,框70、78或88),可跳过应用程序的修改(框72),并且装置可转而直接进行系统重置(框74),这实际上阻止装置执行所述应用程序而不进行框72的修改。
[0048]然而,如果(框80)数据包27确实通过真实性检查,则处理电路24可开始执行应用程序28 (框80)。如图3所示,在执行期间,除其它线程或过程84和86外,应用程序28派生初始线程或过程82 (例如,线程或过程0)。另外,在执行应用程序28的初始线程82中,电子装置10的处理电路24可执行真实性例程以再次验证数据包27和应用程序28的真实性(框88)。换而言之,在某些实施例中,应用程序28包括指示电子装置10的处理电路24验证当前在执行的应用程序28的真实性的真实性检查例程。真实性检查例程的示例在下面参照图4详细描述。在某些实施例中,处理电路24可包括多个处理单元(例如,处理核),并且特定处理单元可用于或专用于框76和/或88的真实性检查例程的执行。在某些实施例中,处理电路24可包括执行真实性检查例程的HSM。在某些实施例中,真实性检查例程可与应用程序28分开存储(例如,在单独的存储器装置或单独的存储器位置中)。例如,在某些实施例中,真实性检查例程可由存储和执行指令以执行应用程序28的真实性检查例程的硬件加速器(例如,FPGA)执行。
[0049]如下所述,真实性检查例程一般执行数据包27中存储的应用程序28的比特式分析,以确定应用程序28是否匹配也在数据包27中存储的摘要值30。因此,框78和88的真实性检查例程允许检测可在应用程序28的执行期间无意发生(例如,由于数据损坏)或有意发生(例如,由于未经授权的接入尝试)的数据包27和应用程序28的内容的甚至单比特更改。关于上面引导加载程序执行的完整性检查和真实性检查,如果(框90)真实性检查例程确定应用程序28不真实,则电子装置10的处理电路24可使应用程序28不可引导(框72)和/或启动系统重置(框74)。
[0050]然而,如果(框90)电子装置10的处理电路24成功验证应用程序28的真实性,则处理电路24可再次执行框88的真实性检查例程。在某些实施例中,在重新执行框88的真实性检查前,处理电路24可等待一定量的时间(例如,在大约300毫秒与大约1个月之间,在大约1秒与大约1周之间,在大约1分钟与大约1天之间,或者在大约1小时与大约12小时之间)或随机量的时间,而在其它实施例中,处理电路24可立即再次执行真实性检查例程。在其它实施例中,可在应用程序28的执行期间持续执行包括框88的线程82。更具体地说,在某些实施例中,包括框88的真实性检查例程的线程82可与其它线程84和86同时执行,但可指派有更低相对优先级,使得线程
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1