文章背景
参考链接:
公司在做可信计算这一块,所以学了点可信的基础内容,所有的内容均来自B站的视频课程,讲的还是挺好的,建议看一下。
研究背景
随着计算机应用的不断发展,信息安全问题层出不穷。目前广泛实施的网络安全方法机制依赖于传统的“老三样”:防火墙、入侵检测、病毒扫描。存在的问题是,防火墙的维护成本越来越高,入侵检测系统越来越复杂,病毒库越来越庞大,极大的提高了性能损耗和空间占用。同时,针对新的外部形式的攻击和内部的破坏束手无策。
核心思想:可信计算承认系统中存在的脆弱点,不去封堵,而是排除异己,禁止计算机系统中非授权软硬件的行为,从宏观的角度保证系统脆弱点不会被非法、恶意利用。
当一台设备要接入系统,该设备要提供可信报告,当报告被系统采纳后,才能接入系统,并且接入系统之后,系统中的可信检测部件会对设备进行行为检测。
可信报告,主要通过静态度量实现:
行为检测,主要通过动态度量实现:
发展概况:
- 1.0时代,通过纯软件实现的容错、故障诊断等机制
- 2.0时代,增加硬件实现的信任根TPM,构建信任链
- 3.0时代,“宿主+可信”双节点主动免疫可信计算架构
目前已经进入3.0时代。
可信计算原理
国际可信联盟。
可信:如果有个实体的行为总是以预期的方式,朝着预期的目标运行,那么可以认为它是可信的(TCG)
可信计算:指计算运算的同时进行安全防护,计算全程可测可控,不被干扰,只有这样能使计算结果总是与预期一样(沈昌祥院士)
可信计算的核心是:结果 == 预期。
信任:
- 直接信任:A➡️B
- 间接信任:A➡️C && C➡️B => A➡️B
当多个事件,相互之间信任,便构成了信任链。
构建可信系统:对全局进行可信验证,将所有可信实体都加入到信任链的过程,信任链的起点被称为信任根。最终达到识别“自己”,排除“非己”的过程。
可信2.0度量过程
机器加电后,CPU运行的第一块代码在BIOS内,所以信任链的起点(可信度量根)要装在BIOS的引导区域中。之后可信度量根对BIOS的其他区域进行可信验证,验证完成之后,将控制器交给BIOS,BIOS再对硬件、ROM以及引导扇区进行度量。验证通过之后,BIOS将控制权交给引导扇区,由此信任链逐步扩展至操作系统、应用程序、网络。通过以上步骤,将计算机的关键部件加入到静态信任链中。
以上内容为可信计算2.0的度量过程。
TCG可信体系缺陷
- RTM安全性不够高:RTM存储在TPM之外(BIOS引导中),不能防御来自内部的恶意攻击,且BIOS采用的都是可擦除内存,安全性不够高
- 被动度量:2.0实现的是被动度量的过程。CPU是主体,CPU先启动,由CPU对待度量数据进行收集并发送给TPM,如果CPU被劫持,度量失去效果
- 不具备控制功能:只能CPU实现对硬件系统的控制
可信计算3.0
相比2.0,在TPM中增加了自主化密码体系,集成可信度量根以及控制模块,构成TPCM(可信平台控制模块)。
与2.0相比,TPCM从 设备接口换到了主设备接口,所以它可以先于CPU启动并主动收集待度量数据,实现主动度量,也可以直接对设备进行控制。可信计算3.0大大提高了可信计算的安全性。
TPM | TPCM | |
---|---|---|
完整性度量 | 先启动BIOS,BIOS加载TPM芯片才能发挥度量作用 | 优先于CPU启动,并主动对BIOS进行验证;验证通过后,通过电源和总线控制机制允许CPU启动运行 |
可信报告 | 不对度量结果进行比较,只将度量结果存储在PCR寄存器中 | 对度量结果进行比较,同时将错误的度量结果通过触发中断方式主动报告给平台 |
控制功能 | 仅储存当前硬件设备的度量信息,不具有控制功能 | 可以通过检查硬件设备的可执行程序、控制策略配置信息、工作模式配置信息和OptionROM的完整性,以及当前硬件电路的工作状态,判断硬件设备的可信性;可以通过配置、切换控制策略和工作模式配置信息,实现对硬件设备的控制功能 |
可信密码功能 | 公钥密码算法只采用了RSA,杂凑算法只支持SHA1系列,回避了对称密码 | 在密码算法上,全部采用国有自主设计的算法;在密码机制上,采用对称和非对称密码相结合的体制;在证书结构上,采用双证书体系(平台证书和用户证书) |
以上内容都是针对静态度量的。
静态度量:仅能确保系统在启动时是安全可靠的,但并不能确保在计算机系统的整个运行过程中都是安全可靠的。
动态度量:基于信息流的动态度量模型和基于行为的动态度量模型。
基于信息流的动态度量模型:监控内存中具有只读性质的内存段是否遭受篡改与破坏,或堆栈中的数据是否异常
基于行为的动态度量模型:首先在可信环境下进行应用行为分析,存入可信基准库,然后实时监控应用行为并与可信基准库进行对比
应用行为的检测方法:
最常用的是调用操作系统中的钩子函数,对系统会进程中的事件或特定的消息进行监控。
在可信计算3.0中,动态度量主要是通过可信软件基(TSB)实现的。通过植入操作系统内核的方式,在TPCM的支撑下实现对宿主系统中软件资源的度量和控制,向上层软件传递安全芯片可信的功能。
具体实施控制机制的内核可信子系统+管理控制策略的可信管理应用(没明白)。
主动监控:通过操作系统调用钩子、虚拟机监视器、底层库函数等位置实施监控
启动顺序:操作系统最小内核->TSB->操作系统其余部分->可信管理应用->其他应用
双体系结构:实现传统功能的宿主软件系统+实现可信功能的可信软件基
可信软件基只进行监控,与宿主系统是逻辑隔离,宿主系统是感受不到可信软件基的。
由于可信软件基进行24小时不间断监控,所以可信系统就有了主动免疫的功能:内核子系统通过宿主系统中的可信监控点实现对系统资源访问行为的实时监控。再结合安全管理中心的策略下发以及审计功能,就形成了计算节点的可信架构。
可信软件基的结构:可信软件基是可信计算平台中实现可信功能的可信软件元件的全体,寄宿于宿主软件系统之中,由宿主系统内部多个可信软件元件逻辑上互联构成,是一个在逻辑上独立的可信子系统。
可信计算体系
等保2.0明确将可信计算加入要求。
可信宿主 | TCM | TPCM | 检验软件 | 可信软件基(TSB) | ||
静态可信验证基础软件可信 | 建链检验应用程序可信 | 动态度量执行环境 | 实时感知关联态势 | |||
BIOS | 引导OS,装载系统 | 应用加载 | 应用执行 | 所有执行 | ||
第一级 | 第二级 | 第三级 | 第四级 |
等保2.0要求,对一级系统建立到操作系统静态信任链。
对二级系统建立到应用程序的静态信任链
对三级系统,则要在关键点进行动态度量
对四级系统,则对所有的操作进行动态度量
安全保护环境 | 第一级系统 | 第二级系统 | 第三级系统 |
---|---|---|---|
设计策略 | 计算节点都应基于可信根实现开机到操作系统启动的可信验证 | 计算节点都应基于可信根实现开机到操作系统启动,再到应用程序启动的可信验证,并将验证结果形成审计记录 | 在第二级系统安全保护环境的基础上,保障基础计算资源和应用程序可信,确保关键执行环节可信 |
计算环境 | 可基于可信根对计算节点的BIOS、引导程序、操作系统内核等进行可信验证,并在检测到其可信性受到破坏后进行报警 | 可基于可信根对节点的BIOS、引导程序、操作系统内核、应用程序等进行可信验证,并在检测到其可信性受到破坏后进行告警,并将验证结果形成审计记录 | 可基于可信根对节点的BIOS、引导程序、操作系统内核、应用程序等进行可信验证,并在应用程序的关键执行环节对系统调用的主题、客体、操作可信验证,并对中断、关键内存区域等执行资源进行可信验证,并在检测到其可信性受到破坏时采取措施恢复,并将验证结果形成审计记录,送至管理中心 |
区域边界 | 可基于可信根对区域边界计算节点的BIOS、引导程序、操作系统内核等进行可信验证,并在检测到其可信性受到破坏后进行报警 | 可基于可信根对区域边界计算节点的BIOS、引导程序、操作系统内核、区域边界安全管控程序等进行可信验证,并在检测到其可信性手动破坏后进行报警,并将验证结果形成审计记录 | 可基于可信根对计算节点的BIOS、引导程序、操作系统内核、区域边界安全管控程序等进行可信验证,并在区域边界设备运行过程中定期对程序内存空间、操作系统内核关键内存区域等执行资源进行可信验证,并在检测到其可信性受到破坏时,采取措施恢复,并将验证结果形成审计记录,送至管理中心 |
通信网络 | 在设备连接网络时,对源和目标平台身份进行可信验证 | 在设备连接网络时,对源和目标平台身份、执行程序进行可信验证,并将实验结果形成审计记录 | 在设备连接网络时,对源和目标平台身份、执行程序及其关键执行环节的执行资源进行可信验证,并将验证结果形成审计记录,送至管理中心 |
等保2.0对工控系统提出了一个中心+三重防护的要求。
一个中心是指安全管理中心,三重防护是指在计算环境、区域边界加入可信验证,在通信网络加入身份认证,加密通信等手段。
应用难点
基线建立:
不论是静态度量还是动态度量,都需要先建立基线,但既有的系统很多都是长期“带病运行”状态,很难建立“健康”状态下的基线。
可信软件基安装:
- 工控系统涉及众多的操作系统,部分操作系统或过于陈旧或小众或是裁剪版,开发适配的可信软件基难度较大
- 部分设备内存容量非常有限,无法安装或运行可信软件基