可信计算学习
总结的可信计算
可信计算概念
以PC机可信举例,通俗来讲,可信就是在每台PC机启动时检测BIOS和操作系统的完整性和正确性,保障你在使用PC时硬件配置和操作系统没有被篡改过,所有系统的安全措施和设置都不会被绕过;在启动后,对所有的应用,如社交软件、音乐软件、视频软件等应用可进行实时监控,若发现应用被篡改立即采取止损措施。
以杀毒软件、防火墙、入侵检测为代表的传统“老三样”防御系统,需要预先捕捉黑客攻击和病毒入侵的特征信息,属于“事后防御”的“黑名单”机制,难以应对这种未知的恶意攻击。而可信计算作为一种“白名单”机制,类似人体的主动免疫系统,通过区分“自己”和“非己”成分,可及时清除各类未知风险。
此外,传统的安全防护机制往往运行在应用层或操作系统层,是“自上而下”的保护,一旦启动过程中系统被植入了Rootkit/BootKit或恶意固件,这些位于启动链末端的安全防护机制可能完全无法生效。
什么是Rootkit
1985年,美国国防部发布了世界上第一个可信计算标准——《可信计算机系统评价标准》(TCSEC,即著名的“橘皮书”),第一次提出了可信计算基(Trusted Computing Base, TCB)的概念,并把TCB作为信息系统安全的基础。
截止到目前,国际上已形成以TPM芯片为信任根的TCG标准系列,国内已形成以TCM芯片为信任根的双体系架构可信标准系列。
国际与国内两套标准最主要的差异为:
-
信任芯片是否支持国产密码算法,国家密码局主导提出了中国商用密码可信计算应用标准,并禁止加载国际算法的可信计算产品在国内销售;
-
信任芯片是否支持板卡层面的优先加电控制,国内部分学者认为国际标准提出的CPU先加电、后依靠密码芯片建立信任链的模式强度不够,为此,提出基于TPCM芯片的双体系计算安全架构,TPCM芯片除了密码功能外,必须先于CPU加电,先于CPU对BIOS进行完整性度量;
-
可信软件栈是否支持操作系统层面的透明可信控制,国内部分学者认为国际标准需要程序被动调用可信接口,不能在操作系统层面进行主动度量,为此,提出在操作系统内核层面对应用程序完整性和程序行为进行透明可信判定及控制思路。
可信计算的基本思想
信任的获得方法主要有直接和间接两种。设A和B以前有过交往,则A对B的可信度可以通常考察B以往的表现来确定,我们称这种通过直接交往得到的信任值为直接信任值。设A和B以前没有任何交往,但A信任C,并且C信任B,那么此时我们称A对B的信任为间接信任。有时还可能出现多级间接信任的情况,这时便产生了信任链。
在计算平台中,首先创建一个安全信任根,再建立从硬件平台、操作系统到应用系统的信任链,在这条信任链上从根开始一级度量验证一级,一级信任一级,以此实现信任的逐级扩展,从而构建一个安全可信的计算环境。一个可信计算系统由信任根、可信硬件平台、可信操作系统和可信应用组成,其目标是提高计算平台的安全性。
TCG的信任链
CRTM → BIOS/UEFI → OS Loader → OS → Applications,每个阶段逐步建立起一个可信的链条。这被称为静态信任链(Static Chain of Trust),是可信计算中的一个典型实现。
具体来说:
CRTM(Core Root of Trust for Measurement)
- 作用:信任链的起点,是第一个被执行并测量的可信代码。
- 特点:通常嵌入硬件或固件中,负责测量系统启动时的关键数据(例如BIOS的哈希值)。
- 实现方式:这部分代码通常是不可更改的,比如存储在只读存储器(ROM)或固件中。
- 输出:将测量结果存储在TPM的PCR(Platform Configuration Register)中。
BIOS/UEFI(Basic Input/Output System/Unified Extensible Firmware Interface)
- 作用:初始化硬件,加载并测量下一阶段的启动程序(OS Loader)。
- 特点:BIOS/UEFI在启动过程中会对其自身和引导加载器进行测量。
- 输出:将这些测量结果记录在TPM中。
OS Loader(操作系统加载器)
- 作用:加载操作系统内核,并对其进行测量和验证。
- 特点:比如,常见的加载器如GRUB或Windows Boot Manager会被测量,以确保未被篡改。
- 输出:将测量结果存储在TPM中,作为后续验证的基础。
OS(操作系统)
- 作用:在加载并完成自检后,操作系统会继续测量关键组件(如内核模块、配置文件)。
- 特点:操作系统还可以调用TPM验证前面阶段的可信状态,以确保整个链条的完整性。
Applications(应用程序)
- 作用:某些关键应用程序(如安全软件、加密模块)也可以基于操作系统的信任链,对自身或其他应用进行度量和验证。
- 特点:这部分通常由具体的应用场景决定,比如在云计算中,虚拟机管理程序(Hypervisor)可能会成为额外的一环。
信任根
TCG(Trusted Computing Group)定义的信任根(Root of Trust, RoT) 是指在计算机系统或设备中,用于支持安全操作的一个可信赖的硬件或软件基础。它是系统可信计算的基础,提供了一组核心功能,帮助验证和保护系统的安全性。主要包括以下三个核心组件,每个组件具有特定的功能,是建立可信计算环境的基础:
可信度量根(RTM)
- 全称:Root of Trust for Measurement
- 功能:负责对系统关键组件和启动代码进行测量(通常指哈希计算),生成用于验证的可信度量值。这是可信链的起点,通常在系统启动时由固件或硬件实现。
可信存储根(RTS)
- 全称:Root of Trust for Storage
- 功能:用于安全存储敏感信息,例如密钥、度量值和配置数据。它通常依赖于硬件模块(如TPM)来保护这些数据免受篡改或未授权访问。
可信报告根(RTR)
- 全称:Root of Trust for Reporting
- 功能:负责安全报告系统状态和度量值,确保这些数据的真实性和完整性,用于向外部验证方证明设备或平台的可信状态。
打个比方
这样说起来比较抽象,理解比较困难,但实际上这么分很清晰。
想象你的电脑是一个“保险箱”,信任根就是负责确保这个“保险箱”足够安全的部分
- RTM(可信度量根):好比一个“安检仪器”,每次你启动保险箱时,它会扫描检查锁、门和密码系统有没有被改动。
- RTS(可信存储根):就像保险箱里的“秘密隔间”,里面放着你的重要文件(密钥、密码等),确保没有人能偷走或篡改这些文件。
- RTR(报可信报告根):像一个“报警器”,当有人试图打开你的保险箱时,它会告诉你(或别人)当前保险箱是否安全,是否被动过手脚。
可信平台模块(TPM)
**可信平台模块(Trusted Platform Module, TPM)**是可信计算平台的信任根,是一种计算机芯片(微控制器)。该芯片的规格由可信计算组(Trusted Computing Group)来制定。
TPM的组件
TPM 2.0内部结构及模块功能
TCG先后发布过多个版本的TPM标准,其中,TPM 1.2使用较为广泛,但随着信息计算机技术的不断发展,TPM 1.2无法满足新技术下的需求,2014 TCG发布了TPM 2.0,TPM 2.0内部结构及模块功能如下图:
平台配置寄存器(PCR)
**平台配置寄存器(Platform Configuration Register, PCR)**是TPM芯片的基本组成部分之一,它的主要用途是提供一种基于密码学的度量软件状态的方法,度量对象包括平台上运行的软件和该软件使用的配置数据。
TPM在上电时会将所有PCR初始化为全0或全1(根据TPM平台规定的初始状态),调用者不能直接写PCR,只能通过被称为**“扩展”(Extend)**的操作更新PCR的值,这是一种单向哈希计算,其定义如下:
典型的PCR分配如下:
PCR编号 | 用途 |
---|---|
0 | BIOS |
1 | BIOS配置 |
2 | 可选ROM |
3 | 可选ROM配置 |
4 | MBR |
5 | MBR配置 |
6 | 状态转变和唤醒事件 |
7 | 平台制造商特定度量 |
8-15 | 静态操作系统 |
16 | Debug |
23 | 应用程序支持 |
TPM1.2与2.0对比
对比项 | TPM 1.2 | TPM 2.0 |
---|---|---|
平台支持 | 主要面向PC平台设计,不适合服务器平台和嵌入式平台 | 面向多平台 |
本地化 | 密码方案不支持本地化,不利于向世界各国推广 | 支持不同国家使用自己的标准密码算法,例如我国的TPM 2.0芯片支持SM2、SM3和SM4国密算法 |
PCR | 只能使用SHA-1算法进行PCR扩展 | 拥有多个PCR banks,一个bank内所有PCR使用相同算法进行扩展操作,对于不同的bank,扩展操作相互独立,互不干扰 |
可信密码模块(TCM)
**可信密码模块(trusted cryptography module,TCM)**是可信计算平台的硬件模块,为可信计算平台提供密码运算功能,具有受保护的存储空间,是我国国内研究,与TPM对应。但定位不同,TCG组织将TPM定位为系统的可信根。但是TCM定位为可信平台中专用于提供可信密码服务的模块,是可信根的重要组成部分。
结构与功能
可信平台控制模块(TPCM)
功能描述
可信软件栈(TSS)
参考文献
[1] 【可信计算】第五次课:可信计算规范与标准_tpm2 隐私域-CSDN博客
[2] 网络安全之可信计算_计算机
[3] 看见“信任”,可信计算平台的由来解读(TPM、TCM、TPCM、等保2.0解读)。-CSDN博客
[5] 可信计算的前世今生 - 知乎
[6] [可信平台控制模块(TPCM) | openEuler文档 | openEuler社区 | v24.09](https://docs.openeuler.org/zh/docs/24.09/docs/Administration/可信平台控制模块TPCM.html#:~:text=可信平台控制模块(Trusted Platform,Control Module,TPCM)是一种可集成在可信计算平台中,用于建立和保障信任源点的基础核心模块。 它作为中国可信计算3.0中的创新点之一和主动免疫机制的核心,实现了对整个平台的主动可控。)
注:部分图片来源于网络,如有侵权请邮箱联系。
可信计算书籍阅读笔记
可信计算理论与技术
本章为阅读《可信计算理论与技术》的阅读笔记。
可信计算技术
可信计算概论
初识可信计算
可信计算的核心就是要建立一种信任机制,用户信任计算机,计算机信任用户,用户在操作计算机时需要证明自己的身份,计算机在为用户服务时也要验证用户的身份。这样一种理念来自于人们所处的社会生活。
近年来,体现整体安全的可信计算技术越来越受到人们的关注,这正是因为它有别于传统的安全技术,试图从根本上解决安全问题。
可信计算定义与关键技术
可信计算的一些基本概念:
-
可信计算基
可信计算基(
TCB
,Trusted Computing Base)是计算机系统内保护装置的总体,包括硬件、固件、软件和负责执行安全策略的组合体。通常所指的TCB
是构成安全计算机信息系统的所有安全保护装置的组合体(通常称为安全子系统),以防止不可信主体的干扰和篡改。 -
可信计算平台
平台是一种能向用户发布信息或从用户那里接收信息的实体。可信计算平台基于
TPM
,以密码技术为支持、安全操作系统为核心。安全操作系统是可信计算平台的核心和基础,没有安全的操作系统,就没有安全的应用,也不能使TPM
发挥应有的作用。 -
可信根和可信链
可信根和信任链是可信计算平台的核心关键技术。一个可信计算机系统由可信根、可信硬件平台、可信操作系统和可信应用组成。信任链是通过构建一个可信根,从可信根开始到硬件平台、到操作系统、再到应用,一级认证一级,一级信任一级,从而把这种信任扩展到整个计算机系统,可信根的可信性由物理安全和管理安全确保。
可信计算的定义与原理
-
可信计算的定义:
可信计算学术界对可信的统一认识为:可信计算是指计算的同时进行安全防护,使计算结果总是与预期一样,计算全程可测可控,不被干扰。
-
可信计算的原理
可信计算的原理是通过硬件可信根对系统的启动和运行状态进行度量和验证,形成一条完整的信任链,以确保系统处于可验证的可信状态。
可信计算技术体系
-
可信根(Root of Trust,
RoT
)是最基础的可信部件,是系统可信的源头,既具备安全功能又具备可信功能,且不需要其他机制提供安全支撑的底层机制。在除可信3.0外的可信框架中,可信根以可信平台模块(Trusted Platform Module,TPM
)为基础。 -
可信平台(Trusted Platform,
TP
)是实现可信计算功能的设备或系统。 -
可信软件栈(Trusted Software Stack,
TSS
)是可信计算体系中的一组软件接口和工具,它将可信硬件(如TPM
)的功能暴露给操作系统和应用程序,以便它们能够调用和管理这些功能。 -
可信网络连接(Trusted Network Connection,
TNC
)是一种网络安全框架,旨在确保只有经过可信验证的设备和系统才能接入网络,防止不受信任或被攻陷的设备威胁网络安全。
嵌有TPM
的平台被称作可信计算平台。
可信平台模块(TPM
)
TPM
通过可信软件栈(TSS
)为可信计算平台上的应用程序提供完整性度量、存储和报告,远程证明,数据保护和密钥管理4大核心功能。
可信平台模块(TPM)
概述
可信计算工程初步
本章为阅读《可信计算3.0工程初步(第二版)》的阅读笔记。
概述
什么是可信计算
可信计算发展过程
可信3.0的应用模式
可信机制
可信策略
可信保障
可信计算基本概念
可信根和可信链
可信根
可信链
可信密码服务
可信存储
可信度量
可信报告和可信认证
可信部件
可信密码模块(TCM)
可信平台控制芯片(TPCM)
可信主板
可信软件基
可信网络连接
可信体系架构
可信软件基框架原型Cube
Cube介绍
开发流程
Cube实例
Linux环境准备
Ubuntu16.04
调试工具gbd
gcc、make等工具包
Cube基本环境编辑
下载Cube
1 | git clone https://github.com/biparadox/cube-1.3 |
这个指令无法成功下载,原因暂未知,直接从官网下压缩文件然后解压吧
1 | unzip cube-1.3-master.zip -d cube |
查看文件夹内部
1 | cd cube-1.3/ |
其中set_env.sh和env_build.sh为环境变量设置和编译脚本,
cubelib为cube架构内部库的源码目录,
proc目录下为cube架构的主程序和一组通用模块的源码,
include为模块开发时可使用的库函数列表,
example目录下则是示例实例。
环境变量配置
1 | vi set_env.sh |
此处改成set_env.sh所在位置,注意需要去掉引号
随后执行source set_env.sh命令,完成编译环境设置。
使用命令查看系统中Cube环境相关变量的配置情况
1 | env| grep CUBE |
系统每次进入开发环境都需要执行本脚本,可以在用户目录的.bashrc文件最后添加如下命令,以使其每次都能自动完成设置。
1 | source /home/syz/cube-1.3/set_env.sh |
编译Cube的基本库函数
进入cube-1.3目录下的cubelib目录,执行ls查看,并在该目录下执行make。
1 | cd cubelib |
编译成功后,进入proc目录下。proc 目录包含Cube 的主程序、系统子块、一些示例子模块与常用的功能子模块。执行ls命令查看,可看到如下结果。
1 | sudo dmidecode | grep UUID |
1 | cat cube_audit.log |