实验3 vTPM相关

可以代做实验手册等私聊

一、实验目的

1.了解vTPM原理和相关知识;

2.创建具备vTPM的虚拟机;

3.加深对可信计算技术的理解。

二、实验内容

  1. 安装seabios,libtpms,swtpm,qemu‐tpm;
  2. 启动vTPM;
  3. 安装虚拟机。

三、实验环境

系统
ubuntu20.04

硬盘要至少40

四、实验步骤

1.安装相关依赖包;

包括build‐essential,libtool,automake,libgmp‐dev,libnspr4‐dev,libnss3‐dev,openssl ,libssl‐dev,git,iasl,glib‐2.0,libglib2.0‐0,libglib2.0‐dev ,libtasn1‐6‐dev,tpm‐tools,libfuse‐dev,libgnutls‐dev,libsdl1.2‐dev,expect,gawk,socat,libfdt‐dev, libseccomp-dev, libseccomp-dev等

bash 复制代码
sudo apt-get upgrade
sudo apt-get install -y build-essential libtool automake libgmp-dev libnspr4-dev libnss3-dev openssl libssl-dev git acpica-tools libglib2.0-0 libglib2.0-dev libtasn1-6-dev tpm-tools libfuse-dev libsdl1.2-dev expect gawk socat libfdt-dev libseccomp-dev libgnutls28-dev expect flex bison ninja-build libjson-glib-dev libpixman-1-dev libsdl2-dev

2.安装seabios

1.安装python

bash 复制代码
 wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz
 tar zxf Python-3.10.0.tgz
 ./configure --enable-optimizations --with-ssl --prefix=/usr/local/python-3.10.0
 make
 make install


ln -s /usr/local/python-3.10.0/bin/python3.10 /usr/bin/python3
ln -s /usr/local/python-3.10.0/bin/pip3.10 /usr/bin/pip3

2.编译

bash 复制代码
git clone https://git.seabios.org/seabios.git
#如果git不下来可以在前面加代理网址http://gh.301.ee/https://git.seabios.org/seabios.git

修改Makefile文件将python改成python3

bash 复制代码
#编译
make

3.安装libtpms

bash 复制代码
cd /root
git clone http://gh.301.ee/https://github.com/stefanberger/libtpms
cd libtpms
./bootstrap.sh
./configure --prefix=/usr --with-openssl
make 
make install

4.安装swtpm

bash 复制代码
cd /root
git clone http://gh.301.ee/https://github.com/stefanberger/swtpm 
cd swtpm
./autogen.sh
./configure --prefix=/usr --with-openssl
make -j4
sudo make install

5.安装qemu

bash 复制代码
cd /root
wget https://download.qemu.org/qemu-8.0.4.tar.xz
tar xf qemu-8.0.4.tar.xz
cd qemu-8.0.4
./configure --enable-kvm --enable-tpm --enable-sdl 
make 
make install

6.启动vTPM

bash 复制代码
sudo modprobe cuse
mkdir /tmp/myvtpm0
chown -R tss:root  /tmp/myvtpm0  
swtpm_setup --tpm-state /tmp/myvtpm0  --createek 

export TPM_PATH=/tmp/myvtpm0 
swtpm_cuse -n vtpm0
执行成功后可以看到有/dev/vtpm0 文件
ls /dev/vtpm0 

7.安装虚拟机

(1).网络配置

首先安装如下软件

复制代码
apt-get install bridge-utils      
apt-get install uml-utilities    

添加网桥,大部分操作都需要 root 权限:
ens33 是你可以上网的网卡的名称

复制代码
ifconfig ens33 down    # 首先关闭宿主机网卡接口
brctl addbr br0                     # 添加名为 br0 的网桥
brctl addif br0 ens33      # 在 br0 中添加一个接口
brctl stp br0 off                   # 如果只有一个网桥,则关闭生成树协议
brctl setfd br0 1                   # 设置 br0 的转发延迟
brctl sethello br0 1                # 设置 br0 的 hello 时间
ifconfig br0 0.0.0.0 promisc up     # 启用 br0 接口
ifconfig ens33 0.0.0.0 promisc up    # 启用网卡接口
dhclient br0                        # 从 dhcp 服务器获得 br0 的 IP 地址
brctl show br0                      # 查看虚拟网桥列表
brctl showstp br0                   # 查看 br0 的各接口信息

当配置完成之后执行 ifconfig 结果应该如下:

创建一个 TAP 设备,作为 QEMU 一端的接口:

复制代码
tunctl -t tap0 -u root              # 创建一个 tap0 接口,只允许 root 用户访问
brctl addif br0 tap0                # 在虚拟网桥中增加一个 tap0 接口
ifconfig tap0 0.0.0.0 promisc up    # 启用 tap0 接口
brctl showstp br0                   # 显示 br0 的各个接口

此时网桥的信息应该是:

这样就相当于把两张网卡通过网桥连起来了:

现在只需要启动镜像,指定网络连接模式是 TAP 即可。

在使用命令安装虚拟机之前需要先使用这个命令运行swtpm socket 运行命令如下所示。建议这个命令采用单独的终端运行,后续看到的通信也会更加的明显

bash 复制代码
mkdir /tmp/mytpm1
swtpm socket --tpm2 --tpmstate dir=/tmp/mytpm1   --ctrl type=unixio,path=/tmp/mytpm1/swtpm-sock   --log level=5 &

(2).安装虚拟机

上传镜像

bash 复制代码
qemu-img create -f qcow2 ubuntu.qcow2 30G   注意这个路径是你想要把你的虚拟机放在哪个位置

#光盘模式启动镜像安装
qemu-system-x86_64 -display sdl -accel kvm -cdrom ubuntu-20.04.6-live-server-amd64.iso   -m 2048 -boot d -bios bios-256k.bin -boot menu=on   -chardev socket,id=chrtpm,path=/tmp/mytpm1/swtpm-sock   -tpmdev emulator,id=tpm0,chardev=chrtpm   -device tpm-tis,tpmdev=tpm0 -hda ubuntu.qcow2

安装成功后关闭虚拟机:

启动虚拟机

bash 复制代码
swtpm socket --tpm2 --tpmstate dir=/tmp/mytpm1   --ctrl type=unixio,path=/tmp/mytpm1/swtpm-sock   --log level=5 &
qemu-system-x86_64 -display sdl -accel kvm -m 2048 -boot c -bios bios-256k.bin -boot menu=on -chardev socket,id=chrtpm,path=/tmp/mytpm1/swtpm-sock   -tpmdev emulator,id=tpm0,chardev=chrtpm   -device tpm-tis,tpmdev=tpm0 -hda ubuntu.qcow2 -net nic -net tap,ifname=tap0,script=no,downscript=no

可以在 qemu 虚拟机中看到有tpm0,并且安装tpm2-tools之后运行

bash 复制代码
#在qemu的虚拟机中执行命令
sudo apt-get update
sudo apt-get tpm2-tools
bash 复制代码
#如果命令成功执行并输出了4位随机字节,说明tpm功能正常
tpm2_getrandom 24 
相关推荐
新新学长搞科研11 天前
【高届数人工智能会议】第七届人工智能、网络与信息技术国际学术会议(AINIT 2026)
运维·网络·人工智能·计算机网络·自动化·信号处理·可信计算技术
广州服务器托管1 个月前
WIN11中将控制面板固定到开始菜单的方法
运维·开发语言·windows·计算机网络·可信计算技术
开开心心就好2 个月前
免费轻量电子书阅读器,多系统记笔记听书
linux·运维·服务器·安全·ddos·可信计算技术·1024程序员节
axPpcfNN2 个月前
fpga 以太网w5500 SPI传输80MHz FPGA verilog TCP客户端驱动源码
可信计算技术
浩浩测试一下2 个月前
洪水猛兽攻击 Ddos Dos cc Drdos floods区别
安全·web安全·网络安全·系统安全·wpf·可信计算技术·安全架构
广州服务器托管3 个月前
NVIDIA最新591.74显卡驱动精简版:支持DLSS 4.5、所有RTX显卡都可使用,最新N卡驱动下载
计算机网络·网络安全·云原生·个人开发·可信计算技术
广州服务器托管3 个月前
比较优秀的视频音频播放器PotPlayer64-v1.7.22764绿色版
运维·windows·计算机网络·电脑·音视频·可信计算技术
广州服务器托管3 个月前
[2026.1.6]WINPE运维版20260106,带网络功能的PE维护系统
运维·开发语言·windows·计算机网络·个人开发·可信计算技术
广州服务器托管3 个月前
[2025.12.25] Win10.LTSC2021极速响应养老版19045.3208轻精简全功能【可更新】PIIS出品 老电脑福利 老旧电脑流畅运行
运维·人工智能·计算机网络·云计算·电脑·可信计算技术
Neolnfra4 个月前
RCE(远程命令执行)漏洞全解析:从原理到实战
安全·web安全·http·网络安全·https·系统安全·可信计算技术