机密计算: 通用框架概要
国家机密计算标准概要。
机密计算是一种在受信任的硬件基础上,结合固件和软件构建密态、隔离、可验证的计算环境,保证环境内数据机密性、完整性,代码完整性以及运算过程机密性的计算模式,在某些场景下,也可以保护代码的机密性。机密计算通过隔离机制,将通用计算环境与机密计算环境隔离开来,非授权的实体不能访问机密计算环境;通过证明机制对机密计算环境及运行在其中的应用程序进行验证,保证应用程序的完整性;通过加密机制保证运行态的数据在机密计算环境外处于密文状态,防止特权软件甚至硬件的窥探。
机密计算具有兼顾安全性、通用性和高效性的优势,不仅可以支持普通的计算和应用,而且计算性能基本和明文计算持平。它可以单独用于保护使用状态中的数据,也可以与其他密码学技术结合在一起来保护数据,尤其对于机器学习、联邦学习、区块链等涉及大数据、高性能的计算场景,是重要的数据保护技术手段,可以有效缓解数据在使用过程中面临的安全保护难题。
原文:Information security techniques-General framework for confidential computing
点击查看PDF
应用场景
金融数据融合
金融机构在保证其资金正常运转,会利用大数据构建风控模型,通过技术手段减少风险事件发生的可能性,银行信贷风控与营销过程中往往需要政府、企业、个人数据提供支撑,然而在传统模式下,由于数据安全问题,银行难以高效且合规地获得企业与个人数据。机密计算技术可以在不泄露各方原始数据的前提下进行分布式模型推断和训练,政府部门可以将政务数据共享给金融机构,通过机密计算进行合规数据分析,实现精准风控。
区块链智能合约
区块链场景下的典型安全解决方案利用机密计算、区块链等技术解决数据隐私问题,针对密钥以及当前物理加密机性能不足,基于硬件构建隐私保护的密钥管理系统,提高性能,能够提供一站式企业级可信数据协作解决方案,力图解决目前金融机构在数据协作过程中遇到的难题。在该方案中,智能云区块链平台提供了基于区块链的数据和计算过程的全流程监测、溯源和智能合约能力,同时结合机密计算安全硬件设备和技术,提供了区块链链外的可信计算能力,保障了数据在链外存储和链外运算过程中的安全、隐私、可信和公平。
保险机构核保查询
保险机构对自然人进行核保查询时,需要对被保人的健康情况和医疗记录进行核实比对。在传统的模式下保险机构可以直接读取到高度敏感的个人医疗数据,传统技术手段没有办法规约保险机构对于隐私数据的使用范围。机密计算服务可以解决以上数据安全的问题,核保机密计算服务将核保模型置于可信执行环境运行,在核保过程中仅允许保险机构获取被核保算法运算过的核保结论,核保计算结束后即销毁计算环境和计算数据,真正确保了“只限核保”的使用约束。核保机密计算服务既可以保证核保算法的正确执行,又可以保证保险机构无法沉淀二次使用医疗数据。在整个核保数据流通过程中保证了数据的机密性、核保过程的准确性。
基因分析
在基因分析的场景中,专注于基因数据采集和基因数据分析的企业在医疗产业中紧密合作。由于基因分析需要传输和使用数量庞大且信息敏感的个人基因数据,数据提供方(基因数据采集机构)和数据使用方(基因数据分析机构)需要通过分布在产业云平台基础设施中完成数据的汇聚和计算。为了确保基因数据不泄露,基因数据分析算法全部运行在机密计算服务中,基因数据采集机构提供基因样本数据时需要验证机密计算服务的一致性和安全性。机密计算可保证在基因数据分析过程中基因数据被密态输入,基因数据的明文信息不落盘,且基因数据在分析后即销毁,基因分析需求方仅能获得最终的分析结果。用机密计算技术进一步加强了基因数据在使用时的安全性。
医疗数据共享
医疗数据包含患者信息、用户资料、基因数据等大量个人隐私数据,导致医疗机构、保险、药企、医药设备厂商之间数据流通共享难以高效协同,医疗数据价值难以有效发挥。机密计算可以为医疗数据参与方建立安全数据流通基础设施,推动医疗数据价值最大化利用。
目前各地卫健委响应国家健康医疗大数据战略纷纷建设医疗大数据平台,其医疗数据成为一座亟待挖掘的金矿。但碍于数据安全性考虑,医疗机构等多保持审慎的态度,对于与第三方企业共享数据积极性不足。医疗机构可基于机密计算数据安全开放平台实现健康医疗大数据的安全共享,在保证数据可用不可见,原始数据不流出的情况下,提供给医院或第三方企业对医疗数据进行充分挖掘。
基于机密计算平台,可以建立医疗数据安全共享科研平台,合法合规安全可控地向医院医生、科研机构、药企等单位开放医疗数据,提供丰富的算法与建模工具降低医生数据分析门槛,充分挖掘医疗数据价值。
公有云
在大数据时代,数据安全和隐私保护面临的挑战日益严峻,数据的安全处理和流通也受到国内外监管部门的广泛重视,公有云用户开始要求降低对云厂商的信任需求。这种变化趋势一方面与日趋严苛的隐私保护相关法律法规相关,另一方面考虑到云厂商可能不只是纯粹的云服务提供商,其业务与需求在不同领域可能与云租户或企业存在直接交叉,因此商业保密的风险问题对于公有云用户也必须充分考虑。
为了解决公有云上使用中数据的计算信任和安全性问题,同时推动数据要素的可信流通和开发利用,国内外主流云厂商正在通过开放协作的方式积极推动机密计算相关的技术和法规标准建设,并持续发布基于机密计算技术的云产品,旨在利用机密计算相关的理论框架和技术体系,对已有云产品的隐私安全能力进行增强,为用户的数据处理和模型合作提供全流程的安全和隐私保护,使用户更专注于业务上的创新。机密计算在公有云中的典型应用场景是为复杂多变的上层业务提供通用的“数据可用不可见”的安全体验,并实现机密计算资源的开箱即用和弹性伸缩。
云上全密态计算
云环境中,数据的所有权属于租户、但数据的计算需要在云环境中完成,如何防止数据在使用过程中不被攻击者(包括云服务提供方)获取始终是租户最为关心的问题,现阶段常用的解决方案是在云环境中部署专用的硬件密码机,租户的所有敏感内容均在指定的硬件密码机中完成。这种方式一定程度上解决了数据机密性问题,但硬件密码机的计算逻辑在出厂时就已固化,难以随业务需求快速调整;另外专用设备的计算能力受硬件限制,难以随业务需求动态伸缩,对于计算性能经常调整的场景,很难在性能和成本之间进行平衡。
利用机密计算环境可以提供全密态计算方案,较好解决上述问题。全密态计算方案包括管理节点、计算节点两种节点类型。管理节点负责对用户密钥进行统一管理,密钥与用户身份严格绑定,密钥不用时加密存储,密钥只能在用户参与下才能被解密并加载到机密计算环境中使用,单个管理节点可以管理大量的计算节点;计算节点基于机密计算环境构建,机密计算服务可以通过软件实现,按需加载,涉及敏感数据计算时,在租户参与下将所需密钥加载到机密计算环境中,然后由机密计算服务使用已加载的密钥,按照预先约定的接口对外提供服务即可。
该方案中所有涉密计算逻辑可由软件实现,可以随业务需求快速迭代;涉密计算均利用节点自身算力完成,避免了调用远程密码机的数据泄露风险、不再占用网络带宽、密码算力也可以随业务节点增减弹性伸缩。该方案较好的解决了数据机密性与流动性的矛盾,可以广泛用于全密态数据库、云上机密计算资源池、多方参与的隐私增强计算等场景,为“数据可用不可见、数据不动价值动”提供了一种较为理想的实现方式。
区块链联邦学习
传统联邦学习中每个用户在本地进行模型训练,将参数上传至一个可信中央服务器中,结合多方完成模型更新,保证用户的数据隐私。其局限性在于该场景依赖于一个单一的中央服务器,容易受到服务器故障的影响,同时不存在适当的激励奖赏来激励用户提供数据训练和上传模型参数,数据安全性也难以保障。面对以上问题,基于机密计算的区块链联邦学习,使用区块链网络替代中央服务器,区块链网络允许本地模型更新,用户将自身训练模型的梯度通过机密计算单独加密后进行上传;同时提供激励机制,矿工使用所有梯度来更新所有参与者协同加密的协作模型的参数,将包含该参数的新区块添加到区块链中,并对诚实参与者进行激励;多个用户需要提供他们的私密密钥,借助区块链访问机密计算服务来协同解密获得已更新的模型参数。通过区块链与机密计算的结合,使得联邦学习拥有更佳的保密性、可审计性和公平性,并进一步提高了联邦学习的安全性和实际使用性。
参与角色
框架
重要组件
- 可信执行控制单元:在计算单元上定义安全加强的指令控制逻辑,以实现指令集执行隔离计算的目标,常见在缓存控制器、DMA控制器、中断控制器中加强,也有独立的控制单元
- 可信固件:提供识别硬件设备初始化信息、支持系统软件的完整性校验、升级维护以及配置机密计算环境资源等功能
- 硬件密码引擎:硬件密码引擎使用设备唯一密钥,为机密计算应用程序提供密钥派生能力
- 设备唯一密钥:在硬件中固化的一个唯一标识,设备制造阶段写入,设备唯一密钥由于具备唯一性,作为根密钥用于在机密计算环境中进行密钥派生
- 随机数生成器:用于在密钥生成和密码运算过程产生随机数,其中所生成的随机数应符合国家相关标准的要求
- 信任根:用于支撑机密计算环境自下而上信任链的建立,并提供安全存储、完整性度量、身份鉴别等安全功能
- 安全启动:保证机密计算环境的完整性和真实性
- 远程证明:对机密计算环境和机密计算应用程序进行完整性验证;
- 安全信道:保证本地数据安全传输到机密计算环境中;
- 日志管理:对执行机密计算操作进行记录,提供日志回溯功能,并能保证日志的完整性
信任模型(威胁模型)
由上述威胁模型可推到得出典型的信任模型
基础功能
硬件层
- 提供内存隔离机制,普通计算环境不能访问机密计算环境的内存原始明文数据
- 提供基于物理可信根的安全启动机制,对机密计算环境中的关键固件和关键系统软件进行完整性校验,校验通过方可加载和运行
- 提供基于硬件的密钥派生机制,保护被派生密钥的机密性
- 提供对普通计算环境和机密计算环境的通信指令调度机制
- 可以设置分配给机密计算环境的内存空间大小
系统软件层
- 保障普通计算环境仅根据其所分配的权限访问相应的机密计算应用程序,不能越权访问;
- 提供多线程、多进程的计算能力;
- 对机密计算应用程序进行完整性和真实性校验,验证通过后方可运行;
- 使用符合国家密码管理部门相关要求的密码算法;
- 具备适配主流编程语言的能力。
服务层
- 提供应用程序集成开发接口和代码生成工具,提高开发机密计算应用程序的易用性;
- 为服务提供方或结果需求方提供机密计算必要的安全服务;
- 兼容不同的可信硬件架构。
应用层
- 未经授权的应用程序不能查看正在机密计算环境中运行的代码和数据;
- 未经授权的应用程序不能在机密计算环境内部添加、删除或更改运行的代码和数据。
跨层管理
- 通过底层硬件保证密钥的机密性、不可篡改性和不可否认性;
- 用于执行机密计算任务的密钥在机密计算环境内生成;
- 确保机密计算环境内的加密密钥、签名密钥等密钥具有明确、单一的用途;
- 对硬件资源状态、系统运行状态、接口适配情况、机密计算任务状态、网络状况等进行日志记录;
- 对API调用、机密计算任务操作等进行日志记录和存储;
- 保证只有被列入可信清单的实体才可以访问机密计算环境;
- 保证机密计算应用程序仅根据分配的权限访问相应的资源,不能越权访问。
安全服务
隔离计算
普通计算应用程序和机密计算应用程序隔离计算:
机密计算应用程序和机密计算应用程序隔离计算:
安全启动
安全启动是保证机密计算环境的完整性和真实性的一种安全服务。
安全证明
机密应用程序参与的远程证明:远程证明发起端通过远程证明接口,向机密计算服务端的普通计算应用程序发起证明挑战,通
过发送随机值来防止重放攻击
机密应用程序不参与的远程证明:
安全信道建立
安全信道建立是保护机密计算环境内外部通信安全的一种安全服务。
安全信道构建请求触发客户端应用程序向机密计算服务端发起远程证明请求,获取到携带公钥信息的远程证明报告,验证远程证明报告,证明机密计算应用程序完整性没有被破坏;
注:机密计算应用程序随机生成一对公私钥,将公钥信息作为远程证明报告的附加信息一起发送给客户端应用程序的安全信道代理,私钥缓存在内存中。
密钥派生
密钥派生是保障机密计算环境中不同密码运算场景专属密钥需求的一种安全服务。基于硬件密码引擎,以设备唯一密钥为根密钥,派生得到的密钥与受信任的硬件绑定。
密码运算
密码运算是在机密计算环境中执行密码功能的一种安全服务。
存储保护
存储保护是一种保证结果需求方实现敏感数据加密存储,且只能由授权的机密计算应用程序访问或修改的安全服务。
数据封装
数据封装是一种使高敏感、高价值的数据与机密计算应用程序的完整性相绑定,在数据解封时,只有当机密计算应用程序的完整性未被篡改时,数据才可解封成功的安全服务。
部署
Confidential VM
机密计算虚拟机(VM)是一个包含完整的机密计算操作系统和机密计算应用程序的的运行环境。机密计算操作系统可以支持完整的应用程序,也可以是应用程序拆分后的敏感部分。
部署方式一:用户在客户端向机密计算服务端请求创建一个机密计算VM并建立客户端机密计算VM控制台和机密计算VM之间的安全信道,通过机密计算VM控制台发送请求,运行机密计算VM中的机密计算应用程序。
部署方式二:机密计算 VM 与普通计算 VM 在应用部署模式上并没有本质区别,只是机密计算 VM 对运行虚拟机的内存提供了硬件加密保护,可阻止主机和硬件所有者访问虚拟机中的数据。
Confidential Compute Container
机密计算应用程序可以以容器的方式部署与运行。机密计算容器的部署应支持对容器集群管理平台和容器运行时的兼容,用户的普通容器可以更加方便地切换为机密计算容器。