第四十八个知识点:TPM的目的和使用方法

在检查TPM目的之前,值得去尝试理解TPM设计出来的目的是为了克服什么样的问题。真正的问题是信任。信任什么?首先内存和软件运行在电脑上。这些东西能直接的通过操作系统进行获取,因此能在操作系统层级的攻击者可以访问秘密信息(例如安全密钥)。:如果这些密钥直接存储在内存中,并被软件访问,那么攻击者很容易从存储密钥的内存位置读取密钥,从而危害安全性。

围绕这一问题的一个方案是确保密钥不会直接存储在可以被软件访问的计算机内存中。考虑到密钥对于安全应用程序是必需的,它们必须在某个时候以软件可以使用的状态出现,那么这怎么可能呢?一种方式是使用一个软件无法访问的密钥来封装内存中的密钥。例如有一个单独的硬件,其中有一个密钥可以进行这样的加解密操作。因此,软件可以利用这个硬件上存储的密钥来做各种事情,比如将密钥存储在内存中,但永远不能直接访问这个密钥。

这其实就是TPM所做的。一个TPM有一个RSA密钥对被叫做SRK(Storage Root Key,存储根密钥)。它的私钥部分对所有人所有事情都保密。使用这个私有密钥,可以使用SRK包装(通常称为“绑定”)其他密钥(软件使用的密钥),从而保护它们不被公开。除了简单地包装密钥之外,TPM还可以包装它们并将它们绑定到特定的平台度量上。只有当这些平台度量具有与创建密钥时相同的值时,才能打开此类密钥。这个过程叫做“密封”。TPMs还可以用于加密密钥生成和执行其他加密任务,其中一个任务称为远程认证,它创建硬件和软件配置的散列密钥摘要,允许第三方验证软件没有被更改。

真正需要理解的是它通过将安全性下推到硬件级别,并确保将安全性交给单独的硬件,有它自己的固件和电路,不能从外部改变,系统不会暴露给软件漏洞,因此更值得信赖。

因此TPM的目的是什么?克服信任软件完全可靠的问题。

TPM如何使用?我们提到了其中一些,首先就是绑定,可以通过SRK封装软件密钥。第二个就是“密封”,将特定的密钥绑定到度量平台上。第三,我们研究了远程认证,并注意到TPMs也可以用于其他加密功能,如密钥生成。

第四十八个知识点:TPM的目的和使用方法的更多相关文章

  1. 第二十八个知识点:什么是公钥密码学的IND-CCA安全定义?

    第二十八个知识点:什么是公钥密码学的IND-CCA安全定义? 我们将在这篇博客中讨论公钥加密的IND-CCA安全. IND-CCA安全代表选择明文的不可伪造性.这样的安全方案的思想就是给定一个密文,攻 ...

  2. NeHe OpenGL教程 第四十八课:轨迹球

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. SQL注入之Sqli-labs系列第四十七关,第四十八关,第四十九关(ORDER BY注入)

    0x1 源码区别点 将id变为字符型:$sql = "SELECT * FROM users ORDER BY '$id'"; 0x2实例测试 (1)and rand相结合的方式 ...

  4. 《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)

    1.简介 webdriver有三种判断元素状态的方法,分别是isEnabled,isSelected 和 isDisplayed,其中isSelected在前面的内容中已经简单的介绍了,isSelec ...

  5. 第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗?

    第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗? 几个月前(回到3月份),您可能还记得我在这个系列的52件东西中发布了第23件(可以在这里找到).这篇文章的标题是& ...

  6. 第四十九个知识点:描述在IPsec和TLS后的基本想法

    第四十九个知识点:描述在IPsec和TLS后的基本想法 网络安全协议(Internet Protocol Security,IPsec)和安全传输层协议(Transport Layer Securit ...

  7. 第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么

    第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么 Sigma协议 Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密).他们有下面的一般范式:Al ...

  8. 第十八个知识点:画一个描述ECB,CBC,CTR模式的操作

    第十八个知识点:画一个描述ECB,CBC,CTR模式的操作 第8周是画三个图的任务,但是维基百科上已经有人画的很好了 https://en.wikipedia.org/wiki/File:ECB_en ...

  9. 第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法

    第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-45-de ...

随机推荐

  1. Qemu/kvm虚拟化源码解析学习视频资料

    地址链接:tao宝搜索:Linux云计算KVM Qemu虚拟化视频源码讲解+实践​https://item.taobao.com/item.htm?ft=t&id=646300730262 L ...

  2. tensoboard [Errno 22] Invalid argument 以及 Invalid format string问题解决

    Invalid argument 问题解决: 需要保证tensorboard与tensorflow版本一致. Invalid format string 问题解决: 修改 manager.py 文件中 ...

  3. Spark集群环境搭建——部署Spark集群

    在前面我们已经准备了三台服务器,并做好初始化,配置好jdk与免密登录等.并且已经安装好了hadoop集群. 如果还没有配置好的,参考我前面两篇博客: Spark集群环境搭建--服务器环境初始化:htt ...

  4. 字节面试问我如何高效设计一个LRU,当场懵

    首发公众号:bigsai 转载请放置作者和原文(本文)链接 前言 大家好,我是bigsai,好久不见,甚是想念! 最近有个小伙伴跟我诉苦,说他没面到LRU,他说他很久前知道有被问过LRU的但是心想自己 ...

  5. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(八)-认识内存管理

    [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 [STM3 ...

  6. Postman 中 Pre-request Script 常用 js 脚本

    1. 生成一个MD5或SHA1加密的字符串str_md5,str_sha1 string1 = "123456"; var str_md5= CryptoJS.MD5(string ...

  7. 转 Android 多线程:手把手教你使用AsyncTask

    转自:https://www.jianshu.com/p/ee1342fcf5e7 前言 多线程的应用在Android开发中是非常常见的,常用方法主要有: 继承Thread类 实现Runnable接口 ...

  8. Linux基础命令---enable开启shell命令

    enable enable指令用来关闭或者激活shell内部命令.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法       enable [-a]   ...

  9. Linux基础命令---alias别名

    alias Alias不带参数或使用-p选项在标准输出上以"name=value"的形式打印别名列表.当提供参数时,为其值给定的每个名称定义一个别名.值中的尾随空格将导致在扩展别名 ...

  10. ajaxSubmit返回JSON格式

    开发时遇到根据不同情况返回错误提示信息的需求,用到了ajax中返回json格式数据的. 前台请求代码: <script type="text/javascript">  ...