TSS示例程序
TSS示例程序
提纲 ■TPM模拟环境搭建 ■TSS编程实例 ■有关PCR的操作(READ、EXTEND) ■HASH操作 ■文件加解密操作 ■远程证明
◼TPM模拟环境搭建 ◼TSS编程实例 ◼ 有关PCR的操作(READ、EXTEND) ◼ HASH操作 ◼ 文件加解密操作 ◼ 远程证明 提纲
TPM模拟环境的搭建 ■准备工作: "1.Linux操作系统,内核版本在2.6.30以上 "2.Tpm_emulator软件 ■3.TSS软件栈 以上软件安装完毕后,执行以下3个操作
TPM模拟环境的搭建 ◼ 准备工作: ◼ 1. Linux操作系统,内核版本在2.6.30以上 ◼ 2. Tpm_emulator软件 ◼ 3. TSS软件栈 ◼ 以上软件安装完毕后,执行以下3个操作
TPM模拟环境的搭建 (1)启动Tpm emulator:打开一个新的 终端,在终端中输入命令: .#modprobe tpmd_dev #rm /var/run/tpm/tpmd_socket:0 .#tpmd -fd
TPM模拟环境的搭建 ◼ (1)启动Tpm_emulator:打开一个新的 终端,在终端中输入命令: ◼ #modprobe tpmd_dev ◼ #rm /var/run/tpm/tpmd_socket:0 ◼ #tpmd –fd
TPM Emulator启动成功 OpenSLIGE 回终端显 回▣区 文件)编辑) 查看)终端T) 标签T) 帮助0) ../tpm/tpm_testing.c:73:Debug:run_4: 329,306 ../tpm/tpm_testing.c:74:Debug:run_5: 171,143 ../tpm/tpm_testing.c:75:Debug:run_6+: 160,155 ../tpm/tpm_testing.c:76:Debug:run_34: 0 ../tpm/tpm_testing.c:110:Debug:tpm_test_sha1() ../tpm/tpm_testing.c:156:Debug:tpm_test_hmac() ../tpm/tpm_testing.c:183:Debug:tpm_test_rsa_EK() raot ../tpm/tpm_testing.c:185:Debug:tpm_rsa_generate_key() ../tpm/tpm_testing.c:190:Debug:testing endorsement key ../tpm/tpm_testing.c:196:Debug:tpm_rsa_sign(RSA_SSA_PKCS1_SHA1) ../tpm/tpm_testing.c:199:Debug:tpm_rsa_verify(RSA_SSA_PKCS1_SHA1) ../tpm/tpm_testing.c:202:Debug:tpm_rsa_sign(RSA_SSA_PKCS1_DER) ../tpm/tpm_testing.c:205:Debug:tpm_rsa_verify(RSA_SSA_PKCS1_DER) ../tpm/tpm_testing.c:209:Debug:tpm_rsa_encrypt (RSA_ES_PKCSV15) ./tpm/tpm_testing.c:213:Debug:tpm_rsa_decrypt (RSA_ES_PKCSV15) ../tpm/tpm_testing.c:217:Debug:verify plain text ../tpm/tpm_testing.c:220:Debug:tpm_rsa_encrypt (RSA_ES_OAEP_SHA1) ../tpm/tpm_testing.c:224:Debug:tpm_rsa_decrypt (RSA_ES_OAEP_SHA1) ./tpm/tpm_testing.c:228:Debug:verify plain text ../tpm/tpm_testing.c:260:Info:Self-Test succeeded ../tpm/tpm_startup.c:44:Info:TPM_Startup(2) tpmd.c:372:Debug:waiting for connections... tpmd.c:372:Debug:waiting for connections
TPM_Emulator启动成功
(2)启动TSS软件栈 打开一个新的终端,在终端中输入命令: #tcsd //TSS启动 #tpmmanager 则出现如图所示界面: TPM Manager Stat Detds Sopobiinies PCR TPM Seiting Advanced M erabied aCMd wwrerset
(2)启动TSS软件栈 打开一个新的终端,在终端中输入命令: #tcsd //TSS启动 #tpmmanager 则出现如图所示界面:
(3)设置TPM属主及SRK密码 TPM Manager ☒ Info Owner Settings Ownership Backup TPM Settings Advanced Owner Management About A TPM Owner is required to manage the TPM.Allowed operations depend on the TPM status. Take Ownership Take Change Owner Password Change Change SRK Password Change Clear Ownership and return to factory de faults Clear TPM Status ⊙ enabled ⊙ activated © owner set Quit
(3)设置TPM属主及SRK密码
提纲 ■TPM模拟环境搭建 ■TSS编程实例 ■有关PCR的操作(READ、EXTEND) ■HASH操作 ■文件加解密操作 ■远程证明
◼TPM模拟环境搭建 ◼TSS编程实例 ◼ 有关PCR的操作(READ、EXTEND) ◼ HASH操作 ◼ 文件加解密操作 ◼ 远程证明 提纲
(1)有关PCR操作(READ) 创建上下文并 (1)创建上下文并连接到本地TCS; 示例程序-1 连接到本地 Tspi_Context_Create(&hCont TCS ext); ■程序功能: Tspi_Context_Connect(hCont ■读取TPM中的PCR值 ext,0); 获取TPM对象 (2)获取TPM对象; ■源码参见: Tspi_Context_GetTpmObject -pcr_read.c (hContext,&hTPM); (3)读取TPM对象的PCR值; ■程序流程见右图: 读取TPM对象 Tspi_TPM_PcrRead(hTPM,i, 的PCR值 pulPcrValueLength,&prgbPcr Value) (4)Tspi_Context_FreeMemor y(hContext,prgbPcrValue); 输出PCR值
(1)有关PCR操作(READ) ◼ 示例程序-1 ◼ 程序功能: ◼ 读取TPM中的PCR值 ◼ 源码参见: ◼ pcr_read.c ◼ 程序流程见右图: 创建上下文并 连接到本地 TCS 获取TPM对象 读取TPM对象 的PCR值 输出PCR值 (1)创建上下文并连接到本地TCS; Tspi_Context_Create(&hCont ext); Tspi_Context_Connect(hCont ext, 0); (2)获取TPM对象; Tspi_Context_GetTpmObject (hContext,&hTPM); (3)读取TPM对象的PCR值; Tspi_TPM_PcrRead(hTPM,i,& pulPcrValueLength,&prgbPcr Value) (4)Tspi_Context_FreeMemor y(hContext,prgbPcrValue);
(1)有关PCR操作(EXTEND) 创建上下文并 ■ 示例程序-2(扩展) (1)创建上下文并连接到本地TCS: 连接到本地 TCS Tspi_Context_Create(&hContext); ·程序功能: Tspi_Context_Connect(hContext,0) ·对PCR寄存器 (2)获取TPM对象; 进行扩展操作 获取TPM对象 Tspi_Context_GetTpmObject(hCont ■源码参见: ext,&hTPM); ■pcr_extend.c (3)扩展TPM对象的PCR值,通过TCS 扩展TPM对象 扩展到真正TPM的PCR值; ·程序流程见右图: 的PCR值 Tspi_TPM_PcrExtend(hTPM,i, ulPcrDataLength,pbPcrData, pPcrEvent,&pulPcrValueLength,&pr gbPcrValue) 输出扩展 的PCR值 (4)输出扩展PCR值
(1)有关PCR操作(EXTEND) ◼ 示例程序-2(扩展) ◼ 程序功能: ◼ 对PCR寄存器 进行扩展操作 ◼ 源码参见: ◼ pcr_extend.c ◼ 程序流程见右图: 创建上下文并 连接到本地 TCS 获取TPM对象 扩展TPM对象 的PCR值 输出扩展 的PCR值 (1)创建上下文并连接到本地TCS; Tspi_Context_Create(&hContext); Tspi_Context_Connect(hContext, 0); (2)获取TPM对象; Tspi_Context_GetTpmObject(hCont ext,&hTPM); (3)扩展TPM对象的PCR值,通过TCS 扩展到真正TPM的PCR值; Tspi_TPM_PcrExtend(hTPM, i, ulPcrDataLength, pbPcrData, pPcrEvent,&pulPcrValueLength,&pr gbPcrValue) (4) 输出扩展PCR值