为什么技术人一定要懂点“可信计算”?

阿里妹导读:可信计算(TrustedComputing,简称TC)是一项由TCG(可信计算组)推动和开发的技术。可信的核心目标之一是保证系统和应用的完整性,从而确定系统或软件运行在设计目标期望的可信状态。可信和安全是相辅相成的,可信是安全的基础,了解可信才能更好地了解安全,才能为构建更稳固的安全体系固本强基。

一、什么是可信计算

可信并不等同于安全,但它是安全的基础,因为安全方案、策略只有运行在未被篡改的环境下才能进一步确保安全目的。通过保证系统和应用的完整性,可以确保使用正确的软件栈,并在软件栈受到攻击发生改变后能及时发现。总的来说,在系统和应用中加入可信验证能够减少由于使用未知或遭到篡改的系统/软件遭到攻击的可能性。

以PC机可信举例,通俗来讲,可信就是在每台PC机启动时检测BIOS和操作系统的完整性和正确性,保障你在使用PC时硬件配置和操作系统没有被篡改过,所有系统的安全措施和设置都不会被绕过;在启动后,对所有的应用,如社交软件、音乐软件、视频软件等应用可进行实时监控,若发现应用被篡改立即采取止损措施。

具体来说,可信计算技术对安全有如下提升:

  • 操作系统安全升级,如防范UEFI中插入rootkit、防范OS中插入rootkit、以及防范病毒和攻击驱动注入等。
  • 应用完整性保障,如防范在应用中插入木马。
  • 安全策略强制实现,如防范安全策略被绕过/篡改、强制应用只能在某个计算机上用、强制数据只能有某几种操作等。

可信主要通过度量和验证的技术手段实现。度量就是采集所检测的软件或系统的状态,验证是将度量结果和参考值比对看是否一致,如果一致表示验证通过,如果不一致则表示验证失败。

度量分为静态度量和动态度量两种。静态度量通常指在运行环境初装或重启时对其镜像的度量。度量是逐级的,通常先启动的软件对后一级启动的软件进行度量,度量值验证成功则标志着可信链从前一级软件向后一级的成功传递。以操作系统启动为例,可信操作系统启动时基于硬件的可信启动链,对启动链上的UEFI、loader、OS的image进行静态度量,静态度量的结果通过云上可信管理服务来验证,以判断系统是否被改动。

动态度量和验证指在系统运行时动态获取其运行特征,根据规则或模型分析判断系统是否运行正常。

可信计算另一个核心部分是可信根,通常是可信硬件芯片。可信计算通过芯片厂家植入在可信硬件中的算法和秘钥,以及集成的专用微控制器对软件栈进行度量和验证来确保可信。根据安全芯片和其上运行的可信软件基(TrustedSoftware Stack)分类,业界目前主流的可信计算标准主要有三种:TrustedPlatform Module (TPM)、Trusted Cryptography Module (TCM)和Trusted Platform Control Module(TPCM)。

TPM/TCM的优势在于技术成熟、商业化条件好,产品商业化已经超过十年。微软和谷歌都有基于TPM的商业化的可信云方案。TPCM是基于国产化思路提出的可信标准。相对TPM和TCM,TPCM对硬件和可信软件栈(TSS:Trusted Software Stack)架构做了较大的改动。TPCM最大的优点是可以做主动度量,但在计算主机上尚未商业化和产品化成熟。

二、等保2.0关于可信要求的解读

等保2.0将可信提升到一个新的强度。在等保一到四级都有可信的要求,主要在三个领域:计算环境可信、网络可信、接入可信。以计算环境可信举例,等保2.0中可信四级要求如下:

可基于可信根对系统引导程序、系统程序、重要配置参数和通信应用程序等进行可信验证,并在应用程序的所有执行环节进行动态的可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心,并进行动态关联感知。

可信基本要求之一“基于可信根对系统引导程序、系统程序、重要配置参数和通信应用程序等进行可信验证”在业界已有方案,如基于TCM安全芯片的系统启动度量和验证。等保2.0中对这项要求没有明确提出动态的可信验证,原因之一是系统(如操作系统)过于复杂,很难形成完整的甚至局部的验证基准值,在工程实现上无法保障规则的完整性,误报、漏报无法控制,严重影响安全和用户体验。基于这个判断,传统的基于静态度量和验证的系统可信启动应该满足这项要求。

与系统可信不同,等保2.0四级对应用可信有明确的动态验证要求。再复杂的应用相对操作系统来说也简单得多,所以做应用动态验证在工程上是可行的,挑战是如何在不严重影响应用的功能、性能,即保证用户使用体验的前提下做到应用动态可信。解决这个问题的实质在于如何选择应用的度量对象,确定度量值,以及如何收集和管理验证基准值,或所谓的应用行为白名单。

应用可信的实现可通过只允许指定的应用,即所谓白名单应用在某个环境下(一般是物理主机、虚拟机上或容器)运行,非白名单应用无法在目标环境中运行;同时白名单应用受到监控,其运行行为一旦被发现异常,系统会根据异常行为的安全危害等级报警并采取相应措施,如阻断应用、删除应用、重启系统等。对环境中运行的应用进行限制可减少不安全的应用对云平台进行攻击的可能性,而对应用的监控可以及时发现攻击并做响应。

等保2.0并没有明确规范应该如何实现应用可信,原因之一是在现有的安全实践中没有很好的方式可以参考。可信最终是为安全服务的,如果应用的动态验证能够帮助及时发现攻击甚至阻止攻击,将攻击造成的危害降至最低,这样的应用可信就应该是有效的。

等保2.0要求的动态关联,可理解成在可信验证失败时对被监测的对象及时采取措施,阻断攻击并对可能遭受攻击的资产进行保护。实现的方式可通过安全管理中心有效地传递验证结果数据,使其他安全手段能够及时响应。

三、阿里云可信计算实践

云平台安全依赖操作系统、数据库、虚拟化等技术,而这些系统/技术会存在原生的安全问题,使攻击者可利用系统/技术漏洞实现其攻击目的。同时,平台上的第三方系统软件、应用软件等可能会在安装或升级过程中被修改或植入攻击性模块,存在通过类似中间人攻击或内部攻击替换正版软件的风险。

阿里云提供了较完整的平台安全措施和强边界防御能力,同时通过可信来有效减小攻击面和攻击源,提升攻击门槛,使云平台安全升级。所谓可信,即云平台、云上应用以及云用户运行环境、应用,通过使用用户指定的软件而达到行为的可预判,以此来确保云平台上运行环境以及其上运行的应用的可信,来减少由于未知因素引发成功攻击的可能性。

阿里云可信是依赖云平台硬件安全中的可信计算能力,通过自研开发的可信服务,实现云上的软件栈可信,即:云平台安全可信、云平台上运行的应用可信,达到云平台整体安全可信升级的目标。

云平台可信即确保云平台上运行的系统软件,如固件、操作系统(OS)都是安全的,保障平台上的系统不被篡改,即保持运行环境是所要求的运行环境。为实现这个目标,主要采用的手段是对系统软件的度量和验证,而度量和验证自身的可信通过云平台可信硬件来支持。可信硬件作为云服务器或接入用户服务器的可信根,通过在硬件内部实现最基础的安全功能如秘钥存储、安全算法实现从下到上逐级的可信链传递。

阿里云可信根采用在商业和产品化上成熟的TCM,通过使用装有TCM可信芯片的可信服务器作为系统的可信根逐级实现云平台以及其上业务的可信。在未来国有化和更强大的TPCM商业化成熟后,会过渡到用TPCM支持的可信服务器。

TCM能保障物理机的可信,而云平台的物理宿主机上一般需运行多个虚拟机,但一个宿主机通常有一个TCM芯片,为保证对虚拟机的度量,需要有效地对TCM资源进行分配;同时虚拟机会因业务的需要而迁移,为保证虚拟机度量的延续性,其可信相关的安全管理数据如最后的PCR值等应同步迁移到目标主机上,为实现上述需求,阿里云开发TCM虚拟化(vTCM)以安全管理TCM的资源和数据。

云平台可信实现框架图如下:

阿里云对白名单应用的保护是通过静态度量和验证、动态度量和验证来实现的,同时采用动态关联感知技术进一步确保应用可信。

静态度量和验证在应用启动之前对其镜像进行校验,仅校验合格后才允许应用启动运行。校验的基准值为应用开发者发布的应用签名,或是可信服务提供的校验基准值。

动态度量和验证采用的是通过应用行为白名单来实现的。被度量和验证的应用行为是系统调用行为,包括进程启动、进程调用、网络访问、文件访问等。系统调用是应用的核心执行动作,一个被攻击过、不再可信的应用在执行实现攻击者目标时必须通过系统调用实现,也就是说,通过对系统调用的监测能够有效地发现应用异常,即不再可信。实现应用可信的具体方式是首先通过对白名单应用的分析,收集用户正常行为,并以此建立行为规则库,然后根据实时采集的应用行为数据,对比应用行为规则库进行判断。如果应用行为无法匹配任何一条规则,这个行为会被判断为异常,可信云决定是否告警或终止应用运行。

此外,动态关联感知技术通过对应用行为特征的判断,可发现应用在不调用白名单以外的情况下的应用异常。动态关联感知通过机器学习产生应用行为基线,在应用运行时采集了一段时间应用的行为,通过大数据分析和机器学习的方式形成应用行为特征,并以此对应用行为特征异常作出判断。

阿里云可信应用可信的实现方式如下:

四、结语

可信和安全是相辅相成的,可信是安全的基础,但可信自身的实现也需要有安全机制,有安全手段配合才能更有效,例如操作系统的只读安全措施可以大大减少系统动态度量的范围,使系统动态度量成为可能。

目前,国际领先云服务商如谷歌的GCP和微软的AZURE都已有完整的基于静态度量/验证的云平台可信方案,AWS可信方案也在开发中。在国内,阿里云是首家具备可信能力的云厂商,其专有云平台研发了基于可信技术的云平台入侵检测系统,满足了等保2.0对于可信部分的高标准要求,这也是其成为通过等保2.0四级(可交付的最高等级)评测的原因之一。

在目前中国云计算可信发展初期阶段,安全硬件、服务器、系统、应用等厂商需要联合起来,形成协同共赢的生态,共同推动可信的深入发展,为构建更稳固的安全体系固本强基。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

很用心的为你写了 9 道 MySQL 面试题,建议收藏!

来源 | Java 建设者责编| Carol封图| CSDN下载于视觉中国 MySQL 也是作者本人正在学习的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储、锁、磁盘寻道、分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的…

OpenTelemetry-可观察性的新时代

有幸在2019KubeCon上海站听到Steve Flanders关于OpenTelemetry的演讲,之前Ops领域两个网红项目OpenTracing和OpenCensus终于走到了一起,可观察性统一的标准化已经扬帆起航。 这篇文章旨在抛砖引玉,希望能够和更多的同学一起交流可观察性相关的…

JavaScript-严格检查模式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--前提&#xff1a; IDEA需要设置支持ES6 语法use strict; 必须写在JavaScript 的第一行严格检查模式&#xff0c;预防JavaS…

我们为什么需要 SpringBoot?

作者 | 阿文&#xff0c;责编 | 郭芮头图 | CSDN 下载自东方IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;任何先进技术的产生都不是凭空出现的&#xff0c;SpringBoot 也不例外&#xff0c;SpringBoot 是基于Spring 的基础上产生的。总所周知&#xff0c;Spri…

高德网络定位之“移动WiFi识别”

导读 随着时代的发展&#xff0c;近10年来位置产业蓬勃发展&#xff0c;定位能力逐渐从低精度走向高精度&#xff0c;从部分场景走向泛在定位。设备和场景的丰富&#xff0c;使得定位技术和能力也不断的优化更新。定位能力包括GNSS、DR&#xff08;航迹推算&#xff09;、MM&a…

JavaScript-字符串

字符串 正常字符串使用单引号 或者 双引号 包裹注意转义字符 \ \ \n \t \u4e2d \u#### Unicode字符 \x41 Ascll字符多行字符串编写 // tab 上面 esc下面的引号 let msg helloworld你好 console.log(msg)模板字符串 let name ht let age 5; let msg hello${name}你…

Alibaba Sentinel规则持久化-拉模式-手把手教程【基于文件】

文章目录一、拉模式架构二、原理简述三、编写3.1 加依赖3.2 写代码3.3 配置四、优缺点分析五、你可能会有的疑问六、参考文档七、案例测试7.1. 添加流控规则7.2. 服务停止7.3. 重新启动服务7.4. 调用接口7.5. 查看流控规则本文实现基于拉模式的Alibaba Sentinel规则持久化。一、…

开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?

从用户的视角来感受一个开源项目的成长&#xff0c;是我们推出「开发者说」专栏的初衷&#xff0c;即在开发者进行开源项目选型时&#xff0c;提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿&#xff0c;本文是「开发者说」的第9篇&#xff0c;作者郑扬勇&#xff0…

面试时遇到「看门狗」脖子上挂着「时间轮」,我就问你怕不怕?

来源 | Why技术封图 | CSDN 下载于视觉中国之前写了一篇文章&#xff0c;有一个小节中写到这样一段话&#xff1a;于是就有读者来问了&#xff1a;老哥&#xff0c;看门狗介绍一下呗。面试的时候被问到了&#xff0c;没有回答上来。听到这个问题我脑海里首先浮现出了几个问题&…

海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解

前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库。Tablestore在阿里云官网上有各种文档介绍&#xff0c;也发布了很多场景案例文章&#xff0c;这些文章收录在这个合集中《表格存储Tablestore权威指南》。值得一提的是&#xff0…

JavaScript-数组

数组 Array可以包含任意的数据类型 var arr [1,2,3,4,5,6] arr[0] // 取值 arr[0] 3 // 赋值长度 arr.length arr.length 10 // 长度是可变的注意&#xff1a;假如给arr.length 赋值&#xff0c;数组大小就会发生变化。如果赋值过小&#xff0c;元素就会丢失 获取指定字…

Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】

前面&#xff0c;已经为Sentinel实现了 基于拉模式的规则持久化 &#xff0c;本文来实现基于 推模式的规则持久化。 文章目录一、推模式架构图二、原理简述三、微服务改造3.1. 加依赖3.2. 添加配置四、Sentinel控制台改造五、编译 & 启动六、测试测试1&#xff1a;测试2&am…

现代IM系统中的消息系统架构 - 实现篇

序 消息类场景是表格存储&#xff08;Tablestore&#xff09;主推的方向之一&#xff0c;因其数据存储结构在消息类数据存储上具有天然优势。为了方便用户基于Tablestore为消息类场景建模&#xff0c;Tablestore封装Timeline模型&#xff0c;旨在让用户更快捷的实现消息类场景…

linux 环境 RocketMQ 4.8.0 安装、部署控制台

windows下RocketMQ下载、安装、部署、控制台 https://gblfy.blog.csdn.net/article/details/115734482 文章目录一、软件下载二、启动2.1. Linux/Unix/MacOS安装教程2.2. 验证RocketMQ功能正常&#xff08;可选&#xff09;2.3. 服务停止三、安装可视化插件3.1. github下载3.2.…

数据洪流时代,开发者这样硬核突围!

随着社会信息化的脚步加快&#xff0c;我们每个人无时无刻都在产生数据&#xff1a;刷抖音、聊微信、视频会议、点外卖……拇指轻轻一点击的背后&#xff0c;将引发意想不到的数据洪流&#xff1a;据 IDC 发布《数据时代 2025》的报告显示&#xff0c;全球每年产生的数据将从 2…

机器学习在交通标志检测与精细分类中的应用

导读 数据对于地图来说十分重要&#xff0c;没有数据&#xff0c;就没有地图服务。用户在使用地图服务时&#xff0c;不太会想到数据就像冰山一样&#xff0c;用户可见只是最直接、最显性的产品功能部分&#xff0c;而支撑显性部分所需要的根基&#xff0c;往往更庞大。 地图…

Kubenetes 监控一站式解决方案:阿里云 Prometheus 免费公测

Prometheus是目前企业级云原生应用的首选开源监控工具。作为云原生计算基金会&#xff08;CNCF&#xff09;第二个毕业的项目&#xff08;第一个是Kubernetes&#xff09;&#xff0c;Prometheus对K8s容器环境有很好的原生支持。近日刚刚发布免费公测的阿里云Prometheus&#x…

SpringBoot2.x Nacos RocketMQ 事务消息

需求背景&#xff1a; 现在有内容中心&#xff08;content-center&#xff09;和 用户中心&#xff08;user-center&#xff09;2个微服务&#xff0c;请求内容中心&#xff0c;发送消息给用户中心&#xff0c;完成为指定用户添加积分操作。 文章目录一、准备工作1. 版本对照2.…

阿里云宣布3年再投2000亿

4月20日&#xff0c;阿里云宣布&#xff1a;未来3年再投2000亿&#xff0c;用于云操作系统、服务器、芯片、网络等重大核心技术研发攻坚和面向未来的数据中心建设。 近期&#xff0c;谷歌、美团等相继关闭或收缩云计算业务。在当前经济形势下&#xff0c;阿里云是否会缩减投入&…

JavaScript-Map和Set

ES6新特性 Map var map new Map([[wang, 23],[ht, 22],[test,[1,2,3,yy]],[3,test num]]) // 通过 key获取 value var test1 map.get(test); var num map.get(3); console.log(test1) console.log(num) // 添加新的 键值对 map.set(admin, 123456) console.log(map) // 修…