物理真机上LUKS结合TPM的各个测试脚本
测试 脚本 结合 物理 各个 TPM 机上
2023-09-14 09:09:18 时间
本文中的脚本对应本系列前几篇文章中涉及的各个步骤的脚本。分为第一阶段建立脚本、第二阶段测试脚本以及复原脚本。其中第二阶段测试脚本又分为使用随机数密钥和使用自定义密钥两种。
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 ./*
相关文章
- 测试方案怎么写,看测试经理怎么说?
- linux环境下执行RF测试脚本
- Shell: 测试网卡当前速率的脚本
- TPC测试系列(一)整体概述
- 安全测试全面总结-8-CSRF漏洞
- 测试要承担对应的责任,就要有对应的权利
- MySQL官方提供的测试数据库脚本和数据文件下载
- 如何使用jMeter对某个OData服务进行高并发性能测试
- pg_resetxlog整理及测试
- mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。
- 〖Python APP 自动化测试实战篇④〗- 通过 appium 驱动夜神模拟器完成第一个自动化脚本 - 查看通讯录
- 【华为云实战开发】14.如何使用Node爬虫利器Puppteer进行自动化测试
- 代理测试脚本
- Centos 测试合集
- 服务器常用性能测试脚本
- Jmeter性能测试脚本增强——事物控制器、集合点、参数化
- jmeter性能测试脚本录制不了的几种情况
- 测试人如何快速晋升为月薪过万的软件测试工程师?
- 逐渐走向“衰落”?2021年测试行业前景究竟如何?
- 工作四年,下定决心从普通测试转为测试开发。
- 【求职面试】救命,我好像发现了测试工程师面试通关秘籍
- Selenium自动化测试-5.脚本录制神器Katalon Recorder
- 性能测试之脚本、工具、结果分析总结
- 如何设计自动化测试脚本?一文5个步骤带你从0到1设计
- 无脚本自动化测试
- 公司测试部门来了个00后卷王之王,老油条感叹真干不过,但是...
- 优秀测试工程师成长之路:对软件测试的误解
- 全干工程师神器 - Jmeter 10 - Jmeter持续集成介绍及轻量级接口自动化测试框架(思维导图)
- 物理真机上LUKS结合TPM的各个测试脚本
- Selenium自动化测试——巡检脚本开发(中)
- 干货||快速了解手工测试&自动化测试