<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ò) 收藏

          交叉編譯OpenSSL

          本文所使用的OpenSSL具體版本為1.0.0,在交叉編譯之前需要進(jìn)行如下操作:

          (1)配置:在對OpenSSL1.0.0進(jìn)行配置時需要指定其安裝路徑,在后面配置TSS時需要調(diào)用OpenSSL安裝路徑里的庫文件,并且需要指定交叉編譯工具,具體命令如下:

          $/config--prefix=/usr/local/openssl os/compiler:arm-linux-gcc

          其中--prefix=/usr/local/openssl指定安裝的路徑,

          os/compiler:arm-linux-gcc指定編譯器arm-linux-gcc;

          (2)修改Makefile,里面對應(yīng)的部分需要修改為:

          CC=arm-linux-gcc

          EX_LIBS=-ldl

          AR=arm-linux-ar $(ARFLAGS) r

          RANLIB=arm-linux-ranlib

          交叉編譯TSS

          本文所使用的可信為trousers0.3.3.2,在交叉編譯之前需要進(jìn)行如下操作:

          (1)執(zhí)行bootstrap.sh腳本,具體命令如下:

          [root@happy trousers-0.3.3.2]#sh bootstrap.sh

          (2)對軟件包進(jìn)行配置,命令如下:

          [root@happy trousers-0.3.3.2]# /configure

          --host=arm-linux --with-openssl=/usr/local/openssl --prefix=/usr/tss

          其中--host=arm-linux指定目標(biāo)平臺為ARM,并使用交叉編譯工具;--with-openssl=/usr/local/openssl指定OpenSSL所在的位置,交叉編譯的時候需要用到其中的libcrypto庫文件;--prefix=/usr/tss指定安裝位置。

          包含TSS的文件系統(tǒng)制作

          文件系統(tǒng)在宿主機(jī)上的目錄為~/rootfs,將交叉編譯安裝好的TSS(在宿主機(jī)上的位置為/usr/tss)拷貝到~/rootfs/usr下,將TSS安裝后生成的庫文件拷貝到~/rootfs的lib目錄下。

          然后使用文件系統(tǒng)制作工具mkcramfs1.0,將目錄rootfs制作成鏡像文件,通過串口工具minicom下載到ARM開發(fā)板。

          如果TSS啟動成功,則會出現(xiàn)如下提示:TCSD trousers 0.3.3.2:TCSD up and running。

          注意事項

          在制作文件系統(tǒng)時,~/rootfs/etc中需要添加關(guān)于TSS的group、passwd文件,hosts里面應(yīng)該包含localhost。否則,制作成文件系統(tǒng)燒寫進(jìn)開發(fā)板之后,當(dāng)輸入#./usr/tss/sbin/tcsd-f啟動TSS時,會報錯。

          將不希望用戶修改的文件都放在只讀的cramfs分區(qū)下,修改初始化腳本liunxrc,將TSS所在的目錄掛載為yaffs格式。另外下文中將要用到的/tmp目錄也要掛載為yaffs格式,保證可讀可寫。

          應(yīng)用程序編寫

          在完成了TSS在的移植之后,可以使用TSS所提供的API編寫應(yīng)用程序與TPM進(jìn)行交互。下面主要介紹一下獲取屬主身份、創(chuàng)建密鑰、對文件進(jìn)行加密和解密。

          屬主身份獲取

          首次使用TPM時,需要先獲取屬主身份,主要用到函數(shù)Tspi_TPM_TakeOwnership(),示例代碼如下:

          TSS_RESULT rc=Tspi_TPM_TakeOwnership(a_hTpm, a_hSrk, NULL_HKEY);

          if(rc!=TSS_SUCCESS)

          {

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

          goto out_close;

          }

          printf("result is %d ",result);

          return result;

          如果獲取成功則返回值為0,如圖4所示:

          圖4 屬主身份獲取

          密鑰創(chuàng)建

          對文件進(jìn)行加密時需要使用密鑰,這可以使用函數(shù)Tspi_Key_CreateKey()來創(chuàng)建,示例代碼如下:

          TSS_RESULT result = Tspi_Key_CreateKey(hKey,hSrk,NULL_HOBJECT);

          if(result!=TSS_SUCCESS)

          {

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

          goto out_close;

          }

          printf("create key success! ");



          評論


          相關(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); })();