更新软件组件制造技术

技术编号:10926238 阅读:120 留言:0更新日期:2015-01-21 08:52
本发明专利技术提供了用于以组件水平来换新软件的方法和系统。客户端程序包括用于将软件组件加载到程序的至少一个可加载区域中以更新程序的基本组件。软件组件中的代码用于在软件组件执行时将关联了更新状态的状态数据写到存储装置中,并且测试状态数据以验证所更新程序的条件并且不允许回滚和前滚攻击,状态数据包括散列链值。用于验证所更新程序的正确性的状态数据与用于程序功能性的应用数据交织。服务器包括:具有被部署在每个客户端中的多个软件更新的更新池,以及用于监视和控制以下各项中至少一个的策略控制:客户端运行直到调用软件更新为止的时间长度,更新链;以及更新的粒度。

【技术实现步骤摘要】
【国外来华专利技术】【专利摘要】本专利技术提供了用于以组件水平来换新软件的方法和系统。客户端程序包括用于将软件组件加载到程序的至少一个可加载区域中以更新程序的基本组件。软件组件中的代码用于在软件组件执行时将关联了更新状态的状态数据写到存储装置中,并且测试状态数据以验证所更新程序的条件并且不允许回滚和前滚攻击,状态数据包括散列链值。用于验证所更新程序的正确性的状态数据与用于程序功能性的应用数据交织。服务器包括:具有被部署在每个客户端中的多个软件更新的更新池,以及用于监视和控制以下各项中至少一个的策略控制:客户端运行直到调用软件更新为止的时间长度,更新链;以及更新的粒度。【专利说明】更新软件组件
本专利技术涉及用于为组件编程的方法和系统,并且更特别地涉及用于更新程序中的软件组件的方法和系统。
技术介绍
在域(field)中更新软件典型地采取几个不同的途径。一种途径需要在任何换新(renewal)时更新完整程序。虽然该途径的优点在于可以在任何换新时改变程序的任何部分,但是它承受需要相当大量的上载数据和代码的缺点。 可更新性的第二途径涉及把功能性移交成为数据驱动的,使得数据文件对控制流的路径进行控制。虽然该途径确实允许在运行时改变行为,但是它需要预先将决策构建到软件中并且可能致使途径的可换新性方面受限,特别是为了保护代码免受攻击的目的。 第三途径使用动态或共享库机制的可用性以用于更新组件的集合。虽然有用,但是该途径具有以下缺点:即需要动态链接阶段在运行时解析浮动符号以给出性能开销,从而造成该途径典型地被谨慎地用于少数组件。另外,什么功能性处于动态库内的粒度关于总体系统而言是相当严格的。此外,某些平台不支持动态链接。 用于动态可更新软件组件的当前方法是粗粒度的、缓慢的或者在可以更新的代码和数据方面是有限的。此外,一些方法需要软件在进行更新时不运行。可以在运行时加载更新的那些方法当动态地加载更新时遭受粗粒度和对预测高置信水平的无能为力。另外,并没有很好地支持为了作为对破坏的响应或者作为对任何觉察到的攻击的前兆而换新安全性的目的更新软件组件的能力。用于可更新软件的现有方法已经由功能更新以及对域化产品中的缺陷的响应所驱动。 现有可更新软件组件机制中的安全性问题包括攻击者防止进行新的更新并且回滚到先前更新的能力。另外,攻击者具有通过查看软件组件更新中的不同而获得大量信息的能力。可以在软件组件更新之间和不同用户安装之间装配差分攻击。
技术实现思路
本专利技术的目的是提供一种方法和系统,其消除或缓解现有系统的缺点中的至少一个。 根据本公开的一方面,提供了用于软件换新的方法,其包括:通过程序中的基本组件将软件组件加载到程序的至少一个可加载区域中以更新程序,软件组件依照更新调度、在程序的运行时被动态交换(swap),在软件组件执行时将关联了更新状态的状态数据写在存储装置中;测试状态数据以验证所更新程序的条件,状态数据包括散列链值;以及将用于验证所更新程序的正确性的状态数据与用于程序功能性的应用数据相交织(entangle)。 根据本公开的另一方面,提供了用于换新软件的系统,其包括:客户端,所述客户端包括:处理器,和用于存储包括用于将程序组件加载到程序的至少一个可加载区域中以更新程序的基本加载组件在内的程序的存储器,所述程序组件依照更新调度、在程序的运行时被动态交换,所述程序组件具有用于在软件组件执行时将关联了更新状态的状态数据写在存储装置中并且测试状态数据以验证所更新程序的条件的代码,所述状态数据包括散列链值,用于验证所更新程序的正确性的状态数据与用于程序功能性的应用数据相交织。 【专利附图】【附图说明】 本专利技术的这些和其它特征将从其中参考附图的以下描述变得更加显而易见,在附图中:图1在示意图中描绘了用于可换新系统的基本机制的示例;图2在示意图中描绘了从客户端视角的可换新系统的示例;图3在示意图中描绘了从服务器视角的可换新系统的示例;图4在示意图中描绘了被应用于基本组件和可加载组件的多样性的示例;图5在示意图中描绘了用于验证软件更新状态的多个数据存储槽的示例;图6在示意图中描绘了用于强制更新的散列链计算;以及图7在示意图中描绘了将状态数据与应用数据相交织的示例。 【具体实施方式】 参考图1-7描述本公开的实施例。本文所描述的实施例可以包括未在附图中图示的一个或多个元件或组件。仅仅作为示例,可以利用在某个拓扑中的有限数目的元件来描述实施例。每个元件可以包括执行某些操作的结构。每个元件可以实现为硬件、软件或其任何组合。数据结构和软件代码以其整体或者以其部分可以存储在计算机可读介质中,所述计算机可读介质可以是能够存储供计算机系统使用的代码和/或数据的任何设备或介质。另外,可以经由通信网络来传输对可以嵌入在载波中的软件代码进行表示的计算机数据信号。 在描述中,术语“可加载”、“可交换”、“可更新”和“可换新”可以可互换地使用。在描述中,术语“组件”和“模块”可以可互换地使用。在描述中,术语“可编程组件”和“软件组件”可以可互换地使用。 本公开的实施例提供了用于支持软件组件更新的细粒度机制,以例如用于支持域中可换新的安全性和/或性能改进。粒度可以定义为可以由单个功能或多个功能的任何组合所组成的软件组件。对于每个可换新的软件组件,存在使内容多样化的机会,这意味着在保持功能性恒定的同时,软件的结构可以在每次更新时都不同,但是同样,功能性可以可选地在更新组件时是可变的。该细粒度机制提供了可以更新的片段(Piece)的更大灵活性。 换新软件组件的基本能力可以与用于反回滚、反前滚和强制组件更新的能力相组合。这例如通过将加密散列链与数据表相组合的机制而实现。这些数据表不仅包含用于更新机制的数据,而且还包含应用中所使用的数据。这些多用途数据片段的组合使得更新机制的移除对于攻击者而言是繁重的。 根据本公开的实施例,原生程序的单个叶级功能可以动态加载到运行的程序中。这些“热可交换”程序组件为出于实现安全性特征的目的的可更新软件组件提供基础。用于交换程序组件的机制作为静态代码(即基本加载组件)封装在程序中(参见例如图1的102)。实现方式按照操作系统的类型而变化,但是应用于例如但不限于Windows、Mac 0SX、Linux、Android和1S。基本加载组件的任务是用新的外部版本来替换叶级组件。除加载代码之外,程序映像中的任何代码可以被定义为可加载动态组件,只要它可以定义为叶级功能。此外,如果在程序的静态功能性中包括扩展机制,则可以放宽叶级特性。 用于原生组件的加载机制例如但不限于没有控制流的直线代码的片段,其不具有浮动符号,并且没有除了参数和到代码块的返回值之外的范围外的引用。除ABI惯例(应用二进制接口)之外,该代码不需要链接到程序的其余部分。因此,只要在程序中存在空间并且不存在程序当前执行于其中的竞态条件,将该代码动态地“投到(drop)”程序中就位就是可能的。另外,将约束放宽到代码所可以引用的是可能的,如果引入解析这些引用的附加机制的话。例如,只要存在插入的重定向的跳转表,跳转到本地代码外的代码就是可能的。类似地,只要存在插入的地址重定向的表,对本地代码外的数据的引用就是可能的。该机制可以变成对于充分本文档来自技高网
...

【技术保护点】
一种用于软件换新的方法,包括:通过程序中的基本组件将软件组件加载到程序的至少一个可加载区域中以更新程序,软件组件依照更新调度、在程序的运行时动态交换;在软件组件执行时,将关联了更新状态的状态数据写在存储装置中;测试状态数据以验证所更新程序的条件,状态数据包括散列链值;以及将用于验证所更新程序的正确性的状态数据与用于程序功能性的应用数据交织。

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:C利姆H董S马丁YX古M维纳
申请(专利权)人:爱迪德加拿大公司
类型:发明
国别省市:加拿大;CA

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1