1.1 可信计算概念
1.1.1 可信
可信,顾名思义,就是可以相信,可以信赖,这是社会学中的概念。信任是一种二元关系,它可以是一对一、一对多(个体对群体)、多对一(群体对个体)或多对多(群体对群体)的。信任具有二重性,既具有主观性,又具有客观性。但它不一定具有对称性,即A信任B,不一定就有B信任A。
信任是可度量的,也就是说信任有程度之分,可以划分等级。它是可传递,但不是绝对的,在传递过程中可能有损失,而且传递的路径越长损失可能越大。同时,信任还具有动态性,即信任与环境(上下文)和时间因素相关。
可信计算将可信的概念引入计算机科学技术领域,其首要问题就是要回答什么是可信。目前,关于可信尚未形成统一的定义,主要的可以归结为以下几种说法:
1990年,国际标准化组织与国际电子技术委员会(Intentional Organization for Standardization/International Electrotechnical Commission,ISO/IEC)在其发布的目录服务系列标准中基于行为预期性定义了可信性:如果第二个实体完全按照第一个实体的预期行动,则第一个实体认为第二个实体是可信的。
1999年,国际标准化组织与国际电子技术委员会在ISO/IEC15408标准中定义可信为:参与计算的组件、操作或过程在任意的条件下是可预测的,并能够抵御病毒和一定程度的物理干扰。
2002年,国际可信计算组织用实体行为的预期性来定义可信:一个实体是可信的,如果它的行为总是以预期的方式达到预期的目标。这一定义的优点是抓住了实体的行为特征。
IEEE认为,所谓可信是指计算机系统所提供的服务是可以论证其是可信赖的。这就是指不仅计算机系统所提供的服务是可信赖的,这种可信赖还是可以论证的。而这里的可信赖主要是指系统的可靠性、可用性和可维护性。
我国一些相关专业的学者也提出了自己的观点:可信计算系统是能够提供系统的可靠性、可用性、安全性(信息的安全性和行为的安全性)的计算机系统。
一般意义上,可信性包括很多方面,如正确性、可靠性、可用性、安全性(信息的安全性和行为的安全性)、可生存性、高效率等,而且随着时间和环境的不同其内涵也会随之变化。但是,现阶段系统的可靠性和安全性(信息的安全性和行为的安全性)是用户最关心的两个方面。这说明,现阶段系统的可靠性和安全性(信息的安全性和行为的安全性)是可信任的主要属性。因此,我们可以通俗地简称可信≈可靠+安全(Trust≈Dependability+Security)。
1. 可靠性
可靠性(Reliability)是指在规定的条件下、规定的时间内,系统有效运行的概率。在不同的发展阶段以及人们对系统可靠性的关注的角度不同产生了不同的描述系统可靠性的参数,主要有可靠度,MTTF、MTTR、MTBF、失效率、失效强度等。
1)可靠度参数:系统的可靠性主要从一个系统能够正常工作的时间长短来描述。其定义如下:系统在t0时刻正常工作的条件下,在[t0, t]时间区间内正常工作的概率,R(t)=P{X>t}。
2)失效率、失效强度:失效率是指在t时刻尚未发生失效的情况下,在t时刻以后,单位时间内发生失效的概率。失效强度则是指失效数均值随时间的变化率,即假设软件在t时刻发生的失效数为N(t),显然N(t)是一个随机数,且随时间t的变化而不同,即{N(t),t>0}为一随机过程。设u(t)为随机变量N(t)的均值,即有u(t)=E[N(t)],则λ(t)=du(t)/dt为t时刻的失效强度。
3)MTTF、MTTR、MTBF。
MTTF、MTTR、MTBF是3个简化的可靠性参数。
MTTF(Mean Time To Failure)即平均故障前时间,MTTF=1/λ(t)。
MTTR(Mean Time To Repair)即平均维修时间。
MTBF(Mean Time Between Failure)为平均故障间隔时间。
2. 安全性
安全性(Security)是指系统一旦在发生故障失效时,使其自身以及由此造成相关系统的损坏(或损失)保持在一个可接受(或者是预先规定)的范围之内的概率。换言之,当系统由于某个故障而失效时,不至于造成重大的或灾难性的损坏(损失)。
安全性包括保密性和完整性两个属性。
保密性(Confidentiality)表示未经访问许可禁止访问系统敏感数据的能力。
完整性(Integrity)表示保持数据一致性的能力。
除了可靠性和安全性这两个主要属性以外,可信任还有以下几个比较重要的属性。
3. 可用性
20世纪80年代中期出现了“对用户友好”的口号,这个口号被转换成人机界面的“可用性(Availability)”概念。人们给可用性下了许多定义。
ISO9241/11中的定义:一个产品能被特定用户在特定环境中使用使能有效、高效以及满意达到特定目标的程度。
GB/T 3187—1994(已作废,被GB/T 290099—2016代替)对可用性的定义:在要求的外部资源得到保证的前提下,产品在规定的条件下和规定的时刻或时间区间内处于可执行规定功能状态的能力。它是产品可靠性、维修性和维修保障性的综合反映。
实际上,比较常用Shakel(1991年)对可用性的定义:可用性是指技术的“能力(按照人的功能特性),它很容易有效地被特定范围的用户使用,经过特定培训和用户支持,在特定的环境情景中,去完成特定范围的任务”。
4. 可维护性
可维护性(Maintainability)指系统具有可修复和升级的能力。影响系统可维护性的主要因素有易修改性、可移植性、稳定性、易测试性等几个子特性。
5. 防危性
防危性(Safety)表示系统在给定的时间内不发生灾难事故的能力。
1.1.2 可信计算
广义上来说,可信计算技术是一种通过硬件手段保证平台安全性的技术,其发展最早可以追溯到对安全协处理器和密码加速器的研究。安全协处理器将部分的安全运算转移到协处理器中进行,从而提高整个平台的安全性。通过安全协处理器可以为应用程序建立起安全的计算环境。由于通用的计算机平台执行密码计算的效率并不高,为了适应某些安全应用(如电子商务和电子银行等)的需要,出现了专门进行密码学操作的硬件密码加速器。这些密码加速器一般存储有密钥,并且有一定物理安全保护能力。
但是由于安全协处理器和密码加速器的硬件成本过高,只适用于一些非常特殊的安全应用,不适合大规模的部署。随着对客户端安全性要求的不断提高,传统的基于软件的安全已经不能满足大规模应用的要求,因此迫切需要一种生产成本相对比较低,并且能够提供一定安全功能的硬件模块来增强客户端的安全性。在这种需求背景下,1999年IBM、HP、Intel等国际大公司发起并组建了TCPA联盟,2003年改组为可信计算组织TCG。该组织为可信计算平台的推广起到了积极的促进作用。同时,微软的NGSCB计划和Intel的LaGrande技术(现改名为TXT技术)都提出了可信计算平台的概念。
无论是TCG组织的可信计算平台体系还是微软的NGSCB计划以及Intel的LaGrande技术,其构建可信计算平台的基础和核心都是一个被称为可信平台模块(Trusted Platform Module,TPM)的硬件芯片。基于TPM作为平台硬件信任根,然后通过可信度量、可信存储、可信报告功能保证系统启动和运行中各部件的身份、状态、属性的真实性和可信性,并为基于平台信任的远程证明提供最真实和可靠的依据,形成完备的平台信任体系。TCG组织就很清晰地阐述了可信计算这一思想,即首先在计算机系统中建立一个信任根,再建立一个信任链,从信任根开始,经过硬件平台和操作系统,再到应用,一级度量认证一级,一级信任一级,从而把这种信任扩展到整个计算机系统。
可信计算平台的安全性根植于硬件芯片,对于我国而言,使用国际硬件芯片时,TPM无疑将对我国信息安全产业和国家安全构成潜在的安全威胁。为此,我国2006年成立了可信计算密码专项组,2008年更名为中国可信计算工作组(TCM Union,TCMU),推出了我国自主安全芯片可信密码模块(Trusted Cryptography Module,TCM),并提出了可信计算密码支撑平台的概念。
TCM是我国构建可信计算平台的基础硬件模块,是一个防篡改芯片,拥有一定的抗物理攻击能力,其内部拥有数据保护区域,用于安全地保存密钥、授权数据和数字证书。TCM主要通过以下三项功能来保护平台计算环境可信。
1. 平台完整性度量
TCM安全芯片在系统启动时就开始工作,对于系统加载运行的任何程序都进行完整性度量,并将完整性度量值真实记录在芯片内部。基于TCM存储的完整性度量值,可以参照相应程序的完整性参考值进行比对,获知某个系统程序是否异常,从而采取禁止其运行或者强制系统重启等措施,保证平台安全。
2. 平台身份唯一标识
在TCM安全芯片中存储有身份密钥,可以唯一标识平台身份。基于该硬件身份标识,平台用户可以通过身份密钥签名等方式向远程通信方证明自己的身份。
3. 平台数据封装保护
TCM将平台机密数据与平台状态封装绑定,保证在该平台上加密保护的数据就只能在该平台相同状态下解密和处理,即使恶意攻击者获取了数据加密密钥,也无法在其他平台上获取解密数据。
可信计算密码支撑平台是可信计算平台的重要组成部分,包括密码算法、密钥管理、证书管理、密码协议、密码服务等内容,为可信计算平台自身的完整性、身份可信性和数据安全性提供密码支持。可信计算密码支撑平台是基于TCM作为平台的三个可信根来实现平台安全功能的,即将TCM视为可信度量根,以可信度量根为起点,计算系统平台完整性度量值,建立计算机系统平台信任链,确保系统平台可信;将TCM视为可信报告根,标识平台身份的可信性,具有唯一性,以可信报告根为基础,实现平台身份证明和完整性报告;将TCM视为可信存储根,基于可信存储根实现密钥管理、平台数据安全保护功能,提供相应的密码服务。