可信计算

可信计算/可信用计算（Trusted Computing，TC）是一项由可信计算组（Trusted Computing Group，前称为TCPA）推动和开发的技术。这个术语来源于可信系统，并且有其特定含义。从技术角度来讲，“可信的”（Trusted）未必意味着对用户而言是“值得信赖的”（Trustworthy）。确切而言，它意味着可以充分相信其行为会更全面地遵循设计，而执行设计者和软件编写者所禁止的行为的概率很低。

这项技术的拥护者称它将会使计算机更加安全、更加不易被病毒和恶意软件侵害，因此从最终用户角度来看也更加可靠。此外，他们还宣称可信计算将会使计算机和服务器提供比现有更强的计算机安全性。而反对者认为可信计算背后的那些公司并不那么值得信任，这项技术给系统和软件设计者过多的权利和控制。他们还认为可信计算会潜在地迫使用户的在线交互过程失去匿名性，并强制推行一些不必要的技术。最后，它还被看作版权和版权保护的未来版本，这对于公司和其他市场的用户非常重要，同时这也引发了批评，引发了对不当审查（censorship）关注。

很多著名的安全专家已经表明了对可信计算技术的反对，因为他们相信它将给计算机制造商和软件作者更多限制用户使用自己的计算机的能力。有一些人关注的则是可信计算可能（或者本身就是要）起到限制自由软件市场、私有软件开发和更一般化的整个IT市场竞争的作用。有些人，如理查德·斯托曼，因此给它起了一个恶名——背叛的计算（Treacherous computing）。

微软在Windows Vista中引入了可信计算。

## 信任的本质

与常规的信任的定义不同，安全专家将可信系统定义为：为保证较大系统的安全，而必须被信任的系统。例如，美国国防部将可信系统定义为：可以违反安全策略的系统；也就是说“一个因为你没有选择而必须信任的系统”。密码学家Bruce Schneier认为“‘可信’计算机并不意味着它是值得信赖的”。在这些定义下，硬盘控制器的用户必须信任它，相信它在任何情况下都能够诚实地将数据存储到磁盘；安全网站的用户必须信任它是安全的，因为用户自己无法验证。在安全领域的说法中信任总是一种折衷或者缺陷；有时根本无法避免，但这不是大家希望的。再作一个比喻，你最好的朋友无法共享你的医疗记录，因为他没有这些医疗记录。而另一方面，你的医生却可以共享。有可能你信任自己的医生并且认为他是一个好人；也有可能你们的镇上只有一个医生，而你只好信任他。

关于可信计算的主要争论在于信任本身的含义。可信计算组织将技术信任描述为“如果一个实体的行为总是按照预期的方式和目标进行，那它就是可信的”。批评者将可信系统描述为一个你“被迫信任”的系统，而非是真正值得信赖的。

也有批评者认为，并非总是能够检验可信计算依赖的硬件——可信平台模块，它是平台中最终的核心信任根所在硬件系统。如果实现有问题，它将给整个平台完整性及其保护的数据带来安全威胁。可信计算组织的规范是开放的，任何人都可以审查，然而厂商实现的最终商业产品却不一定会接受这样的审查。

最后一个问题就是，密码学的进步非常快，像可信计算这样用硬件实现的算法可能无意中造就了未来的废弃物。

尽管赞成者声称可信计算增进了安全性，而批评者则反击称不仅安全得不到增强，可信计算还可能推动强制数字权限管理（DRM），伤害到用户的隐私，并对用户强加其他的限制。与可信计算相比，安全计算主要关注匿名性。安全计算的宣扬者声称，额外的安全性可以通过其它的方式获得，而不必禁止用户成为超级用户获得计算机的控制权。

可信计算的赞成者辩称，隐私问题在现有的规范中已经解决——可能是对早期版本规范受到的批评而做的相应处理。终端用户对于他们的可信平台模块的使用方法有很多种，然而，第三方可能强制使用一些特定的选项，从而无法体现用户选择的好处。

## 核心概念

可信计算包括5个核心技术概念，在一个完全可信的系统中它们都是必须的。

- 认证密钥
- 安全输入输出
- 内存屏蔽/受保护执行
- 封装存储
- 远程证明

### 安全输入输出（I/O）

安全输入和输出（I/O）指的是计算机用户与他们认为与之进行交互的软件间的受保护的路径。在当前的计算机系统中，恶意软件有很多途径截取用户与软件进程间传送的数据。例如，键盘监听者（Keyboard Logger）和屏幕截取者（Screen Scraper）。安全I/O表现为受硬件和软件保护和验证的信道，采用校验值来验证进行输入输出的软件没有受到篡改。将自身注入到信道间的恶意软件会被识别出来。

尽管安全（I/O）提供针对软件攻击的防护，但它未必提供对基于硬件的攻击的防护，例如物理插入用户键盘和计算机间的设备。

### 内存屏蔽

内存屏蔽扩展为当前的内存保护技术，提供了对内存敏感区域（如放置密钥的区域）的全面隔离。甚至操作系统也无法访问屏蔽的内存，所以其中的信息在侵入者获取了OS的控制权的情况下仍然是安全的。

### 封装存储

封装存储从当前使用的软件和硬件配置衍生出的密钥，并用这个密钥加密私有数据，从而实现对它的保护。这意味着该数据仅在系统拥有同样的软硬件组合的时候才能读取。例如，用户在他的计算机上保存自己的日记，不希望其他的程序或计算机读取。这样一来，病毒可以查找日记，读取它，并将它发给其他人。Sircam 病毒所作的与此类似。即使日记使用了口令保护，病毒可能运行字典攻击。病毒还可以修改用户的日记软件，用户使用软件打开日记时通过受篡改的软件可能泄漏其中的内容。使用封装存储，日记被安全地加密，只有在该计算机上的未被修改的日记软件才可以打开它。

### 远程证明

远程证明使得用户或其他人可以检测到该用户的计算机的变化。这样可以避免向不安全或安全受损的计算机发送私有信息或重要的命令。远程证明机制通过硬件生成一个证书，声明哪些软件正在运行。用户可以将这个证书发给远程的一方以表明他的计算机没有受到篡改。

远程证明通常与公钥加密结合来保证发出的信息只能被发出证明要求的程序读取，而非其它窃听者。

再用上面日记的例子，用户的日记软件可以将日记发送给其他的机器，但是只能发给那些能够证明所运行的是一份安全的日记软件。与其他的技术结合起来，远程证明可以为日记提供一个更加安全的路径：通过键盘输入以及在屏幕显示时受到安全I/O的保护，内存屏蔽在日记软件运行时保护日记，而封装存储在它存储到硬盘的时候保护它，并且远程证明保护它在其它计算机使用时不受非授权软件的破坏。

## 争议问题

可信计算的反对者指出：保护计算机不受病毒和攻击者影响的安全机制，同样会限制其属主的行为。他们指出这将使得强制性垄断成为可能，从而会伤害那些购买可信计算机的人们。

剑桥大学的密码学家Ross Anderson非常关切的一个问题是"可信计算可能支持远程审查... 一般而言，支持可信计算的计算机系统的属主所创建的数字对象将始终受到其控制，而非那些控制数字对象存储在的计算机的人... 所以，如果有人写了被法庭认定为诽谤的文章，作者将被迫进行审查—并且如果作者拒绝，编写文字处理软件的公司可能被命令删除该文章。在这种可能之下，我们可以预料可信计算将被用于压制包括色情文学到对政治领导人的批评在内的任何事"

他进一步讲到：

...软件提供者可以使得你很难转而使用其竞争者的产品。简单而言，Word可以加密你的所有文档，而密钥只能由微软的产品访问；这意味着你只能使用微软的产品读取，而非其它竞争者的文书处理软件。

...对微软而言最重要的好处在于可信计算可以大规模增加从微软产品（如Office）转向使用其竞争产品（如Open Office）的代价。例如，现在如果一个律师事务所从Office转向使用OpenOffice，那它将不得不安装软件，培训雇员并转换现有的文件。在5年内，一旦他们收到来自于数以千计的客户的可信计算保护的文档，他们将不得不从每个客户处获得许可（以签名的数字证书的形式），以将这些文件迁移到新的平台。律师事务所实际上根本不想这样做，所以他们被束缚得更深，这又使得微软可以大规模提高价格。

Anderson总结道最根本的问题在于控制可信计算基础设施的人将获取巨大的权力。拥有这样的权力就像是可以迫使所有人都使用同一个银行、同一个会计或同一个律师。而这种权力能以多种形式被滥用。

### 用户不能更换软件

在日记的例子中，封装存储保护日记不受病毒等恶意程序的伤害，但它无法区分恶意程序与有用的程序（如将日记转换为新格式的程序或提供对日记进行查找新方法的程序）。如果用户希望使用另外的日记程序，他将发现新日记程序不可能打开已有的日记，这样，用户就被“锁定”在旧的程序中。同样，用户如果未得到日记软件的允许，他将无法读取或修改自己的日记。如果他使用的日记软件没有编辑或删除的选项，那就无法修改或删除已有的日记条目。

远程证明可能导致其他的问题。目前，尽管有些网站可能（故意）被格式化为仅有特定的浏览器能够解读其编码，但网站仍然可以使用多种WEB浏览器访问--有些浏览器可以通过模拟其他浏览进行访问。例如，假设微软的MSN拒绝为非微软浏览器提供页面服务，用户可以通过让浏览器模拟微软的浏览器来实现访问。远程证明使得这样的模拟不可能，因为MSN可能要求提供一个证明用户正在实际运行一个IE浏览器。

### 用户不能控制他们接收的信息

可信计算常受到的一个批评就是，封装存储可能阻止用户将封装的文件移动到新的计算机。这个限制可能来自于糟糕的软件设计或内容提供者故意实施的限制。TPM规范的迁移部分要求一些特定类型的文件只能移动到采用相同安全模型的计算机上。如果一个旧型号的芯片不再生产，就根本不可能将数据转移到新计算机；那些数据将与旧计算机一同长眠。

此外，批评者还注意到TPM可以强制用户接受间谍软件，例如强制音乐文件只能在那些在播放时会通知唱片公司的机器上播放。同样一个新闻杂志可能要求用户证明使用特定的阅读器后，才允许下载他们的文章。阅读软件可能在杂志网站上的版本变化后，禁止阅读最初的新闻。这种最新版本限制的实施将允许杂志通过修改或删除文章来“重写历史”。即使用户将最初的文章存储在自己的计算机中，阅读软件发现网站变化后，也可能拒绝阅读请求。

### 丧失互联网上的匿名性

由于装有可信计算设备的计算机可以唯一证明自己的身份，厂商或其他可以使用证明功能的人就能够以非常高的可能性确定用户的身份。

这种能力大小要视用户提供自愿或间接提供身份信息的机会而定。一个常见的获取信息途径就是用户购买计算机后就注册个人信息。另外一个常见的途径是用户为厂商的会员网站提供身份信息。

可信计算的赞成者指出，它可以使在线购物和信用卡交易更安全，但这可能导致计算机用户失去访问互联网时希望拥有的匿名性。

批评者指出这可能导致对政治言论自由，新闻记者使用匿名信息源，揭发政治博客，以及其他公众需要通过匿名性来防止报复的领域，产生抑制作用。

作为对隐私问题关注的响应，研究者开发了直接匿名证明（Direct anonymous attestation，DAA），它允许客户端实施证明，同时限制需要向验证者提供的信息。

### 建议的属主重载

所有这些问题源自于，可信计算平台对程序提供的保护是针对包括属主在内所有事物的。一个简单的解决方案就是允许计算机的属主绕过这些保护。这被称作属主重载（owner override），刚刚被提出作为规范的修订内容。

激活属主重载将允许使用安全的I/O路径来确保属主通过物理接触（physical present）操作，进而绕过保护。这样的重载将允许通过远程证明表明当前的环境符合用户的规范，例如创建证书表明IE正在运行，而实际上是另外的浏览器在运行。这样不是通过阻止软件修改，而是通过远程证明来表明软件受到了未经属主授权的修改。

一些可信计算组织的成员认为属主重载对可信计算计划是一个威胁。他们认为属主重载伤及对远程计算机的信任，因为远程证明并未集中实施。属主重载提供了为计算机属主提供了安全和实施的好处，但并未阻止其他属主在自己的计算机上放弃规则和限制。在这样的场景下，无论是日记、DRM音乐或联合的项目的数据，一旦被发送到其他人的计算机，并且这些计算机由他人控制安全，那这些计算机将可以对这些数据进行复制。

可信计算的一个重要前提是属主不可信任。这里假定用户将或者由于疏忽或者故意为之，来试图破坏自己的系统。例如，IT管理员无法确保笔记本电脑将运行一个特定的操作系统。

### 关于实用性的质疑

同样受到激烈的争论还有可信计算所基于的一些假设在“现实世界”中一定程度上是不实际的，用户可能会发现在常规层面上使用属主重载是非常必要的，或者根本不愿意使用这些功能，尽管软件厂商坚持要求使用。

所有的硬件组件，包括可信计算硬件本身，都可能发生故障，或者被升级和更替。由于存在以下可能性--不可逆转得丧失对自己信息的访问或者丧失多年的工作成果而根本没有恢复的机会，用户可能会认为这无法接受。有些针对信息使用和发布或者强制信息在未来很长一个阶段可靠地存储的限制，使得可信计算技术的很多预期的应用根本不可行。将属主或者使用限制基于特定部分的计算机硬件的可验证标识，对消费者而言可能并不足够——如果它坏了怎么办？

## 支持信息

- 从2004年开始，主要的计算机厂商就开始销售包含可信平台模块以及相应BIOS支持的机器（一般是笔记本）。
- Linux kernel从版本2.6.13开始已经包含了对可信计算的支持，并且现在已有许多Linux项目开始支持可信计算。在05年1月，Gentoo Linux的成员“crypto herd”宣称他们准备支持可信计算，特别是支持可信平台模块。同时，也有符合TCG规范的Linux开源软件协议栈—— TrouSerS。
- 有些具有有限的可信计算功能产品在当前版本的Microsoft Windows下也有第三方的实现。
- BitLocker支援TPM。
- TrustKernel 的T6安全操作系统利用ARM TrustZone技术实现了一个软件级别的TPM功能。

## 外部链接

- 可信计算规范标准制定组织
- '可信计算'常见问题，繁体中文版 — 剑桥大学教授Ross Anderson反对可信计算的FAQ，中文版。
- '可信计算'常见问题 — 剑桥大学教授Ross Anderson反对可信计算的FAQ。
- 反知识产权
- 可信计算组织 (TCG) — 可信计算规范标准制定组织，以前称为TCPA。
- TrouSerS - 开源TCG软件栈 有一个很好的 FAQ , 解释你使用TPM可能遇到的问题。
- TCPA误解辩论和Linux驱动 IBM Watson研究院全球安全分析实验室
- TCPA/TCG硬件实验, 或者: 如何学会停止担忧并爱上熊。技术报告TR2003-476, Dartmouth大学计算机系， 2003年12月 和 "Enforcer" Linux安全模块
- 下一代安全计算基(NGSCB) — 微软的可信计算体系结构
- Palladium与TCPA — 来自Bruce Schneier的Crypto-Gram时事通讯
- Against-TCPA
- 可信计算的有趣应用
- 你能够信任你的计算机么? — FSF的文章
- 针对“微软会议”文章的技术博客 -- 比文章中解释"封装存储"得清楚，但没有数学内容。
- 可信计算：机遇与风险, EFF (电子前沿基金会)的技术成员Seth Schoen。
- Microsoft's Machiavellian manoeuvring (ZDNet UK) by Bruce Schneier
- LAFKON - 一个关于可信计算的电影 反对可信计算的电影
- 可信系统问题: 安全层，统计威胁分析，和清白的假定," 国土安全--趋势与争论, IEEE智能系统, Vol. 20 No. 5, pp. 80-83 (Sept./Oct. 2005) (更为一般化地讨论可信系统，将其作为国土安全的安全战略)。另见, 可信系统项目, 全球信息社会项目的一部分( GISP ), 一个全球策略研究所的联合项目( WPI )和科技策略高级研究中心( CAS) (可信系统项目分析对安全和社会从使用可信系统策略的推论)。
- 可信移动平台 - 一个定义移动设备安全功能的规范集，IBM、Intel和NTT DoCoMo联合制定。
- Jason F. Reid, William J. Caelli: DRM, 可信计算与操作系统体系结构 2005