Custom Meta Tags
2503 Hero Banner

AMD製品に関連する技術ブログ

Long Copy

Kria SOMでTPM2.0を動かしてみた!

AMDのKria SOMボードをつかっていろいろなことにチャンレンジするシリーズ、今回はTPM2.0を動かしてみました! デモの手順に入る前に、まずはTPM2.0について基本的な情報の共有からスタートします。

Long Copy_1

疑問:TPM 2.0 って何?

TPM (Trusted Platform Module)はデバイス上で多数のセキュリティ機能を提供するセキュリティチップです。 暗号化エンジン、暗号鍵生成器、乱数生成器、データを保存するための不揮発性メモリなどを備えており、パスワードや暗号鍵、セキュリティ証明書などを生成することができます。

セキュリティ対策として、HDD上のデータを暗号化する場合、暗号鍵をHDD上ではなくTPM上に保存することによって、 セキュリティ性能を上げられます。これは、HDD内のデータを不正に見られた際、暗号鍵の保存を別にすることで復号されるリスクを低減させることができること、TPMがシステム解析の難しさ(耐ダンパー性)を持つことにより、外部からの暗号鍵の取得や不正アクセスに対して、より強いセキュリティにすることができるためです。

TPM 2.0の前のバージョンにTPM 1.2がありますが、鍵を管理するための階層が1.2 だと1階層になっていたのに対し、2.0では3階層になっており、楕円曲線暗号が使用できるようになっているなど、2.0は1.2と比較して、より強いセキュリティ性能を発揮するようになっています。

近年では、Windows 11のシステム要件に含まれていることもあり、TPM 2.0は以前にも増して注目を集めています。

ハードウェア要件

  • KR260 Robotics Starter KitまたはKV260 Vision AI Starter Kit
  • KR260用電源
  • CAT5eイーサネットケーブル
  • USB-A to micro-B ケーブル
  • 16GBマイクロSDカード

図1. KR260にペリフェラルを接続した図

 

KriaでTPM 2.0を動かしてみよう!

ここでは、IBM TSSからKria K26 SOMのTPM 2.0を動作させ、ブラウザでTPMの状態などを表示させるデモを行います。

KR260もしくはKV260で動作するUbuntuのSDカードを持っていることを前提とします。

IBM TSSのセットアップに必要なパッケージをインストールします。

$ sudo apt-get install -y libssl-dev gawk

IBM TSSをダウンロードしてビルドします。

$ mkdir -p sandbox/ibmtss
$ cd sandbox/ibmtss
$ wget https://sourceforge.net/projects/ibmtpm20tss/files/ibmtss1.6.0.tar.gz
$ tar xvfz ibmtss1.6.0.tar.gz
$ cd utils
$ sudo make -f makefiletpmc

TPMチップは/dev/tpm0にて認識されるので、/dev/tpm0 を使用可能な状態にしておきます。

$ export TPM_INTERFACE_TYPE=dev
$ sudo chmod a+rwx /dev/tpm0

TPM 2.0のプロパティを表示させます。

$ ./getcapability -cap 6

 

図2. TPM 2.0のプロパティの表示

 

PCR (Platform Configuration Register) はプログラムコードやデータなど、ある一時点のメモリの状態を保存するレジスタで、次の更新式で更新されます(|| は文字列の結合)。 PCR[N] = ハッシュ関数( PCR[N] || 入力文字列)

更なる動作確認としてPCR[10]の更新を行います。 (-halg で sha1, sha256, sha384 のいずれかのハッシュ関数を指定可能、デフォルトはsha256)

$ ./pcrextend -ha 10 -ic ddddd
$ ./pcrread -ha 10

 

図3. PCR[10]の更新

 

デモが動作するよう、ライブラリを/usr/libにインストールします。

$ sudo cp libtss.so /usr/lib/
$ sudo ln -s /usr/lib/libtss.so /usr/lib/libtss.so.0
$ sudo ln -s /usr/lib/libtss.so /usr/lib/libtss.so.0.1

必要なライブラリをインストールします。

$ sudo apt-get update
$ sudo apt-get install apache2 -y
$ sudo apt-get install php libapache2-mod-php -y

デモ環境のビルドを行います。

$ cd ../demo
$ sudo mkdir /var/www/html/tpm2
$ sudo make -f makefile_dev

ホスト名 (IPアドレス) を確認します。 一番左にホスト名またはIPアドレスが表示される

$ hostname -I

次のURLをWebブラウザに貼り付けて移動します。 (は確認したホスト名またはIPアドレス) http:///tpm2

結果が表示されます。

 

図4. Webブラウザの表示結果1

 

図5. Webブラウザの表示結2

 

感想

今回はTPM2.0の動作確認を行いました。動作させる方法が思ったよりも単純だったので、詰まることなく進められました。セキュリティを意識した場合、TPM2.0は、これからも広がっていくと考えられます。今回は行いませんでしたが、機会があれば、実際にアタックをかけてみて、性能を検証してみたいと思います。 それでは、また次回お会いしましょう!See you next time!

参考にしたWebページ

  • Windows 11で必須になった「TPM 2.0」って何?TPMの役割や確認方法を紹介https://pc.watch.impress.co.jp/docs/topic/- ture/1334277.html
  • TPM2.0とは?Windows11で必須となった理由と搭載の確認・有効化の方法https://persol-tech-s.co.jp/hatalabo/it_engineer/- .html
  • LinuxでTPM2.0を使うhttps://qiita.com/mune10/items/cf45a296193bb78f5c5b
  • IBM TSS Githubページhttps://github.com/kgoldman/ibmtss

 

 

2503 Grid Box Light - Blog

ブログ

AMDによる設計およびデバッグ手法のブログ、およびアヴネット社員によるAMD製品を用いた開発チャレンジのブログです。

2503 Grid Box Light - Kria

Kria

Kria SOMはアダプティブSoCデバイスを搭載しており、スマートカメラやエンベデッドビジョンなどに最適です。