使用散列值的软件部件验证的制作方法

文档序号:6374481阅读:161来源:国知局
专利名称:使用散列值的软件部件验证的制作方法
技术领域
本公开一般涉及飞行器,并且具体涉及管理飞行器软件部件。更具体地,本公开涉及用于管理飞行器软件部件以及用于在飞行器上的软件部件上执行操作之前验证软件部件的方法和设备。
背景技术
现代飞行器极其复杂。例如,飞行器可能具有机载的多种类型的电子系统。飞行器上的电子系统可以是现场可更换单元(LRU)。现场可更换单元被设计为易于更换。当飞行器处于飞行中或飞行器在地面上时可替换现场可更换单元。通常现场可更换单元被包装在盒子里并且可能被密封。电子系统可能呈现各种形式。飞行器上的电子系统可以是,例如但不限于,飞行管理系统、自动驾驶仪、飞行娱乐系统、通信系统、导航系统、飞行控制器、飞行记录器以及防撞系统。飞行器上的各种电子系统可通过数字飞机网络彼此通信。电子系统可使用软件或编程来提供用于各种操作和功能的逻辑或控制。通常将这些电子系统中使用的软件视为航空业的部件。具体地,现场可更换单元本身可独立追踪飞行器上该现场可更换单元中使用的软件应用程序。被视为飞行器部件的飞行器软件可称为可装载软件飞行器部件、飞行器软件部件、或简单地称为软件部件。软件部件可视为飞行器配置的部分,而非运行软件的硬件的部分。飞行器运营商是操作飞行器的实体。飞行器运营商还负责飞行器的维护和维修。飞行器运营商的示例包括航空公司和军事单位。当飞行器运营商接收飞行器时,软件部件通常已安装在飞行器上的电子系统中。在需要将这些部件重新安装或重新装载到飞行器上的电子系统中的情况下,飞行器运营商可能也接收这些装载的软件部件的副本。例如,在替换或维修其中使用了软件的现场可更换单元时,可能需要重新装载软件部件。此外,飞行器运营商有时也接收软件部件的更新。这些更新可能包括当前安装的软件部件中不存在的额外特征,并且这些更新可能被视为对一个或更多电子系统的升级。在飞行器上装载软件部件期间,可能随后执行指定程序,从而了解飞行器的当前构造,包括装载在飞行器上的所有软件部件。将软件部件装载到飞行器上之后,可以在该部件上执行各种操作。例如,可将软件部件装载到电子系统中、软件部件可在电子系统中运行以执行功能、可删除软件部件和/或可在软件部件上或使用该软件部件执行ー些其他操作。在部件上执行任何电子系统操作前,可验证该软件部件。该软件部件的验证可以被执行用于验证该软件部件相对其原始形式未发生变化/改变。用于验证软件部件的当前方法基于数字签名,并且要求使用复杂的公开密钥基础设施组件。这些过程可能比期望的更耗时且更昂贵。这些过程在检测所有软件变化特别是本质上为故意和恶意的变化的能力方面也有特定的限制。因此,具有ー种较便宜且提高对被改变软件的检测从而防止其使用的用于验证软件部件的方法和设备是有利的。

发明内容
本公开的有利实施例提供一种验证飞行器上的软件部件的方法。在飞行器上计算飞行器上的软件部件的第一散列值。然后,在飞行器上确定第一散列值是否与来自存储在飞行器上的软件完整性数据结构的第二散列值匹配。软件完整性数据结构包含未在飞行器上确定、飞行器使用的软件部件的散列值。基于第一散列值是否与第二散列值匹配来提供验证状态。仅在第一散列值与第二散列值匹配时,对飞行器的软件部件执行操作。本公开的另一有利实施例提供ー种装置,其包括存储在飞行器上的软件完整性数据结构、飞行器上的计算器以及飞行器上的比较器。软件完整性数据结构包含在飞行器上未确定、飞行器使用的软件部件的散列值。计算器被配置为计算飞行器上的软件部件的第一散列值。比较器被配置为确定第一散列值是否匹配来自软件完整性数据结构的第二散列值。飞行器被配置为仅当第一散列值匹配第二散列值时在软件部件上执行操作。本公开的另一有利实施例提供另ー种验证飞行器的软件部件的方法。接收若干软件部件。确定若干软件部件的每个的散列值以形成若干散列值。将若干散列值组合到软件完整性数据结构中以在确定是否在飞行器上的若干软件部件上执行操作中使用。特征、功能和优点可以在本公开的各种实施例中独立实现,并且可以在其他实施例中被组合,其中,进ー步的细节可以參考以下说明和附图获得。


所附的权利要求书中记载了视为有利实施例的典型特征的新颖特征。然而,当结合附图阅读本公开时,通过參考本公开有利实施例的以下详细说明将最好地理解有利实施例以及优选使用模式、进ー步目标及其优点,在附图中图I是根据有利实施例的用于管理地面和飞行器上的软件部件的软件部件管理环境方框图;图2是根据有利实施例的用于确定飞行器上的软件部件是否正确的系统的方框图;图3是根据有利实施例的软件完整性数据结构的方框图;图4是显示根据有利实施例的从软件供应商到飞行器的软件部件流以及用于验证在飞行器上使用的软件部件的信息流的方框图;图5是显示根据有利实施例的用于验证飞行器上的软件部件的另一信息流的方框图;图6是显示根据有利实施例的用于验证飞行器上的软件部件的另一信息流的方框图;图7是显示根据有利实施例的从飞行器运营商到飞行器的软件部件流的方框图;图8是根据有利实施例的用于产生和使用软件完整性数据结构的过程的流程图;图9是根据有利实施例的用于验证飞行器上的软件部件的过程的流程图。图10是根据有利实施例的ー种数据处理系统的图示。
具体实施方式
不同有利实施例认识并且考虑若干不同的考虑事项。本文中关于事项使用的“若干”指一个或更多事项。例如,“若干不同的考虑事项”是一个或更多不同的考虑事项。不同有利实施例认识到并考虑用于验证飞行器上装载的软件和其他数据的当前方法是基于物理媒体处理过程和/或数字签名的。用于飞行器软件部件的物理媒体处理过程包括安全运送方法的使用、媒体内容的电子检查以及通过飞行器机载设备对软件部件的 循环冗余校验验证。不同有利实施例还认识到并且考虑使用基于证书的公开密钥基础设施(PKI)的数字签名当前被用于提供对飞行器上装载的软件的验证。数字签名的使用依赖于需要昂贵的安装与维护的公开密钥基础设施组件。此外,由于飞行器应用中维护密钥和证书的困难,基于公开密钥基础设施的安全解决方案不是很适于在可移动机队上使用。例如,不同有利实施例认识到并且考虑,基于证书的公开密钥基础设施解决方案要求证书具有有限的使用期和及时的撤销状态。与基于地面的证书授权机构具有有限连接的飞行器可能无法及时确定证书注册状态。有利实施例也认识并考虑当前飞行器可使用商用现货(commercialoff-the-shelf)公开密钥基础设施软件,其在飞行器应用中的安全性可能未被评估。因此,使用这种软件的飞行器系统的安全认证是复杂的。有利实施例对验证用于飞行器电子系统的软件的方法提供改进。具体地,有利实施例以验证飞行器上的软件部件的完整性的方式提供改进。根据有利实施例,针对将要装载到飞行器上的软件部件产生散列值和数字指紋。这些散列值和数字指纹被存储在软件完整性数据结构中。可将该软件完整性数据结构独立于其他软件部件装载到飞行器上。在使用该软件完整性数据结构验证其他软件部件之前,对其进行验证和保护。可使用行业中已知的方法来验证和保护该软件完整性数据结构,诸如但不限于安全网络、安全存储、PKI或软件完整性数据结构的散列值对已知可靠值的验证。然后,在飞行器电子系统中的软件部件上执行操作之前,可使用散列值和数字指纹来验证飞行器上的软件部件。在一个实施例中,可通过将要运行该软件的飞行器的电子系统来验证软件部件。在另一有利实施例中,可以在将软件部件传送至现场可更换单元之前由软件验证器验证软件部件。现在參考图1,示出根据有利实施例的用于管理地面和飞行器上的软件部件的软件部件管理环境的方框图。在该示例中,软件部件管理环境101中的若干软件供应商100供应软件部件102。若干软件供应商100可包括研发软件部件102或以其他方式提供软件部件102的任何实体。例如但不限于,若干软件供应商100可包括飞行器制造商、诸如航空公司或军事组织的飞行器运营商或第三方软件开发商。软件部件102可包括将在飞行器104上使用的任何软件应用程序或数据。软件部件管理环境101中的飞行器维护实体106在飞行器104上装载若干软件供应商100提供的软件部件102以在飞行器104上使用。飞行器维护实体106可以是负责在飞行器104上装载软件部件102的任何实体。例如,飞行器维护实体106可包括飞行器制造商108或飞行器运营商110。飞行器运营商110可以是(但不限干)运行飞行器104的航空公司、军事组织或任何私人或政府组织。飞行器维护实体106可以是或者可以不是飞行器104的拥有者。飞行器维护实体106可包括代表飞行器104拥有者在飞行器104上装载软件部件102的实体。在任何情况下,都假设飞行器维护实体106有权在飞行器104上装载软件部件102。飞行器维护实体106可以依照将软件部件102装载到飞行器104上的指定程序,从而了解飞行器104的当前配置,包括当前装载到飞行器104上的所有软件部件102。飞行器104可以是商务或个人乘客或货运飞机或军用或其他政府飞机。软件部件102可以由飞行器维护实体106分配给飞行器104。例如,软件部件102可以装载到飞行器104上供飞行器104上的电子系统112使用。例如,电子系统112可包括现场可更换单元。电子系统112在软件部件102上执行的操作114或电子系统112使用软件部件102可能影响飞行器104的性能或安全。因此,期望确定飞行器104上的软件部件102是否正确。确定将要在飞行器104上使用的软件部件102是否正确且未受破坏可称为验证软件部件102。如果不能证实软件部件102的完整性是正确的,则电子系统112不应对飞行器104上的软件部件102执行操作114。验证软件部件102的完整性可包括确定当前装载到飞行器104上的软件部件102是否与若干软件供应商100生产的软件部件102相同。飞行器104上的软件部件可能被破坏或以其他方式被改变。例如,在从若干软件供应商100至飞行器维护实体106至飞行器104的软件部件分配过程期间,以及该过程期间软件部件102在各个位置的储存期间,软件部件102可能受到破坏。对软件部件102的这种改变可能是偶然的或恶意的。根据有利实施例,可以在飞行器104上执行软件完整性验证函数116。软件完整性验证函数116可用于确定在软件部件102上执行操作114之前飞行器104上的软件部件102是否正确。软件完整性验证函数116可用于周期性地验证飞行器104上装载的软件部件 102。根据有利实施例,软件完整性验证函数116使用软件完整性数据结构118中收集的散列值以及其他属性来验证飞行器104上的软件部件102。软件完整性数据结构118也可称为散列文件或主散列文件。软件完整性数据结构118可由飞行器维护实体106产生,并且可以由飞行器维护实体106装载到飞行器104上。产生软件完整性数据结构118的飞行器维护实体106可以与在飞行器104上装载软件部件102的飞行器维护实体106相同或不同。随着时间的过去,可将某些软件部件102从飞行器104移除,并且可将新的软件部件102装载到飞行器104上。这些行为改变飞行器104的配置。装载到飞行器104上的新的软件部件102将需要改变软件完整性数据结构118,改变后的完整性数据结构118用于验证飞行器104上的软件部件102。对软件完整性数据结构118的改变可通过产生反映用于飞行器104的模型的所有现有软件部件的完全新的软件完整性数据结构118而做出。可替换地,可以将用于反映新的软件部件的软件完整性数据结构118的必要改变作为对现有软件完整性数据结构118的更新而提供。对软件完整性数据结构118的更新可以由飞行器维护实体106产生。对软件完整性数据结构118的更新可以被装载到飞行器104上以更新飞行器104上的软件完整性数据结构118,而不需要重新产生和重新装载整个软件完整性数据结构118。现在參考图2,其中描述根据有利实施例的用于确定装载到飞行器上的软件部件是否正确的系统的方框图。在该示例中,飞行器200是图I中的飞行器104的一种实施的示例。飞行器200是有利实施例可在其中实施的交通工具202的示例。交通工具202可以是
8其他类型的航空航天交通工具,诸如太空船或能够穿行空气、空间或两者的任何其他交通工具。交通工具202也可以是地面交通工具或水上交通工具,诸如火车、水面舰艇或潜艇。交通工具202是其中可实施有利实施例的一种类型的移动平台204的示例。飞行器200可包括飞行器电子系统206。飞行器电子系统206可包括以任何适当的网络结构连接在一起的各种硬件装置或系统。飞行器电子系统206可包括现场可更换单元210。例如(但不限干),飞行器电子系统206可包括具有处理器的系统,所述处理器使采用软件部件212形式的软件运行。软件部件212可以由若干软件供应商214研发或以其他方式提供。来自若干软件供应商214的软件部件212可以由飞行器维护实体216装载到飞行器200上。在该示例中,若干软件供应商214是图I中的若干软件供应商100的示例,而飞行器维护实体216是图I中的飞行器维护实体106的示例。飞行器维护实体216也可产生软件完整性数据结构220并将其装载在飞行器200上。根据有利实施例,软件完整性数据结构220用于验证飞行器200上的其他软件部件212。因此,软件完整性数据结构220可以装载到飞行器200上并以维持软件完整性数据结构220安全的方式保持在飞行器200中。例如,可以以其他飞行器软件部件212的方式将软件完整性数据结构220装载到飞行器200上,以保持飞行器200的适当配置控制。当被装载到飞行器200上时,数字签名或其他方法或系统可用于提供软件完整性数据结构220的安全,并用于防止飞行器200上的软件完整性数据结构220受到破坏。软件完整性数据结构220包括飞行器200上软件部件212的散列值222以及其他属性224。散列值222和其他属性224由飞行器维护实体216或一些其他实体在软件部件212被装载到飞行器200之前自软件部件212产生。散列值222可包括使用任何适当的密码学或其他适当散列函数从软件部件212产生的数字或其他数值。例如(但不限干),SHA-256散列函数或其他散列函数可用于产生软件部件212的散列值222。SHA-256散列函数对于任何给定软件部件产生256位散列值。其他属性224可包括标识软件部件212的各种数字式的字母数字值或其他值。其他属性224可与软件完整性数据结构220关联,具有的对应散列值222用于对应的软件部件212。其他属性224可包括用于每个软件部件212的一个或更多指紋。可以使用指纹识别算法或指纹函数自软件部件212产生这些指紋。用于产生其他属性224的算法或函数优选与用于产生散列值222的散列函数不同。软件验证器226可使用来自于软件完整性数据结构220的散列值222和其他属性224验证飞行器200上的软件部件212。在该示例中,软件验证器226是用于执行图I的软件完整性验证函数116的装置的示例。软件验证器226可以在飞行器电子系统206中使用硬件或结合软件运行的硬件实施,从而实现本文描述的软件验证器226的功能。软件验证器226可包括计算器228和比较器230。计算器228被软件验证器226用于确定飞行器200上的软件部件212的散列值。计算器228确定的散列值可称为第一散列值。计算器228确定飞行器200上的软件部件212的散列值采用的散列函数与用于产生软件完整性数据结构220中的散列值222的散列函数相同。软件完整性数据结构220中的散列值222可以称为第二散列值。
9
计算器228也可被软件验证器226用于确定飞行器200上的软件部件212的其他属性。计算器228确定的其他属性可称为第一属性。计算器228确定飞行器200上的软件部件212的其他属性使用的算法或函数与用于产生软件完整性数据结构220中的其他属性224的算法或函数相同。软件完整性数据结构220中的其他属性224可称为第二属性。比较器230被软件验证器226用于比较计算器228产生的散列值和软件完整性数据结构220中相应软件部件212的散列值222。比较器230也可被软件验证器226用于比较计算器228产生的其他属性和软件完整性数据结构220中相应软件部件212的其他属性224。如果计算器228确定的飞行器200上的其中一个软件部件212的散列值不匹配来自软件完整性数据结构220的该软件部件的散列值,则未验证该软件部件。类似地,如果计算器228确定的飞行器200上的其中一个软件部件212的其他属性不匹配来自软件完整性数据结构220的该软件部件的其他属性224,则未验证该软件部件。在任ー情况下,软件验证器226都可向飞行器电子系统206提供该软件部件未验证的指示。在这种情形下,飞行器电子系统206可以不对该软件部件执行操作。当软件验证器226确定软件部件未验证吋,可通知飞行器200的机载或场外操作人员,从而采取适当行动。如果比较器230确定计算器228确定的飞行器200上的软件部件212之一的散列值匹配来自软件完整性数据结构220的该软件部件的散列值,并且计算器228确定的飞行器200上的软件部件212之一的其他属性匹配来自软件完整性数据结构220的该软件部件的其他属性224,则该软件部件得到验证。在这种情形下,软件验证器226可向飞行器电子系统206提供该软件部件被验证的指示,并且飞行器电子系统206可以对验证的软件部件执行期望的操作。飞行器200上的软件部件212与用于产生散列值222和其他属性224的软件部件的任何差异都将导致计算器228确定软件部件212的散列值和其他属性,其不同于软件完整性数据结构220中的散列值222和其他属性224。这些差异可能是未经授权的源提供或装载的软件部件212的结果,或者是飞行器200上软件部件212的完整性受到损害所致。在任何情况下,比较器230将检测这些差异,从而可以采取适当行动。例如,这些行动可包括但不限干,不对飞行器200上的该软件部件212执行操作,以及通知飞行器200的运营商飞行器200上的该软件部件212不正确。随着时间的过去,用于产生软件完整性数据结构220中的散列值222的散列函数唯一识别软件部件212的特定位图的能力可能减弱。为验证软件部件212而要求计算器228确定的散列值和其他属性两者都匹配软件完整性数据结构220中散列值222和其他属性224提供了对验证的更大信心,并且延长了软件完整性数据结构220的有用寿命。图I和图2中的图示并非暗示对可实施有利实施例的方式的物理或结构限制。可使用除图示组件外和/或替代图示组件的其他组件。在ー些有利实施例中,一些组件可能是不必要的。同样地,呈现的方框是为了图示ー些功能组件。当在有利实施例中实施时,这些方框中的一个或更多可以被组合和/或分隔成不同的块。例如,可以对飞行器200中的ー个以上软件验证器226同时实施操作。此外,可在飞行器200中的一个或更多位置实施软件验证器226执行的功能。在一个示例中,可在运行软件部件212的ー个或更多飞行器电子系统206中实施软件验证器226。作为另ー个示
10例,软件验证器226可以实施为独立的软件完整性验证功能用于验证在若干飞行器电子系统206上使用的软件部件212。在这种情形下,可以在将软件部件212装载到飞行器电子系统206之前或飞行器电子系统206在软件部件212上执行操作之前执行软件验证器226执行的功能,以验证软件部件212。作为另ー个示例,可以在飞行器电子系统206中的不同位置执行软件验证器226执行的功能。例如,计算器228执行的功能可以由装载将被验证的软件部件212的飞行器电子系统206执行。在该情况下,可将计算器228确定的散列值和其他属性发送至位于飞行器200中的另一位置的比较器230。然后,比较器230可将指示发送回飞行器电子系统206,指示比较器230针对飞行器电子系统206中装载的软件部件212执行的比较結果。现在參考图3,根据有利实施例的一种软件完整性数据结构的方框图。在该示例中,软件完整性数据结构300是图I中的软件完整性数据结构118和图2中的软件完整性数据结构220的一种实施的示例。软件完整性数据结构300包括数据结构属性302和若干软件部件记录304。数据结构属性302可包括描述软件完整性数据结构300自身的属性。例如但不限于,数据结构属性302可包括文件版本识别器306、模式版本识别器308、适用性信息310、源识别器312以及创建日期314。文件版本识别器306可以识别软件完整性数据结构300的具体版本。模式版本识别器308可以识别用于产生软件完整性数据结构300的模式的版本。例如,模式版本识别器308可以识别用于产生软件完整性数据结构300的XML模式的版本。适用性信息310可包括关于其上可使用软件完整性数据结构300的飞行器或其他交通工具的信息。例如,适用性信息310可包括识别其上可使用软件完整性数据结构300的飞行器模型或飞行器系统的信息。源识别器312可识别产生软件完整性数据结构300的实体。例如,源识别器312可包括产生软件完整性数据结构300的公司或其他实体的名称。创建日期314可指定产生软件完整性数据结构300的日期。可使用软件完整性数据结构300验证的飞行器内的每个软件部件可以由软件完整性数据结构300中软件部件记录304中相应的ー个表示。软件部件记录304中的每个可包括若干软件部件属性316。软件部件属性316可包括描述相应的软件部件记录304表示的软件部件或源自该软件部件的属性。例如但不限于,软件部件属性316可包括软件部件编号318、散列值320、文件数目322以及文件指纹数据324。软件部件编号318可包括识别由相应的软件部件记录表示的软件部件的编号。散列值320可包括针对软件部件确定的散列值。例如但不限干,散列值320可包括根据SHA-256或其他散列函数获得的散列值的十六进制表示或其他表示,SHA-256或其他散列函数将软件部件作为输入进行计算。文件数目322可指示构成该软件部件的文件的数目。文件指纹数据324可包括自软件部件获得的该软件部件的指紋。文件指纹数据324可以为每个文件提供软件部件中文件的编号。可以对每个软件部件文件使用一个或更多指纹算法或函数以自该软件部件获得文件指纹数据324。优选地,不使用散列函数从软件部件确定文件指纹数据324,散列函数诸如用于确定散列值320的散列函数。在一个示例中,文件指纹数据324可包括文件名称的表示326、文件长度的表示328以及文件中的ニ进制位I值的数目330。例如,文件名称的表示326可包括软件部件文件名称的ASCII字符表示或其他表示。文件长度的表示328可包含字节形式的软件部件文件长度的ASCII整数表示或其他表示。文件中的ニ进制位I值的数目330可包括包含在软件部件文件中的ニ进制位I值的数目的ASCII整数表示或其他表示。文件指纹数据324可以使字符串值,其由文件名称的表示326、文件长度的表示328以及文件中的ニ进制位I值的数目330连接形成,每项用分号或其他字符分开。根据有利实施例,指纹可以以与本文的示例描述的文件指纹数据324不同的方式确定和格式化。同样,根据有利实施例,软件完整性数据结构可包括相对本文中的示例描述的数据结构属性或软件部件属性更多、更少或不同的数据结构属性或软件部件属性。现在參考图4,其描述了根据有利实施例的显示从软件供应商到飞行器的软件部件流以及验证用在飞行器上的软件部件的信息流的方框图。在该示例中,软件供应商400和飞行器制造商是图I中的若干软件供应商100和图2中的若干软件供应商214的示例。在该示例中,飞行器运营商404为图I中的飞行器维护实体106和图2中的飞行器维护实体216的示例。在该示例中,飞行器406是图I中的飞行器104和图2中的飞行器200的示例。软件供应商400研发或以其他方式向飞行器制造商402提供供应商软件408。软件供应商400可以是向飞行器制造商402提供供应商软件408的若干第三方或其他软件供
应商之一。飞行器制造商402可研发其自己的制造商软件410。飞行器制造商402可将其自身的制造商软件410和来自软件供应商400的供应商软件408组合,以向飞行器运营商404提供软件部件412。生产中,可由飞行器制造商402将软件部件412装载到飞行器上。飞行器制造商402也可以根据软件部件412产生软件完整性数据结构416。飞行器制造商402可以向飞行器运营商404提供软件部件412和软件完整性数据结构416。飞行器运营商404可以将软件完整性数据结构416装载到飞行器406上,并且可以根据需要在飞行器406上装载或重新装载软件部件412。软件部件412可以存储在飞行器406上的软件存储器418中。软件完整性数据结构416可被存储在飞行器406上的软件完整性数据结构存储器420中。在该示例中,由飞行器406上的电子系统422执行软件部件的验证。在此情形下,可以自软件存储器418向电子系统422提供软件部件,并且可以自软件完整性数据结构存储器420向电子系统422提供參考散列值和其他属性。然后,电子系统422可以根据软件部件确定散列值和其他属性,并且将确定的散列值和其他属性与来自软件完整性数据结构416的參考散列值和其他属性进行比较以通过上述方式验证该软件部件。如果该软件部件被电子系统422验证,则电子系统422可以在该软件部件上执行操作。现在參考图5,其示出根据有利实施例的显示用于验证飞行器上的软件部件的另一信息流的方框图。在该示例中,飞行器500是图4中的飞行器406的另ー示例。图5示出飞行器500上用于验证飞行器上的软件部件的过程的信息流,该过程是图4中验证软件部件的过程的可替代方式。软件部件502可以存储在飞行器500上的软件存储器504中。软件完整性数据结构506可以存储在飞行器500上的软件完整性数据结构存储器508中。
12
在该示例中,由独立于将在其上使用软件部件的电子系统512的软件验证器510执行软件部件的验证。在该情况下,可以将软件存储器504的软件部件发送给软件验证器510,并且可以将软件完整性数据结构存储器508中的參考散列值和其他属性发送至软件验证器510。然后,软件验证器510可以根据软件部件确定散列值和其他属性。软件验证器510还可以将确定的散列值及其他属性与来自软件完整性数据结构506的參考散列值和其他属性进行比较。进行这种比较是为了通过上述方式验证软件部件。如果软件部件由软件验证器510验证,则可将软件部件提供给飞行器500上的电子系统512。然后,电子系统512可以对验证过的软件部件执行操作。现在參考图6,其示出根据有利实施例用于验证飞行器上的软件部件的另一信息流的方框图。在该示例中,飞行器600是图4中的飞行器406的另ー示例。图6示出飞行器600上用于验证飞行器上的软件部件的过程的信息流,此过程是用于验证图4和图5中的软件部件的过程的一种可替代方式。软件部件602可存储在飞行器600上的软件存储器604中。软件完整性数据结构606可存储在飞行器600上的软件完整性数据结构存储器608中。在该示例中,软件部件的验证由软件验证器610和电子系统612执行。在该情况下,可以将来自软件存储器604的软件部件发送至软件验证器610,并且可将来自软件完整性数据结构存储器608的參考散列值和其他属性发送至软件验证器610。然后,软件验证器610可将软件部件装载到电子系统612上。电子系统612可根据软件部件确定散列值和其他属性。然后,可将电子系统612确定的散列值和其他属性发送回软件验证器610。然后,软件验证器610可以将电子系统612确定的散列值和其他属性与来自软件完整性数据结构606的散列值和其他属性进行比较,以通过上述方式验证软件部件。当软件部件被软件验证器610验证吋,软件验证器610可向电子系统612发送指示。然后,电子系统612可以在验证的软件部件上执行操作。现在參考图7,其示出根据有利实施例从飞行器运营商到飞行器的软件部件流的方框图。在该示例中,飞行器运营商700是图4中的飞行器运营商404的示例,并且飞行器702是图4中的飞行器406的示例。为飞行器运营商700提供的软件部件704和软件完整性数据结构706来自飞行器制造商。在该示例中,飞行器运营商700也可研发或以其他方式提供其自身的飞行器运营商软件708。飞行器运营商700可将软件部件704,包括飞行器运营商软件708,装载到飞行器702上。在该说明性示例中,软件部件704存储在飞行器702上的软件存储器710中。在此示出的示例中,飞行器运营商700也自飞行器运营商软件708产生其自身的飞行器运营商软件完整性数据结构712。飞行器运营商700可以将软件完整性数据结构706和飞行器运营商软件完整性数据结构712装载到飞行器702上,并且存储在飞行器702上的软件完整性数据结构存储器714中。飞行器702上的软件验证函数716可以利用以上參照图4、图5或图6描述的软件部件验证程序中的ー种使用存储在软件存储器710中的软件部件704和存储在软件完整性数据结构存储器714中的散列值和其他属性来验证软件部件704。现在參考图8,其示出根据有利实施例产生和使用软件完整性数据结构的过程的
13流程图。例如图8中所示的过程可以在图I的软件部件管理环境101中实施。该过程始于接收软件部件(操作802)。例如,操作802可包括从软件供应商接收飞行器软件部件。然后自该软件部件确定散列值和指纹(操作804)。操作804可以包括使用适当的散列函数或其他算法自软件部件确定散列值和指紋。然后,将多个软件部件的散列值和指纹组合到软件完整性数据结构中(操作806)。该软件完整性数据结构可以被验证并装载到交通工具上,诸如飞行器(操作808)。在软件完整性数据结构用于验证其他软件部件之前,验证软件完整性数据结构本身是令人期望的。否则,软件完整性数据结构不被信任以验证其他软件部件。也可将软件部件装载到交通工具上(操作810)。在交通工具上使用软件部件之前,可以在交通工具上使用软件完整性数据结构来验证该软件部件(操作812),然后过程終止。现在參考图9,其示出根据有利实施例的验证飞行器上的软件部件的过程的流程图。例如,图9的过程可以在图2中的软件验证器226中实施。图9的过程是可用于实施图8中的操作812的过程的ー个示例。该过程始于计算存储在飞行器上的软件部件的第一散列值和第一指纹(操作902)。在软件完整性数据结构中识别软件部件的第二散列值和第二指纹(操作904)。确定第一散列值是否匹配第二散列值以及第一指纹是否匹配第二指纹(操作906)。如果确定散列值和指纹两者都匹配,则可以在飞行器上使用该软件部件(操作908),然后该过程终止。如果确定第一散列值不匹配第二散列值或者第一指纹不匹配第二指紋,则不可以在飞行器上使用该软件部件(操作910)。如果未验证该软件部件,则可通知飞行器运营商(操作912),然后该过程终止。所示的不同实施例中的流程图和方框示了有利实施例中各种设备和方法的ー些可能实施的结构、功能性和操作。在这点上,流程图或方框图中的每个方块可代表操作或步骤的一部分和/或模块、部分、功能。例如,这些方块中的一个或更多个可以实现为程序代码、在硬件中实现或实现为程序代码与硬件的组合。当在硬件中实施时,该硬件例如可采取集成电路的形式,集成电路被制造和配置为执行流程图或方框图中的一个或更多操作。在有利实施例的一些可替换实施中,块中注释的功能(一个或更多)可以不以图中所示的顺序发生。例如,在一些情况下,可基本同时执行连续示出的两个块,或者有时可能以相反的顺序执行这些块,这取决于涉及的功能性。同样,除了流程图或方框图中示出的块之外,可添加其他块。一个或更多有利实施例提供验证软件供应商分配到飞行器的软件或其他数据的完整性的功能。根据有利实施例,可以使用或不使用飞行器-地面网络连接执行飞行器上的软件验证。根据有利实施例的软件验证不需要复杂的公开密钥基础设施组件,诸如认证机构。有利实施例使用散列值进行软件验证。散列值不会期满。因此,有利实施例消除了依赖公开密钥基础设施组件确保软件安全的系统中的证书管理和证书期满的限制。因此,有利实施例提供假设软件完整性数据结构源可信情况下的对飞行器上的软件或其他数据的完整性验证。有利实施例还以相对使用公开密钥基础设施软件的当前方法以更低的风险和更低的成本被安全认证的方式提供对飞行器上的软件部件的验证。现在參考图10,其示出根据有利实施例的数据处理系统的图示。在该示例中,数据处理系统1000是图2中的飞行器电子系统206的示例。例如,数据处理系统1000是图2中的现场可更换单元210的一种实施的示例。在该说明性示例中,数据处理系统1000包括通信结构1002。通信结构1002提供处理器单元1004、存储器1006、永久存储器1008、通信单元1010、输入/输出(I/O)单元1012以及显示器1014之间的通信。处理器単元1004用于执行可载入存储器1006的软件的指令。取决于具体的实施,处理器単元1004可以是若干处理器、多处理器核或ー些其他类型的处理器。本文使用的若干/多个涉及一种事项/事物,指代一个或更多事项/事物。此外,可使用若干异类处理器系统实施处理器単元1004,其中主处理器与ニ级处理器存在于单个芯片上。作为另ー说明性示例,处理器単元1004可以是对称多处理器系统,其包含多个相同类型的处理器。存储器1006和永久存储器1008为存储装置1016的示例。存储装置是能够存储信息的任意件硬件,信息例如但不限于暂时性和/或永久性方式的数据、功能形式的程序代码和/或其他适当信息。在这些示例中,存储装置1016也可称为计算机可读存储装置。在这些示例中,存储器1006可以是例如随机存取存储器或任何其他适当的易失性或非易失性存储装置。取决于具体的实施,永久存储器1008可采取各种形式。例如,永久存储器1008可包含一个或更多组件或装置。例如,永久存储器1008可以是硬盘驱动器、闪存、可写光盘、可写磁带或以上的某种组合。永久存储器1008使用的介质也可以是可移动的。例如,可移动硬盘驱动器可用于永久存储器1008。在这些示例中,通信単元1010提供与其他数据处理系统或装置的通信。在这些示例中,通信単元1010是网络接ロ卡。通过使用物理通信链接和无线通信链接中的一种或两者,通信単元1010可提供通信。输入/输出单元1012允许使用可被连接至数据处理系统1000的其他装置进行数据的输入和输出。例如,输入/输出单元1012可提供连接用于使用者通过键盘、鼠标和/或ー些其他适当的输入装置进行输入。此外,输入/输出单元1012可向打印机发送输出。显示器1014提供向使用者显示信息的机械装置。用于操作系统、应用程序和/或程序的指令可位于存储装置1016中,其通过通信结构1002与处理器单元1004通信。在这些说明性示例中,指令在永久存储器1008上为功能形式。这些指令可以加载到存储器1006中,以供处理器单元1004执行。不同实施例的过程可以由处理器单元1004利用可能位于存储器如存储器1006中的计算机可执行指令执行。这些指令被称为程序执行、程序代码、计算机可用程序代码或计算机可读程序代码,其可由处理器単元1004中的处理器读取和执行。不同实施例中的程序代码可包含在不同的物理或计算机可读存储介质上,例如存储器1006或永久存储器1008。程序代码1018以功能形式位于计算机可读介质1020上,其选择性地是可移动的,并且可以被加载或传送至数据处理系统1000由处理器単元1004执行。在这些示例中,程序代码1018和计算机可读介质1020形成计算机程序产品1022。在一个示例中,计算机可读介质1020可以是计算机可读存储介质1024或计算机可读信号介质1026。计算机可读存储介质1024可包括例如插入或置于是永久存储器1008的一部分的驱动器或其他装置中以传输到是永久存储器1008的一部分的存储装置(诸如硬盘驱动器)的光盘或磁盘。计算机可读存储介质1024也可采用永久存储器的形式,例如硬盘驱动器、拇指驱动器或闪存,其被连接至数据处理系统1000。在一些实例中,计算机可读存储介质1024相对数据处理系统1000可能是不可移动的。在这些示例中,计算机可读存储介质1024是用于存储程序代码1018的物理或有形存储装置,而非传播或传送程序代码1018的介质。计算机可读存储介质1024也被称为计算机可读有形存储装置或计算机可读物理存储装置。换句话说,计算机可读存储介质1024是可触式介质。可替换地,可使用计算机可读信号介质1026将程序代码1018传送至数据处理系统1000。计算机可读信号介质1026可以是例如被传播的包含程序代码1018的数据信号。例如,计算机可读信号介质1026可以是电磁信号、光学信号和/或任何其他适当类型的信号。可通过通信链路传送这些信号,例如无线通信链路、光学光缆、同轴电缆、电线和/或任何其他适当类型的通信链路。换句话说,在说明性示例中,通信链路和/或连接可以是物理的或无线的。在ー些有利实施例中,可以自其他装置或数据处理程序通过在数据处理系统1000中使用的计算机可读信号介质1026经网络将程序代码1018下载至永久存储器1008。例如,可通过网络自服务器将存储在服务器数据处理系统中的计算机可读存储介质中的程序代码下载至数据处理系统1000。提供程序代码1018的数据处理系统可以是服务器计算机、客户计算机或能够存储和传送程序代码1018的一些其他装置。针对数据处理系统1000示出的不同组件并非要提供对实施不同实施例的方式的结构限制。不同的有利实施例可以在以下数据处理系统中实施包括除对数据处理系统1000所示的组件外或替换这些组件的组件。图10所示的其他组件可以与显示的说明性示例不同。可以使用能够运行程序代码的任何硬件装置或系统实施不同实施例。作为ー个示例,数据处理系统可包括集成无机组件的有机组件,和/或可完全由排除人类的有机组件组成。例如,存储装置可由有机半导体组成。在另ー说明性示例中,处理器単元1004可采取硬件単元的形式,其具有用于特殊用途而制造或配置的电路。该类型的硬件可执行操作,而不需要将存储装置的程序代码加载到存储器以被配置为执行操作。例如,当处理器単元1004采用硬件単元的形式时,处理器単元1004可以是被配置为执行多种操作的电路系统、应用程序专用集成电路(ASIC)、可编程逻辑装置或一些其他适当类型的硬件。使用可编程逻辑装置,该装置被配置为执行多种操作。该装置可以随后或可以永久被为执行多种操作。可编程逻辑装置的示例包括例如可编程逻辑阵列、可编程阵列逻辑、现场可编程逻辑阵列、现场可编程门阵列以及其他适当的硬件装置。通过该类型的实施,可省略程序代码1018,因为不同实施例的过程在硬件単元中实施。在又一说明性示例中,可以使用在计算机和硬件単元中建立的处理器的组合实施处理器単元1004。处理器単元1004可具有配置为运行程序代码1018的若干硬件単元和若干处理器。对于描述的该示例,可以在若干硬件単元中实施ー些过程,而在若干处理器中实施其他过程。在另ー示例中,总线系统可用于实现通信结构1002并且可以由ー种或更多总线组成,例如系统总线或输入/输出总线。当然,总线系统可以使用任何适当类型的结构实施,其在附连于总线系统的不同组件或装置之间提供数据传送。
16
另外,通信単元1010可包括传送数据、接收数据或传送和接收数据的多个装置。通信単元1010可以是例如调制解调器或网络适配器、两个网络适配器或其某种组合。此外,存储器可以是例如存储器1006或高速缓冲存储器,例如存在于接口和存储器控制中心中的存储器,接口和存储器控制中心可存在于通信结构1002中。呈现不同有利实施例的说明是为了图解和说明的目的而非要穷举或限制所公开形式的实施例。若干更改和变化对于本领域普通技术人员将是显而易见的。此外,与其他有利实施例相比,不同的有利实施例可提供不同的优点。为了最好地解释实施例的原理、实际应用,并且为了使本领域其他普通技术人员能够理解本公开中具有各种更改的各种实施例适合于期望的特殊用途,从而选择并描述了选择的ー个实施例或多个实施例。可替换实施例可保护如下Al. 一种验证飞行器(104)的软件部件(102)的方法,所述方法包括接收若干软件部件(102);确定所述若干软件部件(102)的每个的散列值以形成多个散列值;以及将所述若干散列值组合到软件完整性数据结构(118)中以在确定是否对所述飞行器(104)上的所述若干软件部件(102)执行操作中使用。A2.根据段落Al所述的方法,还包括将所述软件完整性数据结构(118)装载到所述飞行器(104 )上;将所述若干软件部件(102 )装载到所述飞行器(104)上;以及在所述飞行器(104)上的所述若干软件部件(102)上执行操作前,使用来自所述软件完整性数据结构(118)的所述若干散列值验证所述飞行器(104)上的所述若干软件部件(102)。A3.根据段落Al所述的方法,还包括确定所述若干软件部件(102)的每个的指纹以形成若干指紋;以及将所述若干指纹组合到所述软件完整性数据结构(118)中。A4.根据段落Al所述的方法,其中所述软件完整性数据结构(118)包括描述所述软件完整性数据结构(118)的属性;以及若干记录,所述若干记录的每个对应所述飞行器(104)使用的软件部件并包含对应的软件部件的散列值。A5.根据段落A4所述的方法,其中所述属性包括从ー组属性中选择的属性,所述ー组属性包括所述软件完整性数据结构(118)的版本识别器;模式版本识别器,所述模式用于产生所述软件完整性数据结构(118);关于飞行器(104)适用性的信息;产生所述软件完整性数据结构(118)的实体的名称;以及产生所述软件完整性数据结构(118)的日期。A6.根据段落A4所述的方法,其中所述若干记录的每个还包括从ー组属性中选择的属性,所述ー组属性包括对应软件部件的部件编号(318);指示组成所述对应软件部件的文件数目的数字;以及所述软件部件的指紋。
权利要求
1.一种验证飞行器(104)上的软件部件(102)的方法,包括 计算所述飞行器(104)上的软件部件的第一散列值; 在所述飞行器(104)上确定所述第一散列值是否与来自存储在所述飞行器(104)上的软件完整性数据结构(118)的第二散列值匹配,所述软件完整性数据结构(118)包括未在飞行器(104)上确定、所述飞行器(104)使用的所述软件部件(102)的一个或更多散列值;以及 仅当所述第一散列值与所述第二散列值匹配吋,在所述飞行器(104)上的对所述软件部件执行操作。
2.根据权利要求I所述的方法,还包括 在所述飞行器(104)上计算所述软件部件的若干第一属性; 在所述飞行器(104)上确定所述若干第一属性是否与所述软件完整性数据结构(118)中的若干第二属性匹配;以及 仅当所述若干第一属性与所述若干第二属性匹配且所述第一散列值与所述第二散列值匹配时,对所述飞行器(104)上的软件部件执行操作。
3.根据权利要求2所述的方法,其中所述若干第二属性包括所述软件部件的指紋。
4.根据权利要求I所述的方法,其中计算所述第一散列值以及确定所述第一散列值是否与第二散列值匹配由所述飞行器(104)上的电子系统执行。
5.根据权利要求I所述的方法,其中 计算所述第一散列值包括发送所述软件部件至所述飞行器(104)上的软件验证器(226)、利用所述软件验证器(226)接收所述软件部件以及利用所述软件验证器(226)根据所述软件部件计算所述第一散列值; 确定所述第一散列值是否与所述第二散列值匹配包括识别所述软件完整性数据结构(118)中的所述软件部件的记录、自所述记录取回所述第二散列值以及利用所述软件验证器(226)比较所述第一散列值和所述第二散列值;并且 所述方法还包括由所述软件验证器(226)发送所述第一散列值是否与所述第二散列值匹配的指示。
6.根据权利要求I所述的方法,其中 计算所述第一散列值包括通过所述飞行器(104)上的电子系统计算所述第一散列值,以及将来自所述电子系统的所述第一散列值发送至所述飞行器(104)上的软件验证器(226); 确定所述第一散列值是否与所述第二散列值匹配包括由所述软件验证器(226)接收所述第一散列值、识别所述软件完整性数据结构(118)中的所述软件部件的记录、从所述记录取回所述第二散列值以及由所述软件验证器(226)比较所述第一散列值和所述第二散列值;并且 所述方法还包括由所述软件验证器(226)向所述电子系统发送所述第一散列值是否与所述第二散列值匹配的指示。
7.根据权利要求I所述的方法,其中所述软件完整性数据结构(118)包括 描述所述软件完整性数据结构(118)的属性;以及 若干记录,所述若干记录的每个对应所述飞行器(104)使用的软件部件,并且包括对应软件部件的散列值。
8.ー种装置,其包括 存储在飞行器(104)上的软件完整性数据结构(118),所述软件完整性数据结构(118)包括未在飞行器(104)上确定的所述飞行器(104)使用的软件部件(102)的散列值; 所述飞行器(104)上的计算器(228),所述计算器(228)被配置为计算所述飞行器(104)上的软件部件的第一散列值; 所述飞行器(104)上的比较器(230),所述比较器(230)被配置为确定所述第一散列值是否与来自所述软件完整性数据结构(118)的第二散列值匹配;并且 其中,所述飞行器(104)被配置为仅当所述第一散列值与所述第二散列值匹配时,对所述软件部件执行操作。
9.根据权利要求8所述的装置,其中 所述计算器(228)被配置为计算所述软件部件的若干第一属性; 所述比较器(230)被配置为确定所述若干第一属性是否与所述软件完整性数据结构(118)中的若干第二属性匹配;以及 所述飞行器(104)被配置为仅当所述若干第一属性与所述若干第二属性匹配并且所述第一散列值与所述第二散列值匹配时,对所述软件部件执行操作。
10.根据权利要求9所述的装置,其中所述若干第二属性包括所述软件部件的指紋。
11.根据权利要求8所述的装置,其中所述计算器(228)和所述比较器(230)在所述飞行器(104)上的电子系统上实施,并且对所述软件部件的操作由所述飞行器(104)上的所述电子系统执行。
12.根据权利要求8所述的装置,其中 所述计算器(228)在所述飞行器(104)上的软件验证器(226)中实施,所述软件验证器(226)被配置为接收所述软件部件以及根据所述软件部件确定所述第一散列值;以及 所述比较器(230)在所述软件验证器(226)中实施,所述软件验证器(226)进ー步被配置为识别所述软件完整性数据结构(118)中所述软件部件的记录、自所述记录取回所述第ニ散列值、比较所述第一散列值和所述第二散列值以及发送所述第一散列值是否与所述第ニ散列值匹配的指示。
13.根据权利要求8所述的装置,其中 所述计算器(228)在所述飞行器(104)上的电子系统中实施,所述电子系统被配置为将所述第一散列值发送至所述飞行器(104)上的软件验证器(226); 所述比较器(230)在所述软件验证器(226)中实施,所述软件验证器(226)被配置为接收来自所述电子系统的所述第一散列值、识别所述软件完整性数据结构(118)中的所述软件部件的记录、自所述记录取回所述第二散列值、比较所述第一散列值和所述第二散列值以及发送所述第一散列值是否与所述第二散列值匹配的指示至所述电子系统;并且 电子系统(112)被进ー步配置为在所述软件部件上执行操作以响应来自所述软件验证器(226)的指示。
14.根据权利要求8所述的装置,其中所述软件完整性数据结构(118)包括 描述所述软件完整性数据结构(118)的属性;以及 若干记录,所述若干记录的每个对应所述飞行器(104)使用的软件部件并包含对应的软件部件的散列值。
全文摘要
一种验证飞行器上的软件部件的系统和方法。计算飞行器上的软件部件的第一散列值。在飞行器上做出第一散列值是否与来自存储在飞行器上的软件完整性数据结构的第二散列值匹配的确定。软件完整性数据结构包括未在飞行器上确定、飞行器使用的软件部件的散列值。基于第一散列值是否与第二散列值匹配提供验证状态。仅在第一散列值与第二散列值匹配时,在飞行器上的软件部件上执行操作。
文档编号G06F21/12GK102915412SQ20121027613
公开日2013年2月6日 申请日期2012年8月3日 优先权日2011年8月4日
发明者J·D·劳森, T·W·古尔德, C·D·劳亚尔迪 申请人:波音公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1