組込み開発 基本のキ:IoT MCUセキュリティ

本稿は、IoT MCUソフトウェア/ハードウェア開発者向けTipsで、「MCU開発基本のキ」シリーズの第1回目です。MCUベンダ横断的に開発ポイント、Tipsなどを不定期に投稿します。

今回は、そもそもIoT MCUに、なぜセキュリティが必要かという最も基本的な点について示します。

幅広い技術がIoT MCU開発者には必要です。しかし、全てを理解し、時々刻々変化する状況に対応するには時間がいくらあっても足りません。情報が多く幅広いからこそ、短時間で効率的なIoT MCU開発のためのポイントやTipsが必要です。

このポイントやTipsについて筆者個人の考え方を示します。これを、たたき台にして、ブログ読者の方々の考え方に発展・貢献できれば幸いです。

接続とセキュリティ

インターネット接続とセキュリティ
インターネット接続とセキュリティ

IoT MCUは、インターネットなどに接続し動作することが前提です。

人がネットに接続する時は、事前にアカウント登録し、IDやパスワードなどの登録情報を接続時に手入力、ネット側で受信データと事前登録情報と比較し接続を許可します。

IoT MCUは、人の手入力の代わりに自動で登録情報をネット送信することで接続します。この時大切なのが、IoT MCU内部に保存済みの登録情報です。登録情報をサイバー攻撃やハッカーから守る手段がIoT MCUセキュリティです。

ハッカー、セキュリティ、OTA

ハッカーとセキュリティは、「いたちごっこ」を繰返します。

例えば、コチラのFirefox 91とWindows 10規定ブラウザー設定、Windows 11で更に複雑化する設定がその例です。この場合、ハッカー役がFirefox、セキュリティ役がWindow設定です。

様々なIoT MCUセキュリティ手段がありますが、ポイントは、守りは攻めに対する対処療法なので守りの追加や更新が必要となる点です。

つまり、個々のセキュリティ手段を知ることよりも、何を(IoT MCUの登録情報や秘密鍵などの重要情報)どのように守るかの方がより重要です。ソフトウェアによる守りよりもより強固な内蔵ハードウェアで重要情報を守るのが、ARM Cortex-M33コアのTrustZoneです。

いたちごっこの終息策として、MCU内蔵TrustZoneとその制御ソフトウェアを採用した訳です。

Windows 11で導入されるTPM 2.0も、TrustZone相当です。しかし、TPM保護PCから情報を抜出す方法という記事もあります。セキュリティには終わりが無いと言っても良いでしょう。

終わりが無いので、OTA(Over The Air)によりセキュリティ手段の追加や制御方法更新が必要になる訳です。OTAは、IoT MCUセキュリティ追加更新が本来の目的で、ソフトウェアバグ修正は副次的だと思います。

接続伝送路エラー訂正

無線であれ有線であれ、ネット接続の伝送路にノイズ混入の可能性があります。ただ、IoT MCUセキィリティが正常か異常かの判断は、受信データにノイズ(誤り)が無いことが前提です。

そこで、受信側に、受信データに混入ノイズを除去する機能があれば便利です。

2021年9月9日、米)MITは、あらゆる種類のデータ誤り検出し訂正するGuessing Random Additive Noise Decoding (GRAND)採用のハードウェアデコーダを開発しました。128ビットまでのコードを約1u秒でデコードでき、高速通信規格5GやIoT分野での利用が期待されています。

まとめ:IoT MCUセキュリティ3Tips

  1. ネット接続が前提のIoT MCUには、サイバー攻撃から内蔵重要情報を守るセキィリティ必須
  2. セキュリティは、対処療法なので機能追加更新OTA必須
  3. より強固に重要情報を守るTrustZone、受信データ誤り検出訂正GRANDデコーダなどのセキュリティ対策ハードウェアが、IoT MCU要件になる可能性あり

IoT MCUセキュリティ用語、関連性、対策ハードウェアがご理解頂けたと思います。
※TrustZoneに似たハードウェアに、ルネサス:Trusted Secure IP(TSIP)、STマイクロ:Secure Memoryなどもあります。

セキュリティは終わりがありません。どの程度のセキュリティをIoT MCUへ実装すれば良いかを検討するには、IoTセキュリティ手引書やPlatform Security Architecture: PSA Certified認証制度などが参考になります。

但し、IoT MCU開発者に解り易いかと言えば、正直疑問も感じます。そこで、IoT MCUセキュリティ関連で、最低限開発者が押さえておくべき3項目をまとめました。

特に項目3は、初めからIoT MCUに実装済みでないと後付けやOTA更新ができません。今後の欧米IoT規格や総務省動向にも注意を払う必要があるでしょう。

補足:IoTセキュリティコスト

筆者利用ネットカフェPCのWindows 11対応チェック結果を抜粋したのが下図です。2PCのみ抜粋しましたが、他PCも同様で、全項目OKのPCは皆無でした。弊社PCも3PC中1台のみ全OKですので、Windows 11無償アップグレード可能PCは、Windows 10 PCの30%以下になりそうです。

ネットカフェのWindows 11対応チェック結果
ネットカフェのWindows 11対応チェック結果

Windows 10サポート終了の2025年10月以降、多くのWindows 10セキュリティが低下し、サイバー攻撃に弱くなります。セキュリティ対サイバー攻撃コストを示すのは大変でしょうが、Microsoftは示す責任があると思います。

同様にIoT MCU顧客もセキュリティ対策コストを望むと思います。ちなみに、Cortex-M4比、Cortex-M33 TrustZone MCUは、2倍工数必要が弊社見解です(関連投稿:Cortex-M33とM0+/M4の差分の3章)。

Windows 10と11、Linux Mint、IoT MCU開発

2021年10月5日(米国時間)、次期Windows 11リリース、Windows 10 21H2リリースも10月5日前後と見込まれています。2025年迄の期間で、今後のPCとIoT MCU開発環境、開発者要件を考えてみました。

PCとIoT MCU開発環境まとめ

Windows 10、Windows 11、Linux MintとIoT MCU開発環境(2025年までの範囲)
Windows 10、Windows 11、Linux MintとIoT MCU開発環境(2025年までの範囲)

Windows 10 21H2小規模更新

年2回あるWindows 10大型更新、今秋のバージョン21H2更新も小規模更新です。

20H1から4回連続の小規模更新で、バージョンサポート期間も1.5年とこれまでと同じです。Windows 10サポート終了は、延長無しの場合2025年10月14日です。

Microsoftは、Windows 10の新規開発を終息し、次期Windows 11へ注力したいハズです。これは、サポート終了2025年までは小規模更新を繰返し、PCユーザ側は、逆に安定した最新Windows 10が使えるメリットを生みます。

なおWindows 10の更新方法は、コチラの投稿記事を参考にしてください。

Windows 11へのアップグレード要件緩和は幾分発表されましたが、セキュリティTPM2.0は相変わらずで、Windows 10から従来のような安易な11アップグレートをMicrosoftは許しません。従って、11要件が現状のままなら、Windows 10 PCの使い道は2025年以降無くなる運命です。

11化できない、または、10サポート終了後のWindows 10 PCをどう運用するかは問題です。解決策は、後で示します。

Windows 11プレビュー版評価

「Windows 11 もっさり」で検索すると、多くの記事がヒットします。もちろん、Windows 11プレビュー版試用感想です。Windows 10比、動作が遅く感じる人が多いのは確かなようです。

これは、CPU能力を、従来よりもグラフィックとセキュリティへ配分した結果だと推測します。

ビジネスユースの場合、Windowsグラフィック能力が生産性を向上させることはありません(Mac PCは別です)。一方、セキュリティ能力は、重要ではあるものの、しばしば開発作業の邪魔になります。開発ツールインストールや更新時、セキュリティソフトが不要な警告を出すことを経験された方は多いでしょう。

セキュリティは、「安全側マージンを大きく保って動作」します。存在意義を示すためやむを得ないのは理解できますが、開発の邪魔になるのは間違いありません。

Windows 11は、Apple製M1チップ搭載の新Mac PC対抗手段なのか、初めから高性能グラフィックと新セキュティ対応の新しいCPUチップ利用を想定している気がします。Windows 11リリース後、製品版やプレインストールPCなどからMicrosoftの意図や本当の目的も明らかになるでしょう。

Windows 11は、年1回の大型更新と、2年間のバージョンサポート運用です。今秋リリースから1年経過後に初期トラブルを回避した大型更新バージョンがリリースされます。リリース後1年は、製品版11評価期間と考えても良さそうです。

結局、Windows 11アップグレート要件を満たすPCであっても、1年評価期間後、初期トラブル回避版でアップグレートしても遅くはないと思っています。

※「Windows 11 TPM 回避 インストール」の検索結果からTPM回避11化は可能のようです。本稿は、公式11アップグレート要件を満たすWindows 10 PCのみを対象とします。

Windows 10問題解決Linux Mint

Windows 11化できないPCの活用方法としてお勧めするのが、Linux Mintです(但し64ビットCPU必須)。その理由が下記2つです。

  1. Windowsに比べハードウェア仕様が低くてもLinux Mintは快適動作
  2. Windows GUIに慣れたユーザにはLinuxコマンド操作に違和感があるが、Linux Mintは、殆どの操作がWindowsとよく似たGUIで可能

Windows 10サポート終了まで4年あります。Linux Mint操作に慣れ、代替利用上の問題有無を評価するには、十分な期間だと思います。

マルチプラットフォームIoT MCU開発環境

IoT MCU開発環境も、Windowsのみの動作から、Windows/Mac/Linuxマルチプラットフォームへ移行しつつあります。例えば、NXP)MCUXpresso IDE、STマイクロ)STM32CubeIDE、Cypress)ModusToolboxなどは、OSが異なっても同じ動作をします。

MCUXpresso IDEやSTM32CubeIDEのLinux Mint版インストール方法は、コチラの関連投稿5章を参照してください。

個人向けWindows 365

発表済みの企業向けプラン価格よりかなり安くなることが必要ですが、個人向けWindows 365プランの価格次第では、セキュリティ/保守運用面でメリットがあるWindows 365 Cloud PCは魅力的です。

仮に、スマホと同程度、つまり月額1000円以下、5年間利用してもトータル6万円程度でWindows 365が利用できれば、個人ビジネスにも十分使えます。過剰期待かもしれませんが…。

世界的半導体不足

経年変化などを考慮し、Windows 11プレインストールPCを新規購入するのも変化への対処方法の1つです。但し、昨今の世界的な半導体不足は、PC調達価格上昇をもたらし、購入逆風の状況です。この逆風は、Windows 10サポート終了に向けて新規PC需要が高まるため、さらに強くなるハズです。

IoT MCU開発者要件

以上のような2025年までの激しいPC環境変化に対し、IoT MCU開発環境は、Windows/Mac/Linuxマルチプラットフォーム化で対応します。

IoT MCU開発者は、従来のような単純なMCU処理開発だけでなく、クラウド接続RTOS、セキュリティ、OTA(Over The Air)、エッジAIなど様々なIoT付加サービスの追加が顧客に応じて必要になります。また、これら付加サービス規模や技術背景も複雑です。

これら付加サービスは、既にLinux上で開発済みのものも多く、IoT MCU開発者は、Linux環境に慣れていくことが必要だと思います。更に、顧客毎に異なるIoT付加サービスを、ある意味ブラックボックス的に取捨選択し、従来のMCU開発へ短期で追加/削除できるテクニックを身に着けておくことも必要です。

つまり、Windows利用に慣れたIoT MCU開発者でも、Linux要素技術を持つ必要があります。

IoT MCU開発者「個人レベル」で、これらLinux技術習得やIoT MCU技術を効率的に習得する手段として本ブログ投稿や弊社マイコンテンプレートがお役に立てるように開発していきます。

総務省:2020年4月以降IoT機器アップデート機能義務化予定

総務省は、電気通信事業法を改正し、2020年4月以降「IoT機器アップデート機能義務化を予定」しているそうです(日経ビジネス2019年9月6日有料会員限定記事、“モノのインターネットに死角あり 狙われるIoT機器”より)。

本稿は、普通のMCU開発者が知るべき最低限のIoT MCUセキュリティ対策をまとめてみたいと思います。

IoT MCUセキュリティ

記事には、“歴史の浅いIoT機器は、開発者とユーザ双方にセキュリティ意識が欠如している“、”開発者は、便利で魅力的な機能搭載を優先し、セキュリティ配慮は2の次”とあります。確かにそうゆう見方はあります。

しかし、サイバー攻撃やセキュリティ関連ニュースが溢れる昨今、開発者/ユーザともに無関心ではないハズです。むしろ、現状のMCU能力では、セキィリティ強化が無理な側面を十分知った上で妥協している(目を瞑っている)のが事実だと思います。

セキィリティ関連記事は、その性質上、英語の省略用語を多用し、漏れがない細かい説明が多いので、全体を把握したい普通のMCU開発者には、解りにくいと筆者は考えています。

そこで、全体把握ができるMCUセキュリティのまとめ作成にトライしたのが次章です。

サイバー攻撃対策

MCUセキュリティ機能は、サイバー攻撃を防ぐための対策です。サイバー攻撃には、以下3種類があります。

  1. ウイルス感染
  2. 通信傍受
  3. 通信データ改ざん

2)通信傍受対策には、暗号化が効果的です。暗号化処理には、データをやり取りする相手との間に鍵が必要で、共通鍵と公開鍵の2方式があります。共通鍵は、処理負荷が公開鍵に比べ小さく、公開鍵は、鍵を公開する分、処理負荷が大きくなる特徴があります。

3)通信データ改ざん検出には、ハッシュ関数(=要約関数)を使います。ハッシュ関数に送信データを与えて得た値をハッシュ(=要約値)と言います。送信データにハッシュを追加し、受信側でハッシュ再計算、送受ハッシュ一致時がデータ改ざん無しと判定します。

2)と3)は、データ通信が発生するIoT MCUセキィリティ機能です。暗号化、ハッシュ関数は、新サイバー攻撃に対し、次々に新しい防御方式が提案される鉾と盾の関係です。MCU外付けセキュリティデバイス(例えばNXPのEdgeLock SE050など)によるハードウエア策もあります。

PCやスマホのようなウイルス対策ソフト導入が困難なMCUでは、1)のウイルス感染対策に、MCUソフトウェアのアップデートで対応します。総務省は、IoT機器にアップデート機能とID、パスワード変更を促す機能を義務付ける予定です。
※開発者自身で溢れるウイルス状況を常時監視し、ソフトウェア対応するかは不明です。

従来のMCUソフトウェアアップデートは、UART経由やIDE接続で行ってきました。しかし、ネットワーク経由(OTA)やアクセス保護のしっかりしたソフトウェア書換えなどを、1)のアップデートは想定しています。

以上、ごく簡単ですが、MCUセキュリティ対策をまとめました。

総務省の「IoT機器アップデート機能義務化」が、具体的にどのようになるかは不明です。ただ、無線機器の技適規制などを考えると、技術ハードルは、かなりの高さになることが予想できます。

サイバー攻撃対策のIoT MCUセキュリティ
サイバー攻撃対策のIoT MCUセキュリティ

ディアルコアや超高性能汎用MCUの背景

簡単にまとめたMCUセキィリティ対策を、IoT機器へ実装するのは、簡単ではありません。

実現アプローチとしては2つあります。

1つ目は、ディアルコアMCU(例えばNXPのLPC54114、関連投稿:ARM Cortex-M4とM0+アプリケーションコード互換)や、超高性能な汎用MCU(例えばSTMのSTM32G4、関連投稿:STM32G0x専用テンプレート発売1章)が各ベンダから発売中です。

これら新世代MCU発売の背景は、従来MCU処理に加え、法制化の可能性もあるセキュリティ処理実装には、MCU処理能力向上が必須なためです。

ワールドワイドにIoT機器は繋がります。日本国内に限った話ではなく、地球規模のIoT MCUセキュリティ実装に対し、ディアルコアや超高性能汎用MCUなどの新世代MCUでIoT機器を実現するアプローチです。

2つ目が、セキュリティ機能が実装し易いMPU(例えばRaspberry Pi 4など)と、各種センサー処理が得意なMCU(旧世代MCUでも可能)のハイブリッド構成でIoT機器を実現するアプローチです。

NFCを使うLPC8N04のOTA

5/31~6/21の4回に渡り行われたNXPセミコンダクターズ LPC80x WebinarでLPC80xシリーズ概要が解ります(8/16ビットMCUの置換えを狙う32ビットARM Cortex-M0+コア採用のLPC80xシリーズ特徴や商品戦略が解るWebinarスライドは、リンク先からダウンロード可能)。

LPC8xx Family History (Source:Webinar Slides)
LPC8xxは、LPC81x/LPC82xから、2017年高集積LPC84x、2018年価格高効率LPC80xへ展開(出典:Webinar Slides)

LPC8xxファミリは、2016年発売のLPC81x/LPC82xをベースに、2017年にLPC84xで高集積大容量化、2018年はLPC80xで価格効率を上げる方向に発展中です。

関連投稿:LPC80xの価格効率化の方法

ベースとなったLPC810、LPC812、LPC824に対して弊社は、LPC8xxテンプレートを提供中です。このテンプレートは、発展したLPC84xやLPC80xへも適用できると思います。

*  *  *

さて、本投稿は、今後IoT MCUの必須機能となる可能性が高いOTA(Over The Air)について、LPC8N04スライドにその説明がありましたので、速報としてまとめます。

NFCを使うLPC8N04のOTA更新

LPC8N04 は、近距離無線通信(NFC)機能を搭載し15MHz動作のLPC802/LPC804よりもコア速度をさらに8MHzへ下げ、NFCアプリケーション開発に適したMCUです。スマホとNFCで連動する温度センサーロガーの動作例がNXPサイトの動画で見られます。

関連投稿:LPC8N04の特徴

無線ペアリングが簡単にできるNFC搭載MCUは、家電や産業機器の故障診断、パラメタ設定などの分野へ急成長しています。Webinarスライドでは、このNFCを使った電力供給やMCUファームウェア更新方法(OTAテクニカルノート:TN00040)も紹介されています。

IoT MCUには、製品化後にも無線更新できるセキュリティ対策は必須です。OTAはこの実現手段の1つで、具体的にどうすればOTAができるのかがTN00040に簡単ですが記載されています。

前提条件として、LPC8N04のブートROMバージョンが0.14以上であること、OTA実行中は電池かUSBでの電力供給などが必要です。Androidを使ったNFC OTA動作例が下図です。

LPC8N04 FW Update Over NFC (Source:TN00040)
LPC8N04のNFCを使ったOTA更新(出典:TN00040)

更新には、LPC8N04のSBL(Secondary Boot Loader)を使い、通信は暗号化されていますので、OTA中のセキュリティも万全です。OTA用のアプリケーション開発には、通常開発にリビジョン番号(図の1.0.0、1.1.0)付与が必須など様々な制約(オーバーヘッド)があります。

OSを使わないアプリケーション開発の場合、開発者自らがこれらOTAオーバーヘッドの追加が必要になるなど煩雑ですが、決まり文句として納得するか、または、IoT MCU用RTOSとして期待されるAmazon FreeRTOS提供のOTAなどを利用するしかなさそうです。

関連投稿:Amazon、IoTマイコンへFreeRTOS提供

今回はLPC8N04のNFCによるOTAを示しました。IoT無線通信がどの方式になっても、おそらく今回のような方法になると思います。SBL利用や暗号化、更新NG時の対処など留意事項が多く、現場へ行ってIDEで再プログラミングする従来方法よりも洗練されている分、リスクも高くなりそうです。

ルネサス世界初28nm車載マイコンサンプル出荷

ルネサスエレクトロニクスは2018年3月28日、車載マイコンRHファミリに28nmプロセス採用マイコンのサンプル出荷を開始しました。従来の40nmに比べ、高性能、低消費電力で大容量フラッシュメモリ内蔵の世界初、世界最高性能のルネサスオリジナルコアマイコンです。

ルネサスマイコンの命名則

車載マイコンRHファミリは本ブログ対象外です。しかし、車載マイコンが、全てのマイコンを引っ張って発展させているので、注目しています。ここでは、ルネサスマイコンの名前の付け方を簡単に説明します。

先頭に「R」が付くのが新生ルネサス誕生後に発売のマイコンです。汎用マイコンが、図のRL78、RX、RZの3ファミリ、車載アプリケーション特化マイコンが今回発表のRHファミリです。

一部例外はあるものの、殆どがルネサスオリジナルのNon ARMコアマイコンです。

ルネサス汎用マイコン
ルネサス汎用マイコンファミリ。用途、性能に応じてRL78、RX、RZと3ファミリある。(出典:汎用マイクロコンピュータラインアップカタログ)

汎用マイコンだけでも、用途や性能(ルネサスはソリューションと呼ぶ)に応じてRL78、RX、RZと3ファミリあり、さらにそのファミリの中で、RL78/G1x、RL78/F12など細かくシリーズに分かれた名前構造なので、解り難いです。

ちなみに本ブログ対象はRL78ファミリですが、RXも対象に入れるか検討中です。個人レベルでも開発環境を整え易いか否かが基準です。RXファミリの場合、実装メモリが大きいのに無償Cコンパイラの容量制限≦128KBがネックになっています。

他のH8や78K0Rなどは、日立やNEC、三菱電機などルネサスに統合前の各社マイコンの名称です。簡単に旧マイコン名が消える海外ベンダと異なり、旧会社のマイコン名をいつまでもカタログに記載するのも善し悪しです。

ルネサスSynergyは、これらNon ARMコアとは別に他社に遅ればせながら開発したARMコアマイコンファミリです。遅れた分、他社同様の売り方はせず、ルネサスSynergy Software Packageというルネサスが動作保証する専用ライブラリを提供し、開発者がアプリケーションのみを開発する方法で販売中です。個人レベルでは、特に価格で手を出しにくいと思っています。

28nmプロセス、大容量メモリの用途

ルネサスRHファミリで向上された性能を、具体的にどこで使うのかが解る図が、記事にありました。

大容量メモリの利用割合
大容量メモリの利用割合。アプリ増加比率よりも、データ、Safety、Security、Driversの増加比率が大きい。OTA利用により最低2面構成のメモリが必要の可能性もある。(出典:記事)

左側の色分けメモリマップから、アプリケーションのメモリ比率の増加よりも、Data、Safety、Security、Driversの増加比率が大きいことが判ります。つまり、開発するアプリケーションよりも、アプリが使うデータや安全性確保、ドライバーの増加がメモリ増大要因です。このドライバーの中にアプリが使うライブラリなども含まれると思います。

また、図では判りませんがOTA:Over-The-Airには、同じメモリが最低2面必要になるかもしれません(関連投稿は、コチラのIoT端末の脆弱性対応はOTA更新が必須を参照)。OTAに万一失敗しても、最悪更新前に戻るには、更新前と更新後のメモリが必要なのがその理由です。

いずれにしても大容量メモリは必須です。また、プロセス細分化でより低消費電力で高速動作を実現しています。
大容量メモリ実装、プロセス細分化は、車載マイコンに限った話ではありません。汎用マイコンでも同じです。

製造は、世界最大の半導体製造ファウンダリである台湾)TSMCが行うので、パソコンのCPU同様、マイコン:MCUも28nmプロセスへ一気に変わる可能性もあります。

半導体プロセス微細化の懸念

一方で、半導体プロセスの微細化は利益につながるのか2018年3月28日、EE Times Japanという記事もあります。28nmよりも先、10nm以下のモバイルプロセサでの話ですが、マイコンでもいずれ同じ時代が来るでしょう。

汎用マイコン技術は、先行する車載マイコンやモバイル半導体技術をベースに発展します。

先行の動向を知ることは、無駄ではありません。少し先を見越して、隠しコマンドなど遊び心がある工夫をソフトウェア、ハードウェアにこっそり入れておくのも開発者の数少ない楽しみの1つだと思います。

IoTマイコンとセキュリティ

NXPは、2018年3月2日Bluetooth 5/Thread/Zigbee 3.0サポートのコンシューマ/産業IoT向けセキュリティ強化ARMディアルコア(M4とM0+)搭載のKinetis K32W0x MCUを発表しました。

Kinetis K32W0x Block Diagram
Kinetis K32W0x Block Diagram

この新製品は、以前投稿したCypressのPSoC 6:Cortex-M4とCortex-M0+のディアルコア、セキュリティ強化、BLE 5サポートのCypress PSoC 6によく似た製品です。

Cypressに続きNXPもARMディアルコアを採用したことで、強固なセキュリティが必須のIoTマイコンは、シングルコアよりもディアルコア搭載が標準になりそうです。IoTマイコンのセキュリティ関連情報を調査し対処方法を検討します。

PSoC Creator 4.2

PSoC 6搭載評価ボードCY8CKIT-062-BLEPSoC Creator動画では、デュアルコアのIDEでの扱い方やデバッグ方法などがいまいち不明でしたが、最新版PSoC Creator 4.2(2018年2月13日)で正式にPSoC 6がサポートされました。コアにより別々のフォルダにソースコードを作成し、デバッガはどちらかの一方のコアに接続します。

Cypress PSoC Creator 4.2 for PSoC 6 (Source, Creator Release Notes)
Cypress PSoC Creator 4.2 for PSoC 6 (Source, Creator Release Notes)

各コアの役割や機能配分が明確でないと、シングルコアよりもデバッグが大変になりそうです。

色々なセキュリティ強化方法

今年初めから騒がれた投機実行機能の脆弱性起因の対策は、まだ収束していません。Cortex-M系コアはこの脆弱性に関してはセーフでしたが、後追いが宿命のセキュリティ対策には終わりがありません。組込みマイコンにも、常時アップデートができるOTA:Over The Air更新機能が必須になるかもしれません。

Windows更新でも失敗があることを考えると、このOTA機能はリスクが高く、マイコン処理能力や導入コストもかなり必要です。

一方Maximは、セキュア認証専用ICを1ドル未満で提供することを発表しました。言わばMCU固有の指紋を使うことで安価にセキュリティ強化が可能です。評価キットも用意されています。

NXPもA71CHで同様のICと開発キットを用意しています。

少し古い資料ですが2012年11月発表の、“つながる時代のセキュリティ、チップと組み込みOSの連携で守る”を読むと、セキュアブート、効率的な暗号化、仮想化を使ったデータ保護サブシステムをセキュアに分離する技術など、半導体チップで提供されるセキュリティ機能を最大限に活用すべきだとの指針が示されています。

MCUセキュリティ対策の費用対効果

2年から数年でハードウェアが更新される個人情報満載のスマホやユーザ自身がセキュリティ対策を行うパソコンと、組込みマイコン:MCUのセキュリティ対策は、守るべき情報内容、管理運営方法が大きく異なります。

IoTマイコンのソフトウェアやハードウェア開発能力だけでなく、導入するセキュリティ対策の費用対効果を見極めるスキルも必要になりそうです。本命がハッカー次第で変わるなど、セキュリティは厄介で面倒な技術です。

Cortex-Mシリーズはセーフ、他はアウト

新年早々、Intel、AMD、ARMなどの制御デバイス製造各社に激震が発生しました。「CPU投機的実行機能に脆弱性発見」のニュース(Intel、AMD、ARMの対応Windowsの対応Googleの対応)です。

MeltdownとSpectre
MeltdownとSpectre(Source:記事より)

※投機的実行機能:制御を最適化するためのパイプライン化、アウトオブオーダー実行などの「現代的CPU」ハードウエアに実装済みの機能。

※脆弱性:ウイルスが入る可能性がある箇所のこと、セキュリティホールとも呼ばれる。言わばアキレス腱のような箇所。もっと知りたい方は、総務省サイトの基礎知識が良く解ります。

Cortex-Aシリーズも対象、Cortex-Mシリーズは対象外(セーフ)

パイプラインやアウトオブオーダーなどの最適化機能は、殆どの制御コアに搭載されています。従って、このニュースは深刻です。ハードウエアの深い部分の脆弱性だけに、ソフトウエアのOSやパッチなどで対応できるのか、個人的には疑問ですが、セキィリティ専門家に任せるしかないでしょう。

ARMのリアルタイム系Cortex-RやCortex-Aシリーズも対象:アウト!です。
一方、本ブログ掲載のCortex-Mシリーズマイコンは、これら投機的機能が実装されていないので今回は対象外、セーフでした。

IoT端末の脆弱性対応はOTA:Over The Air更新が必須

昨年12月3日投稿のCortex-Mを用いるIoTマイコンへも、Amazon FreeRTOSなどのRTOSが期待されています。今回のような脆弱性への対応には、無線通信によるソフトウエア更新:OTA機能が必須になるでしょう(ソフトウエアには、OSとアプリの両方を含んでほしいという願望も込みです)。

時々発生する自動車リコールも、ハード起因とソフト起因の両方があります。車の場合は、ディーラーへユーザが車を持ち込めば対応できますが、組込み制御の場合は、開発者自身が動作中の現場で対応するのが現状です。今回は、Cortex-Mシリーズはたまたまセーフでしたが、同様のセキュリティ事案への対策を練る必要があると思います。

と言っても、当面できるのは、現場でIDEやUART経由の直接ソフト更新か、または、コチラの記事のような(多分高価な)パッチ配布手段しか無いかもしれません。

RTPatch適用範囲
RTPatch適用範囲(Source:記事、イーソルトリニティ)

Amazon、IoTマイコンへFreeRTOS提供

Amazon:アマゾンがFreeRTOSをカーネルにして、IoT端末とのクラウド接続、セキュリティ確保、将来的にOTA:Over The Airによるアップデート機能をライブラリで提供というニュースが入りました。

嬉しいのは、「FreeRTOS」と「OTA機能がRTOSで提供」されることです。

Amazon FreeRTOS

IoT端末とクラウドを接続するには、IoT通信プロトコルが必要です。BLE:Bluetooth Low EnergyやThreadが有力ですが、国内外の網側事情が異なるため、実質的なIoTプロトコル実装は間違いなく大変です。

もしこのIoT通信機能が、最大手アマゾンの無償ライブラリで提供され、マイコンUARTと同様にIoT Communication APIを使え、しかもセキュリティ対策済みであるならば、IoT端末は爆発的に普及するでしょう。普及の足かせとなっているIoT通信とセキュリティ問題が解決されるからです。

Amazon FreeRTOS
Amazon FreeRTOS利用イメージ (出典:記事、AWS)

現在Amazon FreeRTOSのハードウエアパートナーは、テキサス・インスツルメンツ:TI、マイクロチップ、NXP、STマイクロエレクトロニクスの4社で、NXPは、LPC54018 IoT Module、STMは、STM32L4 Discovery Kit IoT Node評価ボードでサポートするそうです。

NXP、STMいずれもかなり高性能MCU評価ボードを使っていますが、これは高機能IoTエンド端末(≒簡易スマホ)を想定しているからだと思います。FreeRTOSカーネルなので、ROM/RAMが少ない低価格IoTエンド端末にも実装できるハズです。

弊社ブログでも紹介してきたFreeRTOS自身は、様々なベンダの低価格MCUにも実装実績があります。

残念ながら弊社のFreeRTOSサンプルソフトは、NXPのLPCXpresso824-MAX上で完全動作しているとは言えませんが、近いうちにSTMのSTM32F103RB(Cortex-M3:64MHz、ROM/RAM:128KB/20KB)で再チャレンジし、新たにFreeRTOS版のテンプレートを開発できないか検討中です。
※FreeRTOSサンプルソフトは、2020年版に更新しました。LPCXpresso824-MAXサンプルソフトは削除しました。

OTA機能

出荷後の組込みソフトを更新したいことは良くあります。但し、Windows更新でも失敗があるように、技術的にハイリスクで、また更新費用を顧客が負担してくれないこと(ノーリターン)も多いので、悩ましい事柄です。

Amazon FreeRTOSのOTAがRTOS関連のみか、または、RTOSにとってのアプリ、つまり開発ソフトも含むかは不明ですが、たとえRTOSのみであってもOTAが提供されれば好都合です。セキュリティ起因の不具合解消に役立つからです。

従来のベアメタル開発でもOTA関連の資料は、英語版で難解な記事はあります。しかし、私の場合は、結局現地でIDE書き換えの経験が多いです。リクスを少しでも下げたいのもあります。RTOSが機能提供してくれれば、責任転嫁(?)ですが助かります。

弊社FreeRTOSへの取組み

IoTクラウドサービスは、アマゾンのAmazon Web Services IoT:「AWS IoT」が先行し、マイクロソフトの「Azure IoT」、これらを追いかけるグーグルの「Weave」とアップルの「HomeKit」、その後ろにARMの「mbed Cloud」という状況だそうです。アマゾンは最先端を走っているのです。

先行アマゾンが2017年末に発表したAmazon FreeRTOSの詳細は不明ですが、IoT MCUのRTOSにFreeRTOSが有力であるのは、確実になりそうです。

FreeRTOSソフト開発の場合、タスク自体は簡単で単純な初期設定+無限ループ構成です。タスク同期やタスク通信にRTOS APIが使えれば、それ程難しくはないと(今は)考えています。この考え方が、タスクが増えたりプライオリティを変えたりしても正しいか、間違っているかは、実践経験あるのみです。

個人で実践できるFreeRTOS動作環境の構築が、弊社FreeRTOS版テンプレートの目標となりそうです。