您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于ARM平台的可信计算软件栈的实现及应用 正文
基于ARM平台的可信计算软件栈的实现及应用

基于ARM平台的可信计算软件栈的实现及应用

点击数:7682 次   录入时间:03-04 12:00:35   整理:http://www.55dianzi.com   嵌入式系统-技术

  if(result!=TSS_SUCCESS)

  {

  fprintf(stderr,"Tspi_Key_CreateKey: %s ", Trspi_Error_String(rc));

  goto out_close;

  }

  printf("create key success! ");

  创建密钥之前/tmp目录下的文件只有dir,创建成功后会打印信息,并生成密钥文件UserKeyBlob.cer,如图5所示:


图5 密钥创建

  文件加密

  加密操作主要使用函数Tspi_Data_Bind(),示例代码如下:

  TSS_RESULT rc=Tspi_Data_Bind(hEncdata,hKey, strlen(testCipher),(unsigned char*)testCipher);

  if(result !=TSS_SUCCESS)

  {

  fprintf(stderr,"Tspi_Data_Bind: %s ",Trspi_Error_String(rc));

  goto out_close;

  }

  交叉编译后生成命令encryptFile。如果要加密的文件为/tmp/dir/test,前面创建的密钥所在的目录为/tmp,则编译后执行命令时的格式为encryptFile -e /tmp/dir /tmp。

  加密之前,/tmp/dir目录下只有test一个文件,使用cat命令查看该文件的内容为:Hello,world!执行加密命令之后,使用cat命令再次查看该文件的内容,看到的是乱码,而不是原始内容,可见加密成功。加密后在test文件所在的目录下会生成一个FileKey.cer文件。如图6所示:



图6 文件加密

  文件解密

  解密操作使用函数Tspi_Data_Unbind(),示例代码如下:

  TSS_RESULT rc=Tspi_Data_Unbind(hEncdata,hKey, &unseaLEDDataLength, &unsealedData)

  if(rc!=TSS_SUCCESS)

  {

  fprintf(stderr,"Tspi_Data_Unbind: %s ",Trspi_Error_String(rc));

  goto out_close;

  }

  解密文件和加密文件使用的是同一个命令,但后缀参数不同,格式为encryptFile –d /tmp/dir /tmp。执行解密操作后,使用cat命令查看加密的文件test,则可以看到原始的内容,说明解密成功。此时,test文件所在的目录下加密时生成的FileKey.cer文件消失。如图7所示:




图7 文件解密

  除了上面的几个示例之外,还可以调用TSS的API编写各种应用程序对TPM进行操作。总之,只要给定了TPM芯片,掌握了TPM的基本知识和TSS的API,就可以写出可信计算的应用程序。

  结束语

  传统的可信计算一般是基于PC平台的,本文通过可信计算软件栈TSS在ARM平台上的实现,调用TSS的API编写应用程序与TPM进行交互,对于实现可信计算在嵌入式ARM平台上的应用提供了重要的桥梁和支持。



上一页  [1] [2] 


本文关键字:软件  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术