IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧

<>
  • 特許-情報処理装置、方法及びプログラム 図1
  • 特許-情報処理装置、方法及びプログラム 図2
  • 特許-情報処理装置、方法及びプログラム 図3
  • 特許-情報処理装置、方法及びプログラム 図4
  • 特許-情報処理装置、方法及びプログラム 図5
  • 特許-情報処理装置、方法及びプログラム 図6
  • 特許-情報処理装置、方法及びプログラム 図7
  • 特許-情報処理装置、方法及びプログラム 図8
  • 特許-情報処理装置、方法及びプログラム 図9
  • 特許-情報処理装置、方法及びプログラム 図10
  • 特許-情報処理装置、方法及びプログラム 図11
  • 特許-情報処理装置、方法及びプログラム 図12
  • 特許-情報処理装置、方法及びプログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】情報処理装置、方法及びプログラム
(51)【国際特許分類】
   G06F 21/64 20130101AFI20240219BHJP
【FI】
G06F21/64
【請求項の数】 11
(21)【出願番号】P 2020207831
(22)【出願日】2020-12-15
(65)【公開番号】P2022094755
(43)【公開日】2022-06-27
【審査請求日】2023-02-09
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】橋本 幹生
(72)【発明者】
【氏名】新保 淳
(72)【発明者】
【氏名】山岡 新之介
【審査官】上島 拓也
(56)【参考文献】
【文献】国際公開第2020/246145(WO,A1)
【文献】特開2020-123253(JP,A)
【文献】特開2020-155026(JP,A)
【文献】特開2012-169829(JP,A)
【文献】特開2017-038365(JP,A)
【文献】特開2018-074435(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
制御部を備える情報処理装置において、
前記制御部は、
データを生成もしくは取得する命令実行部と、
前記データに対するタイムスタンプ発行要求を受け付け、タイムスタンプを発行する発行部と、
前記情報処理装置の第1動作に応じて前記データの順序を管理するための第1カウンタ値を更新する第1更新部と、
前記タイムスタンプの発行に応じて前記データの順序を管理するための第2カウンタ値を更新する第2更新部と、
前記第1カウンタ値及び秘密鍵を保持する第1不揮発性メモリと、
揮発性レジスタと
を含み、
前記タイムスタンプは、前記秘密鍵を用いて、前記第1カウンタ値、前記第2カウンタ値、及び前記データに基づいて発行されるメッセージ認証コードまたはデジタル署名であり、
前記第2カウンタ値は、前記第1不揮発性メモリに格納されず、前記揮発性レジスタに保持され
前記制御部は、前記命令実行部が設定可能な最終タイムスタンプ発行指示部を含み、最終タイムスタンプ発行済フラグを設定し、
前記最終タイムスタンプ発行済フラグは前記第1動作においてオフに設定され、
前記最終タイムスタンプ発行指示部の設定に基づき、前記最終タイムスタンプ発行済フラグをオンに設定する動作と最終タイムスタンプ発行が行われ、
前記最終タイムスタンプ発行済フラグがオンの状態では、タイムスタンプの発行の受付禁止ならびに前記最終タイムスタンプ発行済フラグをオフにする操作が禁止される
情報処理装置。
【請求項2】
制御部を備える情報処理装置において、
前記制御部は、
データを生成もしくは取得する命令実行部と、
前記データに対するタイムスタンプ発行要求を受け付け、タイムスタンプを発行する発行部と、
前記情報処理装置の第1動作に応じて前記データの順序を管理するための第1カウンタ値を更新する第1更新部と、
前記タイムスタンプの発行に応じて前記データの順序を管理するための第2カウンタ値を更新する第2更新部と、
前記第1カウンタ値及び秘密鍵を保持する第1不揮発性メモリと、
揮発性レジスタと
を含み、
前記タイムスタンプは、前記秘密鍵を用いて、前記第1カウンタ値、前記第2カウンタ値、及び前記データに基づいて発行されるメッセージ認証コードまたはデジタル署名であり、
前記第2カウンタ値は、前記第1不揮発性メモリに格納されず、前記揮発性レジスタに保持され、
前記第1不揮発性メモリは、フラッシュメモリであり、
前記第1カウンタ値は、前記フラッシュメモリに確保された第1領域内に追記形式で書き込まれ、
前記フラッシュメモリは、前記データの総数を更に格納し、
前記データの総数は、前記フラッシュメモリに確保された前記第1領域とは異なる第2領域内に追記形式で格納される
情報処理装置。
【請求項3】
前記第1動作は、前記情報処理装置を起動する処理の実行を含む請求項1または2記載の情報処理装置。
【請求項4】
前記発行部は、前記情報処理装置の第1動作中に、当該情報処理装置上で動作するソフトウェアのバージョンを識別するための識別情報に対応するタイムスタンプを発行する請求項1~のいずれか一項に記載の情報処理装置。
【請求項5】
サーバ装置と通信可能に接続され、
前記情報処理装置の第1動作は、前記サーバ装置から送信される所定の要求に基づく処理の実行を含み、
前記発行部は、前記所定の要求に基づく処理結果に対応するタイムスタンプを発行する
請求項1~のいずれか一項に記載の情報処理装置。
【請求項6】
前記制御部は、ワンチップマイクロコントローラである請求項1~のいずれか一項に記載の情報処理装置。
【請求項7】
前記タイムスタンプ、前記第1カウンタ値及び前記第2カウンタ値は、前記制御部と接続される第2不揮発性メモリに出力される請求項1~のいずれか一項に記載の情報処理装置。
【請求項8】
命令実行部を含む制御部を備える情報処理装置が実行する方法であって、
前記命令実行部がデータを生成もしくは出力することと、
前記データに対するタイムスタンプ発行要求を受け付け、タイムスタンプを発行することと、
前記情報処理装置の第1動作に応じて前記データの順序を管理するための第1カウンタ値を更新することと、
前記タイムスタンプの発行に応じて前記データの順序を管理するための第2カウンタ値を更新することと
を具備し、
前記制御部が備える不揮発性メモリは、前記第1カウンタ値及び秘密鍵を保持し、
前記タイムスタンプは、前記秘密鍵を用いて、前記第1カウンタ値、前記第2カウンタ値、及び前記データに基づいて発行されるメッセージ認証コードまたはデジタル署名であり、
前記第2カウンタ値は、前記不揮発性メモリに格納されず、前記制御部が備える揮発性レジスタに保持され
前記制御部は、前記命令実行部が設定可能な最終タイムスタンプ発行指示部を含み、最終タイムスタンプ発行済フラグを設定し、
前記最終タイムスタンプ発行済フラグは前記第1動作においてオフに設定され、
前記最終タイムスタンプ発行指示部の設定に基づき、前記最終タイムスタンプ発行済フラグをオンに設定する動作と最終タイムスタンプ発行が行われ、
前記最終タイムスタンプ発行済フラグがオンの状態では、タイムスタンプの発行の受付禁止ならびに前記最終タイムスタンプ発行済フラグをオフにする操作が禁止される
方法。
【請求項9】
命令実行部を含む制御部を備える情報処理装置が実行する方法であって、
前記命令実行部がデータを生成もしくは出力することと、
前記データに対するタイムスタンプ発行要求を受け付け、タイムスタンプを発行することと、
前記情報処理装置の第1動作に応じて前記データの順序を管理するための第1カウンタ値を更新することと、
前記タイムスタンプの発行に応じて前記データの順序を管理するための第2カウンタ値を更新することと
を具備し、
前記制御部が備える不揮発性メモリは、前記第1カウンタ値及び秘密鍵を保持し、
前記タイムスタンプは、前記秘密鍵を用いて、前記第1カウンタ値、前記第2カウンタ値、及び前記データに基づいて発行されるメッセージ認証コードまたはデジタル署名であり、
前記第2カウンタ値は、前記不揮発性メモリに格納されず、前記制御部が備える揮発性レジスタに保持され、
前記不揮発性メモリは、フラッシュメモリであり、
前記第1カウンタ値は、前記フラッシュメモリに確保された第1領域内に追記形式で書き込まれ、
前記フラッシュメモリは、前記データの総数を更に格納し、
前記データの総数は、前記フラッシュメモリに確保された前記第1領域とは異なる第2領域内に追記形式で格納される
方法。
【請求項10】
命令実行部を含む制御部を備える情報処理装置において、当該制御部のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記命令実行部がデータを生成もしくは取得することと、
前記データに対するタイムスタンプ発行要求を受け付け、タイムスタンプを発行することと、
前記情報処理装置の第1動作に応じて前記データの順序を管理するための第1カウンタ値を更新することと、
前記タイムスタンプの発行に応じて前記データの順序を管理するための第2カウンタ値を更新することと
を実行させ、
前記制御部が備える不揮発性メモリは、前記第1カウンタ値及び秘密鍵を保持し、
前記タイムスタンプは、前記秘密鍵を用いて、前記第1カウンタ値、前記第2カウンタ値、及び前記データに基づいて発行されるメッセージ認証コードまたはデジタル署名であり、
前記第2カウンタ値は、前記不揮発性メモリに格納されず、前記制御部が備える揮発性レジスタに保持され
前記制御部は、前記命令実行部が設定可能な最終タイムスタンプ発行指示部を含み、最終タイムスタンプ発行済フラグを設定し、
前記最終タイムスタンプ発行済フラグは前記第1動作においてオフに設定され、
前記最終タイムスタンプ発行指示部の設定に基づき、前記最終タイムスタンプ発行済フラグをオンに設定する動作と最終タイムスタンプ発行が行われ、
前記最終タイムスタンプ発行済フラグがオンの状態では、タイムスタンプの発行の受付禁止ならびに前記最終タイムスタンプ発行済フラグをオフにする操作が禁止される
プログラム。
【請求項11】
命令実行部を含む制御部を備える情報処理装置において、当該制御部のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記命令実行部がデータを生成もしくは取得することと、
前記データに対するタイムスタンプ発行要求を受け付け、タイムスタンプを発行することと、
前記情報処理装置の第1動作に応じて前記データの順序を管理するための第1カウンタ値を更新することと、
前記タイムスタンプの発行に応じて前記データの順序を管理するための第2カウンタ値を更新することと
を実行させ、
前記制御部が備える不揮発性メモリは、前記第1カウンタ値及び秘密鍵を保持し、
前記タイムスタンプは、前記秘密鍵を用いて、前記第1カウンタ値、前記第2カウンタ値、及び前記データに基づいて発行されるメッセージ認証コードまたはデジタル署名であり、
前記第2カウンタ値は、前記不揮発性メモリに格納されず、前記制御部が備える揮発性レジスタに保持され、
前記不揮発性メモリは、フラッシュメモリであり、
前記第1カウンタ値は、前記フラッシュメモリに確保された第1領域内に追記形式で書き込まれ、
前記フラッシュメモリは、前記データの総数を更に格納し、
前記データの総数は、前記フラッシュメモリに確保された前記第1領域とは異なる第2領域内に追記形式で格納される
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置、方法及びプログラムに関する。
【背景技術】
【0002】
近年では、IoT(Internet of Things)技術が広く知られているが、当該IoT技術において、エッジデバイス(IoTノード)として動作する情報処理装置は、センサによって定期的に測定されたデータ(以下、時系列データと表記)をサーバ装置に送信するように動作する。これにより、サーバ装置は、情報処理装置から時系列データを収集し、様々な目的のために利用することができる。
【0003】
時系列データはサーバに送信される以外にも例えば情報処理装置内に(つまり、ローカルに)保存されるが、一時的な保存を含めてこのようにローカルに保存される時系列データにおいては、装置内において改ざん等の脅威に対する対策が必要である。
【0004】
このとき、データ単体の改ざんに加えて、生成順序の入れ替えや消去も脅威の一つであり、このような脅威に対して、低コストな対策が求められている。
【先行技術文献】
【特許文献】
【0005】
【文献】特許第5046165号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、本発明が解決しようとする課題は、データの真正性を担保する仕組みを低コストで実現することが可能な情報処理装置、方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0007】
実施形態によれば、制御部を備える情報処理装置が提供される。前記制御部は、データを生成もしくは取得する命令実行部と、前記データに対するタイムスタンプ発行要求を受け付け、タイムスタンプを発行する発行部と、前記情報処理装置の第1動作に応じて前記データの順序を管理するための第1カウンタ値を更新する第1更新部と、前記タイムスタンプの発行に応じて前記データの順序を管理するための第2カウンタ値を更新する第2更新部と、前記第1カウンタ値及び秘密鍵を保持する第1不揮発性メモリと、揮発性レジスタとを含む。前記タイムスタンプは、前記秘密鍵を用いて、前記第1カウンタ値、前記第2カウンタ値、及び前記データに基づいて発行されるメッセージ認証コードまたはデジタル署名である。前記第2カウンタ値は、前記第1不揮発性メモリに格納されず、前記揮発性レジスタに保持される。前記制御部は、前記命令実行部が設定可能な最終タイムスタンプ発行指示部を含み、最終タイムスタンプ発行済フラグを設定する。前記最終タイムスタンプ発行済フラグは前記第1動作においてオフに設定される。前記最終タイムスタンプ発行指示部の設定に基づき、前記最終タイムスタンプ発行済フラグをオンに設定する動作と最終タイムスタンプ発行が行われる。前記最終タイムスタンプ発行済フラグがオンの状態では、タイムスタンプの発行の受付禁止ならびに前記最終タイムスタンプ発行済フラグをオフにする操作が禁止される。
【図面の簡単な説明】
【0008】
図1】実施形態に係る情報処理装置の使用態様について説明するための図。
図2】ローカルタイムスタンプ技術の概要について説明するための図。
図3】情報処理装置に備えられるMCUの構成の一例を示すブロック図。
図4】情報処理装置が起動される際のMCUの処理手順の一例を示すフローチャート。
図5】時系列データ処理アプリケーションの実行が開始された後のMCUの処理手順の一例を示すフローチャート。
図6】MCUの一連の動作を概略的に説明するための図。
図7】起動サイクルにおいて処理された時系列データの数について具体的に説明するための図。
図8】ソフトウェアのバージョンを識別するための識別情報に対応するタイムスタンプを発行しない構成について説明するための図。
図9】上位カウンタ値格納領域について説明するための図。
図10】上位カウンタ値更新処理の処理手順の一例を示すフローチャート。
図11】時系列データの総数を不揮発性メモリに格納しておく場合のMCUの処理手順の一例を示すフローチャート。
図12】アテステーション処理に応じて上位カウンタ値を更新する際の処理手順の一例を示すフローチャート。
図13】本実施形態におけるセキュリティ機能がソフトウェアによる機能モジュールとして実現される場合のMCUの構成の一例を示すブロック図。
【発明を実施するための形態】
【0009】
以下、図面を参照して、実施形態について説明する。
まず、図1を参照して、本実施形態に係る情報処理装置の使用態様について簡単に説明する。
【0010】
本実施形態に係る情報処理装置10は、エッジデバイス(IoTノード)として動作する電子機器であり、サーバ装置20とインターネットのようなネットワーク30を介して通信可能に接続されている。
【0011】
情報処理装置10は、MCU(Micro Controller Unit)11を備えている。MCU11は、情報処理装置10の動作を制御するための組み込み用のワンチップマイクロコントローラ(制御部)である。本実施形態において、情報処理装置10(MCU11)は、例えば後述するアプリケーションプログラムによって実現される命令実行部を備え、センサ40によって定期的に測定されたデータ(以下、時系列データと表記)を当該命令実行部により生成または取得することが可能に構成されている。
【0012】
このような時系列データは、情報処理装置10からサーバ装置20に送信され、当該サーバ装置20によって受信される。
【0013】
これにより、サーバ装置20は、情報処理装置10(MCU11)から受信される時系列データを処理することによって、当該時系列データを利用した様々なサービスを提供することが可能となる。
【0014】
なお、サーバ装置20は各種クラウドコンピューティングサービスを提供するサーバ装置であってもよく、当該サーバ装置20と接続される情報処理装置10は複数であってもよい。
【0015】
ここで、例えば情報処理装置10とサーバ装置20との間の通信に不具合(障害)等が発生した場合には、当該情報処理装置10からサーバ装置20に対して時系列データを送信することができない。
【0016】
図1に示すように情報処理装置10はマイクロSDカード12(メモリカード)のような不揮発性メモリを備えており、上記したように通信の不具合が発生している時間帯において取得された時系列データは、このマイクロSDカード12(つまり、ローカル)に保存しておくことができる。
【0017】
ところで、上記したように情報処理装置10からサーバ装置20に送信される時系列データについては通信セキュリティによって適切に保護され、サーバ装置20において受信された時系列データについても当該サーバ装置20(クラウド)内で適切に保護される。
【0018】
一方、上記したように情報処理装置10においてローカルに保存された時系列データについては、物理アクセスによる改ざん等の脅威が懸念される。具体的には、例えばマイクロSDカード12は情報処理装置10から取り外し可能に構成されているが、当該マイクロSDカード12が情報処理装置10から取り外された場合には、当該マイクロSDカード12に保存されている時系列データが改ざんされる可能性がある。
【0019】
なお、マイクロSDカード12に保存される時系列データには、例えば情報処理装置10とサーバ装置20との通信に関するログ(通信ログ)等が含まれていてもよい。このような通信ログは例えば遠隔からのサイバー攻撃等の解析に有用であるが、当該通信ログについても改ざん等の脅威に対する対策が必要である。
【0020】
そこで、本実施形態に係る情報処理装置10は、ローカルに保存される時系列データ(センサ40によって測定されるデータ及び通信ログ等)の真正性を担保するために、ローカルタイムスタンプ技術を利用する。
【0021】
以下、図2を参照して、ローカルタイムスタンプ技術の概要について簡単に説明する。なお、ローカルタイムスタンプ(技術)とは、物理アクセス可能な不揮発性メモリ(マイクロSDカード12)に保存された時系列データに対する改ざんの検証(検出)を目的とした技術であり、本実施形態で用いる用語である。タイムスタンプと称しているが、実体はカウンタをベースとした論理時間と暗号に基づく署名またはMACを組み合わせた方式である。
【0022】
ここで、図2には、ローカルタイムスタンプ(タイムスタンプ)技術を利用する本実施形態の比較例に係る情報処理装置10´が示されている。なお、情報処理装置10´は、上記した図1に示すMCU11及びマイクロSDカード12に相当するMCU11´及びマイクロSDカード12´と、セキュリティチップ13´とを備えている。
【0023】
このような情報処理装置10´において、セキュリティチップ13´は、上記したようにMCU11´によって時系列データが取得された場合に当該時系列データに対応するタイムスタンプを発行する機能を有する。
【0024】
なお、セキュリティチップ13´には、例えば予め発行された秘密鍵が格納されているものとする。更に、セキュリティチップ13´は、上記した時系列データの順序を管理するためのカウンタレジスタ(一方向カウンタまたはモノトニックカウンタ)を備える。なお、このカウンタレジスタは、時系列データに対応するタイムスタンプを発行する度にインクリメントされるカウンタ値を保持する。カウンタに対するデクリメント処理は禁止される。上記した時系列データに対応するタイムスタンプは、この秘密鍵及びカウンタ値を用いて発行される。
【0025】
具体的には、タイムスタンプとしては、HMACと称されるメッセージ認証コードを用いることができる。この場合、セキュリティチップ13´は、上記した秘密鍵、カウンタ値及び対象データを連結し、当該連結されたデータのハッシュ値を計算することによって、メッセージ認証コードを発行する。このようなメッセージ認証コードを時系列データ及びカウンタ値に付加してマイクロSDカード12´に保存しておくことにより、当該メッセージ認証コードを疑似的なタイムスタンプとして利用することができる。なお、時系列データに対する改ざんの検証は、当該時系列データ、秘密鍵及びカウンタ値から生成(発行)されるメッセージ認証コードと、当該時系列データに付加されているメッセージ認証コードとを比較することによって行われる。また、このようなメッセージ認証コードによれば、カウンタ値の改ざんも検証することができるため、当該カウンタ値に基づいて時系列データの順序保証を実現することもできる。
【0026】
ここではタイムスタンプがメッセージ認証コードであるものとして説明したが、当該タイムスタンプは例えば秘密鍵を用いて生成されるデジタル署名等であっても構わない。
【0027】
上記したローカルタイムスタンプ技術によれば、ローカルに保存された時系列データの真正性を担保する仕組みを実現することができる。
【0028】
しかしながら、本実施形態の比較例に係る情報処理装置10´において時系列データの順序保証を実現する(つまり、カウンタ値の一意性を担保する)ためには、上記したように時系列データに対応するタイムスタンプが発行される度にインクリメントされるカウンタ値を繰り返し不揮発性メモリに書き込む必要がある。カウンタを保持するレジスタが揮発性の場合、電源断の都度カウンタが初期値に戻ってしまい、同一のカウンタ値に対するタイムスタンプが複数発行されてしまうことになる。同様に不正操作によりカウンタがデクリメントされた場合も、一つのカウンタ値に2通りのタイムスタンプが発行されてしまうことから、カウンタ値の不正操作に対する防止機構も必要である。
【0029】
ここで、IoTノードにおいては高い頻度で時系列データが取得されることが想定されるが、一般にMCU内蔵不揮発性メモリとして用いられるフラッシュメモリは、メモリページに対するデータの書き換え(つまり、データの消去及び書き込み)を繰り返すことによって製品寿命(書き換え寿命)に到達することが知られている。このため、セキュリティチップ13´においてはカウンタ値の管理のためにMCU11´に内蔵されている不揮発性メモリ11a´(フラッシュメモリ)よりも書き込み回数の寿命が長いEEPROM等を使用する場合があるが、書き込み回数200万回のEEPROMを使用した場合であっても、例えば1秒毎に時系列データを取得してタイムスタンプを発行するような構成の場合には8か月程度で当該EEPROMの製品寿命に到達する。
【0030】
すなわち、上記した本実施形態の比較例に係る情報処理装置10´においては、製品寿命の長い不揮発性メモリを別途用意する必要があり、時系列データの真正性を担保する仕組みを実現するためのコストが高くなる。
【0031】
カウンタを保持するメモリにMCU外部のEEPROMを用いる場合、カウンタの不正操作を防止する観点から、本実施形態の比較例に係る情報処理装置10´においては、ワンチップマイクロコントローラであるMCU11´とは別にセキュリティチップ13´を設ける必要がある。上記したタイムスタンプを発行するセキュリティ機能をワンチップで実現する(つまり、ワンチップ化する)ことができない。なお、セキュリティ機能をワンチップ化するためには、上記したカウンタ値の管理にMCU11´に内蔵されている不揮発性メモリ11a´(フラッシュメモリ)を利用することが考えられるが、その場合には、EEPROMよりも更に製品寿命が短くなる。MCU内蔵のフラッシュメモリは大容量のプログラムを格納するため、一般にトレードオフ関係にある書き込み回数を犠牲にして小面積化を優先しているためである。
【0032】
そこで、本実施形態においては、時系列データの真正性を担保する仕組み(時系列データの順序保証)を低コストで実現する構成を採用する。なお、以下の説明においてはマイクロSDカード12に保存されるデータを時系列データと称するが、当該時系列データは、情報処理装置10からサーバ装置20に送信されるデータ(例えば、センサ40によって測定されたデータ等)であってもよいし、サーバ装置20に送信されないデータ(例えば、通信ログ等)であってもよい。また、時系列データは、サーバ装置20に送信されるデータ(例えば、センサデータ等)とサーバ装置20に送信されないデータ(例えば、通信ログ等)とが混在していてもよい。
【0033】
図3の説明)
図3は、本実施形態に係る情報処理装置10に備えられるMCU11(制御部)の構成の一例を示すブロック図である。
【0034】
図3に示すように、MCU11は、CPU111、ROM112、SRAM113、通信インタフェース(I/F)114、A/Dコンバータ115、タイムスタンプ管理部116、不揮発性メモリ117及びSDカードインタフェース(I/F)コントローラ118を含む。
【0035】
CPU111は、MCU11(情報処理装置10)内の様々なコンポーネントの動作を制御するためのプロセッサである。なお、CPU111は、単一のプロセッサであってもよいし、複数のプロセッサで構成されていてもよい。CPU111は、例えば不揮発性メモリ117に格納されている様々なプログラム(ソフトウェア)を実行する。CPU111によって実行されるプログラムには、上記した時系列データを処理するためのアプリケーションプログラム(以下、時系列データ処理アプリケーションと表記)及び各種ファームウェア(FW)等が含まれる。すなわち、CPU111によって実行されるプログラムにより、CPU111が時系列データの生成および取得を行う命令実行部を担う場合がある。また、CPU111は処理部111と称されてもよい。SRAM113は、CPU111の作業用メモリとして使用される主記憶装置である。なお、ROM112はマスクROMであり、起動用FWが格納される。マスクROMであるため書き換えはできない。時系列データ処理アプリケーションは、後述のようにアプリケーション格納領域117eに格納され、書き換えが可能である。
【0036】
通信インタフェース114は、情報処理装置10の外部装置(例えば、サーバ装置20等)との通信を制御するためのインタフェースである。
【0037】
A/Dコンバータ115は、上記したセンサ40と接続されており、当該センサによって定期的に測定されたアナログデータをデジタルデータに変換し、当該デジタルデータを出力する。
【0038】
(不揮発性メモリの説明)
不揮発性メモリ117は、例えばMCU11に内蔵されているフラッシュメモリであり、上位カウンタ値格納領域117a、秘密鍵格納領域117b、ハッシュ期待値格納領域117c、追加情報格納領域117d及びアプリケーション格納領域117e等を含む。
【0039】
上位カウンタ値格納領域117aは、上記した上位カウンタ値が格納される領域である。
【0040】
秘密鍵格納領域117bは、上記したタイムスタンプ(メッセージ認証コードまたはデジタル署名)の発行に用いられる秘密鍵が格納される領域である。
【0041】
ハッシュ期待値格納領域117cは、CPU111によって実行されるファームウェア(例えば、情報処理装置10の起動時に実行される起動用ファームウェア)に対する改ざんを検証するために用いられるハッシュ期待値が格納される領域である。なお、このファームウェア自体は上記したROM(マスクROM)112に格納されているものとする。
【0042】
追加情報格納領域117dは、後述するMCU11において実行される各種処理において用いられる情報が格納される領域である。
【0043】
アプリケーション格納領域117eは、CPU111によって実行される時系列データ処理アプリケーションが格納される領域である。なお、本実施形態における時系列データ処理アプリケーションは、例えば一般アプリケーションまたは一般ファームウェア等と称されてもよい。更に、時系列データ処理アプリケーションにはサーバとの通信処理などを行う通信処理を行うRTOSも含まれる。時系列データ処理アプリケーションの計測アルゴリズムの不具合や通信処理の脆弱性があった場合、時系列データ処理アプリケーション(一般FW)の更新を行い、更新以後に不具合や脆弱性の悪影響を解消することができる。MCUにおける一般FWの更新については、特開2017-33149号公報に記載されている方法等が知られているが、その実現方法はこれに限定されない。
【0044】
なお、本実施形態において、上記したカウンタレジスタ116c及び最終タイムスタンプ発行済フラグ116hや不揮発性メモリ117に含まれる例えば領域117a~117dは、所定の権限(特権)が付与された場合にのみアクセス可能であるものとする。後述する、アプリケーション脆弱性に起因する不正動作対策として、アプリケーション格納領域117eに格納されたプログラムの実行時にはアクセス可能範囲を限定するアクセス制御機能117fを備える。
【0045】
(タイムスタンプ管理部の説明)
タイムスタンプ管理部116は、上記したタイムスタンプ(メッセージ認証コードまたはデジタル署名等)を管理する機能(セキュリティ機能)を有する。なお、本実施形態において、タイムスタンプ管理部116は、時系列データ処理アプリケーションによる内部アクセスが禁止された、ハードウェアモジュールとして実現されているものとする。
【0046】
タイムスタンプ管理部116は、データ入力レジスタ116a、タイムスタンプ出力レジスタ116b、最終タイムスタンプ要求レジスタ116c、タイムスタンプ発行部116d、アクセス制御部116e、カウンタレジスタ116f、秘密鍵レジスタ116g、最終タイムスタンプ発行済みフラグ116hを含む。カウンタレジスタ116fは上位ビット格納部116f-1、下位ビット格納部116f-2で構成されている。
【0047】
マイクロSDカード12は、大容量データの保存先である。後述するフラッシュメモリと異なり、物理的なアクセス保護機能を持たないため、物理的アクセスならびに不正ソフトウェア実行による不正書き換えやデータ消去の脅威にさらされる。
【0048】
タイムスタンプ発行部116dは、データ入力レジスタ116aに入力された時系列データ(上記した命令実行部が生成または取得したデータに対するタイムスタンプ発行要求)を受け付け、当該時系列データに対応するタイムスタンプを発行(生成)し、タイムスタンプ出力レジスタ116bに出力する。なお、本実施形態におけるタイムスタンプは、後述するカウンタレジスタ116f及び最終タイムスタンプ発行済フラグ116hならびに秘密鍵レジスタ116gに設定されている値に基づいて発行される。
【0049】
アクセス制御部116eは、後述する図4において説明する起動時に行われる初期設定期間中に限定してCPU111からタイムスタンプ管理部内部レジスタ(116f~116h)に対するアクセスを許可し、後述する図5において説明する、アプリケーション格納領域117eに格納されたアプリケーションの実行中には、CPU111からタイムスタンプ管理部内部レジスタに対する変更を禁止する、特権状態に基づいたアクセス制限を行う機能である。秘密鍵レジスタ116gについてはアプリケーション実行中は一切の読出しと書込みを禁止する。
【0050】
カウンタレジスタ116fには、時系列データの順序を管理するためのカウンタ値が設定(保持)される。なお、カウンタレジスタ116fは、揮発性メモリの領域が割り当てられている揮発性レジスタである。
【0051】
ここで、上記したように例えば単にタイムスタンプが発行される度にカウンタ値をインクリメントするように時系列データの順序を管理する場合、当該カウンタ値が更新される度に当該カウンタ値を不揮発性メモリに書き込まなければならず、書き換え寿命の長い不揮発性メモリを用意する必要がある。
【0052】
これに対して、本実施形態においてカウンタレジスタ116fに設定されるカウンタ値は、上位ビットに相当するカウンタ値(以下、上位カウンタ値と表記)及び下位ビットに相当するカウンタ値(以下、下位カウンタ値と表記)から構成される。
【0053】
本実施形態において、上位カウンタ値は、例えば情報処理装置10の起動(情報処理装置10を起動する処理の実行)に応じて更新(インクリメント)される。なお、上位カウンタ値はタイムスタンプの発行処理等のためにカウンタレジスタ116fに設定されるが、当該上位カウンタ値は、不揮発性メモリ117に格納されて一意性を保証するように管理される。より具体的には、電源断状態において上位カウンタ値は、不揮発性メモリ117に保持される。電源投入後の初期化時に上位カウンタ値は、マスクROM112に格納された初期化プログラム実行時に不揮発性メモリ117に格納された上位カウンタ値に対するインクリメント操作が行われた後、揮発性のカウンタレジスタ116fの上位ビット相当領域に初期設定される。詳細は後述する図4において説明する。
【0054】
一方、下位カウンタ値は、タイムスタンプ発行部116dによってタイムスタンプが発行される都度、更新(インクリメント)される。なお、下位カウンタ値は、不揮発性メモリ117には格納されず、カウンタレジスタ116f(揮発性メモリ)に保持されて管理される。詳細は後述する図5において説明する。
【0055】
本実施形態においては、このように情報処理装置10の起動に応じて更新される上位カウンタ値を不揮発性メモリ117に格納し(書き込み)、起動に対して回数の多いタイムスタンプ発行毎に更新される下位カウンタ値を不揮発性メモリ117に格納しない(書き込まない)構成とすることによって、タイムスタンプの発行回数に対して不揮発性メモリ117に対するカウンタ値の書き換え回数を低減させる効果が得られる。
【0056】
ここで、例えばマイクロSDカード12に保存されているデータが不正に消去されるような脅威に対する対策としてタイムスタンプの発行総数を管理することが考えられるが、上記したように時系列データの順序を上位カウンタ値及び下位カウンタ値で管理する場合、上位カウンタ値が更新されるサイクル(以下、起動サイクルと表記)の間に発行されたタイムスタンプの数を把握する必要がある。
【0057】
このため、上記したように情報処理装置10の起動に応じて上位カウンタ値が更新される構成の場合には、最終タイムスタンプ要求レジスタ116c及び最終タイムスタンプ発行済フラグ116hを利用した制御を行う。詳細は後述する図5において説明するが、最終タイムスタンプ発行済フラグ116hを用いて上記した起動サイクルの終了を管理する。
【0058】
SDカードインタフェースコントローラ118は、シリアルバス(SPI)を介してマイクロSDカード12と接続され、上記した時系列データ及びタイムスタンプ等をマイクロSDカード12に出力するように構成されている。
【0059】
なお、本実施形態においてはマイクロSDカード12が用いられるものとして説明するが、当該マイクロSDカード12は、例えば汎用の外付けの不揮発性メモリであればよい。
【0060】
図4の説明)
以下、本実施形態に係る情報処理装置10(MCU11)の動作について説明する。まず、図4のフローチャートを参照して、情報処理装置10が起動される際のMCU11の処理手順の一例について説明する。
【0061】
本実施形態においては、情報処理装置10の起動時に上記したROM112に格納されている起動用ファームウェアがCPU111によって実行され、一連の初期設定手順が実行される。
【0062】
具体的には、情報処理装置10の電源がオンされると、マスクROM112に格納された起動用ファームウェアが実行され、初期化処理完了後に起動されるアプリケーション格納領域117eの改ざん検証を行う。起動直後に実行されるマスクROM実行時は領域117a~117dに格納された情報に対するアクセスが可能とし、起動処理完了後、アプリケーションの実行中は117a~117dの領域はアクセスが禁止される。アプリケーション格納領域117eのハッシュ期待値が不揮発性メモリ117に含まれるハッシュ期待値格納領域117cから取得される(ステップS1)。なお、ハッシュ期待値格納領域117cに格納されているハッシュ期待値は、アプリケーション格納領域が不揮発性メモリ117に格納された際に導入されたハッシュ値である。アプリケーション格納領域117eに格納されるアプリケーションプログラム配布時の検証用デジタル署名から取得することができる。
【0063】
次に、不揮発性メモリ117のアプリケーション格納領域117eのハッシュ値が計算される(ステップS2)。
【0064】
ステップS2の処理が実行されると、ステップS1において取得されたハッシュ期待値とステップS2において計算されたハッシュ値とが比較され、当該計算されたハッシュ値がハッシュ期待値と一致するか否かが判定される(ステップS3)。
【0065】
ステップS2において計算されたハッシュ値がハッシュ期待値と一致しないと判定された場合(ステップS3のNO)、アプリケーション格納領域117eに格納されているアプリケーションは改ざんされている可能性があるため、情報処理装置10の起動は異常終了される。
【0066】
一方、ステップS2において計算されたハッシュ値がハッシュ期待値と一致すると判定された場合(ステップS3のYES)、マスクROM112に格納された起動用ファームウェアに含まれるステップS4~S9の初期設定が実行される。
【0067】
この場合、CPU111は、不揮発性メモリ117に含まれる上位カウンタ値格納領域117aにアクセスし、当該上位カウンタ値格納領域117aに格納されている上位カウンタ値を更新する処理(以下、上位カウンタ値更新処理と表記)を実行する(ステップS4)。なお、この上位カウンタ値更新処理の詳細については後述する。ステップS1~S10までの起動処理及びS10以降のアプリケーション処理を通じて、不揮発性メモリの上位カウンタ値格納領域117aの書き換えが行われるのはこのステップS4に限られる。フラッシュメモリの特性を利用して、書き換え可能回数を増やす方法については、後述する図9及び図10において詳細に説明する。
【0068】
次に、CPU111は、タイムスタンプ管理部116に含まれるアクセス制御部116eを介して、ステップS5の処理が実行されることによって更新された上位カウンタ値を、カウンタレジスタ116fにおけるカウンタ値の上位ビットに設定する(ステップS5)。
【0069】
ステップS5の処理が実行されると、CPU111は、アクセス制御部116eを介して、カウンタレジスタ116fにおけるカウンタ値の下位ビットに初期値を設定する(ステップS6)。
【0070】
ここで、上記した不揮発性メモリ117に含まれるハッシュ期待値格納領域117cに格納されているハッシュ期待値は、アプリケーション(つまり、情報処理装置10上で動作するソフトウェア)のバージョンを識別するための識別情報としての機能を有する。このため、このようなハッシュ期待値に対応するタイムスタンプを情報処理装置10の起動(処理)中に発行しておくことで、後続するタイムスタンプのデータを生成したアプリケーションの特定が可能になる。データ異常等、情報処理装置10に不具合等が生じた際にデータを生成したアプリケーションのバージョンを確実に特定することができると考えられる。
【0071】
そこで、本実施形態において、タイムスタンプ管理部116に含まれるタイムスタンプ発行部116dは、上記した不揮発性メモリ117に含まれるハッシュ期待値格納領域117cに格納されているハッシュ期待値(またはステップS2において計算されたハッシュ値)に対応するタイムスタンプを発行する(ステップS7)。より具体的には、アプリケーションハッシュ値のタイムスタンプは当該電源サイクルの初回に発行されるため、下位ビットが初期値(0)となる。このような規約を定めておくことにより、当該電源サイクルにおいて実行されるアプリケーションが特定できる。また、最終タイムスタンプ発行済フラグ116hにおいて最終ビットフラグは、情報処理装置10の起動時においてタイムスタンプ管理部116(アクセス制御部116b)によって「0(オフ)」に設定されている。
【0072】
起動用ファームウェアの要求により行われる初回タイムスタンプ発行手順は、アプリケーションの要求により行われる手順と基本的に同一であり、詳細は図5において説明する。
【0073】
なお、タイムスタンプの発行に用いられる秘密鍵は、上記手順に先立って上記した秘密鍵格納領域117bから読み出され、タイムスタンプ管理部116内のタイムスタンプ用秘密鍵レジスタ116gに保持されているものとする。
【0074】
ステップS7において発行されたタイムスタンプは、マスクROM112に格納された起動用ファームウェアによりタイムスタンプ管理部116から読み出され、上記したハッシュ期待値、カウンタレジスタ116fに設定されているカウンタ値及び最終タイムスタンプ発行済フラグ116hに設定されている最終ビットフラグとともにSRAM113の所定の領域に保持される(ステップS8)。
【0075】
ステップS8の処理が実行されると、上記したアクセス権限が解除され(ステップS9)、時系列データ処理アプリケーションの実行が開始される(ステップS10)。
【0076】
なお、図4においては示されていないが、ステップS8においてSRAM113に保持されたタイムスタンプ及び関連情報はマイクロSDカード12に出力され、当該マイクロSDカード12に保存される。タイムスタンプの保存先はシステムの利用形態により異なるため、汎用不揮発性メモリへの保存はアプリケーションの責任により行う。マスクROM112に格納された起動用ファームウェアは利用形態による変更が困難であるため、タイムスタンプのSRAM保存までを実施する。
【0077】
図5の説明)
次に、図5のフローチャートを参照して、上記した図4に示すステップS11において時系列データ処理アプリケーションの実行が開始された後のMCU11(タイムスタンプ管理部116)の処理手順の一例について説明する。
【0078】
CPU111によって時系列データ処理アプリケーションが実行されると、MCU11において時系列データが取得され、当該取得された時系列データがマイクロSDカード12に出力(保存)される処理が実行される。
【0079】
まず、MCU11において時系列データが取得された場合、タイムスタンプ管理部116は、当該時系列データを入力する(ステップS21)。なお、タイムスタンプ管理部116に入力された時系列データは、データ入力レジスタ116aに保持される。また、上記したように情報処理装置10のシャットダウンに先立つ最終タイムスタンプ発行時に限り、アプリケーション(命令実行部)は最終タイムスタンプ要求レジスタ116cに1を設定しておく。
【0080】
ここで、上記した時系列データ処理アプリケーションを実行するCPU111は、タイムスタンプ管理部116に対してタイムスタンプの発行を指示する。
【0081】
タイムスタンプ管理部116(アクセス制御部116e)は、上記したCPU111からの指示に基づいて、最終タイムスタンプ発行要求レジスタ116cを参照する(ステップS22)。
【0082】
ここで、最終タイムスタンプ発行済フラグ116hは、既に当該起動サイクルにおいて、一度最終タイムスタンプが発行されたことを示すタイムスタンプ管理部116の内部レジスタであり、アクセス制御部116eによりアプリケーションから直接操作することはできない。
【0083】
最終タイムスタンプ発行済フラグ116hに「1」が設定されている場合は、既に最終タイムスタンプが発行されているため、タイムスタンプの発行は行わない(ステップS23のNO)。
【0084】
最終タイムスタンプ発行済フラグ116hが「1」であると判定された場合(ステップS23のYES)、上記したようにタイムスタンプを発行しないため、図5に示す処理は終了される。
【0085】
一方、最終タイムスタンプ発行済フラグ116hが「1」でない(時系列データの取得保存が継続中である)場合(ステップS23のNO)、カウンタレジスタ116fに設定されているカウンタの下位ビット(つまり、下位カウンタ値)を更新(インクリメント)する(ステップS24)。
【0086】
ここで、最終タイムスタンプ要求レジスタ116cが参照され、当該タイムスタンプ生成要求が、最終タイムスタンプ発行要求なのかそれ以外かが判定される(ステップS25)。
【0087】
最終タイムスタンプ要求レジスタ116cに「1」が設定されていると判定された場合(ステップS25のYES)、タイムスタンプ管理部116は、最終タイムスタンプ発行済フラグ116hに最終ビットフラグ「1(オン)」(つまり、タイムスタンプ発行禁止フラグ)を設定する(ステップS26)。上記したステップS23の処理により、当該タイムスタンプの発行後には再起動を行わない限り新規のタイムスタンプ発行及びタイムスタンプ発行済フラグを「0」にする操作が禁止される。
【0088】
一方、最終タイムスタンプ要求レジスタ116cに「1」が設定されていないと判定された場合(ステップS25のNO)、上記したステップS26の処理は実行されず、新規のタイムスタンプ発行可能な状態が維持される。
【0089】
次に、タイムスタンプ発行部116dは、ステップS21において入力された時系列データ、カウンタレジスタ116fに設定されているカウンタ値(上位カウンタ値及び下位カウンタ値)及びタイムスタンプ発行済フラグ116hに設定されている最終ビットフラグを結合する(ステップS27)。
【0090】
タイムスタンプ発行部116dは、ステップS27において結合された時系列データ、カウンタ値及び最終ビットフラグ(以下、結合データと表記)に対応するタイムスタンプを発行する(ステップS28)。
【0091】
この場合、タイムスタンプ発行部116dは、結合データとタイムスタンプ用秘密鍵レジスタに保持されている秘密鍵とに基づき、FIPS198-1に定義されるメッセージ認証コード(HMAC)をタイムスタンプとして発行してもよいし、当該連結されたデータを秘密鍵を用いて暗号化することによって生成されるデジタル署名をタイムスタンプとして発行してもよい。
【0092】
ステップS28の処理が実行されると、当該ステップS28において発行されたタイムスタンプは、例えばタイムスタンプ管理部116内のタイムスタンプ出力レジスタ116bに保持される(ステップS29)。
【0093】
なお、図5においては示されていないが、ステップS29においてタイムスタンプ出力レジスタ116bに保持されたタイムスタンプは、アプリケーションによって読み出され、ステップS21において入力された時系列データ、カウンタレジスタ116fに設定されているカウンタ値及び最終タイムスタンプ発行済フラグ116hに設定されている最終ビットフラグとともにマイクロSDカード12に出力され、当該マイクロSDカード12に保存される。この時点での保存先はマイクロSDカードに限定されず、例えば一時的にEEPROMやSRAM等に保存後、マイクロSDカード12の書込みサイズ毎にまとめて保存してもよい。
【0094】
図5における効果と初期化手順との関係の補足説明)
上記した図5に示す処理は時系列データがタイムスタンプ管理部116に入力される度に実行されるが、このような処理によれば、時系列データが入力される度に下位カウンタ値を更新しながら当該時系列データ(、カウンタ値及び最終ビットフラグを結合した結合データ)に対応するタイムスタンプを発行することができる。上記説明では、図4に基づき説明した初期化手順実行後に、CPU111において実行されるアプリケーションがタイムスタンプ管理部116の機能を利用するものとして記載しているが、初期化手順においてタイムスタンプ管理部116内のカウンタレジスタ116f、最終タイムスタンプ発行済フラグ116h、秘密鍵レジスタ116gが適切に初期設定されており、カウンタの上位ビットが適切にインクリメントされていれば、初期化手順は上記図4の手順以外の方法でも図5の手順の実行により、タイムスタンプ発行における不揮発性メモリ書き換え回数の削減効果が得られる。
【0095】
図6の説明)
ここで、図6は、上記した図4及び図5において説明した一連の動作(処理)を概略的に説明するための図である。
【0096】
まず、情報処理装置10が起動(または再起動)される場合、上記したアプリケーションのハッシュ期待値(、カウンタレジスタ116fに設定されているカウンタ値及び最終タイムスタンプ発行済フラグ116hに設定されている最終ビットフラグ)に対応するタイムスタンプが自動的に生成され、当該タイムスタンプは、アプリケーションの起動後にカウンタ値、最終ビットフラグ及びハッシュ期待値とともにマイクロSDカード12に保存される。
【0097】
ここではハッシュ期待値に対応するタイムスタンプが生成されるものとして説明したが、起動用ファームウェアのバージョンを識別するための識別情報として例えば起動用ファームウェアのバージョン番号等に対応するタイムスタンプが発行されてもよい。
【0098】
なお、図6に示す例では、ハッシュ期待値に対応するタイムスタンプ201が発行され、当該タイムスタンプ201が上位カウンタ値「3」、下位カウンタ値「0」、最終ビットフラグ「0」及び当該ハッシュ期待値とともにマイクロSDカード12に保存されることが示されている。
【0099】
上記したようにタイムスタンプ201が発行されると、時系列データ処理アプリケーションの実行が開始され、時系列データの各々に対応するタイムスタンプが発行される。
【0100】
ここで、タイムスタンプ管理部116に時系列データXが入力された場合には、下位カウンタ値が更新(インクリメント)され、図6に示すように、時系列データX(、上位カウンタ値「3」、下位カウンタ値「1」及び最終ビットフラグ「0」)に対応するタイムスタンプ202が発行される。このタイムスタンプ202は、上位カウンタ値「3」、下位カウンタ値「1」、最終ビットフラグ「0」及び時系列データXとともにマイクロSDカード12に保存される。
【0101】
なお、図6においては示されていないが、時系列データXの次に時系列データYがタイムスタンプ管理部116に入力された場合には、時系列データY(、上位カウンタ値「3」、下位カウンタ値「2」及び最終ビットフラグ「0」)に対応するタイムスタンプが発行され、当該タイムスタンプは、上位カウンタ値「3」、下位カウンタ値「1」、最終ビットフラグ「0」及び時系列データYとともにマイクロSDカード12に保存される。
【0102】
次に、情報処理装置10のシャットダウン(処理)が開始された後に、時系列データZがタイムスタンプ管理部116に入力された場合を想定する。時系列データZは、当該シャットダウンが、なんらかの指示に基づく正常終了なのか、異常検出による異常終了なのかを示すデータが考えられる。この場合には、アプリケーションにより最終タイムスタンプ発行済フラグ116hに最終ビットフラグ「1」が設定され、時系列データZ(、上位カウンタ「3」、下位カウンタ値「3」及び最終ビットフラグ「1」)に対応するタイムスタンプ203が発行される。このタイムスタンプ203は、上位カウンタ値「3」、下位カウンタ値「3」、最終ビットフラグ「1」及び時系列データZとともにマイクロSDカード12に保存される。最終ビットフラグの設定は、あくまで電源断に先立って行われる準備作業である。マイクロSDカード12に対するデータ保存にアプリケーション処理が必要な場合もあるため、最終ビットフラグの設定により自動的に電源断が行われるわけではない。
【0103】
タイムスタンプ203が発行された(最終ビットフラグ「1」が設定された)後は、情報処理装置10のシャットダウン完了後、再起動が行われるまでの間はタイムスタンプは発行されない。したがって、重要なイベントが想定される処理は最終ビットフラグの設定前に完了しておく必要がある。例えば、遠隔からの攻撃と判定されるパケット受信のログにタイムスタンプを付与して保存する場合、最終ビットフラグがセットされてからではタイムスタンプが生成できない。よって、このような場合、最終ビットフラグのセットに先立って通信機能を停止しておくことが望ましい。
【0104】
なお、本実施形態において、カウンタレジスタ116fに設定されているカウンタ値のうちの上位カウンタ値(起動回数)は、不揮発性メモリ117(上位カウンタ値格納領域117a)において管理される。一方、下位カウンタ値(タイムスタンプ発行回数)及び最終ビットフラグは、揮発性メモリ(カウンタ用内蔵メモリ)において管理され、不揮発性メモリ117には書き込まれない。
【0105】
また、本実施形態においては、上記したように時系列データ及びタイムスタンプとともにカウンタ値(上位カウンタ値及び下位カウンタ値)及び最終タイムスタンプ発行済フラグ116hに設定されている最終ビットフラグがマイクロSDカード12に保存されるが、このカウンタ値及び最終ビットフラグによれば、1回の起動サイクルで処理された時系列データの数(つまり、情報処理装置10が起動してからシャットダウンするまでの間に処理された時系列データの数)を把握することができる。最終タイムスタンプ発行済フラグ116hが「1」に設定されたデータが当該起動サイクルにおける最終タイムスタンプであって当該データに対応するカウンタより大きなカウンタ値を持つ有効なタイムスタンプが存在しないことは、最終タイムスタンプ発行後は上記S23の判定処理によりタイムスタンプの発行が禁止されることにより明らかである。
【0106】
具体的には、図6に示す例では、タイムスタンプ203とともに上位カウンタ値「3」、下位カウンタ値「3」及び最終ビットフラグ「1」がマイクロSDカード12に保存されている。この場合、最終ビットフラグ「1」は情報処理装置10の起動からシャットダウンの完了までの間(つまり、1回の起動サイクル)の最後に発行されたタイムスタンプに付されるため、タイムスタンプ203に付されている上位カウンタ値「3」、下位カウンタ値「3」及び最終ビットフラグ「1」によれば、情報処理装置10の3回目の起動サイクルにおいて、当該情報処理装置10の起動からシャットダウンの完了までの間に3つの時系列データが処理され、それ以降のタイムスタンプが存在しないことが確認できる。
【0107】
すなわち、本実施形態においては、例えば図7に示すように起動サイクル3及び4が繰り返されたものとすると、上位カウンタ値「3」及び最終ビットフラグ「1」とともにマイクロSDカード12に保存されている下位カウンタ値「3」を参照することにより、起動サイクル3において処理された時系列データの数が3であることが確認できる。一方向カウンタにおいて、単純に下位ビットの保存を省力した場合には通算のタイムスタンプ発行回数の特定ができなくなる問題があるが、本実施形態においては、最終タイムスタンプ発行要求に対して最終タイムスタンプ発行済フラグ116hに設定されている最終ビットフラグが設定されたタイムスタンプをデータとともにアクセス制御なしのビット単価の低い汎用不揮発性メモリに保存することで、タイムスタンプ発行回数の特定を可能としている。これにより、一方向カウンタの全ビットを不揮発性メモリに保存する既存方式と比較して、アクセス制御が必要なカウンタ用不揮発性メモリの書き換え回数を削減するという課題と、タイムスタンプ発行回数を把握するという課題とを両立させている。
【0108】
同様に、上位カウンタ値「4」及び最終ビットフラグ「1」とともにマイクロSDカード12に保存されている下位カウンタ値「4」を参照することにより、起動サイクル4において処理された時系列データの数が4であることを容易に把握することができる。タイムスタンプは、下位ビットを順次インクリメントして発行されている。当該電源サイクルで発行されたタイムスタンプの総数がわかるということは、これらデータの一部が削除された場合でも、下位ビットの番号が不連続なデータが何らかの原因により削除されたことがわかることを意味する。また、最終ビットフラグが設定されたタイムスタンプが削除されてしまった場合は、何個のデータが削除されたかは特定できないが、少なくとも最終タイムスタンプを含む1個以上のデータが削除されたことがわかる。この性質は、不正プログラム侵入の痕跡を、保存されたログから事後的に解析する際に役立つ。外部からの侵入者がその痕跡を消すためにログを改ざん、消去など不正操作することはよく知られている。本実施形態のタイムスタンプはログ改ざんの検出に加えて消去の検出が可能であるため、もし削除が見つかったとしても、削除以前のログデータに攻撃の痕跡が一切検出できない場合、それ以前のデータは不正操作を受けていない可能性が高い。不意の電源断やソフトウェア不具合によってもデータ消失は起こりうるため、データ消失を攻撃によるものと特定するためには別途解析が必要となるが、データの改ざんや消去の検出機能がない場合と比較して攻撃の特定が容易になることは明らかである。
【0109】
ここで、最終ビットフラグを含むタイムスタンプデータは、ビット単価の安いSDカードなど汎用不揮発性メモリの任意のページに保存可能であることが重要である。本実施形態は最終ビットフラグによるタイムスタンプ発行制御を行うことで、電源断時の上位カウンタ等を保持する、相対的にビット単価の高いMCU内蔵不揮発性メモリの書き換えを行うことなくタイムスタンプ発行総数の特定とデータ消去の検出が実現できる。汎用フラッシュメモリとMCU内蔵不揮発性メモリのビット単価については、この後に詳述する。
【0110】
なお、本実施形態においてはこのように起動サイクル毎の時系列データの数を把握することができるため、全ての起動サイクルで処理された時系列データの総数を把握することも可能である。
【0111】
(まとめ)
上記したように本実施形態において、MCU11(制御部)は、時系列データの各々に対応するタイムスタンプを発行し、時系列データの順序を管理するために、情報処理装置10の起動(第1動作)に応じて上位カウンタ値(第1カウンタ値)を更新し、当該タイムスタンプの生成に応じて下位カウンタ値(第2カウンタ値)を更新する。また、本実施形態においては、時系列データ、当該時系列データに対応するタイムスタンプ及びカウンタ値をマイクロSDカード12に出力する。なお、本実施形態において、上記した上位カウンタ値はMCU11に内蔵されている不揮発性メモリ117(上位カウンタ値格納領域117a)に格納されて管理され、下位カウンタ値は不揮発性メモリ117には格納されず、カウンタ用内蔵メモリ(揮発性メモリ)に保持されて管理される。
【0112】
本実施形態においては、上記した構成により、タイムスタンプにより時系列データの改ざんを検証することができるとともに、カウンタ値(上位カウンタ値及び下位カウンタ値)により時系列データの順序保証を実現することができる。また、本実施形態においては、カウンタ値を管理するための寿命の長い不揮発性メモリ(EEPROM等)を別途用意することなく、MCU11に内蔵されている不揮発性メモリ117(フラッシュメモリ)を用いる構成であるので、時系列データの真正性を担保する仕組みを低コストで実現することができる。MCU11内蔵の不揮発性メモリ117は、アクセス制御機能117fやデバッグ機能の無効化により端子経由のデータアクセスを禁止することができるが、外付け汎用メモリは外部端子から自由に値を変更できてしまうため、カウンタ値や秘密鍵等の重要データの保存先はMCU内蔵フラッシュメモリとすべきである。しかしながら、フラッシュメモリに代表されるMCU内蔵メモリは書き換え回数と容量の制約が厳しく、また書き込み速度はSRAMと比較して遅い。本実施形態は、汎用メモリ上データの保護機能を提供するタイムスタンプ発行に不可欠なMCU内蔵メモリの書き換え回数削減により高頻度のタイムスタンプ発行を可能にする。換言すれば、本実施形態の構成によれば、上位カウンタ値の更新回数を通常タイムスタンプ発行回数と比較して頻度の低い回数とする(つまり、不揮発性メモリ117の更新回数を削減する)とともに、揮発性メモリと比較して書き込み速度の遅い不揮発性メモリ117への書き込みによる処理の遅延を緩和することで、高頻度のタイムスタンプ発行を可能とする。更に、起動サイクルにおける最終タイムスタンプを明示的に発行することにより、下位カウンタの保存を省略した場合であってもタイムスタンプの発行回数を確認可能な機能を提供する。
【0113】
なお、本実施形態においては、タイムスタンプ管理部116をハードウェアモジュールとして実現し、当該タイムスタンプ管理部116をMCU11上に実装した構成であるため、本実施形態において説明したセキュリティ機能はワンチップのMCU11で実現することができる。また、図4に説明した初期設定手順を行う起動用ファームウェアはROM112に格納されているものとしたが、格納先を不正アプリケーションによる改ざん防止対策が取られた書き換え可能不揮発性メモリとしてもよい。
【0114】
更に、本実施形態においては、時系列データ処理アプリケーション等が格納される不揮発性メモリ117(命令フラッシュメモリ)において上位カウンタ値を格納する上位カウンタ値格納領域117aが確保されている。一般的にMCU11に内蔵される不揮発性メモリ117(フラッシュメモリ)はセル面積に対する制御回路の面積が大きい。このため、例えば不揮発性メモリ117を分割する(つまり、不揮発性メモリ117の容量を物理的に分割された2つの不揮発性メモリで実現する)構成とすると、当該2つの不揮発性メモリが占める面積は、不揮発性メモリ117を1つ備えた場合に当該不揮発性メモリ117が占める面積よりも大きくなる(以下、分割損と表記)。本実施形態においては、不揮発性メモリ117(MCU11に内蔵されている不揮発性メモリ)を分割することなく用いることで分割損を回避するとともに、上位カウンタ値格納領域117aへのアクセスを情報処理装置10の起動時に限定することで、時系列データ処理アプリケーションの実行時におけるアクセス競合を回避することも可能である。
【0115】
図6図8の効果の説明)
また、本実施形態においては、情報処理装置10のシャットダウン(第2動作)が開始されたか否かを示す最終ビットフラグを設定し、当該最終ビットフラグをマイクロSDカード12に出力する構成により、上記した起動サイクル毎の時系列データの数を容易に把握することができる。
【0116】
更に、本実施形態においては、不揮発性メモリ117(秘密鍵格納領域117b)に秘密鍵が格納されており、時系列データに対応するタイムスタンプは、当該秘密鍵を用いてカウンタ値、最終ビットフラグ及び当該時系列データから発行されるメッセージ認証コードまたはデジタル署名であるものとする。本実施形態においては、このような構成により、マイクロSDカード12に保存された時系列データ、カウンタ値及び最終ビットフラグのうちの少なくとも1つの改ざんを検証することが可能となる。
【0117】
なお、本実施形態においてはマイクロSDカード12に保存された時系列データ等が物理アクセスにより改ざんされる場合について主に説明したが、例えばソフトウェア脆弱性があると、遠隔から送信された不正パケットにより不正プログラムを実行させるようなサイバー攻撃を受ける可能性がある。本実施形態によれば、このような不正プログラムが実行された結果として取得(または生成)される不正データに対してもタイムスタンプが発行されるが、このようなタイムスタンプは正規に発行されたタイムスタンプであるため、当該タイムスタンプでは当該不正データを検出するようなことはできない。しかしながら、上記したようなサイバー攻撃が成功したとしても、過去に戻ってタイムスタンプを発行する(つまり、過去の時系列データに対応するタイムスタンプを再生成する)ことはできないため、当該サイバー攻撃の期間(に相当するカウンタ値)を特定することができれば、当該期間に基づいて有効な過去の時系列データをサルベージ(救済)することは可能である。すなわち、本実施形態においては、サイバー攻撃が行われた場合であっても、過去の時系列データの真正性を担保することができる。
【0118】
よって、本実施形態に係る情報処理装置10は、マイクロSDカード12に対する物理アクセスによる改ざん及び遠隔サイバー攻撃の両方に対して有用である。
【0119】
なお、本実施形態においては、汎用の外付けの不揮発性メモリとしてマイクロSDカード12(メモリカード)を使用し、MCU11に内蔵されている不揮発性メモリ117がフラッシュメモリであるものとして説明したが、当該外付けの不揮発性メモリ及び当該MCU11に内蔵されている不揮発性メモリ117としては、他の不揮発性メモリが使用されても構わない。
【0120】
また、本実施形態においては、情報処理装置10の起動中に、当該情報処理装置10上で動作するソフトウェア(例えば、起動用ファームウェア等)のバージョンを識別するための識別情報(ハッシュ期待値またはバージョン番号等)に対応するタイムスタンプを発行し、当該タイムスタンプ及び当該識別情報をマイクロSDカード12に出力する。このような構成によれば、例えば情報処理装置10の予期しない動作によって時系列データが処理されていたような場合に、当該情報処理装置10において実行されていたソフトウェアのバージョン等を特定することができ、当該動作の解析等に利用することができる。
【0121】
なお、本実施形態においては上記したように情報処理装置10の起動中にソフトウェアのバージョンを識別するための識別情報に対応するタイムスタンプを発行するものとして説明したが、図8に示すように、本実施形態に係る情報処理装置10(MCU11)は、このようなタイムスタンプは発行せず、時系列データに対応するタイムスタンプのみを発行する構成としてもよい。
【0122】
図9の説明)
次に、上記した上位カウンタ値更新処理(図4に示すステップS4の処理)について説明するが、まず、図9を参照して、不揮発性メモリ117に含まれる上位カウンタ値格納領域117aについて説明する。
【0123】
不揮発性メモリ117がフラッシュメモリ(例えば、NAND型フラッシュメモリ等)である場合、当該不揮発性メモリ117はメモリセルアレイ(複数のメモリセル)を含み、当該メモリセルアレイは、複数のページから構成される。また、メモリセルアレイを構成する複数のページの各々は、複数のブロックを含む。なお、このような不揮発性メモリ117において、ページはデータの消去単位として機能し、ブロックはデータの書き込み動作(またはデータの読み込み動作)の単位である。
【0124】
ここで、図9には、1つのページを構成する複数のブロックが示されている。図9に示す例では、ページP1は、8つのブロックB0~B7を含む。このようなページP1が上位カウンタ値格納領域117aとして割り当てられているものとすると、例えば上位カウンタ値1は、データの書き込み動作の単位であるブロックB0に書き込まれる(格納される)。
【0125】
次に、例えば後述する上位カウンタ値更新処理が実行されることによって上位カウンタ値1が上位カウンタ値2に更新された場合には、当該上位カウンタ値2は、ブロックB1に書き込まれる。すなわち、本実施形態において、上位カウンタ値は、空いているブロックに追記する形式で書き込まれる(格納される)。
【0126】
同様に、上位カウンタ値2が上位カウンタ値3に更新された場合には当該上位カウンタ値3がブロックB2に書き込まれ、上位カウンタ値3が上位カウンタ値4に更新された場合には当該上位カウンタ値4がブロックB3に書き込まれる。
【0127】
なお、図9に示す例では、ブロックB4~B7にはデータ(上位カウンタ値)が書き込まれていないことが示されている。このため、上位カウンタ値4が更新された場合には、当該更新後の上位カウンタ値はブロックB4に書き込まれることになる。
【0128】
ところで、本実施形態においてはページがデータの消去単位であると説明したが、不揮発性メモリ117(フラッシュメモリ)においては、各ブロックB0~B7に書き込まれたデータを上書きすることができず、一旦ページ単位でデータを消去した後に、再度データを書き込むという動作を行う必要がある。
【0129】
このため、例えば上位カウンタ値が順次追記されることによってブロックB7まで書き込まれた場合には、ページP1(ブロックB0~B7)に書き込まれたデータを消去した後に、ブロックB0から再度上位カウンタ値を書き込む(追記する)ことになる。
【0130】
なお、図9においては1つのページP1に上位カウンタ値が書き込まれる(格納される)ものとして説明したが、当該上位カウンタ値は複数のページに書き込まれる構成であってもよい(つまり、上位カウンタ値格納領域117aに複数のページが割り当てられていてもよい)。
【0131】
また、不揮発性メモリ117(メモリセル)を構成する各ページにおいては複数のブロックの各々にブロック番号が割り当てられており、上位カウンタ値は、例えば当該ブロック番号が昇順となるように追記されるものとする。なお、図9に示す例では、ブロックB0~B7のブロック番号は、それぞれ「0」~「7」であるものとする。
【0132】
以下の説明においては、不揮発性メモリ117に含まれる上位カウンタ値格納領域117aにおいて上位カウンタ値が図9において説明したように書き込まれる(格納される)ものとして説明する。
【0133】
図10の説明)
次に、図10のフローチャートを参照して、上位カウンタ値更新処理の処理手順の一例について説明する。以下の説明においては、上位カウンタ値格納領域117aに割り当てられている不揮発性メモリ117のページを、便宜的に、対象ページと称する。
【0134】
まず、不揮発性メモリ117に含まれる上位カウンタ値格納領域117aに対するアクセス権限が付与されたCPU111は、当該上位カウンタ値格納領域117aにおいて最後に上位カウンタ値が書き込まれたブロック(以下、最終書き込みブロックと表記)をサーチし、当該最終書き込みブロックに割り当てられているブロック番号(以下、最終書き込みブロック番号と表記)を取得する(ステップS31)。図9に示す例では、最終書き込みブロックはブロックB3であるため、ステップS31においては、最終書き込みブロック番号「3」が取得される。なお、上位カウンタ値格納領域117aにおける最終書き込みブロックは、例えば当該最終書き込みブロックを指し示すポインタ等により管理されていればよい。
【0135】
次に、CPU111は、最終書き込みブロックに書き込まれている上位カウンタ値を取得する(ステップS32)。
【0136】
ここで、上記したステップS31において取得された最終書き込みブロック番号が、対象ページに含まれるブロックのうちブロック番号が最大のブロックに割り当てられているブロック番号(以下、最大ブロック番号)であるか否かが判定される(ステップS33)。なお、対象ページに含まれる複数のブロックに対してブロック番号が昇順となるように上位カウンタ値が書き込まれる場合、最大ブロック番号が割り当てられているブロックは、対象ページ(複数のブロック)の中で上位カウンタ値が最後に書き込まれるブロックに相当する。
【0137】
最終書き込みブロック番号が最大ブロック番号であると判定された場合(ステップS33のYES)、対象ページに含まれる全てのブロックに上位カウンタ値が書き込まれた状態であるため、当該対象ページに書き込まれている上位カウンタ値(つまり、対象ページ内のデータ)を消去する処理が実行される(ステップS34)。
【0138】
ステップS35の処理が実行されると、CPU111は、次に上位カウンタ値が書き込まれるブロックに割り当てられているブロック番号(以下、書き込みブロック番号)を「0」(つまり、対象ページに含まれる複数のブロックのうちブロック番号が最小のブロックに割り当てられているブロック番号)に設定する(ステップS35)。
【0139】
次に、CPU111は、ステップS32において取得された上位カウンタ値をインクリメントする(ステップS36)。
【0140】
ステップS36においてインクリメントされた上位カウンタ値は、ステップS35において設定されたブロック番号「0」が割り当てられたブロックに書き込まれる(ステップS37)。
【0141】
一方、最終書き込みブロック番号が最大ブロック番号でないと判定された場合(ステップS33のNO)、最終書き込みブロック番号をインクリメントした値(番号)を書き込みブロック番号として設定する(ステップS38)。
【0142】
ステップS38の処理が実行されると、ステップS36及びS37の処理が実行される。この場合、ステップS37においては、ステップS38において設定された書き込みブロック番号が割り当てられているブロックに、ステップS36においてインクリメントされた上位カウンタ値が書き込まれればよい。
【0143】
上記した上位カウンタ値更新処理によれば、情報処理装置10の起動に応じて適切に上位カウンタ値を更新し、不揮発性メモリ117(上位カウンタ値格納領域117a)に書き込むことができる。
【0144】
なお、図9及び図10において説明したブロック番号等は一例であり、本実施形態においては、情報処理装置10の起動に応じて更新される上位カウンタ値が上位カウンタ値格納領域117aにおいて適切に管理される構成であればよい。
【0145】
図9図10の効果の説明)
ここで、フラッシュメモリの特性を利用してMCU内蔵フラッシュによる上位ビットのカウント回数を増やす効果を説明する。本実施形態において、情報処理装置10の起動に応じて更新される上位カウンタ値は不揮発性メモリ117に格納されるが、当該上位カウンタ値は、不揮発性メモリ117(フラッシュメモリ)の少なくとも1つのページに対して追記形式で書き込まれる。なお、追記形式とは、アドレスを変えながら最小書き込み単位(ブロック単位)でデータを書き込む形式である。
【0146】
この場合において、例えば1つのページに対して書き込まれるデータのサイズを4KB(4096B)とし、最小書き込み単位(つまり、1つのブロックに書き込まれるデータのサイズ)を16Bとすると、1つのページに対して上位カウンタ値を4096/16=256回書き込むことができ、1つのページに含まれる全てのブロックに上位カウンタ値が書き込まれた場合には、当該ページに書き込まれているデータを消去することによって、更新された上位カウンタ値を当該ページに対して再度書き込むことができる。
【0147】
これによれば、例えば不揮発性メモリ117が寿命に到達するまでの書き換え回数(つまり、書き換え寿命)が10万回である場合であって、上記した不揮発性メモリ117に含まれる上位カウンタ値格納領域117aに1つのページが割り当てられている場合には、当該不揮発性メモリ117が寿命に到達するまでに256×10^5回、当該上位カウンタ値を更新する(つまり、書き込む)ことができる。
【0148】
なお、20年は630×10^6秒であるが、仮に情報処理装置10が10秒に1回起動(再起動)するような動作を繰り返した場合には、20年間で上位カウンタ値を不揮発性メモリ117(上位カウンタ値格納領域117a)に63×10^6回書き込む必要がある。この場合には、書き換え回数が10万回である不揮発性メモリ117の3ページ分を上位カウンタ値格納領域117aに割り当てることによって、20年以上もの間、上位カウンタ値を管理することが可能となる。
【0149】
情報処理装置10が正常に動作していれば上記したように10秒に1回起動するような動作を行うことはないが、例えば遠隔からのサイバー攻撃等によりこのような動作が強制的に行われた場合であっても、不揮発性メモリ117が寿命に到達するまで20年以上確保することができる。すなわち、本実施形態に係る情報処理装置10(MCU11)は、例えば長期間にわたって高頻度で取得される時系列データを保全する用途に適しているといえる。
【0150】
ここでは上位カウンタ値について説明したが、下位カウンタ値については、当該下位カウンタ値がオーバーフローしない程度の揮発性メモリ(カウンタ用内蔵メモリ)の領域が割り当てられていればよい。
【0151】
図11の説明)
更に、本実施形態においては、マイクロSDカード12に保存されているカウンタ値(上位カウンタ値及び下位カウンタ値)及び最終ビットフラグに基づいて起動サイクル毎の時系列データの数を把握することによって当該時系列データの総数を把握することができるものとして説明したが、当該時系列データの総数は、不揮発性メモリ117に含まれる所定の領域(不揮発性メモリ117に確保された上位カウンタ値格納領域117aとは異なる領域)に格納しておく構成としてもよい。なお、この時系列データの総数が格納される所定の領域は、例えば追加情報格納領域117dであってもよい。
【0152】
ここで、図11は、時系列データの総数を不揮発性メモリ117(追加情報格納領域117d)に格納しておく場合のMCU11の処理手順の一例を示すフローチャートである。ここでは、時系列データ処理アプリケーションの実行が開始された後のMCU11の処理手順について説明する。なお、図11に示す処理が実行される時点では、前回の起動サイクルが終了するまでに処理された時系列データの総数(以下、前回までの時系列データの総数と表記)が不揮発性メモリ117に格納されているものとする。
【0153】
まず、図5に示すステップS21~S26の処理に相当するステップS41~S46の処理が実行される。
【0154】
ステップS46において最終タイムスタンプ発行済フラグに最終ビットフラグ「1」が設定された場合、時系列データの総数が算出され、当該算出された時系列データの総数が不揮発性メモリ117に格納される(ステップS47)。なお、上記したように不揮発性メモリ117には前回までの時系列データの総数が格納されているが、ステップS47においては、当該前回までの時系列データの総数に下位カウンタ値(つまり、今回の起動サイクルで処理された時系列データの数)を加算した時系列データの総数が不揮発性メモリ117に格納されればよい。
【0155】
ステップS47の処理が実行されると、図5に示すステップS27~S29の処理に相当するステップS48~S50の処理が実行される。
【0156】
このように時系列データの総数を不揮発性メモリ117に格納しておく構成とすることで、不正アプリケーションにより最終データフラグが設定されたタイムスタンプが削除された場合においても、発行されたタイムスタンプの総発行回数を確認することができる。
【0157】
ここでは詳細な説明を省略するが、上記した時系列データの総数は、上位カウンタ値と同様に、追記形式で不揮発性メモリ117に書き込まれるものとする。これによれば、不揮発性メモリ117の長寿命化を図ることができる。
【0158】
なお、時系列データの総数は最終タイムスタンプ発行済フラグ116hに最終ビットフラグ「1」が設定されたタイミング(つまり、情報処理装置10がシャットダウンされるタイミング)で不揮発性メモリ117に書き込まれる(更新される)ため、当該時系列データの総数が不揮発性メモリ117に書き込まれる回数と、情報処理装置10が起動されるタイミングで更新される上位カウンタ値が不揮発性メモリ117に書き込まれる回数とは、同一である。このため、時系列データの総数が格納される不揮発性メモリ117の領域としては、上位カウンタ値が格納される領域(上位カウンタ値格納領域117a)と同程度の領域を割り当てておくことが好ましい。
【0159】
また、本実施形態においては、例えば情報処理装置10の起動(つまり、情報処理装置10を起動する処理の実行)に応じて上位カウンタ値が更新され、当該情報処理装置10のシャットダウン(つまり、情報処理装置10を停止する処理の実行)が開始された際に最終ビットフラグ「1」が設定されるものとして説明したが、当該上位カウンタ値が更新される動作(第1動作)及び最終ビットフラグ「1」が設定される動作(第2動作)は、他の動作であっても構わない。
【0160】
(リモートアテステーションの説明)
ここで、上記したように情報処理装置10がサーバ装置20と通信可能に接続されている場合、当該サーバ装置20から情報処理装置10に対して各種要求が送信され、情報処理装置10は当該要求に基づく処理を実行する場合がある。
【0161】
なお、サーバ装置20から情報処理装置10に対して送信される要求には、例えばアテステーション要求が含まれる。このアテステーション要求は遠隔の情報処理装置10が正常に動作しているかをサーバ装置20が確認するための要求であり、当該アテステーション要求が受信された場合、情報処理装置10は、当該アテステーション要求に対する応答(つまり、確認結果)をサーバ装置20に対して返す処理を実行する。
【0162】
本実施形態においては、このようなアテステーション要求に基づく処理(以下、アテステーション処理と表記)が実行される際に、上位カウンタ値を更新する構成としてもよい。
【0163】
以下、図12のフローチャートを参照して、アテステーション処理(第1動作)に応じて上位カウンタ値を更新する際の処理手順の一例について説明する。
【0164】
まず、CPU111によって時系列データ処理アプリケーションが実行されている状態で、サーバ装置20からアテステーション要求(リモートアテステーションメッセージ)が情報処理装置10に送信された場合を想定する。この場合、MCU11は、サーバ装置20から送信されたアテステーション要求を取得する(ステップS61)。なお、アテステーション要求は、サーバ装置20から例えば定期的に送信されるものとする。
【0165】
ステップS61の処理が実行されると、上記した時系列データ処理アプリケーションの実行が中断され、CPU111は、ROM112に格納されているアテステーションファームウェア(FW)を実行し、アテステーション処理を開始する(ステップS62)。この場合、アテステーションファームウェアを実行するCPU111には、上記したアクセス権限が付与される。
【0166】
ここで、例えばアテステーション要求はサーバ装置20において発行された秘密鍵を用いて暗号化されている場合がある。この場合、CPU111は、サーバ装置20において発行されている公開鍵(アテステーション要求を暗号化するために用いられた秘密鍵と対となる公開鍵)を用いて当該アテステーション要求の検証を行う(ステップS63)。なお、このアテステーション要求の検証を行うための公開鍵は、予め不揮発性メモリ117の所定の領域等に格納されていればよい。
【0167】
ステップS63の処理が実行されると、当該ステップS63におけるアテステーション要求の検証が成功したか否かが判定される(ステップS64)。
【0168】
アテステーション要求の検証が成功していない(つまり、失敗した)と判定された場合(ステップS64のNO)、図12に示す処理(つまり、アテステーション処理)は異常終了される。
【0169】
一方、アテステーション要求の検証が成功したと判定された場合(ステップS64)、CPU111は、当該アテステーション要求に含まれるシーケンス番号を取得する(ステップS65)。なお、このシーケンス番号は、例えば上記したように定期的に送信されるアテステーション要求に順番に付される番号である。以下の説明においては、ステップS65において取得されたシーケンス番号を第1シーケンス番号と称する。
【0170】
ここで、不揮発性メモリ117に含まれる追加情報格納領域117dには、前回のアテステーション要求(つまり、ステップS61において取得されたアテステーション要求よりも前に取得されたアテステーション要求)に含まれていたシーケンス番号が格納されているものとする。
【0171】
この場合、CPU111は、追加情報格納領域117dに格納されているシーケンス番号(以下、第2シーケンス番号と表記)を取得する(ステップS66)。
【0172】
次に、上記した第1シーケンス番号が第2シーケンス番号以下であるか否かが判定される(ステップS67)。
【0173】
シーケンス番号がサーバ装置20から定期的に送信されるアテステーション要求に対して昇順に付される番号であるものとすると、第1シーケンス番号が第2シーケンス番号以下である場合には、ステップS61において取得されたアテステーション要求は、過去にサーバ装置20から送信されたアテステーション要求等である可能性があると判別することができる。
【0174】
このため、第1シーケンス番号が第2シーケンス番号以下であると判定された場合(ステップS67のNO)、図12に示す処理は異常終了される。
【0175】
一方、第1シーケンス番号が第2シーケンス番号以下でないと判定された場合(ステップS67のYES)、上記した第1シーケンス番号を第2シーケンス番号として不揮発性メモリ117(追加情報格納領域117d)に格納する(ステップS68)。
【0176】
ステップS68の処理が実行されると、上記した図4に示すステップS4~S6の処理に相当するステップS69~S71の処理が実行される。
【0177】
次に、CPU111は、アテステーション処理を実行する(ステップS72)。このアステーション処理においては、例えばスタックの破壊等、実行中のファームウェア(アテステーションファームウェア)の内部データの状態を検出する処理が実行される。
【0178】
ステップS72の処理が実行されると、当該ステップS72において実行されたアテステーション処理の結果がサーバ装置20に送信されるが、タイムスタンプ発行部116dは、上記したアテステーション要求、当該アテステーション処理の結果、カウンタ値及び最終ビットフラグの結合データに対応するタイムスタンプを発行する(ステップS73)。なお、このステップS73の処理は上記した図4に示すステップS7の処理等に相当する処理であるため、ここではその詳しい説明を省略する。
【0179】
ステップS73の処理が実行されると、図4に示すステップS8及びS9の処理に相当するステップS74及びS75の処理が実行される。
【0180】
ステップS75の処理が実行されると、アテステーション要求によって中断された時系列データ処理アプリケーションの実行が再開される(ステップS76)。
【0181】
なお、図12においては示されていないが、ステップS74においてSRAM113に保持されたタイムスタンプは、アテステーション要求、アテステーション処理の結果、カウンタ値及び最終ビットフラグとともにマイクロSDカード12に出力され、当該マイクロSDカード12に保存される。
【0182】
ステップS73においては、アテステーション要求と当該アテステーション処理の結果とカウンタ値との結合データに対応するタイムスタンプが発行されるものとして説明したが、例えばアテステーション処理の結果とカウンタ値との結合データに対応するタイムスタンプが発行されてもよい。この場合、タイムスタンプは、アテステーション処理の結果、カウンタ値及び最終ビットフラグとともにマイクロSDカード12に出力されればよい。
【0183】
また、上記したようにサーバ装置20からアテステーション要求が送信された場合には当該アテステーション処理に応じて上位カウンタ値が更新されるため、例えばステップS69の処理が実行されるよりも前のタイミングで、上記した図5に示すステップS26~S28の処理を実行するようにしてもよい。この場合、ステップS69の処理が実行される際には、最終タイムスタンプ発行済フラグ116hに最終ビットフラグ「0」を再設定すればよい。
【0184】
図12において説明したようにアテステーション要求、アテステーション処理の結果、カウンタ値及び最終ビットフラグに対応するタイムスタンプを発行することにより、当該アテステーション要求及びアテステーション処理の結果に対する偽造を防止するとともに、カウンタ値によりアテステーション処理の実施時点を特定するようなことが可能となる。
【0185】
上記したように本実施形態においては、アテステーション要求のようなサーバ装置20から送信される所定の要求に基づく処理の実行に応じて上位カウンタ値を更新するような構成とすることも可能である。
【0186】
なお、本実施形態においては最終タイムスタンプ発行済フラグ116hに最終ビットフラグが設定されるものとして説明したが、本実施形態は、上位カウンタ値を不揮発性メモリ117(上位カウンタ値格納領域117a)において管理し、下位カウンタ値を揮発性メモリ(カウンタ用内蔵メモリ)において管理する構成であれば、当該最終ビットフラグを用いない構成としてもよい。
【0187】
(ソフトウェア処理の説明)
ここで、本実施形態においてはタイムスタンプの発行を含むセキュリティ機能(つまり、タイムスタンプ管理部116)がハードウェアモジュールとして実現されるものとして説明したが、当該セキュリティ機能はソフトウェアによる機能モジュールとして実現されても構わない。
【0188】
図13は、上記した本実施形態におけるセキュリティ機能がソフトウェアによる機能モジュールとして実現される場合のMCU11の構成の一例を示すブロック図である。
【0189】
なお、図13の説明においては、上記した図3と同様の部分については同一の参照符号を付してその詳しい説明を省略し、当該図3と異なる部分について述べる。
【0190】
図13に示すように、MCU11はSRAM113を含むが、当該SRAM113には、本実施形態において説明したカウンタレジスタ116fに相当するカウンタに割り当てられたカウンタ用メモリ113a(上位ビット格納部116f-1に相当する領域113a-1及び下位ビット格納部116f-2に相当する領域113a-2)、及び最終タイムスタンプ発行済フラグ116hに相当する最終タイムスタンプ発行済フラグ113bが含まれる。また、SRAM113には、時系列データ処理アプリケーションが実行される際に用いられるアプリケーション用領域113c等が更に含まれている。また、カウンタ値ならびに最終タイムスタンプ発行済フラグをアプリケーション(の権限を取得した不正プログラム)による改ざんから保護するため、これらを含むメモリ領域にはアプリケーション用領域113cから隔離するメモリ保護113dが適用される。メモリ保護113d実現の手段としてはCPU111内蔵のメモリ保護機能(MPU)などが可能である。
【0191】
また、不揮発性メモリ117には、例えばタイムスタンプ発行ファームウェア(FW)117g及び初期化ファームウェア(FW)117hが格納されている。図13に示す構成の場合には、上記したセキュリティ機能(図3に示すタイムスタンプ管理部116の機能)は、CPU111(つまり、MCU11のコンピュータ)がタイムスタンプ発行ファームウェア117gを実行することによって実現される。また、初期化ファームウェア117hは、本実施形態において図4等で説明した初期化ファームウェアに相当する。SRAMと同様に、アプリケーション(の権限を取得した不正プログラム)による改ざんや秘密鍵の不正取得から保護するため、アプリケーション格納領域117e以外の領域117fは、アプリケーションからのアクセスが禁止される。これもMPUなどの手段が可能である。
【0192】
また、図13に示す例では、MCU11は、暗号アクセラレータ119を含む。図13に示す構成においては、ソフトウェア処理よってタイムスタンプが発行されるが、当該タイムスタンプの発行時におけるハッシュ値の計算は、暗号アクセラレータ119を用いて行われてもよい。これによれば、タイムスタンプの発行処理を高速化することができる。
【0193】
なお、図13に示す構成は一例であり、上記したセキュリティ機能がソフトウェアによって実現されるのであれば、MCU11(情報処理装置10)は異なる構成であってもよい。
【0194】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0195】
10…情報処理装置、11…MCU(制御部)、12…マイクロSDカード(第2不揮発性メモリ)、20…サーバ装置、30…ネットワーク、40…センサ、111…CPU、112…ROM、113…SRAM、113a…カウンタ用メモリ、113b…最終タイムスタンプ発行済フラグ、113c…アプリケーション用領域、114…通信I/F、115…A/Dコンバータ、116…タイムスタンプ管理部、116a…データ入力レジスタ、116b…タイムスタンプ出力レジスタ、116c…最終タイムスタンプ要求レジスタ、116d…タイムスタンプ発行部、116e…アクセス制御部、116f…カウンタレジスタ、116f-1…上位ビット格納部、116f-2…下位ビット格納部、116g…秘密鍵レジスタ、116h…最終タイムスタンプ発行済フラグ、117…不揮発性メモリ(第1不揮発性メモリ)、117a…上位カウンタ値格納領域(第1領域)、117b…秘密鍵格納領域、117c…ハッシュ期待値格納領域、117d…追加情報格納領域(第2領域)、117e…アプリケーション格納領域、117f…アクセス制御機能、118…SDカードI/Fコントローラ(出力部)。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13