导语:本文整理自【弹性计算技术公开课——ECS安全季】中,阿里云弹性计算产品专家唐湘华和阿里云弹性计算高级技术专家聂百川带来的收官课程《从零构建机密计算平台的解决方案》一节。
1. ECS产品安全体系及机密-计算介绍
用户将数据放到云上,最担心的是数据安全的问题。一方面,担心云上的数据链路不够完整,或担心恶意攻击者的窃取,同时也会担心云服务商自己监守自盗,touch用户的数据。
接下几个环节,将会看到阿里云为打消用户对数据安全的顾虑,在云上构建一个数据世界的保险柜,专门保护用户的关键数据,这个保险柜会从最底层的技术原理上锁死所有的潜在的数据威胁。
今天,数据已经成为和土地、劳动力、资本、技术并重的第5种生产要素,它的重要性不言而喻。如何在合法合规的前提下检验数据价值最大化,已经成为每个企业关心的重点问题。国家队也在各个层面全面推动促成,如国家最新的会计准则中明确,数据它可以作为企业资产的一部分进行相关的金融活动,如交易、质押融资等,这其实是为未来数据大规模的交易流动奠定基础。
另一方面,随着AIGC大模型的兴起,数据的关键性更加凸显,大语言模型AIGC的它的关键要素,第一数据,第二算法,第三算力。算法,开源的算法几乎可以匹敌闭源的商业公司,比如拉玛这种开源大模型,它的精度、响应能力、准确度,都达到达到很好的程度,并且通过各种开源网站可以轻松获取。算力,只要有钱都可以得到,唯独数据是一家企业独有的,没有办法随意得到。目前,全世界面临的这种数据安全的威胁愈加严峻,一方面数据持续的爆炸式增长,关键数据太多,来不及保护。
另一方面恶意攻击者持续升级的攻击手段层出不穷,防不胜防。比如今年最大的数据泄露事件,使用公司的产品和中勒索病毒公司,包括像IBM、普华永道传统的数据保护中的强者。
客户对于要求的数据赎金最高达到8000万美金,所以可以看到数据的价值以及安全威胁的形式,可见一斑。
数据的保护是所有企业的重中之重,在数据安全的保护中即使是最资深的安全专家,也不得不面临各种各样的问题。比如防数据泄露,除黑客、病毒这种手段窃取数据之外,企业内部的数据管理混乱,工作人员的安全意识淡薄,都有可能导致数据泄露。
其次是暗数据的存在。让数据想保护都不知道从哪开始,比如现在物理货运,如送货单或者上面的合同发票,这些数据其实都是以纸质的扫描件或者种纸质的文件存在,它是一种非结构化的数据,这里面往往包含大量的企业的、个人的隐私数据。这些数据的存在,企业往往是看不见,甚至是不知道。
最后一方面是数据在交易也好或者共享,做联邦学习、同态加密、整个数据流动过程中,需要有严格的数据保护,需要保证多方在数据共享、共同建模的场景下的数据安全,要求做到数据的可用但不可见。
所有的阿里云基于对市场的理解以及用户在数据安全保护过程中遇到的痛点问题,阿里云都是针对性的从数据安全、数据存储、数据计算全链路的过程构建数据安全保护网。
首先是针对数据存储中的安全保护,云上的用户一般将数据放在云盘中,针对这一部分数据,提供云盘数据的加密能力,包括快照加密能力,在操作系统镜像上面,也会提供镜像加密,镜像安全扫描等能力,全方位的保护用户数据存储在云上的安全。其次是针对数据传输中的安全保护,阿里云也构建全面的网络防攻击网,比如一个用户,从登录阿里云开始,从创建第一台云服务器开始,默认进入到阿里云防攻击网络的保护体系内,比如访问控制、安全组、网络隔离、网络的ACL,包括防火墙等。
更进一步的,阿里云会主动的对数据包进行进行入侵检测,如流量日志,深度包检测等能力,让病毒和黑客无所遁形。最后针对数据计算过程中的安全保护,也是阿里云今年重点构建的能力,是补齐整个数据安全保护链路中的最后一环,数据计算过程中主要指应用程序它在运行期间相关的数据在内存、缓存,甚至包括寄存器中频繁读写的过程。阿里云主要采用TEE硬件机密计算的能力,比如Intel SGX/TDX、AMD SEV、海光CSV,对内存中频繁读写的更新数据,进行加密保护,确保运行中数据的安全。
机密虚拟机是阿里云今年重点构建的数据安全保护的能力,整个能力覆盖Intel、AMD、海关三大CPU平台,其中在Intel平台上,早在第7代时,在2022年的时候,推出g7t这款实例,它是实现基于Intel SGX的技术的机密虚拟机能力,今年全新推出8代的Intel基于Sapphire rapid,后面演进到EMR,这个实例称为g8a。g8a实例基于Intel最新的处理器,也是在行业内首发的实现基于Intel TDX技术的机密虚拟机,核心是解决上一代SGX使用门槛过高的问题,后面其实也会更进一步讲解两者的区别。
在AMD平台上,今年全新推出8代AMD实力g8a和g8ae,除本身在性能和性价比大幅度提升之外,在8代AMD实例产品上实现基于AMD SEV技术的机密虚拟机,用户不需要对现有的业务进行任何代码级别的改造,只要在官网控制台购买,如g8a实例是勾选SEV的能力,业务直接可以运行在SEV的机密虚拟机,它的数据在内存中默认是全部加密。在海光平台系列上,最新推出基于海光3号的实例g7h,g7h实例搭配阿里云自研的CIPU架构以及中国自主研发的海光处理器,在操作系统层面,兼容国产的像麒麟、统信操作系统。同时支持国密加入CSV机密虚拟机,同时还支持VTPM可信计算,在g7h这段实例上,不管是从硬件还是到软件,全链路的做到满足数据安全的能力,可以满足国内关键基础设施,如政务类系统、关系民生的系统。这些系统对极致稳定性、极致安全性的需求。
下面所有基于Intel、AMD、海光三大处理器平台的ECS实例,底层都是由阿里云自研的CIPU架构驱动。在CIPU这一层也植入VTPM可信计算的能力,做到启动全过程的可度联,彻底堵住类似像Rootkit、 Bootkit这种底层的恶意软件的攻击。所以TEE机密虚拟机加上VTPM可信计算,在云上构造一个厚重的保险柜,可以有效的保护用户关键数据的安全。
阿里云构建的数据保险柜,它的安全级别是怎么样的,首先需要先了解可信计算机概念,这里的基指的是基础的基,不是机器的机,它和可信计算其实是两个概念,可信计算机专业的定义是指一个提供安全执行的环境包含的所有的硬件、固件和软件的组合,它是一个组合,对云服务商的不信任,用最底层的技术实现。到底是解决用户对云服务商的不信任的问题,是机密虚拟机要做的事情。
比如一个租客,租下一个房子,在房子中间放一个保险柜,所有的机密重要的东西都放到保险柜里,这对所有潜在的想要恶意偷抢的人都形成防护。这些人甚至包括房东都没法看到在保险柜里面的东西,因为没有钥匙也不知道密码,所以阿里云机密虚拟机的能力图谱,可以看到从左到右安全级别,是逐次在提高,理论上,目前阿里云提供的机密虚拟机中,g7t也是基于Intel SGX技术的机密虚拟机,它的安全能力是最高的,但同样有一点不好的地方是使用门槛是最高的,因为它的可信机最小可信的单元是Enclave级别。程序运行在虚拟机的操作系统中,它需要把把STX用起,需要在程序代码中细致的规定应用程序它的数据进出Enclave的行为,所以它的改动是代码级别code级别,所以它的是有一定的门槛。
再其次,基于Intel TDX、AMD SEV,海光CSV这一类技术的机密虚拟机,这一层的特点是它的安全能力其实略低于SGX,但用户使用门槛很低,用户几乎不需要做Code层的代码重新改写,直接可以运行,使用阿里云机密虚拟机的用户,基本都是在这一层。
最基础的数据安全防护是基于TM1内存加密,也是最左边的,基于TM1内存加密以及阿里云Enclave技术的机密虚拟机。
这几层的能力图谱它并不是严格独立的,有些它是可以叠加的,如基础的TM1内存加密,它其实是跟TDX组合在一起,可以提供更为健全强大的数据安全保护能力。
所有基于安全图谱所列出的虚拟机密虚拟机的分级,在创建实例过程中,怎么打开使能机密虚拟机的特性,在创建实例过程中,在官网控制台会有一个复选框,买的时候可以细致看一下,选择对应的实例之后,比如选择g8i这款实例,随便选个规格会看到只要勾选背后的TDX,即对应的TEE技术,可以进入到对应的机密虚拟机环境中。
基于阿里云提供的所有机密虚拟机的能力,用户可以获得媲美甚至超越线下的自建的数据安全的保护,可以轻松的构建自己的隐私计算平台,实际上现在有很多的客户,比如像数据服务商,提供像这种多方计算、联邦学习、同态加密、隐私求交的客户。
已经在阿里云上方便快捷的构建隐私计算服务平台。除此之外,阿里云除了可以提供最基础的TEE硬件机密计算的原子能力之外,这些数商客户在云上构建隐私计算平台或服务,还可以同时享受到云本身的便利。第一是算力资源的弹性,可以帮助节省成本,比如有项目需求时,打开云上机密虚拟机,一键可以完成隐私计算平台的搭建。项目结束之后,随时可以释放,可以极大的降低成本。
第二是性能的提升,因为采用TEE它是硬件机密虚拟机的技术,相比于传统的通过软件或者其他的实验方式,比如多方计算、联邦学习,也是计算平台的方案,TEE的机密虚拟机技术,它在通用性和计算效率上,甚至包括通讯效率都远远的提升一大截。
第三是便捷,可以提升数商客户获客效率,针对自己新扩展的客户,可以通过云平台快速构建一个POC测试环境交付给他的客户,体验隐私计算平台的服务,以前对应的没有云平台,都会提供一套安全的一体机或者类似的东西,整个交付周期都是以月时间为单位的。
以上是关于阿里云ECS整体数据安全体系以及机密虚拟机的介绍。
接下来为大家介绍机密计算的具体应用。机密计算是CPU内部电路实现对内存内部数据进行加密,防止内存机密空间外部利用特权对机密内存区数据以及代码进行访问,保障了机密内存区内部代码和数据的完整性和机密性。因此在很多对数据保护要求很高的垂直领域有广泛的应用。
今天为大家介绍的是数据交易场景中的具体应用,其中涉及两个典型case,一个是多方数据协作,另一个是数据产品交付。
2. 多方数据协作
多方数据协作有多个数据参与方,各方拥有私有数据,各自的数据通过协作的计算获得一个更有意义的结果,比如联合模型训练、联合风控、联合营销等等,前提是不能够把自身隐私数据泄露出去。比如A作为一个参与方参与协作计算,不能把用户的身份标识、消费记录、信贷记录、联系方式、家庭住址等泄露给其他参与方,但最终要去其他参与方数据一起计算出某人的信用等级等等,在协作期间各方数据要保持对他人可用不可见。
在这个场景下,机密计算可以提供良好的落地方案。
在传统的协作中通常有一个可信第三方,参与方的数据交给第三方,由第三方按照约定处理数据,然后把结果返回各个对应方。这其中的问题是数据对于第三方是可见的,因此大家必须要信任第三方,并且可能因为管理问题、内部恶意等存在数据泄露的可能。
针对这种问题的解法有两个思路:
第一,利用隐私计算算法(如不经意传输、零知识证明等)解决,参与方不直接交换数据明文,而是将结果的计算变换成等价的分敏感数据参数的数学问题。比如百万富翁的问题,双方不用把自己的实际财产告诉对方,而对比出谁财产更多。
第二,基于利用机密硬件保护整个计算过程,使计算过程中的数据仅在芯片内部可见,不暴露给其他参与者或平台方。上图右侧展示了由机密计算构建的clean room的一个结构——参与方把自己的数据提交到clean room中,机密硬件保护整个计算过程中的代码可信性、数据和计算过程的机密性,公开的合约+可信的代码保证了计算过程的可预期性,最终保证协作过程的公开透明、可预期、数据不会泄露。
这里介绍一款信托帮,其是蚂蚁实现的数据写作的平台,平台已经入驻到计算巢中。
在计算巢中可以很方便地部署和数据协作,稍后给大家做演示。信托邦本质上是一个spark集群,多个可信机密节点构成spark集群,数据提交到机密worker节点,程序按照合约进行计算。它的特点是使用机密计算硬件平台包括计算过程,通过公开的合约计算数据,各方拿到结果是可预期的,信任是对等的。
上图是它的内部结构,基于蚂蚁自研的Occlum LibOS系统,屏蔽了机密硬件对上层应用的细节,应用可以跑在TDX、SGX、CSV等机密硬件上。
【demo演示:信托帮计算隐私演示】
3. 数据产品交付
接下来为大家介绍数据交易的第二类场景——数据产品交付。
数据产品交付通常只发生在甲乙双方之间。甲方是数据消费者,乙方是数据拥有者,数据拥有者需要把数据打包成数据产品交付给数据使用者。通常有两种方式,一种是通过API交付,怎么使用数据,通过API接口定义、封装好,API通常是一种线上服务。另一种是离线的数据交付,通常离线的数据交付不需要线上运维,资源租赁,这种交付的资源使用和维护成本较低,但存在数据在流转过程中泄漏的可能性;数据被非法二次分发、扩散的可能性;数据处理不当泄露个人隐私数据的可能性等。
这里提供一个参考方案,用于数据离线的交付场景,可以参考通过该方式把数据包装成数据产品交付使用。这里引入了一个机密隐私保护的SCQL应用(蚂蚁开源应用)。SCQL是在MySQL、PSQL等传统数据库之上封装了一个SQL分析引擎,根据CCL定义的表字段的授权要求,对SQL检查,避免敏感字段的数据对使用者泄露。同时,利用机密计算对软件本身、内存中的数据进行保护,从而避免数据(实际是通过保护软件)被二次分发、数据泄露、隐私数据泄露的风险。
SCQL是一款安全,协作查询语言,可以给数据库的数据源授予不同的用户访问。对不同的用户允许访问什么,不允许访问什么,什么条件下载访问什么,可以使用约束性的语言描述。允许多个相互不信任的参与方在不泄露各自隐私数据的条件下进行联合分析,允许A提供数据给B受限使用。基于CCL机制,CCL能让owner定义数据的使用方式和披露的限制。SCQL会拒绝不满足CCL要求的Query查询。
CCL并不复杂,用三元组表示什么属性,针对什么用户,使用限制是什么。比如某个属性针对某个用户可以是密文的,可以是明文的,或者在什么情况下允许是明文的。如果SCQL的引擎判断SCQL查询不符合CCL,或者有可能把具体的属性内容泄露出来,就返回相应错误。稍后会给大家演示一下具体使用。
如何使用SCAL交付数据产品?这里有数据拥有者、数据消费者。数据拥有者希望通过离线的方式,把数据产品交付给消费者。数据拥有者可以把自己的数据灌装到离线的数据文件(如mysql、psql数据库文件)中,在灌装数据后,数据拥有者要根据隐私数据保护的需要,对敏感字段定义CCL。然后把离线的数据文件进行加密,加密后的文件可以放心传播,如通过中介交付给消费者。文件的密钥(被目标用户公钥、云平台公钥加密后)与SCQL一起打包成TEE的应用镜像。这保证TEE镜像只能在云平台运行,并限定目标用户使用。
使用时,TEE镜像在云上TEE硬件运行,文件秘钥被云平台和用户解密还原,文件中的数据可被数据库软件访问,秘钥和数据被TEE保护。用户使用SCQL 接口访问数据,受CCl的限制,无法得到保护字段的明文数据。
【demo演示:如何用scql做数据产品交付的场景】
以上就是本节课程的全部内容。