組込/ハードウェア

【セキュリティ】TPMについて詳しくなりたい

【※ 当記事は2020年7月2日時点の情報です】

ペイヴメント(@pavement1234)です。

エンジニア
エンジニア
TPMの概要を知りたい。


TPMとはTrusted Platform Moduleです
要はカギを隠したりHDDなどの暗号化・複合化をするために
TPMという外付けのマイコンを用意するのが一般的になりつつありますが
標準化の状況やサポートOSなど、よくわかっていなかったので調べました。

初歩的な内容が多いので、
詳しい方は読み飛ばしてください。

とにかく調べてみた

TPM(Trusted Platform Module)
概要はこんな感じ。

Trusted Platform Module(TPM)とは、
セキュリティを実現するための、
ハードウェア耐タンパー性を持つセキュリティ機能のこと。
主に専用チップとして実装されたディスクリートTPMと、
CPU内部のセキュリティ領域で実行されるファームウェアTPMがある。

よく分からないので読み進めます。

RSA暗号演算やSHA-1ハッシュ演算といった機能を有しており、
チップ内で暗号化・復号、デジタル署名の生成・検証、
プラットフォームの完全性検証を行うことができる。
また、TPMの内部でRSAの鍵ペア(公開鍵と秘密鍵)を生成することができる。
TPMの仕様はTCG(Trusted Computing Group)という国際的な業界団体で策定されており、最新のバージョンは2.0である。
1.2まではRSAのみであったが、
2.0からはAESやECDSAなどを含め
多種多様な暗号アルゴリズムの処理をチップ内でできるようになり、
ソフトウェアが暗号ライブラリを負担する必要が大幅に無くなったため、
暗号境界がより明瞭になった。
ノートPCだけではなく、デスクトップPCにもTPMは搭載されている。
Windows OSとしてはWindows Vistaが初めて正式にサポートした。
Intelチップを搭載した初期のMacintoshにもTPMチップを搭載したものがある。
この技術は、さらに発展を遂げている。
チップセット等の連携を強化した技術として、
Intel Trusted Execution Technology がある。
また、仮想機械向けの命令仕様拡張も提案されている。
組み込み用途向けとしては、SPIやI2Cなどのインタフェースを持つものがリリースされている。
ピン数が少なくなるためコストが縮小するほか、
インタフェースの簡素化など
攻撃表面の縮小(Attack surface reduction)の概念と相性が良いという利点がある。
近年、車の自動運転やIoTなどで需要を伸ばしている分野である。

なんとなくわかった気がします。

TPMハードを積んだらソフトは何すればいいの?

ハードを乗せただけでセキュリティが守られるハズはありません。
セキュリティモジュールの最新規格TPM 2.0/TSS 2.0対応ソフトウェアライブラリ
とか
FFRI,Inc.1Monthly ResearchTPM 2.0 の概要とIoT デバイスでの利用例
を読むと、
TCG(Trusted Computing Group)が策定した
TPM 2.0をカンタンに使えるようにするための
TSS 2.0(TCG software stack)が必要になるみたいです。

LinuxでTPM2.0対応するにはどうするの?

ユビキタスのTPM2.0対応ミドルウェア
みたいなソフトを買わなきゃいけない訳ですね。

【TPM2.0】【Linux】でWEB検索してみました。
LinuxでTPM2.0を使う
とかRaspberry Pi でTPMを使うを読むと、
例えばラズパイはTPMがついてないので、
外付けのTPMチップをSPI接続させたりする様子。

で、肝心のTPMチップの一例を挙げる。
IRIDIUM SLM 9670 TPM2.0
を見ると
OSS implementation of the TCG TPM2 Software Stack (TSS2)
とか
ELTT2 – Infineon Embedded Linux TPM Toolbox 2 for TPM 2.0TSS(ソフトウェア)
がGitHubに落ちてる。
TPMチップを買ってくればフリーウェアだけでシステム作れそうな感じ。

他にRSA signatures with TPM2.0 and OpenSSLあたりを見ると、
OpenSSL暗号のオフロード化も可能みたいです。

まとめ

セキュリティは突破されたら終わりなので、要件も自ずと厳しくなります。
OSSソフトウェアを使った場合にセキュリティホールが見つかると厄介なので、
業務用でTPM2.0を使うなら商用ソフトウェアが欲しくなるでしょう。

開発費を安く済ませようとして
組込Linuxシステムを構築するケースがあるかもしれませんが
IoT機器を踏み台にしてネットワークに侵入するみたいな話も聞くため、
セキュリティ対策が必須になります。
そのとき選択するソフトウェアによっては割高になるし、
Linuxのセキュリティパッチを当て続けるのはしんどい。
そういった場合にWindows10 IoTという選択肢があるかもしれないと思いました。

ABOUT ME
ペイヴメント
ペイヴメントのエンジニア塾(当ブログ)では20年以上の経験から得られたプログラミング系ノウハウについてベテランにも満足して頂けるような内容の濃いコンテンツを初心者にも分かりやすい形で日々発信しています。【経歴】ベンチャーのソフトハウスで4年勤務後、精密機器メーカーのソフト開発部門に勤務し今に至ります。
error: Content is protected !!