可信计算实验(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模拟器搭建的实验环境)的主要内容,如果未能解决你的问题,请参考以下文章

TPM学习笔记1-1

可信平台模块

(4 Android )实验项目_Android开发环境搭建

第2章 GNS3和PacketTracer网络模拟器_搭建Packet tracer实验环境

蚂蚁安全实验室10篇论文被CCF-A类顶会收录,探索从算法角度实现AI可信

实验室中搭建Spark集群和PyCUDA开发环境