实验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 
相关推荐
肾透侧视攻城狮6 天前
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
学习·计算机网络·web安全·网络安全·网络攻击模型·安全威胁分析·可信计算技术
肾透侧视攻城狮9 天前
网络空间安全之一个WH的超前沿全栈技术深入学习之路(7-2):利用第三方服务对目标进行被动信息收集防止被发现,就怕你学成黑客啦!
web安全·系统安全·网络攻击模型·安全威胁分析·可信计算技术·googlehacking·shodaw
肾透侧视攻城狮15 天前
网络空间安全之一个WH的超前沿全栈技术深入学习之路(七:利用第三方服务对目标进行被动信息收集防止被发现:就怕你学成黑客啦!)作者——LJS
学习·web安全·网络安全·系统安全·网络攻击模型·安全威胁分析·可信计算技术
肾透侧视攻城狮15 天前
网络空间安全之一个WH的超前沿全栈技术深入学习之路(三:渗透测试行业术语扫盲)作者——LJS
学习·安全·web安全·系统安全·网络攻击模型·安全威胁分析·可信计算技术
肾透侧视攻城狮17 天前
网络空间安全之一个WH的超前沿全栈技术深入学习之路(二:渗透测试行业术语扫盲)作者——LJS
学习·安全·web安全·系统安全·ddos·可信计算技术·安全架构
行十万里人生20 天前
基于 UDP 协议的 socket 编程:实现 UDP 服务器
opencv·网络协议·ubuntu·udp·华为云·信息与通信·可信计算技术
newxtc2 个月前
【齐家网-注册/登录安全分析报告】
安全·web安全·网络安全·网络攻击模型·可信计算技术
Aaron_Jㅤ3 个月前
Redis未授权访问漏洞利用合集
redis·安全·web安全·网络安全·系统安全·安全威胁分析·可信计算技术
Mr.Ants3 个月前
同态加密和SEAL库的介绍(八)性能
算法·安全·开源·区块链·可信计算技术·同态加密