週邊元件

初探 TPM 2.0

TPM (Trusted Platform Module) [1] – 可信任安全平台模組, 主要以硬體晶片的方式來對平台以及裡面的檔案進行加密或者簽章, 以達到安全防護的功能.

TPM 的規格包含 TPM Library Specification 的是由 TCG (Trusted Computing Group) 組織所制定, 核心的成員如下:


Image.png

最近各大 IC 廠(Infineon, ST, …) 開始主推 TPM 2.0 晶片, 加上微軟也大力將 Win10 跟 TPM 2.0 做應用搭配 [2]. 那我們就來看一下 TPM 2.0 和前一版 1.2 的主要差異.
1. TPM 2.0 加入多種加密以及雜湊演算法
TPM 1.2 只含有 RSA/ AES 等等的加密演算法以及 SHA-1 的雜湊演算法
TPM 2.0 加入 ECC (橢圓雙曲線加密演算法)外, 也提供廠商彈性, 能動態加入特定的加密演算法, 如此一來就能夠支援中國/俄羅斯政府認可的加密演算法. 雜湊演算法則使用安全性更高的SHA-256.
2. 許多國家已認可 TPM 2.0, 其中包含中國以及俄羅斯 [3]
在 TPM 2.0 之前,   因為有國家安全議題, 所以含有 TPM 的任何產品是禁止出口到中國以及俄羅斯. 所以像中國就會使用自己設計的硬體加密晶片 “TCM", 主要差異是加密演算法的不同. TCM 使用了中國自行設計的加密演算法 SM4 [4].
但如第一點所提,  TPM 2.0 已提供廠商彈性, 能動態加入特定的加密演算法. 所以說可以在 TPM 2.0 上使用 SM4 這種中國特定要求的加密演算法.
3. 將不同功能的權限區隔開
以 TPM 1.2 來說, 所有的控制的是以 owner 角色來操作. 擁有 owner 即可對 security/ privacy 功能進行存取. 主要原因是當初 TPM 1.2 設計對象是 PC 上的使用者.

但隨著 cyber security 的議題逐漸被重視, 許多嵌入式平台/ 產品也會將 TPM 設計在裡面以達到保護平台以及資料的目的. 以TPM 1.2 上 owner 的方式來操作, 會衍生許多議題.
所以說 TPM 2.0 將這些存取控制分成三個種類, 分別是

Security: 提供使用者安全保護
Privacy: 用來確認平台/ 使用者的一致性
Platform : 用來確認平台/ 軔體的完整性

每一個種類都有對應的權限控制, 互不影響.

4. Software stack 不向前相容於 TPM 1.2
通常一個標準進版, 都會考慮到向前相容, 然而, TPM 2.0 API 將不往前相容 TPM 上一版的標準- 1.2. 也就是之前常使用的 trousers, tpm-tools 等等都無法在 TPM 2.0的 chip 上面使用

如果要使用 TPM 2.0 的功能, 除了要使用 TPM 2.0 晶片外, 也要搭配 kernel 以及  userspace的套件
Kernel
kernel 4.0 即有加入 TPM 2.0 的功能 [9], 但較完整的 subsystem 則是 kernel 4.4 [10]
Userspace
在 userspace 這邊, 則需要 software stack 以及 tools 兩個套件. 而 Intel 跟 IBM 分別都有發表開源軟體. 下面以 INTEL 的為例

Software stack:
Tools:

詳細用法就不在這邊細講了.

總結來說,  TPM 2.0 想要以彈性化的設計搭配更強化的演算法來分別保護各類使用者以及元件, 也希望能夠降低 cyber security 帶來的問題

ref:
[3]: http://blogs.microsoft.com/microsoftsecure/2015/06/29/governments-recognize-the-importance-of-tpm-2-0-through-iso-adoption/
[9]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7a1d7e6dd76a2070e2d86826391468edc33bb6d6
[10]: https://www.linux.com/news/tpm-20-support-continues-maturing-linux-44

發表迴響