在 NI Linux Real-Time 中使用信任平台模組 (TPM)

概觀

最新的 NI Linux Real-Time 更新包含對可信平台模組 (TPM) 的支援。本文將定義 TPM、說明 TPM 的使用案例,並提供有關如何使用 TPM 的資訊。

內容

什麼是 TPM?

信任的平台模組 (TPM) 是一種硬體元件,可做為信任的根源,可安全地產生、儲存與使用加密金鑰。TPM 是安全的儲存位置,能儲存機密資訊,這是您不想讓其他人取得的資訊。TPM 儲存加密金鑰等敏感資訊時,能發揮數種優勢。

  • TPM 中的私人資訊絕對不會離開 TPM 純文字,僅會使用加密文字,因此必須先進行解密,才能由人體或軟體讀取。
  • TPM 金鑰可綁定至系統狀態。將金鑰綁定成狀態表示 TPM 會將金鑰與特定 System Configuration 建立關聯,因此只有在系統回到該狀態時才會釋出金鑰。因此,如果修改電腦的 Firmware,TPM 就會拒絕釋放金鑰以解鎖硬碟資料。
  • TPM 保護的私密金鑰無法由作業系統或純文字應用程式直接存取。使用這些金鑰的加密作業會在 TPM 中執行,而在 TPM 外部儲存或傳輸的任何重要資料,都會受到加密保護。

這些功能讓 TPM 成為使用敏感資料或在必須保護資料的敏感環境中運作測試系統的重要附加元件。

TPM 的用途

TPM 常用於磁碟加密、裝置識別與驗證、Firmware元件的真實性驗證 (安全開機),以及保護應用程式機密。就測試與量測應用而言,系統可將 TPM 用於下列其中一個範例:

  • 確保系統在開機操作之間並未修改,包括移除或新增記憶體、變更Firmware以改變系統行為,或是變更執行中的軟體。
  • 保護用於加密或解密來自測試系統傳送至中央工作站的資訊的金鑰。這些金鑰儲存於檔案或指令碼時,很容易被複製或重複使用。TPM 會加密這些金鑰,並將其綁定至硬體。您無法在其他系統上提取或重複使用這些資料,只能透過授權軟體存取。
  • 為了保護 VPN 或認證資料以遠端存取。
  • 將資料寫入加密的可移除磁碟機,並保護該資料,直到使用正確金鑰人員正確解密為止。 

提供哪些版本的 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

在 NI Linux Real-Time 中存取與使用 TPM 時,需透過裝置的 SSH 工作階段完成作業,且必須具備 Linux、NI Linux Real-Time 與安全概念的相關知識。此處提供的資訊可讓開發人員著手評估 NI Linux Real-Time 的安全應用。如需詳細資訊,請參閱最新的 NI Linux Real-Time 說明文件,以及此處所列各個函式庫的公開說明文件。

這些指示僅適用於配備 TPM 的 NI Linux Real-Time 裝置。部分 PXI 控制器與特定 CompactRIO 控制器均提供 TPM。如需包含 TPM 晶片的 PXI 控制器清單,請參閱適用於 NI 控制器的 信任平台模組 (TPM) 支援。請注意,多數 CompactRIO 系統不含 TPM,但可搭配 NI cRIO-9048 購買。此文件使用 NI cRIO-9048 搭配 TPM 選項。 

 

步驟 0:的 NI Linux Real-Time Firmware 與 System Image 升級最新版本。

NILRT 11.5 (2026Q2) 版本強化了使用者與應用程式對 TPM 互動的支援。本文件假設您的系統已升級至至少此版本。升級至最新版本是安全系統的最佳實務。

使用 NI Hardware Manager 連線至您的目標系統,並使用「更新 Firmware」與「管理軟體」邊欄對話框來升級作業系統元件。

 

步驟 1:SSH 轉換至 NI Linux Real-Time 裝置。

使用 SSH 用戶端開啟與目標裝置的框連線。在指令視窗中,開啟 SSH 工作階段:

輸入使用者名稱與密碼,如同在 NI MAX 或 NI Hardware Manager 中設定的內容。預設使用者名稱為「Admin」,預設密碼為「空白」。

 

步驟 2:驗證裝置中的 TPM 存在。

如果裝置有 TPM,就會在開機時建立 1 或 2 個檔案:tpm0 與 tpmrm0。如果裝置有裝置,請執行下列指令:

將回傳下列資訊:


如果裝置沒有 TPM,則回應會

 

步驟 3:安裝支援 TPM 的函式庫。

自 2026 年第一季版本的 NI Linux Real-Time 起,我們隨附了元封裝安裝程式,用於安裝支援 TPM 的所有函式庫。

此指令將安裝數個 TPM 封裝。您可能會使用的工具包含:

  • cryptsetup:用於設定與管理加密儲存空間的使用者空間工具。如此一來即可建立加密資料庫、鎖定與解鎖加密資料庫,以及管理加密金鑰與密碼字詞。
  • tpm2-tools:適用於 TPM 2.0 的使用者空間工具集,可與 TPM 互動。這些工具可讓使用者建立並管理受 TPM 保護的金鑰、使用儲存在 TPM 內部的金鑰加密、解密或簽署資料、將秘密綁定至平台狀態、讀取 TPM 狀態資訊,以及提供或清除 TPM 狀態資訊。
  • clevis:適用於解鎖加密儲存空間的公用程式,通常會搭配 Linux Unified Key Setup (LUKS,磁碟加密的標準 Linux 格式) 解密金鑰。
  • Libtss2-tcti-device0—可讓應用程式透過 Linux 裝置介面直接將 TPM 2.0 指令傳送至 TPM 硬體。如此即可讓使用者能夠存取 TPM 裝置。 

 

步驟 4:讀取 TPM 暫存器。

tpm2 工具含超過 100 個函式,可與 TPM 互動。一個實用的指令是「tpm2_pcrread」:

如此會在清單中傳回 TPM 暫存器的內容。

這些暫存器稱為平台設定暫存器 (PCR)。前八組 PCR (0–7) 都是由 BIOS 撰寫而成。這些哈希值無法直接寫入至;僅會在系統量測變更時更新值。

PCR 7 包含安全開機狀態,包括是否啟用安全開機、正在使用的供應商金鑰等。此暫存器通常用於解鎖決策,如果所儲存的值符合目前的系統量測值,則系統會保持一致且可靠。

PCR 8 與 9 由作業系統開機載入器 (GRUB) 控制。PCR 8 包含開機配置開機載板所進行的量測結果。其中可能包含作業系統開機載入元件、核心影像,以及開機載入後但完整作業系統執行時間之前發生的作業系統專屬量測。

PCR 9 包含作業系統設定資料,例如核心指令列參數、影響執行時間行為的作業系統設定值,以及開機期間所量測的相關政策作業系統設定。PCR 8 與 9 共同量測載入的作業系統,以及該作業系統的設定方式。

剩餘的暫存器 PCR 10-23 為 OS 與應用程式控制的 PCR,可用來量測開機後發生的軟體、運行階段狀態與動態事件。TPM 可讓軟體應用程式決定如何使用這些 PCR。常見的用途包括用於加密資料儲存或傳輸的 TPM 密封金鑰、遠端驗證金鑰儲存、執行階段偵測篡改,以及其他安全的交易。

若要查看開機期間進行所有量測的記錄,請使用 tpm2_eventlog 讀取 securityfs 檔案系統中的 tpm0 裝置的二進位_BIOS_measurements 檔案內容。 

此指令會解析記錄檔,顯示 TPM 在開機期間所指定的 PCR 量測結果。您可以使用此記錄,完整了解可能改變系統狀態的事件。 

 

步驟 5:使用 TPM 功能。

取得 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

Clevis 讓您可將 Linux Unified Key Setup (LUKS) 大量解密金鑰插槽綁定至 TPM PCR 狀態。下列指令會在 /dev/sdx 建立適用於 LUKS 分割區的新金鑰插槽,並與 TPM 針對 PCR 7、8 與 9 的目前量測作業綁定。

在此情況下,只有在未變更安全開機與作業系統Firmware的情況下,後續開機時才能讀取 LUKS 解密金鑰。

傳遞至控點的原則字串,將決定發佈解密金鑰所需的條件。

將於 kernel 變更時解鎖,但Firmware必須相同。可進行作業系統更新。 

 

只有在作業系統未經變更的情況下才會解鎖,而且儲存在 PCR 11 中的應用控制量測值也未經變更。

您可以針對 LUKS 大量建立多個金鑰插槽,以提供多種解鎖方法。如果 TPM PCR 相符,一個插槽可能會允許自動解鎖。若相符 TPM PCR 儲存的值,則另一個插槽可能會允許密碼詞式解鎖音流。另一個可能允許將離線儲存的回復金鑰輸入。

最佳實務指南:即使您使用 TPM 狀態解鎖加密裝置,仍建議您保留您使用 cryptsetup 設定的原始 LUKS 解密密碼相位,做為備份方法以解鎖資料。

若要檢視能解鎖 LUKS 裝置的裝置金鑰,請使用 Clevis Lux 清單:

如需完整的 Clevis 指令清單,請呼叫輔助函式 (-h) 

 

步驟 6:除錯

事件記錄了解開機序列期間發生的情況,有助於除錯問題。在 /sys/kernel/security 資料夾中存取此記錄。如果有 TPM,請說明下列指令:

將顯示建立的 tpm0/ 資料夾:

在「tpm0/」目錄內,BIOS 會將開機序列的資訊記錄到名為「二進位_BIOS_measurements」的檔案中。請閱讀此檔案以調查開機問題。 

結論

使用執行 NI Linux Real-Time 的 TPM 功能裝置,即可實作使用 TPM 功能儲存金鑰的標準 Linux 函式庫。這些金鑰可用於安全功能,包括磁碟加密、安全開機、資料加密、裝置驗證,以及您在應用程式中程式化的其他功能。TPM 裝置中建立與儲存的金鑰已受到保護,無法由裝置的處理器或記憶體存取。TPM 為業界標準,可提供此等級的保護功能,且在 Windows 11 中是必備的產品,現在可用於 NI Linux Real-Time 裝置。 

Linux® 註冊商標係根據 LMI 的轉授權許可使用;Linus Torvalds 持有此商標在全球的擁有權,LMI 則取得了 Linus Torvalds 的獨家授權。

Microsoft 與 Windows 是 Microsoft 集團公司的商標。

 

Was this information helpful?

Yes

No