IoTセキュリティと信頼済みゾーン
セキュリティ侵害は甚大な被害をもたらす可能性があります。しかし、セキュリティ関連のハードウェアを「信頼済みゾーン」に隔離するなど、設計にベストプラクティスを組み込めば、外部からのコンテンツへのアクセスを制限し、温度と電圧の変化を絶えず監視することができます。
信頼済みゾーンはIoTセキュリティの基盤
セキュリティ構築のベストプラクティスのひとつ、パーティション化は、セキュリティ関連のハードウェア、ソフトウェア、データを「信頼済み」ゾーンに分割・隔離して、信頼済みのコンテンツに対する外部からのすべてのアクセスを厳密に制限します。これにより、セキュアでないソフトウェアは、セキュアなリソースに直接アクセスできなくなります。信頼済みゾーンは、セキュリティに関連するマイクロコントローラユニット(MCU)のハードウェア、ソフトウェア、および外部デバイスを隔離します(図1)。
図1:一般的なセキュアな組み込みシステムアーキテクチャは、セキュリティに関連するMCUのハードウェア、ソフトウェア、および外部デバイスを隔離する必要があります。(画像:執筆者)
信頼済みゾーンの内側
セキュアブートとセキュアダウンロード
組み込みシステムが敵に欺かれ、偽のコードを本物と思い込んでしまったら、すべてが失われます。ですから、すべてのコードは信頼済みであることを確認しなければなりません。工場でシステムを製造するとき、1組の公開鍵と秘密鍵が生成されます。公開鍵はMCUの安全な場所(通常はワンタイムプログラミング(OTP)メモリ)に格納されます。MCUは、電源が投入されて起動する時に、またはダウンロードを受ける時に、コードと鍵を検証し、適合しないコードを拒否します。
ハードウェアアクセラレータ
AES(Advanced Encryption Standard)やRSA(Rivest–Shamir–Adleman)公開鍵暗号システム、または楕円曲線ディフィー・ヘルマン鍵共有(ECDH)アルゴリズムの実装は、計算量が多く、負荷がかかります。そのためセキュアな組み込みシステムのマイクロコントローラは、通常、日常的な暗号処理を迅速に行うために、ハードウェアアクセラレータを搭載しています。そしてMCUの専用命令がアクセラレータにアクセスし、AES暗号化・復号化といった機能を実行します。
セキュアなリアルタイムクロック(RTC)
セキュアなリアルタイムクロック(RTC)は、クロックの設定が改ざんされ、システム動作が無効にされるのを防ぎます。 これはしばしばスーパーバイザに統合されている機能ですが、スーパーバイザはこの機能によって、絶えずシステムの電圧をチェックし、主電源の出力が落ちるとバックアップバッテリに切り替え、バックアップバッテリの電圧が降下すると、改ざんイベントを警告することができます。
真の乱数発生器(TRNG)
乱数は、セキュアシステムが乱数暗号鍵を生成しセキュアなデータ伝送を行う上で、非常に重要な役割を果たしています。ソフトウェアのアルゴリズムは疑似乱数列を生成することができますが、 決定論的であるため攻撃に対して脆弱です。そこで、セキュアなマイクロコントローラには、予測不可能な出力を生成する真のハードウェア乱数発生器(TRNG)を組み込む必要があります。実はTRNGは、あの色鮮やかな照明器具「ラバランプ」から誕生しました。当初は、ラバランプの液体の中をゆっくり浮遊する蝋の塊がオンラインの乱数生成に使用されていたのです。今では、熱雑音、または複数の自走発振器間の相互作用が乱数性のソースに使用されています。
温度と電圧の監視
サイドチャネル攻撃では、物理的ハードウェアの測定と分析を使用して、システムやチップの暗号化処理にアクセスし、秘密鍵を抜き取ります。そして、例えば過剰な温度や電圧を使って、ハードウェア攻撃を仕掛けてくる可能性があります。システムの電圧が取り除かれると、オンチップ環境モニタがバックアップバッテリ電源に切り替え、秘密鍵がゼロで埋められます。
IoTアプリケーションに信頼済みゾーンを実装する
組み込みIoTアプリケーションに信頼済みゾーンを実装する方法はいくつかあります。一つは、外部デバイスを使ってMCUのセキュリティ機能を代替もしくは増強し、他のセキュリティ関連機能の構築に必要な信頼済みセキュリティゾーンを設定する方法です。また外部デバイスは、複雑なMCUやメモリ保護ユニット(MPU)ハードウェアから最もセキュアなエレメントを分離できるので、セキュリティ関連の障害や攻撃から信頼済みゾーンをより容易に保護できます。MicrochipのATECC608Aは、MPUまたはMCUベースのIoTアプリケーションのサポートと増強に理想的なセキュリティデバイスです。
Microchip ATECC608AをIoTの信頼済みゾーンに
MicrochipのATECC608Aは、小さなフォームファクタでIoTアプリケーションに極めて重要なセキュリティ要件を実現します。しかも非常に低電力で、接続しやすいインターフェイスを備え、1本のGPIOピンで広い電圧範囲に対応します。デバイスに依存しないため、広範なMPU、MCUデバイスとも連携可能です。最も堅牢なIoTアプリケーションに必要なすべてのセキュリティと暗号化機能を小さなフットプリントで実現します。先進的な機能には次のものがあります。
- 16キー、証明書、データ用のセキュアハードウェア鍵ストレージ
- ECDSA(FIPS186-3楕円曲線デジタル署名)による非対称の署名、検証、鍵合意をハードウェアでサポート
- ECDH:FIPS SP800-56A楕円曲線ディフィー・ヘルマン
- NIST規格P-256楕円曲線に対応
- SHA-256、AES-128に対応
- セキュアブートサポート
- 使い捨て鍵の生成
- FIPS 800-90 A/B/C乱数発生(RNG)
- 2つの高書き込み耐性モノトニックカウンタ
- 一意性が保証された72ビットシリアル番号
ATEC608Aには3つのバージョンがあり、それぞれ共通のセキュリティアプリケーションへの対応を容易にする重要な機能が事前にプログラムされています。ATEC608Aの3つのバージョンは次のとおりです。
- ATECC608A Trust&GO は、TLSベースのネットワークのセキュア認証用に最適化されています。事前にデフォルトの指紋証明書と鍵が設定され、プロビジョニングされた状態で提供されます。構成と信用情報はシステム内にロックされ、変更できません。クラウドインフラが証明局による指紋証明書の検証を要求しないため、実装・展開が大幅に簡易化されます。ATECC608A-TNGTLSには、他にもAES128ハードウェアアクセラレータ、ハードウェアベースの暗号鍵ストレージ、暗号化対策といった重要な機能が統合されており、ソフトウェアの脆弱性に関連するセキュリティ攻撃の可能性を排除できます。ATECC608A Trust&Goデバイスは、 AWS IoTマルチカウント登録 アーキテクチャと互換性があります。
- ATECC608A TrustFLEX は、TLSベースのネットワークのセキュア認証用に最適化されています。 セキュアデバイスとして設定済みで、Trust&GOよりも多くのデバイスのクラウド接続へのセキュア認証のユースケースを備えています。パブリックまたはプライベートのネットワークで、クラウドインフラにトークンベースの認証もしくは顧客証明書認証(従来のPKIモデル)を実装することができます。追加認証、ファームウェアの妥当性チェック、セキュアブートアシスト、鍵ローテーションなどの実装が事前に設計されています。ATECC608A TrustFlexデバイスは、 AWS IoT、 Microsoft Azure、 Google Cloud Platform、および一般のトランスポート層セキュリティ (TLS)ネットワークと互換性があり、 WolfSSL、mBedTLS、CycloneSSLのサンプルコードを備えています。
- ATECC608A TrustCUSTOM は、Trust&GOやTrustFLEXのユースケースでは対処できないセキュリティ要件を持つアプリケーション用に、完全カスタマイズが可能なセキュアエレメントです。
MicrochipのATECC608Aアプリケーション用DM320118開発キット
MicrochipのDM320118開発キットは、ATECC608Aベースのアプリケーション開発を加速化するために誕生しました。このキットには、アプリケーション開発用にATECC608Aの3つのバージョンとオンボードMCU(ATSAMD21)が搭載されています(図2)。アプリケーションコードのダウンロードとデバッグにはUSBポートを使用します。3種類のATECC608Aデバイスは、I2Cバスを共有して信頼済みセキュリティゾーン機能MCUを制御します。
図2:ATECC608Aとブロック図(出典:Microchip)
このキットを対象とするアプリケーションプロジェクトを作成する際に、開発者を支援する様々なソフトウェアツールも揃ってます。
- MicrochipのCryptoAuthentication™向けTrust Platformには、数々の有名なユースケース、コンフィギュレータ、トレーニング教材が含まれています。
- CryptoAuthLibを使うと、MicrochipのCryptoAuthenticationデバイスを使った作業が簡単になります。CryptoAuthLibはハードウェア抽象化レイヤー(HAL)を用いて設計されているので、他のマイクロコントローラへの拡張が容易になります。C言語版とPython版のライブラリもあります。
- MPLAB® X IDEは、Windows®、macOS®、Linux®環境で動作する統合開発環境(IDE)です。このツールは、搭載されているSAM D21マイクロコントローラを使って新しい組み込みアプリケーションを開発できます。自動的にオンボードnEDBGデバッガを使用して、SAM D21マイクロコントローラをプログラムします。デバッガを使用すると、ホストマイクロコントローラからCOMポートを介して端末ウィンドウにデバッグ情報を送ることもできます。
- DM320118の詳細については、こちらのマウザー製品ページをご覧ください。https://www.mouser.com/new/microchip/microchip-dm320118-cryptoauth-kit/
まとめ
IoTアプリケーションの堅牢なセキュリティは、信頼済みゾーンを備えた強固な基盤の上に構築し、ハッキングとソフトウェア障害からセキュリティ機能を保護しなければなりません。MicrochipのATCC608Aデバイスと関連開発プラットフォームを活用すれば、最も堅牢なIoTセキュリティ実装の開発を劇的に加速できるでしょう。