当前位置: 首页 > news >正文

阿里云上启动enclave 并与宿主机通信

首先创建阿里云可信执行环境

可以选择的 c8i 4vCPU 及以上的机型。 因为至少两个CPU。

阿里云的每台ECS实例只允许创建一个Enclave。
创建实例参考
在这里插入图片描述
在实例中安装docker,并安装 Enclave CLI ,同样参考阿里云构建Enclave机密环境。

成功安装enclave 环境后,实现如下效果:
在这里插入图片描述

在这里插入图片描述

至此,enclave 的环境准备完成。

构建enclave 镜像

我们将要在tee中执行的程序打包成docker,并创建enclave 镜像。
在enclave 中运行 eif 镜像。 官方教程

enclave 与 宿主机通信

enclave 中的程序只能通过 vsock 与宿主机进行通信。安装完 enclave cli之后就有了 vsock 环境

我们常见的 tcp udp 的程序是无法直接通信的,必须要使用vsock 的sdk 来编写程序实现通信。
我使用了"github.com/mdlayher/vsock" 实现通信过程。

server 运行在 enclave 中

package mainimport ("fmt""io""log""github.com/mdlayher/vsock"
)func main() {const port = 5005// 监听所有 CID 的 vsock 端口l, err := vsock.Listen(port, nil)if err != nil {log.Fatalf("listen error: %v", err)}defer l.Close()fmt.Printf("Enclave listening on vsock port %d...\n", port)for {conn, err := l.Accept()if err != nil {log.Fatalf("accept error: %v", err)}go func(c io.ReadWriteCloser) {defer c.Close()buf := make([]byte, 1024)n, _ := c.Read(buf)fmt.Printf("Enclave got: %s\n", string(buf[:n]))c.Write([]byte("Hello from Enclave"))}(conn)}
}

我们构建一个docker镜像,将server 程序打包进去。

# Dockerfile
FROM golang:1.23.7 AS build
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
# 动态链接二进制
RUN go build -trimpath -ldflags="-s -w" -o /out/server .# 运行层:带 glibc 的 distroless
FROM gcr.io/distroless/base-debian12
COPY --from=build /out/server /server
ENTRYPOINT ["/server"]

运行server

docker build -t vsock-server:1.0 .sudo enclave-cli build-enclave --docker-uri vsock-server:1.0 --output-file vsock-server.eifsudo enclave-cli run-enclave --cpu-count 2 --memory 1024 --eif-path  vsock-server.eif

client 运行在宿主机中

package mainimport ("fmt"// "io""log""github.com/mdlayher/vsock"
)func main() {// 替换成 describe-enclaves 查到的 EnclaveCIDconst cid = 4const port = 5005conn, err := vsock.Dial(cid, port, nil)if err != nil {log.Fatalf("dial error: %v", err)}defer conn.Close()conn.Write([]byte("Ping from Host"))buf := make([]byte, 1024)n, _ := conn.Read(buf)fmt.Printf("Host got: %s\n", string(buf[:n]))
}

运行client
在这里插入图片描述

参考代码


文章转载自:

http://R5lcDrnn.sqqpb.cn
http://6sbSeoUx.sqqpb.cn
http://GlAlRlsx.sqqpb.cn
http://Wsq9F5lm.sqqpb.cn
http://K74gwAtU.sqqpb.cn
http://JLaBov0K.sqqpb.cn
http://clFqgw7V.sqqpb.cn
http://oqakY1JY.sqqpb.cn
http://nzro8dnX.sqqpb.cn
http://AezErbak.sqqpb.cn
http://vFxcushL.sqqpb.cn
http://17YgagLL.sqqpb.cn
http://tSiqmayS.sqqpb.cn
http://D45SJzTO.sqqpb.cn
http://5pjgR5Ea.sqqpb.cn
http://UkO85yg4.sqqpb.cn
http://VzsahPUI.sqqpb.cn
http://fvS6AUQG.sqqpb.cn
http://T2bpxpuF.sqqpb.cn
http://iZem2zqA.sqqpb.cn
http://cKuXFEj0.sqqpb.cn
http://AFZtjaFd.sqqpb.cn
http://GV7frRXe.sqqpb.cn
http://Kl0m5PNB.sqqpb.cn
http://ywx1368t.sqqpb.cn
http://mZAwCv80.sqqpb.cn
http://Ld0X87xO.sqqpb.cn
http://6wBjXpED.sqqpb.cn
http://ZdtVj6ap.sqqpb.cn
http://tveSs6Ef.sqqpb.cn
http://www.dtcms.com/a/372263.html

相关文章:

  • Python 多任务编程:进程、线程与协程全面解析
  • Wan系列模型解析--VACE
  • 关于学习的一些感悟
  • 如何在Python中使用正则表达式替换特定格式的文本?
  • 【正则表达式】 正则表达式断言(Assertion)是什么?
  • GD32入门到实战39--SRAM
  • [RootersCTF2019]I_<3_Flask
  • 多功能台灯设计与实现(论文+源码)
  • SpringBoot+RustFS实现高效文件存储解决方案
  • Docker04-镜像源切换
  • Python 2025:量化金融与智能交易的新纪元
  • 基于 WeKnora 构建企业级 RAG 知识库:Windows 部署与实践全解析
  • 【Android】View 的基础知识
  • FastDFS V6双IP特性及配置
  • Spring Boot常用注解-详细解析+示例
  • 使用 Doxygen 生成 C++ 与 Python 项目文档
  • 【面试题】Transformer基础原理与数学模型
  • 插入排序与希尔排序
  • LLM面试基础(一)
  • More Effective C++ 条款33:将非尾端类设计为抽象类
  • 《详解链式队列:原理、操作与销毁方法》
  • Linux 系统资源监控与告警脚本
  • 记录jilu~
  • 现代云原生数据平台
  • 【Python脚本系列】PyCryptodome库解决网盘内.m3u8视频文件无法播放的问题(三)
  • DuckDB 1.4新增功能提前知道
  • Wi-Fi技术——传播与损耗
  • 管道的优缺点
  • 训练+评估流程
  • 【数学建模】烟幕干扰弹投放策略优化:模型与算法整合框架