(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】制御装置、情報処理装置、および情報処理システム
(51)【国際特許分類】
G06F 21/57 20130101AFI20231225BHJP
G06F 8/654 20180101ALI20231225BHJP
G06F 12/14 20060101ALI20231225BHJP
【FI】
G06F21/57 320
G06F8/654
G06F12/14 510A
(21)【出願番号】P 2021048890
(22)【出願日】2021-03-23
【審査請求日】2023-01-26
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】山岡 新之介
(72)【発明者】
【氏名】橋本 幹生
(72)【発明者】
【氏名】新保 淳
【審査官】岸野 徹
(56)【参考文献】
【文献】特開2020-067835(JP,A)
【文献】特開2007-047993(JP,A)
【文献】特開2021-002081(JP,A)
【文献】米国特許出願公開第2020/0133837(US,A1)
【文献】米国特許出願公開第2007/0038801(US,A1)
【文献】米国特許出願公開第2020/0401688(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 8/654
G06F 12/14
(57)【特許請求の範囲】
【請求項1】
外部との通信を可能にする通信I/Fと、
初期化動作を行う初期化用プログラムを記憶する第1格納領域と、前記初期化動作の後に実行されかつ前記通信I/Fを介して更新用のファームウェアを取得する現用のファームウェアを記憶する第2格納領域と、を有する内蔵不揮発性メモリと、
前記初期化用プログラムおよび前記現用のファームウェアを実行する制御部と、
シリアルバスを経由して自装置と外部不揮発性メモリとを通信可能に接続する外部シリアルフラッシュI/Fと、
前記内蔵不揮発性メモリおよび前記外部不揮発性メモリのアクセス制御設定を固定化するセキュリティモード管理モジュールと、
前記シリアルバスとは異なる経路を通してレベル信号を出力するアクセス制御部と、
を備える制御装置。
【請求項2】
前記外部不揮発性メモリは、
第3格納領域と、
第4格納領域と、
前記第2格納領域、前記第3格納領域、および前記第4格納領域に対して前記
現用のファームウェアの実行時に適用される前記アクセス制御設定を記憶する制御レジスタと、
を備える、請求項1に記載の制御装置。
【請求項3】
前記初期化用プログラムは、前記初期化動作において、前記第2格納領域に対して前記ファームウェアの書き込みを禁止する前記アクセス制御設定を設定し、前記第3格納領域および前記第4格納領域のうち、一方の格納領域に対して前記
更新用のファームウェアの書き込みを許可する前記アクセス制御設定を設定し、他方の格納領域に対して前記
現用のファームウェアの書き込みを禁止する前記アクセス制御設定を設定する、請求項2に記載の制御装置。
【請求項4】
前記セキュリティモード管理モジュールは、前記初期化動作後、前記アクセス制御設定を固定化し、次の前記制御装置の電源投入またはリセット後、前記初期化用プログラムが実行されるまで前記アクセス制御設定の固定化を解除不可能とする、請求項1から3のいずれか一に記載の制御装置。
【請求項5】
前記アクセス制御部は、前記初期化用プログラムの操作により前記セキュリティモード管理モジュールによって前記内蔵不揮発性メモリ並びに前記外部不揮発性メモリの前記アクセス制御設定が固定化されると、前記制御レジスタに対する書き込みを禁止する、請求項2に記載の制御装置。
【請求項6】
前記現用のファームウェアは、前記第3格納領域および前記第4格納領域のうち、前記アクセス制御設定により前記
更新用のファームウェアの書き込みが許可されている格納領域に対して、前記更新用のファームウェアを書き込む、請求項2または3に記載の制御装置。
【請求項7】
前記初期化用プログラムは、さらに、前記第3格納領域または前記第4格納領域に前記更新用のファームウェアが記憶されている場合、前記第2格納領域に記憶される前記現用のファームウェアを、前記第3格納領域および前記第4格納領域のうち古い前記ファームウェアを記憶する格納領域にコピーした後、前記更新用のファームウェアを前記第2格納領域にコピーする、請求項2、3および6のいずれか一に記載の制御装置。
【請求項8】
前記初期化用プログラムは、さらに、稼働実績のない前記更新用のファームウェアによって、前記通信I/Fを介して外部と通信できない場合、前記第3格納領域または前記第4格納領域に記憶される前記現用のファームウェアを、前記第2格納領域にコピーする、請求項7に記載の制御装置。
【請求項9】
制御装置と、外部不揮発性メモリと、を有する情報処理装置であって、
前記制御装置は、
前記情報処理装置の外部との通信を可能にする通信I/Fと、
当該制御装置の初期化動作を行う初期化用プログラムを記憶する第1格納領域と、前記初期化動作の後に実行されかつ前記通信I/Fを介して更新用のファームウェアを取得する現用のファームウェアを記憶する第2格納領域と、を有する内蔵不揮発性メモリと、
前記初期化用プログラムおよび前記現用のファームウェアを実行する制御部と、
シリアルバスを経由して前記制御装置と前記外部不揮発性メモリとを通信可能に接続する外部シリアルフラッシュI/Fと、
前記内蔵不揮発性メモリおよび前記外部不揮発性メモリのアクセス制御設定を固定化するセキュリティモード管理モジュールと、
前記シリアルバスとは異なるレベル信号を出力するアクセス制御部と、
を備え、
前記外部不揮発性メモリは、
第3格納領域と、
第4格納領域と、
前記第2格納領域、前記第3格納領域、および前記第4格納領域に対して前記
現用のファームウェアの実行時に適用されるアクセス制御設定を記憶する制御レジスタと、
を備える、情報処理装置。
【請求項10】
制御装置と、外部不揮発性メモリと、を有する情報処理システムであって、
前記制御装置は、
前記制御装置の外部との通信を可能にする通信I/Fと、
当該制御装置の初期化動作を行う初期化用プログラムを記憶する第1格納領域と、前記初期化動作の後に実行されかつ前記通信I/Fを介して更新用のファームウェアを取得する現用のファームウェアを記憶する第2格納領域と、を有する内蔵不揮発性メモリと、
前記初期化用プログラムおよび前記現用のファームウェアを実行する制御部と、
シリアルバスを経由して前記制御装置と前記外部不揮発性メモリとを通信可能に接続する外部シリアルフラッシュI/Fと、
前記内蔵不揮発性メモリおよび前記外部不揮発性メモリのアクセス制御設定を固定化するセキュリティモード管理モジュールと、
前記シリアルバスとは異なるレベル信号を出力するアクセス制御部と、
を備え、
前記外部不揮発性メモリは、
第3格納領域と、
第4格納領域と、
前記第2格納領域、前記第3格納領域、および前記第4格納領域に対して前記
現用のファームウェアの実行時に適用されるアクセス制御設定を記憶する制御レジスタと、
を備える、情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置に関する。
【背景技術】
【0002】
CPU(Central Processing Unit)によるプログラム実行機能を備えたMCU(Micro Control Unit)等の情報処理装置に内蔵されかつファームウェア(FW)を記憶する内蔵フラッシュメモリ(内蔵不揮発性メモリの一例)を2in1の2面構成とした上で、情報処理装置の起動時のFWの改ざん検証と、当該改ざん検証に連動した内蔵フラッシュメモリに対するHWアクセス制御と、を組み合わせる技術が開発されている。これにより、内蔵フラッシュメモリに記憶される現用のFW(ユーザFW)による、更新用のFWの書き込みを可能にすると同時に、不正なソフトウェア(SW)の侵入時に、内蔵フラッシュメモリに記憶されるFWが全消去されることの防止と、基板上のチップに対する物理アクセスと、の両方の脅威を排除している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、内蔵フラッシュメモリを2in1の2面構成とする技術では、大容量の内蔵フラッシュメモリが必要となり、外部フラッシュメモリ(外部不揮発性メモリの一例)に複数のFWのセットをバックアップ用として保持するスマートメータ等の用途に採用することが困難である。特に、内蔵フラッシュメモリの格納領域が情報機器の動作に必要な1セット分のサイズしかない場合、更新用のFWの適用には、一度内蔵フラッシュメモリ内のプログラム1セットに相当するデータを消去した上で、外部フラッシュメモリから更新FWを情報処理装置内へ転送する必要がある。この動作の前提として、更新用のFWに動作不良が確認された場合におけるロールバック用のFWと更新用のFWの両方が保持されなければならず、バリエーションが少なくなる。
【課題を解決するための手段】
【0005】
実施形態の制御装置は、通信I/Fと、内蔵不揮発性メモリと、制御部と、外部シリアルフラッシュI/Fと、セキュリティ管理モジュールと、アクセス制御部と、を有する。通信I/Fは、外部との通信を可能にする。内蔵不揮発性メモリは、初期化動作を行う初期化用プログラムを記憶する第1格納領域と、初期化動作の後に実行されかつ通信I/Fを介して更新用のファームウェアを取得する現用のファームウェアを記憶する第2格納領域と、を有する。制御部は、初期化用プログラムおよび現用のファームウェアを実行する。外部シリアルフラッシュI/Fは、シリアルバスを経由して自装置と外部不揮発性メモリとを通信可能に接続する外部シリアルフラッシュI/Fと、内蔵不揮発性メモリおよび外部不揮発性メモリのアクセス制御設定を固定化する。アクセス制御部は、シリアルバスとは異なるレベル信号を出力する。
【図面の簡単な説明】
【0006】
【
図1】
図1は、本実施形態にかかる情報処理装置の構成の一例を示す図である。
【
図2】
図2は、本実施形態にかかるMCUの概略動作を示したものであり、HW動作、初期化用プログラム動作、FWの動作をあわせて記載した図である。
【
図3A】
図3Aは、本実施形態にかかる情報処理装置の初期化用プログラムの格納領域の内容の検査と再配置の詳細動作を説明するフローチャートである。
【
図3B】
図3Bは、本実施形態にかかる情報処理装置の初期化用プログラムの格納領域の内容の検査と再配置の詳細動作を説明するフローチャートである。
【
図4】
図4は、本実施形態にかかる情報処理装置の制御用データの詳細を示す図である。
【
図5】
図5は、本実施形態にかかる情報処理装置の格納領域保護テーブルの状態の変化の一例を説明するための図である。
【
図6】
図6は、本実施形態にかかる情報処理装置の格納領域保護テーブルの状態の変化の一例を説明するための図である。
【
図7】
図7は、本実施形態にかかる情報処理装置の格納領域保護テーブルの状態の変化の一例を説明するための図である。
【
図8】
図8は、本実施形態にかかる情報処理装置の格納領域保護テーブルの状態の変化の一例を説明するための図である。
【
図9】
図9は、本実施形態にかかる情報処理装置におけるファームウェアの更新処理の流れの一例を示すフローチャートである。
【
図10】
図10は、本実施形態にかかる情報処理装置におけるファームウェアのロールバック処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【0007】
以下、添付の図面を用いて、本実施形態にかかる制御装置、情報処理装置、および情報処理システムの一例について説明する。
【0008】
図1は、本実施形態にかかる情報処理装置の構成の一例を示す図である。本実施形態にかかる情報処理装置は、
図1に示すように、スマートメータ等であり、MCU(Micro Control Unit)10(制御装置の一例)、外部フラッシュメモリ20(外部不揮発性メモリの一例)、およびセンサ201を有する。
【0009】
本実施形態にかかるMCU10は、
図1に示すように、CPU(Central Processing Unit)101と、内蔵不揮発性メモリ102と、セキュリティモード管理モジュール103と、外部シリアルフラッシュI/F104と、アクセス制御部105と、SRAM(Static Random Access Memory)106と、暗号エンジン107と、ADC(Analog to Digital Converter)108と、I2C/UART109と、を有する。
【0010】
I2C(Inter Integrated Circuit)/UART(Universal Asynchronous Receiver/Transmitter)109は、I2Cによる周辺機器と通信に用いられる。ADC108は、アナログ信号をデジタル信号に変換する。暗号エンジン107は、I2C/UART109により周辺機器に送信する各種データを暗号化する。SRAM106は、各種データを一時的に記憶する揮発性メモリである。また、MCU10は、アンテナ202を介して情報処理装置1と外部との通信を可能にする通信I/F110を備える。
【0011】
内蔵不揮発性メモリ102は、内部フラッシュメモリ等であり、第1格納領域R1および第2格納領域R2を有する。
【0012】
第1格納領域R1は、CPU101のリセット後(または電源投入時)に実行される初期化動作のプログラムである初期化用プログラムを記憶する。また、第1格納領域R1は、制御用データを記憶する。ここで、制御用データは、例えば、情報処理装置1の起動時に実行されかつ外部フラッシュメモリ20に記憶されるファームウェア(FW)の検証用のプログラムである外部フラッシュ上FW検証プログラム、当該外部フラッシュ上FW検証プログラムによるFWの検証に用いられる署名検証用公開鍵、後述する第2格納領域R2、第3格納領域R3および第4格納領域R4のそれぞれに記憶されるFWのバージョン情報、後述する第2格納領域R2、第3格納領域R3および第4格納領域R4のそれぞれに対する書き込みの許可状態を示す状態情報等の各種情報である。初期化用プログラムは、上記制御用データに基づいて後述する第2格納領域R2、第3,4格納領域R3,R4に格納されたファームウェア(FW)の状態を確認し、更新用のFWを格納するために、外部フラッシュメモリ20の第3,4格納領域のうちロールバックに必要な領域を書き込み不可に、そして更新用のFWを取得するための領域を書き込み可能な状態にアクセス制御設定を制御レジスタ21に設定する。さらに、初期化用プログラムの後に行われるFWの実行においてアクセス制御設定が変更されないよう、このアクセス制御状態を固定化する。アクセス制御状態の固定化の結果、アクセス制御部105からは外部フラッシュメモリ20の制御レジスタ21の設定変更を禁止する出力がレベル信号へと出力される。詳細は後述する。
【0013】
第2格納領域R2は、初期化用プログラムによる初期化動作の後に実行されかつ通信I/F110を介して更新用のFWを取得するFWを記憶する。すなわち、第2格納領域R2に記憶されるFWは、現用のFWである。CPU101に対してチップ内でバス接続された第2格納領域R2に対するデータアクセス(プログラムの実行を含む)は、シリアル接続された外部フラッシュメモリ20の第3,4格納領域R3,R4に対するアクセスと比較して高速であり、通信およびデータ取得を行う主機能プログラム(FW)は第2格納領域R2に格納されたものを用いる。現用のFWは、情報処理装置1の主機能であるセンサによる測定や通信を経由した外部とのデータの送受信、そしてやはり通信を経由した更新用のFWの取得と外部フラッシュメモリ20に対する保存を行う。上述のように、FWは、第2格納領域R2に対する書き込み権限を与えられず、書き込み可能な不揮発メモリ領域は、初期化プログラムにより外部フラッシュメモリ20の書き込みが許可に設定された格納領域に限られる。この理由は、一般に通信を行うソフトウェアには脆弱性が混入しやすく、通信経由による不正プログラムの実行が懸念されることから、FWの脆弱性が通信経由で攻撃された結果、不正プログラムが実行された場合においても、プログラムやデータが破壊される範囲を限定し、再起動を行った後に、FWの主機能ならびにFWの更新を再度実行するために必要なプログラムおよびデータを保全するためである。
【0014】
CPU101は、内蔵不揮発性メモリ102の第1格納領域R1および第2格納領域R2に記憶される初期化用プログラム等の各種プログラムを実行する制御部の一例である。外部シリアルフラッシュI/F104は、シリアルバス22を経由してMCU10と外部フラッシュメモリ20とを通信可能に接続する。外部フラッシュメモリ20は、少なくとも上述の第3,4格納領域R3,R4に対応する論理的に分割された格納領域を持つ。また、外部フラッシュメモリ20は、第3,4格納領域毎の書き込みを制御するアクセス制御設定(許可設定または不可(禁止)設定)を記憶する制御レジスタ21を持ち、制御レジスタ21に対する設定の書き込みはシリアルバス22を経由して行われる。そして、アクセス制御部105は、シリアルバス22とは異なるバス(経路の一例)23を通してレベル信号を出力する。アクセス制御部105は、制御レジスタ21のアクセス制御設定を固定化するレベル信号を外部フラッシュメモリ20に出力する。この入力がアクティブな状態では外部フラッシュメモリ20内蔵のハードウェアロジックにより、シリアルバス22を経由した制御レジスタ21に対する書き込み操作は無視される。レベル信号は、MCU10のアクセス制御部105に接続される。初期化用プログラムは、制御レジスタ21に対するアクセス制御設定が完了後、セキュリティモード管理モジュール103にアクセス制御設定の固定化を行うと、以後、内蔵不揮発性メモリ102はすべて書き込み禁止となり、同時にアクセス制御部105のレベル信号の出力がアクティブとなり、以降に実行される第2格納領域R2に記憶される現用のFWの実行中には制御レジスタ21のアクセス制御設定は変更できない。セキュリティモード管理モジュール103は、内蔵不揮発性メモリ102および外部フラッシュメモリのセキュリティを管理するモジュールである。なお、MCU10側の外部シリアルフラッシュI/F104のリードライトにおいては、外部シリアルフラッシュI/F104の内部レジスタにアクセス先のアドレスを含むコマンドと呼ばれるパケットをソフトウェアが書き込み、リードライトリクエストを処理する形式がもっともシンプルなものである。このようなアクセス形式の場合、外部フラッシュメモリ20のメモリ領域(第3,4格納領域ならびに制御レジスタ21)は、MCU10内部のアドレス空間から直接見ることができず、すべてひとつのコマンドレジスタとして見えてしまうため、MCU10内部のメモリマップにおけるアドレス範囲だけでは外部フラッシュメモリ20内の格納領域に対するアクセスを制限できない。上記のレベル信号によるアクセス制御設定の固定化は、シンプルな外部シリアルフラッシュI/F104においてもアクセス制御を可能とするものである。ただし、以下に説明する本実施形態のFW管理方式は、より大規模なHWを必要とするMCU10内のメモリマップのアドレス範囲に基づくアクセス制御においても適用可能である。
【0015】
図2は、本実施形態にかかるMCUの概略動作を示したものであり、HW動作、初期化用プログラム動作、FWの動作をあわせて記載した図である。セキュリティモード管理モジュール103は、MCU10の電源投入またはリセット(再起動)後(ステップS401)のCPU101によるプログラムの実行に先立って全てのアクセス制御設定を解除する(ステップS402)。CPU101は、プログラム実行開始時には、プログラムの実行によるいかなる操作も許容された状態で初期化用プログラムの実行を開始する(ステップS403)。CPU101は、初期化用プログラムの動作により、内蔵不揮発性メモリ102の第2格納領域R2および外部フラッシュメモリ20の各格納領域に対して、上記制御用データに基づく完全性の検証(各格納領域の内容の検査、再配置、格納領域保護テーブルの更新など)を行い(ステップS404)、その結果に基づいて、FWの実行時に適用されるアクセス制御設定を設定し(ステップS405)、当該アクセス制御設定を固定化する(ステップS406)。内蔵不揮発性メモリ102についてはアクセス制御設定を行った時点ではアクセス制御設定は適用されず、初期化用プログラムがセキュリティモード管理モジュール103にアクセス制御設定の固定化以後、はじめてアクセス制御設定が適用される。初期化用プログラムによりセキュリティモード管理モジュール103に対するアクセス制御設定の固定化が行われると、内部ハードウェア信号によりアクセス制御部105が有効化され、レベル信号23出力が非アクティブからアクティブとなり、外部フラッシュメモリ20の制御レジスタ21に対する書き込みが禁止され、アクセス制御設定が固定化された上で、初期化用プログラムからFWに実行が切り替えられる(ステップS407)。アクセス制御設定が一旦固定化されると、次に、CPU101のリセットが実行されかつ初期化用プログラムが実行されるまではアクセス制御設定の固定化は解除不可能となるよう、セキュリティモード管理モジュール103、内蔵不揮発性メモリ102,アクセス制御部105のハードウェア回路が構成される。
【0016】
上記の仕組みにより、初期化用プログラムの初期化動作によるアクセス制御設定後、セキュリティモード管理モジュール103のアクセス制御設定の有効化が行われた後に、内蔵不揮発性メモリ102に格納された現用のFWの誤動作(ソフトウェア脆弱性による不正実行プログラムによる不正動作を含む)により、内蔵不揮発性メモリ102ならびに外部フラッシュメモリ20に記憶される現用のFWならびにロールバック用のFWが消去されたり、改ざんされたりすることを防止できる。
【0017】
本実施形態にかかる外部フラッシュメモリ20は、
図1に示すように、第3格納領域R3、第4格納領域R4、および制御レジスタ21を有する。第3格納領域R3および第4格納領域R4は、第2格納領域R2に記憶されるFWのバックアップ用のFW(古いバージョンのFW)、および更新用のFW(新しバージョンのFW)を記憶可能である。制御レジスタ21は、第3格納領域R3および第4格納領域R4のそれぞれのアクセス制御設定を記憶する。各格納領域の設定情報は後述する格納領域保護テーブルに基づいて決定され、アクセス制御設定が設定される。
【0018】
このような構成を有する情報処理装置1において、初期化用プログラムは、第2格納領域R2のFWについては改ざんを防止するため、現用のFWを格納する第2格納領域R2に対する一切の書き込みを禁止し、外部フラッシュメモリ20の格納領域(第3格納領域R3または第4格納領域R4)のいずれか片方については更新用のFWの書き込みを許可の設定を行い、アクセス制御設定を固定化する。次いで、初期化用プログラムは、第2格納領域R2に格納された現用のFWを実行する(ステップS407)。
【0019】
現用のFWは、通信I/F110を通じた通信等により、通信可能状態を判定およびWE領域(外部フラッシュメモリ20の第3,4格納領域のうち書き込みが許可された格納領域)に記録し(ステップS408:Yes、ステップS409)、外部から更新用のFWを取得し、外部フラッシュメモリ20の書き込みが許可されたWE領域に保存する(ステップS410:Yes、ステップS411)。また、取得したFWの完全性およびバージョン番号を検証するためのデジタル署名も同領域に保存する。もし、FWの不具合等により通信ができない場合もしくはそもそも起動不能の場合(ステップS408:No)は、記録を行わず再起動する(ステップS412)。
【0020】
現用のFWは、更新用のFWの取得後、計測などの主機能に悪影響を及ぼさない時間を避けて再起動を行う(ステップS412)。再起動により、上述した通り、アクセス制御設定の固定化が解除され(ステップS402)、すべてのアクセス制御設定が解除された状態で初期化用プログラムの実行が開始される(ステップS403)。
【0021】
図3Aおよび
図3Bは、本実施形態にかかる情報処理装置の初期化用プログラムの格納領域の内容の検査と再配置の詳細動作を説明するフローチャートである。
図4は、本実施形態にかかる情報処理装置の制御用データの詳細を示す図である。
図5~8は、本実施形態にかかる情報処理装置の格納領域保護テーブルの状態の変化の一例を説明するための図である。初期化用プログラムは、
図4に示す制御用データの格納領域管理テーブルT605の参照により、前回のFWの実行において更新用のFWの格納領域(ここでは、前回書き込み可能であったことを意味するWE領域と表記する。)を認識することができる。
【0022】
制御用データには、FW署名検証用の署名検証用公開鍵602、次回実行FW準備完了フラグ603、ロールバック中フラグ604と、格納領域保護テーブルT605が含まれる。
図5に示す格納領域保護テーブルT605の状態においては、第2格納領域R2にはバージョン番号(Version):1のFWが格納され、前回実行された状態である。格納領域管理テーブルT605の第2格納領域R2にはバージョン番号(Version):1、FWの署名、FWの稼働実績、保護フィールドがそれぞれ記録されている。FWの稼働実績が「+」となっているのは、当該FWを用いて外部との通信が可能であったことを示す。保護のフィールドは、FWの実行中に書き込み可または不可のいずれかであったことを示すものであり、WPは書き込み禁止を示し、WEは書き込み許可を示す。次回実行FW準備完了フラグ603は、格納領域の変更操作を実行中の過度的な状態を管理するためのフラグである。次回実行FW準備完了フラグ603が設定された状態においては、格納領域に対応するエントリにうち、保護フィールドがWPとなっている格納領域の内容は、それぞれの保護フィールドの格納領域のFWのバージョンと、署名と、が一致する。一方、保護フィールドがWEとなっている格納領域の内容は、FWの動作による更新用のFWの書き込みが行われた結果として、書き込み以前の格納領域管理テーブルT605のエントリに保持された署名と、格納領域に保持されたFWの実体に不一致が生じるケースがある。署名検証用公開鍵602は、各格納領域のFWの署名検証に用いる公開鍵である。ロールバック中フラグ604は、FWのロールバック中であることを示すフラグである。
【0023】
以下、
図3Aおよび
図3Bを参照して、
図5の格納領域保護テーブルT605と合致する状態から、更新用のFWの取得がない通常の起動処理における、初期化用プログラムによる各格納領域の内容の検査と再配置処理(
図4のステップS404)の詳細を説明する。実行開始時点の格納領域保護テーブルT605の状態を
図5に示すものとする。
【0024】
はじめに、初期化用プログラムは、ステップS502において、次回実行FW準備完了フラグ603の状態確認が行う。これは、更新用のFWのコピー中に電源断などの障害が生じ、処理が中断した状態からリトライを行うために設けられている。障害がない場合、次回実行FW準備完了フラグ603はセットされた状態である(ステップS503:Yes)。次に、初期化用プログラムは、前回のFW稼働時の通信可否状態を、WP領域の所定アドレスから取得する(ステップS504)。これは前回のFWの動作時にステップS411において記録された情報であり、ここでは正常に通信が行われたものとする(ステップS505:Yes)。さらに、テーブルT605を参照して前回稼働したFWである第2格納領域R2の稼働実績が+であることを確認する(ステップS505:Yes)。次に、初期化用プログラムは、WE領域に前回の実行において現用のFWが取得した更新用のFWの署名が存在するかどうかを確認する(ステップS506)。この場合、更新用のFWがないため、再配置は不要でありステップS523に至り、ステップS404に相当する処理は完了する。初期化用プログラムは、ステップS404の終了後のステップS405においては、格納領域保護テーブルT605の各エントリにある書き込み禁止:WP、書き込み許可:WEの指定に従ってアクセス制御設定を設定し(ステップS405)、固定化し(ステップS406)、前回の起動時と同じFW1が実行される(ステップS407)。
【0025】
以下、次の現用のFW1の実行において、更新用のFW2の取得に成功し、バージョン番号:2を持つFW2とその署名Sig[FW2]がWE領域(第4格納領域R4)に書き込まれた場合の動作を説明する。この場合の詳細動作を説明する。現用のFW1の実行開始時点の格納領域保護テーブルT605の状態を
図5に示すものとする。はじめに、初期化用プログラムは、ステップS502において、次回実行FW準備完了フラグ603の状態確認とステップS504,ステップS505において通信が可能であったかどうかのチェックが行われる、ステップS506~S508において、取得したバージョン番号:2のFW2が、格納領域保護テーブルT605にリストされたFW0,FW1より新しいバージョンであり、そのバージョン番号が正しいこと、FW2に改ざんがないことを、署名用公開鍵606を用いたデジタル署名検証により確認する。署名検証に成功し、かつバージョン番号が現用のFWより新しいことが確認できた更新用のFWが次に実行される第2世代のFWとなる。更新用のFWの検証と最新性の確認に成功すると、次回実行FW準備完了フラグ603がクリアされ、FWのコピー操作が必要となったことが示される(ステップS509)。
【0026】
更新用のFW2を第2格納領域R2にコピーする前の準備として、初期化用プログラムは、ステップS511およびステップS512では、現在、第2格納領域R2に保持されているFW1が、すでに稼働済み確認されたFWのうちで最新であり、かつ保全用のコピーが外部フラッシュメモリ20に存在しないことを確認(判定)する。両方の条件を満たす場合、初期化用プログラムは、第2格納領域R2に格納されたFWを外部フラッシュメモリ20にコピーする保全動作(ステップS513~S515)を実行する。初期化用プログラムは、ステップS513では、コピー先としてFW1より古いFW0を保持する格納領域として、第2格納領域R2の内容を第3格納領域R3にコピーする。初期化用プログラムは、第3格納領域R3へのコピー操作完了後、格納領域保護テーブルT605に格納されたFW1の署名に基づき内容を検証し、正しくコピーが完了した場合に第2格納領域R2に対応する格納領域保護テーブルT605のエントリを第3格納領域R3の格納領域保護テーブルT605のエントリにコピーする(ステップS515)。コピー実行中に電源断が発生した場合でも、次回実行FW準備完了フラグ603がクリアされているため、第2格納領域R2から第3格納領域R3へのコピーと署名検証が正しく完了するまでこの操作が繰り返し行われる。第3格納領域R3の署名検証が正しく完了してはじめて格納領域管理テーブルT605の更新が行われる。格納領域保護テーブルT605の更新が電源断により失敗した場合にも、同様にリトライが行われる。
【0027】
第2格納領域R2のFW1の保全完了後、第4格納領域R4に格納された更新用のFW2を内蔵不揮発性メモリ102の第2格納領域R2にコピーして実行可能とする準備処理がステップS516~S518で行われる。格納領域管理テーブルT605でWEとされた第4格納領域R4に署名検証済みの最新のFW2が格納されていることは、ステップS506~S508において確認されている。初期化用プログラムは、ステップS516では第4格納領域R4のFWを第2格納領域R2にコピーし、第4格納領域R4に保持されている署名に基づいて、第2格納領域R2にコピーされたFW2の検証と確認を行う(ステップS516)。確認に成功するまでリトライが行われる(ステップS517)。確認に成功すると、初期化用プログラムは、WE領域にある更新用のFWの署名について、再度バージョン番号の最新性チェックを行った上でバージョン番号、署名を格納領域保護テーブルT605の第2格納領域R2にコピーする。また、初期化用プログラムは、更新用のFW2については稼働実績を稼働実績なし(-)に設定し、保護を書き込み禁止:WPとする。
【0028】
さらに、コピー元である第4格納領域R4に対応する格納領域保護テーブルT605のエントリに第2格納領域R2のバージョン、署名、稼働実績をコピーした上で保護を書き込み許可:WEとする。これらの処理の完了後、初期化用プログラムは、次回実行FW準備完了フラグ603をセットする(ステップS518)。この状態のFW更新テーブルの内容を
図6に示す。この後にステップS405において格納領域保護テーブルT605の保護に従ったアクセス制御設定がステップS405において行われ、アクセス制御設定がステップS406において固定化される。以上が、FWが更新ありの場合の詳細処理である。
【0029】
ステップS407以降、更新されたFW2が実行される。FWの更新時に起きうる深刻な障害として起動や通信の不能がある。FW2が通信可能である場合は、ステップS409においてWE領域の所定アドレスに通信可能である記録が残される。この情報は、次回の再起動において、初期化用プログラムの実行中のステップS504のステップでチェックされ、通信可能である場合は格納領域保護テーブルT605中の第2格納領域R2の稼働実績のフィールドに反映される。
図7にFW2が稼働に成功した場合の稼働実績が反映された格納領域管理テーブルT605の内容を示す。
【0030】
稼働実績のないFWについて、通信可能である記録が検出されない場合、更新用のFWに不具合が想定され、チェックはS505において行われる。上記のように更新FWを最初に実行する場合には、稼働実績なしとされる(ステップS518および
図6)。更新FWが一度稼働した後に通信成功の記録がない場合はS504において稼働実績が-のままであり、S505においてS510に制御が移る(稼働実績なしと判断される(ステップS505:No))。初期化用プログラムは、稼働実績のあるFWへのロールバックを行い、ロールバック中フラグ604をセットし、次回実行FW準備完了フラグをクリアする(ステップS510)。稼働実績を持たない更新用のFWが実行されているということは、過去に稼働実績のあるFWの保全用のコピーが行われているはずである(ステップS511)。ロールバックにおいては稼働しないFWの保全処理は不要であり、外部フラッシュメモリ20上の動作実績のあるFWを第2格納領域R2にコピーして実行すればよい。初期化用プログラムは、最新のFW以外のFWを実行することを示すロールバック中フラグ604をセットし、コピー状態を管理するための次回実行FW準備完了フラグ603をクリアする。ステップS519~ステップS521の処理は更新の場合(ステップS516~S518)と大部分が同じだが、ロールバック時には格納領域保護テーブルT605のコピー元エントリの内容を、第2格納領域R2に稼働実績のフィールドとあわせてコピーすること(ステップS521)が異なる。
【0031】
本実施形態のMCU10の内蔵不揮発性メモリ102と外部フラッシュメモリ20を併用する方式では、HWコストについて、ビットコストが小さい外部フラッシュメモリ20を用いることで、MCU10の面積を縮小するコスト削減がチップ数増のコスト増を上回ればコスト削減効果が得られる。一方で、装置製造における作業ステップの観点からは、MCU10の内蔵不揮発性メモリ102と外部フラッシュメモリ20の両方に書き込みが必要となる場合、コスト増の要素になる。すでに説明した初期化用プログラムの動作は、MCU10の内蔵不揮発性メモリ102のみに制御用データおよび出荷時FWであるFW0を書き込んでおけば、外部フラッシュメモリ20のデータについてはあらかじめ書き込んでおく必要がなく、外部フラッシュメモリ20を使用した場合に懸念される、装置製造の作業ステップ増を回避できる。
【0032】
装置製造において、内蔵不揮発性メモリ102の第2格納領域R2には初期出荷用FWであるFW0が書き込まれる。格納領域保護テーブルT605には、
図8に示す第2格納領域R2のみFW0が実績ありとされた内容がMCU10の初期化時に書き込まれる。同様に、署名検証用公開鍵602もあらかじめ書き込まれる。次回実行FW準備完了フラグ603はセットされ、ロールバック中フラグ604はクリアの状態が書き込まれる。外部フラッシュメモリ20は何も書き込まれないブランクの状態でそれぞれ装置内に組み込まれる。この状態で装置が動作すると、ステップS403までの動作が通常通り行われる。ステップS503では次回実行FW準備完了フラグ603がセットされており、ステップS505のチェックでは稼働実績ありと設定されているため、ステップS506に進む。外部フラッシュメモリ20はブランクの状態であり、更新用のFWおよび署名は存在しないため、ステップS523を経てステップS404のステップを終了する。初期化用プログラムは、格納領域保護テーブルT605の各格納領域に対応の保護に従ったアクセス制御設定を行い(ステップS406)、アクセス制御設定を固定化し(ステップS407)、第2格納領域R2のFW0を実行する。その後、FW0が動作して通信経由で更新用のFWが取得できた場合、次の初期化用プログラムの動作によりFW0は第3格納領域R3に保全され、結果として
図5に示す状態に至る。このように、外部フラッシュメモリ20に対する書き込みを行うことなく、MCU10の内蔵不揮発性メモリ102のみに初期出荷用のFW0が書き込まれた状態から、通常の運用を行うことで現用のFWであるFW1とロールバック用のFW0の両方を保持する状態が実現可能であり、これは通常のFWの更新機能にわずかな追加ステップを設けるだけで実現可能である。
【0033】
本実施形態では、1セット分の主機能のFWを格納するだけの内蔵不揮発性メモリ102を持つMCU10と外部フラッシュメモリ20の組み合わせにおいて、主機能のFWの動作により、更新用のFWが外部フラッシュメモリ20の書き込み可能領域に取得されたとき、FWの更新時に、内蔵不揮発性メモリ102の内容を一度外部フラッシュメモリ20の不要な格納領域に保全のためコピーした上で、更新用のFWを内蔵不揮発性メモリ102にコピーして、FWの実行時に設定変更不能なアクセス制御機能を備える。これによって、1セット分の主機能のFWを格納するだけの内蔵不揮発性メモリ102を持つMCU10において、ロールバック用のFWの破壊を確実に防止できることに加えて、装置製造時の初期出荷用のFWの書き込みがMCU10のみであっても、ロールバック用の更新用のFWを外部フラッシュメモリ20に保全することで、機器製造時の外部フラッシュメモリ20への書込み作業を軽減する効果が得られる。
【0034】
図9は、本実施形態にかかる情報処理装置におけるファームウェアの更新処理の流れの一例を示すフローチャートである。次に、
図9を用いて、本実施形態にかかる情報処理装置におけるFWの更新処理の流れの一例について説明する。
【0035】
MCU10の電源が投入されると、CPU101は、内蔵不揮発性メモリ102の第1格納領域R1に記憶されるブートプログラムを実行して、内蔵不揮発性メモリ102の第2格納領域R2および外部フラッシュメモリ20の第3格納領域R3への書き込みを禁止するライトプロテクトを設定する(ステップS201)。さらに、ブートプログラムは、内蔵不揮発性メモリ102の第1格納領域R1に記憶される初期化用プログラムを起動させる(ステップS201)。
【0036】
次に、初期化用プログラムによる初期化動作後、FWIの動作により、更新用のFWI+1を取得し、外部フラッシュメモリ20の第4格納領域R4に保存し、MCU10を再起動させる(ステップS202)。
【0037】
MCU10が再起動されると、CPU101は、内蔵不揮発性メモリ102の第1格納領域R1に記憶される初期化用プログラムを実行する。初期化用プログラムは、初期化動作により、外部フラッシュメモリ20の第4格納領域R4に記憶される更新用のFWI+1の署名検証を実行する(ステップS203)。更新用のFWI+1が正当であることが確認されると、初期化用プログラムは、第2格納領域R2に記憶される現用のFWIを、外部フラッシュメモリ20の第3格納領域R3に保存し、その後、内蔵不揮発性メモリ102の第2格納領域R2に対して、更新用のFWI+1を書き込む(ステップS203)。
【0038】
さらに、初期化用プログラムは、第2格納領域R2および第3格納領域R3に対してFWの書き込みを禁止するアクセス制御設定を設定し、かつ第4格納領域R4に対して更新用のFWI+2の書き込みを許可するアクセス制御設定を設定する(ステップS204)。また、セキュリティモード管理モジュール103により、第2格納領域R2、第3格納領域R3、および第4格納領域R4に対するアクセス制御設定を固定化(有効化)する。その後、CPU101は、内蔵不揮発性メモリ102の第2格納領域R2に記憶されるFWI+1を実行する(ステップS204)。
【0039】
図10は、本実施形態にかかる情報処理装置におけるファームウェアのロールバック処理の流れの一例を示すフローチャートである。
図10を用いて、一例について説明する。
【0040】
MCU10の電源が投入されると、CPU101は、内蔵不揮発性メモリ102の第1格納領域R1に記憶されるブートプログラムを実行する(ステップS301)。ブートプログラムは、内蔵不揮発性メモリ102の第2格納領域R2に記憶されるFWI+1の動作を確認し、当該FWI+1が動作不良である場合、外部フラッシュメモリ20の第3格納領域R3に記憶される古いバージョンのFWIの動作を確認し、当該FW:Iを、第2格納領域R2に記憶されるFWI+1に上書きする(ステップS301)。
【0041】
次に、CPU101は、第2格納領域R2に記憶されるFWIを実行して、当該FWIの動作により、更新用のFWI+2を取得し、当該取得した更新用のFWI+2を、第3格納領域R3および第4格納領域R4のうち現用のFWIの第3格納領域R3に書き込み、MCU10を再起動させる(ステップS302)。
【0042】
MCU10が再起動されると、CPU101は、内蔵不揮発性メモリ102の第1格納領域R1に記憶される初期化用プログラムを実行して、外部フラッシュ上FW検証プログラムによって、外部フラッシュメモリ20の第3格納領域R3に記憶される更新用のFWI+2の署名検証を実行する(ステップS303)。更新用のFWI+2が正当であることが確認されると、初期化用プログラムは、第2格納領域R2に記憶される現用のFWIを、外部フラッシュメモリ20の第4格納領域R4に保存し、その後、内蔵不揮発性メモリ102の第2格納領域R2に対して、第3格納領域R3に記憶される更新用のFWI+2を書き込む(ステップS303)。
【0043】
さらに、初期化用プログラムは、第2格納領域R2および第4格納領域R4に対するFWの書き込みを禁止するアクセス制御設定を設定し、かつ第3格納領域R3に対する更新用のFWの書き込みを許可するアクセス制御設定を設定する(ステップS303)。また、セキュリティモード管理モジュール103は、第2格納領域R2、第3格納領域R3、および第4格納領域R4に対するアクセス制御設定を固定化する。その後、CPU101は、内蔵不揮発性メモリ102の第2格納領域R2に記憶されるFWI+2を実行する(ステップS304)。
【0044】
このように、本実施形態にかかる情報処理装置1によれば、第2格納領域R2に記憶される現用のFWのロールバック用のFWが外部フラッシュメモリ20に残るので、第4格納領域R4に書き込まれる更新用のFWの動作不良が確認された場合におけるロールバック用のFWのバリエーションを増やすことができる。また、大容量の内蔵不揮発性メモリ102が必要なくなり、外部フラッシュメモリ20に複数のFWのセットをバックアップ用として保持する必要がなくなり、情報処理装置1をスマートメータ等の用途にも採用可能となる。
【0045】
本実施形態は、1セット分の主機能のFWを格納するだけの内蔵不揮発性メモリ102を持つMCU10と外部フラッシュメモリ20の組み合わせにおいて、主機能のFWの動作により、更新用のFWが外部フラッシュメモリ20の書き込み可能領域に取得されたとき、FWの更新時に、内蔵不揮発性メモリ102の内容をいったん外部フラッシュメモリ20の不要な格納領域に保全のためコピーしたうえで、更新用のFWを内蔵不揮発性メモリ102にコピーして、FWの実行時に設定変更不能なアクセス制御機能を備える。これによって、1セット分の主機能のFWを格納するだけの内蔵不揮発性メモリ102を持つMCU10において、ロールバック用のFWの破壊を確実に防止できることに加えて、装置製造時の初期のFWの書き込みがMCU10のみであっても、ロールバック用の更新用のFWを外部フラッシュメモリ20に保全することで、機器製造時の外部フラッシュメモリ20への書込み作業を軽減する効果が得られる。
【0046】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0047】
1 情報処理装置
10 MCU
20 外部フラッシュメモリ
21 制御レジスタ
22 シリアルバス
23 バス
101 CPU
102 内蔵不揮発性メモリ
103 セキュリティモード管理モジュール
104 外部シリアルフラッシュI/F
105 アクセス制御部
106 SRAM
107 暗号エンジン
108 ADC
109 I2C/UART
110 通信I/F
201 センサ
R1 第1格納領域
R2 第2格納領域
R3 第3格納領域
R4 第4格納領域