20175318トラステッドコンピューティングの基本実験3のトラステッドデータバインディングプログラムの設計

1.実験の目的:

  • データとハードウェアをバインドする方法に精通していること。
  • データバインディングに対するキー入力の影響を理解します。
  • ハードウェア関連のプログラミングプロセスと実装手順を習得します。

2.実験的な内容、手順、結論

1.実験的な内容

  • データバインディング構造、キータイプ、キー長、キーフィルタイプなどに従ってデータとハードウェアバインディングプログラムを設計し、TPMに基づいてデバッグする

2.実験手順

1.関連モジュールを起動します
(1)TPMを起動します

sudo su
modprobe tpmd_dev
tpmd -f -d  //-d 进入debug 模式  -f 使应用在前台运行

(2)tcsdを起動する

sudo su
tcsd -e -f 

(3)所有者とSRKパスワードを設定する

tpm_takeownership -u 

(4)コードの

記述コードの記述の流れは以下のとおりです。

コンテキストオブジェクトの
作成... TPMオブジェクトの作成...
SRKキーのロード...
SRKキーオブジェクトの取得... SRKポリシー認証の設定...バインドキーの作成...
TPMキーの生成前、フィルタイプの設定... …
PCRにバインドされていないキーを生成します。
バインドキーをUUIDにロードします...
データバインドを実行します...

コードによって呼び出されるインターフェイスの順序は次のとおりです

  • Tspi_Context_Create(&hContext):コンテキストオブジェクトを作成します
  • Tspi_Context_Connect(hContext、NULL):接続コンテキスト
  • Tspi_Context_GetTpmObject(hContext、&hTPM):暗黙的に作成されたTPMオブジェクトのハンドルを取得します
  • Tspi_GetPolicyObject(hTPM、TSS_POLICY_USAGE、およびhownerpolicy):TSPによって暗黙的に作成されたポリシーオブジェクトを取得します
  • Tspi_Policy_SetSecret(hownerpolicy、TSS_SECRET_MODE_POPUP、0、NULL):シークレットを設定します
  • Tspi_Context_LoadKeyByUUID(hContext、TSS_PS_TYPE_SYSTEM、SRK_UUID、およびhSRK):UUIDに従ってSRKキーをロードします
  • Tspi_GetPolicyObject(hSRK、TSS_POLICY_USAGE、およびhSRKPolicy):SRKポリシーオブジェクトを取得します
  • Tspi_Policy_SetSecret(hSRKPolicy、TSS_SECRET_MODE_POPUP、0、NULL):SRKポリシー認証を設定します
  • Tspi_Context_CreateObject(hContext、TSS_OBJECT_TYPE_RSAKEY、initFlags、&hkey):キーフラグinitFlagsを設定してバインディングキーを作成し、hkeyは暗号化されたデータブロックを保存します
  • Tspi_SetAttribUint32(hkey、TSS_TSPATTRIB_KEY_INFO、TSS_TSPATTRIB_KEYINFO_ENCSCHEME、T SS_ES_RSAESPKCSV15):TPMがキーを生成する前にパディングタイプを設定します
  • Tspi_Key_CreateKey(hkey、hSRK、0):PCRにバインドされていないキーを生成します
  • Tspi_Context_RegisterKey(hContext、hkey、TSS_PS_TYPE_USER、bindkeyUUID、TSS_PS_TYPE_SY STEM、SRK_UUID):バインディングキーをUUIDにロードします
  • Tspi_Context_CreateObject(hContext、TSS_OBJECT_TYPE_ENCDATA、TSS_ENCDATA_BIND、およびhEncD ata):暗号化されたデータオブジェクトを作成します
  • Tspi_GetAttribUint32(hkey、TSS_TSPATTRIB_KEY_INFO、TSS_TSPATTRIB_KEYINFO_SIZE、およびkeyssi ze):この手順を実行した後、暗号化されるデータの長さをキーサイズ-16のサイズと比較して、暗号化されたデータが大きくなりすぎないようにする必要があります
  • Tspi_Data_Bind(hEncData、hkey、strlen(in)、in):バインドデータ
  • Tspi_GetAttribData(hEncData、TSS_TSPATTRIB_ENCDATA_BLOB、TSS_TSPATTRIB_ENCDATABLOB_B LOB、&blobLen、&blob):この手順の後、暗号化されたblobが大きすぎる場合は、blobLenと* blobのサイズを比較する必要があります
  • Tspi_Context_Close(hContext):コンテキストを閉じます

(5)コードをコンパイルして実行する

sudo su
gcc -o 20175318exp3 20175318exp3.c -ltspi
./20175318exp3


ダウンロード:20175318exp3.c

3.実験的結論
sb

おすすめ

転載: www.cnblogs.com/L1079991001/p/12683681.html
おすすめ