(57)【要約】【課題】ＣＢＣモードで行われるブロック暗号処理にかかる時間を短縮できる改ざん検知方法を提供する。【解決手段】改ざんチェックの領域をｎ個のブロック領域に分割し、分割したｎ個のブロック領域を区分して第１〜第ｍグループ（ｍ＜ｎ）を形成する。第１〜第ｍグループについて、各グループに含まれる複数のブロック領域のデータに第１の論理演算を行って、第１の論理演算データを求める。第１グループの第１の論理演算データに対して暗号演算を行って、第１グループの暗号演算データを求める。第ｉグループ（ｉ＝２〜ｍ）の第１の論理演算データと第{ｉ−１}グループの暗号演算データとに第２の論理演算を行って、第２の論理演算データを求め、かつ、第２の論理演算データに対して暗号演算を行って、第ｉグループの暗号演算データを求める。第ｍグループの暗号演算データが認証用データと一致しなければ、改ざんが有ると判定する。【選択図】図１
2017188826.tif 000002
【特許請求の範囲】
【請求項１】
電子制御装置によって実行されるメモリの改ざんを検知する方法であって、
改ざんチェックを行う前記メモリの領域をｎ個のブロック領域（ｎは、２以上の整数）に分割し、当該分割したｎ個のブロック領域を区分して形成される第１〜第ｍグループ（ｍは、ｎ未満の整数）のそれぞれについて、各グループに含まれる複数のブロック領域に格納された複数のデータに第１の論理演算を行って、第１の論理演算データを求めるステップ、
前記第１グループの第１の論理演算データに対して暗号演算を行って、前記第１グループの暗号演算データを求めるステップ、
前記第ｉグループ（ｉ＝２〜ｍ）の第１の論理演算データと前記第{ｉ−１}グループの暗号演算データとに第２の論理演算を行って、第２の論理演算データを求め、かつ、当該第２の論理演算データに対して暗号演算を行って、前記第ｉグループの暗号演算データをそれぞれ求めるステップ、および
前記第ｍグループの暗号演算データが所定の認証用データと一致しなければ、前記メモリが改ざんされていると判定するステップを備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載される電子制御装置などに適用可能な改ざん検知方法に関する。
【背景技術】
【０００２】
例えば、特許文献１に、平文データをＣＢＣ（Cipher Block Chaining）モードでブロック暗号化する技術が、開示されている。このＣＢＣモードでは、平文データを複数のブロックに分割して得られた１番目のブロックを、まず暗号演算する。次に、２番目以降のブロックについては、対象のブロックと、当該対象のブロックよりも順番が１つ前のブロックの暗号演算の結果との間で、論理演算を実施し、その論理演算の結果に対して暗号演算を行うという処理が、最後のブロックまで繰り返し実行される。
【０００３】
また、ＣＢＣモードで行われるブロック暗号をメッセージ認証に用いる手法として、例えばＣＢＣ−ＭＡＣ（Message Authentication Code）が知られている。このＣＢＣ−ＭＡＣでは、データをＣＢＣモードでブロック暗号化した結果をメッセージ認証符号とし、予め求められている正常なメッセージ認証符号と比較することで、データの認証を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２３９６４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したＣＢＣモードで行われるブロック暗号処理にかかる時間が長過ぎると、時間的制約が厳しい電子制御装置のセキュアブートにおけるメッセージ認証などに利用できないおそれがある。このため、ブロック暗号処理にかかる時間を如何に短縮するかが課題となっている。
【０００６】
本発明は、上記課題を鑑みてなされたものであり、ＣＢＣモードで行われるブロック暗号処理にかかる時間を短縮できる改ざん検知方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明は、電子制御装置によって実行されるメモリの改ざんを検知する方法であって、改ざんチェックを行うメモリの領域をｎ個のブロック領域（ｎは、２以上の整数）に分割し、この分割したｎ個のブロック領域を区分して形成される第１〜第ｍグループ（ｍは、ｎ未満の整数）のそれぞれについて、各グループに含まれる複数のブロック領域に格納された複数のデータに第１の論理演算を行って、第１の論理演算データを求めるステップ、第１グループの第１の論理演算データに対して暗号演算を行って、第１グループの暗号演算データを求めるステップ、第ｉグループ（ｉ＝２〜ｍ）の第１の論理演算データと第{ｉ−１}グループの暗号演算データとに第２の論理演算を行って、第２の論理演算データを求め、かつ、当該第２の論理演算データに対して暗号演算を行って、第ｉグループの暗号演算データをそれぞれ求めるステップ、および第ｍグループの暗号演算データが所定の認証用データと一致しなければ、前記メモリが改ざんされていると判定するステップを備える、ことを特徴とする。
【０００８】
この本発明の改ざん検知方法では、改ざんチェックを行うメモリを分割するｎ個のブロック領域を区分して、ｍ個（ｍ＜ｎ）のグループを形成する。そして、この形成したｍ個のグループのそれぞれについて、各グループに含まれる複数のブロック領域に格納された複数のデータ間で第１の論理演算（例えば排他的論理和）を実施して、ｎ個よりも少ないｍ個の演算結果を算出する。
【０００９】
上述したＣＢＣモードで行われるブロック暗号処理においては、論理演算（第１の論理演算および第２の論理演算）にかかる時間に比べて、暗号演算にかかる時間の方がはるかに長い。従って、ブロック暗号処理のために必要な時間は、実質的に暗号演算を実行する回数に依存する。本発明の改ざん検知方法では、ｎ個のブロック領域を幾つか統合してグループ化し、暗号演算の対象となるブロック領域の数を減らした後に、つまりｎ個よりも少ないｍ個の演算結果について暗号演算を実行する。
【００１０】
これにより、本発明の改ざん検知方法は、ブロック領域の数（ｎ個）だけ暗号演算を実行しなければならなかった従来のブロック暗号処理を用いた改ざん検知方法に比べて、暗号演算を実行する回数を少なくでき、ブロック暗号処理のために必要な時間を短縮することができる。
【発明の効果】
【００１１】
以上述べたように、本発明によれば、ＣＢＣモードで行われるブロック暗号処理にかかる時間を短縮した改ざん検知方法を実現できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係る改ざん検知方法を適用することが可能な電子制御装置の構成例を示す図
【図２Ａ】改ざんチェック領域組み合わせ定義部が保持する定義の一例を示す図
【図２Ｂ】改ざんチェック領域組み合わせ定義部が保持する定義の一例を示す図
【図２Ｃ】改ざんチェック領域組み合わせ定義部が保持する定義の一例を示す図
【図３】電子制御装置が実行する本実施形態に係る改ざん検知方法の手順を示すフローチャート
【図４Ａ】図２Ａで示したブロック領域の組み合わせの定義に基づき、図３の手順に従って改ざん検知方法を実施する場合の処理イメージを示す図
【図４Ｂ】図２Ｂで示したブロック領域の組み合わせの定義に基づき、図３の手順に従って改ざん検知方法を実施する場合の処理イメージを示す図
【図５Ａ】本発明の一実施形態に係る改ざん検知方法の応用例を説明するための図
【図５Ｂ】本発明の一実施形態に係る改ざん検知方法の応用例を説明するための図
【図６】本発明の一実施形態に係る改ざん検知方法を適用することが可能な電子制御装置の他の構成例を示す図
【発明を実施するための形態】
【００１３】
［概要］
本発明は、電子制御装置によって実行されるメモリの改ざんを検知する方法である。本改ざん検知方法では、ブロック暗号処理を適用するために複数に分割されたメモリの全てのブロック領域を、幾つかに区分して複数のグループを形成する。形成した複数のグループのそれぞれについて、グループに含まれる複数のブロック領域の論理演算を実施する。そして、この論理演算の結果に対してブロック暗号処理を実施する。論理演算を行うグループの数は、全ブロック領域の数よりも少ない。よって、ブロック暗号処理において、処理時間がかかる暗号演算を行う回数を少なくできる。
【００１４】
以下、本発明の一実施形態に係る改ざん検知方法を、車両などに搭載される電子制御装置（ＥＣＵ：Electronic Control Unit）に適用した場合を例に挙げて、図面を参照しながら説明する。
【００１５】
［電子制御装置の構成］
図１は、本発明の一実施形態に係る改ざん検知方法を適用することが可能な電子制御装置１の構成例を示す図である。図１に例示した本実施形態の電子制御装置１は、中央演算処理装置（ＣＰＵ：Central Processing Unit）１０、ＲＡＭ（Random Access Memory）２０、Ｉ／Ｆ（インタフェース）３０、ＲＯＭ（Read Only Memory）４０、セキュアＲＯＭ５０、およびセキュアＩ／Ｆ３１を備えて、構成される。これらの構成は、所定のバス７０を介して通信可能に接続されている。
【００１６】
ＲＯＭ４０は、電子制御装置１の基本的な動作を定義する所定のコンピュータプログラムやデータなどを保持する記憶装置である。このＲＯＭ４０は、改ざんチェック領域４１と、改ざんチェック領域組み合わせ定義部４２と、論理演算部４３と、暗号鍵保存部４４と、暗号演算部４５と、改ざん判定部４６と、を含んでいる。
【００１７】
セキュアＲＯＭ５０は、電子制御装置１において外部からの攻撃に対する安全性が求められるコンピュータプログラムやデータなどを保持する記憶装置である。従って、セキュアＲＯＭ５０は、ＲＯＭ４０よりもセキュリティ性能が高い。このセキュアＲＯＭ５０は、ＭＡＣ／ハッシュ値記憶部５１を含んでいる。
【００１８】
改ざんチェック領域４１は、改ざんの有無を判定（検知）する、いわゆる改ざんチェックを実施する対象となるコンピュータプログラムやデータなど（以下「データ」と称する）を格納した、ＲＯＭ４０内の領域である。
【００１９】
改ざんチェック領域組み合わせ定義部４２は、改ざんチェック領域４１を所定長の複数のブロック領域に分割して、この分割した複数のブロック領域を幾つか組み合わせて（区分して）複数のグループを形成するための定義を保持している、ＲＯＭ４０内の記憶領域である。改ざんチェック領域４１を幾つのブロック領域に分割するかは、任意に定めることができる。好ましくは、暗号演算部４５において暗号演算処理が可能なデータ単位（例えば１２８ビットや２５６ビットなど）に基づいて、改ざんチェック領域４１が分割される。また、複数のブロック領域から幾つのグループを形成するかも、任意に定めることができる。
【００２０】
改ざんチェック領域組み合わせ定義部４２が保持する定義は、例えば図２Ａ、図２Ｂ、および図２Ｃに示すテーブル形式でＲＯＭ４０内に格納されている。これらの図では、改ざんチェック領域４１がｎ個のブロック領域（ｎは、２以上の整数）に分割される場合において、このｎ個のブロック領域からｍ個のグループ（ｍは、ｎ未満の整数）を形成する例を示している。
【００２１】
図２Ａは、偶数であるｎ個のブロック領域の隣接する２つの領域を組み合わせたグループ形成の手法を表している。つまり、改ざんチェック領域４１の先頭である第１ブロック領域（Block[1]）と、第１ブロック領域に隣接する第２ブロック領域（Block[2]）とを組み合わせて「第１グループ」とし、その次の第３ブロック領域（Block[3]）と、第３ブロック領域に隣接する第４ブロック領域（Block[4]）とを組み合わせて「第２グループ」とする、というように区分されてグループが形成される。この図２Ａの例では、改ざんチェック領域４１の第１ブロック領域（Block[1]）から第ｎブロック領域（Block[n]）までが、隣接する２つの領域を１つのグループとして規則的に区分され、第１グループから第ｍグループが形成される。この手法では、２つの領域で１つのグループが形成されるので、ｎ個のブロック領域からｎ／２（＝ｍ）個のグループが形成されることとなる。
【００２２】
図２Ｂは、偶数であるｎ個のブロック領域の隣接しない２つの領域を組み合わせたグループ形成の手法を表している。つまり、改ざんチェック領域４１の第１ブロック領域（Block[1]）と、第１ブロック領域に隣接しない第{ｎ−１}ブロック領域（Block[n-1]）とを組み合わせて「第１グループ」とし、第２ブロック領域（Block[2]）と、第２ブロック領域に隣接しない第４ブロック領域（Block[4]）とを組み合わせて「第２グループ」とする、というように区分されてグループが形成される。この図２Ｂの例では、改ざんチェック領域４１の第１ブロック領域（Block[1]）から第ｎブロック領域（Block[n]）までが、隣接しない２つの領域を１つのグループとして不規則的に区分され、第１グループから第ｍグループが形成される。この手法では、２つの領域で１つのグループが形成されるので、ｎ個のブロック領域からｎ／２（＝ｍ）個のグループが形成されることとなる。
【００２３】
図２Ｃは、偶数であるｎ個のブロック領域の連続して隣接する４つの領域を組み合わせたグループ形成の手法を表している。つまり、改ざんチェック領域４１の先頭である第１ブロック領域（Block[1]）と、第１ブロック領域に隣接する第２ブロック領域（Block[2]）と、第２ブロック領域に隣接する第３ブロック領域（Block[3]）と、第３ブロック領域に隣接する第４ブロック領域（Block[4]）とを組み合わせて「第１グループ」とする、というように区分されてグループが形成される。この図２Ｃの例では、改ざんチェック領域４１の第１ブロック領域（Block[1]）から第ｎブロック領域（Block[n]）までが、連続して隣接する４つの領域を１つのグループとして規則的に区分され、第１グループから第ｍグループが形成される。この手法では、４つの領域で１つのグループが形成されるので、ｎ個のブロック領域からｎ／４（＝ｍ）個のグループが形成されることとなる。
【００２４】
論理演算部４３は、改ざんチェック領域組み合わせ定義部４２によって定義された複数のグループのそれぞれについて、各グループに含まれる複数のブロック領域に格納された複数のデータ間で、第１の論理演算を実施する。この第１の論理演算には、例えば排他的論理和（ＸＯＲ：eXclusive OR）が用いられる。
【００２５】
例えば、図２Ａに示した定義の場合では、第１グループについて、第１ブロック領域（Block[1]）に格納されたデータと第２ブロック領域（Block[2]）に格納されたデータとの間で、排他的論理和が演算されて、その演算結果が第１グループの第１の論理演算の結果として出力される。また、図２Ｃに示した定義の場合では、第１グループについて、第１ブロック領域（Block[1]）に格納されたデータと第２ブロック領域（Block[2]）に格納されたデータと第３ブロック領域（Block[3]）に格納されたデータと第４ブロック領域（Block[4]）に格納されたデータとの間で、排他的論理和が演算されて、その演算結果が第１グループの第１の論理演算の結果として出力される。
【００２６】
また、論理演算部４３は、各グループにおける第１の論理演算の結果と、後述する暗号演算部４５が実施した直前の暗号演算の結果との間で、第２の論理演算を実施する。この第２の論理演算にも、例えば排他的論理和（ＸＯＲ）が用いられる。
【００２７】
暗号鍵保存部４４は、暗号演算部４５で用いられる所定の暗号鍵を保存している、ＲＯＭ４０内の記憶領域である。
【００２８】
暗号演算部４５は、暗号鍵保存部４４が保存している所定の暗号鍵を用いて、論理演算部４３で得られた各グループにおける第２の論理演算の結果に対して、所定の暗号演算を実施する。ただし、第１グループに関しては、第２の論理演算の結果が存在しないため、暗号演算部４５は、第１の論理演算の結果に対して所定の暗号演算を実施する。なお、暗号演算には、周知の一般的な手法を用いることができる。
【００２９】
そして、暗号演算部４５は、最後に暗号演算を実施したグループの暗号演算結果を、改ざんの有無を判定するために用いるメッセージ認証符号（ＭＡＣ）またはハッシュ値として算出する。
【００３０】
改ざん判定部４６は、論理演算部４３および暗号演算部４５によって新たに算出されたメッセージ認証符号（ＭＡＣ）またはハッシュ値を、事前に算出されている正常なメッセージ認証符号（ＭＡＣ）またはハッシュ値と比較する。そして、改ざん判定部４６は、双方のメッセージ認証符号（ＭＡＣ）またはハッシュ値が一致すれば、改ざんチェック領域４１は改ざんされていない（改ざん無し）と判定し、双方のメッセージ認証符号（ＭＡＣ）またはハッシュ値が一致しなければ、改ざんチェック領域４１は改ざんされている（改ざん有り）と判定する。
【００３１】
ＭＡＣ／ハッシュ値記憶部５１は、改ざんチェックにおいて比較対象となる正常なメッセージ認証符号（ＭＡＣ）またはハッシュ値を記憶している、セキュアＲＯＭ５０内の記憶領域である。この正常なメッセージ認証符号（ＭＡＣ）またはハッシュ値は、改ざんがなされていない改ざんチェック領域４１に対して、論理演算部４３および暗号演算部４５によって事前に実施された演算結果から算出されたメッセージ認証符号（ＭＡＣ）またはハッシュ値である。
【００３２】
この正常なメッセージ認証符号（ＭＡＣ）またはハッシュ値は、改ざんの有無を判定（検知）する基準となるため、セキュリティ性能が高いセキュアＲＯＭ５０に記憶され、かつ、セキュリティ性能が高いセキュアＩ／Ｆ３１を介してのみアクセスできるように構成されている。セキュアＲＯＭ５０およびセキュアＩ／Ｆ３１は、セキュリティチップ（例えばセキュリティＩＰコア）などに形成される。
【００３３】
なお、上述した論理演算部４３、暗号演算部４５、および改ざん判定部４６の各機能は、ＲＯＭ４０に格納されたコンピュータプログラムをＣＰＵ１０が読み出して解釈実行することによって実現される。
【００３４】
［電子制御装置が実行する改ざん検知方法］
次に、図３および図４Ａをさらに参照して、本発明の一実施形態に係る改ざん検知方法を説明する。図３は、電子制御装置１が実行する本実施形態に係る改ざん検知方法の手順を示すフローチャートである。図４Ａは、図２Ａで示したブロック領域の組み合わせの定義に基づき、図３の手順に従って本実施形態に係る改ざん検知方法を実施する場合の処理イメージを示した図である。
【００３５】
本実施形態に係る改ざん検知方法は、例えば、車両の電源状態がイグニッションオン（ＩＧ＿ＯＮ）に遷移して直ぐにでもエンジン始動が指示される可能性がある状況において、エンジンＥＣＵやブレーキＥＣＵなどのセキュアブートとして実施され得る。
【００３６】
所定のイベントが生じることで電子制御装置１において改ざん検知方法が開始されると、論理演算部４３において、改ざんチェック領域組み合わせ定義部４２で定義された内容に基づいて、改ざんチェック領域４１がｎ個のブロック領域に分割され、かつ、分割されたｎ個のブロック領域が区分されてｍ個のグループが形成される（ステップＳ３０１）。次に、論理演算部４３において、形成された第１グループ〜第ｍグループのそれぞれについて、各グループに含まれる複数のブロック領域に格納された複数のデータ間で、第１の論理演算が実施されて、その第１の論理演算の結果である第１の論理演算データＢ１〜Ｂｍがそれぞれ算出される（ステップＳ３０１）。
【００３７】
図４Ａの例では、第１グループについて、第１ブロック領域（Block[1]）に格納されたデータと第２ブロック領域（Block[2]）に格納されたデータとの間で第１の論理演算として排他的論理和が演算され、第１グループの第１の論理演算データＢ１(1,2)が算出される。同様にして、第２グループについては、第３ブロック領域（Block[3]）に格納されたデータと第４ブロック領域（Block[4]）に格納されたデータとの間で排他的論理和が演算され、第２グループの第１の論理演算データＢ２(3,4)が算出され、第ｍグループについては、第{ｎ−１}ブロック領域（Block[n-1]）に格納されたデータと第ｎブロック領域（Block[n]）に格納されたデータとの間で排他的論理和が演算され、第ｍグループの第１の論理演算データＢｍ(n-1,n)が算出される。
【００３８】
上記ステップＳ３０１の処理によって第１グループの第１の論理演算データＢ１が算出されると、まず暗号演算部４５において、その第１の論理演算データＢ１に対して暗号演算が実施されて、その暗号演算の結果である暗号演算データＣ１が算出される（ステップＳ３０２）。
【００３９】
図４Ａの例では、第１グループの第１の論理演算データＢ１(1,2)に対して暗号演算が実施されて、第１グループの暗号演算データＣ１(B1)が算出される。
【００４０】
上記ステップＳ３０２の処理によって第１グループの暗号演算データＣ１(B1)が算出されると、次に論理演算部４３および暗号演算部４５において、第２グループ〜第ｍグループのそれぞれについて以下の演算が連鎖的に実施される（ステップＳ３０３〜Ｓ３０６）。なお、変数ｉは、２〜ｍの整数をとり得る。
【００４１】
まず、論理演算部４３において、第ｉグループの第１の論理演算データＢｉと、暗号演算部４５が実施した第{ｉ−１}グループの暗号演算データＣ{ｉ−１}との間で、第２の論理演算が実施されて、その第２の論理演算の結果である第２の論理演算データＢｉ＋Ｃ{ｉ−１}が算出される（ステップＳ３０４）。その後、暗号演算部４５において、論理演算部４３が実施した第２の論理演算データＢｉ＋Ｃ{ｉ−１}に対して暗号演算が実施されて、第ｉグループの暗号演算データＣｉがそれぞれ算出される（ステップＳ３０４）。最後に演算結果が得られる第ｍグループの暗号演算データＣｍは、改ざんの有無を判断するために用いるメッセージ認証符号（ＭＡＣ）またはハッシュ値として用いられる。
【００４２】
図４Ａの例では、第２グループについて、第１の論理演算データＢ２(3,4)と直前の暗号演算データＣ１(B1)との間で第２の論理演算として排他的論理和が演算され、第２グループの第２の論理演算データＢ２＋Ｃ１が算出される。さらに、第２グループについて、第２の論理演算データＢ２＋Ｃ１に対して暗号演算が実施され、第２グループの暗号演算データＣ２(B2+C1)が算出される。同様にして、第３グループについては、第１の論理演算データＢ３(5,6)と直前の暗号演算データＣ２(B2+C1)との間で第２の論理演算データＢ３＋Ｃ２が算出され、この第２の論理演算データＢ３＋Ｃ２に対する暗号演算データＣ３(B3+C2)が算出される。第ｍグループについては、第１の論理演算データＢｍ(n-1,n)と直前の暗号演算データＣ{ｍ−１}(Bm-1+Cm-2)との間で第２の論理演算データＢｍ＋Ｃ{ｍ−１}が算出され、この第２の論理演算データＢｍ＋Ｃ{ｍ−１}に対する暗号演算データＣｍ(Bm+Cm-1)が算出される。
【００４３】
ここで、上記説明で理解できるように、本改ざん検知方法では、暗号演算がグループの数だけ行われる。つまり、本改ざん検知方法では、改ざんチェック領域４１を分割したｎ個のブロック領域からｍ個（ｍ＜ｎ）のグループが形成されているので、処理時間がかかる暗号演算を行う回数がｍ回で済む。よって、本改ざん検知方法は、ブロック領域の数（ｎ個）だけ暗号演算を行わなければならなかった従来のブロック暗号処理を用いた改ざん検知方法に比べて、ブロック暗号処理のために必要な時間を短縮することができる。
【００４４】
上記ステップＳ３０３〜Ｓ３０６の処理によって第ｍグループの暗号演算データＣｍ(Bm+Cm-1)が算出されると、改ざん判定部４６において、ＭＡＣ／ハッシュ値記憶部５１に記憶されている認証用データ、すなわち正常なメッセージ認証符号（ＭＡＣ）またはハッシュ値（以下「正常値Ｓｔ」という）と、当該算出された第ｍグループの暗号演算データＣｍ（以下「算出値Ｃｍ」という）とが、比較される（ステップＳ３０７）。
【００４５】
上記ステップＳ３０７における比較の結果、正常値Ｓｔと算出値Ｃｍとが一致する場合（ステップＳ３０８，Ｙｅｓ）、改ざん判定部４６によって、改ざんチェック領域４１は改ざんされていない（改ざん無し）と判定されて、所定のイベントに関する処理が継続して行われる（ステップＳ３１０）。一方、上記ステップＳ３０７における比較の結果、正常値Ｓｔと算出値Ｃｍとが一致しない場合（ステップＳ３０８，Ｎｏ）、改ざん判定部４６によって、改ざんチェック領域４１は改ざんされている（改ざん有り）と判定されて、所定のイベントに関する処理が停止させられる（ステップＳ３１０）。なお、所定のイベントの一例としては、エンジンの起動が挙げられる。
【００４６】
上述したステップＳ３０１〜Ｓ３１０の処理は、改ざんチェック領域組み合わせ定義部４２で定義された内容（ブロック領域の数、グループの数、および１グループに含まれるブロック領域の個数）が例示した内容と異なっていても、同様に実施される。
【００４７】
例えば、図４Ｂは、図２Ｂで示したブロック領域の組み合わせの定義に基づき、図３の手順に従って本実施形態に係る改ざん検知方法を実施する場合の処理イメージを示した図である。この図４Ｂにおいても、改ざんチェック領域組み合わせ定義部４２で定義された内容に従って、第１の論理演算、第２の論理演算、および暗号演算がそれぞれ実施され、最終的に第ｍグループの暗号演算データである算出値Ｃｍが算出される（ステップＳ３０１〜Ｓ３０６）。そして、この算出値Ｃｍと、ＭＡＣ／ハッシュ値記憶部５１に記憶されている正常値Ｓｔとが比較されて（ステップＳ３０７）、改ざんチェック領域４１における改ざんの有無が判定される（ステップＳ３０８〜Ｓ３１０）。
【００４８】
［応用例］
ある１つの機能を実現するコンピュータプログラムは、ＲＯＭ４０上の格納領域に順番に記述されるのが一般的である。例えば、図５Ａに示すように、機能Ａが第１ブロック領域（Block[1]）から第ｋブロック領域（Block[k]）まで順に格納されており、機能Ｂが第{ｋ＋１}ブロック領域（Block[k+1]）から第ｎブロック領域（Block[n]）まで順に格納されているといった具合である。
【００４９】
この格納状態のコンピュータプログラムに対して、容易に考えつく隣接する２つのブロック領域を組み合わせたグループ形成の手法（上述した図２Ａ）を使用する場合、機能Ａに関して、正常なブロック領域による第１の論理演算の結果と改ざん後のブロック領域による第１の論理演算の結果とが同じになるように改ざんされてしまう（図５Ａの網掛け部分）と、改ざんの有無が正しく判定できなくなるおそれがある。
【００５０】
このような改ざんに対応するためには、改ざんチェック領域組み合わせ定義部４２による定義を、例えば図５Ｂに示すように、機能Ａのブロック領域と機能Ｂのブロック領域とを組み合わせてグループ化するように定義する。この定義では、第１の論理演算の結果が、改ざんが無いブロック領域と改ざんが有るブロック領域との論理演算となるため、改ざんの有無が正しく判定できなくなるおそれを抑制できる。機能Ａの改ざんを望む攻撃者は、本来意図しない機能Ｂも改ざんする必要が生じ、改ざんの難易度が上がるという効果を奏する。
【００５１】
［本実施形態による作用および効果］
上述した本発明の一実施形態に係る改ざん検知方法によれば、改ざんチェック領域４１を分割するｎ個のブロック領域を区分して、ｍ個（ｍ＜ｎ）のグループを形成する。そして、この形成したｍ個のグループのそれぞれについて、各グループに含まれる複数のブロック領域に格納された複数のデータ間で排他的論理和（第１の論理演算）を実施して、ｎ個よりも少ないｍ個の演算結果を算出する。
【００５２】
このように、本実施形態に係る改ざん検知方法によれば、ｎ個のブロック領域を幾つか統合してグループ化し、暗号演算の対象となるブロック領域の数を減らした後に、つまりｎ個よりも少ないｍ個の演算結果について、処理時間がかかる暗号演算を行う。よって、本発明の改ざん検知方法は、ブロック領域の数（ｎ個）だけ暗号演算を行わなければならなかった従来のブロック暗号処理を用いた改ざん検知方法に比べて、暗号演算を実行する回数を少なくでき、ブロック暗号処理のために必要な時間を短縮することができる。
【００５３】
［参考例］
本実施形態に係る改ざん検知方法では、ブロック領域を幾つか論理演算することで実質的なブロック領域数を減らして、暗号演算の回数を少なくしている。このため、本改ざん検知方法は、全てのブロック領域に対して純粋に暗号演算を行う従来の改ざん検知方法よりも、厳密にはセキュリティ性能が劣る。よって、改ざん検知を行う電子制御装置がセキュリティを重要とするか否かで、実施する改ざん検知方法を動的に変更してもよい。例えば、セキュリティが重要な電子制御装置に対しては従来の改ざん検知方法を適用し、セキュリティは重要ではないが改ざんの有無を確認しておきたい電子制御装置に対しては本実施形態に係る改ざん検知方法を適用する、といったことが可能である。
【００５４】
［電子制御装置の他の構成例］
上述した電子制御装置１の構成では、ＭＡＣ／ハッシュ値記憶部５１だけがセキュリティ性能が高いセキュアＲＯＭ５０に格納されていた。しかし、さらにセキュリティ性能を高くするために、例えば図６に示す電子制御装置２の構成にしても構わない。
【００５５】
図６の例では、ＭＡＣ／ハッシュ値記憶部５１に加え、改ざんチェック領域組み合わせ定義部５２と、論理演算部５３と、暗号鍵保存部５４と、改ざん判定部５６とが、セキュリティ性能が高いセキュアＲＯＭ５０に格納されている。また、暗号演算部４５がハードウエアＩＰ（ＨＷ＿ＩＰ）に格納されている。さらに、これらの構成を安全に機能させるために、セキュアＣＰＵ１１およびセキュアＲＡＭ２１が設けられている。
【００５６】
このような構成によれば、電子制御装置２における論理演算部５３、暗号演算部４５、および改ざん判定部５６の動作が外部から観測できなくなり、改ざん検知方法の動作ロジックを解析し難くすることができる。また、電子制御装置２における改ざんチェック領域組み合わせ定義部５２を外部から参照できなくなり、組み合わせ定義の情報が漏えいし難くすることができる。
【産業上の利用可能性】
【００５７】
本発明の改ざん検知方法は、車両に搭載される電子制御装置などに適用可能であり、ブロック暗号処理のために必要な時間を短縮したい場合に有用である。
【符号の説明】
【００５８】
１、２      電子制御装置（ＥＣＵ）
１０        中央演算処理装置（ＣＰＵ）
１１        セキュアＣＰＵ
２０        ランダムアクセスメモリ（ＲＡＭ）
２１        セキュアＲＡＭ
３０        インタフェース（Ｉ／Ｆ）
３１        セキュアＩ／Ｆ
４０        リードオンリーメモリ（ＲＯＭ）
４１        改ざんチェック領域
４２、５２  改ざんチェック領域組み合わせ定義部
４３、５３  論理演算部
４４、５４  暗号鍵保存部
４５、６５  暗号演算部
４６、５６  改ざん判定部
５０        セキュアＲＯＭ
５１        ＭＡＣ／ハッシュ値記憶部
７０        バス
【図１】
2017188826.tif 000003
【図２Ａ】
2017188826.tif 000004
【図２Ｂ】
2017188826.tif 000005
【図２Ｃ】
2017188826.tif 000006
【図３】
2017188826.tif 000007
【図４Ａ】
2017188826.tif 000008
【図４Ｂ】
2017188826.tif 000009
【図５Ａ】
2017188826.tif 000010
【図５Ｂ】
2017188826.tif 000011
【図６】
2017188826.tif 000012