应用TPM作linux可信起动的初步实践

 

首先要有一台带有TPM 1.2芯片,装有linux系统的计算机。

使用下面这条命令可以查看系统内核tpm驱动情况:

$ ls -la /lib/modules/`uname -r`/kernel/drivers/char/tpm

总计 100

drwxr-xr-x 2 root root 4096 02-03 21:47 .

drwxr-xr-x 7 root root 4096 02-03 21:47 ..

-rwxr--r-- 1 root root 9812 01-21 15:27 tpm_atmel.ko

-rwxr--r-- 1 root root 11128 01-21 15:27 tpm_bios.ko

-rwxr--r-- 1 root root 15860 01-21 15:27 tpm_infineon.ko

-rwxr--r-- 1 root root 19184 01-21 15:27 tpm.ko

-rwxr--r-- 1 root root 10796 01-21 15:27 tpm_nsc.ko

-rwxr--r-- 1 root root 16516 01-21 15:27 tpm_tis.ko

tpm_tis模块可以完全使用TPM1.2。需要这个模块,没的话可能需要重新编译新的内核。

接下来可以这几条命令加载TPM驱动:

 $ sudo modprobe tpm_bios
$ sudo modprobe tpm
$ sudo modprobe tpm_tis force=1 interrupts=0
$ dmesg
...
[xxx.yyy] tpm_tis tpm_tis: 1.2 TPM (device-id 0x4A10, rev-id 78)
如果显示有类似以上信息,说明设置成功。

需要安装TrouSerst和tpm-tools来管理TPM。
$ sudo /etc/init.d/tcsd start
用上面这条命令来起动这个管理工具

然后检查下tpm是不是可用了。
$ sudo tpm_version
TPM Version: 01010000
Manufacturer Info: 53544d20

好了。现在让我们来初始化TPM芯片
$ sudo tpm_takeownership
Enter owner password: xxxxxx
Confirm password: xxxxxx
Enter SRK password: yyyyyyyy
Confirm password: yyyyyyyy
记住! 这条命令只能执行一次!之后不能再常识!

如果出现下面这个错误:
Tspi_TPM_GetPubEndorsementKey failed: 0x00000023 - layer=tpm, code=0023 (35), No EK
则说明
Endorsement Key不存在,需要下面这条命令创建。
$ sudo tpm_createek

ok! 之后我们就可以得到
Public Endorsement Key
$sudo tpm_getpubek
期间需要输入
owner password。

接下来需要安装
TrustedGRUB,然后对其中一些文件做修改。

还有很重要的一处!
在内核源代码文件中的 drivers/char/tpm/tpm_tis.c
  1. [...]  
  2. static struct pnp_device_id tpm_pnp_tbl __devinitdata = {  
  3.     {"PNP0C31", 0},     /* TPM */  
  4.     {"ATM1200", 0},     /* Atmel */  
  5.     {"IFX0102", 0},     /* Infineon */  
  6.     {"BCM0101", 0},     /* Broadcom */  
  7.     {"NSC1200", 0},     /* National */  
  8.     /* Add new here */  
  9.     {"", 0},        /* User Specified */  
  10.     {"", 0}         /* Terminator */  
  11. };  
  12. [...]  

/* User Specified */这里我们可以加入我们自己的TPMUID(如果里面已经有了的话就不用了),这可以让内核支持我们需要的TPM型号。

关于如何得到TPM的具体信息,可以使用 iasl 这个软件来获得,具体的不在这里说明了。



以上是可信起动的bios──>bootloader部分的简单尝试。
其实这个trustedgrub也有不安全的bug,比如没有做从cd引导时的HASH等等,不过是开源,如果需要或想改进,可以自己动手,也不是什么难事。

可信起动接下来的部分,包括initrd和init部分。是整个起动可信最复杂的一块,我也将在接下来的工作中理清过程,同时尽我可能做一些改进。
 原文地址 http://blog.csdn.net/ceres0503/archive/2009/02/04/3863117.aspx 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值