Homing So

Homing So

🎉 哈喽啊~各位
github

信頼できるソフトウェア設計実験環境の構築

非常に困難でした。以前、yum を使って直接 trousers をインストールしようとしたところ、TPM_E_NOAUTH の問題が発生しましたが、現在 trousers-0.3.15 をコンパイルしたところ、正常に実験が行えるようになりました。どのパッケージが問題だったのかはまだ不明なので、システムが完全に新しいことを確認する必要があります。

基本環境の準備#

実験環境は CentOS7 に基づいており、システムが完全に新しいことを確認してください。そうでない場合、不明なパッケージの依存関係や競合の問題が発生する可能性があります。

  • カーネルの更新

    yum update -y
    
  • 基本的な開発グループ関連パッケージのインストール

    yum groupinstall "Development Tools"
    
  • 依存するソフトウェアパッケージのインストール

    yum install -y automake autoconf pkgconfig libtool gtk2-devel openssl-devel glibc-devel gmp-devel cmake psmisc
    
  • まず tc.tgz をアップロードし、解凍して tc ディレクトリに入ります。

    [root@localhost ~]# ls
    anaconda-ks.cfg  tc.tgz
    [root@localhost ~]# tar -xzf tc.tgz 
    [root@localhost ~]# ls
    anaconda-ks.cfg  tc  tc.tgz
    [root@localhost ~]# cd tc
    [root@localhost tc]# ls
    tpm-emulator  trousers-0.3.15  trusted-computing-projectv0.3
    

tpm-emulator のコンパイル#

  • tpm-emulator のディレクトリ構造は以下の通りです。

    [root@localhost tc]# cd tpm-emulator/
    [root@localhost tpm-emulator]# ls
    AUTHORS  build.bat  build.sh  ChangeLog  CMakeLists.txt  config.h.in  crypto  mtm  README  tddl  tpm  tpmd  tpmd_dev
    
  • build を新規作成し、ディレクトリに入って CMake で Makefile を生成します。

    [root@localhost tpm-emulator]# cd build
    [root@localhost build]# ls
    [root@localhost build]# cmake ..
    -- Cコンパイラの識別はGNU 4.8.5です
    -- 動作するCコンパイラのチェック: /usr/bin/cc
    -- 動作するCコンパイラのチェック: /usr/bin/cc -- 動作します
    -- CコンパイラABI情報の検出
    -- CコンパイラABI情報の検出 - 完了
    -- 設定が完了しました
    -- 生成が完了しました
    -- ビルドファイルは次の場所に書き込まれました: /root/tc/tpm-emulator/build
    
  • tpm-emulator のコンパイルとインストール

    [root@localhost build]# make -j
    ここでは出力を省略します。。。
    
    [root@localhost build]# make install
    [ 58%] ターゲットtpmをビルドしました
    [ 80%] ターゲットmtmをビルドしました
    [ 90%] ターゲットtpm_cryptoをビルドしました
    [ 92%] ターゲットtddlをビルドしました
    [ 94%] ターゲットtddl_staticをビルドしました
    [ 96%] ターゲットtest_tddlをビルドしました
    [ 98%] ターゲットtpmd_devをビルドしました
    [100%] ターゲットtpmdをビルドしました
    プロジェクトをインストールしています...
    -- インストール設定: ""
    -- インストール中: /usr/local/lib/libtddl.so.1.2.0.7
    -- インストール中: /usr/local/lib/libtddl.so.1.2
    -- インストール中: /usr/local/lib/libtddl.so
    -- インストール中: /usr/local/lib/libtddl.a
    -- インストール中: /usr/local/include/tddl.h
    プライベートキーを読み取れません
    -- インストール中: /usr/local/bin/tpmd
    "/usr/local/bin/tpmd"からランタイムパスを削除しました
    
    [root@localhost build]# modprobe tpmd_dev
    
  • tpm-emulator を起動します。

    [root@localhost build]# tpmd -f
    tpmd.c:390: 情報: TPMエミュレータデーモンを起動中 (1.2.0.7-475)
    tpmd.c:93: 情報: オプションを解析中
    tpmd.c:164: 情報: スタートアップモードが指定されていません; 'clear'を仮定します
    tpmd.c:198: 情報: シグナルハンドラをインストール中
    tpmd.c:295: 情報: メインループを開始中
    tpmd.c:265: 情報: ソケット/var/run/tpm/tpmd_socket:0を初期化中
    tpm_emulator_extern.c:101: 情報: _tpm_extern_init()
    tpm_data.c:120: 情報: TPMデータをデフォルト値に初期化中
    tpm_startup.c:29: 情報: TPM_Init()
    tpm_testing.c:243: 情報: TPM_SelfTestFull()
    tpm_testing.c:261: 情報: セルフテストに成功しました
    tpm_startup.c:43: 情報: TPM_Startup(1)
    

trousers のコンパイル#

  • 新しいターミナルを開き、trousers ディレクトリに入り、bootstrapを使用してconfigureを生成します。

    [root@localhost trousers-0.3.15]# sh bootstrap.sh 
    + aclocal
    + libtoolize --force -c
    libtoolize: 補助ファイルを`.`に配置しています。
    libtoolize: ファイル`./ltmain.sh`をコピーしています。
    libtoolize: 正しいlibtoolマクロをツリー内に保持するために、`AC_CONFIG_MACRO_DIR([m4])`をconfigure.acに追加し、libtoolizeを再実行することを検討してください。
    libtoolize: Makefile.amのACLOCAL_AMFLAGSに`-I m4`を追加することを検討してください。
    + automake --add-missing -c --foreign
    + autoconf
    
  • configureを使用して Makefile を生成します。

    [root@localhost trousers-0.3.15]# ./configure
    ここでは出力を省略します。。。
    
  • trousers のコンパイルとインストール

    [root@localhost trousers-0.3.15]# make -j
    ここでは出力を省略します。。。
    
    [root@localhost trousers-0.3.15]# make install
    ここでは出力を省略します。。。
    
  • インストールが成功したか確認し、/usr/local/var/lib/tpm/ディレクトリが存在するかチェックします。

    [root@localhost trousers-0.3.15]# ls /usr/local/var/lib/tpm/
    
  • trousers を起動します。

    [root@localhost trousers-0.3.15]# tcsd -e -f
    TCSD TDDL ioctl: (25) デバイスに対して不適切なioctl
    TCSD TDDL 読み書きデバイスサポートにフォールバックします。
    TCSD trousers 0.3.15: TCSDが起動しました。
    

    同時に、前のターミナルで tpm-emulator は以下のような出力があるはずです。

    tpm_startup.c:43: 情報: TPM_Startup(1)
    tpm_capability.c:697: 情報: TPM_GetCapability()
    tpm_cmd_handler.c:4084: 情報: TPMコマンドが成功しました
    tpm_capability.c:697: 情報: TPM_GetCapability()
    tpm_cmd_handler.c:4084: 情報: TPMコマンドが成功しました
    tpm_capability.c:697: 情報: TPM_GetCapability()
    tpm_cmd_handler.c:4084: 情報: TPMコマンドが成功しました
    tpm_capability.c:697: 情報: TPM_GetCapability()
    tpm_cmd_handler.c:4084: 情報: TPMコマンドが成功しました
    tpm_capability.c:697: 情報: TPM_GetCapability()
    tpm_cmd_handler.c:4084: 情報: TPMコマンドが成功しました
    tpm_capability.c:697: 情報: TPM_GetCapability()
    tpm_cmd_handler.c:4084: 情報: TPMコマンドが成功しました
    tpm_capability.c:697: 情報: TPM_GetCapability()
    tpm_cmd_handler.c:4084: 情報: TPMコマンドが成功しました
    

インストール環境の確認#

  • 新しいターミナルを開き、trusted-computing-projectv0.3 ディレクトリに入り、make clean で以前のビルドをクリアし、その後コンパイルします。警告が出るのは正常で、エラーではありません。

    [root@localhost trusted-computing-projectv0.3]# make clean
    ここでは出力を省略します。。。
    
    [root@localhost trusted-computing-projectv0.3]# make
    ここでは出力を省略します。。。
    
  • init に移動し、take ownership と mig_key を作成します。

    [root@localhost trusted-computing-projectv0.3]# cd init/
    [root@localhost init]# ls
    create_mig_key  create_mig_key.c  Makefile  Tspi_TPM_TakeOwnership01  Tspi_TPM_TakeOwnership01.c
    [root@localhost init]# ./Tspi_TPM_TakeOwnership01 -v 1.2
    
    <<<test_start>>>
    Tspi_TPM_TakeOwnership01のテスト
    TESTSUITE_OWNER_SECRET:(null)
    TESTSUITE_SRK_SECRET:(null)
            1 PASS  :  Tspi_TPM_TakeOwnership01(0) TSS_SUCCESSを返しました
    Tspi_TPM_TakeOwnership01のクリーンアップ
    <<<end_test>>>
    [root@localhost init]# ./create_mig_key -v 1.2
    移行可能なキーの移行秘密を入力してください
    PINを入力してください:
    確認中 - PINを確認しています:
    成功
    
  • SealUnseal ディレクトリに移動し、seal と unseal をテストします。unseal できれば、環境に問題がないことを示します。

    [root@localhost init]# cd ../SealUnseal/
    [root@localhost SealUnseal]# ls
    extend  extend.c  hex-out.h  Makefile  seal  seal.c  sealedData  seal_file  seal_file.c  test  test.c  unseal  unseal.c
    [root@localhost SealUnseal]# ./seal -v 1.2
    1
    2
    3
    4
    5
    6
    7
    EncDataBlob:
    00000000|  01 01 00 00 00 00 00 2c  00 02 00 80 c6 58 2c 81  .......,.....X,.
    00000010|  00 7f 85 4e d3 87 3c 59  63 7a 01 8a 44 19 63 97  ...N..<Ycz..D.c.
    00000020|  c6 58 2c 81 00 7f 85 4e  d3 87 3c 59 63 7a 01 8a  .X,....N..<Ycz..
    00000030|  44 19 63 97 00 00 01 00  5d ee a6 34 cd e3 b2 e8  D.c.....]..4....
    00000040|  a1 be ed 5f a6 20 67 86  17 ee fb 7c 40 2e 63 9a  ..._. g....|@.c.
    00000050|  76 12 6b d3 2e e6 7c bb  2f 77 3d af 07 c8 19 36  v.k...|./w=....6
    00000060|  d5 ef c6 74 5d 8e f0 8a  98 f2 5e 8c 22 f8 70 02  ...t].....^.".p.
    00000070|  4c ca a3 4a 54 cd bf 39  1a 92 a9 2c c7 2b 96 28  L..JT..9...,.+.(
    00000080|  de 6e 7a f9 b3 36 62 e0  f5 c3 42 4b 74 0c 6d 6d  .nz..6b...BKt.mm
    00000090|  4f 65 33 1f 99 56 8e 5b  76 97 56 6e 68 17 f9 c1  Oe3..V.[v.Vnh...
    000000a0|  0b 6a 81 7e dc 10 58 ed  8a 9a 03 5e e7 28 dc 87  .j.~..X....^.(..
    000000b0|  c7 ba d3 95 d1 26 2c fe  8b 71 73 5b 27 23 5c b7  .....&,..qs['#\.
    000000c0|  8b c9 1e f1 b8 52 ac 2b  b9 a3 08 2c f8 c5 e4 95  .....R.+...,....
    000000d0|  ba f2 20 ee 49 ee a7 6a  34 8d a1 b9 a9 e7 25 d8  .. .I..j4.....%.
    000000e0|  28 14 58 d8 ab 47 4e dd  0a 8a 25 a4 b4 b7 69 f8  (.X..GN...%...i.
    000000f0|  85 70 4c 7d af 10 12 56  42 2a e3 1d be 05 8f ff  .pL}...VB*......
    00000100|  41 7c 2b 53 0c d6 f5 0f  61 6a c8 65 33 5b 02 3e  A|+S....aj.e3[.>
    00000110|  d4 b0 30 7d 03 b0 b4 0a  09 12 18 ad 10 73 bd 83  ..0}.........s..
    00000120|  9f 2d 5e 46 57 37 1c 00  29 16 4b 44 68 e4 f2 95  .-^FW7..).KDh...
    00000130|  9b 53 fe 0b 32 f1 48 78                           .S..2.Hx
    
    成功
    [root@localhost SealUnseal]# ./unseal -v 1.2
    シールされたデータ:
    00000000|  01 01 00 00 00 00 00 2c  00 02 00 80 c6 58 2c 81  .......,.....X,.
    00000010|  00 7f 85 4e d3 87 3c 59  63 7a 01 8a 44 19 63 97  ...N..<Ycz..D.c.
    00000020|  c6 58 2c 81 00 7f 85 4e  d3 87 3c 59 63 7a 01 8a  .X,....N..<Ycz..
    00000030|  44 19 63 97 00 00 01 00  5d ee a6 34 cd e3 b2 e8  D.c.....]..4....
    00000040|  a1 be ed 5f a6 20 67 86  17 ee fb 7c 40 2e 63 9a  ..._. g....|@.c.
    00000050|  76 12 6b d3 2e e6 7c bb  2f 77 3d af 07 c8 19 36  v.k...|./w=....6
    00000060|  d5 ef c6 74 5d 8e f0 8a  98 f2 5e 8c 22 f8 70 02  ...t].....^.".p.
    00000070|  4c ca a3 4a 54 cd bf 39  1a 92 a9 2c c7 2b 96 28  L..JT..9...,.+.(
    00000080|  de 6e 7a f9 b3 36 62 e0  f5 c3 42 4b 74 0c 6d 6d  .nz..6b...BKt.mm
    00000090|  4f 65 33 1f 99 56 8e 5b  76 97 56 6e 68 17 f9 c1  Oe3..V.[v.Vnh...
    000000a0|  0b 6a 81 7e dc 10 58 ed  8a 9a 03 5e e7 28 dc 87  .j.~..X....^.(..
    000000b0|  c7 ba d3 95 d1 26 2c fe  8b 71 73 5b 27 23 5c b7  .....&,..qs['#\.
    000000c0|  8b c9 1e f1 b8 52 ac 2b  b9 a3 08 2c f8 c5 e4 95  .....R.+...,....
    000000d0|  ba f2 20 ee 49 ee a7 6a  34 8d a1 b9 a9 e7 25 d8  .. .I..j4.....%.
    000000e0|  28 14 58 d8 ab 47 4e dd  0a 8a 25 a4 b4 b7 69 f8  (.X..GN...%...i.
    000000f0|  85 70 4c 7d af 10 12 56  42 2a e3 1d be 05 8f ff  .pL}...VB*......
    00000100|  41 7c 2b 53 0c d6 f5 0f  61 6a c8 65 33 5b 02 3e  A|+S....aj.e3[.>
    00000110|  d4 b0 30 7d 03 b0 b4 0a  09 12 18 ad 10 73 bd 83  ..0}.........s..
    00000120|  9f 2d 5e 46 57 37 1c 00  29 16 4b 44 68 e4 f2 95  .-^FW7..).KDh...
    00000130|  9b 53 fe 0b 32 f1 48 78                           .S..2.Hx
    アンシールされたデータ:
    00000000|  30 31 32 33 34 35 36 37  38 39 41 42 43 44 45 46  0123456789ABCDEF
    00000010|  30 31 32 33 34 35 36 37  38 39 41 42 43 44 45 46  0123456789ABCDEF
    
    成功
    

その他#

tpmd と tcsd に関する一連の問題は、一般的に tpmd がきれいにクリアされていないことが原因です。以下の手順で解決できることが多いです。

[root@localhost build]# tpmd deactivated
[root@localhost build]# killall tpmd
[root@localhost build]# tpmd clear
[root@localhost build]# tpmd deactivated

私のブログは近日中に Tencent Cloud + Community に同期される予定です。皆さんもぜひ参加してください:https://cloud.tencent.com/developer/support-plan?invite_code=owdvmxq0iwh9

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。