实验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.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.编译

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2013年第二届数学建模国际赛小美赛B题寄居蟹进化出人类的就业模式解题全过程文档及程序

2013年第二届数学建模国际赛小美赛 B题 寄居蟹进化出人类的就业模式 原题再现: 寄居蟹是美国最受欢迎的宠物品种,依靠其他动物的壳来保护。剥去寄居蟹的壳,你会看到它柔软、粉红色的腹部卷曲在头状的蕨类叶子后面。大多数寄居蟹喜欢蜗牛壳&…

Unity Window安装包制作

Unity Window安装包制作 介绍一、RAR自解压方式1、找到Unity打包的可执行程序2.创建自解压文件3.配置设置4、最后点击确定等待压缩完成即可(默认生成位置为你选中文件右键点击添加到压缩文件时的路径) 二、Setup Factory工具安装制作Window安装包相关常用…

2023年成都市中等职业学校学生技能大赛“网络搭建及应用”赛项竞赛样卷

2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 (总分1000分) 目录 2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 网络建设与调试项目(500分) 服务器搭建与运维项目(…

每日一题----删除指定数字

大家好今天是1月1号,我在这里祝大家元旦快乐,感谢大家的支持,新的一年我会更加努力。谢谢大家。!!! 文章目录 目录 文章目录 题目演示 题⽬描述: 先输⼊10个整数存放在数组中,再输⼊…

华为云创新中心,引领浙南的数字化腾飞

编辑:阿冒 设计:沐由 县域经济是我国国民经济的重要组成部分,是推动经济社会全面发展的核心力量之一。在推进中国式现代化的征程中,县域经济扮演的角色也越来越重要。 毫无疑问,县域经济的良性发展,需要多方…

阿里后端实习一面面经

阿里后端实习一面面经 项目中使用到了es,es的作用? elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 es中的重要概念? 群集:一个或多个节点…

【HarmonyOs Arkts笔记】Arkts ForEach循环使用

说明 ForEach循环数组对象时 要指定对象的唯一标识 例如 id,否则只会显示第一个 State tabsList: object[] [{ name: 砍价活动, id: 1, icon: https://php-b2c.likeshop.cn/uploads/images/2022062414322367e6a5479.png },{ name: 拼团活动, id: 2, icon: https:…

Java循环高级(无限循环,break,continue,Random,逢七过,平方根,判断是否是质数,猜数字小游戏)

文章目录 1.无限循环概念:for格式:while格式:do...while格式:无限循环的注意事项: 2.条件控制语句break:continue: 3. Random使用步骤: 4. 逢七过5. 平方根6.判断是否为质数7. 猜数字小游戏 1.无限循环 概…

【形式语言与自动机/编译原理】CFG-->Greibach-->NPDA(3)

本文将详细讲解《形式语言与自动机》(研究生课程)或《编译原理》(本科生课程)中的上下文无关文法(CFG)转换成Greibach范式,再转成下推自动机(NPDA)识别语言是否可以被接受…

NXP实战笔记(三):S32K3xx基于RTD-SDK在S32DS上配置WDT配置

目录 1、WDT概述 2、SWT配置 2.1、超时时间,复位方式的配置 2.2、中断形式 1、WDT概述 SWT 编程模型只允许 32 位(字)访问。 以下任何尝试访问都是无效的: •非32位访问 •写入只读寄存器 •启用SWT时,将不正确的值写入SR…

10 个顶级的 OBS 录屏替代品知识分享

视频是任何商业沟通策略的关键。您可能希望共享和记录您的屏幕以显示工作流程、为客户创建有用的教程和资源,或增强组织的知识库。 或者,也许视频是您核心产品的一部分,而出色的视频录制软件对于您的业务、YouTube 频道或直播爱好来说是必需…

计算机基础面试题 |01.精选计算机基础面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

【软件工程】融通未来的工艺:深度解析统一过程在软件开发中的角色

🍎个人博客:个人主页 🏆个人专栏: 软件工程 ⛳️ 功不唐捐,玉汝于成 目录 前言: 正文 统一过程(Unified Process) 介绍和解释: 应用: 优缺点&#xf…

使用docker轻量化部署snmp agent(SNMPv2访问)

文章目录 服务器环境说明单机部署(非挂载conf文件版)debian:buster-slim容器简介实现步骤创建Dockerfile创建SNMP配置文件 (snmpd.conf)构建Docker镜像运行Docker容器 注意补充复制容器文件到本地容器、镜像操作 单机部署(挂载conf文件版&…

【SpringBoot】常用注解

RequestBody:自动将请求体中的 json 数据转换为实体类对象。 这个例子凑巧传入的json属性键名和User键名一致,可以直接使用User实体类对象,如果键名不一致则需要用一个Map 类接收参数: PutMapping("/update")public R…

Android apk安装包反编译——apktool工具

目录 一、apk 文件结构二、下载 apktool三、 使用 apktool 反编译 apk四、编译为apk五、apk签名1.生成密钥库2.使用 v1 签名3.使用 v2 签名 六、Dex 加解密原理 一、apk 文件结构 首先是 apk,即安卓程序的安装包。Apk 是一种类似于 Symbian Sis 或 Sisx 的文件格式…

Flink实时电商数仓之DWS层

需求分析 关键词 统计关键词出现的频率 IK分词 进行分词需要引入IK分词器&#xff0c;使用它时需要引入相关的依赖。它能够将搜索的关键字按照日常的使用习惯进行拆分。比如将苹果iphone 手机&#xff0c;拆分为苹果&#xff0c;iphone, 手机。 <dependency><grou…

createElement, parentNode, removeChild, appendChild

1获取父节点 var childNode document.getElementById("child"); var parentNode childNode.parentNode; // 获取父节点利用dom获取元素要嵌套 引出&#xff1a;利用父子兄节点关系获取元素 标签&#xff0c;元素&#xff0c;元素节点空格&#xff0c;文本节点属性…

32个关于FPGA的学习网站

语言类学习网站 1、HDLbits 网站地址&#xff1a;https://hdlbits.01xz.net/wiki/Main_Page 在线作答、编译的学习Verilog的网站&#xff0c;题目很多&#xff0c;内容丰富。非常适合Verilog初学者&#xff01;&#xff01;&#xff01; 2、牛客网 网站地址&#xff1a;https:…

简述Redis备份策略以及对应的实现机制

引言 Redis作为高性能的内存数据库&#xff0c;数据的安全性至关重要。一旦数据丢失&#xff0c;可能会对业务造成重大影响。因此&#xff0c;备份Redis数据是每个Redis使用者都必须考虑的问题。本文将介绍Redis的备份策略以及对应的实现机制。 一、备份策略 1.1 定期备份 …