wolfSSLのRoot of Trust

IoTシステムのクライアント側のデバイスは、屋外や公共の場に設置したり不特定多数に向けて販売するなど、サーバ側とは異なる多様なセキュリティの脅威に晒される場合が多くあります。システムのセキュリティ要件に沿って、IoTデバイスは通常のサーバー側とは異なるセキュリティレベルやその実現方法を求められることも多くあります。そうした場合に、ハードウェアレベルのセキュリティ要件を達成するために用いられる信頼の原点をRoot of Trust(RoT)と呼びます。

RoTの機能はシステム要件によって必ずしも同じではありませんが多くの場合、

  • デバイス固有のIDや秘密鍵を安全に保存
  • 公開鍵署名の生成、署名検証
  • 不揮発性の安全なメモリ

などの機能を提供する耐タンパー性などの、ハードウェアレベルの脅威に対して安全性を担保できるデバイスと機能をいいます。IoTシステムでは、この信頼の原点をベースに、クライアント・サーバ間のプロトコルでデバイスの正当性を認証したり(クライアント認証または相互認証)、セキュアなファームウェア更新を実現したりします。

RoTの実現方法は様々ですが、wolfSSLではそうした様々なRoTのプラットフォームに合わせ、セキュリティプロトコルにおいて容易にクライアント認証を実現します。サポートするセキュリティプロトコルにはTLS/DTLSはもちろん、wolfSSHによるSSH/SFTP/SCPやwolfMQTTによるMQTT/Sなどの多くのトランスポート層、アプリケーション層のセキュリティプロトコルを含みます。

RoTはwolfBootの安全なファームウェア更新のための信頼の原点としても利用されます。また、OTAのような遠隔のファームウェア更新の際、ファームウェア配布サーバとデバイスの間の安全な通信チャネルにおいてもデバイス側の信頼の原点としても利用されます。

製品名標準サポートインタフェース説明
wolfTPMTPM2.0/TCGInfineon Optiga SLB9670
ST Micro ST33
Microchip ATTPM20
Nations Tech Z32H330
Nuvoton NPCT650
SPI/I2C/MMIOオフチップRoTの標準TPM2.0/TISをサポート。wolfCryptと連携した暗号鍵の生成、管理、TLSのクライアント(デバイス)認証、セキュアブート、メージャードブート/PCRサポートなどを実現。
wolfCrypt/PKCS11PKCS #11標準的なPKCS#11エンジン
wolfPKCS11
Criptoki APIsクラウドのHSMサーバ, Smartcardsなどとのインタフェース標準PKCS#11をサポート。
wolfSSL/Iot SafeIoT Safe/GSMASIM thru Serial ModemUARTIoT SafeはSIM(UICC/eUICC) によるRoTのための標準。wolfSSLと連携してクライアント(デバイス)認証をサポート。
wolfHSMベンダー独自Multi-core MCU
Infineon Aurix TC3xx, TC4x
ST SPC58NN
Shared memoryマルチコアMCUのHSM機能をサポート。鍵管理、対称鍵の暗復号、公開鍵署名検証などの機能などでTLSのクライアント(デバイス)認証やセキュアブートなどをサポート。
wolfCrypt/セキュアエレメントベンダー独自Microchip ATECC608
NXP SE050
STM STSAFE-A110
Maxim/Analog Devices MAXQ1065
SPI/I2C軽量なオフチップRoT。TLSのクライアント(デバイス)認証でハードウェアレベルのセキュリティを実現。
wolfCrypt/セキュアエンクレーブベンダー独自Arm TrustZone
Intel SGX
Shared memory
System Call
セキュアエンクレーブまたはTEE(Trusted Execution Environment)は同一のプロセッサ内で安全な実行と通常実行の実行モードを区別して、セキュリティ強度を高める技術。wolfCryptを通じて、安全なファームウェア更新などの機能を実現。
wolfSSL鍵ラッピングベンダー独自Renesas RX: TSIP, RA: SCE
NXP iMX.
CAAM Black Key
チップ内部バスラッピングした秘密鍵をオンチップの隔離されたメモリーに保存。高速な書き込み、読み出しインタフェースを利用して安全かつ高い性能でRoT機能を実現。

表1 wolfSSLのRoot of Trustサポート

上の表は、wolfSSLのサポートするRoTをまとめたものです。

TPM2.0(Trusted Platform Module 2.0)はTCG (Trusted Computing Group)によるオフチップRoTの標準仕様です。工場出荷時やチップ内で生成した秘密鍵やIDを安全に保管し、公開鍵署名や検証機能を基本にセキュアブートのためのさまざまな機能を提供します。セキュアプロトコルにおけるクライアント認証にも使用します。wolfTPMでは、各社TPMチップに対してインタフェース仕様であるTIS(TPM Interface Specification)をサポート。それをベースにTLS/DTLS, SSH/SFTP/SCP, MQTTSなどのためのクライアント認証や、wolfBootによる安全なファームウェア更新をサポートします。

PKCS#11は暗号トークンのためのAPI規格で、ハードウェアセキュリティモジュール(HSM)、スマートカード、USB暗号トークンなどの暗号化デバイスとのやり取りを可能にするために設計されています。PKCS#11の主な目的は、これらのデバイス上で暗号操作(暗号化、復号化、デジタル署名、署名の検証など)を行うための一般的なインターフェースを提供することです。wolfCryptではこのPKCS#11の標準APIを通じてアプリケーションがHSMの各種機能を利用したり、wolfSSLなどのセキュアプロトコルのクライアント認証などに利用することができます。

IoT Safe(IoT SIM Applet for Secure End-to-End Communication)は、UICC(Universal Integrated Circuit Card、一般にはSIMカードとして知られています)を利用したRoot of Trustの標準仕様です。この規格は、IoTデバイスにおけるセキュリティの基盤となる信頼の根源(Root of Trust)を提供するために、UICCのセキュリティ機能を活用します。wolfSSLでは、この標準インタフェースを利用してTLSクライアント認証をサポートします。

マルチコアのMCUの1つのコアを他のコアで動作するアプリケーションからは隔離された領域としてHSMのために利用することができます。このような利用方法では、コア間の通信をチップ上の共有メモリを介して行うことができ、軽量で高速な通信を実現できます。これによって共通鍵暗号による多量のデータの高速な暗復号など、低速のシリアルラインによるオフチップソリューションでは難しかった用途にもHSMを用いることができるようになります。

wolfHSMはこのような目的でマルチコアのMCUを利用する際のフレームワークを提供します。wolfHSMサーバはHSMの役割をするコアで動作し、各コアで動作するアプリケーションに対してHSM機能を提供します。wolfHSMクライアントは、アプリケーションの動作する各コアでアプリケーションがHSM機能を利用するためのインタフェースを提供します。

  • wolfCrypt/SE(セキュアエレメント)

wolfCryptは各社のセキュアエレメント向けのドライバーインタフェースを提供しています。これらのインタフェースによってアプリケーションプログラムはクライアント認証のハードウェアセキュリティを容易に実現することができます。

いくつかのハイエンドMCUでは、チップ上にアプリケーションの動作領域とは隔離されたメモリー領域に安全に鍵を管理することができるようになっています。この領域にラッピング用の秘密鍵とラッピングアルゴリズムによって暗号化された秘密鍵などを安全に保存しておくことができます。また、その鍵を使って安全かつ高速に公開鍵署名や検証、共通鍵暗復号などの処理を実現することができます。wolfSSLはそうしたMCUの機能を利用してラッピングさらた鍵による安全な通信をサポートしています。

Root of Trustの技術、wolfSSLのRoot of Trustサポートについてご興味、ご質問がありましたら、info@wolfssl.jp までお知らせください。