物理真机上LUKS结合TPM的各个测试脚本
测试 脚本 结合 物理 各个 TPM 机上
2023-09-14 09:15:40 时间
本文中的脚本对应本系列前几篇文章中涉及的各个步骤的脚本。分为第一阶段建立脚本、第二阶段测试脚本以及复原脚本。其中第二阶段测试脚本又分为使用随机数密钥和使用自定义密钥两种。
1. 第一阶段建立脚本
create_1.sh内容如下:
#!/bin/bash
dd if=/dev/zero of=enc.disk bs=1M count=50
dd if=/dev/urandom of=disk.key bs=1 count=32
sudo losetup /dev/loop0 enc.disk
sudo cryptsetup --key-file=disk.key luksFormat /dev/loop0
sudo cryptsetup --key-file=disk.key open /dev/loop0 enc_volume
sudo mkfs.ext4 -j /dev/mapper/enc_volume
mkdir mountpoint
sudo mount /dev/mapper/enc_volume mountpoint
sudo sh -c 'echo "This is my plain text" > mountpoint/plain.txt'
sudo umount mountpoint
sudo cryptsetup remove enc_volume
sudo losetup -d /dev/loop0
../experiment4/key_gen.sh
其中,key_gen.sh内容如下:
#!/bin/bash
usr_info=$(whoami)
dev_info=$(sudo dmidecode | grep "Serial Number" | head -n 1)
dev_info=${dev_info#*: }
echo "usr_info: ${usr_info}"
echo "dev_info: ${dev_info}"
echo "${usr_info}" > key_info.dat
echo "${dev_info}" >> key_info.dat
2. 第二阶段测试脚本
- 使用随机数密钥
test_random.sh内容如下:
#!/bin/bash
sudo /usr/local/bin/tpm2_createprimary --hierarchy=o --key-context=prim.ctx
dd if=/dev/urandom bs=1 count=32 status=none | sudo /usr/local/bin/tpm2_create --hash-algorithm=sha256 --public=seal.pub --private=seal.priv --sealing-input=- --parent-context=prim.ctx
#dd if=/dev/zero bs=1 count=32 of=hash1.key status=none
#sudo /usr/local/bin/tpm2_create --hash-algorithm=sha256 --public=seal.pub --private=seal.priv --sealing-input=hash1.key --parent-context=prim.ctx
sudo /usr/local/bin/tpm2_load --parent-context=prim.ctx --public=seal.pub --private=seal.priv --name=seal.name --key-context=seal.ctx
sudo /usr/local/bin/tpm2_evictcontrol --hierarchy=o --object-context=seal.ctx 0x81010002
sudo /usr/local/bin/tpm2_unseal --object-context=0x81010002 | sudo cryptsetup --key-file=disk.key luksChangeKey enc.disk
shred disk.key
rm -f disk.key
sudo losetup /dev/loop0 enc.disk
sudo /usr/local/bin/tpm2_unseal --object-context=0x81010002 | sudo cryptsetup --key-file=- luksOpen /dev/loop0 enc_volume
sudo mount /dev/mapper/enc_volume mountpoint
- 使用自定义密钥
test_selfkey.sh内容如下:
#!/bin/bash
sudo /usr/local/bin/tpm2_createprimary --hierarchy=o --key-context=prim.ctx
sudo /usr/local/bin/tpm2_hash -C o -g sha256 -o hash.key -t ticket.bin key_info.dat
sudo /usr/local/bin/tpm2_create --hash-algorithm=sha256 --public=seal.pub --private=seal.priv --sealing-input=hash.key --parent-context=prim.ctx
sudo /usr/local/bin/tpm2_load --parent-context=prim.ctx --public=seal.pub --private=seal.priv --name=seal.name --key-context=seal.ctx
sudo /usr/local/bin/tpm2_evictcontrol --hierarchy=o --object-context=seal.ctx 0x81010002
#sudo /usr/local/bin/tpm2_unseal --object-context=0x81010002 | sudo cryptsetup --key-file=disk.key luksChangeKey enc.disk
sudo /usr/local/bin/tpm2_unseal --object-context=0x81010002 -o tmp.key
sudo cryptsetup --key-file=disk.key luksChangeKey enc.disk tmp.key
shred disk.key
rm -f disk.key
sudo losetup /dev/loop0 enc.disk
sudo /usr/local/bin/tpm2_unseal --object-context=0x81010002 | sudo cryptsetup --key-file=- luksOpen /dev/loop0 enc_volume
sudo mount /dev/mapper/enc_volume mountpoint
此文件中封掉的语句及其下紧接着的2条语句,就是前边提到的问题差异。运行下边两条命令,之后就一切正常;如果封掉下边两条语句,打开上边一条语句,就会出现错误。
3. 复原脚本
undo.sh内容如下:
#!/bin/bash
sudo cryptsetup remove enc_volume
sudo losetup -d /dev/loop0
sudo /usr/local/bin/tpm2_evictcontrol -C o -c 0x81010002
sudo umount mountpoint
sudo rm -rf ./*
相关文章
- 第八章- 测试并发应用(引言)
- jmeter之自定义java请求性能测试
- linux版mantis 安装和测试笔记
- 流媒体测试笔记记录之————解决问题video.js 播放m3u8格式的文件,根据官方的文档添加videojs-contrib-hls也不行的原因解决了
- iOS测试,打包上架相关(Xcode Help)
- 5.13.1.2 jmeter组件-非测试元件—HTTP代理服务器的使用
- 测试工程师究竟有多吃香?10年老司机真实经历告诉你!
- 了解Python自动化测试框架有哪些?
- 性能测试之脚本、工具、结果分析总结
- Selenium Page Object 自动化测试框架-data测试数据设计
- 从写下第1个脚本到年薪30W,我的自动化测试心路历程
- 使用Jmeter进行性能测试的这套步骤,涨薪2次,升职一次
- 如何设计自动化测试脚本?一文5个步骤带你从0到1设计
- 告别繁琐的测试脚本编写,使用goreplay流量回放真爽
- 从写下第1个脚本到年薪40W,我的自动化测试心路历程
- 不写代码也能做自动化测试!盘点几个好用的无脚本测试自动化工具
- 用selenium IDE手工编写自动化测试脚本
- 2022全网最全最细的jmeter接口测试教程以及接口测试流程详解 — Meter的安装和启动
- 万字以上的电商项目 Jmeter 脚本实战测试开发详细讲解
- Selenium自动化测试——巡检脚本开发(下)