可信计算实验(TPM模拟器搭建的实验环境)
Posted 椰椰椰果
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可信计算实验(TPM模拟器搭建的实验环境)相关的知识,希望对你有一定的参考价值。
可信计算实验环境搭建
文章目录
参考资料:
tpm工作原理
TPM模拟器和TPM2-TSS安装_jianming21的博客-CSDN博客_tpm2-tss
1、实验任务
本实验使用TPM模拟器搭建的实验环境进行实验,模拟器为IBM推出的TPM2.0模拟器。软件栈采用Intel推出的TSS相关组件,同时可能还要安装Openssl相关库。参照资料或根据自己电脑系统的需求,下载相应版本的软件,在安装好的虚拟机上搭建可信计算模拟环境,为后续实验打好基础。
2、实验流程
环境搭建:
Ubuntu 16.04.4 LTS
IBM TPM Emulator 2.0
Intel tpm2-tss 2.1.0
Intel tpm2-abrmd 2.0.2
Intel tpm2-tools
Openssl lib
TPM(Trusted Platform Module)可信任平台模块
什么是TPM?
TPM实际上是一个含有密码运算部件和存储部件的小型片上的系统,由CPU、存储器、I/O、密码运算器、随机数产生器和嵌入式操作系统等部件组成。
TPM是具有加密功能的安全微控制器,旨在提供涉及加密密钥的基本安全功能。TPM芯片集成在主板上并通过硬件总线与系统的其他部件通信。我们在Bios的设置建立对系统以及TPM的管理。
TPM的工作原理
TPM作为可信计算平台的核心,实际上是一块安装在主板上,含有密码运算部件和存储部件的系统级芯片。TPM技术最核心的功能在于对CPU处理的数据流进行加密,同时监测系统底层的状态。在此基础上,可以开发出唯一身份识别、系统登录加密、文件夹加密、网络通讯加密等各个环节的安全应用,它能够生成加密的密钥,还有密钥的存储和身份的验证,可以高速进行数据加密和还原,作为保护BIOS和OS不被修改的辅助处理器,通过TSS与TPM的结合来构建跨平台与软硬件系统的可信计算体系结构。即使用户硬盘被盗也不会造成数据泄漏。TPM的序号无法轻易被读出,其读取过程经过加密算法处理,与IC卡一样具有传输加密的安全特性,即TPM芯片就是一颗内嵌于计算机内的智能卡,该芯片的序号代表着该机、该装置、该硬件等信息。TPM上的数字就如同身份证号码,是唯一识别而不重复的一组数字。
实验步骤:
安装tpm模拟器
1、安装配置所需依赖
sudo apt install lcov pandoc autoconf-archive liburiparser-dev libdbus-1-dev libglib2.0-dev dbus-x11 libssl-dev \\
2、下载tpm模拟器程序ibmtpm1332.tar.gz并进行解压(创建一个安装目录,将文件解压到该目录下)和安装
wget https://jaist.dl.sourceforge.net/project/ibmswtpm2/ibmtpm1332.tar.gz
mkdir natatpm
cd natatpm
tar -zxvf ../ibmtpm1332.tar.gz
cd src/
sudo make
3、将tpm服务器加到linux系统执行目录下,并在ubuntu中配置tpm服务(创建tpm.server.service文件和配置服务)。
注:如果之前尚未安装vim,可以用以下命令安装vim编辑器:
sudo apt install vim
sudo cp tpm_server /usr/local/bin/
sudo vim /lib/systemd/system/tpm-server.service
在文件中添加以下内容:
[Unit]
Description=TPM2.0 Simulator Server Daemon
Before=tpm2-abrmd.service
[Service]
ExecStart=/usr/local/bin/tpm_server
Restart=always
Environment=PATH=/usr/bin:/usr/local/bin
[Install]
WantedBy=multi-user.target
4、测试TPM配置情况,启动TPM服务:
systemctl daemon-reload
systemctl start tpm-server.service
service tpm-server status
tpm软件安装(tpm2-tss、tpm2-abrmd、tpm2-tools)
1、安装tpm2-tss
1、添加tss用户并从官网下载tpm2-tss-2.1.0.tar.gz,并进行解压
sudo useradd --system --user-group tss
wget https://github.com/tpm2-software/tpm2-tss/releases/download/2.1.0/tpm2-tss-2.1.0.tar.gz
tar zxvf tpm2-tss-2.1.0.tar.gz
2、进入软件目录并进行配置查询。
为了测试各种TCTI、SAPI和ESAPI api等接口,通过定制配置构建来测试单个和整体接口情况,并利用check来构建出目标。
cd tpm2-tss-2.1.0/
./configure --enable-unit --enable-integration
sudo make check
3、执行安装并配置动态链接
sudo make install
sudo ldconfig
2、安装tpm2-abrmd
1、跟安装tpm2-tss类似,首先执行以下命令
wget https://github.com/tpm2-software/tpm2-abrmd/releases/download/2.0.2/tpm2-abrmd-2.0.2.tar.gz
tar zxvf tpm2-abrmd-2.0.2.tar.gz
cd tpm2-abrmd-2.0.2/
sudo ldconfig
./configure --with-dbuspolicydir=/etc/dbus-1/system.d --with-systemdsystemunitdir=/lib/systemd/system
sudo make install
2、添加tpm2-abrmd进入系统服务
sudo cp /usr/local/share/dbus-1/system-services/com.intel.tss2.Tabrmd.service /usr/share/dbus-1/system-services/
3、重启DBUS
sudo pkill -HUP dbus-daemon
4、修改配置文件,文件在/lib/systemd/system目录下(在启动服务时加载tss动态库并将服务启动到本地2321端口。
将“ExecStart=/usr/local/sbin/tpm2-abrmd”修改为“ExecStart=/usr/local/sbin/tpm2-abrmd --tcti=“libtss2-tcti-mssim.so.0:host=127.0.0.1,port=2321”)
cd /lib/systemd/system
sudo vim tpm2-abrmd.service
5、测试服务:
systemctl daemon-reload
systemctl start tpm2-abrmd.service
service tpm2-abrmd status
3、安装tpm2_tools
1、从官方下载tpm2_tools(注意此处要用root用户)
git clone -b 3.X https://github.com/tpm2-software/tpm2-tools.git
2、进入tpm2-tools目录执行以下命令:
cd tpm2-tools/
./bootstrap
./configure
make
3、测试tpm2-tools工具连接abrmd服务是否正常,如果正常,则进行安装
./tools/tpm2_getrandom 4
sudo make install
4、打印pcr值进行测试
tpm2_pcrlist
3、总结
本次实验主要是用tpm模拟器搭建可信计算实验环境,在实验过程中理解了各种tpm软件的作用,对tpm有了更加深刻的认识。
tss:是一个符合TCG标准的软件栈,包含如下几层:特征API(FAPI),增强系统API(ESAPI),系统API(SAPI),TPM命令传输接口(TCTI),TPM访问代理(TAB),资源管理器(RM),和设备驱动。
tpm2-abrmd:是一个守护进程。它应该在操作系统启动过程中启动。使用TPM,守护程序和客户端之间的通信是通过DBus和Unix管道的组合完成的。
tpm2-tools:tpm调用其进行可信计算的命令行工具
pcr:平台配置寄存器,是TPM中的动态内存区,被保留用于保持系统的引导序列度量结果的完整性。pcr可与身份密钥一起用于证明系统引导顺序是否正常。
TPM学习笔记1-1
可信平台模块(trusted platform module,TPM)是由可信计算组织(trusted computing group,TCG)定义的,一种置于计算机中的新的嵌入式安全子系统。
TPM到底能够解决什么问题?
可看roger schell和Michael thompson的文章:平台安全防御
可信计算的目的是保护最敏感的信息,如私钥和对称秘钥不被窃取或不被恶意代码使用。(可信计算假定客户端软件在其使用过程中可能会遭到破坏,当攻击发生时,敏感的秘钥被保护起来)TPM的设计非常灵活,可以应用于安全领域中的任何问题。
目前的安全问题非常严峻,不能仅仅靠软件来抵抗安全威胁,TPM是专门用来抵御安全威胁的。
背景介绍:
黑客攻击客户端:破译口令;会话拦截 ——》网络数据加密,防火墙的入侵检测机制和安全审计来应对攻击
DDoS和垃圾邮件
1)易受攻击的程序(代码bug,缓冲区溢出,解析错误)
Telnet和FTP 在网络上传送不加密的用户名和口令。
2)恶意程序:病毒和间谍软件/广告软件
3)错误配置的程序
4)社会工程:网络钓鱼和网络嫁接
(查询网站的ICP网站备案信息,通过ICP备案可以查询网站的基本情况、网站拥有者的情况等,用户可以通过工业与信息化部的网站备案管理网站(http://www.miibeian.gov.cn/)查询该信息进行网站信息并加以确认。)
5)物理数据窃取 ——》技术1:砖头技术(口令);2,对硬盘上数据加密;3,被盗物重获取技术(定位)
6)电子窃听:网络窃听;嗅探邮件——》邮件在发送前加密
结论:目前客户端软件不能做到完全安全,要考虑复杂性/兼容性等多种因素。考虑用硬件的支持来检测和防御恶意攻击。
TPM保护终端是通过以下几个方面进行的:
1.保证私钥的安全
2.检测恶意代码
3.阻止恶意代码使用私钥
4.保证加密秘钥安全
TCG芯片通过以下三个主要功能来达到这些目标:
1.公钥认证功能
公钥认证功能包括:采用硬件随机数产生器在芯片内产生密钥对,以及公钥签名、验证、加密和解密等。通过在芯片中生成私钥,并在其要传送至芯片外部时进行加密等方法,TPM可以保证恶意软件完全不能访问密钥。因为密钥在芯片外若不解密是不可见的,所以即使是密钥拥有者也无法取得私钥,从而避免网络钓鱼攻击(?)。同时,还因为恶意代码可能会使用TPM芯片中的私钥,因此必须采取一定的措施来确保恶意代码不能使用任何密钥。
2.完整性度量功能
完整性度量功能可以防止恶意代码获取私钥。
在可信引导过程中,引导序列中的配置信息的散列值被存储到芯片中的平台配置寄存器(platform configuration register,PCR)中。一旦平台启动,数据(如私钥)就在当时PCR值的情况下被密封,仅当PCR值与数据被密封时的值相同时,才能被解封。因此,启动一个非正常系统,或者病毒在OS中留有后门,由于PCR的值无法匹配,则不能解封,从而保护数据不被恶意代码访问。
3.证明功能
证明功能可以收集提交给PCR的所有软件度量的列表,然后用只有TPM知道的私钥进行签名。这样,一个可信的客户端就可以向第三方证明其软件没有危险。
以上是关于可信计算实验(TPM模拟器搭建的实验环境)的主要内容,如果未能解决你的问题,请参考以下文章
(4 Android )实验项目_Android开发环境搭建
第2章 GNS3和PacketTracer网络模拟器_搭建Packet tracer实验环境