<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于嵌入式ARM平臺的可信計算軟件棧的設(shè)計與實現(xiàn)

          基于嵌入式ARM平臺的可信計算軟件棧的設(shè)計與實現(xiàn)

          作者: 時間:2013-10-15 來源:網(wǎng)絡(luò) 收藏

          創(chuàng)建密鑰之前/tmp目錄下的文件只有dir,創(chuàng)建成功后會打印信息,并生成密鑰文件UserKeyBlob.cer,如圖5所示:

          圖5 密鑰創(chuàng)建

          文件加密

          加密操作主要使用函數(shù)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,前面創(chuàng)建的密鑰所在的目錄為/tmp,則編譯后執(zhí)行命令時的格式為encryptFile -e /tmp/dir /tmp。

          加密之前,/tmp/dir目錄下只有test一個文件,使用cat命令查看該文件的內(nèi)容為:Hello,world!執(zhí)行加密命令之后,使用cat命令再次查看該文件的內(nèi)容,看到的是亂碼,而不是原始內(nèi)容,可見加密成功。加密后在test文件所在的目錄下會生成一個FileKey.cer文件。如圖6所示:

          圖6 文件加密

          文件解密

          解密操作使用函數(shù)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;

          }

          解密文件和加密文件使用的是同一個命令,但后綴參數(shù)不同,格式為encryptFile –d /tmp/dir /tmp。執(zhí)行解密操作后,使用cat命令查看加密的文件test,則可以看到原始的內(nèi)容,說明解密成功。此時,test文件所在的目錄下加密時生成的FileKey.cer文件消失。如圖7所示:

          圖7 文件解密

          除了上面的幾個示例之外,還可以調(diào)用TSS的API編寫各種應(yīng)用程序?qū)PM進行操作??傊灰o定了TPM芯片,掌握了TPM的基本知識和TSS的API,就可以寫出可信計算的應(yīng)用程序。

          結(jié)束語

          傳統(tǒng)的可信計算一般是基于PC平臺的,本文通過可信TSS在上的實現(xiàn),調(diào)用TSS的API編寫應(yīng)用程序與TPM進行交互,對于實現(xiàn)可信計算在嵌入式上的應(yīng)用提供了重要的橋梁和支持。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();