(57)【特許請求の範囲】
【請求項１】
暗号通信における証明書の有効性を検証するための内部時刻情報を保持する通信端末であって、
外部から外部時刻情報を取得するための通信インターフェースと不揮発性メモリとプロセッサとを備え、
前記プロセッサは、供給されるプログラムに基づいて、外部時刻情報を周期的に取得し、取得した外部時刻情報に基づいて較正された前記内部時刻情報を、暗号化した後に前記不揮発性メモリに書き込み、
前記プロセッサは、前記通信端末への電源投入後の初期化シーケンスにおいて、前記プログラムに基づいて、前記電源投入以前で最後に前記不揮発性メモリに書き込まれた内部時刻情報を読み出して復号し、外部時刻情報を取得し、読み出した前記内部時刻情報と比較することによって、取得した当該外部時刻情報の正当性を検証する、
通信端末。
【請求項２】
請求項１において、前記通信装置は、単調に増加または減少するカウンタをさらに備え、
前記カウンタは、前記電源投入前の最後の電源遮断の直前に保持していたカウント値と前記電源投入後におけるカウント値とが前記単調な増加または減少の連続性を保っており、
前記プロセッサは、前記プログラムに基づいて、前記暗号化を行うときの前記カウンタのカウント値に基づいて暗号鍵を生成する、
通信端末。
【請求項３】
請求項２において、
前記プロセッサは、前記プログラムに基づいて、前記暗号化を行うときに、前記カウンタのカウント値及び前記較正された内部時刻情報に対して、それぞれメッセージ認証符号を付与し、
前記プロセッサは、前記通信端末への電源投入後の初期化シーケンスにおいて、前記プログラムに基づいて、それぞれ付与されたメッセージ認証符号に基づいて、前記カウント値と前記内部時刻情報の正当性を確認する、
通信端末。
【請求項４】
請求項３において、
前記プロセッサは、前記プログラムに基づいて、前記暗号化を行うときに、前記カウンタのカウント値及び前記較正された内部時刻情報に対してそれぞれ付与したメッセージ認証符号を、前記暗号化された内部時刻情報とともに、前記不揮発性メモリに書き込み、
前記プロセッサは、前記通信端末への電源投入後の初期化シーケンスにおいて、前記プログラムに基づいて、前記不揮発性メモリから、前記カウンタのカウント値及び前記較正された内部時刻情報に対してそれぞれ付与したメッセージ認証符号を、前記暗号化された内部時刻情報とともに、読み出してそれぞれの正当性を確認する、
通信端末。
【請求項５】
請求項４において、
前記プロセッサは、前記プログラムに基づいて、前記カウンタのカウント値を単調に増加または減少する、
通信端末。
【請求項６】
請求項５において、
前記不揮発性メモリは、前記プロセッサとは異なる半導体チップとして実装され、前記プロセッサ以外からのアクセスが制限されるセキュア記憶領域と、通常記憶領域とを備え、
前記通常記憶領域は、前記プログラムを保持し、
前記カウンタのカウント値、前記暗号化された内部時刻情報、及び前記較正された内部時刻情報に対してそれぞれ付与したメッセージ認証符号は、前記セキュア記憶領域に保持される、
通信端末。
【請求項７】
請求項４において、
前記通信端末は、前記プロセッサと、暗号エンジンとを同一半導体チップ上に備え、
前記カウンタは、前記暗号エンジン内に実装され、
前記プロセッサは、前記プログラムに基づいて、前記暗号エンジンを使って前記暗号化及び前記復号の機能を加速する、
通信端末。
【請求項８】
請求項２において、前記通信装置は、当該通信装置への電源供給が遮断されても電源が維持されるリアルタイムクロックを備え、前記リアルタイムクロックは前記カウンタとして機能する、
通信端末。
【請求項９】
請求項１において、前記通信装置は、乱数発生器をさらに備え、
前記プロセッサは、前記乱数発生器が発生する乱数に基づいて暗号鍵を生成する、
通信端末。
【請求項１０】
請求項１において、
前記暗号通信は、車車間または路車間通信を含み、車両に搭載される通信端末であって、
前記通信インターフェースは、ＧＰＳモジュールとの間の通信インターフェースである、
通信端末。
【請求項１１】
請求項１０に記載される前記通信端末が搭載される、自動車。
【請求項１２】
外部から外部時刻情報を取得するための通信インターフェースと不揮発性メモリとプロセッサとを備え、内部時刻情報を保持する通信端末において、前記プロセッサで実行されることによって、暗号通信における証明書の有効性を検証するためのプログラムであって、
前記プロセッサに、外部時刻情報を周期的に取得させ、取得した外部時刻情報に基づいて較正された前記内部時刻情報を暗号化させ、暗号化した後に前記不揮発性メモリに書き込ませ、
前記通信端末への電源投入後の初期化シーケンスにおいて、前記プロセッサに、前記電源投入以前で最後に前記不揮発性メモリに書き込まれた内部時刻情報を読み出して復号させ、新たに外部時刻情報を取得させ、読み出した前記内部時刻情報と比較させることによって、新たに取得した当該外部時刻情報の正当性を検証させる、
プログラム。
【請求項１３】
請求項１２において、前記通信装置は、単調に増加または減少するカウンタをさらに備え、
前記カウンタは、前記電源投入前の最後の電源遮断の直前に保持していたカウント値と前記電源投入後におけるカウント値とが前記単調な増加または減少の連続性を保っており、
前記プログラムは、前記プロセッサに前記暗号化を実行させるときに、前記カウンタのカウント値に基づいて暗号鍵を生成させる、
プログラム。
【請求項１４】
請求項１３において、
前記プログラムは、前記プロセッサに前記暗号化を実行させるときに、前記カウンタのカウント値及び前記較正された内部時刻情報に対して、それぞれメッセージ認証符号を付与させ、
前記プログラムは、前記通信端末への電源投入後の初期化シーケンスにおいて、前記プロセッサに、それぞれ付与されたメッセージ認証符号に基づいて、前記カウント値と前記内部時刻情報の正当性を確認させる、
プログラム。
【請求項１５】
請求項１４において、
前記プログラムは、前記プロセッサに前記暗号化を実行させるときに、前記カウンタのカウント値及び前記較正された内部時刻情報に対してそれぞれ付与したメッセージ認証符号を、前記暗号化された内部時刻情報とともに、前記不揮発性メモリに書き込ませ、
前記プログラムは、前記通信端末への電源投入後の初期化シーケンスにおいて、前記プロセッサに、前記不揮発性メモリから、前記カウンタのカウント値及び前記較正された内部時刻情報に対してそれぞれ付与したメッセージ認証符号を、前記暗号化された内部時刻情報とともに、読み出してそれぞれの正当性を確認させる、
プログラム。
【請求項１６】
請求項１５において、
前記プログラムは、前記プロセッサに、前記カウンタのカウント値を単調に増加または減少させる、
プログラム。
【請求項１７】
請求項１６において、
前記不揮発性メモリは、前記プロセッサとは異なる半導体チップとして実装され、前記プロセッサ以外からのアクセスが制限されるセキュア記憶領域と、通常記憶領域とを備え、
前記通常記憶領域は、前記プログラムを保持し、
前記カウンタのカウント値、前記暗号化された内部時刻情報、及び前記較正された内部時刻情報に対してそれぞれ付与したメッセージ認証符号は、前記セキュア記憶領域に保持される、
プログラム。
【請求項１８】
請求項１５において、
前記通信端末は、前記プロセッサと、暗号エンジンとを同一半導体チップ上に備え、
前記カウンタは、前記暗号エンジン内に実装され、
前記プログラムは、前記暗号エンジンを使って前記暗号化及び前記復号の機能を加速する、
プログラム。
【請求項１９】
請求項１３において、前記通信装置は、当該通信装置への電源供給が遮断されても電源が維持されるリアルタイムクロックを備え、前記リアルタイムクロックは前記カウンタとして機能する、
プログラム。
【請求項２０】
請求項１２において、前記通信装置は、乱数発生器をさらに備え、
前記プログラムは、前記プロセッサに、前記乱数発生器が発生する乱数に基づいて暗号鍵を生成させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信端末およびその通信端末で実行されるプログラムに関し、特に暗号通信における証明書の有効性を検証するための時刻情報を外部から取得して内部に保持する通信端末、及びその時刻情報に対する攻撃を検出するためのセキュリティプログラムに好適に利用できるものである。
【背景技術】
【０００２】
自動車におけるＶ２Ｘ（Vehicle to X）通信（車車間、路車間、等の通信）システムでは、証明書の有効期間を確認するために、時刻情報の信頼性が重要となってくる。これは、攻撃者が通常にＶ２Ｘシステム内で流れるメッセージを受信し、そのメッセージをそのまま送付する、いわゆるリプレイアタックとよばれる攻撃を防ぐためである。このため、Ｖ２Ｘ通信に参加する車両の車載端末自身が保持する時刻情報そのものにも、信頼性が要求される。
【０００３】
特許文献１には、共通鍵暗号方式を用いた路車間通信システムにおける暗号通信システムが開示されている。車載端末は、路側機との通信が可能なエリアに進入するたびに、ＧＰＳ（Global Positioning System ）情報を取得して格納し、合せて取得したＧＰＳ情報をサーバに送信することにより、サーバとの間で同一のデータを共有する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２２８０５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００６】
Ｖ２Ｘ通信では、１：多のブロードキャスト通信がサポートされている。このため、ブロードキャストされたメッセージがリプレイアタックに利用される恐れがある。これを防ぐために、証明書に有効期限を設けて、一定期間を経過した証明書を失効させる対策が講じられる。このときに重要なのが時刻情報である。特許文献１に記載される暗号通信システムでは、時刻情報をＧＰＳから取得した上でサーバとの間で共有することにより、信頼性を担保している。
【０００７】
このとき、ＧＰＳから取得した時刻情報自体が改竄された上でのリプレイアタックには、未だ脆弱であることがわかった。ＧＰＳから取得する時刻情報は、通常の走行時などでは、改竄されるおそれは少ないが、駐車中などにＧＰＳモジュールが不当に改造されることにより、時刻情報が改竄される脅威があることがわかった。
【０００８】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、下記の通りである。
【００１０】
すなわち、暗号通信における証明書の有効性を検証するための内部時刻情報を保持する通信端末であって、外部から外部時刻情報を取得するための通信インターフェースと不揮発性メモリとプロセッサとを備え、以下のように動作する。
【００１１】
プロセッサは、外部時刻情報を周期的に取得し、取得した外部時刻情報に基づいて較正された内部時刻情報を、暗号化した後に不揮発性メモリに書き込む。
【００１２】
プロセッサは、通信端末への電源投入後の初期化シーケンスにおいて、電源投入以前で最後に不揮発性メモリに書き込まれた内部時刻情報を読み出して復号し、新たに外部時刻情報を取得し、読み出した前記内部時刻情報と比較することによって、取得した当該外部時刻情報の正当性を検証する。
【発明の効果】
【００１３】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、外部から取得する外部時刻情報が改竄されているなどの攻撃を受けている場合に、不正な時刻情報と判断することができ、攻撃に対処することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施形態１に係る通信端末の動作を示すフロー図である。
【図２】図２は、Ｖ２Ｘの車載通信端末への適用例を模式的に示す説明図である。
【図３】図３は、通信端末の構成例を示すブロック図である。
【図４】図４は、通信端末に実装される機能の構成例を示す階層図である。
【図５】図５は、実施形態２に係る通信端末の動作を示すフロー図である。
【図６】図６は、通信端末の別の構成例を示すブロック図である。
【図７】図７は、通信端末のさらに別の構成例を示すブロック図である。
【発明を実施するための形態】
【００１６】
実施の形態について詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００１７】
〔実施形態１〕
図１は、実施形態１に係る通信端末の動作を示すフロー図である。本実施形態における通信端末は、暗号通信における証明書の有効性を検証するための内部時刻情報を保持する通信端末であって、例えば、Ｖ２Ｘ通信のための車載通信端末である。外部から外部時刻情報を取得するための通信インターフェースと不揮発性メモリとプロセッサとを備える。図１には、外部時刻情報としてのＧＰＳ情報を提供するＧＰＳモジュール、当該通信端末で動作するアプリケーションプログラムとミドルウェア、及び、不揮発性メモリとしてのフラッシュメモリの動作フローが、上から下への時間経過として示される。
【００１８】
図２は、Ｖ２Ｘの車載通信端末への適用例を模式的に示す説明図である。実施形態１に係る通信端末の一実施の形態は、自動車１００に搭載されるＶ２Ｘモジュール３０である。Ｖ２Ｘモジュール３０は、ナビゲーション機能等を提供するインフォテインメント装置５０に接続されるＧＰＳモジュール４０と、直接または間接的に接続され、外部時刻情報としてのＧＰＳ情報を取得することができるように構成されている。Ｖ２Ｘモジュール３０とインフォテインメント装置５０は、ゲートウェイ（ＧＷ：Gate Way）６０を介してＦｌｅｘＲａｙ（登録商標）、ＣＡＮなどの車載ネットワーク７０を介して、車内の他の電子機器（不図示）と接続される。Ｖ２Ｘモジュール３０及びインフォテインメント装置５０は、それぞれ或いは一方のみが、内部時刻情報（Ｌｏｃａｌ  Ｔｉｍｅ）を保持している。
【００１９】
図３は、通信端末の構成例を示すブロック図である。Ｖ２Ｘモジュール３０は、ＣＰＵ１、Ｉ／Ｏ６、ＲＡＭ７、周辺モジュール５、暗号エンジン（Ｃｒｙｐｔ）４などがバス１０を介して相互に接続された、ＳｏＣ２０とフラッシュメモリ２とを備える。ここで、ＳｏＣはSystem on a Chipの略で、単一の半導体基板上に集積されたシステムＬＳＩ（Large Scale Integrated circuit）である。ＣＰＵはCentral Processing Unitの略であり、供給されるプログラムに従って命令を実行する、一般のプロセッサである。詳しくは後述するが、バス１０にはリアルタイムクロック（ＲＴＣ）９が接続されていてもよい。フラッシュメモリ２０には、ＣＰＵ１で動作するアプリケーションプログラムやミドルウェアが格納されている通常の記憶領域の他に、ＣＰＵ１以外からのアクセスが制限されるセキュアな記憶領域（Ｓｅｃｕｒｅ  ｓｔｏｒａｇｅ  ａｒｅａ）が設けられている。Ｖ２Ｘモジュール３０は、例えばＩ／Ｏ６を介して接続される、外部のＧＰＳモジュール４０に対して時刻情報を要求し、外部時刻情報を取得することができる。
【００２０】
図４は、通信端末に実装される機能の構成例を示す階層図である。通信端末がＶ２Ｘモジュール３０である例であって、ＣＰＵ１で実行されるソフトウェア（ＳＷ）とＳｏＣ２０に内蔵されているハードウェア（ＨＷ）とそれに接続されるハードウェアが示されている。ソフトウェア（ＳＷ）は、最下位の各種ドライバ、オペレーティングシステム（ＯＳ）、各種のミドルウェア、及び、最上位のアプリケーション層（Ａｐｐｌｉｃａｔｉｏｎ１〜４）からなる。ＳｏＣ２０に内蔵されているハードウェア（ＨＷ）には、暗号エンジン４の機能であるＣｒｙｐｔ  ｃｏｒｅが含まれ、入出力インターフェース（Ｉ／Ｏ）６の一種として、ＲＦインターフェース（ＲＦ  Ｉ／Ｆ）とＧＰＳインターフェース（ＧＰＳ  Ｉ／Ｆ）及びその他のインターフェース（その他Ｉ／Ｆ）が含まれる。ＲＦインターフェース（ＲＦ  Ｉ／Ｆ）は、外付けされる高周波モジュール（ＲＦ  ｍｏｄｕｌｅ）と接続されてＶ２Ｘ通信を行う。ＧＰＳインターフェース（ＧＰＳ  Ｉ／Ｆ）はＧＰＳモジュール４０と接続されて外部時刻情報を取得する。位置情報を合わせて取得することもできる。その他のインターフェース（その他Ｉ／Ｆ）は、インフォテインメント装置５０などに接続されるインターフェースである。
【００２１】
ソフトウェア（ＳＷ）に含まれる各種ドライバには、ＲＦインターフェースを駆動するＶ２Ｘドライバ、ＧＰＳインターフェースを駆動するＧＰＳドライバ、その他のインターフェースを駆動するその他のドライバ、Ｃｒｙｐｔ  ｃｏｒｅを駆動するＳｅｃドライバが含まれる。ここで、「駆動する」とは、機能面から見た「駆動」であって、必要なパラメータを設定し、データを入出力することをいう。各種ドライバはＯＳの管理を受け、その上位のミドルウェアとインターフェースされる。ミドルウェアには、Ｖ２Ｘ通信のための通信ミドルウェア（Ｃｏｍｍｕｎｉｃａｔｉｏｎ  ＭＷ）、セキュリティ機能のためのセキュリティミドルウェア（Ｓｅｃ  ＭＷ）及びその他のミドルウェアが含まれる。
【００２２】
図１の説明に戻る。特に制限されないが、通信端末が、自動車１００に搭載されるＶ２Ｘモジュール３０であるものとして説明する。図１の中央付近に「Ｖ２Ｘモジュールの停止」が示されている。このステップは、自動車１００が駐車場に停車するなどしてＶ２Ｘモジュールへの電源供給が停止されている期間である。このような期間には、悪意ある第三者によって、ＧＰＳモジュール４０などに改造を加える攻撃がなされ、その結果それ以降に取得される外部時刻情報が改竄される脅威がある。本実施形態では、Ｖ２Ｘモジュール３０への電源供給が再開された後の初期化シーケンスを示す、後段のステップにおいて、新たに取得される外部時刻情報（ｔｉｍｅＡ）が改竄されているかどうかを、内部時刻情報（ｔｉｍｅＬ）と比較することによって検証する。図１におけるミドルウェアは、図４におけるセキュリティミドルウェア（Ｓｅｃ  ＭＷ）であるものとして説明するが、アプリケーションは任意である。
【００２３】
以下時系列に従って、詳しく説明する。
【００２４】
ミドルウェアは、アプリケーションを介してＧＰＳモジュール４０等から時刻情報（ｔｉｍｅＡ）を取得する。アプリケーションを介さずに直接ＧＰＳモジュール４０等から時刻情報（ｔｉｍｅＡ）を取得してもよい。取得した外部時刻情報（ｔｉｍｅＡ）によって、Ｖ２Ｘモジュール３０側に保持するローカル時刻（ｔｉｍｅＬ）を較正する。ここで、取得した外部時刻情報（ｔｉｍｅＡ）とローカル時刻（ｔｉｍｅＬ）の誤差がある程度以上に大きいときには、何らかの攻撃を受けたものとして、攻撃に対処する処理（エラーハンドリング処理）に移行しても良い。較正されたローカル時刻（ｔｉｍｅＬ）は暗号化され、タイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）として生成される。生成されたタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）は、不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２に書き込まれる。タイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）が書き込まれるのは、不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２のセキュアな記憶領域（Ｓｅｃｕｒｅ  ｓｔｏｒａｇｅ  ａｒｅａ）であることが望ましい。これにより、停止中のＶ２Ｘモジュール３０への直接的な攻撃に対する耐性を、より向上することができる。
【００２５】
ＧＰＳモジュールからの外部時刻情報（ｔｉｍｅＡ）の取得、ローカル時刻（ｔｉｍｅＬ）の較正、暗号化されたタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）の生成、及び、タイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）の不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２への書き込みからなる一連のステップは、周期的に実行されるのが好適である。また、このときの周期は１分〜５分程度が適切であるが、必ずしも一定の周期である必要はない。周期的に実行されることにより、Ｖ２Ｘモジュールが停止される直前のローカル時刻（ｔｉｍｅＬ）に基づくタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）が不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２に書き込まれて保持される。
【００２６】
ミドルウェアは、Ｖ２Ｘモジュール３０への電源投入後の初期化シーケンスにおいて、不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２からタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）を読み出し、暗号を復号して、電源投入以前で最後に不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２に書き込まれた内部時刻情報であるローカル時刻（ｔｉｍｅＬ）を復元する。その後、またはそれと並行して、ＧＰＳモジュール４０に対して時刻情報を要求して、新たな外部時刻情報（ｔｉｍｅＡ）を取得する。取得した外部時刻情報（ｔｉｍｅＡ）と、復元したローカル時刻（ｔｉｍｅＬ）とを比較することによって、取得した当該外部時刻情報（ｔｉｍｅＡ）の正当性を検証する。
【００２７】
新たに取得した外部時刻情報（ｔｉｍｅＡ）が、復元したローカル時刻（ｔｉｍｅＬ）よりも過去の時刻を示している場合には、取得した外部時刻情報（ｔｉｍｅＡ）が改竄されていると考えられ、何らかの攻撃を受けたものとして、攻撃に対処する処理（エラーハンドリング処理）に移行する。一方、取得した外部時刻情報（ｔｉｍｅＡ）の正当性が確認されたときには、通常の初期化フェーズに移行する。
【００２８】
これにより、外部から取得する外部時刻情報が改竄されているなどの攻撃を受けている場合に、不正な時刻情報と判断することができ、攻撃に対処することができる。
【００２９】
本実施形態１は、Ｖ２Ｘ通信を行うためのＶ２Ｘモジュール３０に適用された例を採りあげて説明したが、Ｖ２Ｘ通信に限らず、種々の暗号通信及び通信端末にも適用することができる。また、図３に示した通信端末３０の構成例、図４に示した機能の構成例は、それぞれ一例であって、種々変更可能である。
【００３０】
〔実施形態２〕
より好適な実施の形態について説明する。
【００３１】
図５は、実施形態２に係る通信端末の動作を示すフロー図である。実施形態２に係る通信端末も、実施形態１に例示した通信端末と同様に、Ｖ２Ｘ通信を行うためのＶ２Ｘモジュール３０であるが、Ｖ２Ｘ通信に限らず、種々の暗号通信及び通信端末にも適用することができる。また、図２に示したＶ２Ｘの車載通信端末への適用例、図３に示した通信端末の構成例、及び、図４に示した通信端末に実装される機能の構成例も同様に当てはまるが、これに限定されるものではなく、種々変更可能である。
【００３２】
図５には、図１と同様に、外部時刻情報としてのＧＰＳ情報を提供するＧＰＳモジュール、当該通信端末で動作するアプリケーションプログラムとミドルウェア、及び、不揮発性メモリとしてのフラッシュメモリの動作フローが、上から下への時間経過として示される。本実施形態２においても、セキュリティミドルウェアのシーケンスは、Ｖ２Ｘモジュールの停止より前のタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）の保管と、Ｖ２Ｘモジュール３０への電源供給が再開された後の初期化シーケンスの２つからなる。
【００３３】
本実施形態２に係る通信端末は、上述の実施形態１に係る通信端末と比べて、さらに単調カウンタ（ＭＣ：Monotonic Counter）を備える点と、暗号化のための暗号鍵（ＭＣＫ）がこの単調カウンタ（ＭＣ）のカウント値に基づいて生成される点である。単調カウンタ（ＭＣ）は、単調に増加または減少するカウンタであって、Ｖ２Ｘモジュールの停止前の最後の電源遮断の直前に保持していたカウント値と、Ｖ２Ｘモジュール３０への電源供給が再開された電源投入後におけるカウント値とが、前記単調な増加または減少の連続性を保つように構成されている。また、タイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）と単調カウンタ（ＭＣ）のカウント値に、それぞれメッセージ認証符号（ＭＡＣ：Message Authentication Code）が付与されて、整合性（Integrity）が確認される点である。これにより、セキュリティレベルがさらに向上される。
【００３４】
図５に戻り、以下時系列に従って、詳しく説明する。
【００３５】
セキュリティミドルウェアは、定周期カウンタのカウントアップを行い、周期的に単調カウンタ（ＭＣ）をカウントアップする。このサイクルはシステム設計に依存するが、リプレイアタックに対する対策の観点から考えると、１分〜５分の間に１回であることが望ましい。単調カウンタ（ＭＣ）をカウントアップする度に、ＧＰＳ等に時刻情報を要求して、外部時刻情報（ｔｉｍｅＡ）を取得する。取得した外部時刻情報（ｔｉｍｅＡ）と、ローカル時刻（ｔｉｍｅＬ）とを比較し、誤差が許容範囲内であれば、ローカル時刻（ｔｉｍｅＬ）を外部時刻情報（ｔｉｍｅＡ）によって較正する。セキュリティミドルウェアでは、自身が持つ水晶振動子のクロック信号を利用して、ローカル時刻（ｔｉｍｅＬ）のカウントアップを行う。ローカル時刻（ｔｉｍｅＬ）の時刻精度と、上記の誤差の許容範囲は実装に依存するが、例えば、上記定周期カウンタのカウントアップの周期を１分〜５分としたときに、ＧＰＳから取得した実際の時刻情報に対するローカル時刻（ｔｉｍｅＬ）の誤差が１秒以上であるときには、時計としての機能が成り立っていないため、上記の時刻誤差は１秒以下が妥当と考えられる。比較した時刻情報に齟齬が無い事を確認した後に、ローカル時刻（ｔｉｍｅＬ）を外部時刻情報（ｔｉｍｅＡ）によって較正する。ここで、「較正」とはローカル時刻（ｔｉｍｅＬ）を外部時刻情報（ｔｉｍｅＡ）に近付ける操作を言い、必ずしもローカル時刻（ｔｉｍｅＬ）を外部時刻情報（ｔｉｍｅＡ）に置き換える操作である必要はない。誤差が大きい場合に置き換える操作を行うと、ローカル時刻（ｔｉｍｅＬ）に不連続が生じるので、システム上の不都合が発生する場合があるためである。徐々に近づけるか置き換えるかは、システム設計による。誤差が許容範囲を超えた場合には、所定のエラーハンドリングに移行する。誤差が著しい場合には、何らかの攻撃を受けたものと判断して、攻撃に対処する処理に移行してもよい。
【００３６】
較正されたローカル時刻（ｔｉｍｅＬ）は暗号化され、実施形態１と同様に、不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２に書き込まれる。本実施形態２では、暗号化のための暗号鍵（ＭＣＫ）が単調カウンタ（ＭＣ）に基づいて毎回生成され、さらに、ローカル時刻（ｔｉｍｅＬ）と単調カウンタ（ＭＣ）のカウント値には、それぞれメッセージ認証符号（ＭＡＣ）が付与される。より詳しくは、セキュリティミドルウェアは、ローカル時刻（ｔｉｍｅＬ）のメッセージ認証符号であるＭＡＣ−Ｔを生成し、単調カウンタ（ＭＣ）のカウント値のメッセージ認証符号であるＭＡＣ−Ｃを生成する。次に、単調カウンタ（ＭＣ）のカウント値と自身の持つ秘密鍵（ＳＫ）からハッシュ関数により暗号鍵（ＭＣＫ）を算出する。その後、算出された暗号鍵（ＭＣＫ）を使って、ローカル時刻（ｔｉｍｅＬ）とそのメッセージ認証符号（ＭＡＣ−Ｔ）を暗号化した、タイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）を生成する。最後に、暗号化されたタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）、ローカル時刻（ｔｉｍｅＬ）のメッセージ認証符号（ＭＡＣ−Ｔ）、暗号鍵（ＭＣＫ）、単調カウンタ（ＭＣ）のカウント値及びそのメッセージ認証符号（ＭＡＣ−Ｃ）を、不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２に書き込む。
【００３７】
以上の動作は、上記の定周期カウンタによって周期的に起動され、単調カウンタ（ＭＣ）がカウントアップする毎に実行される。したがって、Ｖ２Ｘモジュール３０がいつ停止されても、その直前に較正されたローカル時刻（ｔｉｍｅＬ）、即ち最新の時刻情報に基づくタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）が、常に不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２に書き込まれていることになる。
【００３８】
Ｖ２Ｘモジュール３０への電源供給が再開されると、それに伴う電源投入後の初期化シーケンス（パワーアップシーケンス）が実行される。初期化シーケンスにおいて、ＣＰＵ１はセキュリティミドルウェアを動作させ、不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２から暗号化されたタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）、ローカル時刻（ｔｉｍｅＬ）のメッセージ認証符号（ＭＡＣ−Ｔ）、暗号鍵（ＭＣＫ）、単調カウンタ（ＭＣ）のカウント値及びそのメッセージ認証符号（ＭＡＣ−Ｃ）を読み出す。
【００３９】
セキュリティミドルウェアは、読み出された単調カウンタ（ＭＣ）のカウント値について、そのメッセージ認証符号（ＭＡＣ−Ｃ）を使って、その正当性を確認する。正当性が確認された後に、単調カウンタ（ＭＣ）のカウント値と、自身が持つ秘密鍵（ＳＫ）を使って、ハッシュ関数により暗号鍵（ＭＣＫ）を生成する。この暗号鍵（ＭＣＫ）を用いて不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２から読み出したタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）を復号することにより、Ｖ２Ｘモジュール３０への電源遮断前で最新の時刻情報であるローカル時刻（ｔｉｍｅＬ）及びそのメッセージ認証符号（ＭＡＣ−Ｔ）が復号される。復号されたローカル時刻（ｔｉｍｅＬ）について、そのメッセージ認証符号（ＭＡＣ−Ｔ）を使って、その正当性を確認する。これにより、Ｖ２Ｘモジュール３０が停止される直前に較正されたローカル時刻（ｔｉｍｅＬ）がわかる。
【００４０】
その後、または、以上と並行して、セキュリティミドルウェアは、定周期カウンタのカウントアップ動作により、周期的に単調カウンタ（ＭＣ）をカウントアップし、ＧＰＳ等に時刻情報を要求して、外部時刻情報（ｔｉｍｅＡ）を取得する。取得した外部時刻情報（ｔｉｍｅＡ）と、タイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）を復号して得たローカル時刻（ｔｉｍｅＬ）とを比較して、取得した外部時刻情報（ｔｉｍｅＡ）が改竄等されていない事を確認する。取得した外部時刻情報（ｔｉｍｅＡ）が、タイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）を復号して得たローカル時刻（ｔｉｍｅＬ）よりも最近の時刻であれば、取得した外部時刻情報（ｔｉｍｅＡ）に基づいてローカル時刻（ｔｉｍｅＬ）を較正するなどの初期化フェーズに移行する。一方、取得した外部時刻情報（ｔｉｍｅＡ）が、タイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）を復号して得たローカル時刻（ｔｉｍｅＬ）よりも過去の時刻であれば、改竄されたことが明らかであり、エラーハンドリング処理に移行する。
【００４１】
本実施形態１では、単調カウンタ（ＭＣ）をカウントアップする後に、ＧＰＳ等の外部時刻情報（ｔｉｍｅＡ）を取得するので、Ｖ２Ｘモジュール３０が停止される直前と再開された直後でのカウント値が、そのまま連続している。そのため、上記の外部時刻情報（ｔｉｍｅＡ）とタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）を復号して得たローカル時刻（ｔｉｍｅＬ）との比較検証に加えて、単調カウンタ（ＭＣ）の連続性を検証することにより、セキュリティレベルをさらに向上することができる。
【００４２】
以上説明したように、実施形態１と同様に、外部から取得する外部時刻情報が改竄されているなどの攻撃を受けている場合に、不正な時刻情報と判断することができ、攻撃に対処することができる。本実施形態２によれば、単調カウンタ（ＭＣ）によって暗号鍵が毎回変更されるので、リプレイアタックに対する耐性をより向上することができる。さらに、ローカル時刻（ｔｉｍｅＬ）と単調カウンタ（ＭＣ）のそれぞれに、それぞれメッセージ認証符号（ＭＡＣ−Ｔ，ＭＡＣ−Ｃ）が付与されて、整合性が確認されるので、ローカル時刻（ｔｉｍｅＬ）やカウンタへの攻撃に対しても耐性を向上することができる。
【００４３】
単調カウンタ（ＭＣ）は、カウントアップにより単調増加する例について説明したが、カウントダウンによる単調減少に置き換えてもよい。また、オーバーフロー（カウントダウンの場合の負のオーバーフローを含む）については、公知の手法で補償される。例えば、オーバーフローフラグを用いて補正し、見かけ上オーバーフローを発生させずに単調増加または単調減少が継続されるように実装される。
【００４４】
〔実施形態２の変形例〕
以上の説明では、単調カウンタ（ＭＣ）が、セキュリティミドルウェアにおけるソフトウェアで実装されるもとしたが、ハードウェアとして実装されても良い。また、不揮発性メモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）２は、ＣＰＵ１を含むＳｏＣ２０とは別のチップとしたが、ＳｏＣ２０に内蔵されてもよい。
【００４５】
図６は、通信端末の別の構成例を示すブロック図である。図３に示したＶ２Ｘモジュール３０とは異なり、フラッシュメモリ２が外付けされることを前提とせず、ＳｏＣ２０のみで構成される。ＳｏＣ２０では、ＣＰＵ１、Ｉ／Ｏ６、ＲＡＭ７、周辺モジュール５、暗号エンジン（Ｃｒｙｐｔ）４などがバス１０を介して相互に接続されている。さらに、セキュリティミドルウェアなどのプログラム等が格納されるＲＯＭ８が内蔵され、暗号エンジン（Ｃｒｙｐｔ）４には、暗号演算回路（Ｃｒｙｐｔ）１１の他、セキュアな環境で守られるＲＡＭ１２、ＲＯＭ２に加え、単調カウンタ（ＭＣ）３がハードウェアとして実装される。ＲＯＭ２は、不揮発性メモリであり、図５に示したフロー図と同様に、暗号化されたタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）、ローカル時刻（ｔｉｍｅＬ）のメッセージ認証符号（ＭＡＣ−Ｔ）、暗号鍵（ＭＣＫ）、単調カウンタ（ＭＣ）のカウント値及びそのメッセージ認証符号（ＭＡＣ−Ｃ）が書き込まれる。他の動作については、図５に示したフローと同様であるので、説明を省略する。
【００４６】
この変形例では、単調カウンタ（ＭＣ）のカウント値や暗号化されたタイムスタンプ（Ｔｉｍｅ−ｓｔａｍｐ）ですら、ＳｏＣ２０の外部に出力されることがないので、ローカル時刻（ｔｉｍｅＬ）やカウンタへの攻撃に対しても耐性を向上することができる。
【００４７】
図７は、通信端末のさらに別の構成例を示すブロック図である。図３に示したＶ２Ｘモジュール３０とは異なり、ＳｏＣ２０に別のＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）２１が接続される。このＭＣＵ２１は、例えば、Ｖ２Ｘモジュール３０における制御ＭＣＵであって、通常機能領域（Ｎｏｒｍａｌ  Ｗｏｒｌｄ）の他にセキュア領域（Ｓｅｃｕｒｅ  Ｗｏｒｌｄ）を持つ。単調カウンタ（ＭＣ）３は、このように、外付けされたＭＣＵ２１のセキュア領域内に、設けられてもよい。
【００４８】
〔実施形態３〕
実施形態２は、単調増加または単調減少する単調カウンタ（ＭＣ）を使って、毎回異なる暗号鍵（ＭＣＫ）を生成することにより、リプレイアタックに対する耐性を向上した。本実施形態３では、単調カウンタ（ＭＣ）に代えて、毎回異なる値が発生される乱数を使って、毎回異なる暗号鍵を生成する。他の構成は、図２や図３または図６と同様であり、動作は図５と同様である。単調カウンタ（ＭＣ）を使用すれば、その連続性を検証することにより、セキュリティレベルをさらに向上することができるが、乱数に置き換えることによって、連続性の検証はできないが、同じ値（乱数）でない事を確認することにより、リプレイアタックに対する耐性は、ある程度向上することができる。
【００４９】
〔実施形態４〕
実施形態２では単調カウンタ（ＭＣ）を使い、実施形態３では乱数を使って、それぞれ、毎回異なる暗号鍵を生成することにより、リプレイアタックに対する耐性を向上した。本実施形態４では、単調カウンタ（ＭＣ）や乱数に代えて、リアルタイムクロック（ＲＴＣ：Real Time Clock）によって管理されている時刻情報を使って、毎回異なる暗号鍵を生成することにより、リプレイアタックに対する耐性を向上する。
【００５０】
リアルタイムクロック（ＲＴＣ）は、装置への電源供給が停止されても回路基板上の電池などにより必要最小限の電力が供給されることによって、非常に低い周波数の水晶発振回路を動作させ続けて、時刻情報を保持する回路である。ナビゲーションシステムなどのインフォテインメント装置に搭載されている場合が多い。
【００５１】
リアルタイムクロック（ＲＴＣ）は、セキュリティミドルウェアによって制御されるものではないが、単調増加するので、周期的にカウントアップされる単調カウンタ（ＭＣ）を置き換えるのに好適である。実施形態２と同様に、毎回異なる暗号鍵を生成することができる上、連続性の検証も可能である。単調カウンタ（ＭＣ）とは異なり、カウントアップによる＋１の連続性でないが、ローカル時刻（ｔｉｍｅＬ）と同様に、過去の時刻に遡っていないことを検証することにより、連続性が検証される。さらに、どちらも時刻を表す情報であるから、Ｖ２Ｘモジュール３０の停止直前における、ローカル時刻（ｔｉｍｅＬ）とリアルタイムクロック（ＲＴＣ）の誤差と、動作の再開直後におけるローカル時刻（ｔｉｍｅＬ）とリアルタイムクロック（ＲＴＣ）の誤差を比較して、改竄などの攻撃がされていないかどうかの検証に利用することができる。２つの時刻の誤差を比較することにより、両方の時刻が同じように改竄されない限り、改竄の痕跡を検出することができるので、セキュリティレベルは、単調カウンタ（ＭＣ）を使用した場合と比較しても大きく低下することはない。
【００５２】
なお、リアルタイムクロック（ＲＴＣ）は、図３に示されるように、ＳｏＣ２０に内蔵されても良いし、図７のＭＣＵ２１に内蔵され、ＳｏＣ２０がその値を参照することができるように構成してもよい。
【００５３】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００５４】
例えば、ＳｏＣ２０はすべて暗号エンジン（Ｃｒｙｐｔ）４を内蔵するものとして説明したが、暗号化、復号、認証などの機能は、ＣＰＵによって実行されるソフトウェアによって実行されてもよい。また、通信端末３０、ＳｏＣ２０の構成は任意であって、他の機能モジュールを含み、または、図示される一部の機能モジュールの搭載が省略され、或いは、バスが階層化されるなど、ハードウェア構成は種々変更可能である。
【符号の説明】
【００５５】
１  プロセッサ（CPU: Central processing Unit）
２  不揮発性メモリ（Flash Memory）
３  単調（モノトニック）カウンタ（ＭＣ）
４  暗号エンジン（Crypt）
５  周辺モジュール（Peripheral）
６  入出力インターフェース（Ｉ／Ｏ）
７  ＲＡＭ（Random Access Memory）
８  ＲＯＭ（Read Only Memory）
９  ＲＴＣ（Real Time Clock）
１０  バス
１１  暗号演算回路（Crypy）
１２  暗号エンジン内ＲＡＭ
２０  ＳｏＣ
２１  ＭＣＵ
３０  通信端末（Ｖ２Ｘモジュール）
４０  ＧＰＳモジュール
５０  インフォテインメント装置
６０  ゲートウェイ（ＧＷ）
７０  車載ネットワーク
１００  自動車
【図１】
0006473674.tif 000002
【図２】
0006473674.tif 000003
【図３】
0006473674.tif 000004
【図４】
0006473674.tif 000005
【図５】
0006473674.tif 000006
【図６】
0006473674.tif 000007
【図７】
0006473674.tif 000008