From 17a5b2b8541b2dd756da80580633715d3b9368a9 Mon Sep 17 00:00:00 2001 From: panpingsheng Date: Sun, 28 Sep 2025 17:16:54 +0800 Subject: [PATCH] cai: supports remote attestation of dcu and cpu --- ...00\346\234\257\344\273\213\347\273\215.md" | 1 - ...346\213\237\346\234\272Confidential_AI.md" | 58 +++++++++++-------- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/10-\346\212\200\346\234\257\344\273\213\347\273\215/6-CSV\350\231\232\346\213\237\346\234\272Confidential_AI\346\212\200\346\234\257\344\273\213\347\273\215.md" "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/10-\346\212\200\346\234\257\344\273\213\347\273\215/6-CSV\350\231\232\346\213\237\346\234\272Confidential_AI\346\212\200\346\234\257\344\273\213\347\273\215.md" index ec5afa72..871bb9b8 100644 --- "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/10-\346\212\200\346\234\257\344\273\213\347\273\215/6-CSV\350\231\232\346\213\237\346\234\272Confidential_AI\346\212\200\346\234\257\344\273\213\347\273\215.md" +++ "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/10-\346\212\200\346\234\257\344\273\213\347\273\215/6-CSV\350\231\232\346\213\237\346\234\272Confidential_AI\346\212\200\346\234\257\344\273\213\347\273\215.md" @@ -97,7 +97,6 @@ token 向KBS 获取解密模型的KEY。 **部署CSV虚拟机Confidential AI步骤请参考** [2-CSV测试文档-11-CSV虚拟机Confidential_AI](https://openanolis.cn/sig/Hygon-Arch/doc/1358389851069644815?lang=zh) -*注:远程认证流程还在开发中* diff --git "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/3-\350\231\232\346\213\237\346\234\272/11-CSV\350\231\232\346\213\237\346\234\272Confidential_AI.md" "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/3-\350\231\232\346\213\237\346\234\272/11-CSV\350\231\232\346\213\237\346\234\272Confidential_AI.md" index 35718686..7ed1889e 100644 --- "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/3-\350\231\232\346\213\237\346\234\272/11-CSV\350\231\232\346\213\237\346\234\272Confidential_AI.md" +++ "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/3-\350\231\232\346\213\237\346\234\272/11-CSV\350\231\232\346\213\237\346\234\272Confidential_AI.md" @@ -1,9 +1,8 @@ ## 功能描述 -部署Confidential AI 之前要先准备好CSV虚拟机DCU 直通环境,请参考[2-CSV测试文档-4-测试CSV虚拟机直通DCU](https://openanolis.cn/sig/Hygon-Arch/doc/865622222638552866?lang=zh), -如果想了解相关技术原理,请查看[10-技术介绍-6-CSV虚拟机Confidential_AI技术介绍](https://openanolis.cn/sig/Hygon-Arch/doc/1358389847319937037?lang=zh)。 +部署Confidential AI 之前,要先准备好CSV虚拟机DCU 直通环境,DTK版本使用[DTK-25.04.1](https://download.sourcefind.cn:65024/directlink/1/DTK-25.04.1/Anolis8.4/DTK-25.04.1-Anolis8.4-x86_64.tar.gz),驱动版本使用[rock-6.3.13-V1.12.0.run](https://download.sourcefind.cn:65024/directlink/6/dtk-25.04.1%E9%A9%B1%E5%8A%A8/rock-6.3.13-V1.12.0.run),请参考[2-CSV测试文档-4-测试CSV虚拟机直通DCU](https://openanolis.cn/sig/Hygon-Arch/doc/865622222638552866?lang=zh)准备DCU 直通环境。 -*注:远程认证功能还没有集成,正在开发中* +如果想了解相关技术原理,请查看[10-技术介绍-6-CSV虚拟机Confidential_AI技术介绍](https://openanolis.cn/sig/Hygon-Arch/doc/1358389847319937037?lang=zh)。 ## 部署流程 @@ -39,17 +38,27 @@ cat ~/cachefs-password | gocryptfs cipher plain cp -r ${PLAINTEXT_MODEL_PATH} ~/mount/plain cd ~/mount/; tar czvf Qwen2.5-3B-Instruct_encrypt.tgz cipher ``` -将加密后的模型Qwen2.5-3B-Instruct_encrypt.tgz 模型发布到云端。 +将加密后的模型Qwen2.5-3B-Instruct_encrypt.tgz 发布到云端。 ### Trustee 部署 -负责模型秘钥管理,远程报告验证 +负责模型密钥管理,远程报告验证 ``` git clone https://github.com/openanolis/trustee.git cd trustee -git checkout d6b3db5 -cp -f /opt/hygon/csv/cai/docker-compose_trustee.yml docker-compose.yml +git checkout fd326a0 +yes | cp -f /opt/hygon/csv/cai/docker-compose_trustee.yml docker-compose.yml +mkdir -p ./kbs/data/attestation-service/token/ear/policies/opa/ +# 设置kbs的策略 +yes | cp -f /opt/hygon/csv/cai/policy.rego kbs/config/docker-compose/policy.rego +# 设置grpc-AS cpu认证策略 +yes | cp -f /opt/hygon/csv/cai/policy.rego ./kbs/data/attestation-service/token/ear/policies/opa/default_cpu.rego +# 设置grpc-AS dcu认证策略 +yes | cp -f /opt/hygon/csv/cai/default_dcu.rego ./kbs/data/attestation-service/token/ear/policies/opa/default_dcu.rego +# 设置grpc-AS的配置 +yes | cp -f /opt/hygon/csv/cai/as-grpc-config.json ./kbs/config/as-grpc-config.json + # 创建一个非对称密钥,用于表征Trustee服务所有者的身份,以在服务启动后对一些关键策略和机密数据进行配置和修改 openssl genpkey -algorithm ed25519 > kbs/config/private.key openssl pkey -in kbs/config/private.key -pubout -out kbs/config/public.pub @@ -58,10 +67,6 @@ mkdir -p kbs/data/kbs-storage/default/key/ cp ~/cachefs-password kbs/data/kbs-storage/default/key/1 # 启动Trustee 相关组件 sudo docker compose up -d -# 获取可信kbs 服务网络地址,远程认证需要该地址 -KBS_DB_HOST=$(sudo docker network inspect trustee_default \ - | jq -r '.[].Containers[] | select(.Name | test("trustee-kbs-1*")).IPv4Address' \ - | sed "s|/.*$||g") ``` 红框中为模型部署Trustee 中的服务: ![](../../../assets/CSV/CAI_2.png) @@ -93,23 +98,28 @@ sudo qemu-system-x86_64 -name csv-vm \ 登录到虚拟机中,下面动作在虚拟机中执行: ``` git clone https://github.com/inclavare-containers/Confidential-AI.git -cd Confidential-AI; git checkout d664b14 +cd Confidential-AI; git checkout 8b5bbb6 + cd ~/; git clone --depth 1 https://gitee.com/anolis/hygon-devkit.git -# 下载加密的模型文件到虚拟机上,客户可以根据需要进行调整 + +# 下载加密的模型文件到虚拟机上,客户可以根据需要进行调整,下面链接只是作为示例 wget http://ip/Qwen2.5-3B-Instruct_encrypt.tgz -tar xvf http://ip/Qwen2.5-3B-Instruct_encrypt.tgz mkdir -p /tmp/encrypted-model /tmp/plaintext-model tar xvf Qwen2.5-3B-Instruct_encrypt.tgz mv cipher/* /tmp/encrypted-model/ -# KBS_DB_HOST 为可信kbs 服务地址,上面Trustee 搭建流程中获取 + +# KBS_DB_HOST 为可信kbs 服务地址,上面Trustee 主机所在的ip地址 export KBS_DB_HOST=$KBS_DB_HOST sed -i "s|TRUSTEE_ADDR=http://[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:8080|TRUSTEE_ADDR=http://${KBS_DB_HOST}:8080|g" ~/Confidential-AI/.env sed -i "s|TRUSTEE_AS_ADDR=http://[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+:50005|TRUSTEE_AS_ADDR=http://${KBS_DB_HOST}:50005|g" ~/Confidential-AI/.env -# default/key/1 为秘钥存放路径 +# default/key/1 为密钥存放路径 sed -i 's/^KBS_KEY_PATH=.*/KBS_KEY_PATH=default\/key\/1/' ~/Confidential-AI/.env -cp -f ~/hygon-devkit/csv/cai/docker-compose_trustiflux.yml ~/Confidential-AI/Trustiflux/trustiflux/docker-compose.yml +yes | cp -f ~/hygon-devkit/csv/cai/docker-compose_trustiflux.yml ~/Confidential-AI/Trustiflux/trustiflux/docker-compose.yml + cd ~/Confidential-AI/Trustiflux/trustiflux/ -# 启动服务,服务进行远程认证获取kbs 中的秘钥key,解密模型,推理服务加载模型 +# 加载csv-guest内核模块,获取远程报告依赖该模块 +modprobe csv-guest +# 启动服务,服务进行远程认证获取kbs 中的密钥,解密模型,推理服务加载模型 docker compose --env-file ../../.env up -d ``` 查看推理服务启动状态如下: @@ -119,9 +129,9 @@ docker logs trustiflux-app-1 ![](../../../assets/CSV/CAI_3.png) -查看DCU 状态是否正常,开启新终端运行下面命令: +查看DCU 状态是否正常,开启新终端运行下面命令: ``` -source /opt/dtk-24.04.3/env.sh +source /opt/dtk-25.04.1/env.sh watch -n 1 rocm-smi ``` ![](../../../assets/CSV/CAI_4.png) @@ -132,16 +142,18 @@ watch -n 1 rocm-smi # 部署trustee git clone https://github.com/openanolis/trustee.git cd trustee -git checkout d6b3db5 +git checkout fd326a0 cp -f /opt/hygon/csv/cai/docker-compose_trustee.yml docker-compose.yml -docker-compose up -d +# 设置restful-AS 策略 +cp -f /opt/hygon/csv/cai/default.rego ./kbs/data/attestation-service/token/simple/policies/opa/default.rego +sudo docker compose up -d # "port": 10001 为推理客户端代理地址,后续通过该地址访问推理服务 # "host": "192.168.122.76" 推理服务端虚拟机ip地址 # "port": 41000 推理服务端监听的端口,由推理端TNG 网关配置 # "as_addr": "http://127.0.0.1:50005/", 为TNG 信任的认证服务地址 sudo docker run -d \ --network=host \ - confidential-ai-registry.cn-shanghai.cr.aliyuncs.com/product/tng:1.0.2 \ + confidential-ai-registry.cn-shanghai.cr.aliyuncs.com/product/tng:2.2.5 \ tng launch --config-content ' { "add_ingress": [ -- Gitee