(57)【要約】    【課題】  デジタルデータの改竄を簡便かつ高精度に検出する。    【解決手段】  デジタルデータの各アドレスADR1に格納されたデータ値Data1に対して、データ値Data1をアドレスとみなした参照アドレスADR2に格納されたデータ値Data2を加算して照合要素Data3を演算する。そして、このような演算を、デジタルデータの先頭アドレスから最終アドレスまでのすべてのアドレスについて実行し、照合要素Data3を順次積算した改竄検出用の照合値CVNを求める。このようにすれば、照合値CVNには、デジタルデータの先頭アドレスから最終アドレスに格納されるすべてのデータ値が反映されることとなり、連続するアドレスに同一値が格納されていても、その改竄を簡便かつ高精度に検出することができる。【選択図】  図３
2005056159.tif 000002
【特許請求の範囲】
【請求項１】
デジタルデータの各アドレスに格納されたデータ値を順次読み出す第１のデータ読出機能と、
該第１のデータ読出機能により読み出されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第１の参照アドレス生成機能と、
該第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値を読み出す第２のデータ読出機能と、
前記第１のデータ読出機能及び第２のデータ読出機能により夫々読み出されたデータ値から、改竄検出用の照合値を演算する照合値演算機能と、
をコンピュータに実現させるためのデジタルデータの改竄検出プログラム。
【請求項２】
前記第１の参照アドレス生成機能は、前記第１のデータ読出機能により読み出されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする請求項１記載のデジタルデータの改竄検出プログラム。
【請求項３】
前記第１の参照アドレス生成機能は、前記第１のデータ読出機能により読み出されたデータ値、又は、該第１のデータ読出機能により読み出されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする請求項１又は請求項２に記載のデジタルデータの改竄検出プログラム。
【請求項４】
前記照合値演算機能は、前記第１のデータ読出機能及び第２のデータ読出機能により夫々読み出されたデータ値の少なくとも一方に対して所定の四則演算を施して、改竄検出用の照合値を演算することを特徴とする請求項１〜請求項３のいずれか１つに記載のデジタルデータの改竄検出プログラム。
【請求項５】
前記第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第２の参照アドレス生成機能を備え、
前記照合値演算機能は、前記第１のデータ読出機能により読み出されたデータ値、並びに、前記第２のデータ読出機能により読み出されたデータ値及び前記第２の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値のうち少なくとも前記参照アドレスに格納されたデータ値から、改竄検出用の照合値を演算することを特徴とする請求項１〜請求項４のいずれか１つに記載のデジタルデータの改竄検出プログラム。
【請求項６】
前記第２の参照アドレス生成機能は、前記第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする請求項５記載のデジタルデータの改竄検出プログラム。
【請求項７】
前記第２の参照アドレス生成機能は、前記第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値、又は、該第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする請求項５又は請求項６に記載のデジタルデータの改竄検出プログラム。
【請求項８】
前記第１の参照アドレス生成機能は、前記第１のデータ読出機能により読み出されたデータ値が格納されるアドレスを起点として、そこから連続する複数アドレスに格納されたデータ値から参照アドレスを生成することを特徴とする請求項１〜請求項７のいずれか１つに記載のデジタルデータの改竄検出プログラム。
【請求項９】
前記第１の参照アドレス生成機能は、前記デジタルデータのアドレスを示すポインタから連続する複数アドレスに格納されたデータ値から参照アドレスを生成すると共に、該参照アドレスを生成するたびに、前記ポインタを所定規則に則って更新することを特徴とする請求項１〜請求項７のいずれか１つに記載のデジタルデータの改竄検出プログラム。
【請求項１０】
デジタルデータが記憶された記憶媒体から、該デジタルデータの各アドレスに格納されたデータ値を順次読み出す第１のデータ読出工程と、
該第１のデータ読出工程により読み出されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第１の参照アドレス生成工程と、
該第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値を読み出す第２のデータ読出工程と、
前記第１のデータ読出工程及び第２のデータ読出工程により夫々読み出されたデータ値から、改竄検出用の照合値を演算する照合値演算工程と、
をコンピュータ上で実行することを特徴とするデジタルデータの改竄検出方法。
【請求項１１】
前記第１の参照アドレス生成工程は、前記第１のデータ読出工程により読み出されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする請求項１０記載のデジタルデータの改竄検出方法。
【請求項１２】
前記第１の参照アドレス生成工程は、前記第１のデータ読出工程により読み出されたデータ値、又は、該第１のデータ読出工程により読み出されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする請求項１０又は請求項１１に記載のデジタルデータの改竄検出方法。
【請求項１３】
前記照合値演算工程は、前記第１のデータ読出工程及び第２のデータ読出工程により夫々読み出されたデータ値の少なくとも一方に対して所定の四則演算を施して、改竄検出用の照合値を演算することを特徴とする請求項１０〜請求項１２のいずれか１つに記載のデジタルデータの改竄検出方法。
【請求項１４】
前記第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第２の参照アドレス生成工程を備え、
前記照合値演算工程は、前記第１のデータ読出工程により読み出されたデータ値、並びに、前記第２のデータ読出工程により読み出されたデータ値及び前記第２の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値のうち少なくとも前記参照アドレスに格納されたデータ値から、改竄検出用の照合値を演算することを特徴とする請求項１０〜請求項１３のいずれか１つに記載のデジタルデータの改竄検出方法。
【請求項１５】
前記第２の参照アドレス生成工程は、前記第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする請求項１４記載のデジタルデータの改竄検出方法。
【請求項１６】
前記第２の参照アドレス生成工程は、前記第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値、又は、該第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする請求項１４又は請求項１５に記載のデジタルデータの改竄検出方法。
【請求項１７】
前記第１の参照アドレス生成工程は、前記第１のデータ読出工程により読み出されたデータ値が格納されるアドレスを起点として、そこから連続する複数アドレスに格納されたデータ値から参照アドレスを生成することを特徴とする請求項１０〜請求項１６のいずれか１つに記載のデジタルデータの改竄検出方法。
【請求項１８】
前記第１の参照アドレス生成工程は、前記デジタルデータのアドレスを示すポインタから連続する複数アドレスに格納されたデータ値から参照アドレスを生成すると共に、該参照アドレスを生成するたびに、前記ポインタを所定規則に則って更新することを特徴とする請求項１０〜請求項１６のいずれか１つに記載のデジタルデータの改竄検出方法。
【請求項１９】
デジタルデータの各アドレスに格納されたデータ値を順次読み出す第１のデータ読出手段と、
該第１のデータ読出手段により読み出されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第１の参照アドレス生成手段と、
該第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値を読み出す第２のデータ読出手段と、
前記第１のデータ読出手段及び第２のデータ読出手段により夫々読み出されたデータ値から、改竄検出用の照合値を演算する照合値演算手段と、
を含んで構成されたことを特徴とするデジタルデータの改竄検出装置。
【請求項２０】
前記第１の参照アドレス生成手段は、前記第１のデータ読出手段により読み出されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする請求項１９記載のデジタルデータの改竄検出装置。
【請求項２１】
前記第１の参照アドレス生成手段は、前記第１のデータ読出手段により読み出されたデータ値、又は、該第１のデータ読出手段により読み出されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする請求項１９又は請求項２０に記載のデジタルデータの改竄検出装置。
【請求項２２】
前記照合値演算手段は、前記第１のデータ読出手段及び第２のデータ読出手段により夫々読み出されたデータ値の少なくとも一方に対して所定の四則演算を施して、改竄検出用の照合値を演算することを特徴とする請求項１９〜請求項２１のいずれか１つに記載のデジタルデータの改竄検出装置。
【請求項２３】
前記第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第２の参照アドレス生成手段を備え、
前記照合値演算手段は、前記第１のデータ読出手段により読み出されたデータ値、並びに、前記第２のデータ読出手段により読み出されたデータ値及び前記第２の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値のうち少なくとも前記参照アドレスに格納されたデータ値から、改竄検出用の照合値を演算することを特徴とする請求項１９〜請求項２２のいずれか１つに記載のデジタルデータの改竄検出装置。
【請求項２４】
前記第２の参照アドレス生成手段は、前記第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする請求項２３記載のデジタルデータの改竄検出装置。
【請求項２５】
前記第２の参照アドレス生成手段は、前記第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値、又は、該第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする請求項２３又は請求項２４に記載のデジタルデータの改竄検出装置。
【請求項２６】
前記第１の参照アドレス生成手段は、前記第１のデータ読出手段により読み出されたデータ値が格納されるアドレスを起点として、そこから連続する複数アドレスに格納されたデータ値から参照アドレスを生成することを特徴とする請求項１９〜請求項２５のいずれか１つに記載のデジタルデータの改竄検出装置。
【請求項２７】
前記第１の参照アドレス生成手段は、前記デジタルデータのアドレスを示すポインタから連続する複数アドレスに格納されたデータ値から参照アドレスを生成すると共に、該参照アドレスを生成するたびに、前記ポインタを所定規則に則って更新することを特徴とする請求項１９〜請求項２５のいずれか１つに記載のデジタルデータの改竄検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデータの改竄を簡便かつ高精度に検出する技術に関する。
【背景技術】
【０００２】
近年の自動車では、車載コントロールユニットにより、エンジン，ブレーキなどが電子制御されている。エンジン制御においては、機関出力と排気性状との両立を図るべく、種々の実験などを通じて得られた最適な制御データが用いられている。一方、市場の一部においては、排気性状が低下することも省みずに、機関出力のみを向上させるべく、最適に設定された制御データを書き換える不法改造が行われていることも否めない。このため、北米では、排気規制強化の一環として、コントロールユニットの不法改造を防止すべく、改竄検出用の照合値（CVN；Calibration Verification Number）を出力することを義務付けている。
【０００３】
従来では、プログラム（制御データも含む）のチェックサムを照合値として出力していたが、チェックサムでは次のような不具合があった。即ち、チェックサムは、プログラムデータを単純に加算した総和なので、加減算した分をダミーデータなどで打ち消すようにすれば、照合値を変えずにプログラムの改竄が可能であった。このため、チェックサム方式では、プログラムの改竄を高精度に検出することはできなかった。そこで、本願出願人は、各アドレスに格納されたデータ値をアドレスとみなし、そのアドレスに格納されたデータ値に対して所定演算を施して照合値を演算することで、デジタルデータの改竄を検出する技術（特許文献１）を提案した。
【特許文献１】特開２００３−５８４２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、かかる従来技術においては、図１３のＡ部に示すように、異なるアドレスに格納されているデータ値が同一であれば、その参照先が同じアドレスとなることから、必ずしもデジタルデータの全アドレスを対象として照合値が算出されないこととなる。このため、参照先とはならないデータ値を書き換えたときには、その改竄を検出できないおそれがあった。また、デジタルデータにおいては、連続する未使用領域には、同図に示すように、同一値が格納されることが一般的である。このため、同図のＢ部に示すように、改竄前後のデータ値がこのような未使用領域を夫々示していれば、改竄の有無にかかわらず照合値が変わらないことから、その改竄を検出できないおそれがあった。
【０００５】
そこで、本発明は以上のような従来の問題点に鑑み、照合値の演算処理に要する負荷増大を抑制しつつ、デジタルデータの全アドレスから照合値を演算することで、デジタルデータの改竄を簡便かつ高精度に検出できるようにしたデジタルデータの改竄検出技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
このため、デジタルデータの改竄検出プログラムに係る発明において、請求項１記載の発明では、デジタルデータの各アドレスに格納されたデータ値を順次読み出す第１のデータ読出機能と、該第１のデータ読出機能により読み出されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第１の参照アドレス生成機能と、該第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値を読み出す第２のデータ読出機能と、前記第１のデータ読出機能及び第２のデータ読出機能により夫々読み出されたデータ値から、改竄検出用の照合値を演算する照合値演算機能と、をコンピュータに実現させることを特徴とする。
【０００７】
請求項２記載の発明では、前記第１の参照アドレス生成機能は、前記第１のデータ読出機能により読み出されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする。
請求項３記載の発明では、前記第１の参照アドレス生成機能は、前記第１のデータ読出機能により読み出されたデータ値、又は、該第１のデータ読出機能により読み出されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする。
【０００８】
請求項４記載の発明では、前記照合値演算機能は、前記第１のデータ読出機能及び第２のデータ読出機能により夫々読み出されたデータ値の少なくとも一方に対して所定の四則演算を施して、改竄検出用の照合値を演算することを特徴とする。
請求項５記載の発明では、前記第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第２の参照アドレス生成機能を備え、前記照合値演算機能は、前記第１のデータ読出機能により読み出されたデータ値、並びに、前記第２のデータ読出機能により読み出されたデータ値及び前記第２の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値のうち少なくとも前記参照アドレスに格納されたデータ値から、改竄検出用の照合値を演算することを特徴とする。
【０００９】
請求項６記載の発明では、前記第２の参照アドレス生成機能は、前記第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする。
請求項７記載の発明では、前記第２の参照アドレス生成機能は、前記第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値、又は、該第１の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする。
【００１０】
請求項８記載の発明では、前記第１の参照アドレス生成機能は、前記第１のデータ読出機能により読み出されたデータ値が格納されるアドレスを起点として、そこから連続する複数アドレスに格納されたデータ値から参照アドレスを生成することを特徴とする。
請求項９記載の発明では、前記第１の参照アドレス生成機能は、前記デジタルデータのアドレスを示すポインタから連続する複数アドレスに格納されたデータ値から参照アドレスを生成すると共に、該参照アドレスを生成するたびに、前記ポインタを所定規則に則って更新することを特徴とする。
【００１１】
また、デジタルデータの改竄検出方法に係る発明において、請求項１０記載の発明では、デジタルデータが記憶された記憶媒体から、該デジタルデータの各アドレスに格納されたデータ値を順次読み出す第１のデータ読出工程と、該第１のデータ読出工程により読み出されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第１の参照アドレス生成工程と、該第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値を読み出す第２のデータ読出工程と、前記第１のデータ読出工程及び第２のデータ読出工程により夫々読み出されたデータ値から、改竄検出用の照合値を演算する照合値演算工程と、をコンピュータ上で実行することを特徴とする。
【００１２】
請求項１１記載の発明では、前記第１の参照アドレス生成工程は、前記第１のデータ読出工程により読み出されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする。
請求項１２記載の発明では、前記第１の参照アドレス生成工程は、前記第１のデータ読出工程により読み出されたデータ値、又は、該第１のデータ読出工程により読み出されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする。
【００１３】
請求項１３記載の発明では、前記照合値演算工程は、前記第１のデータ読出工程及び第２のデータ読出工程により夫々読み出されたデータ値の少なくとも一方に対して所定の四則演算を施して、改竄検出用の照合値を演算することを特徴とする。
請求項１４記載の発明では、前記第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第２の参照アドレス生成工程を備え、前記照合値演算工程は、前記第１のデータ読出工程により読み出されたデータ値、並びに、前記第２のデータ読出工程により読み出されたデータ値及び前記第２の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値のうち少なくとも前記参照アドレスに格納されたデータ値から、改竄検出用の照合値を演算することを特徴とする。
【００１４】
請求項１５記載の発明では、前記第２の参照アドレス生成工程は、前記第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする。
請求項１６記載の発明では、前記第２の参照アドレス生成工程は、前記第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値、又は、該第１の参照アドレス生成工程により生成された参照アドレスに格納されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする。
【００１５】
請求項１７記載の発明では、前記第１の参照アドレス生成工程は、前記第１のデータ読出工程により読み出されたデータ値が格納されるアドレスを起点として、そこから連続する複数アドレスに格納されたデータ値から参照アドレスを生成することを特徴とする。
請求項１８記載の発明では、前記第１の参照アドレス生成工程は、前記デジタルデータのアドレスを示すポインタから連続する複数アドレスに格納されたデータ値から参照アドレスを生成すると共に、該参照アドレスを生成するたびに、前記ポインタを所定規則に則って更新することを特徴とする。
【００１６】
一方、デジタルデータの改竄検出装置に係る発明において、請求項１９記載の発明では、デジタルデータの各アドレスに格納されたデータ値を順次読み出す第１のデータ読出手段と、該第１のデータ読出手段により読み出されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第１の参照アドレス生成手段と、該第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値を読み出す第２のデータ読出手段と、前記第１のデータ読出手段及び第２のデータ読出手段により夫々読み出されたデータ値から、改竄検出用の照合値を演算する照合値演算手段と、を含んで構成されたことを特徴とする。
【００１７】
請求項２０記載の発明では、前記第１の参照アドレス生成手段は、前記第１のデータ読出手段により読み出されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする。
請求項２１記載の発明では、前記第１の参照アドレス生成手段は、前記第１のデータ読出手段により読み出されたデータ値、又は、該第１のデータ読出手段により読み出されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする。
【００１８】
請求項２２記載の発明では、前記照合値演算手段は、前記第１のデータ読出手段及び第２のデータ読出手段により夫々読み出されたデータ値の少なくとも一方に対して所定の四則演算を施して、改竄検出用の照合値を演算することを特徴とする。
請求項２３記載の発明では、前記第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値から、前記デジタルデータのアドレスを示すように参照アドレスを生成する第２の参照アドレス生成手段を備え、前記照合値演算手段は、前記第１のデータ読出手段により読み出されたデータ値、並びに、前記第２のデータ読出手段により読み出されたデータ値及び前記第２の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値のうち少なくとも前記参照アドレスに格納されたデータ値から、改竄検出用の照合値を演算することを特徴とする。
【００１９】
請求項２４記載の発明では、前記第２の参照アドレス生成手段は、前記第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値及びそのアドレス値から、参照アドレスを生成することを特徴とする。
請求項２５記載の発明では、前記第２の参照アドレス生成手段は、前記第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値、又は、該第１の参照アドレス生成手段により生成された参照アドレスに格納されたデータ値及びそのアドレス値に対して所定の四則演算を施して、参照アドレスを生成することを特徴とする。
【００２０】
請求項２６記載の発明では、前記第１の参照アドレス生成手段は、前記第１のデータ読出手段により読み出されたデータ値が格納されるアドレスを起点として、そこから連続する複数アドレスに格納されたデータ値から参照アドレスを生成することを特徴とする。
請求項２７記載の発明では、前記第１の参照アドレス生成手段は、前記デジタルデータのアドレスを示すポインタから連続する複数アドレスに格納されたデータ値から参照アドレスを生成すると共に、該参照アドレスを生成するたびに、前記ポインタを所定規則に則って更新することを特徴とする。
【発明の効果】
【００２１】
請求項１，１０又は１９記載の発明によれば、デジタルデータの各アドレスに格納されたデータ値から、デジタルデータのアドレスを示すように参照アドレスが生成される。そして、各アドレスに格納されたデータ値及び参照アドレスに格納されているデータ値から、改竄検出用の照合値が演算される。このため、照合値には、デジタルデータの先頭アドレスから最終アドレスに格納されるすべてのデータ値が反映されることとなり、連続するアドレスに同一値が格納されていても、その改竄を簡便かつ高精度に検出することができる。
【００２２】
請求項２，１１又は２０記載の発明によれば、参照アドレスは、デジタルデータの各アドレスに格納されたデータ値及びそのアドレス値から生成される。このため、参照アドレスの生成方法は、簡便であるにもかかわらず、これを推測することを困難とすることができる。
請求項３，１２又は２１記載の発明によれば、参照アドレスは、デジタルデータの各アドレスに格納されたデータ値、又は、デジタルデータの各アドレスに格納されたデータ値及びそのアドレス値に所定の四則演算を施すことによって生成される。このため、参照アドレスの生成にあたって、極めて簡単な四則演算を施すことで、その生成方法を推測することを一層困難とすることができる。
【００２３】
請求項４，１３又は２２記載の発明によれば、改竄検出用の照合値は、デジタルデータの各アドレスに格納されたデータ値、及び、そのデータ値から生成された参照アドレスに格納されたデータ値に所定の四則演算を施すことによって生成される。このため、照合値の演算にあたって、極めて簡単な四則演算を施すことで、その演算方法を推測することを困難とすることができる。
【００２４】
請求項５，１４又は２３記載の発明によれば、参照アドレスに格納されたデータ値から、デジタルデータのアドレスを示すように参照アドレスが生成される。そして、デジタルデータの各アドレスに加え、そこに格納されたデータ値から生成された参照アドレス及び参照アドレスに格納されたデータ値から生成された参照アドレスに夫々格納されているデータ値のうち少なくとも後者のデータ値から、改竄検出用の照合値が演算される。このため、照合値の演算方法は、簡便であるにもかかわらず、これを推測することを一層困難とすることができる。
【００２５】
請求項６，１５又は２４記載の発明によれば、参照アドレスは、別の参照アドレスに格納されるデータ値から生成されたデータ値及びそのアドレス値から生成される。このため、参照アドレスの生成方法は、簡便であるにもかかわらず、これを推測することを困難とすることができる。
請求項７，１６又は２５記載の発明によれば、参照アドレスは、別の参照アドレスに格納されるデータ値、又は、参照アドレスに格納されるデータ値及びそのアドレス値に所定の四則演算を施すことによって生成される。このため、参照アドレスの生成にあたって、極めて簡単な四則演算を施すことで、その生成方法を推測することを一層困難とすることができる。
【００２６】
請求項８，１７又は２６記載の発明によれば、参照アドレスは、デジタルデータの各アドレスからデータ値を読み出すときに、データ値が格納されるアドレスを起点として、そこから連続する複数アドレスに格納されたデータ値から生成される。このため、１バイトでは表現できないアドレスについても、そこに格納されているデータ値を参照することが可能となり、広大なアドレスを有するデジタルデータであっても、その改竄を検出することができる。
【００２７】
請求項９，１８又は２７記載の発明によれば、参照アドレスは、デジタルデータのアドレスを示すポインタから連続する複数アドレスに格納されたデータ値から生成されると共に、ポインタは、参照アドレスを生成するたびに、所定規則に則って更新される。このため、参照アドレスの生成方法の推測が一層困難になると共に、１バイトでは表現できないアドレスについても、そこに格納されているデータ値を参照することが可能となり、広大なアドレスを有するデジタルデータであっても、その改竄を検出することができる。
【発明を実施するための最良の形態】
【００２８】
以下、添付された図面を参照して本発明を詳述する。
図１は、本発明を具現化したデジタルデータの改竄検出装置（以下「改竄検出装置」という）の基本構成を示す。改竄検出装置は、少なくとも中央処理装置（CPU）とメモリとを備えたコンピュータ上に構築され、メモリにロードされたプログラムにより各種機能がソフトウエア的に実現される。
【００２９】
改竄検出装置１０は、アドレスカウンタ１２と、アドレス生成部１４と、照合値演算部１６と、出力部１８と、を含んで構成される。また、改竄検出装置１０による改竄検出対象たるデジタルデータは、ハードディスク，ROM，CD-ROM，DVD-ROMなどのコンピュータ読取可能な記憶媒体２０に記憶される。ここで、デジタルデータの種類としては、コンピュータプログラム，自動車の各種制御に用いられる制御プログラム及びデータ，デジタル著作物などが挙げられる。
【００３０】
アドレスカウンタ１２は、記憶媒体２０において改竄検出対象たるデジタルデータのアドレスADR1を示す。デジタルデータの改竄検出処理を開始するときには、アドレスカウンタ１２は、改竄検出対象たるデジタルデータの先頭アドレスを示し、処理進行に伴ってそのアドレスが順次カウントアップされる。ここで、記憶媒体２０に複数のデジタルデータが記憶されていることを想定し、その中から任意のデジタルデータを選択可能とすることが望ましい。このときには、アドレスカウンタ１２は、選択されたデジタルデータの先頭アドレスを示すこととなる。
【００３１】
アドレス生成部１４では、アドレスカウンタ１２が示すアドレスADR1に基づいて、記憶媒体２０から、アドレスADR1に格納されているデータ値Data1が読み出される。そして、読み出されたデータ値Data1に対して、四則演算を任意に組み合わせた所定演算が施され、デジタルデータの参照アドレスADR2が生成される。なお、アドレス生成部１４により、第１のデータ読出機能，工程及び手段、並びに、第１の参照アドレス生成機能，工程及び手段が夫々実現される。
【００３２】
照合値演算部１６では、アドレスカウンタ１２が示すアドレスADR1及びアドレス生成部１４により生成された参照アドレスADR2に基づいて、記憶媒体２０から、アドレスADR1及び参照アドレスADR2に格納されているデータ値Data1及びData2が夫々読み出される。そして、読み出されたデータ値Data1及びData2に対して、四則演算を任意に組み合わせた所定演算が施され、改竄検出用照合値CVNが演算される。なお、照合値演算部１６により、第２のデータ読出機能，工程及び手段、並びに、照合値演算機能，工程及び手段が夫々実現される。
【００３３】
出力部１８は、照合値演算部１６により演算された照合値CVNを可視的に出力すべく、CRT（Cathode Ray Tube）やLCD（Liquid Crystal Display）などの表示装置，プリンタなどの印刷装置から構成される。ここで、出力部１８には、改竄検出対象となるデジタルデータの照合基準値、即ち、改竄がなされていないときの照合値を併せて出力することが望ましい。
【００３４】
次に、改竄検出装置１０における処理概要について、図２に示すフローチャートを参照しつつ説明する。
ステップ１（図では「Ｓ１」と略記する。以下同様）では、アドレスカウンタ１２が示すアドレスADR1に、デジタルデータの先頭アドレスが設定される。即ち、ユーザによりデジタルデータが指定されたときには、アドレスADR1には、記憶媒体２０におけるそのデジタルデータの先頭アドレスが設定される。一方、記憶媒体２０にデジタルデータが１つのみ記憶されているときには、記憶媒体２０の先頭アドレスが設定される。
【００３５】
ステップ２では、改竄検出用照合値CVNが０に初期化される。
ステップ３では、記憶媒体２０から、アドレスADR1に格納されているデータ値Data1が読み出される。なお、ステップ３の処理が、第１のデータ読出機能，工程及び手段に夫々該当する。
ステップ４では、読み出されたデータ値Data1に対して、後述する各種所定演算が施され、デジタルデータの参照アドレスADR2が生成される。なお、ステップ４の処理が、第１の参照アドレス生成機能，工程及び手段に夫々該当する。
【００３６】
ステップ５では、記憶媒体２０から、参照アドレスADR2に格納されているデータ値Data2が読み出される。なお、ステップ５の処理が、第２のデータ読出機能，工程及び手段に夫々該当する。
ステップ６では、読み出されたデータ値Data1及びData2に対して、後述する各種所定演算が施され、照合値CVNの照合要素Data3が演算される。
【００３７】
ステップ７では、照合値CVNに対して照合要素Data3が加算される。
ステップ８では、照合値CVNの演算が終了したか否か、即ち、改竄検出対象たるデジタルデータの最終アドレスまで処理が終了したか否かが判定される。そして、照合値CVNの演算が終了したならばステップ９へと進み（Ｙｅｓ）、出力部１８に照合値CVNが出力される。一方、照合値CVNの演算が終了していなければステップ１０へと進み（Ｎｏ）、アドレスADR1がカウントアップされた後、ステップ３へと戻る。なお、ステップ６〜ステップ８における一連の処理が、照合値演算機能，工程及び手段に夫々該当する。
【００３８】
なお、照合値CVNを出力する代わりに、照合値CVNが照合基準値と一致しなければ、デジタルデータが改竄されたと判定し、その旨を出力部１８に出力するようにしてもよい。
次に、改竄検出用照合値CVNの各種演算方法について説明する。
（第１実施例）
第１実施例では、図３に示すように、アドレスARD1に格納されるデータ値Data1は、参照アドレスADR2そのものを示しているとみなし、そこに格納されているデータ値Data2を読み込む。そして、データ値Data1及びData2を単純に加算し、照合要素Data3を演算した後、照合値CVNに対して照合要素Data3を加算する。このような処理を、改竄検出対象たるデジタルデータの先頭アドレスから最終アドレスまで順次繰り返すことで、最終的な照合値CVNを演算する。なお、図示するアドレス値及びデータ値は、特に断らない限り、10進法で表わしているものとする（以下同様）。
【００３９】
照合要素Data3の演算方法について、同図に示す具体例をもって説明すると、アドレスADR1=0001に格納されているデータ値Data1=3は、参照アドレスADR2そのものを示しているので、参照アドレスADR2=0003となる。そして、参照アドレスADR2=0003に格納されているデータ値Data2は「13」であるので、データ値Data1及びData2が加算され、照合要素Data3=Data1+Data2=3+13=16となる。
【００４０】
ここで、アドレス「0006」におけるデータ値が「37」から「39」に改竄されたとする。背景技術において参照した特許文献１に開示される技術（以下「従来方式」という）では、データ値Data1が参照アドレスADR2を示す点については本発明と同様であるが、参照アドレスADR2に格納されているデータ値Data2そのものを照合要素Data3としていたため、連続するアドレス0030〜0049に同一値「10」が格納されていると、改竄前後における照合要素Data3は夫々「10」となって、改竄内容が反映されなかった。しかし、本発明による改竄検出技術（以下「本方式」という）によれば、照合要素Data3は、改竄前では「37+10=47」であるのに対して、改竄後では「39+10=49」となって、改竄内容が反映されることとなる。
（第２実施例）
第２実施例では、第１実施例における演算方法に加え、図４に示すように、データ値Data1に対して任意の四則演算、例えば、2を乗算することで、参照アドレスADR2を生成するようにする。このとき、コンピュータでは乗除算にある程度の時間がかかることを考慮し、論理シフトで代替される「2n倍（ｎは整数）」とすることが望ましい。即ち、アドレスADR1=0000に格納されているデータ値Data1=1に2を乗算し、参照アドレスADR2=0002を生成する。参照アドレスADR2=0002に格納されているデータ値Data2は「37」であるので、データ値Data1及びData2を加算し、照合要素Data3=Data1+Data2=1+37=38を求める。
【００４１】
ここで、アドレス「0006」におけるデータ値が「17」から「23」に改竄されたとする。従来方式では、改竄前後における照合要素Data3は夫々「10」となって、改竄内容が反映されなかった。しかし、本方式によれば、照合要素Data3は、改竄前では「17+10=27」であるのに対して、改竄後では「23+10=33」となって、改竄内容が反映されることとなる。
（第３実施例）
第３実施例では、第１実施例における演算方法に加え、図５に示すように、照合要素Data3を演算するときに、参照アドレスADR2に格納されているデータ値Data2に対して任意の四則演算、例えば、8を減算するようにする。即ち、アドレスADR1=0000に格納されているデータ値Data1=2から参照アドレスADR2=0002を生成すると共に、そこに格納されているデータ値Data2=37を読み込む。また、データ値Data1=2に対して、データ値Data2=37から８を減算した値を加算し、照合要素Data3=Data1+(Data2-8)=1+(37-8)=30を求める。
【００４２】
ここで、アドレス「0006」におけるデータ値が「34」から「46」に改竄されたとする。従来方式では、改竄前後における照合要素Data3は夫々「10」となって、改竄内容が反映されなかった。しかし、本方式によれば、照合要素Data3は、改竄前では「34+(10-8)=36」であるのに対して、改竄後では「46+(10-8)=48」となって、改竄内容が反映されることとなる。
（第４実施例）
第４実施例では、第１実施例における演算方法に加え、図６に示すように、データ値Data1に対して任意の四則演算、例えば、2を加算して参照アドレスADR2を生成すると共に、照合要素Data3を演算するときに、参照アドレスADR2に格納されているデータ値Data2に対して任意の四則演算、例えば、3を乗算するようにする。即ち、アドレスADR1=0000に格納されているデータ値Data1=1に対して2を加算して参照アドレスADR2=0003を生成すると共に、そこに格納されているデータ値Data2=13を読み込む。また、データ値Data1=1に対して、データ値Data2=13に3を乗算した値を加算し、照合要素Data3=Data1+Data2×3=1+13×3=40を求める。
【００４３】
ここで、アドレス「0006」におけるデータ値が「32」から「44」に改竄されたとする。従来方式では、改竄前後における照合要素Data3は夫々「10」となって、改竄内容が反映されなかった。しかし、本方式によれば、照合要素Data3は、改竄前では「32+10×3=62」であるのに対して、改竄後では「44+10×3=74」となって、改竄内容が反映されることとなる。
（第５実施例）
第５実施例では、第１実施例における演算方法に加え、図７に示すように、データ値Data1に対して任意の四則演算、例えば、2を加算することで、参照アドレスADR2を生成すると共に、照合要素Data3を演算するときに、データ値Data1及びData2に対して所定の四則演算、例えば、2及び3を夫々乗算するようにする。即ち、アドレスADR1=0000に格納されているデータ値Data1=1に対して2を加算して参照アドレスADR2=0003を生成すると共に、そこに格納されているデータ値Data2=13を読み込む。また、データ値Data1=3に2を乗算した値に対して、データ値Data2=13に3を乗算した値を加算し、照合要素Data3=Data1×2+Data2×3=1×2+13×3=41を求める。
【００４４】
ここで、アドレス「0006」におけるデータ値が「32」から「44」に改竄されたとする。従来方式では、改竄前後における照合要素Data3は夫々「10」となって、改竄内容が反映されなかった。しかし、本方式によれば、照合要素Data3は、改竄前では「32×2+10×3=94」であるのに対して、改竄後では「44×2+10×3=118」となって、改竄内容が反映されることとなる。
（第６実施例）
第６実施例では、第１実施例における演算方法に加え、図８に示すように、データ値Data1に対してアドレスADR1を加算することで、参照アドレスADR2を生成するようにする。即ち、アドレスADR1=0001のときには、そこに格納されているデータ値Data1=3に対してアドレスADR1=0001を加算することで、参照アドレスADR2=0001+0003=0004を生成する。そして、データ値Data1=3に対して、参照アドレスADR2=0004に格納されているデータ値Data2=29を加算し、照合要素Data3=Data1+Data2=3+29=32を求める。
【００４５】
ここで、アドレス「0006」におけるデータ値が「37」から「39」に改竄されたとする。従来方式では、改竄前後における照合要素Data3は夫々「10」となって、改竄内容が反映されなかった。しかし、本方式によれば、照合要素Data3は、改竄前では「37+10=47」であるのに対して、改竄後では「39+10=49」となって、改竄内容が反映されることとなる。
（第７実施例）
第７実施例では、第１実施例における演算方法に加え、図９に示すように、データ値Data1に対してアドレスADR1を加算して参照アドレスADR2を生成すると共に、データ値Data1及びData2、並びに、データ値Data2が示すアドレスに格納されているデータ値を加算することで、照合要素Data3を演算するようにする。即ち、アドレスADR1=0001のときには、そこに格納されているデータ値Data1=3に対してアドレスADR1=0001を加算することで、参照アドレスADR2=0001+0003=0004を生成する。また、参照アドレスADR2=0004に格納されているデータ値Data2=29をアドレス値とみなして、アドレス「0029」に格納されているデータ値「12」を読み込む。そして、データ値Data1，Data2及び「12」を加算することで、照合要素Data3=Data1+Data2+12＝3+29+12=44を求める。
【００４６】
ここで、アドレス「0006」におけるデータ値が「37」から「39」に改竄されたとする。従来方式では、改竄前後における照合要素Data3は夫々「10」となって、改竄内容が反映されなかった。しかし、本方式によれば、照合要素Data3は、改竄前では「37+10+23＝70」であるのに対して、改竄後では「39+10+23＝72」となって、改竄内容が反映されることとなる。なお、ここでは、３つのデータ値を全て利用することによって照合要素を算出しているが、このうち２つのデータ値（第１のデータ読出機能により読み出されたデータ値と、第２の参照アドレス生成機能により生成された参照アドレスに格納されたデータ値）を利用して照合要素を算出してもよい。
【００４７】
以上説明した第１実施例〜第７実施例によれば、照合要素Data3を積算した照合値CVNには、デジタルデータの先頭アドレスから最終アドレスに格納されるすべてのデータ値が反映されるため、連続するアドレスに同一値が格納されていても、その改竄を簡便かつ高精度に検出することができる。そして、第１実施例を基本として、第２実施例〜第７実施例を少なくとも１つ組み合わせるようにすれば、演算方法が簡単であるにもかかわらず、照合値CVNがどのような方法で演算されているのか推測することが極めて困難となる。このため、悪意を持ってデジタルデータを改竄しようとする者が、例えば、ダミーデータを書き換えることで照合値CVNの辻褄を合わせようとしようとしても、現実的には不可能となってしまう。従って、本方式によれば、デジタルデータの１バイトを書き換えただけでも、その辻褄を合わせることが困難であることから、その改竄を高精度に検出することができる。
【００４８】
ところで、デジタルデータは、１バイトで表現されるアドレス（0〜255）により参照可能であるとは限らない。このため、複数バイトでなければ表現できないアドレスに対して参照可能とすべく、次に示すようなアドレス生成方法を適用することが望ましい。なお、以下に示す例では、３バイトで表現できるアドレスを参照すると共に、アドレス及びデータ値が16進法で表わされているものとする。
【００４９】
図１０は、アドレス生成方法の第１実施例を示す。
第１実施例では、アドレスADR1が示すアドレス、換言すると、データ値Data1が格納されているアドレスを起点として、そこから連続する複数アドレス（本実施例では４バイト）に格納されたデータ値から、参照アドレスADR2を生成するようにする。即ち、図示の例では、アドレスADR1=0000のときには、アドレス「0000〜0003」に格納されている４バイト「FFFF4003」が読み出され、最上位バイトをマスクすべく公知のマスク処理が施され、参照アドレスADR2として「00FF4003」を生成する。そして、参照アドレスADR2が示すアドレスからデータ値を読み出すことで、最大FFFFFFバイト（16メガバイト）のデジタルデータの改竄を検出することができる。なお、かかるアドレス生成方法は、参照アドレスADR2の生成に限らず、データ値Data2から参照アドレスを生成するときにも適用可能である（以下同様）。
【００５０】
図１１は、アドレス生成方法の第２実施例を示す。
第２実施例では、第１実施例を基本として、アドレス生成方法の推測を困難とすべく、複数アドレスに格納されるデータ値を所定規則に則って並べ替えたものから、参照アドレスADR2を生成するようにする。即ち、図示の例では、アドレスADR1=0000のときには、アドレス「0000〜0003」に格納されている４バイト「FFFF4003」が読み出され、その上位２バイトと下位２バイトが入れ換えられた後、第１実施例と同様なマスク処理が施され、参照アドレスADR2として「0003FFFF」を生成する。
【００５１】
図１２は、アドレス生成方法の第３実施例を示す。
第３実施例では、アドレス生成方法の推測を一層困難とすべく、デジタルデータの先頭アドレスから最終アドレスのすべてのアドレスから、規則性をもって参照アドレスADR2を生成するようにする。即ち、アドレス生成用のポインタを用い、そのポインタから連続する複数アドレスに格納されたデータ値から参照アドレスADR2を生成すると共に、参照アドレスADR2を生成するたびに、ポインタを所定規則に則って更新するようにする。ここで、ポインタを更新する所定規則としては、例えば、１〜４を繰り返すカウンタを用い、ポインタをそのカウンタが示す値だけ進めるようにする。
【００５２】
図示の例では、１回目のアドレス生成においては、ポインタは「000000」を示すので、アドレス［000000」から連続した４バイトが読み出された後、ポインタが「000000」から「1」だけ進められて「000001」となる。２回目のアドレス生成においては、ポインタは「000001」を示すので、アドレス「000002」から連続した４バイトが読み出され、ポインタが「000001」から「2」だけ進められ「000003」となる。３回目のアドレス生成においては、ポインタは「000003」を示すので、アドレス「000003」から連続した４バイトが読み出され、ポインタが「000003」から「3」だけ進められ「000006」となる。４回目のアドレス生成においては、ポインタは「000006」を示すので、アドレス「000006」から連続した４バイトが読み出され、ポインタが「000006」から「4」だけ進められ「00000A」となる。このようなアドレス生成処理を順次繰り返し、デジタルデータのすべてのアドレスから参照アドレスが生成される。
【００５３】
なお、アドレス生成方法の第１実施例〜第３実施例においては、デジタルデータの最終アドレス以降のデータ値を参照する必要が生じたときには、その後に先頭アドレスからのデータ値が続いているものとして処理するようにすればよい。
かかるアドレス生成方法によれば、１バイトでは表現できないアドレスも参照することが可能となり、デジタルデータの改竄検出の実効を図ることができる。また、アドレス生成方法が推測され難くなることから、デジタルデータの改竄もより困難となる。
【図面の簡単な説明】
【００５４】
【図１】本発明を具現化した改竄検出装置の構成図
【図２】改竄検出装置における処理内容の概要を示すフローチャート
【図３】改竄検出用照合値CVNの演算方法の第１実施例を示す説明図
【図４】改竄検出用照合値CVNの演算方法の第２実施例を示す説明図
【図５】改竄検出用照合値CVNの演算方法の第３実施例を示す説明図
【図６】改竄検出用照合値CVNの演算方法の第４実施例を示す説明図
【図７】改竄検出用照合値CVNの演算方法の第５実施例を示す説明図
【図８】改竄検出用照合値CVNの演算方法の第６実施例を示す説明図
【図９】改竄検出用照合値CVNの演算方法の第７実施例を示す説明図
【図１０】アドレス生成方法の第１実施例を示す説明図
【図１１】アドレス生成方法の第２実施例を示す説明図
【図１２】アドレス生成方法の第３実施例を示す説明図
【図１３】従来方式における不具合を示す説明図
【符号の説明】
【００５５】
１０  改竄検出装置
１２  アドレスカウンタ
１４  アドレス生成部
１６  照合値演算部
１８  出力部
２０  記憶媒体
【図１】
2005056159.tif 000003
【図２】
2005056159.tif 000004
【図３】
2005056159.tif 000005
【図４】
2005056159.tif 000006
【図５】
2005056159.tif 000007
【図６】
2005056159.tif 000008
【図７】
2005056159.tif 000009
【図８】
2005056159.tif 000010
【図９】
2005056159.tif 000011
【図１０】
2005056159.tif 000012
【図１１】
2005056159.tif 000013
【図１２】
2005056159.tif 000014
【図１３】
2005056159.tif 000015