用于核查目标装置中的应用的执行完整性的方法与流程

文档序号:14959059发布日期:2018-07-18 00:09阅读:139来源:国知局
本发明涉及软件核查的领域,具体地讲,涉及检查是否能够展示出软件应用的运行时完整性。
背景技术
:远程证明是用于由授权方检测用户的计算机(或嵌入在装置中的任何软件)的变化的方法。例如,受信中心能够识别软件的未授权变化,包括用户篡改其软件以绕过技术保护措施。目标装置产生表示软件和/或执行平台的执行的证书(证明)。目标装置能够随后将这个证书提供给远程方以显示未被改变的软件当前正在执行。远程证明可与公钥加密组合,从而发送的信息仅能被提供和请求了证明的程序读取,并且不能被未授权第三方读取。该核查方法基于由核查中心将盘问(challenge)发送给目标装置。这个盘问由软件使用以产生结果,这个结果依赖于软件代码和执行时信息和该盘问。该结果随后被发送回核查中心以用于核查。用于核查该结果的关键在于精确了解目标装置的软件以产生用于比较的参考结果。技术实现要素:本发明的一方面提出了一种用于核查嵌入在目标装置中的软件的方法和系统。在本描述的框架中,提出一种用于通过从运行时应用信息产生应用签名来核查目标装置中的应用的执行完整性的方法,所述签名被用于由核查服务器核查应用的执行完整性,所述应用包括块的阵列,每个块产生摘要,由此产生与块的阵列相关的摘要的阵列,所述方法包括下述步骤:-由目标装置接收包括盘问和第一函数的消息,所述第一函数定义聚合方法,所述盘问定义聚合指令,-为每个块确定用于所述块的对应摘要,-根据第一函数的聚合方法和所述盘问来聚合块的摘要以产生与所述应用相关的证明,-向核查服务器发送所述证明,-由核查服务器将第二函数应用于所述证明,所述第二函数消除所述盘问的影响,由此产生独立于所述盘问的应用签名,-通过将产生的应用签名与参考签名进行比较来核查所述应用的执行完整性。附图说明由于附图,将会更好地理解下面的具体实施方式,在附图中-图1示出包括首端和目标装置的系统以及核查应用的步骤,-图2示出证明的产生,-图3示出证明的核查,-图4示出目标装置。具体实施方式证明方案是这样的方案:运行时环境或应用产生完整性的证据(证明)。远程证明方案是盘问-响应协议,其中应用被请求基于它从核查服务器接收的盘问来计算这种证明。基于接收的响应(证明),核查者(诸如首端的远程受信实体)能够对该应用的执行的完整性做出可信赖性判决。通常的证明方案从运行时信息(诸如,存储器内容)计算这种证明。存在例如公开的方案,其中所述盘问定义通过存储器的预定义访问;所述证明是在这个访问期间遇到的值的散列值。已知远程证明方案要求仿真应用的运行时环境或至少受信实体可获得应用(或其一部分),以使得它能够在给定盘问的情况下计算预期结果并且核查接收的证明的正确性。因为例如应用版本的多样性、和需要核查的应用实例的数量,这引入在实践中非常难以处理的显著复杂性。根据本说明书,提出了判决计算被减少为核查元组{version(版本),appsign}是否存在于给定集合中的证明方案,这在实践中大大减小部署的复杂性。通过将远程证明方案的一部分(即,确保存在合适的盘问-响应协议的部分)委托给“远程证明前端”(raf)来实现这一点。为没有关于需要核查的应用的信息的raf设计了该解决方案;它仅支持盘问-响应协议,并且从响应提取核查实体(ve)能够用于对客户应用(app)的执行做出它的可信赖性判决的应用签名(appsign)。在图1中提供这种解决方案的高级示图。首端he包括核查实体ve和远程证明前端raf。核查实体ve请求远程证明前端raf向目标装置td执行查询。远程证明前端raf准备盘问ch并且将它发送给目标装置td。应该注意的是,目标装置可以是嵌入执行程序的处理单元的任何类型的电子装置。步骤a是将盘问发送给目标装置。盘问是目标装置不可预测的值。它例如可以由远程证明前端raf随机产生。远程证明前端raf和目标装置td之间的传输可以是双向信道(诸如,互联网连接),或者可以是盘问ch被发送给多个目标装置td的广播连接。一旦接收到盘问,证明的产生能够开始(步骤b)。目标装置td包括负责产生证明的证明模块am。这个证明模块am可以是目标装置的专用程序或连接到主处理器的主要通信总线的独立处理器。在后者的情况下,独立处理器可访问存储变量的存储器,并且能够计算关于这些变量的摘要。证明r=f(ch,app),其中f代表基于接收的盘问ch和应用(app)的某种(运行时)信息(诸如,应用存储器空间)计算证明的函数。给定了盘问ch和响应r,raf计算app签名,app签名是应该仅取决于独立于盘问的应用信息的值。以下,我们提供用于实现这一点的具体构造。本领域技术人员将会认识到,关于这个提出的构造的替代构造、变型和扩展是可能的。根据实施例,建立摘要的向量集[h0,h1,…,hn],所述摘要的向量集仅取决于应用(运行时)信息(的一部分),并且将证明定义为这个向量的某种函数;该函数由盘问实例化并且是可逆的。使用这个盘问,raf能够计算反函数,以使得从证明(响应),能够重构摘要的这个向量。app签名随后是关于摘要的这个向量(或其一部分)计算的某种函数的结果。图2更详细地解释证明产生的处理。待核查的程序被划分为块(b0…b3),并且证明模块am包括存储器以存储参与证明产生的块的图(map)。证明模块为每个块产生代表该块的摘要h。这个摘要h能够被如下计算:-静态:块的散列值或对存储块的内容的任何运算,-动态:在块的执行的末尾处的包括例如寄存器、栈、堆内容的运行时存储器的内容。为了每次块被执行时在运行时存储器中产生相同的值,运行时存储器在执行之前被设置为预定义值。一旦获得摘要的集合(h0,h1,…hn),下一个步骤是证明的计算,这个运算依赖于盘问。对摘要的集合应用函数f(ch)以产生证明(h0’,h1’…hn’)。对于函数f,存在大量可能性,关键因素是具有允许恢复摘要的集合的反函数f-1的可能性。函数f的示例混洗函数:盘问ch被用作参数以对集合的每个成员进行混洗(shuffle)。得到的集合包含所有摘要,仅集合中的位置基于盘问ch而被随机修改。数学运算:得到的摘要h’是至少两个摘要的运算的结果。示例:h0’=h3xh6;h1’=h2xh5,或h0'=h3+h6;h1’=h0+h7。参与运算的摘要的选择基于盘问ch。能够执行复杂运算,诸如h0'=h3xh6+h7;h1'=h2/h4xh12…。仿射函数:仿射函数代表例如h0'=a0.h0+a1.h1+…an.hn的形式的向量值函数,其中a0至an系数由盘问给出。仿射变换的示例包括线性函数,诸如加法或与常数的乘法(该常数能够是盘问的系数)。摘要的集合(h0…hn)能够被表示为x行和y列的摘要的矩阵,诸如所述盘问还可以是矩阵的形式。得到的证明h'可以是矩阵,诸如h'=f(ch,h)。一旦由目标装置的证明模块计算了证明h',该结果被与应用的版本(ver)的标识符一起发送给远程证明前端raf。函数f的另一示例是摘要的矩阵的加密函数,用于该加密的密钥可以是盘问或根据由raf和目标装置已知的推导函数从盘问推导出的信息。用于确定证明的函数可以是基于盘问和摘要的矩阵计算证明的多元函数。这优选地是可逆线性函数。通过基于盘问产生可逆函数,能够明确地定义这一点。得到的矩阵随后被乘以摘要的矩阵以便获得发送(作为摘要的矩阵的相同长度的矩阵)给raf的证明。raf能够使用相同算法从它保留的盘问ch计算出相同矩阵,然后计算它的逆矩阵。这应用于响应,产生摘要的原始矩阵,所述摘要的原始矩阵随后进而被用于计算app签名。在图3上,示出由raf执行的运算。与应用的标识符(ver)一起接收证明att(步骤c,图1)。证明att包括值的集合(h0’,h1’…hn’),对于每个盘问,所述值的集合是唯一的。作为盘问c的产生器,raf能够对证明att一起使用盘问和反函数f-1(步骤d,图1)。这将会产生计算的摘要的集合h0,h1…hn。根据实施例,例如通过混合摘要以产生单个值s,从计算的摘要产生签名s。混合函数可以是关于摘要的散列函数。这个签名s被发送给核查实体ve以用于核查。核查实体ve包括数据存储装置以存储一对参考数据,所述对包括至少参考签名sr和应用的版本。一旦当前签名s和当前版本v的所述对被核查实体接收(步骤e),接收的对中的版本v被用于从数据存储装置检索参考签名sr。在以前的初始化步骤期间,核查实体ve已产生参考摘要的集合(h0r,h1r…hnr)并且产生参考签名sr,参考摘要的集合是在参考客户装置上产生的。在当前签名s和参考签名sr之间执行比较,并且核查的结果允许确定目标装置的应用是否是真的。核查实体能够随后通知负责向目标装置传送内容的服务提供商,或向目标装置发送验证消息。根据实施例,从摘要的集合产生证明的步骤能够与计算摘要的运算组合。例如,当证明产生函数是多元函数并且用于从块计算摘要(子摘要)的函数也是多元函数时,这些能够被组合。应用app的块b0被划分为多个子摘要b0a,b0b…b0n。函数f随后定义对子摘要的利用盘问c参数化的运算。示例:如果h0=b0a+b0b和h1=b1axb1b定义能够如何从子摘要计算摘要并且h0’=c0xh0xh1+c1xh1以及h1’=c0xh1+c1xh0,则能够由取决于输入ch和子摘要的定义f如下直接计算h0’和h1’:ho'=c0x(b0a+b0b)x(b1axb1b)+c1xb1axb1bh1′=c0xb1axb1b+c1×(b0a+b0b)。这个计算能够被如此表示,从而变得难以分离所述2种运算。作为示例给出乘法和加法。能够利用两个或更多个子摘要应用任何类型的数学运算。因此,概括以上示例,就是从多个块的子摘要直接产生摘要的集合h0’…hn’,。根据实施例,目标装置的证明模块具有块b0…bn的定义。这个定义被存储在目标装置的证明模块的存储器中,或直接实现在证明模块软件中。在另一实施例中,核查实体ve在它的数据存储装置中包括具有对应的参考签名的集合和应用的版本的多个定义。定义应该被理解为定义参与摘要的产生的应用中的块(这可以是一组存储范围或一组存储器地址的形式)或定义块的运行时执行的初始化参数。对于每组的初始化参数以及对于一给定版本,参考签名被存储在数据库中。证明模块能够随后包括存储在存储表中的块的阵列的几个定义。raf在发送给目标装置的消息中包括哪种定义应该被用于证明的确定的指示(表索引)。定义表的示例表索引块块块块块块1b3b5b12b2b1b92b0b4b10b2b7b213b4b8b2b11b17b104b1b3b6b5b13b16每个块能够由目标软件的开始和结束地址识别。根据另一示例,证明模块从raf接收参与证明的块的定义。目标装置的优选示例是音频/视频接收器,并且具体地讲,是负责处理所述音频/视频的权利的核查的应用。然而,核查能够发生在具有需要核查的软件的任何装置中,诸如在重要环境(例如,工厂安全)中使用的智能电话或装置。图4示出目标装置。它包括通信模块comm用以接收盘问,所述盘问具有执行证明的产生的请求。这个模块也被用于向raf发送证明。目标装置td包括处理单元proc用以执行与证明的产生相关的操作。替代地,处理模块能够将证明的产生委托给证明模块am。处理单元和证明模块都可访问能够从其发生证明过程的存储器。虽然已参照特定示例性实施例描述了本公开的实施例,但将会清楚的是,可在不脱离这些实施例的更广泛的范围的情况下对这些实施例做出各种修改和改变。因此,应该在说明性的而非限制性的意义上看待说明书和附图。作为说明而非限制,形成本文的一部分的附图显示可实施主题的特定实施例。足够详细地描述示出的实施例以使本领域技术人员能够实施这里公开的教导。可使用并且从其得出其它实施例,以使得可在不脱离本公开的范围的情况下做出结构和逻辑替换和改变。因此,不应该在限制性意义上考虑这个详细描述,并且各种实施例的范围仅由所附权利要求以及这些权利要求的等同物的全部范围定义。本发明的主题的这些实施例可通过术语“本发明”在这里单独地和/或统一地提及,这仅是为了方便而非意图自动将本申请的范围局限于任何单一发明构思(如果事实上公开了超过一个发明构思的话)。因此,虽然已在这里示出和描述了特定实施例,但应该理解,为了实现相同目的而计算的任何布置可替换示出的特定实施例。本公开旨在覆盖各种实施例的任何和所有修改或变化。当检查以上描述时,以上实施例和这里未具体地描述的其它实施例的组合对于本领域技术人员而言将会是清楚的。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1