From 75f1fff7a436e2174f7725201c5a6a85447acce8 Mon Sep 17 00:00:00 2001 From: Jiale Zhang Date: Fri, 15 Sep 2023 12:12:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E5=AF=86=E8=AE=A1=E7=AE=97SIG:=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E7=BC=A9=E5=86=99=E5=90=8D=E7=A7=B0=E5=92=8C=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jiale Zhang --- ...34\347\250\213\350\256\244\350\257\201.md" | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) rename "sig/ConfidentialComputing/content/\351\276\231\350\234\245\350\277\234\347\250\213\350\257\201\346\230\216\346\234\215\345\212\241AAS/\344\275\277\347\224\250AAS\350\277\233\350\241\214\350\277\234\347\250\213\350\256\244\350\257\201.md" => "sig/ConfidentialComputing/content/\351\276\231\350\234\245\350\277\234\347\250\213\350\257\201\346\230\216\346\234\215\345\212\241OAAS/\344\275\277\347\224\250OAAS\350\277\233\350\241\214\350\277\234\347\250\213\350\256\244\350\257\201.md" (67%) diff --git "a/sig/ConfidentialComputing/content/\351\276\231\350\234\245\350\277\234\347\250\213\350\257\201\346\230\216\346\234\215\345\212\241AAS/\344\275\277\347\224\250AAS\350\277\233\350\241\214\350\277\234\347\250\213\350\256\244\350\257\201.md" "b/sig/ConfidentialComputing/content/\351\276\231\350\234\245\350\277\234\347\250\213\350\257\201\346\230\216\346\234\215\345\212\241OAAS/\344\275\277\347\224\250OAAS\350\277\233\350\241\214\350\277\234\347\250\213\350\256\244\350\257\201.md" similarity index 67% rename from "sig/ConfidentialComputing/content/\351\276\231\350\234\245\350\277\234\347\250\213\350\257\201\346\230\216\346\234\215\345\212\241AAS/\344\275\277\347\224\250AAS\350\277\233\350\241\214\350\277\234\347\250\213\350\256\244\350\257\201.md" rename to "sig/ConfidentialComputing/content/\351\276\231\350\234\245\350\277\234\347\250\213\350\257\201\346\230\216\346\234\215\345\212\241OAAS/\344\275\277\347\224\250OAAS\350\277\233\350\241\214\350\277\234\347\250\213\350\256\244\350\257\201.md" index 2177d82ed..d9a8763a1 100644 --- "a/sig/ConfidentialComputing/content/\351\276\231\350\234\245\350\277\234\347\250\213\350\257\201\346\230\216\346\234\215\345\212\241AAS/\344\275\277\347\224\250AAS\350\277\233\350\241\214\350\277\234\347\250\213\350\256\244\350\257\201.md" +++ "b/sig/ConfidentialComputing/content/\351\276\231\350\234\245\350\277\234\347\250\213\350\257\201\346\230\216\346\234\215\345\212\241OAAS/\344\275\277\347\224\250OAAS\350\277\233\350\241\214\350\277\234\347\250\213\350\256\244\350\257\201.md" @@ -1,20 +1,20 @@ -本文为您介绍如何使用龙蜥社区远程证明服务(OpenAnolis Attestation Service, AAS)为您的机密计算场景提供免部署的远程认证支持。 +本文为您介绍如何使用龙蜥社区远程证明服务(OpenAnolis Attestation Service, OAAS)为您的机密计算场景提供免部署的远程认证支持。 -龙蜥社区远程证明服务将于9月下旬开放限额邀请测试,若您希望参与邀测,请加入云原生机密计算SIG钉钉群(群号:42822683)并联系群管理,提供您的组织信息和龙蜥社区帐号ID和邮箱。 +龙蜥社区远程证明服务将于9月下旬开放限额邀请测试,若您希望参与邀测,请加入OAAS邀测群 (群号:33925028339) 并联系群管理,提供您的组织信息和龙蜥社区帐号ID和邮箱。 # 介绍 -OpenAnolis Attestation Service (AAS) 是龙蜥社区为社区用户与合作伙伴提供的公共机密计算远程证明服务,旨在为使用可信执行环境 (TEE) 的用户提供一个安全高效的远程证明免部署解决方案,满足在各类机密计算应用场景下的核心信任需求。 +OpenAnolis Attestation Service (OAAS) 是龙蜥社区为社区用户与合作伙伴提供的公共机密计算远程证明服务,旨在为使用可信执行环境 (TEE) 的用户提供一个安全高效的远程证明免部署解决方案,满足在各类机密计算应用场景下的核心信任需求。 -AAS的核心组件采用与特定TEE硬件平台解耦的通用设计,服务实例的整体架构如下图所示: +OAAS的核心组件采用与特定TEE硬件平台解耦的通用设计,服务实例的整体架构如下图所示: ![aas](../../assets/aas.png) -TEE通过访问AAS的RESTful API执行远程证明,验证通过后获得一个令牌(JWT格式),令牌中包含了序列化后的TEE证据内容和AAS的签名,该令牌表征了AAS对TEE可信性的认证结果。 +TEE通过访问OAAS的RESTful API执行远程证明,验证通过后获得一个令牌(JWT格式),令牌中包含了序列化后的TEE证据内容和OAAS的签名,该令牌表征了OAAS对TEE可信性的认证结果。 -验证的核心逻辑发生于Attestation后端,AAS会通过插件化的形式抽象不同TEE平台类型在厂商签名背书的验证过程,并在基本的厂商签名背书验证通过后,将解析出的证据内容输入策略引擎 (使用OPA实现) 进行进一步验证。 +验证的核心逻辑发生于Attestation后端,OAAS会通过插件化的形式抽象不同TEE平台类型在厂商签名背书的验证过程,并在基本的厂商签名背书验证通过后,将解析出的证据内容输入策略引擎 (使用OPA实现) 进行进一步验证。 -策略引擎对证据的验证策略可由用户通过访问AAS的API进行自行设置,若用户未设置自定义策略,则默认使用龙蜥社区提供的基本策略进行验证。 +策略引擎对证据的验证策略可由用户通过访问OAAS的API进行自行设置,若用户未设置自定义策略,则默认使用龙蜥社区提供的基本策略进行验证。 全部验证过程完成后,Attestation后端会将解析出的证据内容序列化并签名,生成JWT格式的令牌返回给TEE。验证该令牌的实体(如为TEE提供数据的其他资源服务器)可对令牌的内容和签名进行进一步的验证。 @@ -29,7 +29,7 @@ TEE通过访问AAS的RESTful API执行远程证明,验证通过后获得一个 访问龙蜥远程证明服务首页,即可一键创建实例(需登录OpenAnolis账号):http://attestation.openanolis.cn -在创建实例完成后,在提示页面中会获得AAS实例的URL地址,例如: +在创建实例完成后,在提示页面中会获得OAAS实例的URL地址,例如: ``` http://attestation.openanolis.cn/1234567 @@ -45,27 +45,23 @@ MC4CAQAwBQYDK2VwBCIEIPxQzuqDpOTq2KuMAdQhZjmAegDVrjCKk0DnibQQqS1e EOF ``` -注意:当前版本下,创建的AAS实例有效期为24小时,请及时使用。 +注意:当前版本下,创建的OAAS实例有效期为24小时,请及时使用。 # 步骤二:下载Client端工具 -龙蜥社区为Anolis OS 8提供了二进制的Clinet端命令行工具,下载链接: +龙蜥社区为Anolis OS 8提供了二进制的Clinet端命令行工具,您可以在上一步中的实例创建完成页面上找到Client工具的下载链接。 -- [Client for 海光CSV](http://attestation.openanolis.cn/aas-client-csv) -- [Client for AMD SNP](http://attestation.openanolis.cn/aas-client-snp) -- [Client for Intel TDX/SGX](http://attestation.openanolis.cn/aas-client-intel) - -下载完成后,解压到可执行文件路径下: +下载完成后,将Client工具解压到可执行文件路径下: ```shell tar xzvf aas-client.tar.gz /usr/local/bin/ ``` -此工具不仅可帮助AAS实例的拥有者对AAS进行配置(如设置Attestation策略),还可在TEE内访问AAS实例以执行Attestation获取令牌。 +此工具不仅可帮助OAAS实例的拥有者对OAAS进行配置(如设置Attestation策略),还可在TEE内访问OAAS实例以执行Attestation获取令牌。 ## Client SDK -您也可以直接使用Client端的Rust SDK将访问AAS并执行attestation的能力集成到TEE内的程序中,Rust SDK的源码地址为:https://github.com/confidential-containers/kbs/tree/main/tools/client +您也可以直接使用Client端的Rust SDK将访问OAAS并执行attestation的能力集成到TEE内的程序中,Rust SDK的源码地址为:https://github.com/confidential-containers/kbs/tree/main/tools/client 在您的Rust程序项目的Cargo.toml文件中添加如下依赖以导入上述SDK crate: @@ -81,7 +77,7 @@ kbs_client = { git = "https://github.com/confidential-containers/kbs" } - Intel TDX/SGX - AMD SEV-SNP -注:若暂时没有真实硬件上的TEE环境,可以设置如下环境变量后再运行aas-client,以使用Sample TEE类型来测试AAS的Attestation功能: +注:若暂时没有真实硬件上的TEE环境,可以设置如下环境变量后再运行aas-client,以使用Sample TEE类型来测试OAAS的Attestation功能: ```shell export AA_SAMPLE_ATTESTER_TEST=yes @@ -99,9 +95,9 @@ openssl genrsa -traditional -out /opt/tee_key.pem 2048 aas-client --url http://attestation.openanolis.cn/1234567 attest --tee-key-file /opt/tee_key.pem ``` -请注意将上述命令中的url参数替换为您的AAS实例URL. +请注意将上述命令中的url参数替换为您的OAAS实例URL. -这行命令将会在TEE搜集远程证明证据,并向AAS发起认证请求,在请求通过后,返回一个包含了证据验证结果且被签名的JWT令牌(Base64编码),而证据验证结果中包含了从证据中解析出的表征TEE可信度的重要内容,例如硬件安全版本号,软件度量值等等。 +这行命令将会在TEE搜集远程证明证据,并向OAAS发起认证请求,在请求通过后,返回一个包含了证据验证结果且被签名的JWT令牌(Base64编码),而证据验证结果中包含了从证据中解析出的表征TEE可信度的重要内容,例如硬件安全版本号,软件度量值等等。 上述命令将会把JWT令牌的内容打印在控制台上,认证令牌格式(JWT标准令牌)如下: @@ -142,7 +138,7 @@ aas-client --url http://attestation.openanolis.cn/1234567 attest --tee-key-file 其中,`jwk`为验证令牌签名的公钥,`tcb-status`中包含了解析后的TEE证据的内容。 -# 附:为AAS设置自定义Attestation策略 +# 附:为OAAS设置自定义Attestation策略 ## 操作步骤 @@ -152,9 +148,9 @@ aas-client --url http://attestation.openanolis.cn/1234567 attest --tee-key-file aas-client --url http://attestation.openanolis.cn/1234567 config --auth-private-key /etc/aas-auth.key set-attestation-policy --type rego --id default --policy-file /path/to/policy.rego ``` -请注意将url参数替换为您的AAS实例URL,将`/etc/aas-auth.key`替换为您的认证密钥,将`/path/to/policy.rego`替换为策略文件的路径. +请注意将url参数替换为您的OAAS实例URL,将`/etc/aas-auth.key`替换为您的认证密钥,将`/path/to/policy.rego`替换为策略文件的路径. -若不设置自定义策略,则AAS仅会根据硬件厂商的默认策略检查TEE证据。 +若不设置自定义策略,则OAAS仅会根据硬件厂商的默认策略检查TEE证据。 ## 基础策略模版 @@ -178,9 +174,9 @@ allow if { ``` 上述策略是对证据内容做出限制的基础模版,如果您不熟悉OPA策略引擎的rego语法,则可以直接修改上述模版添加更多的对证据内容字段的检查策略。 -同时,AAS允许精通OPA策略rego语法的用户自行编写策略文件以实现任何想要的复杂策略逻辑。 +同时,OAAS允许精通OPA策略rego语法的用户自行编写策略文件以实现任何想要的复杂策略逻辑。 -AAS允许您在同一份策略文件中同时添加不同类型TEE的证据内容字段的检查策略。这些字段在解析出的序列化证据内容中有不同的名称,我们将每一类TEE所支持的证据内容字段名称列出如下: +OAAS允许您在同一份策略文件中同时添加不同类型TEE的证据内容字段的检查策略。这些字段在解析出的序列化证据内容中有不同的名称,我们将每一类TEE所支持的证据内容字段名称列出如下: ### 海光CSV @@ -258,3 +254,9 @@ AAS允许您在同一份策略文件中同时添加不同类型TEE的证据内 ``` 字段内容生成阶段源码位置:[链接](https://github.com/confidential-containers/attestation-service/blob/main/attestation-service/src/verifier/snp/mod.rs#L196) + +# FAQ + +- **Q**: 为什么需要对每一种TEE类型都要提供单独的Client程序 + +**A**: 当前Client程序还不支持TEE平台动态检测能力,后续会增加该功能并为所有TEE平台提供统一的Client程序。 -- Gitee