阿里妹导读:可信计算(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四级(可交付的最高等级)评测的原因之一。
在目前中国云计算可信发展初期阶段,安全硬件、服务器、系统、应用等厂商需要联合起来,形成协同共赢的生态,共同推动可信的深入发展,为构建更稳固的安全体系固本强基。
本文作者:肥义
阅读原文
本文来自云栖社区合作伙伴“阿里技术”,如需转载请联系原作者。