(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024140999
(43)【公開日】2024-10-10
(54)【発明の名称】IoTネットワークシステム、IoTデバイス、および、IoTデバイスのファームウェア更新方法
(51)【国際特許分類】
G06F 21/57 20130101AFI20241003BHJP
H04L 9/32 20060101ALI20241003BHJP
G06F 21/64 20130101ALI20241003BHJP
【FI】
G06F21/57
H04L9/32 200B
H04L9/32 200E
G06F21/64
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023052415
(22)【出願日】2023-03-28
(71)【出願人】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】100122529
【弁理士】
【氏名又は名称】藤枡 裕実
(74)【代理人】
【識別番号】100135954
【弁理士】
【氏名又は名称】深町 圭子
(74)【代理人】
【識別番号】100119057
【弁理士】
【氏名又は名称】伊藤 英生
(74)【代理人】
【識別番号】100131369
【弁理士】
【氏名又は名称】後藤 直樹
(74)【代理人】
【識別番号】100171859
【弁理士】
【氏名又は名称】立石 英之
(72)【発明者】
【氏名】木下 靖夫
(72)【発明者】
【氏名】嘉瀬 悠太
(72)【発明者】
【氏名】高橋 憲介
(72)【発明者】
【氏名】高田 憲一
(72)【発明者】
【氏名】福永 正剛
(72)【発明者】
【氏名】平野 晋健
(57)【要約】
【課題】IoTデバイスに実装したファームウェアの更新に係るセキュリティを高める。
【解決手段】IoTネットワークシステム1は、IoTデバイス2とホストサーバ3を含む。IoTデバイス2に実装したファームウェア200の更新に係るセキュリティを高めるために、IoTネットワークシステム1では、ファームウェア200を最新バージョンに更新する更新ファイル30を取得するホストサーバ3の正当性を検証する処理と、ホストサーバ3から取得した更新ファイル30の正当性を検証する処理を、IoTデバイス2に実装したセキュアエレメント21に行わせている。
【選択図】
図2
【特許請求の範囲】
【請求項1】
IoTデバイスとホストサーバから少なくとも構成され、
前記IoTデバイスは、ファームウェアを格納するMCUと、前記ファームウェアの更新を管理するファームウェア更新モジュールと、公開鍵を用いて電子署名を検証する機能を備えたセキュアエレメントを含み、
前記ホストサーバは、前記ファームウェアを最新バージョンに更新する更新ファイルと認証局が発行したサーバ証明書を記憶し、
前記IoTデバイスの前記MCUが、前記ホストサーバから前記サーバ証明書を取得し、前記セキュアエレメントが、前記認証局の公開鍵を用いて、前記サーバ証明書の電子署名を検証し、
前記ファームウェア更新モジュールが、前記ホストサーバから前記更新ファイルを取得し、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した前記更新ファイルのハッシュ値と前記更新ファイルの電子署名を検証する、
ことを特徴とするIoTネットワークシステム。
【請求項2】
前記ファームウェア更新モジュールは、前記更新ファイルに加えて、前記更新ファイルを用いて更新した更新後の前記ファームウェアの電子署名を前記ホストサーバから取得し、前記ファームウェア更新モジュールが、前記ファームウェアを更新すると、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した更新後の前記ファームウェアのハッシュ値と更新後の前記ファームウェアの電子署名を検証する、
ことを特徴とする、請求項1に記載したIoTネットワークシステム。
【請求項3】
ファームウェアを格納するMCUと、前記ファームウェアの更新を管理するファームウェア更新モジュールと、公開鍵を用いて電子署名を検証する機能を備えたセキュアエレメントを含み、
前記MCUが、前記ファームウェアを最新バージョンに更新するための更新ファイルを記憶しているホストサーバからサーバ証明書を取得し、前記セキュアエレメントが、認証局の公開鍵を用いて、前記サーバ証明書の電子署名を検証し、
前記ファームウェア更新モジュールが、前記ホストサーバから前記更新ファイルを取得し、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した前記更新ファイルのハッシュ値と前記更新ファイルの電子署名を検証する、
ことを特徴とするIoTデバイス。
【請求項4】
前記ファームウェア更新モジュールは、前記更新ファイルに加えて、前記更新ファイルを用いて更新した更新後の前記ファームウェアの電子署名を前記ホストサーバから取得し、前記ファームウェア更新モジュールが、前記ファームウェアを更新すると、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した更新後の前記ファームウェアのハッシュ値と更新後の前記ファームウェアの電子署名を検証する、
ことを特徴とする、請求項3に記載したIoTデバイス。
【請求項5】
IoTデバイスとホストサーバで実行される方法であって、前記IoTデバイスは、ファームウェアを格納するMCUと、前記ファームウェアの更新を管理するファームウェア更新モジュールと、公開鍵を用いて電子署名を検証する機能を備えたセキュアエレメントを含み、前記ホストサーバは、前記ファームウェアを最新バージョンに更新する更新ファイルと認証局が発行したサーバ証明書を記憶し、
前記方法は、
前記IoTデバイスの前記MCUが、前記ホストサーバから前記サーバ証明書を取得するステップ、
前記セキュアエレメントが、認証局の公開鍵を用いて、前記サーバ証明書の電子署名を検証するステップ、
前記ファームウェア更新モジュールが、前記ホストサーバから前記更新ファイルを取得するステップ、
前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した前記更新ファイルのハッシュ値と前記更新ファイルの電子署名を検証するステップ、
を含むことを特徴とするIoTデバイスのファームウェア更新方法。
【請求項6】
前記ファームウェア更新モジュールは、前記更新ファイルに加えて、前記更新ファイルを用いて更新した更新後の前記ファームウェアの電子署名を前記ホストサーバから取得し、
前記ファームウェア更新モジュールが、前記ファームウェアを更新すると、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した更新後の前記ファームウェアのハッシュ値と更新後の前記ファームウェアの電子署名を検証するステップ、
を含むことを特徴とする、請求項5に記載したIoTデバイスのファームウェア更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願で開示する発明は、IoTデバイスのファームウェアを更新する技術分野に関する。
【背景技術】
【0002】
物理的オブジェクトであるモノによりネットワークを構成するIoT(Internet of Things)が普及している。IoTを構成するモノとなるデバイスは、IoTデバイスと呼ばれている。IoTデバイスは、IoTネットワークを介して、サーバとネットワーク通信する。このため、IoTデバイスには適切なセキュリティ対策が求められる。
【0003】
IoTデバイスは、屋外に設置されることが多い。例えば、IoTデバイスの1つであるスマートメーターは、スマートメーターに表示される指示数を目視で確認し易い位置に設置される。このため、IoTデバイスでは、なりすましやデータの改ざんの発生リスクが高くなる。IoTデバイスのなりすましを防ぐためには、IoTデバイスが通信相手を認証するのが一般的で、データの改ざんを防ぐために、IoTデバイスと通信相手の間でやりとりされるデータを暗号化するのが一般的である(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
IoTデバイスには、IoTデバイスを制御するファームウェアが実装される。ファームウェアに脆弱性が見つかったIoTデバイスのセキュリティは低くなる。よって、IoTデバイスに実装したファームウェアの脆弱性が見つかると、IoTデバイスに実装したファームウェアを更新することになる。
【0006】
しかし、IoTデバイスに実装したファームウェアの更新に係るセキュリティが低いと、マルウェアや不正に改造されたファームウェアがIoTデバイスに書き込まれるリスクが高くなる。そこで、本願では、IoTデバイスに実装したファームウェアの更新に係るセキュリティを高めることを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決する第1発明は、Iotデバイスとホストサーバから少なくとも構成されるIoTネットワークシステムである。
第1発明に係るIoTネットワークシステムにおいて、前記Iotデバイスは、ファームウェアを格納するMCUと、前記ファームウェアの更新を管理するファームウェア更新モジュールと、公開鍵を用いて電子署名を検証する機能を備えたセキュアエレメントを含む。前記ホストサーバは、前記ファームウェアを最新バージョンに更新する更新ファイルと認証局が発行したサーバ証明書を記憶する。
第1発明に係るIoTネットワークシステムでは、前記IoTデバイスの前記MCUが、前記ホストサーバから前記サーバ証明書を取得し、前記セキュアエレメントが、前記認証局の公開鍵を用いて、前記サーバ証明書の電子署名を検証することで、前記ホストサーバの正当性が検証される。
更に、第1発明に係るIoTネットワークシステムでは、前記ファームウェア更新モジュールが、前記ホストサーバから前記更新ファイルを取得し、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した前記更新ファイルのハッシュ値と前記更新ファイルの電子署名を検証することで、前記更新ファイルの正当性が検証される。
更に、第1発明に係るIoTネットワークシステムでは、前記更新ファイルを用いて更新した更新後の前記ファームウェアの正当性を検証できるように、前記ファームウェア更新モジュールは、前記更新ファイルに加えて、更新後の前記ファームウェアの電子署名を前記ホストサーバから取得し、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した更新後の前記ファームウェアのハッシュ値と更新後の前記ファームウェアの電子署名を検証することが望ましい。
【0008】
上述した課題を解決する第2発明は、ファームウェアを格納するMCUと、前記ファームウェアの更新を管理するファームウェア更新モジュールと、公開鍵を用いて電子署名を検証する機能を備えたセキュアエレメントを含むIoTデバイスである。
第2発明に係るIoTデバイスでは、前記MCUが、前記ファームウェアを最新バージョンに更新するための更新ファイルを記憶しているホストサーバからサーバ証明書を取得し、前記セキュアエレメントが、認証局の公開鍵を用いて、前記サーバ証明書の電子署名を検証する。
更に、第2発明に係るIoTデバイスでは、前記ファームウェア更新モジュールが、前記ホストサーバから前記更新ファイルを取得し、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した前記更新ファイルのハッシュ値と前記更新ファイルの電子署名を検証する。
更に、第2発明に係るIoTデバイスでは、前記ファームウェア更新モジュールは、前記更新ファイルに加えて、前記更新ファイルを用いて更新した更新後の前記ファームウェアの電子署名を前記ホストサーバから取得し、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した更新後の前記ファームウェアのハッシュ値と更新後の前記ファームウェアの電子署名を検証することが望ましい。
【0009】
上述した課題を解決する第3発明は、Iotデバイスとホストサーバで実行されるIoTデバイスのファームウェア更新方法である。
第3発明に係る方法では、前記Iotデバイスは、ファームウェアを格納するMCUと、前記ファームウェアの更新を管理するファームウェア更新モジュールと、公開鍵を用いて電子署名を検証する機能を備えたセキュアエレメントを含む。ホストサーバは、前記ファームウェアを最新バージョンに更新する更新ファイルと認証局が発行したサーバ証明書を記憶する。
第3発明に係る方法は、
前記IoTデバイスの前記MCUが、前記ホストサーバから前記サーバ証明書を取得するステップ、前記セキュアエレメントが、認証局の公開鍵を用いて、前記サーバ証明書の電子署名を検証するステップ、前記ファームウェア更新モジュールが、前記ホストサーバから前記更新ファイルを取得するステップ、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した前記更新ファイルのハッシュ値と前記更新ファイルの電子署名を検証するステップ、前記更新ファイルの電子署名の検証に成功すると、前記ファームウェア更新モジュールが、前記更新ファイルを用いて前記ファームウェアを更新するステップ、
を含む。
更に、第3発明に係る方法では、前記ファームウェア更新モジュールは、前記更新ファイルに加えて、前記更新ファイルを用いて更新した更新後の前記ファームウェアの電子署名を前記ホストサーバから取得し、前記セキュアエレメントが、前記サーバ証明書の公開鍵を用いて、前記ファームウェア更新モジュールが計算した更新後の前記ファームウェアのハッシュ値と更新後の前記ファームウェアの電子署名を検証するステップを含むことが望ましい。
【発明の効果】
【0010】
本願で開示した発明では、IoTデバイスに実装したファームウェアの更新に係るセキュリティを高めるために、ファームウェアを最新バージョンに更新する更新ファイルを取得するホストサーバの正当性を検証する処理と、ホストサーバから取得した更新ファイルの正当性を検証する処理を、IoTデバイスに実装したセキュアエレメントに行わせている。
【図面の簡単な説明】
【0011】
【
図2】IoTデバイスとホストサーバそれぞれのブロック図を示した図。
【
図4】IoTネットワークシステムで実行される処理を説明する第1図。
【
図5】IoTネットワークシステムで実行される処理を説明する第2図。
【発明を実施するための形態】
【0012】
ここから,本発明に係る実施形態について記載する。本実施形態は,本発明の理解を容易にするためのものであり,本発明は,本実施形態に限定されるものではない。また,特に断りのない限り,図面は,本発明の理解を容易にするために描かれた模式的な図である。
【0013】
図1では、IoTネットワークシステム1を示している。
図1で図示したIoTネットワークシステム1は、収集対象となるデータをデジタルで計量する機能を備えたIoTデバイス2と、IoTデバイス2を管理するホストサーバ3を含んでいる。IoTデバイス2は、IoTデバイス2のIoTネットワーク4を介してホストサーバ3と接続している。
【0014】
本実施形態では、IoTデバイス2をスマートメーターとして示しているが、本願で開示する発明を適用可能なIoTデバイス2はスマートメーターに限定されない。家庭用電化製品、各種センサ類など、スマートメーターを含む様々なIoTデバイス2に本発明を適用できる。
【0015】
図1では、IoTネットワーク4の一例として、AMIネットワーク(AMI: Advanced Metering Infrastructure)を示している。
図1で図示したIoTネットワーク4は、FAN40(Field Area Network)、1:N通信ネットワーク41およびPLCネットワーク42(PLC: Power Line Communications)を含んでいる。FAN40に含まれるIoTデバイス2(スマートメーター)の通信方式は、無線マルチホップ方式になる。FAN40に含まれるIoTデバイス2(スマートメーター)は、電柱に設置された集約装置(コンセントレーター)を介してホストサーバ3と接続する。1:N通信ネットワーク41に含まれるIoTデバイス2(スマートメーター)の通信方式は、移動体通信(例えば、5G)になる。PLCネットワーク42に含まれるIoTデバイス2(スマートメーター)の通信方式はPLCになる。PLCネットワーク42に含まれるIoTデバイス2(スマートメーター)は、建物に設置された集約装置を介してホストサーバ3と接続する。
【0016】
IoTネットワークシステム1に含まれるIoTデバイス2は、IoTデバイス2が収集するデータを計測するセンシング機能を備える。当然のことながら、IoTデバイス2が備えるセンシング機能は、IoTデバイス2が収集するデータによって異なる。IoTデバイス2をスマートメーターとする場合、IoTデバイス2が収集するデータは電力で、IoTデバイス2は、電力の計測に必要なセンシング機能を備える。
【0017】
IoTデバイス2には、IoTデバイス2を制御するソフトウェアであるファームウェア200が実装される。ファームウェア200に脆弱性が見つかったとき、ファームウェア200に新たな機能を追加するとき、または、IoTデバイス2の性能を向上させるときなど、IoTデバイス2に実装したファームウェア200の更新が必要になる。
図1で示したIoTネットワークシステム1において、ファームウェア200の更新ファイル30を記憶する装置はホストサーバ3になる。IoTデバイス2は、ホストサーバ3が最新バージョンにファームウェア200を更新するための更新ファイル30を記憶している場合、ホストサーバ3から更新ファイル30を取得して、IoTデバイス2に実装されているファームウェア200を更新する。
【0018】
IoTデバイス2に実装したファームウェア200の更新ファイル30は、公衆網となるIoTネットワーク4を流れるデータになる。このため、IoTデバイス2に実装したファームウェア200の更新に係るセキュリティを高めることが必要とされる。そこで、本願で開示する発明では、外部からの暗号解読攻撃に対して高い耐タンパー性を有する半導体製品であるセキュアエレメント21をIoTデバイス2に実装させ、ファームウェア200の更新に係る処理にセキュアエレメント21を利用することで、IoTデバイス2に実装したファームウェア200の更新に係るセキュリティを高めている。
【0019】
ここから、
図1で図示したIoTネットワークシステム1を構成するIoTデバイス2とホストサーバ3についてそれぞれ説明する。
図2では、IoTデバイス2とホストサーバ3それぞれのブロック図を示している。
図3では、セキュアエレメント21のブロック図を示している。
【0020】
まず、IoTシステムを構成するIoTデバイス2について説明する。
図2で示した通り、IoTネットワークシステム1を構成するIoTデバイス2は、MCU20(Micro Controller Unit)、通信モジュール23、センシングモジュール24、ファームウェア更新モジュール22、および、セキュアエレメント21を備えている。
【0021】
IoTデバイス2が備えるMCU20は、CPU20a(Central Processing Unit)、各種のメモリおよび周辺機能20e(Peripherals)を1つのチップに集積した半導体回路である。IoTデバイス2が備えるMCU20は、メモリとして、電気的に書き換えできない不揮発性メモリであるROM20b(Read Only Memory),電気的に書き換えできる揮発性メモリであるRAM20c(Random Access Memory)、および、電気的に書き換えできる不揮発性メモリであるNVM20d(Non-Volatile Memory)を備える。MCU20が備えるNVM20dが、IoTデバイス2のファームウェア200を記憶するメモリになる。
【0022】
通信モジュールは、IoTネットワーク4に対応した通信方式を行うための回路である。センシングモジュール24は、IoTデバイス2が収集するデータを計測する回路である。IoTデバイス2をスマートメーターとする場合、通信モジュール23は、無線マルチホップ方式で通信を行う回路、移動体通信(例えば、5G)で通信を行う回路、PLCで通信を行う回路のいずれかになる。また、センシングモジュール24は、電流センサおよび電力センサなどを備え、電力を計測する回路になる。
【0023】
ファームウェア更新モジュール22は、ファームウェア200の更新に係る処理を実施するように構成したハードウェアモジュール(ICチップ)である。ファームウェア更新モジュール22は、セキュアエレメント21と連携して、IoTデバイス2に実装したファームウェア200の更新に係る検証処理を実行する。MCU20を動作させるソフトウェアによりファームウェア更新モジュール22を構成できるが、ファームウェア更新モジュール22をMCU20とは別のハードウェアで実現することが望ましい。
【0024】
セキュアエレメント21は、外部からの暗号解読攻撃に対して高い耐タンパー性を有するICチップである。セキュアエレメント21は、IoTデバイス2の基板に組み込まれる。ICチップの形態をなしたセキュアエレメント21をIoTデバイス2の基板に組み込むこともできる。
図3では、セキュアエレメント21の発行がし易いように、セキュアエレメント21の形態をSIMカードの形態にしている。SIMカードの形態になっているセキュアエレメント21は、ICカードの状態で発行できる。
【0025】
IoTデバイス2が備えるMCU20と同様に、セキュアエレメント21は、CPU21a、ROM21b、RAM21c、NVM21d、コプロセッサ21e、および、周辺機能21fを備えている。セキュアエレメント21が備えるNVM21dには、ファームウェア200の更新に係る認証手続きで使用される秘密情報が記憶される。セキュアエレメント21のROM21bには、IoTデバイス2のファームウェア200の更新に係る認証手続きに係る処理を、セキュアエレメント21のCPU21aを動作させるためのコンピュータプログラムが実装される。
【0026】
セキュアエレメント21は、CPU21aを動作させるためのコンピュータプログラムで実現される機能として、公開鍵を用いて電子署名を検証する機能を備える。公開鍵を用いて電子署名を検証する機能は、セキュアエレメント21に実装するコマンドで実現するのが一般的である。
【0027】
ホストサーバ3は、汎用のサーバを用いて実現される装置で、IoTネットワーク4に接続するIoTデバイス2に所定のサービスを提供する。本実施形態において、ホストサーバ3は、IoTデバイス2に実装されたファームウェア200の更新に用いる情報として、認証局が発行したホストサーバ3のサーバ証明書31を記憶する。IoTデバイス2に実装されたファームウェア200の更新が必要な場合、IoTデバイス2に実装されたファームウェア200を最新バージョンに更新するための更新ファイル30を記憶する。
【0028】
ホストサーバ3は、IoTデバイス2からリクエストされた情報をIoTデバイス2へ送信する。IoTデバイス2からリクエストされた情報がサーバ証明書31の場合、ホストサーバ3は、サーバ証明書31をIoTデバイス2へ送信する。IoTデバイス2からリクエストされた情報が更新ファイル30の場合、ホストサーバ3は、更新ファイル30、更新ファイル30の電子署名、および、更新ファイル30を適用して更新した更新後のファームウェア200の電子署名をIoTデバイス2へ送信する。
【0029】
ここから、
図1で示したIoTネットワークシステム1で実行される処理を説明する。
図4は、IoTネットワークシステム1で実行される処理を説明する第1図である。
図5は、IoTネットワークシステム1で実行される処理を説明する第2図である。
図4,5の説明は、本願で開示するIoTデバイス2のファームウェア更新方法の説明も兼ねている。
【0030】
まず、
図4で示した処理について説明する。IoTデバイス2のファームウェア200を更新する最初の処理において、IoTデバイス2のMCU20がホストサーバ3のサーバ証明書31の送信をホストサーバ3にリクエストする(ステップS1)。サーバ証明書31は、認証局が発行するデータである。サーバ証明書31には、ホストサーバ3のアドレス、公開鍵暗号方式におけるホストサーバ3の公開鍵(以下、サーバ公開鍵と記す)と、認証局の秘密鍵を用いて生成されたサーバ公開鍵の電子署名が含まれる。IoTデバイス2に実装されたセキュアエレメント21が、サーバ証明書31の正当性を検証できるように、認証局の秘密鍵と対になる認証局の公開鍵が、セキュアエレメント21の製造時にセキュアエレメント21のNVM21dに書き込まれる。
【0031】
ホストサーバ3は、IoTデバイス2からサーバ証明書31のリクエストを受けると、サーバ証明書31の送信をリクエストしたIoTデバイス2に対して、ホストサーバ3が記憶しているサーバ証明書31を送信する(ステップS2)。IoTデバイス2のMCU20は、ホストサーバ3から受信したサーバ証明書31をセキュアエレメント21へ送信する(ステップS3)。
【0032】
IoTデバイス2のMCU20からサーバ証明書31を受信したセキュアエレメント21は、セキュアエレメント21が記憶している認証局の公開鍵を用いて、サーバ証明書31に含まれるサーバ公開鍵の電子署名を検証することで、MCU20から受信したサーバ証明書31を検証する(ステップS4)。セキュアエレメント21は、MCU20から受信したサーバ証明書31の検証結果をファームウェア更新モジュール22へ送信する(ステップS5)。なお、セキュアエレメント21は、サーバ証明書31の検証に成功すると、サーバ証明書31に含まれるサーバ公開鍵をセキュアエレメント21のNVM21dに格納する。
【0033】
IoTデバイス2のファームウェア更新モジュール22は、サーバ証明書31の検証結果を確認する(ステップS6)。ファームウェア更新モジュール22は、セキュアエレメント21がサーバ証明書31の検証に失敗した場合、所定のエラー処理を実行する(ステップS7)。このエラー処理の内容は任意であるが、本実施形態では、処理をステップS1に戻して、サーバ証明書31を再取得する処理にしている。
【0034】
IoTデバイス2のファームウェア更新モジュール22は、セキュアエレメント21がサーバ証明書31の検証に成功した場合、ファームウェア200の更新の有無をホストサーバ3へ問い合わせる(ステップS8)。ファームウェア200の更新の有無をホストサーバ3へ問い合わせる際、MCU20のNVM20dに格納されているファームウェア200のバージョン番号をホストサーバ3へ送信するとよい。ホストサーバ3は、ファームウェア200の更新の有無に係る回答をIoTデバイス2のファームウェア更新モジュール22へ通知する(ステップS9)。最新バージョンにアップするための更新ファイル30がホストサーバ3に登録されていない場合、ファームウェア200の更新の有無に係る回答として、ファームウェア200の更新無しがIoTデバイス2のファームウェア更新モジュール22へ通知される。最新バージョンにグレードアップするための更新ファイル30がホストサーバ3のデータベースに登録されている場合、ファームウェア200の更新の有無に係る回答として、ファームウェア200の更新有りがIoTデバイス2のファームウェア更新モジュール22へ通知される。
【0035】
ファームウェア更新モジュール22は、ファームウェア200の更新の有無に係る回答を確認する(ステップS10)。IoTデバイス2のファームウェア更新モジュール22は、ファームウェア200の更新の有無に係る回答として、ファームウェア200の更新無しが通知された場合、ファームウェア200の更新に係る処理を終了する。IoTデバイス2のファームウェア更新モジュール22は、ファームウェア200の更新の有無に係る回答として、ファームウェア200の更新有りが通知された場合、更新ファイル30および更新ファイル30の検証用データの送信をホストサーバ3へリクエストする(ステップS11)。ホストサーバ3は、更新ファイル30などをリクエストしたIoTデバイス2のファームウェア更新モジュール22に対して、最新バージョンにファームウェア200を更新するための更新ファイル30および更新ファイル30の検証用データを送信する(ステップS12)。更新ファイル30の検証用データには、更新ファイル30の検証に用いる情報が含まれる。本実施形態において、更新ファイル30の検証に用いる情報は、サーバ公開鍵と対になるサーバ秘密鍵を用いて生成された更新ファイル30の電子署名と、更新後のファームウェア200の電子署名が含まれる。更新ファイル30の電子署名は、更新ファイル30のハッシュ値をサーバ秘密鍵で暗号化した情報で、更新ファイル30の検証に用いる情報である。更新後のファームウェア200の電子署名は、更新後のファームウェア200のハッシュ値をサーバ秘密鍵で暗号化した情報で、更新後のファームウェア200の検証に用いる情報である。
【0036】
IoTデバイス2のファームウェア更新モジュール22は、更新ファイル30および更新ファイル30の検証用データをホストサーバ3から受信すると、まず、ホストサーバ3から受信した更新ファイル30のハッシュ値を計算する(ステップS13)。次に、IoTデバイス2のファームウェア更新モジュール22は、ホストサーバ3から受信した更新ファイル30のハッシュ値と、ホストサーバ3から受信した検証用データに含まれる更新ファイル30の電子署名をセキュアエレメント21に送信し、更新ファイル30の電子署名をセキュアエレメント21に検証させる(ステップS14)。セキュアエレメント21は、セキュアエレメント21が記憶しているサーバ公開鍵を用いて、ファームウェア更新モジュール22から受信した更新ファイル30の電子署名を検証する(ステップS15)。具体的に、セキュアエレメント21は、サーバ公開鍵を用いて更新ファイル30の電子署名を復号し、ファームウェア更新モジュール22から受信した更新ファイル30のハッシュ値と一致するか確認する。更新ファイル30の電子署名を復号した値が、更新ファイル30のハッシュ値と一致すれば、ファームウェア更新モジュール22は、更新ファイル30の電子署名の検証に成功したと判定する。
【0037】
セキュアエレメント21は、更新ファイル30の電子署名を検証する処理を実行すると、更新ファイル30の電子署名の検証結果をファームウェア更新モジュール22へ送信する(ステップS16)。IoTデバイス2のファームウェア更新モジュール22は、更新ファイル30の電子署名の検証結果を確認する(ステップS17)。IoTデバイス2のファームウェア更新モジュール22は、更新ファイル30の電子署名の検証結果によって検証失敗が示される場合、所定のエラー処理を実行する(ステップS18)。このエラー処理の内容は任意であるが、本実施形態では、処理をステップS1に戻して、サーバ証明書31を再取得する処理にしている。
【0038】
ここから、
図5で示した処理について説明する。IoTデバイス2のファームウェア更新モジュール22は、更新ファイル30の電子署名の検証結果によって検証成功が示される場合、ホストサーバ3から受信した更新ファイル30を用いて、MCU20のNVM20dに格納されているファームウェア200を更新する(ステップS19)。
【0039】
IoTデバイス2のファームウェア更新モジュール22は、MCU20のNVM20dに格納されているファームウェア200を更新すると、更新後のファームウェア200のハッシュ値を計算する(ステップS20)。次に、IoTデバイス2のファームウェア更新モジュール22は、更新後のファームウェア200のハッシュ値とホストサーバ3から受信した更新後のファームウェア200の電子署名をセキュアエレメント21へ送信し、更新後のファームウェア200の電子署名をセキュアエレメント21に検証させる(ステップS21)。セキュアエレメント21は、セキュアエレメント21が記憶しているサーバ公開鍵を用いて、ファームウェア更新モジュール22から受信した更新後のファームウェア200の電子署名を検証する(ステップS22)。具体的に、セキュアエレメント21は、サーバ公開鍵を用いて更新後のファームウェア200の電子署名を復号した値が、ファームウェア更新モジュール22から受信した更新後のファームウェア200のハッシュ値と一致するか確認する。更新後のファームウェア200の電子署名を復号した値が、更新後のファームウェア200のハッシュ値と一致する場合、更新ファイル30の電子署名の検証に成功したと判定する。
【0040】
セキュアエレメント21は、更新後のファームウェア200を検証する処理を行うと、更新後のファームウェア200の検証結果をファームウェア更新モジュール22へ通知する(ステップS23)。ファームウェア更新モジュール22は、更新後のファームウェア200の検証結果を確認する(ステップS24)。ファームウェア更新モジュール22は、更新後のファームウェア200の検証結果により検証成功が示される場合、ファームウェア200の更新に成功したことをホストサーバ3へ通知して(ステップS25)、ファームウェア200を更新する処理を終了する。ファームウェア更新モジュール22は、更新後のファームウェア200の検証結果により検証失敗が示される場合、MCU20を停止させた後(ステップS26)、所定のエラー処理を実行して(ステップS27)、ファームウェア200を更新する処理を終了する。このエラー処理の内容は任意であるが、本実施形態では、処理をステップS1に戻して、サーバ証明書31を再取得する処理にしている。
【符号の説明】
【0041】
1 IoTネットワークシステム
2 IoTデバイス
20 MCU
21 セキュアエレメント
22 ファームウェア更新モジュール
3 ホストサーバ
30 更新ファイル
31 サーバ証明書
4 IoTネットワーク