(57)【要約】【課題】改ざん耐性を有するデータ検証が可能な装置を提供する。【解決手段】電子装置１１は、改ざん検出ビット列生成部１１２と、送信データ生成部１１３と、データ出力部ＳＤＡとを有する。改ざん検出ビット列生成部１１２は、送信ビットの少なくとも１つの「１」を「０」に変更することに対応して、すくなくとも１つの「０」を「１」に変更することが必要なビット配列を有する送信改ざん検出ビット列を生成する。送信データ生成部１１３は送信ビット列と、送信改ざん検出ビット列とを含む送信データを生成し、データ出力部ＳＤＡは送信データをオープンドレイン出力する。【選択図】図６
2017076854.tif 000002
【特許請求の範囲】
【請求項１】
送信ビット列の少なくとも１つの「１」を「０」に変更することに対応して、少なくとも１つの「０」を「１」に変更することが必要なビット配列を有する送信改ざん検出ビット列を生成する改ざん検出ビット列生成部と、
前記送信ビット列と、前記送信改ざん検出ビット列とを含む送信データを生成する送信データ生成部と、
前記送信データをオープンドレイン出力するデータ出力部と、
を有する電子装置。
【請求項２】
前記送信改ざん検出ビット列は、前記送信ビット列に含まれる全てのビットを反転させた送信反転ビット列を含む、請求項１に記載の電子装置。
【請求項３】
前記送信改ざん検出ビット列は、前記送信ビット列に含まれる「０」の数に対応するゼロ数ビット列を含む、請求項１に記載の電子装置。
【請求項４】
オープンドレイン出力された受信データに含まれる複数のビットを含む受信ビット列及び受信改ざん検出ビット列に基づいて、前記受信ビット列の改ざんの有無を検出する改ざん検出部を更に有する、請求項１に記載の電子装置。
【請求項５】
前記改ざん検出部は、前記受信ビット列に含まれる全てのビットを反転させた受信反転ビット列と、前記受信改ざん検出ビット列とが一致しないときに、前記受信ビット列が改ざんされたと判定する、請求項４に記載の電子装置。
【請求項６】
前記改ざん検出部は、前記受信ビット列に含まれる「０」の数が、前記受信改ざん検出ビット列が示す「０」の数と一致しないときに、前記受信ビット列が改ざんされたと判定する、請求項４に記載の電子装置。
【請求項７】
前記送信ビット列は、認証要求ビット列を含み、
前記受信ビット列は、前記認証要求ビット列を暗号化した認証応答ビット列を含み、
前記認証応答ビット列を復号化し、前記送信ビット列に含まれる認証要求ビット列と、前記認証応答ビット列から復号化された認証要求ビット列とが一致したときに、認証が成功したと判定する認証部を更に含む、請求項４〜６の何れか一項に記載の電子装置。
【請求項８】
送信ビット列の少なくとも１つの「１」を「０」に変更することに対応して、少なくとも１つの「０」を「１」に変更することが必要なビット配列を有する改ざん検出ビット列を生成し、
前記ビット列及び前記改ざん検出ビット列を含む送信データを生成し、
前記送信データをオープンドレイン出力し、
前記ビット列及び前記改ざん検出ビット列に基づいて、前記ビット列の改ざんの有無を検出する、
ことを含むデータ検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置、及びデータ検証方法に関する。
【背景技術】
【０００２】
近年、プリンタカートリッジ、電池、ゲーム機のカートリッジ等の製品の偽造品（以下、クローン品とも称する）が販売されている。例えば、電池のクローン品は、十分な品質が確保されていないおそれがあり、電池のクローン品が製造、販売されて需要者に使用されると不具合が発生するおそれがある。電池のクローン品が使用されることを防止するために、電池が正規品であることが認証されることが好ましい。
【０００３】
電池を認証する一例として、自動車及び航空機等の制御装置に搭載された認証装置は、自動車及び航空機等に搭載された電池に搭載された被認証装置と通信して、被認証装置を搭載した電池が正規品であることを認証する。認証装置は被認証装置にチャレンジを送信し、チャレンジを受信した被認証装置は秘密鍵等の秘密情報に応じたレスポンスを認証装置に送信する。レスポンスを受信した認証装置は、送信したチャレンジと受信したレスポンスを比較して、被認証装置を認証するか否かを判定する。被認証装置に格納された秘密情報は、攻撃者が秘密情報を外部からの解読が容易ではないので、認証処理を実行することで、秘密情報を有する被認証装置を搭載した電池等が正規品であることが認証される。
【０００４】
また、認証装置と被認証装置との間の通信には、シリアル通信バス方式が採用される。シリアル通信バス方式は、アイ・スクエアド・シー（Inter-Integrated Circuit、Ｉ２Ｃ）バス、シリアル・ペリフェラル・インタフェース（Serial Peripheral Interface 、ＳＰＩ）、１−ｗｉｒｅ（登録商標）及びＵＡＲＴ等を含む。認証装置と被認証装置との間の通信にシリアル通信バス方式を採用することにより、パラレル通信バス方式を採用するときよりもＩＣチップの入出力回路の数が削減され、ＩＣチップの製造コストの低減が可能になる。
【０００５】
シリアル通信バス方式は、認証処理だけでなく、各種データ転送処理にも採用される。また、シリアル通信方式は、センサーノード、ウェアラブル機器等のＩｏＴ機器、家電、自動車及び航空機等で採用される組み込みシステム、携帯電話、スマートフォン及びスマートカード等の種々の機器に幅広く採用される。
【０００６】
Ｉ２Ｃバス等のシリアル通信バス方式において、送信装置が送信した送信データと、受信装置が受信した受信データとの間の整合性を、誤り検出技術及び暗号化技術により検証して、改ざんの有無を検出する技術が知られる（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−６２２８６号公報
【非特許文献】
【０００８】
【非特許文献１】「UM10204  I2C バス仕様およびユーザーマニュアル  Rev. 5.0J - 2012 年 10 月 9 日  （日本語翻訳 11 月 2 日） ユーザーマニュアル」ｈｔｔｐ：//ｗｗｗ.ｎｘｐ.ｃｏｍ/ｄｏｃｕｍｅｎｔｓ/ｕｓｅｒ＿ｍａｎｕａｌ/ＵＭ１０２０４＿ＪＡ.ｐｄｆ
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、誤り検出技術を使用して改ざんの有無を検出する場合、高い改ざん耐性を実現することは容易ではない。
【００１０】
一実施形態では、改ざん耐性を有するデータ検証が可能な電子装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、電子装置は、改ざん検出ビット列生成部と、送信データ生成部と、データ出力部とを有する。改ざん検出ビット列生成部は、送信ビット列の少なくとも１つの「１」を「０」に変更することに対応して、少なくとも１つの「０」を「１」に変更することが必要なビット配列を有する送信改ざん検出ビット列を生成する。送信データ生成部は送信ビット列と、送信改ざん検出ビット列とを含む送信データを生成し、データ出力部は送信データをオープンドレイン出力する。
【発明の効果】
【００１２】
一実施形態では、改ざん耐性を有するデータ検証が可能な電子装置を提供することが可能になる。
【図面の簡単な説明】
【００１３】
【図１】（ａ）はＩ２Ｃバスによりデータを送受信する回路を含む通信システムの一例を示す回路ブロック図であり、（ｂ）は（ａ）に示す通信システムで利用されるデータフォーマットの一例を示す図であり、（ｃ）は（ａ）に示す通信システムで利用されるデータフォーマットの他の例を示す図である。
【図２】（ａ）は共通鍵を用いたチャレンジアンドレスポンス認証の一例のシーケンスを示す図であり、（ｂ）は共通鍵を用いたチャレンジアンドレスポンス認証の他の例のシーケンスを示す図である。
【図３】Ｉ２Ｃバスを使用してチャレンジアンドレスポンス認証を行う場合の問題点を説明する図であり、（ａ）は問題が発生しない場合を示す図であり、（ｂ）は問題が発生する場合を示す図である。
【図４】（ａ）は送信ビット列及びチェックサムを含む送信データの一例を示す図であり、（ｂ）は誤りを含む送信ビット列及びチェックサムを含む送信データの一例を示す図であり、（ｃ）は、改ざんされた送信ビット列及び改ざんされたチェックサムを含む送信データの一例を示す図である。
【図５】チェックサム及びＣＲＣ誤り検出技術と、ＳＨＡ等のハッシュ関数を使用する技術との比較を示す図である。
【図６】第１実施形態に係るデータ検証システムのブロック図である。
【図７】（ａ）は図６に示すデータ検証システムにおけるデータ検証処理のシーケンスを示す図であり、（ｂ）は（ａ）に示すＳ１０５の詳細な処理のフローチャートを示す図である。
【図８】図６に示す送信データ生成部が生成する送信データを示す図である。
【図９】第２実施形態に係るデータ検証システムのブロック図である。
【図１０】（ａ）は図９に示すデータ検証システムにおけるデータ検証処理のシーケンスを示す図であり、（ｂ）は（ａ）に示すＳ３０５の詳細な処理のフローチャートを示す図である。
【図１１】図９に示す送信データ生成部が生成する送信データを示す図である。
【図１２】ダイジェストを生成するときに使用される技術の比較を示す図である。
【図１３】第３実施形態に係るデータ検証システムのブロック図である。
【図１４】図１３に示すデータ検証システムにおけるデータ検証処理のシーケンスを示す図である。
【図１５】図１４に示すＳ５０７の詳細な処理のフローチャートを示す図である。
【図１６】第３実施形態に係る改ざん検出機能を有さないデータ検証システムのブロック図である。
【図１７】図１３に示すデータ検証システムのブロック図である。
【発明を実施するための形態】
【００１４】
以下図面を参照して、本発明に係る電子装置及びデータ検証方法について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されない。
【００１５】
（実施形態に係る電子装置の概要）
実施形態に係る電子装置は、送信ビット列及び送信改ざん検出ビット列を含む送信データをオープンドレイン出力する。また、送信改ざん検出ビット列は、少なくとも１つの「０」が「１」に改ざんされないときに、送信ビット列の改ざんを検出可能なビット配列を有する。実施形態に係る電子装置では、送信ビット列及び送信改ざん検出ビット列を含む送信データは、オープンドレイン出力されるので、送信ビット列及び送信改ざん検出ビット列は何れも「０」を「１」に改ざんされるおそれはない。オープンドレイン出力された送信データに含まれるビットは、「０」を「１」に改ざんされるおそれはないので、送信改ざん検出ビット列を使用して改ざんの有無を検出することができる。
【００１６】
（実施形態に係る電子装置に関連する技術）
実施形態に係る電子装置について説明する前に、実施形態に係る電子装置に関連する技術について簡単に説明する。
【００１７】
（Ｉ２Ｃバス）
図１（ａ）は、Ｉ２Ｃバスによりデータを送受信する回路を含む通信システムの一例を示す回路ブロック図である。図１（ｂ）は図１（ａ）に示す通信システムで利用されるデータフォーマットの一例を示す図であり、図１（ｃ）は図１（ａ）に示す通信システムで利用されるデータフォーマットの他の例を示す図である。
【００１８】
通信システム８００は、マスタチップ８０１と、第１スレーブチップ８０２と、第２スレーブチップ８０３と、ＳＤＡバス８０４と、ＳＣＬバス８０５と、ＳＤＡプルアップ抵抗素子８０６と、ＳＣＫプルアップ抵抗素子８０７とを有する。
【００１９】
マスタチップ８０１はマスタとして機能し、第１スレーブチップ８０２及び第２スレーブチップ８０３はスレーブとして機能する。マスタチップ８０１、第１スレーブチップ８０２及び第２スレーブチップ８０３のそれぞれは、シリアル・データライン（ＳＤＡ）端子とシリアル・クロックライン（ＳＣＬ）端子の２つの端子とを有する。ＳＤＡ端子は、Ｉ２Ｃバスのマスタとスレーブとの間のデータ信号、及びアクノリッジ（Acknowledge、ＡＣＫ）信号等を送信又受信する端子である。ＳＣＬ端子は、Ｉ２Ｃバスのマスタからスレーブに、ＳＤＡ端子が送信又受信する信号をラッチするクロック信号を送信又受信する端子である。
【００２０】
ＳＤＡプルアップ抵抗素子８０６及びＳＣＫプルアップ抵抗素子８０７のそれぞれは、ＳＤＡバス８０４及びＳＣＬバス８０５のそれぞれにワイヤードＡＮＤ接続される。
【００２１】
マスタチップ８０１、第１スレーブチップ８０２及び第２スレーブチップ８０３のＳＤＡ端子は、出力段としてオープンコレクタを有し、ＳＤＡバス８０４を介して互いに接続される。また、マスタチップ８０１、第１スレーブチップ８０２及び第２スレーブチップ８０３のＳＣＬ端子は、出力段としてオープンコレクタを有し、ＳＣＬバス８０５を介して互いに接続される。ＳＤＡバス８０４に「１」を出力するとき、マスタチップ８０１、第１スレーブチップ８０２及び第２スレーブチップ８０３のＳＤＡ端子の出力段は「Ｈｉ−Ｚ」になる。一方、ＳＤＡバス８０４に「０」を出力するとき、マスタチップ８０１、第１スレーブチップ８０２及び第２スレーブチップ８０３のＳＤＡ端子の出力段は接地レベルになる。
【００２２】
通信システム８００における通信は、マスタチップ８０１と第１スレーブチップ８０２及び第２スレーブチップ８０３との間で行われ、第１スレーブチップ８０２と第２スレーブチップ８０３との間では行われない。通信システム８００は、マスタがスレーブにデータを送信する場合と、マスタがスレーブからデータを受信する場合の２つの場合がある。マスタがスレーブにデータを送信する場合、すなわちマスタチップ８０１から第１スレーブチップ８０２又は第２スレーブチップ８０３にデータを送信する通信を、第１データ通信と称する。また、マスタがスレーブからデータを受信する場合、すなわちマスタチップ８０１が第１スレーブチップ８０２又は第２スレーブチップ８０３からデータを受信する通信を、第２データ通信と称する。
【００２３】
第１データ通信では、マスタチップ８０１は、第１スレーブチップ８０２又は第２スレーブチップ８０３のアドレスを指定し、且つ図１（ｂ）のＲ/Ｗビットを「０」に設定することでマスタチップ８０１が送信側であることを指定する（第１ステップ）。次いで、マスタチップ８０１は、第１スレーブチップ８０２又は第２スレーブチップ８０３からＡＣＫ信号を受信し（第２ステップ）、第１スレーブチップ８０２又は第２スレーブチップ８０３にデータを送信する（第３ステップ）。以降、マスタチップ８０１は、図１（ｂ）のＰビットでストップ条件が成立する（第４ステップ）まで、第２ステップ及び第３ステップを繰り返す。ストップ条件が成立する（第４ステップ）と、処理は終了する。
【００２４】
第２データ通信では、マスタチップ８０１は、第１スレーブチップ８０２又は第２スレーブチップ８０３のアドレスを指定し、且つ図１（ｃ）のＲ/Ｗビットを「１」に設定することでマスタチップ８０１が受信側であることを指定する（第１ステップ）。次いで、マスタチップ８０１は、第１スレーブチップ８０２又は第２スレーブチップ８０３からＡＣＫ信号を受信し（第２ステップ）、第１スレーブチップ８０２又は第２スレーブチップ８０３からデータを受信する（第３ステップ）。以降、マスタチップ８０１は、図１（ｃ）のＰビットでストップ条件が成立する（第４ステップ）まで、第２ステップ及び第３ステップを繰り返す。ストップ条件が成立する（第４ステップ）と、処理は終了する。
【００２５】
（チャレンジアンドレスポンス認証）
チャレンジアンドレスポンス認証プロトコルは、認証ＩＣチップ等において機器の正当性を確認するために利用される通信プロトコルである。すなわち、チャレンジアンドレスポンス認証は、ビット列等のデジタル情報を用いた合言葉である。自動車又は航空機に搭載された認証を行う側の認証ＩＣチップ（以下、「親機」とも称する）は、「チャレンジ」とも称される認証要求ビット列を、バッテリ等に搭載された認証される側の被認証ＩＣチップ等（以下、「子機」とも称する）に送信する。子機は、受信した「チャレンジ」を暗号処理して「レスポンス」とも称される認証応答ビット列を生成し、生成した「レスポンス」を親機に送信する。親機は、送信した「チャレンジ」と、受信した「レスポンス」を復号化したビット列とを比較し、比較結果が正しいと判定したときに、子機が正当な機器であると判断する。
【００２６】
チャレンジアンドレスポンス認証では、「チャレンジ」として所定のビット列を使用すると、「チャレンジ」と「レスポンス」の双方が固定値になり、「チャレンジ」及び「レスポンス」が認証ＩＣチップの信号を観察する攻撃者に知得されるおそれがある。「チャレンジ」として所定のビット列を使用する場合、「チャレンジ」及び「レスポンス」が攻撃者に知得され易いので、知得した「レスポンス」を再送する再送攻撃（Ｒeplay attack)を受けるおそれがあると共に、認証ＩＣチップが偽造されるおそれがある。
【００２７】
乱数生成器により生成された乱数を「チャレンジ」に使用することで、「チャレンジ」及び「レスポンス」は、攻撃者に知得され難くされる。乱数を「チャレンジ」に使用すると「レスポンス」が「チャレンジ」に応じて変化するので、再送攻撃等に対する防止措置が可能である。また、「チャレンジ」を受信した子機は、種々の暗号関数を使用して「レスポンス」を生成可能であるが、共通鍵暗号方式を使用することで、子機の回路規模を比較的小さくなる。
【００２８】
図２（ａ）は共通鍵暗号方式を用いたチャレンジアンドレスポンス認証の一例のシーケンスを示す図であり、図２（ｂ）は共通鍵暗号方式を用いたチャレンジアンドレスポンス認証の他の例のシーケンスを示す図である。親機８１１及び子機８１２並びに親機８２１及び子機８２２のそれぞれは、不図示のＲＯＭに書き込まれた秘密鍵Ｋを有する。
【００２９】
図２（ａ）に示す例では、まず、親機８１１は、不図示の乱数生成器等を使用してチャレンジＧを生成し（Ｓ８０１）、生成したチャレンジＧを子機８１２に送信する（Ｓ８０２）。チャレンジＧを受信した子機８１２は、不図示のＲＯＭに記憶された秘密鍵Ｋを使用して暗号化（Ａ＝Ｅｎｃ（Ｇ，Ｋ））を実行してレスポンスＡを生成（Ｓ８０３）し、生成したレスポンスＡを親機８１１に送信する（Ｓ８０４）。レスポンスＡを受信した親機８１１は、ＲＯＭに記憶された秘密鍵Ｋを使用して復号化（Ｇｃ＝Ｄｅｃ（Ａ，Ｋ））を実行して、復号化結果Ｇｃを生成する（Ｓ８０５）。親機８１１は、復号化結果Ｇｃが、子機８１２に送信したチャレンジＧと一致したときに、認証が成功したと判定する（Ｓ８０６）。
【００３０】
図２（ｂ）に示す例では、まず、親機８２１は、不図示の乱数生成器等を使用してチャレンジＧを生成し（Ｓ８１１）、生成したチャレンジＧを子機８１２に送信する（Ｓ８１２）。チャレンジＧを受信した子機８２２は、不図示のＲＯＭに記憶された秘密鍵Ｋを使用して暗号化（Ａ＝Ｅｎｃ（Ｇ，Ｋ））を実行してレスポンスＡを生成（Ｓ８１３）し、生成したレスポンスＡを親機８２１に送信する（Ｓ８１４）。レスポンスＡを受信した親機８２１は、ＲＯＭに記憶された秘密鍵Ｋを使用して暗号化（Ａ＝Ｅｎｃ（Ｇ，Ｋ））を実行して暗号化結果Ａ´を生成する（Ｓ８１５）。親機８２１は、生成した暗号化結果Ａ´が、子機８２２から送信されたレスポンスＡと一致したときに、認証が成功したと判定する（Ｓ８１６）。
【００３１】
共通鍵暗号方式を用いたチャレンジアンドレスポンス認証では、チャレンジＧに対応した正当なレスポンスＡを生成可能な子機は、秘密鍵Ｋを有する子機に限られるので、親機は、子機の正当性を確認することが可能である。
【００３２】
（Ｉ２Ｃバスを使用してチャレンジアンドレスポンス認証を行う場合の問題点）
図３はＩ２Ｃバスを使用してチャレンジアンドレスポンス認証を行う場合の問題点を説明する図であり、図３（ａ）は問題が発生しない場合を示す図であり、図３（ｂ）は問題が発生する場合を示す図である。図３では、マスタチップからチャレンジが送信されたスレーブチップがレスポンスをマスタに送信する状態を例に説明する。
【００３３】
認証システム８２０は、マスタとして機能する親機８２１と、スレーブとして機能する子機８２２と、親機８２１のＳＤＡ端子に入力されるデータを改ざんする悪意を有する悪意チップ８２３とを有する。親機８２１及び子機８２２のそれぞれは、不図示のＲＯＭに書き込まれた秘密鍵Ｋを有する。一例では、親機８２１は、自動車又は航空機の制御装置に搭載され、子機８２２は自動車又は航空機に電力を供給する電池に搭載される。
【００３４】
図３（ａ）に示す状態では、親機８２１のＳＤＡ端子は、チャレンジを受信した子機８２２のＳＤＡ端子から「０」がレスポンスとして送信される。子機８２２は、「０」を出力するために、ＳＤＡ端子の出力段を接地レベルにする。一方、悪意チップ８２３は、データを改ざんするために「１」を親機８２１に送信するためにＳＤＡ端子の出力段を「Ｈｉ−Ｚ」にする。しかしながら、子機８２２のＳＤＡ端子の出力段は接地レベルなので、悪意チップ８２３のＳＤＡ端子の出力段を「Ｈｉ−Ｚ」にしても、親機８２１のＳＤＡ端子は、「０」が入力される状態が維持される。
【００３５】
図３（ｂ）に示す状態では、親機８２１のＳＤＡ端子は、チャレンジを受信した子機８２２のＳＤＡ端子から「１」がレスポンスとして送信される。子機８２２は、「１」を出力するために、ＳＤＡ端子の出力段を「Ｈｉ−Ｚ」にする。一方、悪意チップ８２３は、データを改ざんするために「０」を親機８２１に送信するためにＳＤＡ端子の出力段を接地レベルにする。図３（ｂ）に示す状態では、子機８２２のＳＤＡ端子のから「１」がレスポンスとして送信されるにもかかわらず、悪意チップ８２３のＳＤＡ端子の出力段が接地レベルになるので、親機８２１のＳＤＡ端子は、「０」が入力される状態に改ざんされる。
【００３６】
親機８２１は、子機８２２から「０」がレスポンスとして送信されるときは、悪意チップ８２３から「１」を送信されてもレスポンスが改ざんされるおそれはない。一方、親機８２１は、子機８２２から「１」がレスポンスとして送信されるときは、悪意チップ８２３から「０」を送信されると、レスポンスが改ざんされる。
【００３７】
認証システム８２０では、親機８２１が「１」がレスポンスとして送信されるときはレスポンスが改ざんされるため、子機８２２が正規のＩＣチップであるにもかかわらず、親機８２１は認証失敗と判定する。親機８２１が認証失敗と判定するため、子機８２２が搭載される電池等の装置は、子機８２２正常に動作せず、悪意チップ８２３による認証システム８２０へのＤｏＳ攻撃（サービス拒否攻撃）が可能になる。
【００３８】
同様に、悪意チップ８２３は、親機８２１及び子機８２２が送信するビット列に含まれる「１」を「０」に改ざんすることによりのＤｏＳ攻撃以外の認証システム８２０への攻撃が可能である。非特許文献１等で規定されるＩ２Ｃバスの仕様では、セキュリティ対策が十分でないため、ＳＤＡバス８２４及びＳＣＬバスを通信されるビット列の改ざんが可能であり、セキュリティ問題が生じるおそれがある。
【００３９】
（ビット列の改ざんを防止する技術）
ビット列に含まれるデータの改ざんを防ぐために、送信するビット列に、改ざん等に起因する送信ビット列の誤りの検出に使用される送信誤り検出ビット列（以降、ダイジェストとも称する）が付加される。チェックサム及びＣＲＣ等では、ダイジェストは、誤り検出技術を使用して生成される。ＳＨＡ−２５６では、ダイジェストは、暗号学的ハッシュ関数を使用して生成される。
【００４０】
（チェックサム）
図４（ａ）は送信ビット列及びチェックサムを含む送信データの一例を示す図であり、図４（ｂ）は誤りを含む送信ビット列及びチェックサムを含む送信データの一例を示す図である。図４（ｃ）は、改ざんされた送信ビット列及び改ざんされたチェックサムを含む送信データの一例を示す図である。
【００４１】
チェックサムは、送信されるビット列の１バイトデータの総計（チェックサム）の下位１バイトをダイジェストとして生成する。送信データ９００は、１バイト毎に区切られた１６進数表記で｛７０，００，００，００，００，００，００，０８｝で示される６４ビット（８バイト）の送信ビット列９０１を送信する。以下「｛｝」で示される数字は、１６進数表記である。送信データ９００では、送信ビット列９０１に含まれる１バイト毎のビット列の総和は、｛７８｝となるので、ダイジェスト９０２は｛７８｝のビット列を含む。
【００４２】
送信データ９１０は、送信データ９００と比較すると、送信ビット列９１１の最上位バイトが｛７０｝から｛６０｝に誤りにより変化する。一方、送信データ９１０のダイジェスト９１２は、送信データ９００のダイジェスト９０２と等しく｛７８｝である。送信データ９１０は、送信ビット列９１１の総計の下位１バイトが｛６８｝であるのに対し、ダイジェスト９１２が｛７８｝であるので、送信データ９１０の誤りは、検出可能である。
【００４３】
送信データ９２０は、送信データ９００と比較すると、送信ビット列９１１の最下位バイト｛０８｝が｛００｝に改ざんにより変化する。また、送信データ９２０は、送信データ９００と比較すると、ダイジェスト９２２が｛７８｝に｛７０｝が改ざんにより変化する。送信データ９１０は、送信ビット列９１１の総計の下位１バイト及びダイジェスト９１２の双方が｛７０｝であるので、送信ビット列９２１が改ざんされるのにもかかわらず、送信データ９２０の誤りは、検出されない。
【００４４】
チェックサムは、送信ビット列に含まれるビットのみが誤りにより変化した場合に誤り検出が可能であるが、送信ビット列及びダイジェストの双方が意図に改ざんされた場合には、誤りが検出されない可能性がある。ビット列に含まれるビット「１」を「０」に改ざんすることはＩ２Ｃバスでは比較的容易なので、チェックサムは、攻撃者がＩ２Ｃバスで通信されるビット列を改ざんしたときに、ビット列の改ざんが検出されないおそれがある。
【００４５】
（ＣＲＣ）
ＣＲＣは、巡回冗長検査とも称され、送信ビット列を所定の除数により除算したときの剰余をダイジェストとする。ＣＲＣのダイジェストのビット長は、除算に使用する除数に依存する。例えば、ＣＲＣ−１６（ＣＲＣ−ＣＣＩＴＴ）では、除数は、（1+ X5 + X12 + X16）なので、ダイジェストのビット長は１６ビット（２バイト）になる。ＣＲＣは、チェックサムと同様に、送信ビット列に含まれるビット「１」を「０」にの改ざんすることにより、送信ビット列を所定の除数で除算したときの剰余とダイジェストが一致するように改ざんされるおそれがある。
【００４６】
チェックサム及びＣＲＣは、ダイジェストを生成するときの計算コストは比較的小さく且つダイジェストのビット長も比較的小さくすること可能であるが、改ざん耐性は比較的低い。
【００４７】
（暗号学的ハッシュ関数）
送信ビット列のビットをＳＨＡ−２５６に入力してダイジェストを生成する等、ＳＨＡ−２アルゴリズム等の暗号学的ハッシュ関数（以後、単にハッシュ関数とよぶ）を使用してダイジェストを生成することで、送信ビット列とダイジェストとの間の整合性を維持した改ざんが困難になる。すなわち、ハッシュ関数により生成されるダイジェストを使用することで、改ざん耐性を向上させることが可能になる。
【００４８】
しかしながら、ハッシュ関数は、チェックサム及びＣＲＣと比較して、ダイジェストを生成するための計算コストは大きく且つダイジェストのビットサイズが大きくなるという問題がある。例えば、暗号関数処理であるＳＨＡ−２５６を使用してダイジェストを生成すると、複数回に亘ってハッシュ関数を演算するため、が計算量が増大すると共に、ダイジェストのビットサイズは、２５６ビットは比較的大きい。
【００４９】
図５は、チェックサム及びＣＲＣ誤り検出技術と、ＳＨＡ等のハッシュ関数を使用する技術との比較を示す図である。
【００５０】
チェックサム及びＣＲＣを使用してダイジェストを生成する場合は、送信ビット列とダイジェストとの間の整合性を維持した改ざんを攻撃者が実行可能であるので、改ざん耐性が低いという問題がある。一方、ハッシュ関数を使用してダイジェストを生成する場合は、送信ビット列とダイジェストとの間の整合性を維持した改ざんは容易ではないが、計算コスト及びダイジェストのビットサイズが増大するという問題がある。
【００５１】
実施形態に係る電子装置は、Ｉ２Ｃバス等のシリアル通信バスにおいて、高い改ざん耐性と、計算コストの削減との両立を目的とする。
【００５２】
（第１実施形態に係るデータ検証システムの構成及び機能）
図６は、第１実施形態に係るデータ検証システムのブロック図である。
【００５３】
データ検証システム１は、マスタチップ１１と、第１スレーブチップ１２と、第２スレーブチップ１３と、ＳＤＡバス１４と、ＳＣＬバス１５と、ＳＤＡプルアップ抵抗素子１６と、ＳＣＫプルアップ抵抗素子１７とを有する。ＳＤＡバス１４、ＳＣＬバス１５、ＳＤＡプルアップ抵抗素子１６及びＳＣＫプルアップ抵抗素子１７は、ＳＤＡバス８０４、ＳＣＬバス８０５、ＳＤＡプルアップ抵抗素子８０６及びＳＣＫプルアップ抵抗素子８０７と同様な構成及び機能を有する。ＳＤＡバス１４、ＳＣＬバス１５、ＳＤＡプルアップ抵抗素子１６及びＳＣＫプルアップ抵抗素子１７の詳細な説明は、ここでは省略する。
【００５４】
マスタチップ１１はマスタとして機能し、第１スレーブチップ１２及び第２スレーブチップ１３スレーブとして機能する。マスタチップ１１、第１スレーブチップ１２及び第２スレーブチップ１３のそれぞれは、ＳＤＡ端子とＳＣＬ端子の２つの端子とを有する。ＳＤＡ端子は、Ｉ２Ｃバスのマスタとスレーブとの間のデータ信号、及びＡＣＫ信号等を送信又受信する端子である。ＳＣＬ端子は、Ｉ２Ｃバスのマスタからスレーブに、ＳＤＡ端子が送信又受信する信号をラッチするクロック信号を送信又受信する端子である。マスタチップ１１、第１スレーブチップ１２及び第２スレーブチップ１３のＳＤＡ端子は、出力段としてオープンコレクタを有し、ＳＤＡバス１４を介して互いに接続される。また、マスタチップ１１、第１スレーブチップ１２及び第２スレーブチップ１３のＳＣＬ端子は、出力段としてオープンコレクタを有し、ＳＣＬバス１５を介して互いに接続される。マスタチップ１１及び第１スレーブチップ１２のそれぞれは、ＣＰＵ、マイコン、ＲＡＭ又はＲＯＭとして機能してもよいが、これに限定されない。
【００５５】
マスタチップ１１は、送信ビット列生成部１１１と、改ざん検出ビット列生成部１１２と、送信データ生成部１１３と、改ざん検出部１１４とを有する。送信ビット列生成部１１１は、第１スレーブチップ１２に送信する情報に対応する送信ビット列を生成する。改ざん検出ビット列生成部１１２は、送信ビット列生成部１１１が生成した送信ビット列の全てのビットを反転させた反転ビット列を送信改ざん検出ビット列として生成する。送信データ生成部１１３は、送信ビット列生成部１１１が生成した送信ビット列に、改ざん検出ビット列生成部１１２が生成した送信改ざん検出ビット列をダイジェストとして付加して送信データを生成する。送信データ生成部１１３は、生成した送信データを第１スレーブチップ１２に送信する。改ざん検出部１１４は、受信ビット列及び受信ビット列の改ざんの検出に使用される受信改ざん検出ビット列に基づいて、受信ビット列の改ざんの有無を検出する。
【００５６】
第１スレーブチップ１２は、送信ビット列生成部１２１と、改ざん検出ビット列生成部１２２と、送信データ生成部１２３と、改ざん検出部１２４とを有する。送信ビット列生成部１２１、改ざん検出ビット列生成部１２２、送信データ生成部１２３及び改ざん検出部１２４は、送信ビット列生成部１１１、改ざん検出ビット列生成部１１２、送信データ生成部１１３及び改ざん検出部１１４と同様な機能を有する。
【００５７】
第２スレーブチップ１３は、マスタチップ１１から第１スレーブチップ１２に送信される送信データを改ざんする悪意を有する悪意チップである。
【００５８】
（第１実施形態に係るデータ検証システムのデータ検証処理）
図７（ａ）はデータ検証システム１におけるデータ検証処理のシーケンスを示す図であり、図７（ｂ）は図７（ａ）に示すＳ１０５の詳細な処理のフローチャートを示す図である。
【００５９】
まず、送信ビット列生成部１１１は、第１スレーブチップ１２に送信する情報に対応する送信ビット列を生成する（Ｓ１０１）。次いで、改ざん検出ビット列生成部１１２は、送信ビット列生成部１１１が生成した送信ビット列の全てのビットを反転させた送信反転ビット列を送信改ざん検出ビット列として生成する（Ｓ１０２）。次いで、送信データ生成部１１３は、送信ビット列生成部１１１が生成した送信ビット列に、改ざん検出ビット列生成部１１２が生成した送信改ざん検出ビット列をダイジェストとして付加して送信データを生成する（Ｓ１０３）。
【００６０】
図８は、送信データ生成部１１３が生成する送信データを示す図である。図８において、＊印は「０」又は「１」の１ビットを表す。
【００６１】
送信データ１００は、送信ビット列１０１と、ダイジェスト１０２とを有する。ダイジェスト１０２は、送信ビット列の全てのビットを反転させたビット列を含む。例えば、送信ビット列１０１が「００００００００」を含む場合、ダイジェスト１０２は「１１１１１１１１」を含む。また、送信ビット列１０１が「０１１００００１」を含む場合、ダイジェスト１０２は「１００１１１１０」を含む。ダイジェスト１０２のビット長は、送信ビット列１０１のビット長と等しい。
【００６２】
次いで、送信データ生成部１１３は、送信データをＳＤＡ端子からオープンドレイン出力して第１スレーブチップ１２に送信する（Ｓ１０４）。第１スレーブチップ１２は、マスタチップ１１からオープンドレイン出力により送信された送信データを受信データとして受信し、受信した受信データが改ざんされたか否かを判定する（Ｓ１０５）。
【００６３】
Ｓ１０５において、まず、改ざん検出部１２４は、オープンドレイン出力された受信データを、受信ビット列と受信改ざん検出ビット列とに分離する（Ｓ２０１）。受信ビット列はマスタチップ１１が送信した送信ビット列に対応し、受信改ざん検出ビット列はマスタチップ１１が送信した送信改ざん検出ビット列に対応する。次いで、改ざん検出部１２４は、受信ビット列の全てのビットを反転させた受信反転ビット列を生成する（Ｓ２０２）。次いで、改ざん検出部１２４は、受信反転ビット列と、受信改ざん検出ビット列とが一致するか否かを判定する（Ｓ２０３）。改ざん検出部１２４は、受信反転ビット列と、受信改ざん検出ビット列とが一致すると判定すると、受信データは改ざんされていないと判定する（Ｓ２０４）。一方、改ざん検出部１２４は、受信反転ビット列と、受信改ざん検出ビット列とが一致しないと判定すると、受信データは改ざんされたと判定する（Ｓ２０５）。
【００６４】
（第１実施形態に係るデータ検証システムの作用効果）
マスタチップ１１は、送信ビット列の全てのビットを反転した送信反転ビット列を、送信ビット列の改ざんの検出に使用される送信改ざん検出ビット列として送信ビット列に付加して生成した送信データを第１スレーブチップ１２に送信する。送信改ざん検出ビット列は送信ビット列の全てのビットを反転した送信反転ビット列であるので、送信ビット列の「１」のビットに対応する送信改ざん検出ビット列のビットは「０」である。また、送信ビット列の「０」のビットに対応する送信改ざん検出ビット列のビットは「１」である。第２スレーブチップ１３は、送信ビット列の「１」のビットを「０」に改ざんする場合、対応する送信改ざん検出ビット列のビットを「０」から「１」に改ざんしないと、第２スレーブチップ１３は、改ざん検出部１２４は、誤判定することはない。しかしながら、マスタチップ１１は、送信データをＳＤＡ端子からオープンドレイン出力するので、送信改ざん検出ビット列に含まれる「０」は、「１」に改ざんされることはない。同様に、第２スレーブチップ１３が送信反転ビット列に含まれる「１」を「０」に改ざんしたときは、送信ビット列に含まれる「０」が「１」に改ざんされることはない。データ検証システム１は、送信データは、送信ビット列の全てのビットを反転した送信反転ビット列を送信改ざん検出ビット列を含むので、或るビットが改ざんされると、送信ビット列と送信改ざん検出ビット列の対応関係の誤りから改ざんを検知できる。
【００６５】
また、ダイジェストに含まれる送信改ざん検出ビット列は、送信ビット列に含まれる全てのビットを反転することで生成されるので、送信改ざん検出ビット列を生成するための計算するコストは軽微である。
【００６６】
（第２実施形態に係るデータ検証システムの構成及び機能）
図９は、第２実施形態に係るデータ検証システムのブロック図である。
【００６７】
データ検証システム２は、マスタチップ１１及び第１スレーブチップ１２の代わりにマスタチップ２１及び第１スレーブチップ２２が配置されることがデータ検証システム１と相違する。マスタチップ２１及び第１スレーブチップ２２以外のデータ検証システム２の構成素子は、同一符号が付されたデータ検証システム１の構成素子と同様な構成及び機能を有するので、ここでは詳細な説明は省略する。
【００６８】
マスタチップ２１は、送信ビット列生成部２１１と、改ざん検出ビット列生成部２１２と、送信データ生成部２１３と、改ざん検出部２１４とを有する。送信ビット列生成部２１１は、第１スレーブチップ２２に送信する情報に対応する送信ビット列を生成する。改ざん検出ビット列生成部２１２は、送信ビット列生成部２１１が生成した送信ビット列に含まれる「０」の数に対応するゼロ数ビット列を送信改ざん検出ビット列として生成する。送信データ生成部２１３は、送信ビット列生成部２１１が生成した送信ビット列に、改ざん検出ビット列生成部２１２が生成した送信改ざん検出ビット列をダイジェストとして付加して送信データを生成する。送信データ生成部２１３は、生成した送信データを第１スレーブチップ２２に送信する。改ざん検出部２１４は、受信ビット列及び受信ビット列の改ざんの検出に使用される受信改ざん検出ビット列に基づいて、前記受信ビット列の改ざんの有無を検出する。
【００６９】
第１スレーブチップ２２は、送信ビット列生成部２２１と、改ざん検出ビット列生成部２２２と、送信データ生成部２２３と、改ざん検出部２２４とを有する。送信ビット列生成部２２１、改ざん検出ビット列生成部２２２、送信データ生成部２２３及び改ざん検出部２２４は、送信ビット列生成部２１１、改ざん検出ビット列生成部２１２、送信データ生成部２１３及び改ざん検出部２１４と同様な機能を有する。
【００７０】
（第２実施形態に係るデータ検証システムのデータ検証処理）
図１０（ａ）はデータ検証システム２におけるデータ検証処理のシーケンスを示す図であり、図１０（ｂ）は図１０（ａ）に示すＳ３０５の詳細な処理のフローチャートを示す図である。
【００７１】
まず、送信ビット列生成部２１１は、第１スレーブチップ２２に送信する情報に対応する送信ビット列を生成する（Ｓ３０１）。次いで、改ざん検出ビット列生成部２１２は、送信ビット列生成部２１１が生成した送信ビット列に含まれる「０」の数に対応するゼロ数ビット列を送信改ざん検出ビット列として生成する（Ｓ３０２）。次いで、送信データ生成部２１３は、送信ビット列生成部２１１が生成した送信ビット列に、改ざん検出ビット列生成部２１２が生成した送信改ざん検出ビット列をダイジェストとして付加して送信データを生成する（Ｓ３０３）。
【００７２】
図１１は、送信データ生成部２１３が生成する送信データを示す図である。図１１において、＊印は「０」又は「１」の１ビットを表す。
【００７３】
送信データ２００は、送信ビット列２０１と、ダイジェスト２０２とを有する。送信ビット列２０１に含まれる「０」の数に対応するビット列を含む。例えば、送信ビット列１０１が８個の「０」を含む「００００００００」である場合、ダイジェスト１０２は「１０００」を含む。また、送信ビット列１０１が５個の「０」を含む「０１１００００１」である場合、ダイジェスト１０２は「０１０１」を含む。
【００７４】
ダイジェスト２０２に含まれるビット列のビット数は、送信ビット列２０１のビット数をＮとすると、「floor(log2N)+1」で示される。ここで、floor(X)は床関数であり、Xを超えない最大の整数を意味する。
【００７５】
次いで、送信データ生成部２１３は、送信データをＳＤＡ端子からオープンドレイン出力して第１スレーブチップ２２に送信する（Ｓ３０４）。第１スレーブチップ２２は、マスタチップ２１からオープンドレイン出力により送信された送信データを受信データとして受信し、受信した受信データが改ざんされたか否かを判定する（Ｓ３０５）。
【００７６】
Ｓ３０５において、まず、改ざん検出部２２４は、オープンドレイン出力された受信データを、受信ビット列と受信改ざん検出ビット列とに分離する（Ｓ４０１）。受信ビット列はマスタチップ２１が送信した送信ビット列に対応し、受信改ざん検出ビット列はマスタチップ２１が送信した送信改ざん検出ビット列に対応する。次いで、改ざん検出部２２４は、受信ビット列に含まれる「０」の数をカウントし（Ｓ４０２）、受信ビット列に含まれる「０」の数と、受信改ざん検出ビット列が示す「０」の数とが一致するか否かを判定する（Ｓ４０３）。改ざん検出部２２４は、受信ビット列に含まれる「０」の数と、受信改ざん検出ビット列が示す「０」の数とが一致すると判定すると、受信データは改ざんされていないと判定する（Ｓ４０４）。一方、改ざん検出部２２４は、受信ビット列に含まれる「０」の数と、受信改ざん検出ビット列が示す「０」の数とが一致しないと判定すると、受信データは改ざんされたと判定する（Ｓ４０５）。
【００７７】
（第２実施形態に係るデータ検証システムの作用効果）
マスタチップ２１は、送信ビット列に含まれる「０」の数に対応するゼロ数ビット列を、送信ビット列の改ざんの検出に使用される送信改ざん検出ビット列として送信ビット列に付加して生成した送信データを第１スレーブチップ２２に送信する。第２スレーブチップ１３が送信ビット列に含まれるＭ個の「１」が「０」に改ざんされたとき、送信ビット列に含まれる「０」の数はＭ個増加する。送信ビット列に含まれる「０」数はＭ個増加するので、第２スレーブチップ１３は、送信改ざん検出ビット列をＭ回インクリメントした値に変更しないと、改ざん検出部２２４は、データが改ざんされたと判定する。送信改ざん検出ビット列に含まれる少なくとも１つの「０」が「１」に改ざんされなければ、送信改ざん検出ビット列をＭ回インクリメントした値に変更されない。しかしながら、マスタチップ２１は、送信データをＳＤＡ端子からオープンドレイン出力するので、送信改ざん検出ビット列に含まれる「０」は、「１」に改ざんされることはない。データ検証システム２は、送信データは、送信ビット列に含まれる「０」の数に対応するゼロ数ビット列を送信改ざん検出ビット列を含むので、或るビットが改ざんされると、送信ビット列と送信改ざん検出ビット列の対応関係の誤りから改ざんを検知できる。
【００７８】
また、ダイジェストに含まれる送信改ざん検出ビット列は、送信ビット列の「０」の数をカウントすることにより生成されるので、送信改ざん検出ビット列を生成するための計算するコストは軽微である。さらに、送信改ざん検出ビット列のビットサイズも小さくすることができる。
【００７９】
図１２は、ダイジェストを生成するときに使用される技術の比較を示す図である。チェックサム及びＣＲＣ等の誤り検出技術を使用する場合は、改ざんされる可能性があるので、改ざん耐性が低い。ＳＨＡ等のハッシュ関数を使用する場合は、計算コスト及びダイジェストのビットサイズが大きくなる。第１実施形態に係るデータ検証システム１は、計算コストが低く且つ高い改ざん耐性を有する。第２実施形態に係るデータ検証システム２は、計算コストが低く且つ高い改ざん耐性を有することに加えて、ダイジェストのビットサイズを小さくすることができる。
【００８０】
（第３実施形態に係るデータ検証システムの構成及び機能）
図１３は、第３実施形態に係るデータ検証システムのブロック図である。
【００８１】
データ検証システム３は、マスタチップ２１及び第１スレーブチップ２２の代わりにマスタチップ３１及び第１スレーブチップ３２が配置されることがデータ検証システム２と相違する。マスタチップ３１及び第１スレーブチップ３２以外のデータ検証システム３の構成素子は、同一符号が付されたデータ検証システム２の構成素子と同様な構成及び機能を有するので、ここでは詳細な説明は省略する。
【００８２】
マスタチップ３１は、チャレンジ生成部３１１と、改ざん検出部３１２と、認証部３１３とを有する。チャレンジ生成部３１１は、乱数発生器を有し、所定のビット長を有する認証要求ビット列、すなわちチャレンジを生成する。改ざん検出部３１２は、第１スレーブチップ３２から受信したレスポンス及びレスポンスの改ざんの検出に使用される受信改ざん検出ビット列に基づいて、レスポンスの改ざんの有無を検出する。認証部３１３は、暗号処理部を有し、共通鍵を使用して、送信したチャレンジと受信したレスポンスを復号化したチャレンジとを比較して、第１スレーブチップ３２を認証するか否かを判定する。
【００８３】
第１スレーブチップ３２は、レスポンス生成部３２１と、改ざん検出ビット列生成部３２２と、送信データ生成部３２３とを有する。レスポンス生成部３２１は、暗号処理部を有し、共通鍵を使用して、認証応答ビット列、すなわちチャレンジを暗号化してレスポンスを生成する。改ざん検出ビット列生成部３２２は、レスポンス生成部３２１が生成したレスポンスに含まれる「０」の数に対応するゼロ数ビット列を送信改ざん検出ビット列として生成する。送信データ生成部３２３は、レスポンス生成部３２１が生成したレスポンスに、改ざん検出ビット列生成部３２２が生成した送信改ざん検出ビット列をダイジェストとして付加して送信データを生成する。送信データ生成部３２３は、生成した送信データを第１スレーブチップ３２に送信する。
【００８４】
（第３実施形態に係るデータ検証システムのデータ検証処理）
図１４はデータ検証システム３におけるデータ検証処理のシーケンスを示す図であり、図１５は図１４に示すＳ５０７の詳細な処理のフローチャートを示す図である。
【００８５】
まず、チャレンジ生成部３１１は、チャレンジを生成して（Ｓ５０１）、生成したチャレンジをＳＤＡ端子からオープンドレイン出力して、第１スレーブチップ３２に送信する（Ｓ５０２）。次いで、レスポンス生成部３２１は、チャレンジを暗号化してレスポンスを生成する（Ｓ５０３）。次いで、改ざん検出ビット列生成部３２２は、レスポンス生成部３２１が生成したレスポンスに含まれる「０」の数に対応するゼロ数ビット列を送信改ざん検出ビット列として生成する（Ｓ５０４）。次いで、送信データ生成部３２３は、レスポンス生成部３２１が生成したレスポンスに、改ざん検出ビット列生成部３２２が生成した送信改ざん検出ビット列をダイジェストとして付加して送信データを生成する（Ｓ５０５）。次いで、送信データ生成部３２３は、送信データをＳＤＡ端子からオープンドレイン出力して、マスタチップ３１に送信する（Ｓ５０６）。次いで、マスタチップ３１は、第１スレーブチップ３２からオープンドレイン出力により送信された送信データを受信データとして受信し、受信した受信データが改ざんされたか否かを判定する（Ｓ５０７）。
【００８６】
Ｓ５０７において、まず、改ざん検出部２２４は、オープンドレイン出力された受信データを、レスポンスと受信改ざん検出ビット列とに分離する（Ｓ６０１）。受信改ざん検出ビット列は、第１スレーブチップ３２が送信した送信改ざん検出ビット列に対応する。次いで、改ざん検出部３２４は、レスポンスに含まれる「０」の数をカウントする（Ｓ６０２）。次いで、改ざん検出部２２４は、レスポンスに含まれる「０」の数と、受信改ざん検出ビット列が示す「０」の数とが一致するか否かを判定する（Ｓ６０３）。改ざん検出部３２４は、レスポンスに含まれる「０」の数と、受信改ざん検出ビット列が示す「０」の数とが一致すると判定すると、レスポンスは改ざんされていないと判定する（Ｓ６０４）。一方、改ざん検出部３２４は、レスポンスに含まれる「０」の数と、受信改ざん検出ビット列が示す「０」の数とが一致しないと判定すると、レスポンスは改ざんされたと判定する（Ｓ６０５）。
【００８７】
そして、認証部３１３は、送信したチャレンジと、レスポンスを復号化したチャレンジとを比較して、第１スレーブチップ３２を認証するか否かを判定する（Ｓ５０８）。
【００８８】
（第３実施形態に係るデータ検証システムの作用効果）
図１６は第３実施形態に係る改ざん検出機能を有さないデータ検証システムのブロック図であり、図１７はデータ検証システム３のブロック図である。
【００８９】
データ検証システム４は、マスタチップ３１及び第１スレーブチップ３２の代わりにマスタチップ４１及び第１スレーブチップ４２が配置されることがデータ検証システム３と相違する。マスタチップ４１及び第１スレーブチップ４２以外のデータ検証システム３の構成素子は、同一符号が付されたデータ検証システム３の構成素子と同様な構成及び機能を有するので、ここでは詳細な説明は省略する。
【００９０】
マスタチップ４１は改ざん検出部３１２を有さないことがマスタチップ３１と相違し、第１スレーブチップ３２は改ざん検出ビット列生成部３２２及び送信データ生成部３２３を有さないことが第１スレーブチップ３２と相違する。データ検証システム４では、マスタチップ４１は、第２スレーブチップ１３がレスポンスを改ざんしたとき、第１スレーブチップ３２が正規のＩＣチップであるにもかかわらず、認証失敗と判定する。
【００９１】
一方、データ検証システム３では、マスタチップ３１は、第２スレーブチップ１３がレスポンスを改ざんしたとき、ダイジェストに含まれる改ざん検出ビット列を使用して改ざんを検出し、悪意のあるＩＣチップの存在を検知することが可能になる。
【００９２】
データ検証システム３では、改ざん検出部はマスタチップにのみ搭載され、改ざん検出ビット生成部はスレーブチップにのみ搭載されるが、改ざん検出部及び改ざん検出ビット生成部は、マスタチップ及びスレーブチップの双方に搭載されてもよい。
【符号の説明】
【００９３】
１〜３    データ検証システム
１１、２１、３１    マスタチップ（電子装置）
１２、２２、３２    第１スレーブチップ
１３    第２スレーブチップ
１１１、１２１、２１１、２２１    送信ビット列生成部
１１２、１２２、２１２、２２２、３２２    改ざん検出ビット列生成部
１１３、１２３、２１３、２２３、３２３    送信データ生成部
１１４、１２４、２１４、２２４、３１３    改ざん検出部
３１１    チャレンジ生成部
３１３    認証部
３２１    レスポンス生成部
【図１】
2017076854.tif 000003
【図２】
2017076854.tif 000004
【図３】
2017076854.tif 000005
【図４】
2017076854.tif 000006
【図５】
2017076854.tif 000007
【図６】
2017076854.tif 000008
【図７】
2017076854.tif 000009
【図８】
2017076854.tif 000010
【図９】
2017076854.tif 000011
【図１０】
2017076854.tif 000012
【図１１】
2017076854.tif 000013
【図１２】
2017076854.tif 000014
【図１３】
2017076854.tif 000015
【図１４】
2017076854.tif 000016
【図１５】
2017076854.tif 000017
【図１６】
2017076854.tif 000018
【図１７】
2017076854.tif 000019