实验3 vTPM相关

可以代做实验手册等私聊

一、实验目的

1.了解vTPM原理和相关知识;
2.创建具备vTPM的虚拟机;
3.加深对可信计算技术的理解。

二、实验内容

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

三、实验环境

系统
ubuntu20.04

硬盘要至少40
image.png

四、实验步骤

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等

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

 wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgztar zxf Python-3.10.0.tgz./configure --enable-optimizations --with-ssl --prefix=/usr/local/python-3.10.0makemake installln -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.编译

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

修改Makefile文件将python改成python3
image.png

#编译
make

image.png

3.安装libtpms

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

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

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

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 

image.png

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 结果应该如下:
image.png
创建一个 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 的各个接口

此时网桥的信息应该是:
image.png
这样就相当于把两张网卡通过网桥连起来了:
现在只需要启动镜像,指定网络连接模式是 TAP 即可。
在使用命令安装虚拟机之前需要先使用这个命令运行swtpm socket 运行命令如下所示。建议这个命令采用单独的终端运行,后续看到的通信也会更加的明显

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

(2).安装虚拟机

上传镜像
image.png

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

image.png
安装成功后关闭虚拟机:
启动虚拟机

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之后运行
image.png

#在qemu的虚拟机中执行命令
sudo apt-get update
sudo apt-get tpm2-tools

image.png

#如果命令成功执行并输出了4位随机字节,说明tpm功能正常
tpm2_getrandom 24 

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/317255.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化在线客服系统选择指南:关键要素与最佳实践分享

售后服务是企业整个运营流程的重要一环,而自动化在线客服系统又在售后服务中占据着举足轻重的位置。它为客户解决售后难题,帮助企业搭建完善高效的客户服务体系,在整个服务流程中发挥着巨大的作用。而市场上的客服系统厂家百花齐放&#xff0…

LaTeX语法、工具及模板大全(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 我之前把Markdown和LaTeX的语法写在一个博文里了,但是现在感觉还是应该拆开来比较合适,因为LaTeX太复杂了…… LaTex核心其实是套模板,但是为了套好模版,也需要学习一些具体的语法。 文章目录 1.…

最适合初学者的PHP集成环境!

如果你是一个php初学者,千万不要为了php的运行环境去浪费时间,这里我给大家推荐一款php的集成环境:phpStudy。它具备了php运行的三要素:php、apache、mysql,当然它具备的功能远不止这些。 phpstudy V8安装步骤 步骤一…

企业生产安全指南,请点击文章查收!

随着科技的不断发展,视频监控系统在各个领域中扮演着越来越重要的角色。视频监控系统为企业和机构提供了强大的工具,以提高效率、增强安全性,并为决策制定提供实时数据支持。 客户案例 企业安全与生产管理 在现代企业环境中,保障…

【数据结构】八大排序之归并排序算法

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.归并排序简介及思想 二.归并排序的代码实现 三.归并排序的非递归代码实现 四.归并排序的复杂度分析 📌时间复杂度 📌空间复杂度 结语 一…

大文件快速传输解决办法汇总

在数据传输普及的当今时代,文件体量也在不断的突破它”大“的上线,很多企业也在面临着这类大文件快速传输的烦恼,而且这里面的“大”可不是一般意义的几M,几G的文件,它有可能上T级甚至是PB级别、TB级别的大文件,或者是…

前缀和算法 -- [模版]二维前缀和

个人主页:Lei宝啊 愿所有美好如期而遇 本题链接 【模板】二维前缀和_牛客题霸_牛客网 输入描述 n是行,m是列,q是查询次数,x1,y1,x2,y2是二维数组的下标。 输出描述 通过两对下标&#x…

学习Java中的数据结构及API这一篇就够了

Java中的数据结构及API 1. 线性表1-1. 顺序表Array数组ArrayList集合 1-2. 链表自定义链表LinkedList 2. 队列2-1. ArrayDeque2-2. LinkedList2-3. 区别 3. 栈3-1. ArrayDeque3-2. LinkedList 4. 树4-1. 二叉树定义 5. 图5-1. 图定义 1. 线性表 1-1. 顺序表 顺序表是指用一组…

DDAE: Denoising Diffusion Autoencoders are Unified Self-supervised Learners

DDAE: Denoising Diffusion Autoencoders are Unified Self-supervised Learners Paper:https://arxiv.org/abs/2303.09769 Code:https://github.com/FutureXiang/ddae TL; DR:扩散模型的训练其实就是训练一个去噪模型,考虑到类似…

大数据概念:数据网格和DataOps

数据网格(Data Mesh) 一种新型的数据架构模式,旨在解决传统数据架构中存在的一些问题,例如数据孤岛、数据冗余、数据安全等。数据网格将数据作为一种服务,通过在分布式环境中提供数据服务,实现数据的共享和…

cJSON代码解读

1、背景 cJSON用了很久,但是对它一直不太了解。这次向添加对long long类型的支持,一直出问题。因为有以前添加两位小数float的经历,我觉得会很轻松,没想到翻车了。于是有了这边文档,阅读了部分博主对cJSON的解析&…

《动手学深度学习》学习笔记 第7章 现代卷积神经网络

本系列为《动手学深度学习》学习笔记 书籍链接:动手学深度学习 笔记是从第四章开始,前面三章为基础知识,有需要的可以自己去看看 关于本系列笔记: 书里为了让读者更好的理解,有大篇幅的描述性的文字,内容很…