CN110945476A - 高保障网络网关生成器 - Google Patents
高保障网络网关生成器 Download PDFInfo
- Publication number
- CN110945476A CN110945476A CN201880048137.0A CN201880048137A CN110945476A CN 110945476 A CN110945476 A CN 110945476A CN 201880048137 A CN201880048137 A CN 201880048137A CN 110945476 A CN110945476 A CN 110945476A
- Authority
- CN
- China
- Prior art keywords
- code
- generator
- communication
- network
- network gateway
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0209—Architectural arrangements, e.g. perimeter networks or demilitarized zones
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/174—Form filling; Merging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Computer Interaction (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
描述了高保障网络网关生成器,其在计算机可读介质上生成网络网关代码并对网络网关代码进行编码。在操作中,网络网关生成器接收输入构件,这些输入构件被转换成对应格式,作为转换数据。转换数据被分配给OS代码生成器、粘合代码生成器和通信代码生成器。然后,OS代码生成器基于转换数据生成OS代码。通信代码生成器继续基于转换数据生成反序列化代码和过滤代码。此外,粘合代码生成器基于OS代码和转换数据生成粘合代码。然后,通过将粘合代码、反序列化代码和过滤代码进行组合来生成可执行网络网关代码。最终,然后在计算机可读介质上对可执行网络网关代码进行编码。
Description
政府权力
本发明是在美国政府合同号FA8750-12-C-0281 HACMS-TACMS的政府支持下完成的。政府在本发明中具有特定权利。
相关申请的交叉引用
本申请要求于2017年9月13日提交的美国非临时专利申请US 62/557,975的权益,其全部内容通过引用并入本文中。
背景技术
(1)技术领域
本发明涉及网络网关,并且更具体地涉及高保障网络网关生成器。
(2)相关技术的描述
本公开旨在网络网关生成器。这种网关在平台(例如,车辆ECU、机器人的内部计算机栈等)与网络(例如,IP网络、CAN网络等)之间调控业务。为了构建要求安全和可靠的系统的网络网关的当前实践在很大程度上利用了软件和系统工程最佳实践(参见所并入的参考文献列表,参考文献4和6)以及渗透测试(参见参考文献8)的组合。虽然所有这三种方法都很有价值,但是它们无法提供由高保障方法所提供的那种数学保证。工程最佳实践有助于减少潜在漏洞的数量,而渗透测试则有助于识别现有漏洞。
尽管现有技术确实提供了一定的可靠性,但是现有技术不能够保证一定(100%)不会出现某些漏洞。现有技术由于以下计算方面的原因不能提供这种保证:测试依赖于检查可能系统状态和行为总数的(较小)子集,并且即使对于较小的系统,也存在足够多潜在状态和行为,使得通过测试不能够实现完全涵盖。同样,最佳实践仅能在足够复杂的系统上消除错误。
因此,持续需要用于实现以高保障的方式在平台与网络之间调控业务的高保障网络网关生成器的方法。
发明内容
本公开提供了一种高保障网络网关生成器,其在计算机可读介质上生成网络网关代码并对网络网关代码进行编码。网络网关生成器包括一个或更多个处理器和存储器。存储器是在其上编码有可执行指令的非暂时性计算机可读介质,使得在执行该指令时,一个或更多个处理器执行多个操作。在操作中,网络网关生成器接收输入构件(artifact),这些输入构件被转换(translate)成对应格式,作为转换数据。该转换数据被分配给OS代码生成器、粘合代码生成器和通信代码生成器。然后,OS代码生成器基于转换数据生成OS代码。还获取系统架构,系统架构包括在可信子系统与不可信子系统之间的通信信道。通信代码生成器继续基于转换数据生成反序列化代码和过滤代码。此外,粘合代码生成器基于OS代码和转换数据生成粘合代码。然后,通过将粘合代码、反序列化代码和过滤代码进行组合来生成可执行网络网关代码。此外,在合适时,生成证明构件以用于通信,证明构件提供关于不可信子系统干扰可信子系统的不可能性、以及可利用故障在消息序列化和反序列化代码中的不可能性的数学保证。可执行网络网关代码被编码在计算机可读介质上。然后,可以通过在网络服务器上运行可执行网络网关代码,在平台与网络之间形成网关。最终,通过网关促进了平台与网络之间的通信业务,使得经由网络能够访问的不可信子系统不可能更改或修改除指定通信信道的内容外的可信子系统的内容,并且使得在通信信道中不存在可利用故障(例如,缓冲区溢出、解析格式错误输入导致的未限定行为)。
在另一方面,转换数据包括系统架构代码、粘合代码相关构件和消息规范。
在又一方面,通信代码生成器还生成形式规范、证明和相关代码。
最后,本发明还包括计算机程序产品和计算机实现方法。该计算机程序产品包括存储在非暂时性计算机可读介质上的计算机可读指令,该计算机可读指令能够由具有一个或更多个处理器的计算机执行,使得在执行这些指令时,该一个或更多个处理器执行本文列出的操作。另选地,计算机实现方法包括致使计算机执行这种指令并执行所得到的操作的动作。
附图说明
从以下参照附图对本发明多个方面的详细描述,将容易理解本发明的目的、特征和优点,其中:
图1是描绘根据本发明的多个实施方式的系统的组件的框图。
图2是具体实现本发明一个方面的计算机程序产品的例示;
图3是具体实现根据本发明的多个实施方式的处理的流程图;以及
图4是利用Trusted Build和CAmkES工具的过程的例示。
具体实施方式
本发明涉及网络网关,并且更具体地涉及高保障网络网关生成器。呈现以下描述以使得本领域的普通技术人员能够作出和使用本发明,并将本发明并入到特定应用的上下文中。对于本领域技术人员而言,多种修改以及在不同应用中的多种使用将是显而易见的,并且本文中限定的一般原理可以应用于广泛的方面。因此,本发明不旨在限于所呈现的方面,而是应根据与本文所公开的原理和新颖特征一致的最广范围。
在下面的详细描述中,阐述了许多具体细节以便提供对本发明的更透彻的理解。然而,对于本领域技术人员显而易见的是,可以在不必限于这些特定细节的情况下实践本发明。在其它实例中,以框图的形式而不是详细地示出了众所周知的结构和装置,以便避免模糊本发明。
读者的注意力被引导到与本说明书同时提交并随本说明书公开以供公众检查的所有论文和文献,并且所有这种论文和文献的内容均通过引用并入本文。除非另有明确说明,否则本说明书中公开的所有特征(包括任何所附权利要求、摘要和附图)可以由具有相同、等效或类似目的的另选特征代替。因此,除非另有明确说明,所公开的各个特征仅是通用系列等效或类似特征的一个示例。
此外,权利要求中未明确说明用于执行特定功能的“装置”或用于执行特定功能的“步骤”的任何要素,均不得解释成在35U.S.C第112条第6款中规定的“装置”或“步骤”条款。尤其是,此处权利要求书中“的步骤”或“的动作”的使用不旨在援引35U.S.C第112条第6款的规定。
在详细描述本发明之前,首先提供所引用的参考书目的列表。接下来,提供对本发明的多个主要方面的描述。随后,介绍为读者提供了对本发明的一般理解。最后,提供本发明的多个实施方式的具体细节,以给出对具体方面的理解。
(1)所并入的参考参考文献书目的列表
贯穿本申请引用了以下参考书目。为了清楚和方便起见,参考书目在此被列出为读者的中心资源。以下参考书目通过引用并入本文,如同在本文中充分阐述一样。通过引用如下所示的对应参考文献书目编号在本申请中引用这些参考书目:
1.Chlipala,A.(2013).The Bedrock Structured ProgrammingSystem.Proceedings of the 18th ACM SIGPLAN International Conference onFunctional Programming(pp.391-402).New Yrok:ACM.
2.Feiler,P.H.,&Gluch,D.P.(2012).Model-Based Engineering withAADL.Indianapolis,IN:Addison-Wesley Professional.
3.Kuz,I.,Liu,Y.,Gorton,L,&Heiser,G.(2007).CAmkES:A component modelfor secure microkernel-based embedded systems.Journal of Systems andSoftware,pp.687-699.
4.NASA.(2007).Systems Engineering Handbook.Washington,D.C.:NASACenter for AeroSpace Information.
5.Ni,Z.,&Shao,Z.(2006).Certified assembly programming with embeddedcode pointers.Proc.POPL(pp.320-333).New York:ACM.
6.SEICERT.(2016).SEICERTC Coding Standard.Pittsbnrgh,PA:CarnegieMellon University.
7.Sewell,T.,Myreen,M.,&Klein,G.(2013).Translation Validation for aVerified O S Kernel.Proceedings of the 34th ACM SIGPLAN Conference onProgramming Language Design and Implementation(pp.471-482).New York:ACM.
8.Wyk,K.v.(2013).Adapting Penetration Testing for SoftwareDevelopment Purposes(2013 revision ed.).Pittsburgh,PA:Carnegie MellonUniversity.
(2)主要方面
本发明的多个实施方式包括三个“主要”方面。第一主要方面是用于生成高保障网络网关的系统。该系统通常是计算机系统操作软件的形式或是“硬编码”指令集的形式。该系统可以被结合到提供不同功能的很多种装置中。第二主要方面是通常为使用数据处理系统(计算机)运行的软件形式的方法。第三主要方面是计算机程序产品。该计算机程序产品一般代表存储在非暂时性计算机可读介质上的计算机可读指令,非暂时性计算机可读介质例如是诸如光盘(CD)或数字通用光盘(DVD)的光学存储装置,或者诸如软盘或磁带的磁性存储装置。计算机可读介质的其它非限制性示例包括硬盘、只读存储器(ROM)和闪存型存储器。将在下面更详细地描述这些方面。
在图1中提供了描绘本发明的系统(即,计算机系统100)的示例的框图。计算机系统100被配置成执行与程序或算法相关联的计算、处理、操作和/或功能。在一个方面,本文中讨论的某些处理和步骤被实现成驻留在计算机可读存储器单元内并且由计算机系统100的一个或更多个处理器执行的一系列指令(例如,软件程序)。当被执行时,该指令致使计算机系统100执行例如本文所描述的特定动作并呈现特定行为。
计算机系统100可以包括被配置成传递信息的地址/数据总线102。另外,一个或更多个数据处理单元(诸如一个或更多个处理器104)与地址/数据总线102联接。处理器104被配置成处理信息和指令。在一方面,处理器104是微处理器。另选地,处理器104可以是不同类型的处理器,诸如并行处理器、专用集成电路(ASIC)、可编程逻辑阵列(PLA)、复杂可编程逻辑装置(CPLD)或现场可编程门阵列(FPGA)。
计算机系统100被配置成利用一个或更多个数据存储单元。计算机系统100可以包括与地址/数据总线102联接的易失性存储器单元106(例如,随机存取存储器(“RAM”)、静态RAM、动态RAM等),其中,易失性存储器单元106被配置成存储用于处理器104的信息和指令。计算机系统100还可以包括与地址/数据总线102联接的非易失性存储器单元108(例如,只读存储器(“ROM”)、可编程ROM(“PROM”)、可擦除可编程ROM(“EPROM”)、电可擦除可编程ROM“EEPROM”、闪存等),其中,非易失性存储器单元108被配置成存储用于处理器104的静态信息和指令。另选地,计算机系统100可以执行从在线数据存储单元(诸如在“云”计算中)中检索到的指令。在一方面,计算机系统100还可以包括与地址/数据总线102联接的一个或更多个接口,诸如接口110。该一个或更多个接口被配置成使得计算机系统100能够与其它电子装置和计算机系统对接。由一个或更多个接口实现的通信接口可以包括有线通信技术(例如,串行电缆、调制解调器、网络适配器等)和/或无线通信技术(例如,无线调制解调器、无线网络适配器等)。
在一方面,计算机系统100可以包括与地址/数据总线102联接的输入装置112,其中,输入装置112被配置成将信息和命令选择传递给处理器100。根据一个方面,输入装置112是字母数字输入装置(诸如键盘),其可以包括字母数字和/或功能键。另选地,输入装置112可以是除字母数字输入装置以外的输入装置。在一方面,计算机系统100可以包括与地址/数据总线102联接的光标控制装置114,其中,光标控制装置114被配置成将用户输入信息和/或命令选择传递至处理器100。在一方面,使用诸如鼠标、轨迹球、触控板、光学跟踪装置或触摸屏的装置来实现光标控制装置114。尽管存在前述内容,但是在一方面,经由来自输入装置112的输入(诸如响应于与输入装置112相关联的特定键和键序列命令的使用)来引导和/或启动光标控制装置114。在另选方面,光标控制装置114被配置成由语音命令引导或指导。
在一方面,计算机系统100还可以包括与地址/数据总线102联接的一个或更多个可选计算机可用数据存储装置,例如存储装置116。存储装置116被配置成存储信息和/或计算机可执行指令。在一个方面,存储装置116是诸如磁盘驱动器或光盘驱动器(例如,硬盘驱动器(“HDD”)、软盘、光盘只读存储器(“CD-ROM”)、数字通用光盘(“DVD”)的存储装置。根据一个方面,显示装置118与地址/数据总线102联接,其中,显示装置118被配置成显示视频和/或图形。在一方面,显示装置118可以包括阴极射线管(“CRT”)、液晶显示器(“LCD”)、场发射显示器(“FED”)、等离子显示器或适于显示用户可识别的视频和/或图形图像和字母数字字符的任何其它显示装置。
本文提出的计算机系统100是根据一方面的示例计算环境。然而,计算机系统100的非限制性示例不严格限于计算机系统。例如,一方面提供了计算机系统100代表可以根据本文描述的多个方面使用的一个类型的数据处理分析。此外,还可以实现其它计算系统。实际上,本技术的精神和范围不限于任何单个数据处理环境。因此,一方面,使用由计算机执行的计算机可执行指令(诸如,程序模块)来控制或实现本技术的多个方面的一个或更多个操作。在一实现中,这种程序模块包括被配置成执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件和/或数据结构。另外,一方面提供了通过利用一个或更多个分布式计算环境来实现本技术的一个或更多个方面,诸如其中,任务是由通过通信网络链接的远程处理装置执行的,或者诸如其中,多个程序模块位于本地和远程计算机存储介质(包括存储器存储装置)二者中。
在图2中示出了具体实现本发明的计算机程序产品(即,存储装置)的例示图。该计算机程序产品被示出为软盘200或光盘202(诸如CD或DVD)。然而,如前所述,计算机程序产品一般代表存储在任何兼容非暂时性计算机可读介质上的计算机可读指令。关于本发明使用的术语“指令”一般表示要在计算机上执行的一组运算,并且可以代表整个程序的多段或单独的、可分离的软件模块。“指令”的非限制性示例包括计算机程序代码(源码或目标代码)和“硬编码”电子器件(即,被编码到计算机芯片中的计算机运算)。“指令”被存储在任何非暂时性计算机可读介质上,诸如计算机的存储器中或软盘、CD-ROM和闪存驱动器中。无论哪种情况,指令被编码在非暂时性计算机可读介质上。
(3)介绍
如上所述,本公开旨在网络网关生成器。更具体地,本公开通过使用通信代码生成器来提供用于实现高保障网络网关生成器的方法,该通信代码生成器生成在数学上不可能中断的代码并且提供达到该效果的文档(“构件”)。这种网关以高保障方式在平台(例如,车辆ECU、机器人的内部计算机栈等)与网络(例如,IP网络、CAN网络等)之间调控业务。高保障意味着将严格强制系统的隔离特性,并且以避免错误和漏洞的这种方式自动地生成另外组件和粘合代码。此外,假设生成的组件和粘合代码已经或者很容易能够被形式验证以满足另外可靠性和安全性条件(例如,没有缓冲区溢出等)。网关本身将由获取系统特性和约束的形式构件简明集合生成(例如,根据ID、应传输消息分组的速率等过滤CAN分组)。本公开的独特方面在于采用该方法使网关具有高保障。
高保障网关相对于常规网关的一些优点如下。首先,由高保障网关强制的隔离特性确保尽管不可信组件代码(例如,VM中的传统Linux代码)可能能够通过网关接收或发送数据,但是它不能够逃脱被隔离的区域(在示例中为VM组件)而影响关键系统组件。例如,汽车的信息娱乐系统的受损组件代码将不能够影响重要车辆功能,诸如制动或加速。第二,通过在形式构件中获取核心系统参数和特性并从这些构件生成网关代码,可以最小化可能导致可靠性或安全性问题的程序员错误的机会。例如,如果没有这种方法,则当需要由系统处理的CAN消息集发生改变时,工程师将不得不手动对分散在整个代码库中的代码进行改变。对于甚至中等复杂的系统(比汽车或飞机简单几个数量级),这可能意味着要改变数百行代码。第三,当以还生成其正确性的证明的这种方式生成组件代码时,这会大大提高系统的可靠性和安全性:其提供了数学保证,使这些组件根据规范运行。例如,可以与这些例程未超出消息缓冲区范围的证明一起生成与消息(反)序列化(即,将消息从一种位或字节格式变换成另一种格式)相关的组件代码,从而确保在该代码中不存在缓冲区溢出。构造网关代码的先前方法可能在此实现了第二点,但是在这种情况下,第一点和第三点的存在大大提高了所得到的系统的可靠性和安全性。
高保障网关生成与应提供安全性或可靠性保证并包含网络组件的任何平台相关。尤其是飞机、无人驾驶飞机二者和汽车平台都是该技术的理想目标。
(4)多个实施方式的具体细节
下面提供了用于生成高保障网络网关的方法的描述,随后是这种方法的特定示例实现。
在高级别,假设平台和该平台连接到的网络。没有理由限制到单个网络,并且此限制仅用于例示目的。还假设给定的形式构件,其描述了将由平台在网络上传输或从网络接收的消息分组的子集。构件还可以记录与代码生成相关的另外参数或设置,但是在该高级别的概述中,将省略这些详细信息。这是适于概述该方法的理想设置,但是下面给出了实际实现中的详细信息。根据该数据,将生成以下:
1.用于网关组件和系统的其余部分的环境操作系统特定代码。
2.消息的序列化代码和反序列化代码。
3.网关组件以及从形式构件推断或工具本身需要的任何另外组件的单个组件“粘合”代码。
4.证明构件。
需要这些输出具有足够高保障,使得关于优于现有技术的利益的在先权利要求有效。尤其是,假设操作系统级别代码(1)应该强烈地强制隔离和其它正确性标准。另外,(2)和(3)应该供应有正确性的证明,或者以易于由现有验证工具进行事后验证的这种方式来设计。作为中间阶段,高级系统要求始终被转换成架构分析和设计语言(AADL)(参见参考文献2),其提供了用于驱动某些代码生成的系统设计的抽象架构聚焦视图。除其它内容外,粘合代码(3)负责从网络接收分组P的详细信息,在调用反序列化代码(2)并经由另外粘合代码(3)将所得到的消息传送到其它系统组件之前,执行必要的任何解包、清理和检查(例如,加密功能)。为了在网络上传输分组,该过程相反。因此,所得到的系统通过平台处理网络通信,并且任何另外组件代码(例如,控制代码)不被该过程覆盖,并且需要由其它手段来提供。证明构件(4)为主张高保障提供了数学理由。下面提供了进一步的细节并在图3中例示。
如图3所示,前端300接收包括子系统架构的输入构件和消息规范构件。子系统架构描述了组成子系统模块之间的互连。例如,在汽车的内部网络的情况下,子系统架构可以描述诸如信息娱乐系统与车辆上一个或更多个引擎控制单元(ECU)之间的互连的特征。在基础结构信息技术(IT)系统的情况下,子系统架构可以获取诸如经由以太网网络硬件连接多个服务器的方式的特征。在单个机器上,子系统架构可以获取以下事实:Linux虚拟机器中应该有正在运行不可信第三方代码的组件,并且该虚拟机将与可信系统组件通信,该可信系统组件解析消息分组并将其转发以进行进一步处理。另外,消息规范构件获取要传递的数据结构方面的描述、多个系统组件与外部网络之间要传输的消息种类的描述。例如,参见下面提供的机器人操作系统(ROS)消息的描述。
前端300解析构件并将其转换成对应格式(例如,将架构描述映射到AADL或将CAN消息的.dbc描述变换成对应OCaml数据结构)。前端300还将转换数据分配给OS代码生成器302、粘合代码生成器304和通信代码生成器306。如本领域技术人员所理解的那样,这是利用标准词典分析和解析技术来进行的。
OS代码生成器302和通信代码生成器306中的各个产生高保障输出代码。例如,OS代码生成器302消耗AADL(或另选格式)架构描述,并产生用于在高保障微内核(例如,seL4)上运行的对应OS代码。以下关于CAmkES(参见参考文献3)和Trusted Build工具进一步详细提供了OS代码生成器302的示例。要求被视为高保障的隔离特性是选择高保障微内核以及所使用的通信机制的结果(请参见下文)。
此外,通信代码生成器306消耗消息规范,该消息规范描述要由网关处理的消息的类型以及任何其它信息(例如,过滤规则)。然后,它经由串处理方法(如本领域技术人员清楚地理解的)产生(反)序列化代码和过滤代码。
另外,并且重要的是,通信代码生成器306还产生形式规范、证明和相关代码(例如,在Coq证明助手中),这些形式规范、证明和相关代码组合以产生高保障软件所需的低级别正确性保证。通过在具体消息类型实例上实例化高级别抽象规范(依赖于Coq的类型)或通过标准串处理方法(生成与所供应的消息类型构件相对应的规范)来生成形式规范。下面讨论几个示例。证明本身能够直接经由自动化过程(诸如SMT求解)、使用现有库策略、通过原始串操作(与元编程一起)或这些技术的组合从规范中生成。可以使用代码合成工具或经由标准串操作技术来生成相关代码。下面提供示例。证明应与代码一起自动生成是本文所述处理的重要特征。
粘合代码生成器304消耗OS代码和组件代码(例如,C报头、加密代码),并输出中间形式的代码(即,粘合代码;这仍然需要通信代码来编译和运行)。如上所述,这涉及元编程和串处理算法的某种组合。在下面进一步详细提供粘合代码生成的示例。
最终,网络网关代码生成器308将粘合代码和通信代码进行组合,并编译成可执行网络网关代码。如本领域技术人员所理解的,将粘合代码和通信代码组合和编译成单个可执行代码是常见过程。例如,标准构建工具(诸如GNU)正是为此目的提供了自动化。下面进一步详细描述了已经构建的该方法的几种现有实现。
在第一实现中考虑的平台是小型跟踪研究机器人(GVR-BOT),该机器人来自美国陆军坦克车辆研发工程中心(TARDEC)。在这种情况下,以及下面要考虑的另一情况下,底层操作系统是seL4,这已经被形式验证到二进制级别(参见参考文献7)。除其它外,seL4的隔离特性已得到验证。在GVR-BOT的情况下,它既具有到外部机器(OCU)的无线以太网通信(UDP),也具有到作为seL4组件运行的Linux VM的内部连接。在这种情况下,实际上还有处理VM与其它seL4组件之间的内部连接的其它网关代码,但是理解这一点对于理解由以太网网关提供的基本例示不是必需的。
如上所述,作为OS代码生成器的示例,提供了CAmkES(参见参考文献3)和TrustedBuild工具。例如,在底层的seL4 API之上,存在称为CAmkES的架构级别描述系统和TrustedBuild工具。Trusted Build工具是由明尼苏达大学和Rockwell Collins开发的开源工具。根据开发人员的要求,将改进内容通过引用合并到代码中,以便从AADL生成CAmkES代码。除CAmkES代码外,Trusted Build还能够根据AADL规范合成另外代码,诸如与AADL消息类型对应的C结构。因此,代码生成处理的入口点在很大程度上是AADL级别(如上所述)。在图4中描绘了示例实现,其提供了该过程的示意性例示。如图所示,可信构建是401,用于生成CAmkES代码402,这之后,CAmkES工具403生成seL4代码404。
如上所述,通信代码生成器306产生形式规范、证明和相关代码,将这些形式规范、证明和相关代码组合以产生高保障软件所需的低级别正确性保证。通信代码生成器的示例如下。GVR-BOT上涉及的基本消息格式是机器人操作系统(ROS)消息格式(.msg)。.msg文件的各个(非空格、非注释)行是常量说明(由于这些不包括在讨论中,所以将其忽略)或字段声明行的形式
field_typefield_name
其中,field_type是以下中的一个:
·基本类型;
o布尔值
o有符号和无符号8位、16位、32位或64位整数
o32位和64位浮点数
oASCII串
o时间或持续类型
·从其它.msg文件导入的类型
·字段类型的固定长度或可变长度阵列
·特定“报头”类型。
通信代码生成器的另一示例包括代码生成工具(ros2seL4)。代码生成工具(ros2seL4)是以OCaml编程语言编写的,并采取.msg文件(包括指向ROS标准库.msg文件的指针)和.ros文件二者作为输入。.ros格式是一种自定义格式,用于驱动代码生成,并且其指定将沿以太网连接从机器人传输哪些消息以及从机器人接收哪些消息,以及其它与簿记(book-keeping)相关的设置。工具输出为:
·与ROS消息定义对应的AADL消息类型定义。
·C网关组件代码(用于GVR-BOT)。
·C++网关组件代码(用于OCU)。
·消息(反)序列化代码。
如上面的高级概述中所述,C网关代码执行接收和发送UDP分组的基本任务,包括对分组有效负载使用加密功能以及(反)序列化。C++代码的功能大致相同,并且还可以与ROS系统对接。
证明和消息处理代码的生成示例如下。由工具代码以Bedrock编程语言生成消息(反)序列化代码(参见参考文献1)。Bedrock是Coq证明助手中嵌入的抽象汇编语言。除实际编程语言本身外,Bedrock还包含规范语言和用于验证程序是否符合其规范的逻辑。该逻辑是构建在的XCAP逻辑上的分离逻辑的形式(参见参考文献5)。Coq中的嵌入提供了丰富元编程和定理证明环境。Bedrock作为证明助手中的嵌入语言的新颖性的一部分在于能够对代码进行编译:通过首先提取OCaml串操作代码,然后经由一系列执行脚本的处理,将Bedrock汇编转变成为GAS语法的IA32(或AMD64)。在这种情况下,手动编写用于ROS消息的反序列化的一系列规范和证明策略。然后,ros2seL4工具产生(反)序列化器的实际Bedrock代码,并将适当的参数发送至该规范。然后,这些策略能够得出所生成的代码符合这些规范的证明。规范保证(反)序列化代码不读取或写入超出正确缓冲区边界。还有所生成的代码,该代码在所使用的Bedrock堆上(取消)分配内存,以便与生成的C(++)代码对接。该工具还为(反)序列化器生成对应C报头和汇编代码包装器。
实现高保障网关生成器的第二平台是也来自TARDEC的大型自动军用运输车(AMASHET)。在该平台上,存在许多网络接口,但是从本公开的角度来看,最受关注的一个是在其上处理J1939分组的CAN网络。在这种情况下,所考虑的形式构件是.dbc文件和.can文件。.dbc格式广泛用于描述构成以CAN帧传输的消息的信号。以该格式获取消息和信号的多种特性,包括:帧内信号的位偏移量和长度、值缩放和转换、编码的字节序等。.can格式(如上面的.ros格式一样)是定制文件格式,其被开发以获取有关主平台计算机应接收或传输哪些信号的相关信息、以及多种另外功能,例如:CANID(如果其与.dbc文件中的ID不匹配)、不同控制模式的默认值等。
被开发的工具(mastodon)解析.dbc和.can文件并产生对应代码:
·AADL代码。
·C网关组件代码。
·消息(反)序列化代码。
这种情况与上面考虑的GVR-BOT情况之间存在一些差异。首先,在这种情况下,(反)序列化器本身不是Bedrock代码。原因是,Bedrock当前不以其抽象汇编语言来处理浮点汇编代码,但是在许多情况下,对浮点信号进行(反)序列化需要使用浮点运算(以通过浮点值处理转换和缩放)。在这种情况下,开发了基本CAN帧处理例程的Bedrock库,并将其编译成汇编。然后,由生成的C(反)序列化代码调用来自该代码的例程,但是所有浮点运算都在C中进行处理。第二个差异是,在这种情况下,AADL代码还获取了车辆上消息的路由。尤其是,与普林斯顿大学的研究人员合作,开发了用于在平台上通信的邮箱协议,信任构建(Trusted Build)的开发人员对该系统进行了扩展,以使得能够从AADL生成邮箱连接。因此,该邮箱协议能够用于网关:例如,网关接收到J1939消息,它剥离相关信号,将信号值打包成C结构,并且然后将其放入适当邮箱中。
最后,尽管已经根据几个实施方式描述了本发明,但是本领域的普通技术人员将容易认识到,本发明可以具有在其它环境中的其它应用。应当注意,许多实施方式和实现是可能的。另外,所附权利要求绝不旨在将本发明的范围限制到上述特定实施方式。另外,对“用于……的装置”的任何表述旨在引起对要素和权利要求的装置加功能的阅读,而对没有特别使用对“用于……的装置”的表述的任何要素不旨在被读作装置加功能要素,即使权利要求书中以其它方式包括词语“装置”。此外,尽管已经以特定顺序叙述了特定方法步骤,但是这些方法步骤可以以任何期望顺序发生,并且落入本发明的范围内。
权利要求书(按照条约第19条的修改)
1.一种网络网关生成器,所述网络网关生成器包括:
存储器和一个或更多个处理器,所述存储器是编码有可执行指令的非暂时性计算机可读介质,使得在执行所述指令时,所述一个或更多个处理器执行以下操作:
接收输入构件;
将所述输入构件转换成对应格式,作为转换数据;
将所述转换数据分配给OS代码生成器、粘合代码生成器和通信代码生成器;
由所述OS代码生成器基于所述转换数据生成OS代码,并且获取系统架构,所述系统架构包括可信子系统与不可信子系统之间的通信信道;
由所述通信代码生成器基于所述转换数据生成反序列化代码和过滤代码;
由粘合代码生成器基于所述OS代码和所述转换数据生成粘合代码;
通过将所述粘合代码、所述反序列化代码和所述过滤代码进行组合来生成可执行网络网关代码;
生成证明构件以用于通信,所述证明构件提供关于不可信子系统干扰可信子系统的不可能性、以及可利用故障在消息序列化代码和反序列化代码中的不可能性的数学保证;
在计算机可读介质上对所述可执行网络网关代码进行编码;
通过在网络服务器上运行所述可执行网络网关代码,在平台与网络之间形成网关;以及
通过所述网关促进所述平台与网络之间的通信业务,使得经由所述网络能够访问的不可信子系统不可能更改或修改除指定通信信道的内容之外的可信子系统的内容,并且使得在所述通信信道中不存在可利用故障。
2.根据权利要求1所述的网络网关生成器,其中,所述转换数据包括系统架构代码、粘合代码相关构件和消息规范。
3.根据权利要求2所述的网络网关生成器,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
4.根据权利要求1所述的网络网关生成器,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
5.一种用于网络网关生成器的计算机程序产品,所述计算机程序产品包括:
非暂时性计算机可读介质,所述非暂时性计算机可读介质编码有可执行指令,使得在由一个或更多个处理器执行所述指令时,所述一个或更多个处理器执行以下操作:
接收输入构件;
将所述输入构件转换成对应格式,作为转换数据;
将所述转换数据分配给OS代码生成器、粘合代码生成器和通信代码生成器;
由所述OS代码生成器基于所述转换数据生成OS代码,并且获取系统架构,所述系统架构包括可信子系统与不可信子系统之间的通信信道;
由所述通信代码生成器基于所述转换数据生成反序列化代码和过滤代码;
由粘合代码生成器基于所述OS代码和所述转换数据生成粘合代码;
通过将所述粘合代码、所述反序列化代码和所述过滤代码进行组合来生成可执行网络网关代码;
生成证明构件以用于通信,所述证明构件提供关于不可信子系统干扰可信子系统的不可能性、以及可利用故障在消息序列化代码和反序列化代码中的不可能性的数学保证;
在计算机可读介质上对所述可执行网络网关代码进行编码;
通过在网络服务器上运行所述可执行网络网关代码,在平台与网络之间形成网关;以及
通过所述网关促进所述平台与网络之间的通信业务,使得经由所述网络能够访问的不可信子系统不可能更改或修改除指定通信信道的内容之外的可信子系统的内容,并且使得在所述通信信道中不存在可利用故障。
6.根据权利要求5所述的计算机程序产品,其中,所述转换数据包括系统架构代码、粘合代码相关构件和消息规范。
7.根据权利要求6所述的计算机程序产品,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
8.根据权利要求5所述的计算机程序产品,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
9.一种用于网络网关生成器的计算机实现方法,所述方法包括以下动作:
使一个或更多个处理器执行在非暂时性计算机可读介质上编码的指令,使得在执行时,所述一个或更多个处理器执行以下操作:
接收输入构件;
将所述输入构件转换成对应格式,作为转换数据;
将所述转换数据分配给OS代码生成器、粘合代码生成器和通信代码生成器;
由所述OS代码生成器基于所述转换数据生成OS代码,并且获取系统架构,所述系统架构包括可信子系统与不可信子系统之间的通信信道;
由通信代码生成器基于所述转换数据生成反序列化代码和过滤代码;
由粘合代码生成器基于所述OS代码和所述转换数据生成粘合代码;
通过将所述粘合代码、所述反序列化代码和所述过滤代码进行组合来生成可执行网络网关代码;
生成证明构件以用于通信,所述证明构件提供关于不可信子系统干扰可信子系统的不可能性、以及可利用故障在消息序列化代码和反序列化代码中的不可能性的数学保证;
在计算机可读介质上对所述可执行网络网关代码进行编码;
通过在网络服务器上运行所述可执行网络网关代码,在平台与网络之间形成网关;以及
通过所述网关促进所述平台与网络之间的通信业务,使得经由所述网络能够访问的不可信子系统不可能更改或修改除指定通信信道的内容之外的可信子系统的内容,并且使得在所述通信信道中不存在可利用故障。
10.根据权利要求9所述的方法,其中,所述转换数据包括系统架构代码、粘合代码相关构件和消息规范。
11.根据权利要求10所述的方法,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
12.根据权利要求9所述的方法,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
Claims (12)
1.一种网络网关生成器,所述网络网关生成器包括:
存储器和一个或更多个处理器,所述存储器是编码有可执行指令的非暂时性计算机可读介质,使得在执行所述指令时,所述一个或更多个处理器执行以下操作:
接收输入构件;
将所述输入构件转换成对应格式,作为转换数据;
将所述转换数据分配给OS代码生成器、粘合代码生成器和通信代码生成器;
由所述OS代码生成器基于所述转换数据生成OS代码,并且获取所述系统架构,所述系统架构包括可信子系统与不可信子系统之间的通信信道;
由所述通信代码生成器基于所述转换数据生成反序列化代码和过滤代码;
由粘合代码生成器基于所述OS代码和所述转换数据生成粘合代码;
通过将所述粘合代码、所述反序列化代码和所述过滤代码进行组合来生成可执行网络网关代码;
生成证明构件以用于通信,所述证明构件提供关于不可信子系统干扰可信子系统的不可能性、以及可利用故障在消息序列化代码和反序列化代码中的不可能性的数学保证;
在计算机可读介质上对所述可执行网络网关代码进行编码;
通过在网络服务器上运行所述可执行网络网关代码,在平台与网络之间形成网关;以及
通过所述网关促进所述平台与网络之间的通信业务,使得经由所述网络能够访问的不可信子系统不可能更改或修改除指定通信信道的内容之外的可信子系统的内容,并且使得在所述通信信道中不存在可利用故障。
2.根据权利要求1所述的网络网关生成器,其中,所述转换数据包括系统架构代码、粘合代码相关构件和消息规范。
3.根据权利要求2所述的网络网关生成器,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
4.根据权利要求1所述的网络网关生成器,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
5.一种用于网络网关生成器的计算机程序产品,所述计算机程序产品包括:
非暂时性计算机可读介质,所述非暂时性计算机可读介质编码有可执行指令,使得在由一个或更多个处理器执行所述指令时,所述一个或更多个处理器执行以下操作:
接收输入构件;
将所述输入构件转换成对应格式,作为转换数据;
将所述转换数据分配给OS代码生成器、粘合代码生成器和通信代码生成器;
由所述OS代码生成器基于所述转换数据生成OS代码,并且获取所述系统架构,所述系统架构包括可信子系统与不可信子系统之间的通信信道;
由所述通信代码生成器基于所述转换数据生成反序列化代码和过滤代码;
由粘合代码生成器基于所述OS代码和所述转换数据生成粘合代码;
通过将所述粘合代码、所述反序列化代码和所述过滤代码进行组合来生成可执行网络网关代码;
生成证明构件以用于通信,所述证明构件提供关于不可信子系统干扰可信子系统的不可能性、以及可利用故障在消息序列化代码和反序列化代码中的不可能性的数学保证;
在计算机可读介质上对所述可执行网络网关代码进行编码;
通过在网络服务器上运行所述可执行网络网关代码,在平台与网络之间形成网关;以及
通过所述网关促进所述平台与网络之间的通信业务,使得经由所述网络能够访问的不可信子系统不可能更改或修改除指定通信信道的内容之外的可信子系统的内容,并且使得在所述通信信道中不存在可利用故障。
6.根据权利要求5所述的计算机程序产品,其中,所述转换数据包括系统架构代码、粘合代码相关构件和消息规范。
7.根据权利要求6所述的计算机程序产品,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
8.根据权利要求5所述的计算机程序产品,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
9.一种用于网络网关生成器的计算机实现方法,所述方法包括以下动作:
致使一个或更多个处理器执行在非暂时性计算机可读介质上编码的指令,使得在执行时,所述一个或更多个处理器执行以下操作:
接收输入构件;
将所述输入构件转换成对应格式,作为转换数据;
将所述转换数据分配给OS代码生成器、粘合代码生成器和通信代码生成器;
由所述OS代码生成器基于所述转换数据生成OS代码,并且获取所述系统架构,所述系统架构包括可信子系统与不可信子系统之间的通信信道;
由通信代码生成器基于所述转换数据生成反序列化代码和过滤代码;
由粘合代码生成器基于所述OS代码和所述转换数据生成粘合代码;
通过将所述粘合代码、所述反序列化代码和所述过滤代码进行组合来生成可执行网络网关代码;
生成证明构件以用于通信,所述证明构件提供关于不可信子系统干扰可信子系统的不可能性、以及可利用故障在消息序列化代码和反序列化代码中的不可能性的数学保证;
在计算机可读介质上对所述可执行网络网关代码进行编码;
通过在网络服务器上运行所述可执行网络网关代码,在平台与网络之间形成网关;以及
通过所述网关促进所述平台与网络之间的通信业务,使得经由所述网络能够访问的不可信子系统不可能更改或修改除指定通信信道的内容之外的可信子系统的内容,并且使得在所述通信信道中不存在可利用故障。
10.根据权利要求9所述的方法,其中,所述转换数据包括系统架构代码、粘合代码相关构件和消息规范。
11.根据权利要求10所述的方法,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
12.根据权利要求9所述的方法,其中,所述通信代码生成器还生成形式规范、证明和相关代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762557975P | 2017-09-13 | 2017-09-13 | |
US62/557,975 | 2017-09-13 | ||
PCT/US2018/041902 WO2019055116A1 (en) | 2017-09-13 | 2018-07-12 | HIGH SECURITY NETWORK GATEWAY GENERATORS |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110945476A true CN110945476A (zh) | 2020-03-31 |
CN110945476B CN110945476B (zh) | 2023-08-11 |
Family
ID=65723026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880048137.0A Active CN110945476B (zh) | 2017-09-13 | 2018-07-12 | 高保障网络网关生成器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10691282B2 (zh) |
EP (1) | EP3682326A4 (zh) |
CN (1) | CN110945476B (zh) |
WO (1) | WO2019055116A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11340877B2 (en) * | 2018-12-19 | 2022-05-24 | Network Native, Inc. | System and method for holistic application development and deployment in a distributed heterogeneous computing environment |
CN113518015B (zh) * | 2021-04-08 | 2023-03-14 | 重庆长安汽车股份有限公司 | 基于车机can网络信号测试的自动化实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040148588A1 (en) * | 2003-01-23 | 2004-07-29 | Electronic Data Systems Corporation | System and method for automated code generation using language neutral software code |
US20090077532A1 (en) * | 2007-09-13 | 2009-03-19 | Universities Space Research Association | Automated annotation inference for safety certification of automatically generated code |
CN106612217A (zh) * | 2015-10-27 | 2017-05-03 | 弗兰克公司 | 使用机器可读代码来测试通信网络的系统和方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030135842A1 (en) * | 2002-01-16 | 2003-07-17 | Jan-Erik Frey | Software development tool for embedded computer systems |
KR100683853B1 (ko) | 2005-02-04 | 2007-02-16 | 삼성전기주식회사 | 프리 컴파일링 장치 |
US9182961B1 (en) | 2007-12-17 | 2015-11-10 | Cisco Technology, Inc. | System and method for providing computer code to obtain data from devices optionally using a web services interface |
US8751284B2 (en) * | 2009-04-30 | 2014-06-10 | United Parcel Service Of America, Inc. | Systems and methods for a real-time workflow platform using Petri net model mappings |
US8332811B2 (en) * | 2009-04-30 | 2012-12-11 | United Parcel Service Of America, Inc. | Systems and methods for generating source code for workflow platform |
CA2984106C (en) * | 2015-05-08 | 2021-12-21 | Ciambella Ltd. | Method and apparatus for automatic software development for a group of controller-based devices |
-
2018
- 2018-07-12 US US16/034,244 patent/US10691282B2/en active Active
- 2018-07-12 WO PCT/US2018/041902 patent/WO2019055116A1/en unknown
- 2018-07-12 CN CN201880048137.0A patent/CN110945476B/zh active Active
- 2018-07-12 EP EP18855925.6A patent/EP3682326A4/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040148588A1 (en) * | 2003-01-23 | 2004-07-29 | Electronic Data Systems Corporation | System and method for automated code generation using language neutral software code |
US20090077532A1 (en) * | 2007-09-13 | 2009-03-19 | Universities Space Research Association | Automated annotation inference for safety certification of automatically generated code |
CN106612217A (zh) * | 2015-10-27 | 2017-05-03 | 弗兰克公司 | 使用机器可读代码来测试通信网络的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019055116A1 (en) | 2019-03-21 |
CN110945476B (zh) | 2023-08-11 |
EP3682326A4 (en) | 2021-06-02 |
US20200034539A1 (en) | 2020-01-30 |
EP3682326A1 (en) | 2020-07-22 |
US10691282B2 (en) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Klein et al. | Formally verified software in the real world | |
Mubeen et al. | Timing predictability and security in safety-critical industrial cyber-physical systems: A position paper | |
Sewell et al. | Secure composition of insecure components | |
CN110945476B (zh) | 高保障网络网关生成器 | |
Maggi et al. | A Security Analysis of the Data Distribution Service (DDS) Protocol | |
Wilson et al. | Incremental certification and integrated modular avionics | |
Ge et al. | Correct‐by‐construction specification to verified code | |
Hugues | A correct-by-construction AADL runtime for the Ravenscar profile using SPARK2014 | |
Hardin et al. | Formal synthesis of filter components for use in security-enhancing architectural transformations | |
Rafnsson et al. | Progress-sensitive security for SPARK | |
Nazir et al. | A high-level domain-specific language for SIEM (design, development and formal verification) | |
Heitmeyer | On the role of formal methods in software certification: An experience report | |
Ubys et al. | Formal Model In-The-Loop for Secure Industrial Control Networks | |
WO2021171524A1 (ja) | シグネチャ生成装置、シグネチャ生成方法およびシグネチャ生成プログラム | |
Delange et al. | Design, implementation and verification of MILS systems | |
Hansson et al. | Model-based verification of security and non-functional behavior using AADL | |
Wu et al. | Formal specification and transformation method of system requirements from B Method to AADL Model | |
Cimatti et al. | Model-based run-time synthesis of architectural configurations for adaptive MILS systems | |
Mayo et al. | Digital system robustness via design constraints: The lesson of formal methods | |
Merkin et al. | Architecture of InnoChain, a Formally-Verified Distributed Ledger System | |
Delange et al. | Supporting the ARP4761 safety assessment process with AADL | |
Larrieu et al. | Rapid Prototyping Software for Avionics Systems: Model-oriented Approaches for Complex Systems Certification | |
EP2782005A1 (en) | Verifying state reachability in a statechart model having computer program code embedded therein | |
Tietz et al. | Why the Use of Domain-specific Modeling in Airworthy Software Requires New Methods and How these Might Look Like?(extended version) | |
Sadani et al. | From RT-LOTOS to time petri nets new foundations for a verification platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |