原文地址: http://www.vonwei.com/?mod=pad&act=view&id=11

TPM 1.2规范主要面向PC平台,其103版本在2009年被接受为ISO标准(ISO/IEC 11889),而且国际上上亿的终端机器和laptop都配备了TPM安全芯片,到目前为止,虽然有声称TPM 2.0的芯片制造出来,不过占据主要市场的还是TPM 1.2芯片。由于TPM 2.0与TPM 1.2芯片并不兼容,在上层软件链成熟前,基于TPM 1.2的芯片还会持续一段时间。不过,由于TPM 2.0的灵活性,解决了TPM 1.2存在的很多安全问题,且满足更多场景的应用,其代替TPM 1.2芯片将是一个必然趋势。

本文简单总结下从TPM 1.2到TPM 2.0的变化。

  • 在密码算法上的变化

    SHA1算法的安全强度已经被证明无法满足需求,已经被弃用。

    不同的国度使用的密码算法不一定相同,主要源于不相信别人的密码算法,如在国内主要使用商密的SM系列算法。

    RSA虽然是最经典的非对称加密算法,不过对ECC的使用增加也是一个趋势,在相同的安全强度下,ECC的密钥长度比RSA要短很多,国内SM2也是一种ECC算法。特别是对于直接匿名认证机制DAA,基于ECC算法的效率明显高于RSA。2009年的美密上,有一篇关于768比特RSA密钥的因式分解,在密码领域TPM 1.2使用2048bit的RSA强度也存在争议。

    因此,TPM 2.0相对于TPM 1.2在密码算法上的改变主要参考以上几点。

    TPM 1.2密码算法:RSA加密、RSA签名、RSA-DAA、SHA1、HMAC,并没有要求支持对称算法。

    TPM 2.0算法支持:RSA加密和签名、ECC加密和签名、ECC-DAA、ECDH、SHA1、SHA256、HMAC、AES,而且厂商可以随意使用TCG IDs来增加新的算法,如在国内实现必须增加SM2、SM3和SM4算法,拥有一定的灵活性。

  • 不能只面向PC平台,应该扩展到更加广阔的平台

    TPM 1.2主要面向PC平台设计,而类似的安全思维其实可以扩展到网络、服务器、云环境、移动设备和嵌入式产品等。TPM安全芯片本身是以安全芯片的形式在主机上隔离出一个拥有独立处理能力和存储能力的区域,在这个程度上,虚拟技术、TrustZone、智能卡等本质上是一致的,不过安全性可能并不在一个层次。

    TPM 1.2的owner只有一个就是用户,而计算平台本身可能也需要使用TPM。TPM 1.2中,所有安全和隐私都在该owner的控制下。TPM 2.0将这种控制功能进行了隔离,给出了三个控制域:安全域或者存储域(owner为用户,用户正常的安全功能);隐私域(owner为平台或者用户,平台身份认证);平台域(owner为平台,保护平台固件的完整性)。

    关于TPM 2.0的三个控制域,以后的文章中会进行详细的分析。

    如果TPM使用太困难,成本价格太高,又有谁会想去用呢?TPM 1.2在这方面做的并不是很好。一个安全芯片嵌入到服务器上,体现不了多少成本;但是如果在空间有限的移动设备或者嵌入式设备上配备一个安全芯片,基本没太大的价值。因此,TPM 2.0规范主要提供一个参考,以及可能实现的方式,但是并没有限制必须以安全芯片的形式存在,如可以基于虚拟技术或者ARM TrustZone、Intel TXT等进行构建,只要能提供一个可信执行环境(TEE),就可以进行构建。

  • 密钥

    TPM 1.2的背书密钥只有一个,就是EK,出厂时厂商就预置在芯片内,更换都很困难。takeowner后可以生成属主和唯一的存储根密钥SRK,从而可以构建密钥的存储体系。

    在TPM 2.0中,EK属于隐私域,可以有多个,而且可以支持不同的非对称算法;SRK属于安全域,也可以有多个和支持不同的算法。实际上TPM 2.0的三个控制域中,都支持多密钥和多算法。

    TPM 2.0的主密钥都是通过主种子,使用密钥派生算法KDF来生成。存储种子的空间比存储密钥的空间要小很多。TPM 2.0中密钥的存储通常是通过对称加密,父密钥的强度不能低于子密钥吧,要不子密钥的安全强度也无法达到其声称的size。

  • 平台配置寄存器PCRs

    PCRs主要用来存储系统启动和运行过程中的度量值,防止度量日志被篡改。PCRs值不只保证每次系统启动时执行相同的代码,其保证以相同的顺序执行相同的代码。

    微软在win8中就使用PCR来恢复unsealing Bitlocker的密钥。如果系统启动过程中有任何微小的变化,都需要用户干预才能恢复,因此这个过程比较脆弱。

    TPM 2.0规范运行其有多个PCRs banks,一个bank内所有PCR使用相同的算法进行扩展操作。而且不同的banks可以分配不同的PCRs。对于不同的bank,扩展操作是相互独立的,互不干扰。

  • 签名

    TPM 2.0的签名方法支持多种算法,和各种复杂的签名机制,包含DAA和U-Prove。

    不过,TPM 2.0的签名原语设计的很灵活高效。在一个复杂的签名机制中,直接使用签名私钥的部分只是整个签名计算的很小一部分,而且是一个自包含的操作。基于这些考虑,TPM 2.0设计了灵活的签名机制,其它复杂的签名算法可以很容易使用其签名原语进行构造。

    Liqun Chen在CCS 2013上的论文“Flexible and scalable digital signatures in TPM 2.0”对签名机制和实现进行了详细的描述,可以参考。

  • 授权

    授权即是否允许软件进程访问TPM内部的资源(密钥、计数器、NV存储空间等)。

    TPM 1.2拥有不同的机制来授权客体(objects)的使用、委托使用和迁移等。而TPM 2.0提供了一个统一的框架来使用授权功能,授权功能可以通过各种独特的方式进行组合来增加灵活性。

    TPM 2.0允许使用明文密码和HMAC的授权,也允许使用多个授权限定符来构造任意复杂的授权策略。增强的授权机制是TPM 2.0的一个特色。

    TPM 1.2的授权比较受限制,唯一的授权访问方式是基于passwords和PCR值。例如,为了使用TPM内部的一个密钥,软件需要证明其拥有某个password的知识(通过hash的方式嵌入在可信命令中);而且可以将该密钥与特定的PCR状态seal在一起。这使得TPM1.2的授权机制缺乏灵活性。通常一个计算机平台拥有多个用户,如何共享TPM密钥和数据是比较困难的。不同用户由于password不一样,他们知道的密钥集合也是相互独立的。系统管理员如何授权这些密钥的使用是一个难点。

    TPM 1.2中,软件通过授权会话证明其拥有password(消息验证码),在命令需要授权前通常通过一个独立的命令来开启会话。TPM 2.0提出了增强的授权机制(Enhanced Authorization,EA)。

    TPM 2.0对密钥和数据的授权使用方式进行了扩展,授权会话变成了策略会话,多个授权方式可以通过布尔逻辑的形式进行组合。例如,在一个场景中,Alice和Bob两个用户拥有不同的passwords,现在想要让他们可以访问同一个密钥,可以创建一个策略“当且仅当Password(Alice) or Password(Bob),允许访问密钥”。软件进程可以先创建策略,在生成TPM密钥或者数据时指定该策略的哈希值即可,TPM不需要知道策略的详情,hash值足够。

  • TPM 2.0的授权方式总结

    Passwords:与TPM 1.2类似

    PCR值:与TPM 1.2一样,不过布尔逻辑加法表示可以使用多个PCR状态

    TPM counter or NVRAM value:需要计数器或者NV空间拥有某个特定值

    Physical presence:需要用户在计算机平台的物理现场

    Commands:客体只能被给定的一组命名使用

    Digital signature from a public key:允许使用外部智能卡来作为授权条件

  • TPM芯片的使用

    影响TPM 1.2使用的最大一个障碍是,PC厂商将TPM默认置为关闭状态。为了激活TPM的使用,用户必须进入固件(PC上通常为BIOS),找到管理TPM安全芯片的目录,将其激活。之所以有这个决定,主要是因为TCG早期受到了外面质疑的影响。质疑者认为使用TPM可能导致PC平台绑定特定的软件,而影响其他软件的使用,特别是厂商可以借此推广自己的软件。TCG因此推荐默认情况下关闭TPM。这实际上是一个资源的浪费,既然不用TPM,为啥要在上亿的PC平台上配备安全芯片呢?老百姓用不到,可以只在面向特定安全领域的终端上安装此芯片。国内TCM在这方面做得还好,只是一些特定型号的安全主机才会配备TCM芯片,并不是每个PC平台都装。

    既然要在BIOS中对TPM的使用进行激活,而实际上大部分用户都没有用过BIOS,这样势必导致大部分TPM永远沉睡在主板上。即便激活了TPM 1.2,其状态是没有属主的(unowned),需要通过一个特定的命令来建立属主,往往第一个建立属主的人才是TPM的实际拥有者。在非属主状态,能使用的TPM很有限,没有SRK,密钥也无法创建或者加载,PCR状态也无法进行验证。在TPM 1.2中,固件(BIOS)无法验证启动状态(boot state),固件可以哈希代码并扩展PCRs,但是检查具体的度量值只能靠更上层的操作系统或者应用程序。

    在TPM 2.0中对这些情况进行了修复。首先,TPM默认状态应该是开启的。其次,增加了平台域,保证平台固件也可以操作完整的TPM资源,即固件可以创建密钥、加密数据、验证PCR值等。这意味着,平台固件和平台用户可以同时成为TPM的属主(owner)。固件开发者可以使用这种能力来保证一个安全的预引导环境,类似操作系统使用TPM的能力来保护其操作以及上层应用。


TPM 2.0规范

TPM 1.2规范对功能的描述采用伪代码的形式,虽然更加正式,但是厂商实现时在细节上还是会存在一定的误解。TPM 2.0规范采用C语言的形式进行了描述,为不同厂商实现时提供了标准的指导。吐槽一下,说实话,TPM2.0的标准看起来也很费劲,对于一个不懂可信计算的开发人来说,让其根据规范实现芯片,绝对是一种煎熬。就算懂点可信计算,根据其规范理解其意思也是一个煎熬的过程,part 1写的不太详细,而后面C代码的关联性又没那么强。不管怎么,对于搞可信计算的人来说,认真研读TPM2.0规范,还是很有收获的,在后面的博客中,将不断总结对TPM 2.0规范的研读,下面给出TPM 2.0四部分概述:

  • Part1是比较系统的介绍,要了解可信平台模块的基本思想和原理,主要参考Part1吧

  • Part2给出TPM接口的变量、数据类型、数据结构和常量

  • Part3总结TPM能执行的所有命令,对于每个命令给出命令请求和响应的格式,并且通过C代码形式分析了每个命令的执行流程

  • Part4给出了Part3中命令代码用到的算法和方法

实际使用可信计算是很多命令的组合,因此,就算了解每个命令的意思,具体使用时还必须从整体上思考,才能组合出实际的应用。


参考

[1] Trusted Computing Group, TPM Library Specification, http://www.trustedcomputinggroup.org/resources/tpm_library_specification

[2] Justin D. Osborn and David C. Challener. Trusted Platform Module Evolution, http://www.jhuapl.edu/techdigest/TD/td3202/32_02-Osborn.pdf

[3] Liqun Chen. From TPM 1.2 to TPM 2.0, http://www.iaik.tugraz.at/content/about_iaik/events/ETISS_INTRUST_2013/ETISS/

文章标签:  TPM

TPM1.2到TPM 2.0的变化相关推荐

  1. TPM 2.0规范系列解读——Part 1体系结构第(四)读:TPM架构

    前言 TPM 2.0第1部分包含对TPM属性.功能和方法的叙述描述. 本篇主要基于TPM 2.0规范Part 1的第10章和第11章(TPM Architecture)的内容,对TPM架构进行解读. ...

  2. TPM 2.0规范系列解读——Part 1体系结构第(三)读:可信平台的基本特征

    前言 TPM 2.0第1部分包含对TPM属性.功能和方法的叙述描述. 本篇主要基于TPM 2.0规范Part 1的第9章(Trusted Platforms)的内容,对可信平台的基本特征进行解读. 文 ...

  3. 【汇总】多种方法教你绕过 TPM 2.0 安装 Windows 11 操作系统

    此前我们曾介绍三种方法绕过 TPM 2.0 来安装 Windows 11 操作系统. 方法一:删除 appraiserres.dll 文件 方法二:替换 appraiserres.dll 文件 方法三 ...

  4. 如何在没有安全启动或 TPM 2.0 的传统 BIOS 上安装 Windows 11

    想要在没有安全启动和 TPM 的情况下在旧版 BIOS 上安装 Windows 11?好吧,这里有一个 100% 有效的解决方法. 安装新的 Windows 操作系统的兴奋程度保持不变,我们中的大多数 ...

  5. 树莓派Linux内核编译选项如何开启TPM 2.0

    本文更新于2018-08-11 首发于简书, 文章链接 http://www.jianshu.com/p/174844b99716 同步至GitHub:https://github.com/liuqu ...

  6. [整理] TPM 2.0 设备串口通讯协议中文文档

    第 18 章: TPM 2.0 串口通讯报文结构 18.1: 总体介绍 命令桢格式 图-10.png 如图-10: 完整的命令帧包括以下5部分, 第2和第5部分可以为空, 第3和第4部分总是同时出现. ...

  7. matlab 编程计算θ0的变化对三相短路电流的影响(电力系统暂态分析)

    matlab 编程计算θ0的变化对三相短路电流的影响(电力系统暂态分析) 代码: xd=2.26; xq=2.26; xd1=0.269; %xd' xq1=0.269;%xq' xd2=0.167; ...

  8. 新的TPM 2.0漏洞可能让黑客窃取加密密钥

    可信平台模块 (TPM) 2.0 规范受到两个缓冲区溢出漏洞的影响,这些漏洞可能允许攻击者访问或覆盖敏感数据,例如加密密钥. TPM 是一种基于硬件的技术,可为操作系统提供防篡改安全加密功能. 它可用 ...

  9. 跳过TPM 2.0检测无损在Win10的基础上升级成Windows 11

    跳过TPM 2.0检测无损在Win10的基础上升级成Windows 11 情况要求 目前升级Windows 11的方法都是加入微软的预览体验计划 的dev推送渠道(可以看我关于这个的文章),我的基础版 ...

最新文章

  1. 微服务架构的优势与不足(三)
  2. 华夏幸福产业研究院顾强:从极限通勤看都市圈规划与发展
  3. 【英语学习】【Level 07】U04 Rest and Relaxation L6 Your home away from home
  4. 苹果macfcpx视频剪辑软件:Final Cut Pro X
  5. Java中文乱码问题如何解决?
  6. 天大2021年秋学期考试《画法几何及工程制图》离线作业考核试题
  7. 计算机网络是一个_______,计算机网络习题一、名词解释计算机网络,网络拓扑结构二、填空题1.计算机网络是__________与__________结...
  8. 浅层与深层、局部与全局、低级与高级特征的辨析
  9. 常用的JScript代码整理
  10. Android Studio中的typo波浪线提示
  11. Nginx是什么??
  12. 为什么用了 DDD 以后,代码更难懂了?
  13. Switch-case结构
  14. Debian备份与还原
  15. Selenium 循环删除页面元素
  16. 满满的大片既视感,还原 Pwn2Own 黑客大赛首日战况
  17. vivado设计之解读复杂性报告(Complexity Characteristics)
  18. PTA 7-15(查找) 航空公司VIP客户查询(25 分) 25分代码 哈希方法
  19. 流体模拟引擎splishsplash 数学方法
  20. 锂离子电池的国际标准和国家标准(含安全方面IEC62133等,IEC61060电性能和UN38.3 GB4943运输存储标准)

热门文章

  1. 海盗湾联合创始人在瑞典被判入狱两年
  2. MySQL学习教程(超全)
  3. 《深入理解计算机系统》
  4. 微信公众号代运营公司哪家好?
  5. 网站日志分析(二)——利用Quick BI制作企业化报表分析
  6. 【Vue】Vue打包文件后需要添加版本号Version,来防止更新后的页面有缓存
  7. 股票中的KD指标金叉和死叉
  8. [MATLAB] 主成分分析法 求矩阵的权重
  9. 产品经理 ≠ 产品设计师
  10. 液体倒进电脑了怎么办