カテゴリ: 組込み
CodeMeter EmbeddedとTPM
CodeMeter EmbeddedとTPM(Trusted Platform Module)で連携させてみるのはどうでしょう?一部の組み込みデバイスまたはIoTデバイスには、TPMまたは同様のセキュアエレメントが搭載されています。TPMをCodeMeter ASICのように安全なキーストレージのために使ってみるのは?コンポーネントは大量生産されて安価であることが多く、POSハードウェアに組み込まれていることがよくあります。
これらの質問への回答は、「CodeMeter EmbeddedはTPMで動作します」です。しかし、TPMがCodeMeter ASICの真の力に匹敵することは決してありません。ドングルとASICに組み込まれたCodeMeterハードウェアは非常に強力であるだけでなく、そのストレージ構造とファームウェアもCodeMeterと完全に連携するように最適化されています。TPMやその他のセキュアエレメントは、まったく異なる目的で設計されています。たとえば、セキュアブートやその他の低レベルのシステムプロセスなどのための、費用対効果の高い便利なセキュアアンカーを1つ以上提供することです。CodeMeterのチップはセキュアメモリのサイズだけでも格段に優れています。もちろんCode Moving機能のような他の多くの機能は言うまでもありません。
しかし、課題が1つあります。組み込みシステムの世界は、多様で異質なものです。性能やアプリケーション、そして特に運用コストにおいて数えきれないほどのシステムが存在します。CodeMeter ASICの入セキュリティなメモリは、一部のアプリケーションにはオーバースペックなのです。そこでCmActLicenseが役立ちます。ドングルと互換性のある構造でデータを保存しますが、特別なライセンスファイルに保存します。これを物理的なドングルとほぼ同じくらい安全にするには、保存するシステムの特定のプロパティにバインドする必要があります。システムにしっかりと固定しなければ、ファイルがコピーされて他のシステムでも機能し、ライセンスシステム全体を回避してしまいます。CmActLicenseはこれをカスタムバインディングで実現します。ライセンスは、CPU ID、MAC、GPU ID、IMEI、または同様の識別子など、組み込みシステムのプロパティに必要に応じてバインドされます。より具体的な属性を使用するほど、ライセンスのシステムに対するバインドは強固になります。ターゲットハードウェアのプロパティを非常に詳細に把握する必要があるため、バインディングシステムは、それを使用する各開発者が微調整する必要があります。TPMの統合が役立つのは、この点です。最良かつ最もシンプルなケースでは、TPMのエンドースメントキーは、CmActLicenseをバインドするための固有の特性としてすでに十分です。これは両方にとって最善であり、CmActLicenseは安全なストレージ構造を提供し、TPM(または類似のセキュアエレメント)は、暗号化された一意のIDを保証することでセキュアなアンカーを提供します。
また、TPMを使用することで、複数のシステムで動作するバインディング設定を、特定のハードウェアごとに調整することなく設置することができます。これを行うには、プロセスはシステムのIDを確認するだけでなく、プラットフォーム認証と呼ばれる特殊な暗号化プロセスを開始します。これは、鍵の真正性をチェックし、セキュアソフトウェア内のCodeMeter Embeddedプロセスが実際にTPMと直接通信し、中間者攻撃にさらされていないことを確認するためのものです。このバインディング設定は、同じ暗号化プロセスがハードウェアシステムのアイデンティティを確認する役割を果たすため、当該ハードウェアに対する他のプラットフォーム固有のバインディングを置き換えることも可能です。
この組み合わせでは、CmActLicenseがキーと証明書を安全に保管する場所として機能します。結果として「ソフトセーフ」は、TPMに保管されるキー、つまり安全なハードウェアでロックされます。TPMで動作するCmActLicenseは、ドングルやASICを使用できない場合は汎用性の高い優れたオプションですが、ハードウェアベースのキーストレージを保証する必要があります。
KEYnote 37 – Edition Spring 2019