某公司长期从事嵌入式商用软件的开发工作。随着业务范围的扩展,公司最近签署了一项大型客机信息综合处理的软件研制合同,作为机载软件,其可靠性和安全性直接影响着大型客机的安全特性。合同要求承制方在开展工作之前必须完成安全性、可靠性分析报告,在软件开发过程中应严格遵循相关工程化标准。
公司总经理将此项任务交给了张工程师,要求他尽快掌握航空软件研制的各项要求,并拿出项目的策划书。张工在深入研究了可信计算等相关知识的基础上,结合航空软件的特点,提出了一项项目实施策划方案。此方案在安全性设计方面借鉴了可信计算的相关技术,得到了甲方的认可,但是,针对此方案,公司领导层存在极大争议,问题主要焦点在于按此方案实施,公司的人员、成本和资源投入将远远超过本公司的承受能力,张工指出,传统商用软件的开发模式不能满是航空用户的需要,软件可信度太低,对后续发展不利。经过认真讨论,公司领导层形成了统一认识,按可信计算的技术要求,提升公司的整体软件开发水平。
【问题 1】(13 分)
ISO/IEC 15408 标准定义可信为:参与计算的组件,其操作或过程在任意的条件下是可预测的,并能够抵御病毒和物理干扰。而航空设备的基本特点就是要求设备工作的实体行为应该总是以预期的方式达到预期的目的(即行为、资源的确定性要求)。基于这种思想,张工依据可信计算组织定义的可信链模型(即可信测量根(RTM)—BIOS—OSLoader—OS 构成链式信任链模型)理论,给出了一种适应本项目的带数据恢复的星型信任模型(图 3-1)。该模型的中心思想是将可信测量根植入机载设备平台模块内部NVRAM(非易失存储器)中,在信任链中增加数据恢复功能,并将信任链延伸到应用。请根据张工设计思想,完善图3-1所示的带数据恢复星型信任模型的空白部分。并用100字以内的文字,解释该模型与链式信任链模型相比的特点。
图3-1 带数据恢复星型信任模型
【问题 2】(12 分)
交叉编译器是嵌入式软件开发必备的基础工具软件之一。目前比较流行的交叉编译器是 GNU 系列产品,它是一种开源软件。编译器生成代码正确与否严重影响机载设备的安全,因此,张工在方案中提出对本项目采用的交叉编译器开展可信技术研究。可信编译器包括两方面含义,其一是编译器自身的可信性,即必须保证整个编译操作的可信性,保证编译器在编译过程中不会给编译处理对象带来任何安全问题;其二是必须保证编译器编译所得程序可执行代码的可信,即编译器必须保证,通过其编译生成的程序代码是安全和可靠的。因此,张工提出在传统编译操作的基础上加入代码安全性加强机制、代码可信性验证机制和可执行代码保护机制。图3-2给出了可信编译系统的框架。
请说明三种可信机制在传统编译操作步骤中的位置,并给出图3-2的(a)~(c)对应的可信机制名称。
根据表3-1所示的信息流名称,给出图3-2中(d)~(h)对应的功能模块间的信息流编号。
图3-2 可信编译系统框架
【问题1】
(1)OSLoader (2)操作系统 (3)应用 (4)恢复
带数据恢复星型信任模型的特点:
(1)可信测量根被保护,安全性更高。
(2)具有数据恢复功能,安全性更高。
(3)都是一级测量,没有多级信任传递,信任损失少。
【问题2】
(见表3-2、表3-3所示)
可信计算的基本思想是:首先在计算机系统中建立一个信任根,再建立一条信任链,从信任根开始,经过硬件平台和操作系统,再到应用,一级测量认证一级,一级信任一级,从而把这种信任扩展到整个计算机系统。
【问题1】
可信计算组织的信任链采用了一种链式的信任测量模型,即由RTM(可信测量根)→BIOS→OSLoader→OS构成一个串行链。由于采用了一种迭代计算哈希值的方式,即将现值与新值相连,再计算哈希值并作为新的完整性度量值存储起来。
链式信任链具有如下缺点:信任链越长,信任损失的可能性就越大。在链中加入或删除一个部件,PCR的值需要重新计算,很麻烦。信任链中的软件部件可能会更新(如BIOS升级,OS打补丁等),而PCR的值也得重新计算,这样一来使得部件更新工作很麻烦。
带数据恢复的星型信任模型结构如图3-3所示。
图3-3
它将可信测量根置入可信平台模块内部NVRAM (Non-VolatileRandom Access Memory,非易失性随机访问存储器),在信任链中增加了数据恢复功能,并将信任链延伸到应用。与可信计算组织的链式信任链相比,该模型具有如下特点:可信测量根被保护,安全性更高;具有数据恢复功能,安全性更高;都是一级测量,没有多级信任传递,信任损失少。但是,所有测量都由可信测量根执行,可信测量根通过可信平台模块完成任务,这使得可信平台模块负担加重。
在可信计算的信任链中应当度量的是可信性。但是,由于可信性目前尚不易直接度量,所以可信计算组织在信任链中采用的是度量数据完整性,而且是通过校验数据哈希值的方法来度量数据的完整性。但是,可信≈可靠+安全,完整性≠可信性,完整性 可信性,即完整性只是可信性中的一个侧面。
由于可信计算组织在信任链中采用的是度量数据完整性,因此它能确保数据的完整性,确保BIOS,OSLoader和OS数据的完整性。但是完整性只能说明这些软件没有被修改,并不能说明这此软件没有安全缺陷,更不能确保这此软件在运行时的安全性。基于数据完整性的度量是一种静态度量,基于软件行为的动态度量更实用。
【问题2】
编译器作为重要的系统软件,其可信性对于整个计算机系统的可信具有重要意义。如果编译器不可信,则很难保证其他软件的可信性。软件的可信性很大程度上依赖于程序代码的可信性,影响软件可信性的主要因素包括来自软件内部的代码缺陷、代码错误、程序故障以及来自软件外部的病毒、恶意代码等。因此,从代码角度来保证软件的可信性是实现可信软件的重要途径之一。
可信编译的目标就是从编译的角度保证软件的可信性,主要包括两方面含义,一方面,必须保证编译器自身是可信的。即必须保证整个编译操作的可信性,保证编译器在编译过程中不会给编译处理对象带来任何安全性问题,防止恶意攻击者通过修改编译器,在编译过程中对代码的原始语义进行篡改,影响程序代码本身的可信性;另一方面,必须保证编译器编译所得程序可执行代码是可信的,即编译器必须保证,通过其编译生成的程序代码是安全和可靠的。
编译器自身的可信性主要是指其编译过程的正确性、安全性和可靠性。一般认为,通过形式化验证的系统具有较高的可信性,可将形式化方法用于编译器本身。通过在传统编译操作的基础下加入代码安全性加强机制、代码可信性验证机制及可执行代码保护机制等三种机制,来保证编译所产生代码的可信性。
(1)代码安全性加强机制:该机制主要用于识别和处理程序中常见的一些安全漏洞。目前已提出许多针对程序常见安全漏洞的编译处理技术,具有代表性的如针对缓冲区溢出攻击的StackGuard方法等。
(2)代码可信性验证:该机制不可能解决所有的代码安全性问题。对于可信性要求较高的程序代码,必须通过形式化方法对其进行可信性验证。因此,我们提出在代码安全性加强机制对代码进行安全加强之后,通过代码可信性验证机制对代码的可信属性进行验证,对未通过验证的非可信代码进行报警或其他处理。这样,通过代码安全性加强和可信性验证相结合的方法保证编译生成可执行代码的可信性。
(3)可执行代码保护机制:为了防止攻击者对可信编译器最终生成的可执行代码进行恶意攻击或修改,可信编译器在完成编译之后,对可执行代码实施保护机制,保护编译所得可执行代码的完整性、秘密性和可用性,从而确保系统最终执行代码的可信运行。
( )is the process of transforming information so it is unintelligible to anyone but the intended recipient.
As each application module is completed,it undergoes( )to ensure that it operates correctly and reliably.
( )algorithm specifies the way to arrange data in a particular order.
After analyzing the source code,( )generates machine instructions that will carry out the meaning of the program at a later time.
( )can help organizations to better understand the information contained within the data and will also help identify the data that is most important to the business and future business decisions.
浏览器开启无痕浏览模式后,( )依然会被保存下来。
下列协议中,不属于TCP/IP协议簇的是( )。
下列传输介质中,带宽最宽、抗干扰能力最强的是( )。
数控编程常需要用参数来描述需要加工的零件的图形。在平面坐标系内,确定一个点需要2个独立的参数,确定一个正方形需要( )个独立的参数。
某书的页码为1,2,3,...,共用数字900个(一个多位数页码包含多个数字),据此可以推断,该书最大的页码为( )。