SMN CA 使用指南

为什么需要 CA?

Safeheron 基于 TEE(Trusted Execution Environment)构建了 SMN 产品套件中的核心组件,TEE 具有采用硬件级别安全机制保证应用程序的完整性和运行时数据的机密性等特性。关于 TEE 的更多介绍请阅读《TEE 技术概述》

正如《TEE 技术概述》中描述,Seal to the Enclave Author 和 Seal to the Current Enclave 两种数据密封方式各有优缺点,并且都无法解决更换应用程序运行时使用的 CPU 之后已有数据的可用性,即无法解密已有的持久化密文数据。TEE 提供的能力解决了应用程序密封数据的基本功能,但是并没有考虑在 CPU 硬件故障迁移,应用程序版本升级,扩容等场景下的数据可用性。在极端情况下,即使通过人工干预,也无法恢复系统数据,不符合应用系统的高可用要求。因此,综合考虑 TEE 中数据的可用性和安全性,运维管理成本等多个角度,我们在 SMN 产品套件中设计了一套既能满足数据的可用性和安全性要求,同时又能降低运维成本的产品方案。

Safeheron 选择管理员根密钥管理机制和 Seal to the Current Enclave 的方式结合以收缩攻击面,提升安全性;通过设计 SMN CA 组件让开发者内部的管理员完全掌控 TEE 中 Seal 和 Unseal 的控制权,通过自动授权技术架构的设计减少运维和管理人工成本。

CA 功能介绍

CA 的目标在于通过安全高效的方式,帮助开发者管理员管理 TEE 密钥,自动完成 SMN Service 等 SMN 产品套件内部的 TEE 应用派生并分发密钥(密封数据时使用的加密密钥),此密钥由 CA 自动化管理,大大提高了密封数据的可用性。

CA 自身运行在 TEE 中,其为 TEE 应用派生密钥的过程安全可靠,通过远程证明(Remote Attestation)机制确保密钥分发过程的安全,即 CA 仅向远程证明验证通过的 TEE 应用分发密钥,TEE 应用仅从远程证明验证通过的 CA 请求密钥。同时,在极端情况下,可以通过人工干预的方式恢复系统数据,CA 支持以 Shamir 密钥分片的方式多人管理和备份 Unseal Keys(密钥分片),在需要时通过提供达到门限数量的 Unseal Keys 在 CA 中恢复根密钥,进而恢复系统数据。

因为 CA 本身也是 TEE 应用,因此 CA 的功能也支持 CA 和 CA 之间的授权。

CA 中的密钥

CA 和 TEE 应用中各密钥的关系如下图所示:

关键密钥解释:

CA 管理员

CA Admin 角色人员的选择至关重要,他们负责管理备份 CA 的授权密钥分片 Unseal Keys,属核心敏感数据,一般推荐由 2 至 5 名高管或关键技术、安全部门负责人承担管理员角色。开发者需要根据自身企业情况,决定管理员的管理门限,最多支持 5 个管理员参与管理,门限阈值大于等于 2,小于等于管理员的数量,即支持门限 2/2、2/3、3/3、2/4、3/4、4/4、2/5、3/5、4/5、5/5。

CA Admin 要妥善备份管理 CA Unseal Keys,Unseal Keys 用来恢复 TEE 应用加密数据的 ca root key,泄露将可能导致 TEE 应用敏感数据外泄。

CA 授权 CA

运维人员和管理员在完成首台 CA (如 smn-ca-1)初始化后,后续其他 CA 实例只需要运维人员操作,通过修改配置文件中的 AuthorizedCAUrl 指向完成授权的 CA,其他 CA 实例即可自动完成授权。

CA 授权 SMN Service

授权完成的 CA 集群通过负载均衡器提供服务,SMN Service 配置文件中 CAAddress 为集群地址,SMN Service 即可完成自动授权。

SMN Service 在版本升级、扩容、物理机迁移、重启等场景下启动时,请求 CA 进行认证,认证成功后可正常启动;SMN Service 在授权通过后正常运行时,不依赖 CA 服务,即使 CA 服务全部不可用也不影响 SMN Service。

CA 教程和命令

开发者可以参考以下文档操作 CA:

也可以参考以下文档查看 CA 支持的所有命令: