最新のNI Linux Real-Timeアップデートには、Trusted Platform Module (TPM) のサポートが含まれています。このホワイトペーパーでは、TPMの定義、TPMの使用例、およびTPMの使用方法について説明します。
Trusted Platform Module(TPM)は、ルート オブ トラストとして使用されるハードウェア コンポーネントで、暗号キーを安全に生成、保存、および使用するように設計されています。TPMは、他人に取得させたくない情報であるシークレットを保存する安全な場所です。TPMには、暗号キーなどの機密情報を保存するいくつかの利点があります。
これらの機能により、TPMは、機密データを扱うテストシステム、またはデータを保護する必要がある機密環境で動作するテストシステムに有益な追加機能です。
TPMは通常、ディスクの暗号化、デバイスのIDと認証、Firmwareコンポーネントの認証(セキュア ブート)、アプリケーション シークレットの保護に使用されます。テストおよび測定アプリケーションでは、システムが以下の例のいずれかにTPMを使用する可能性があります。
TPM 1.2は2003年にリリースされ、RSAおよびSHA-1暗号化をサポートしています。TPM 2.0は、TPM規格の2014年の主要な再設計であり、ECC、SHA-256などの最新のアルゴリズムが含まれています。TPM 2.0は最新の標準規格で、Windows 11で必要であり、一部のNIハードウェアで使用されています。
NI Linux Real-TimeでのTPMへのアクセスと使用は、デバイスへのSSHセッションを介して行われ、Linux、NI Linux Real-Time、およびセキュリティの概念に関する知識が必要です。このドキュメントは、開発者が安全なアプリケーション用にNI Linux Real-Timeを評価するための出発点として提供されています。詳細については、最新のNI Linux Real-Timeドキュメント、およびここで説明する各ライブラリのパブリックドキュメントを参照してください。
これらの手順は、TPMを搭載したNI Linux Real-Timeデバイスにのみ適用されます。TPMは、一部のPXIコントローラおよびCompactRIOコントローラで使用できます。TPMを搭載したPXIコントローラの一覧は、「Trusted Platform Module (TPM) Support for NI Controllers」をご参照ください。TPMはほとんどのCompactRIOシステムには含まれていませんが、NI cRIO-9048と一緒に注文できます。このドキュメントでは、TPMオプション付きのNI cRIO-9048を使用しました。
NILRTリリース11.5 (2026Q2) では、ユーザとアプリケーションによるTPM対話のサポートが強化されました。このドキュメントは、システムが少なくともこのバージョンにアップグレードされていることを前提としています。利用可能な最新バージョンにアップグレードすることが、安全なシステムのベストプラクティスです。
NIハードウェアマネージャを使用してターゲットに接続し、Update FirmwareおよびManage Softwareサイドバーダイアログを使用してOSコンポーネントをアップグレードします。
SSHクライアントを使用して、ターゲットデバイスへのシェル接続を開きます。コマンドウィンドウで、SSHセッションを開きます。
NI MAXまたはNI ハードウェアマネージャで構成されたユーザ名とパスワードを入力します。デフォルトユーザ名はadmin、デフォルトパスワードは空白です。
デバイスにTPMがある場合、起動時にtpm0とtpmrm0の1つまたは2つのファイルが作成されます。デバイスがある場合は、次のコマンドを使用します。
以下の情報を再調整します。
デバイスにTPMがない場合、応答は以下のようになります。
NI Linux Real-Timeの2026 Q1リリース以降では、TPMをサポートするすべてのライブラリをインストールするメタパッケージインストーラが含まれています。
このコマンドは、いくつかのTPMパッケージをインストールします。使用できるツールには以下が含まれます。
tpm2-toolsには、TPMと対話するための100以上の関数が含まれています。便利なコマンドは「tpm2_pcrread」です。
これは、TPMレジスタの内容をリストで返します。
これらのレジスタは、プラットフォーム構成レジスタ (PCR) と呼ばれます。最初の 8 つの PCR(0 ~ 7)は BIOS によって書き込まれます。これらのハッシュ値は直接書き込めません。値はシステム測定値が変更された場合にのみ更新されます。
PCR 7には、セキュアブートが有効かどうか、使用されているベンダーキーなど、セキュアブート状態が含まれます。通常、このレジスタはロック解除の決定に使用されます。格納された値が現在のシステム測定値と一致すれば、システムは同一で信頼できます。
PCR 8および9は、オペレーティングシステムブートローダ(GRUB)によって制御されます。PCR 8には、ブート構成のブートローダによって行われた測定が含まれます。これには、OSブートローダコンポーネント、カーネルイメージ、およびブートローダの後、OSランタイム全体より前に実行されるOS固有の測定が含まれます。
PCR 9には、カーネルコマンドラインパラメータ、ランタイム動作に影響するOS構成値、起動中に測定されたポリシー関連のOS設定などのOS構成データが含まれています。PCR 8とPCR 9は、ロードされたOSとそのOSの構成を測定します。
残りのレジスタであるPCR 10-23は、OSおよびアプリケーションで制御されるPCRで、ソフトウェア、ランタイム状態、起動後に発生するダイナミックイベントの測定に使用されます。TPMを使用すると、ソフトウェアアプリケーションでPCRの使用方法を決定できます。通常、TPMで封印されたキーを使用して、データストレージまたは転送を暗号化したり、リモート認証キーを格納したり、ランタイム改ざんを検出したり、その他の安全なトランザクションを行います。
ブート中にすべての測定が行われたログを確認するには、tpm2_eventlog を使用して securityfs ファイルシステムにある tpm0 デバイスの binary_BIOS_measurements ファイルの内容を読み取ります。
このコマンドはログファイルを解析して、TPMが起動中に実行するよう指示されたPCR測定を表示します。このログを使用して、システム状態を変更する可能性のあるイベントを総合的に把握できます。
TPM PCRにアクセスできるようになると、TPMの読み取りと書き込みをプログラム的に実行し、TPM機能を使用できます。TPM関数の詳細な使用法についてはこのホワイトペーパーでは説明しませんが、実行できる操作の例をいくつか示します。
暗号設定
Cryptsetupは、保存データのディスク暗号化を提供します。cryptsetupを使用すると、暗号化ボリュームの作成、マウントできるように暗号化ボリュームのロック解除、暗号化ボリュームのロック、LUKSキースロットの管理、TPM密閉キーの統合を行うことができます。Cryptsetupはディスクの暗号化方法を定義しますが、clevisはキーの提供とアクセスの方法を定義します。
簡単な例として、cryptsetupを使用して、以下の手順に従ってディスク上のファイル内のディスクパーティションを暗号化します。
1.ディスクイメージを格納するバイナリファイルを作成します。
2.ディスクイメージファイル内にLUKSで暗号化されたパーティションを作成します。
3.指定したパスフレーズを使用して暗号化されたパーティションを開き、パーティションの復号化されたビューを表す仮想ブロックデバイスを/dev/mapperの下に作成します。
4.マッピングされたブロックデバイスにファイルシステムを作成します。
5.暗号化されたパーティションをマウントします。
暗号化されたパーティションをマウントすると、他のファイルシステムと同様に使用できます。
同様の方法で、選択したリムーバブルストレージドライブを暗号化できます。これを行うには、手順2のluksFormatコマンドをオペレーティングシステムのドライブのデバイスパスに接続します。
追加の暗号化オプションまたはcryptsetupを使用した構成については、 Cryptsetupドキュメント を参照してください。LinuxRTオペレーティングシステムパーティションの暗号化は、現時点ではサポートされていないことに注意してください。
クレビス
Clevisを使用すると、Linux Unified Key Setup (LUKS) ボリューム復号化キースロットをTPM PCR状態にバインドできます。次のコマンドは、PCR 7、8、9のTPMの現在の測定値にバインドされたLUKSパーティションの新しいキースロットを/dev/sdxに作成します。
この場合、Secure Boot と OS Firmware が変更されていない場合に限り、LUKS 復号化キーは後続のブートで読み取ることができます。
clevisに渡されるポリシー文字列は、復号化キーを解放するために必要な条件を決定します。
カーネルが変更されるとロックが解除されますが、Firmwareは同じである必要があります。これにより、OSの更新が可能になります。
OSが変更されておらず、PCR 11に格納されたアプリケーション制御の測定値も変更されていない場合にのみロック解除します。
LUKSボリュームに複数のキースロットを作成して、複数のロック解除方法を提供できます。TPM PCRが一致すると、1つのスロットで自動ロック解除が許可される場合があります。別のスロットでは、TPM PCRに格納された値と一致する場合、パスフレーズを使用してボリュームのロックを解除できます。また、オフラインで保存されたリカバリキーをに入力できる場合もあります。
ベストプラクティスメモ:TPM状態を使用して暗号化されたデバイスのロックを解除する場合でも、データをロック解除するためのバックアップ方法として、cryptsetupで構成した元のLUKS復号化パス位相を保持することを推奨します。
LUKSデバイスのロックを解除するデバイスキーを表示するには、clevis luksリストを使用します。
clevisコマンドの完全なリストを表示するには、help関数 (-h) を呼び出します。
イベントログは、ブートシーケンス中に発生する現象を把握することで、問題をデバッグする際に役立ちます。/sys/kernel/securityフォルダにあるこのログにアクセスします。TPM が存在する場合、次のコマンドを実行します。
tpm0/フォルダが作成されたことを示します。
「tpm0/」ディレクトリ内では、BIOSはブートシーケンスの情報を「binary_BIOS_measurements」というファイルに記録します。このファイルを読み取り、ブートの問題を調査します。
NI Linux Real-Timeを実行するTPM対応デバイスを使用して、TPMの機能を利用してキーを保存する標準Linuxライブラリを実装できます。これらのキーは、ディスク暗号化、セキュアブート、データ暗号化、デバイス認証、およびアプリケーションにプログラムするその他の関数などのセキュリティ機能に使用できます。TPMデバイスで作成および保存されたキーは保護され、デバイスのプロセッサやメモリからアクセスされることはありません。TPMは、このレベルの保護を提供する業界標準であり、Windows 11で必須であり、NI Linux Real-Timeデバイスで利用可能になりました。
登録商標Linux®は、全世界における商標保持者Linus Torvalds氏から排他的ライセンスを受けているLMI (Linux Mark Institute) からの許諾により使用しています。
MicrosoftおよびWindowsはMicrosoftグループの商標です。