TPM是什么(TPM是什么意思的缩写中文翻译)

TPM: Trusted Platform Module,定位为廉价的小芯片,提供密钥的安全存储,密码学协处理,系统状态的度量等功能。

TCG: Trusted Computing Group (https://trustedcomputinggroup.org) 制定TPM规范的组织,从官网可以下载TPM规范。

TPM规范定义了一个硬件的根信任,比软件更加安全。TPM的功能需要通过软件来使用,有一些开源的API实现。TPM提供完整性度量,健康检查和认证服务。

TPM可以做什么?

  • 批量对称加密(但厂商可能不会支持,这个受美国出口管制法限制)
  • 提供高质量的随机数生成器
  • 密码学服务
  • 受保护的内部存储空间,可以保存少量的数据。
  • 多种认证方式来访问受保护的密钥和数据
  • 数字证书签名和认证
  • 对密钥和数据签名。
  • 审计密钥和数据的使用。
  • 认证:报告平台状态
  • 封装:使用平台状态来授权访问密钥和数据

TPM的不同实现

TPM 2.0采用了库的定义方式,比1.2更加灵活,因此2.0有多种实现灵活性,例如:

  • 独立的TPM:TPM实现为一个独立的芯片,安全性最高。
  • 集成的TPM:TPM集成到某个芯片里。
  • 固件TPM:通过固件实现TPM,不需要额外芯片,由CPU在特定模式下运行固件里的软件。
  • 软件TPM:以软件实现的模拟TPM,适合测试开发阶段使用。而且开发测试阶段建议不要使用物理TPM,因为一旦把EK和根证书搞挂了,很难恢复。

下面是一些TPM的应用场景:

安全级别

典型应用场景

独立的TPM

最高

关键系统

集成的TPM

较高

网关等

固件TPM

娱乐领域的系统

软件TPM

测试和原型

虚拟TPM

云环境

2.0与1.2规范的差异

2.0规范在1.2的基础上增加了一些新的特性,比如:

  • 算法灵活性:TPM2.0引入了更多的算法支持,TPM1.2只支持一些固定的默认的算法,比如PCR扩展固定使用SHA1
  • 增强的授权:统一了授权的方式(和策略相关的一个改进)。
  • 快速密钥加载:改用对称加密算法,把密钥加载到TPM更快了。
  • PCR易用性:在1.2中,密钥与设备状态绑定后,如果设备状态发生改变,密钥也要改变。比如升级BIOS导致系统状态值变化,用户必须先unseal数据,升级,再seal数据。2.0则可以把数据与某个签名方认可的PCR值进行绑定,而不固定某个具体的PCR值。
  • 管理更灵活:不同授权方式可以独立使用。
  • 通过名称获取资源:大致是句柄会被替换的问题,而相同的名称总会产生相同的结果,不会被篡改,这些都是在协议层实现的,对用户来说只需要知道怎么用就可以了。

vTPM

vTPM需要libvirt和qemu支持,qemu支持vTPM有两种方式,一种是passthrough,透传宿主机的设备给虚机,宿主机需要有这个设备,

另一种是模拟器方式,从ChangeLog来看,qemu从2.11开始加入TPM模拟器的支持。而目前推荐使用的版本是qemu 2.12,libvirt 4.5。

编译TPM模拟器swtpm

实际上,qemu模拟TPM是利用外部的TPM模拟器实现的,需要借助swtpm工具,因此首先需要编译出swtpm模拟器。下载libtpms和swtpms的源码:

  • https://github.com/stefanberger/libtpms
  • https://github.com/stefanberger/swtpm

按照顺序,编译源码并安装。安装完后,可以查看版本

[root@centos8 ~]# swtpm --versionTPM emulator version 0.2.0, Copyright (c) 2014 IBM Corp.

如果编译时有crypto报错,检查是否安装了openssl-devel。

CentOS 8没有带python3twisted包,可先安装python3-pip,再用pip3安装twisted。

编译qemu

CentOS yum源里带的qemu-kvm并没有编译TPM模拟器的支持,如果虚机xml配置为tpm模拟器,启动虚机时提示不支持emulator backend,表示qemu编译时没有带TPM模拟器支持,需要手工编译。

以qemu 3.1.0为例,下载源码及编译

cd qemu-3.1.0mkdir buildcd build../configuremake

可以通过configure –help查看编译选项,TPM默认是打开编译的。编译x86_64即可,编译所有架构会很费时间。

编译完成后,build/x86_64-softmmu/qemu-system-x86_64为编译出的qemu执行程序,将其替换虚机xml的emulator字段。

视qemu编译选项的不同,虚机xml可能需要作相应的调整,移除不支持的设备。

配置虚机XML

可以通过virt-manager为虚机添加TPM设备(TIS),也可以手动编辑XML文件添加:

<tpm model='tpm-tis'><backend type='emulator' version='2.0'/></tpm>

有CRB和TIS两种模型,底层都是通过swtpm模拟的。libvirt官网的说明是,TIS是默认的模型,CRB只能用于TPM 2.0。用默认的设备模型即可。

启动虚机并安装TPM协议栈和工具

启动虚机,qemu会自动创建一个swtpm模拟器进程,并通过unix domain socket与之交互。

[root@centos8 ~]# ps aux | grep qemutss 19796 0.0 0.0 33672 3140 ? Ss Oct12 0:00 /usr/bin/swtpm socket --daemon --ctrl type=unixio,path=/var/run/libvirt/qemu/swtpm/3-centos77-swtpm.sock,mode=0600 --tpmstate dir=/var/lib/libvirt/swtpm/fdaa7820-ffc4-4dd3-b3ae-5b456e38e5a6/tpm2,mode=0600 --log file=/var/log/swtpm/libvirt/qemu/centos77-swtpm.log --tpm2 --pid file=/var/run/libvirt/qemu/swtpm/3-centos77-swtpm.pidqemu 19815 0.9 16.0 5100588 1310696 ? Sl Oct12 122:58 /root/qemu-3.1.0/build/x86_64-softmmu/qemu-system-x86_64 -name guest=centos77,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-3-centos77/master-key.aes -machine pc-q35-2.10,accel=tcg,usb=off,vmport=off,dump-guest-core=off -m 2048 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid fdaa7820-ffc4-4dd3-b3ae-5b456e38e5a6 -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=30,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1 -boot strict=on -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 -device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 -device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 -device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 -device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 -device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 -device pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 -device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.2,addr=0x0 -device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0 -drive file=/var/lib/libvirt/images/centos77.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 -device virtio-blk-pci,scsi=off,bus=pci.4,addr=0x0,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -drive file=/root/CentOS-7-x86_64-Minimal-1908.iso,format=raw,if=none,id=drive-sata0-0-0,media=cdrom,readonly=on -device ide-cd,bus=ide.0,drive=drive-sata0-0-0,id=sata0-0-0 -netdev tap,fd=32,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:fd:6c:2c,bus=pci.1,addr=0x0 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev socket,id=charchannel0,fd=33,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 -tpmdev emulator,id=tpm-tpm0,chardev=chrtpm -chardev socket,id=chrtpm,path=/var/run/libvirt/qemu/swtpm/3-centos77-swtpm.sock -device tpm-tis,tpmdev=tpm-tpm0,id=tpm0 -device usb-tablet,id=input0,bus=usb.0,port=1 -vnc 0.0.0.0:0 -device VGA,id=video0,vgamem_mb=16,bus=pcie.0,addr=0x1 -device ich9-intel-hda,id=sound0,bus=pcie.0,addr=0x1b -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 -object rng-random,id=objrng0,filename=/dev/urandom -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pci.6,addr=0x0 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=onroot 30563 0.0 0.0 11780 1048 pts/3 S 12:02 0:00 grep --color=auto qemu[root@centos8 ~]#

1.2使用的主流协议栈是IBM的trousers开源实现(托管在sourceforge),交互工具是tpm-tools包。2.0使用的主流协议栈和工具是tpm2-tss和tpm2-tools,代码托管在https://github.com/tpm2-software,最初应该是Intel主导的开源项目。

协议栈和工具在CentOS有对应的包,可以直接安装,因为功能还在开发中,建议使用如CentOS8这种较新的发行版,可以装载高一点的版本,或者自行从源码编译。

TSS和TPM模拟的版本要相符。

这里以模拟TPM 2.0为例,需要从yum安装:tpm2-abrmd, tpm2-tss和 tpm2-tools。tpm2-abrmd实现Broker和RM,tpm2-tss实现部分协议栈,tpm2-tools是命令行交互工具集。

执行tpm2_pcrlist,可以打印出pcr寄存器的值,表示安装成功。

TPM的实现层级

TPM是什么(TPM是什么意思的缩写中文翻译)

TPM协议栈层级关系

整个TPM的层级和关系如图。以tpm2工具集为例,大体划分如下:

  • tpm2-tools处于应用层,调用tpm2-tss协议栈的接口实现具体的功能。
  • tpm2-tss实现了TSS协议栈,并对应用层提供接口,依据应用的需要,接口可以有层次之分。
  • tpm2-abrmd实现TAB(TPM2 Access Broker)和Resource Mgr两个部分,这一层负责资源调度和协调,上下文切换。它其实也属于协议栈,只是在实现上分开了,可以看出,TPM的实现是很灵活的。
  • TCTI即TPM Command Transmission Interface,属于非常底层的接口,只有在系统启动初期或嵌入式系统中才会直接基于该接口进行开发,这里传输的命令在规范中都有相应的定义。

若要开发应用,需要根据待实现的功能,应用所处的运行环境,选择不同的接口层,根据TPM规范进行实现。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年4月22日 下午12:30
下一篇 2024年4月22日 下午12:41

相关推荐

  • 3ds vr

    3ds vr:虚拟现实技术的未来 虚拟现实(VR)技术是当今科技发展的一个重要领域。自20世纪80年代首次推出以来,虚拟现实技术已经取得了长足的进步。而3ds vr则是虚拟现实技术…

    科研百科 2024年10月4日
    16
  • 协同办公系统使用的是什么网络

    协同办公系统使用的是什么网络? 随着现代信息技术的不断发展,协同办公系统已经成为企业日常运营中不可或缺的一部分。协同办公系统可以帮助企业组织内部不同部门之间进行信息交流和协作,提高…

    科研百科 2024年9月19日
    22
  • 2024华能沁北电厂厂长

    2024华能沁北电厂厂长:追求卓越,服务社会 作为一名电厂厂长,2024华能沁北电厂厂长我要始终牢记自己的职责和使命,始终坚持追求卓越和服务社会的理念。 电厂是一个国家重要的能源基…

    科研百科 2024年11月28日
    17
  • 超市人力资源管理有哪些岗位(超市人事管理软件)

    超市人事管理软件 随着超市行业的不断发展,人事管理也变得越来越重要。为了更好地管理超市的人事,一款高效的人事管理软件是必不可少的。今天,我们向大家介绍一款超市人事管理软件,它可以帮…

    科研百科 2024年6月7日
    81
  • 《纳斯卡巨画》项目操作及分享(纳斯卡巨画活动)

    项目背景 秘鲁神秘的纳斯卡谷地巨画,一直以来都是一个未解开的谜,人们好奇这些谷地里由宽窄不一的沟壑组成的图形和画作是出自谁之手。有传言称这些画作是处于印第安人之手,也有人称是自然景…

    科研百科 2022年8月24日
    194
  • 邹平农商银行多措并举提高信贷档案管理水平

    为进一步加强信贷档案管理工作,自2019年以来,邹平农商银行围绕制度化、规范化、合规化的档案管理目标,从制度建设、岗位设置、硬件配备、检查辅导、加强培训等方面入手,多措并举,信贷档…

    科研百科 2022年7月31日
    321
  • ERP系统如何实现精细化管理?-蓝灵通erp

      对于很多企业而言,成功的管理,必然从精细化入手,作为企业管理的重要工具ERP系统也是如此。精细化管理是一种理念,也是一种文化,它是落实管理责任,将管理责任具体化、明确化,它要求…

    科研百科 2022年12月17日
    112
  • 工厂生产管理erp系统(工厂生产管理erp系统软件)

     PMC管理   PMC管理、俗称为生产与物控管理。在PMC管理功能当中,软件会根据物料数据与产品BOM表数据进行数据整合计算。因此,软件可以准确地计算出产品所需物料清单与需求量。…

    科研百科 2024年8月8日
    51
  • 党支部问题大全

    党支部问题大全党支部问题大全新世纪的到来,再度进入了全民阅读。大家就要着手了,一些在读者会收到商机盖上书单,自上而下阅读。在喜马拉雅山镇记者的多方追问下,这几份阅读涵盖了每一份备考…

    科研百科 2024年11月20日
    5
  • 课题申请延期原因

    课题申请延期原因 在科研领域中,课题申请延期是常见的现象。这是因为在进行研究过程中,可能会遇到各种不可预见的问题和挑战,这些问题和挑战可能会导致研究进度缓慢或无法按时完成。课题申请…

    科研百科 2024年10月12日
    20