(57)【要約】【課題】簡易なカウンターを用いてカウンター値に基づく暗号化と復号を実現すること。【解決手段】鍵情報と、暗号化処理ごとにカウントアップされる暗号化カウンター値とに基づき、暗号関数を用いて作成された暗号情報とともに、前記暗号化カウンター値の一部を表わす部分値を受信する受信手段、前記鍵情報と、復号化処理ごとにカウントアップされる復号化カウンター値とに基づき、前記暗号関数を用いて、前記受信手段が受信した前記暗号情報を復号する復号手段、前記受信手段が受信した前記暗号化カウンター値の一部を表わす部分値と、当該部分値に対応する前記復号化カウンター値とが一致しない場合、前記暗号化カウンター値の一部を表わす部分値に基づき、前記復号化カウンター値を補正する補正手段とを備える。【選択図】図１
2014168216.tif 000002
【特許請求の範囲】
【請求項１】
暗号情報を送信する送信側装置と前記暗号情報を受信する受信側装置とを備える暗号システムにおいて、
前記送信側装置は、
鍵情報と、暗号化処理ごとにカウントアップされる暗号化カウンター値とに基づき、暗号関数を用いて前記暗号情報を作成する暗号部と、
前記暗号部によって作成された前記暗号情報とともに、前記暗号化カウンター値の一部を表わす部分値を前記受信側装置に送信する第１送信部と、を備え、
前記受信側装置は、
前記暗号化カウンター値に含まれる部分値および前記暗号情報を前記送信側装置から受信する受信部と、
前記鍵情報と、復号化処理ごとにカウントアップされる復号化カウンター値とに基づき、前記暗号関数を用いて、前記受信部が受信した前記暗号情報を復号する復号部と、
前記受信部が受信した前記暗号化カウンター値の一部を表わす部分値と、当該部分値に対応する前記復号化カウンター値とが一致しない場合、前記暗号化カウンター値の一部を表わす部分値に基づき、前記復号化カウンター値を補正する補正部と、
を備えることを特徴とする暗号システム。
【請求項２】
前記暗号部は、
前記暗号化カウンター値に基づき前記暗号化関数を用いて前記鍵情報を暗号化したマスク情報を作成し、
暗号処理の対象である暗号対象データと前記マスク情報に含まれる部分値との排他的論理和を算出することによって、前記暗号情報を作成することを特徴とする請求項１に記載の暗号システム。
【請求項３】
前記受信側装置は、
前記送信側装置の前記暗号部によって暗号化される平文を事前に保持しており、
前記復号部によって復号化された暗号情報と、前記平文とが、一致するか否かを判定する認証部と、
前記認証部によって、前記復号化された暗号情報と前記平文とが一致すると判定された場合、認証判定の結果が真であることを示す情報を前記送信側装置に送信する第２送信部をさらに備えることを特徴とする請求項１または２に記載の暗号システム。
【請求項４】
前記送信側装置の前記第１送信部は、
予め定められたタイミングに到達した場合、あるいは、前記認証部による認証判定の結果が偽である場合、またはその両方の場合において、前記暗号化カウンター値のすべてを前記受信側装置に送信することを特徴とする請求項３に記載の暗号システム。
【請求項５】
前記送信側装置は、
前記暗号部によって前記暗号情報が作成された場合、前記送信側装置の記憶領域に格納されている前記暗号化カウンター値を１つカウントアップする第１カウンターをさらに備え、
前記受信側装置は、
前記復号部によって前記暗号情報が復号化された場合、前記受信側装置の記憶領域に格納されている前記復号化カウンター値を１つカウントアップする第２カウンターをさらに備えることを特徴とする請求項１から４のうちいずれか一項に記載の暗号システム。
【請求項６】
暗号情報を送信する送信側装置と前記暗号情報を受信する受信側装置とを備える暗号システムにおいて暗号情報認証方法であって、
前記送信側装置が、鍵情報と、暗号化処理ごとにカウントアップされる暗号化カウンター値とに基づき、暗号関数を用いて前記暗号情報を作成する暗号ステップと、
前記送信側装置が、前記暗号ステップによって作成された前記暗号情報とともに、前記暗号化カウンター値の一部を表わす部分値を前記受信側装置に送信するステップと、
前記受信側装置が、前記暗号化カウンター値に含まれる部分値および前記暗号情報を前記送信側装置から受信するステップと、
前記受信側装置が、前記鍵情報と、復号化処理ごとにカウントアップされる復号化カウンター値とに基づき、前記暗号関数を用いて、前記送信側装置から受信した前記暗号情報を復号する復号ステップと、
前記受信側装置が、前記送信側装置から受信した前記暗号化カウンター値の一部を表わす部分値と、当該部分値に対応する前記復号化カウンター値とが一致しない場合、前記暗号化カウンター値の一部を表わす部分値に基づき、前記復号化カウンター値を補正する補正ステップと、
を備えることを特徴とする暗号情報認証方法。
【請求項７】
コンピュータを、
鍵情報と、暗号化処理ごとにカウントアップされる暗号化カウンター値とに基づき、暗号関数を用いて作成された暗号情報とともに、前記暗号化カウンター値の一部を表わす部分値を受信する受信手段、
前記鍵情報と、復号化処理ごとにカウントアップされる復号化カウンター値とに基づき、前記暗号関数を用いて、前記受信手段が受信した前記暗号情報を復号する復号手段、
前記受信手段が受信した前記暗号化カウンター値の一部を表わす部分値と、当該部分値に対応する前記復号化カウンター値とが一致しない場合、前記暗号化カウンター値の一部を表わす部分値に基づき、前記復号化カウンター値を補正する補正手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号システム、暗号情報認証方法およびプログラムに関する。
【背景技術】
【０００２】
暗号生成部を備える送信機と、暗号復号部を備える受信機とを含むシステムにおいて、時変パラメータとしてカウンター値を用いて、送信機が平文を暗号化した暗号文を生成し、受信機が送信機から受信した暗号文を復号するというものがある（例えば、特許文献１参照）。
この特許文献１では、互いに同期してカウント動作されるクロックカウンターを用いて送信機と受信機において生成されるカンンター値を同期させている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２８１８３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載されたもののように、互いに同期してカウント動作されるクロックカウンターを用意する場合、精度の高いカウンターが必要となるため、各送信機と受信機に精度の高いカウンターを設けることによるコスト増大を招くという問題があった。
【０００５】
本発明は、前記の点に鑑みてなされたものであり、簡易なカウンターを用いてカウンター値に基づく暗号化と復号を実現するための暗号システム、暗号情報認証方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
（１）この発明は上述した課題を解決するためになされたもので、本発明の一態様による暗号システムは、暗号情報を送信する送信側装置と前記暗号情報を受信する受信側装置とを備える暗号システムであって、前記送信側装置は、鍵情報と、暗号化処理ごとにカウントアップされる暗号化カウンター値とに基づき、暗号関数を用いて前記暗号情報を作成する暗号部と、前記暗号部によって作成された前記暗号情報とともに、前記暗号化カウンター値の一部を表わす部分値を前記受信側装置に送信する第１送信部と、を備え、前記受信側装置は、前記暗号化カウンター値に含まれる部分値および前記暗号情報を前記送信側装置から受信する受信部と、前記鍵情報と、復号化処理ごとにカウントアップされる復号化カウンター値とに基づき、前記暗号関数を用いて、前記受信部が受信した前記暗号情報を復号する復号部と、前記受信部が受信した前記暗号化カウンター値の一部を表わす部分値と、当該部分値に対応する前記復号化カウンター値とが一致しない場合、前記暗号化カウンター値の一部を表わす部分値に基づき、前記復号化カウンター値を補正する補正部と、を備える。
これにより、本実施形態に係る暗号システムは、常に同期を必用とする高精度なカウンターやタイマーを用いなくても、簡易な構成によって、送信側装置側の暗号化カウンター値と受信側装置側の復号化カウンター値との同期をとることができる。
【０００７】
（２）また、本発明の一態様による暗号システムにおいて、前記暗号部は、前記暗号化カウンター値に基づき前記暗号化関数を用いて前記鍵情報を暗号化したマスク情報を作成し、暗号処理の対象である暗号対象データと前記マスク情報に含まれる部分値との排他的論理和を算出することによって、前記暗号情報を作成する。
これにより、本実施形態に係る暗号システムは、鍵情報によって暗号化されたデータのビット長よりも短い暗号情報を作成することができる。このように、暗号化されたデータのビット長を長くすることによって、セキュリティー性を向上できるとともに、暗号システムが適用される通信方式に従って任意のデータ長の暗号情報を送信することができる。
【０００８】
（３）また、本発明の一態様による暗号システムにおいて、前記受信側装置は、前記送信側装置の前記暗号部によって暗号化される平文を事前に保持しており、前記復号部によって復号化された暗号情報と、前記平文とが、一致するか否かを判定する認証部と、前記認証部によって、前記復号化された暗号情報と前記平文とが一致すると判定された場合、認証判定の結果が真であることを示す情報を前記送信側装置に送信する第２送信部をさらに備える。。
これにより、本実施形態に係る暗号システムは、暗号システムに不正な受信側装置が接続された場合、送信側装置は、不正な受信側装置を検出することができる。
【０００９】
（４）また、本発明の一態様による暗号システムにおいて、前記送信側装置の前記第１送信部は、予め定められたタイミングに到達した場合、あるいは、前記認証部による認証判定の結果が偽である場合、またはその両方の場合において、前記暗号化カウンター値のすべてを前記受信側装置に送信する。
これにより、本実施形態に係る暗号システムは、送信側装置側の暗号化カウンター値と受信側装置側の復号化カウンター値との同期をとることができる。
【００１０】
（５）また、本発明の一態様による暗号システムにおいて、前記送信側装置は、前記暗号部によって前記暗号情報が作成された場合、前記送信側装置の記憶領域に格納されている前記暗号化カウンター値を１つカウントアップする第１カウンターをさらに備え、前記受信側装置は、前記復号部によって前記暗号情報が復号化された場合、前記受信側装置の記憶領域に格納されている前記復号化カウンター値を１つカウントアップする第２カウンターをさらに備える。
これにより、本実施形態に係る暗号システムは、常に同期を必用とする高精度なカウンターやタイマーを用いなくても、簡易な構成によって、送信側装置側の暗号化カウンター値と受信側装置側の復号化カウンター値との同期をとることができる。
【００１１】
（６）また、本発明の一態様による暗号情報認証方法は、暗号情報を送信する送信側装置と前記暗号情報を受信する受信側装置とを備える暗号システムにおいて暗号情報認証方法であって、前記送信側装置が、鍵情報と、暗号化処理ごとにカウントアップされる暗号化カウンター値とに基づき、暗号関数を用いて前記暗号情報を作成する暗号ステップと、前記送信側装置が、前記暗号ステップによって作成された前記暗号情報とともに、前記暗号化カウンター値の一部を表わす部分値を前記受信側装置に送信するステップと、前記受信側装置が、前記暗号化カウンター値に含まれる部分値および前記暗号情報を前記送信側装置から受信するステップと、前記受信側装置が、前記鍵情報と、復号化処理ごとにカウントアップされる復号化カウンター値とに基づき、前記暗号関数を用いて、前記送信側装置から受信した前記暗号情報を復号する復号ステップと、前記受信側装置が、前記送信側装置から受信した前記暗号化カウンター値の一部を表わす部分値と、当該部分値に対応する前記復号化カウンター値とが一致しない場合、前記暗号化カウンター値の一部を表わす部分値に基づき、前記復号化カウンター値を補正する補正ステップと、を備える。
【００１２】
（７）また、本発明の一態様によるプログラムは、コンピュータを、鍵情報と、暗号化処理ごとにカウントアップされる暗号化カウンター値とに基づき、暗号関数を用いて作成された暗号情報とともに、前記暗号化カウンター値の一部を表わす部分値を受信する受信手段、前記鍵情報と、復号化処理ごとにカウントアップされる復号化カウンター値とに基づき、前記暗号関数を用いて、前記受信手段が受信した前記暗号情報を復号する復号手段、前記受信手段が受信した前記暗号化カウンター値の一部を表わす部分値と、当該部分値に対応する前記復号化カウンター値とが一致しない場合、前記暗号化カウンター値の一部を表わす部分値に基づき、前記復号化カウンター値を補正する補正手段として機能させるためのプログラムである。
【発明の効果】
【００１３】
本発明によれば、簡易なカウンターを用いてカウンター値に基づく暗号化と復号を実現することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明に係る第１実施形態に係る暗号システムの構成の一例を示すブロック図である。
【図２】本発明に係る第１実施形態に係る暗号部と復号部による処理の一例を説明するための参考図である。
【図３】本発明に係る第１実施形態に係る暗号情報認証方法の一例について説明するためのフローチャートである。
【図４】本発明に係る第２実施形態に係る暗号システムの構成の一例を示すブロック図である。
【図５】本発明に係る第３実施形態に係る暗号システムの構成の一例を示すブロック図である。
【図６】本発明に係る第４実施形態に係る暗号システムの構成の一例を示すブロック図である。
【図７】本発明に係る各実施形態に適用可能なカウンター値の初期化の一例を説明するための図である。
【図８】本発明に係る第４実施形態に係る暗号システムの構成の一例を示すブロック図である。
【図９】本発明に係る第４実施形態に係る暗号システムの構成の一例を示すブロック図である。
【図１０】本発明に係る第４実施形態に係る暗号システムの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１５】
［第１実施形態］
本発明の実施形態について図面を参照して詳細に説明する。図１は、本実施形態に係る暗号システムの構成の一例を示すブロック図である。
図１に示す通り、本実施形態に係る暗号システム１は、暗号情報を送信する送信側装置１００と、送信側装置１００から暗号情報を受信する受信側装置２００とを備える。
送信側装置１００は、カウンター１０１と、記憶部１０２と、暗号部１０３と、通信部１０４と、カウンター値補正部１０５とを備える。
カウンター１０１は、前回値を保持するとともに、暗号化処理ごとに、カウントアップさせた暗号化カウンター値を出力する。本実施形態において、カウンター１０１は、暗号化処理ごとに＋１を加算し、３２ｂｉｔの暗号化カウンター値であるＣＴＲ値＿１を出力する。ただし、本発明はこれに限られず、カウンター１０１は、暗号化処理ごとに所定値を減算するものであってもよく、加減の値も１以外（２，３，・・・）であってもよい。なお、本実施形態において、カウンター１０１は、記憶部とＣＰＵ（Central Processing Unit）によって構成される機能部であって、記憶部が記憶する前回値に、ＣＰＵが＋１を加算したＣＴＲ値＿１を出力する構成である。また、送信側装置１００のカウンター１０１は、不揮発性メモリにＣＴＲ値＿１を格納しておく。これにより、送信側装置１００は、電源がＯＦＦした場合であっても、再び起動した際に、次のＣＴＲ値＿１から利用することができる。
記憶部１０２は、暗号部１０３による暗号処理に利用される鍵情報と、暗号文を作成するための平文情報とが記憶されている。本実施形態において、記憶部１０２には、鍵情報として１２８ｂｉｔのＫＥＹ値と、平文情報としてｍｂｉｔ（ｍは、１以上１２８未満の自然数）の平文ＰＴ＿１とが、それぞれ記憶されている。
【００１６】
暗号部１０３は、鍵情報であるＫＥＹ値と、暗号化処理ごとにカウントアップされるＣＴＲ値＿１とに基づき、暗号関数を用いて暗号情報である暗号文ＣＴを作成する。本実施形態において、暗号部１０３は、１２８ｂｉｔのＫＥＹ値を用いてｍｂｉｔの平文ＰＴ＿１を暗号化することによって、ｍｂｉｔの暗号文ＣＴを作成する。
また、暗号部１０３は、暗号文ＣＴを作成した際に利用したＣＴＲ値＿１の一部を表わす部分値Ｃや送信側装置１００におけるカウンター値を補正するための制御コード等を含むカウンタコントロール（以下、ＣＣという）を作成し、暗号文に対応づける。このカウンタコントロールＣＣとは、カウンター値の補正処理用の制御コードである。
なお、本実施形態において、暗号文ＣＴとカウンタコントロールＣＣとを含む情報を暗号文データという。また、本実施形態において、暗号文データは、６４ｂｉｔ以下であり、カウンタコントロールＣＣのビット長と暗号文のビット長は、任意に設定可能である。さらに、本実施形態において、暗号部１０３は、ＣＴＲ値＿１の一部を表わす部分値Ｃとして、ＣＴＲ値＿１の最も下の位の桁からｎｂｉｔの部分値Ｃを抽出する。
通信部１０４は、暗号部１０３によって作成された暗号文ＣＴとカウンタコントロールＣＣとを含む暗号文データを、受信側装置２００に送信する。
【００１７】
カウンター値補正部１０５は、予め決められたタイミングに到達した場合、カウンター１０１が保持するＣＴＲ値＿１の全桁データを、通信部１０４を介して受信側装置２００に送信する。このカウンター値補正部１０５は、例えば、カウンター１０１が予め決められた数をカウントしたタイミング、あるいは、送信側装置１００や暗号システム１に搭載されたタイマー（図示せず）によって計時された値が予め決められた時間を経過したタイミングで、ＣＴＲ値＿１の全桁データを送信する。
【００１８】
受信側装置２００は、カウンター２０１と、記憶部２０２と、復号部２０３と、通信部２０４と、カウンター値補正部２０５とを備える。
カウンター２０１は、復号化処理ごとに、カウントアップさせた復号化カウンター値を出力する。本実施形態において、カウンター２０１は、復号化処理ごとに＋１を加算し、３２ｂｉｔの復号化カウンター値であるＣＴＲ値＿２を出力する。ただし、本発明はこれに限られず、カウンター２０１は、復号化処理ごとに所定値を減算するものであってもよく、加減の値も１以外（２，３，・・・）であってもよい。なお、本実施形態において、カウンター２０１は、カウンター１０１と同様、記憶部とＣＰＵによって構成される機能部である。また、受信側装置２００のカウンター２０１は、揮発性メモリにＣＴＲ値＿２を格納しておく。これにより、受信側装置２００は、電源のＯＦＦ後に再び起動した場合であってもＣＴＲ値＿２を保持していないため、ＣＴＲ値＿１の漏洩を防止するとう観点から、セキュリティー性を向上させることができる。
記憶部２０２は、復号部２０３による暗号処理に利用される鍵情報と、外部機器において暗号文を作成する際に利用される平文情報とが記憶されている。本実施形態において、記憶部２０２には、鍵情報として１２８ｂｉｔのＫＥＹ値が、平文情報としてｍｂｉｔ（ｍは、１以上１２８未満の自然数）の平文ＰＴ＿１が、それぞれ記憶されている。つまり、この記憶部２０２には、送信側装置１００の暗号化処理において利用されるＫＥＹ値とＰＴ＿１と同一の情報が予め記憶されている。
【００１９】
通信部２０４は、送信側装置１００からの暗号文データを受信する。
復号部２０３は、通信部２０４が受信した暗号文データに含まれる暗号文と、記憶部２０２に記憶されているＫＥＹ値と、復号化処理ごとにカウンター２０１によってカウントアップされるＣＴＲ値＿２とに基づき、暗号関数を用いて暗号文を復号して、平文情報を抽出する。本実施形態において、復号部２０３による復号によって得られた平文情報を、平文ＰＴ＿２という。
【００２０】
カウンター値補正部２０５は、通信部２０４が受信した暗号文データに含まれるカウンタコントロールＣＣに基づき、カウンター２０１から出力されるＣＴＲ値＿２、つまり、復号部２０３による復号化処理で利用されるＣＴＲ値＿２を補正する。具体的に説明すると、カウンター値補正部２０５は、暗号文の暗号化に利用されたカウンター値であるＣＴＲ値＿１の一部を表わす部分値をカウンタコントロールＣＣから取得し、カウンタコントロールＣＣから取得したＣＴＲ値＿１の一部と、カウンター２０１から出力されるＣＴＲ値＿２の一部とを比較する。なお、カウンター値補正部２０５は、ＣＴＲ値＿１の一部と同じ位の桁のＣＴＲ値＿２の一部を取得し、それぞれを比較する。ＣＴＲ値＿１の一部とＣＴＲ値＿２の一部とが一致しない場合、カウンター値補正部２０５は、ＣＴＲ値＿１の一部に基づき、カウンター２０１から出力されるＣＴＲ値＿２を補正する。具体的説明すると、カウンター値補正部２０５は、カウンター２０１から出力されるＣＴＲ値＿２の一部がＣＴＲ値＿１と同じ値になるまで、＋１を加算する。一方、ＣＴＲ値＿１の一部とＣＴＲ値＿２の一部とが一致する場合、カウンター値補正部２０５は、ＣＴＲ値＿２を補正しない。
【００２１】
なお、カウンター値補正部２０５による補正を数式で示すと以下のように示すことができる。
［カウンター値補正部２０５による補正を表わす数式］
ＣＴＲ値＿２←ＣＴＲ値＿１＋｛（ＣＴＲ値＿１の部分値Ｃ−ＣＴＲ値＿２の部分値Ｃ’） ＡＮＤ Ｃｍａｘ｝・・・式（１）
なお、ＣＴＲ値＿１の部分値Ｃは、ＣＴＲ値＿１に含まれる一部である。
ＣＴＲ値＿２の部分値Ｃ’は、ＣＴＲ値＿１の部分値Ｃと同じ位の桁のＣＴＲ値＿２の一部である。
ＡＮＤは、論理積を示す。
Ｃｍａｘは、ＣＴＲ値＿１の部分値Ｃのビット長と同じｎｂｉｔ長の符号なしの整数の最大値である。
【００２２】
また、暗号部１０３は、暗号関数処理部１３１と、マスク処理部１３２と、排他的論理和計算部１３３と、暗号文データ生成部１３４とを備える。
さらに、復号部２０３は、暗号関数処理部２３１と、マスク処理部２３２と、排他的論理和計算部２３３と、復号処理部３３４とを備える。
なお、暗号部１０３と復号部２０３とにおいて、それぞれ同一の名称で示す機能部は同一の機能を有する。
【００２３】
ここで、図２を参照して、暗号部１０３と復号部２０３が備える各機能部について詳細に説明する。図２は、暗号部１０３と復号部２０３による処理の一例を説明するための参考図である。
暗号関数処理部１３１は、記憶部１０２から読み出した１２８ｂｉｔのＫＥＹ値と、カウンター１０１から出力される３２ｂｉｔのＣＴＲ値＿１とに基づき、予め決められた暗号関数を用いてＫＥＹ値を暗号化して、１２８ｂｉｔのマスク情報であるＭＡＳＫ＿１を生成し、マスク処理部１３２に出力する。なお、暗号関数処理部１３１は、高いセキュリティーの実現するため、ＫＥＹ値を１２８ｂｉｔ以上の値に暗号化することが好ましい。
マスク処理部１３２は、暗号関数処理部１３１から入力するＭＡＳＫ＿１の先頭からｍｂｉｔの値を抽出し、抽出したｍｂｉｔのＭＡＳＫ部分値＿１を排他的論理和計算部１３３に出力する。なお、マスク処理部１３２が抽出するＭＡＳＫ部分値＿１のビット長を予め決められており、１≦ｍ＜１２８である。
排他的論理和計算部１３３は、マスク処理部１３２から入力するｍｂｉｔのＭＡＳＫ部分値＿１と、記憶部１０２から読み出したｍｂｉｔの平文ＰＴ＿１との排他的論理和を算出し、算出したｍｂｉｔの値、つまり、暗号文ＣＴを暗号文データ生成部１３４に出力する。
【００２４】
暗号文データ生成部１３４は、排他的論理和計算部１３３によって暗号文ＣＴが算出された際に利用されたＣＴＲ値＿１をカウンター１０１から入力し、このＣＴＲ値＿１の最も下の位の桁からｎｂｉｔの部分値Ｃを抽出する。この暗号文データ生成部１３４は、抽出したＣＴＲ値＿１の部分値Ｃと、この部分値Ｃのビット長を示す値Ｌと、暗号化フラグＥとを含むカウンタコントロールＣＣを生成する。本実施形態において、カウンタコントロールＣＣ内のデータの順番は、先頭から、暗号化フラグＥ、ビット長Ｌ、ＣＴＲ値＿１の部分値Ｃの順番である。カウンタコントロールＣＣのビット長は、１〜６４ｂｉｔであることが好ましい。なお、暗号化フラグＥとは、電文が暗号化されているか否かを示す制御コードである。暗号化フラグＥ＝１の場合、以下に続く電文が暗号化された電文であることを示し、暗号化フラグＥの後ろにはＣＴＲ値＿１の部分値Ｃのビット長Ｌが続く。一方、暗号化フラグＥ＝０の場合、以下に続く電文が暗号化されていない電文であることを示し、暗号化フラグＥの後ろには、暗号化されていない平文ＰＴが続く。また、ビット長Ｌは、これに続くＣＴＲ値＿１の部分値Ｃのビット長（＝ｎ）を表わす。なお、ｎ＝０の場合、つまり、ＣＴＲ値＿１の部分値Ｃがない場合、ビット長Ｌの後ろには、暗号化された暗号文ＣＴあるいは暗号化されていない平文ＰＴが続く。さらに、ＣＴＲ値＿１の部分値Ｃは、ＣＴＲ値＿１の下位側ｎｂｉｔの値である。なお、ｎは、０≦ｎ≦５７（１＋６＋ｎ≦６４）となる。本実施形態において、カウンタコントロールＣＣには、暗号化フラグＥとビット長Ｌとを含む例について説明したが、本発明はこれに限られず、送信側装置１００と受信側装置２００が搭載されるシステムの仕様としてこれらが固定値である場合、省略してもよい。
【００２５】
また、暗号文データ生成部１３４は、生成したカウンタコントロールＣＣと、排他的論理和計算部１３３から入力するｍｂｉｔの暗号文ＣＴとを対応付けて通信部１０４に出力する。
通信部１０４は、カウンタコントロールＣＣ、暗号文ＣＴの順番で、カウンタコントロールＣＣと暗号文ＣＴからなる暗号文データを受信側装置２００に送信する。
【００２６】
次に、受信側装置２００の各機能構成の処理について詳細に説明する。
カウンター値補正部２０５は、通信部２０４が受信した暗号文データから、暗号文の暗号化に利用されたカウンター値であるＣＴＲ値＿１の一部を表わす部分値を取得し、このＣＴＲ値＿１の一部と、カウンター２０１から出力されるＣＴＲ値＿２の一部とを比較する。ＣＴＲ値＿１の一部とＣＴＲ値＿２の一部とが一致しない場合、カウンター値補正部２０５は、カウンター２０１から出力されるＣＴＲ値＿２の一部がＣＴＲ値＿１と同じ値になるまで、＋１を加算することによって、ＣＴＲ値＿２を補正する。
暗号関数処理部２３１は、記憶部２０２から読み出した１２８ｂｉｔのＫＥＹ値と、カウンター２０１から出力される３２ｂｉｔのＣＴＲ値＿２とに基づき、予め決められた暗号関数を用いてＫＥＹ値を暗号化して、１２８ｂｉｔのＭＡＳＫ＿２を生成し、マスク処理部１３２に出力する。なお、暗号関数処理部２３１で用いられる暗号関数は、暗号関数処理部１３１で用いられる暗号関数と同一のものである。
マスク処理部２３２は、暗号関数処理部２３１から入力するＭＡＳＫ＿２の先頭からｍｂｉｔと抽出し、抽出したｍｂｉｔのＭＡＳＫ部分値＿２を排他的論理和計算部２３３に出力する。なお、マスク処理部２３２が抽出するＭＡＳＫ部分値のビット数を予め決められており、１≦ｍ＜１２８である。
【００２７】
排他的論理和計算部２３３は、マスク処理部２３２から入力するｍｂｉｔのＭＡＳＫ部分値＿２と、送信側装置１００から受信した暗号文データに含まれるｍｂｉｔの暗号文ＣＴとの排他的論理和を算出し、算出したｍｂｉｔの値、つまり、平文ＰＴ＿２を認証部２３４に出力する。
認証部２３４は、記憶部２０２から読み出した平文ＰＴ＿１と、排他的論理和計算部２３３から出力された平文ＰＴ＿２を比較し、これらが一致した場合、認証判定の結果が真であることを示す情報を通信部２０４を介して送信側装置１００に送信する。また、認証部２３４は、記憶部２０２から読み出した平文ＰＴ＿１と、排他的論理和計算部２３３から出力された平文ＰＴ＿２とが一致しない場合、認証判定の結果が偽であることを示す情報を通信部２０４を介して送信側装置１００に送信する。なおこの場合において、認証部２３４は、カウンター１０１が保持するＣＴＲ値＿１の全桁データの送信を、通信部２０４を介して送信側装置１００に要求するものであってもよい。
通信部２０４は、認証部２３４から入力する情報を、送信側装置１００に送信する。
【００２８】
次に、図３を参照して、本実施形態に係る暗号情報認証方法の一例について説明する。図３は、本実施形態に係る暗号情報認証方法の一例について説明するためのフローチャートである。本実施形態では、送信側装置１００がＣＴＲマスタであって、受信側装置２００がＣＴＲスレーブである例について説明する。なお、ＣＴＲマスタとは、暗号部１０３を備え、暗号化に用いるＣＴＲ値＿１を保持している装置をいう。一方、ＣＴＲスレーブとは、復号部２０３を備える装置をいう。
（ステップＳＴ１０１）
送信側装置１００の通信部１０４は、暗号化通信を開始する前に、ＣＴＲ値＿１の初期値を受信側装置２００に送信する。例えば、送信側装置１００は、カウンター１０１が保持するＣＴＲ値＿１の全桁の値を初期値として、受信側装置２００に送信する。
（ステップＳＴ１０２）
次いで、送信側装置１００の暗号部１０３は、暗号化処理の実行指示を待つ。例えば、送信側装置１００内に含まれる制御部（図示せず）から暗号化処理の実行が指示された場合、暗号部１０３は、以下に説明する暗号化処理を実行する。
【００２９】
（ステップＳＴ１０３）
暗号部１０３の暗号関数処理部１３１は、記憶部１０２から読み出したＫＥＹ値と、カウンター１０１から出力されるＣＴＲ値＿１とに基づき、ＫＥＹ値を暗号化して、ＭＡＳＫ＿１を生成し、マスク処理部１３２に出力する。
（ステップＳＴ１０４）
そして、マスク処理部１３２は、暗号関数処理部１３１から入力するＭＡＳＫ＿１の一部であるＭＡＳＫ部分値＿１を抽出し、この抽出したＭＡＳＫ部分値＿１を排他的論理和計算部１３３に出力する。
（ステップＳＴ１０５）
次いで、排他的論理和計算部１３３は、マスク処理部１３２から入力するＭＡＳＫ部分値＿１と、記憶部１０２から読み出した平文ＰＴ＿１との排他的論理和を算出し、算出した暗号文ＣＴを暗号文データ生成部１３４に出力する。
【００３０】
（ステップＳＴ１０６）
そして、暗号文データ生成部１３４は、排他的論理和計算部１３３によって暗号文ＣＴが算出された際に利用されたＣＴＲ値＿１をカウンター１０１から入力し、このＣＴＲ値＿１の一部である部分値Ｃを抽出する。この暗号文データ生成部１３４は、抽出したＣＴＲ値＿１の部分値Ｃと、この部分値Ｃのビット長を示す値Ｌと、暗号化フラグＥとを含むカウンタコントロールＣＣを生成する。
また、暗号文データ生成部１３４は、生成したカウンタコントロールＣＣと、排他的論理和計算部１３３から入力する暗号文ＣＴとを対応付けた情報である暗号文データを生成し、通信部１０４に出力する。
（ステップＳＴ１０７）
通信部１０４は、暗号文データ生成部１３４によって生成された暗号文データに基づき、カウンタコントロールＣＣ、暗号文ＣＴの順番で、暗号文データを受信側装置２００に送信する。
【００３１】
（ステップＳＴ１０８）
一方、受信側装置２００は、送信側装置１００からＣＴＲ値＿１の初期値を受信すると、ＣＴＲ値の初期設定処理を実行する。例えば、受信側装置２００のカウンター２０１は、受信したＣＴＲ値＿１の初期値をＣＴＲ値＿２の初期値として保持する。これにより、送信側装置１００のカウンター１０１のＣＴＲ値＿１と受信側装置２００のカウンター２０１のＣＴＲ値＿２とを同期させることができる。
【００３２】
（ステップＳＴ１０９）
次いで、受信側装置２００は、送信側装置１００から暗号文データを受信する。
（ステップＳＴ１１０）
そして、カウンター値補正部２０５は、通信部２０４が受信した暗号文データから、暗号文の暗号化に利用されたカウンター値であるＣＴＲ値＿１の一部を表わす部分値Ｃを取得し、このＣＴＲ値＿１の部分値Ｃと、カウンター２０１から出力されるＣＴＲ値＿２の部分値とを比較する。
（ステップＳＴ１１１−ＹＥＳ、ステップＳＴ１１２）
ＣＴＲ値＿１の部分値ＣとＣＴＲ値＿２の部分値とが一致しない場合、カウンター値補正部２０５は、カウンター２０１が保持するＣＴＲ値＿２の部分値がＣＴＲ値＿１の部分値Ｃと同じ値になるまで、＋１を加算することによって、ＣＴＲ値＿２を補正する。これにより、送信側装置１００のカウンター１０１のＣＴＲ値＿１と受信側装置２００のカウンター２０１のＣＴＲ値＿２とを同期させることができる。
（ステップＳＴ１１１−ＮＯ）
一方、ＣＴＲ値＿１の部分値ＣとＣＴＲ値＿２の部分値とが一致する場合、カウンター値補正部２０５は、ＣＴＲ値＿２の補正はしない。
【００３３】
（ステップＳＴ１１３）
そして、復号部２０３の暗号関数処理部２３１は、記憶部２０２から読み出したＫＥＹ値と、カウンター２０１から出力されるＣＴＲ値＿２とに基づき、ＫＥＹ値を暗号化して、ＭＡＳＫ＿２を生成し、マスク処理部１３２に出力する。
（ステップＳＴ１１４）
次いで、マスク処理部２３２は、暗号関数処理部１３１から入力するＭＡＳＫ＿２の一部であるＭＡＳＫ部分値＿２を抽出し、この抽出したＭＡＳＫ部分値＿２を排他的論理和計算部２３３に出力する。
（ステップＳＴ１１５）
そして、排他的論理和計算部２３３は、マスク処理部２３２から入力するＭＡＳＫ部分値＿２と、送信側装置１００から受信した暗号文データに含まれる暗号文ＣＴとの排他的論理和を算出し、算出した平文ＰＴ＿２を認証部２３４に出力する。
【００３４】
（ステップＳＴ１１６）
次いで、認証部２３４は、記憶部２０２から読み出した平文ＰＴ＿１と、排他的論理和計算部２３３から出力された平文ＰＴ＿２を比較する。
（ステップＳＴ１１６−ＹＥＳ，ステップＳＴ１１７）
記憶部２０２から読み出した平文ＰＴ＿１と、排他的論理和計算部２３３から出力された平文ＰＴ＿２とが一致した場合、認証部２３４は、認証判定の結果が「真」であることを示す情報を通信部２０４に出力する。通信部２０４は、認証部２３４から入力する情報を、送信側装置１００に送信する。
（ステップＳＴ１１６−ＹＥＳ，ステップＳＴ１１８）
一方、記憶部２０２から読み出した平文ＰＴ＿１と、排他的論理和計算部２３３から出力された平文ＰＴ＿２とが一致しない場合、認証部２３４は、認証判定の結果が「偽」であることを示す情報を通信部２０４に出力する。通信部２０４は、認証部２３４から入力する情報を、送信側装置１００に送信する。
【００３５】
上述の通り、送信側装置１００から送信されるＣＴＲ値＿１の部分値Ｃに基づき、受信側装置２００のＣＴＲ値＿２を補正するカウンター値補正部２０５を備えることによって、送信側装置１００と受信側装置２００のカウンター値を同期させることができる。これにより、暗号文を受信した時点で受信側装置２００のＣＴＲ値＿２が送信側装置１００のＣＴＲ値＿１と同期していない場合であっても、受信側装置２００は、暗号文ＣＴを復号することができる。
そして、受信側装置２００は、送信側装置１００から受信した暗号文ＣＴを復号した結果が、決められた平文ＰＴ＿１と一致する場合、この受信側装置２００が送信側装置１００と同一の鍵情報を保持する正規品であると判定することができる。よって、受信側装置２００は、認証判定の結果が「真」であることを示す情報を送信側装置１００に送信することによって、送信側装置１００は、受信側装置２００を正規品であると認識することができる。
よって、送信側装置１００や受信側装置２００は、常にカウンター値の同期を必要としないため、ＣＴＲ値＿１やＣＴＲ値＿２を保持する記憶部と、暗号化処理あるいは復号化処理毎に、前回値をカウントアップさせるＣＰＵ（処理部）によって、カウンター１０１，２０１を実現することができる。従って、精度の高いカウンターを必要としないため、各装置に精度の高いカウンターを設けることによるコストを削減することができる。
【００３６】
なお、本実施形態に係る送信側装置１００と受信側装置２００は、例えば、電気自動車（以下、ＥＶ（ｅｌｅｃｔｒｉｃ ｖｅｈｉｃｌｅ）という）に搭載される制御ユニットに適用することができる。以下、適用シーンにおける課題と効果について説明する。
ＥＶに搭載されている蓄電池（バッテリ）は、そのものの経済価値が高く、偽造や模倣の対象となりやすい。加えて、ＥＶ用の蓄電池は、エネルギー密度が高く、品質管理が必要な危険物である。このような背景から、ＥＶに使用される蓄電池の偽造品や模倣品を排除するため、蓄電池が正規品であることを認証するための仕組みが必要とされている。
蓄電池の認証を行う仕組みとしては、蓄電池または蓄電池を制御する制御ユニット内にセキュリティデバイス（ＬＳＩ）を設け、暗号通信を行うことで実現することができる。ＥＶ内の各ユニット間の通信には、一般的にはＣＡＮ-ＢＵＳが広く使われている。このＣＡＮ-ＢＵＳの通信パケットは、最大８バイトである。
一方、暗号通信に使われる暗号アルゴリズムは、現在、セキュリティーの観点から、１６バイトブロック長以上のものを使用することが推奨されている。
このため、暗号単位ブロック長がＣＡＮ-ＢＵＳの通信パケットサイズより大きくなってしまうため、単純実装が出来ないという問題があった。
【００３７】
そこで、本実施形態に係る暗号システム１は、ブロック暗号の暗号モードの１つであるＣＴＲモード（ＣＴＲ：カウンタ）を用いることで、セキュリティーの観点から暗号通信に使われる暗号アルゴリズムの暗号化された情報のバイトブロック長を推奨値以上とするとともに、ＣＡＮ-ＢＵＳの通信パケットサイズの制約の問題を解消することができる。
つまり、本実施形態に係る送信側装置１００と受信側装置２００は、ＣＴＲ値＿１とＣＴＲ値＿２とに基づき、同一のＫＥＹ値を暗号化したＭＡＳＫ＿１とＭＡＳＫ＿２を作成する。ここで、ＣＴＲ値＿１とＣＴＲ値＿２とは互いに同期しているため、ＭＡＳＫ＿１とＭＡＳＫ＿２も同一の値となる。従って、暗号部１０３と復号部２０３は、生成するＭＡＳＫ＿１とＭＡＳＫ＿２のビット長を１６バイトブロック長以上のものとすることにより、セキュリティーの観点から推奨されているビット長を確保することができる。
また、暗号部１０３は、送信側装置１００から受信側装置２００に送信する暗号化データのバイトブロック長が、ＣＡＮ-ＢＵＳの通信パケットの最大値（８バイト）以下となるように、ＭＡＳＫ＿１からｍｂｉｔのＭＡＳＫ部分値＿１を抽出する。なお、ｍｂｉｔの値は、カウンタコントロールＣＣのビット長を加えたとしても、ＣＡＮ-ＢＵＳの通信パケットの最大値（８バイト）以下となる数値が任意に設定される。そして、このＭＡＳＫ部分値＿１に基づき、平文ＰＴ＿１から暗号文を生成する。これにより、送信側装置１００は、ｍｂｉｔの暗号文を作成することができるため、ＣＡＮ-ＢＵＳの通信パケットの最大値（８バイト）以下とすることができ、ＣＡＮ-ＢＵＳの通信パケットサイズの制約の問題を解消することができる。
【００３８】
なお、このＣＴＲモードとは、ブロック暗号をストリーム暗号のように使用するための演算方式であり、１ビット単位の暗復号が可能である。ＣＴＲ値は、通信が行われる毎に更新（＋１）される時変パラメータである。このＣＴＲモードにおいては、送信側装置１００と受信側装置２００で同じ値のＣＴＲ値を共有（同期）する必要がある。
通信電文の中にＣＴＲ値を埋め込めば、送信側装置１００と受信側装置２００におけるＣＴＲ値の共有（同期）は容易に実現可能であるが、ＣＡＮ-ＢＵＳの通信パケットにＣＴＲを埋め込むと、それだけで通信パケットを消費してしまい、伝送効率が非常に悪くなってしまう。
【００３９】
そこで、本実施形態に係る暗号システム１は、送信側装置１００と受信側装置２００とにおいて、それぞれＣＴＲ値＿１とＣＴＲ値＿２とを保持し、ＣＴＲ値＿１の全ての値を全ての通信電文中に埋め込まないようにしたため、伝送効率の悪化を抑えた上で、ＣＴＲの同期を取ることができる。
つまり、本実施形態に係る送信側装置１００は、ＣＴＲ値＿１の一部である部分値Ｃを暗号文ＣＴとともに受信側装置２００に送信する。また、受信側装置２００は、暗号文ＣＴを送信側装置１００から受信した場合、ＣＴＲ値＿１の一部を用いて、ＣＴＲ値＿１とＣＴＲ値＿２とを同期させるように、自身のカウンター２０１のＣＴＲ値＿２を補正する。これにより、自動的に同期する精度の高いカウンターでなく、暗号化処理あるいは復号化処理の処理ごとにカウンター値をカウントアップさせるような簡易なカウンターを用いる場合であっても、復号化処理の際に、送信側装置１００と受信側装置２００のカウンターのカウンター値を同期させることができる。また、同期させるための情報の伝送量を制限することによって、伝送効率の悪化を抑えることができる。
【００４０】
なお、式（１）で示した通り、カウンター値補正部２０５は、ＣＴＲ値＿１とＣＴＲ値＿２とのズレがＣｍａｘ以下である場合、補正により両値を同期させることができるが、ＣＴＲ値＿１とＣＴＲ値＿２とのズレがＣｍａｘを超えた場合、補正により両値を同期させることができない。
このような場合、以下の方法を用いて、補正によりＣＴＲ値＿１とＣＴＲ値＿２を同期させることができる。
【００４１】
（案１）
例えば、受信側装置２００のカウンター値補正部２０５によって、式（１）に示すような補正が実行された場合であっても、記憶部２０２から読み出した平文ＰＴ＿１と、排他的論理和計算部２３３から出力された平文ＰＴ＿２とが一致しない場合が生じたとする。この場合、認証部２３４は、暗号関数処理部２３１に対して、１回目の補正処理において利用したＣＴＲ値＿２に対して、Ｃｍａｘを加算したＣＴＲ値＿２を利用して、再びＭＡＳＫ＿２を算出するよう指示する。これにより、復号部２０３は、１回目の補正処理において利用したＣＴＲ値＿２にＣｍａｘを加算したＣＴＲ値＿２を用いて、２回目の補正処理の実行することができる。
これにより、カウンター値補正部２０５は、ＣＴＲ値＿１とＣＴＲ値＿２とのズレがＣｍａｘを超えた場合であっても、補正により両値を同期させることができない。
なお、受信側装置２００は、２回目以降の補正処理の回数に上限値が設定されていることが好ましい。補正処理の回数が上限値に達した場合、受信側装置２００は、送信側装置１００に対して、ＣＴＲ値＿１の全桁データの送信を要求することにより、ＣＴＲ値＿２をＣＴＲ値＿１に同期させることができる。
【００４２】
（案２）
また、送信側装置１００は、定期的に、ＣＴＲ値＿１の全桁データを、受信側装置２００に送信するものであってもよい。例えば、送信側装置１００は、ＣＴＲ値＿１の部分値Ｃが０となる度に、カウンター１０１が保持するＣＴＲ値＿１の全桁データを、受信側装置２００に送信する。受信側装置２００は、受信したＣＴＲ値＿１の全桁データを、カウンター２０１が保持するＣＴＲ値＿２として上書き保存する。これにより、ＣＴＲ値＿２をＣＴＲ値＿１に同期させることができる。
（案３）
さらに、本発明は、案２で説明したタイミングに限られず、例えば、送信側装置１００が備えるタイマーによて計時された一定時間が経過する度に、カウンター１０１が保持するＣＴＲ値＿１の全桁データを、受信側装置２００に送信するものであってよい。
（案４）
また、送信側装置１００は、案２と案３とを組み合わせた方法によって、カウンター１０１が保持するＣＴＲ値＿１の全桁データを、受信側装置２００に送信するものであってもよい。
【００４３】
［第２実施形態］
本発明に係る第２実施形態について図面を参照して詳細に説明する。図４は、第２実施形態に係る暗号システムの構成の一例を示すブロック図である。
図４に示す通り、本実施形態に係る暗号システム２は、バスを介してそれぞれ通信可能に接続されているＮ個の装置Ｍ１＿１，Ｍ１＿２，・・・，Ｍ１＿Ｎを備える。これら装置Ｍ１＿１，Ｍ１＿２，・・・，Ｍ１＿Ｎは、第１実施形態に係る送信側装置１００および受信側装置２００として機能する装置である。また、これら装置Ｍ１＿１，Ｍ１＿２，・・・，Ｍ１＿Ｎは、それぞれ、カウンター１０１およびカウンター２０１に相当するカウンター３０１＿１，３０１＿２，・・・，３０１＿Ｎを備える。なお、カウンターとは、メモリに格納されている最新のカウンター値を参照して、＋１をカウントアップしたカウンター値を上書きして更新していくことによって、カウンター値を出力する処理構成をいう。
【００４４】
これらカウンター３０１＿１，３０１＿２，・・・，３０１＿Ｎは、予め決められたＣＡＮ−ＩＤに対応するデータの暗号化および復号を、共通のカンンター値を出力するカウンターである。
例えば、装置Ｍ１＿１が、カウンター３０１＿１から出力されるカウンター値に基づき暗号文データを生成し、ＣＡＮ−ＩＤ＝００１あるいは００２を含む暗号文データを他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎに送信したとする。
【００４５】
ここで、装置Ｍ１＿２は、ＣＡＮ−ＩＤ＝００１あるいは００２を含む暗号文データを受信すると、自装置のカウンター３０１＿２から出力されるカウンター値に基づき、暗号文データに含まれる暗号文を復号すると仮定する。つまり、ＣＡＮ−ＩＤ＝００１あるいは００２を含む暗号文データについては、装置Ｍ１＿１がＣＴＲマスター（送信側装置１００）であって、他の装置Ｍ１＿２がＣＴＲスレーブ（受信側装置２００）であるとする。
一方、装置Ｍ１＿Ｎは、ＣＡＮ−ＩＤ＝００１を含む暗号文データを受信すると、自装置のカウンター３０１＿Ｎから出力されるカウンター値に基づき、暗号文データに含まれる暗号文を復号する。しかし、ＣＡＮ−ＩＤ＝００２を含む暗号文データを受信すると、装置Ｍ１＿Ｎは、暗号文データに含まれる暗号文を復号することなく、例えば廃棄するとする。つまり、ＣＡＮ−ＩＤ＝００１を含む暗号文データについては、装置Ｍ１＿１がＣＴＲマスター（送信側装置１００）であって、他の装置Ｍ１＿２がＣＴＲスレーブ（受信側装置２００）である。
【００４６】
（案１）
ここで、受信側装置２００である他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、受信した暗号文データからＣＡＮ−ＩＤを読み出し、読み出したＣＡＮ−ＩＤが自装置の復号対象であるか否かを判定する。受信した暗号文データが自装置の復号対象であると判定した場合、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、自装置のカウンター３０１＿２，・・・，３０１＿Ｎから出力されるカウンター値に基づき、暗号文データに含まれる暗号文を復号する。
一方、受信した暗号文データが自装置の復号対象でないと判定した場合、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、暗号文データに含まれる暗号文を復号することなく、例えば廃棄する。例えば、装置Ｍ１＿Ｎは、ＣＡＮ−ＩＤ＝００２を含む暗号文データを受信した場合、暗号文データは復号せずに破棄するが、自装置のカウンター３０１＿Ｎのカウンター値はカウントアップしておく。あるいは、この場合、装置Ｍ１＿Ｎは、受信した暗号文データからカウンタコントロールＣＣに含まれる情報を抽出し、自装置のカウンター３０１＿Ｎから出力されるカウンター値を補正するものであってもよい。
これにより、例えば、装置Ｍ１＿Ｎが、連続して複数のＣＡＮ−ＩＤ＝００２を含む暗号文データを受信した後、ＣＡＮ−ＩＤ＝００１を含む暗号文データを受信した場合であっても、自装置のカウンター３０１＿Ｎが出力するカウンター値と、ＣＴＲマスターである装置Ｍ１＿１のカウンター３０１＿１の出力するカウンター値とを、同期させることができる。
【００４７】
（案２）
また、装置Ｍ１＿１，Ｍ１＿２，・・・，Ｍ１＿Ｎのうちいずれか１つが、固定のＣＴＲマスターとなって、定期的に、カウンター値の全桁データを、ＣＴＲスレーブとなっている他の装置に送信するものであってもよい。例えば、装置Ｍ１＿１が固定のＣＴＲマスターである設定されている場合、装置Ｍ１＿１は、定期的に、カウンター値の全桁データを、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎのそれぞれに送信する。他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、それぞれ、受信したカウンター値の全桁データに基づいて、自装置のカウンター３０１＿２，・・・，３０１＿Ｎから出力されるカウンター値を補正する。つまり、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、自装置のカウンター３０１＿２，・・・，３０１＿Ｎから出力されるカウンター値を、受信したカウンター値と一致させる。これにより、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、自装置のカウンター３０１＿２，・・・，３０１＿Ｎが出力するカウンター値と、ＣＴＲマスターである装置Ｍ１＿１のカウンター３０１＿１の出力するカウンター値とを、同期させることができる。
【００４８】
なお、ＣＴＲスレーブとなっている他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎでは、カウンター値を利用する場合、装置Ｍ１＿１からカウンター値の全桁データを受信するまで、自装置のカウンター３０１＿２，・・・，３０１＿Ｎから出力されるカウンター値の利用を中断しておくものであってもよい。つまり、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、装置Ｍ１＿１からカウンター値の全桁データを受信するのを待って、カウンター値を利用する。例えば、最新のカウンター値の全桁データを受信した場合、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、自装置のカウンター３０１＿２，・・・，３０１＿Ｎから出力されるカウンター値と受信したカウンター値とが一致するか否かを判定する。一致しない場合、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、自装置のカウンター３０１＿２，・・・，３０１＿Ｎから出力されるカウンター値を補正する。この処理の後、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎでは、カウンター値を利用する。
【００４９】
（案３）
さらに、案２において、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、装置Ｍ１＿１からカウンター値の全桁データを受信するのを待って、カウンター値を利用する場合、カウンター値の利用タイミングが遅れる場合がある。このような場合、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、カウンター値の利用の必要が生じた場合、ＣＴＲマスターである装置Ｍ１＿１に対してカウンター値の全桁データの送信を要求する。これにより、他の装置Ｍ１＿２，・・・，Ｍ１＿Ｎは、最新のカウンター値を取得し、同期させた後で、迅速に、カウンター値を利用した処理を実行することができる。
【００５０】
［第３実施形態］
本発明に係る第３実施形態について図面を参照して詳細に説明する。図５は、第３実施形態に係る暗号システムの構成の一例を示すブロック図である。
図５に示す通り、本実施形態に係る暗号システム３は、バスを介してそれぞれ通信可能に接続されているＮ個の装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎを備える。これら装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎは、第１実施形態に係る送信側装置１００および受信側装置２００として機能する装置である。また、これら装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎは、それぞれ、送信側装置１００のカウンター１０１に相当するカウンター４０１＿１，４０１＿２，・・・，４０１＿Ｎを備える。また、装置Ｍ２＿２は、受信側装置２００のカウンター２０１に相当するカウンター４０２＿２を備える。装置Ｍ２＿Ｎは、受信側装置２００のカウンター２０１に相当するカウンター４０２＿Ｎ，４０３＿Ｎを備える。
【００５１】
カウンター４０２＿２は、装置Ｍ２＿１から受信した暗号文データを復号するために用いるカウンター値を保持しており、装置Ｍ２＿１のカウンター４０１＿１のカウンター値と同期するように補正される。例えば、第１実施形態において説明した通り、受信側装置２００である装置Ｍ２＿２は、送信側装置１００である装置Ｍ２＿１から受信した暗号文データからカウンタコントロールＣＣに含まれる情報を抽出し、自装置のカウンター４０２＿２が保持するカウンター値を補正するものであってもよい。
また、カウンター４０２＿Ｎは、装置Ｍ２＿１から受信した暗号文データを復号するために用いるカウンター値を保持しており、装置Ｍ２＿１のカウンター４０１＿１のカウンター値と同期するように補正される。カウンター４０３＿Ｎは、装置Ｍ２＿２から受信した暗号文データを復号するために用いるカウンター値を保持しており、装置Ｍ２＿２のカウンター４０１＿２のカウンター値と同期するように補正される。
【００５２】
このように、各装置毎に、暗号文を作成する際のカウンター値を保持する。つまり、装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎがそれぞれ送信側装置１００である場合に利用されるカウンター値が、一致していない。これにより、装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎのうちのいずれか１つのカウンター値が不正に見られた場合であっても、他の装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎにおいて利用されるカウンター値までは知られずにすむ。よって、セキュリティー性を向上させることができる。
なお、この場合、受信側装置２００として受信した暗号文データが、異なる装置の送信側装置１００から受信したデータであって、平文が同一である場合、受信側装置２００において利用するカウンター値を決定できないおそれがある。このようば問題を解決するため、装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎは、暗号文データを受信側装置２００に送信する際、自装置を他の装置と識別するための装置ＩＤを対応付けて、受信側装置２００に送信するものであってもよい。
【００５３】
また、カウンター４０１＿１，４０１＿２，・・・，４０１＿Ｎが保持するカウンター値は、不揮発性メモリに記憶されており、カウンター４０２＿２，４０２＿Ｎ，４０３＿Ｎが保持するカウンター値は、揮発性メモリに記憶されている。これにより、例えば、装置Ｍ２＿Ｎが保持するカウンター値が不正に見られた場合であっても、カウンター４０１＿１，４０１＿２が保持するカウンター値は、電源がＯＦＦされた際に消去されているため、流出することを防止することができ、セキュリティー性を向上させることができる。
【００５４】
［第４実施形態］
本発明に係る第４実施形態について図面を参照して詳細に説明する。図６は、第４実施形態に係る暗号システムの構成の一例を示すブロック図である。
図６に示す通り、本実施形態に係る暗号システム４は、バスを介してそれぞれ通信可能に接続されているＮ個の装置Ｍ３＿１，Ｍ３＿２，・・・，Ｍ３＿Ｎを備える。これら装置Ｍ３＿１，Ｍ３＿２，・・・，Ｍ３＿Ｎは、第１実施形態に係る送信側装置１００および受信側装置２００として機能する装置である。
装置Ｍ３＿１は、送信側装置１００のカウンター１０１に相当するカウンター５０１＿１，５０２＿１を備える。装置Ｍ３＿２は、送信側装置１００のカウンター１０１に相当するカウンター５０２＿２を備える。これら送信側装置１００のカウンター１０１に相当するカウンター５０１＿１，５０２＿１，５０２＿２は、それぞれ、データに応じたカウンター値を保持する。なお、本実施形態にでは、説明簡略化のため、各装置装置Ｍ３＿１，Ｍ３＿２，・・・，Ｍ３＿Ｎからはそれぞれ異なるデータを暗号化して送信する例について説明する。
また、装置Ｍ３＿２は、受信側装置２００のカウンター２０１に相当するカウンター５０１＿２を備える。装置Ｍ３＿Ｎは、受信側装置２００のカウンター２０１に相当するカウンター５０１＿Ｎ，５０２＿Ｎを備える。
【００５５】
カウンター５０１＿２は、装置Ｍ３＿１から受信した、ＣＡＮ−ＩＤ＝００１のデータの暗号文を含む暗号文データを復号するために用いるカウンター値を保持しており、装置Ｍ３＿１のカウンター５０１＿１のカウンター値と同期するように補正される。なお、補正方法については、例えば、第１実施形態において説明した通り、受信側装置２００である装置Ｍ３＿２は、送信側装置１００である装置Ｍ３＿１から受信した暗号文データからカウンタコントロールＣＣに含まれる情報を抽出し、自装置のカウンター５０１＿２が保持するカウンター値を補正するものであってもよい。
また、カウンター５０１＿Ｎは、装置Ｍ３＿２から受信した、ＣＡＮ−ＩＤ＝００２のデータの暗号文を含む暗号文データを復号するために用いるカウンター値を保持しており、装置Ｍ３＿２のカウンター５０２＿２のカウンター値と同期するように補正される。カウンター５０２＿Ｎは、装置Ｍ３＿１から受信した、ＣＡＮ−ＩＤ＝００３のデータの暗号文を含む暗号文データを復号するために用いるカウンター値を保持しており、装置Ｍ３＿１のカウンター５０２＿１のカウンター値と同期するように補正される。
【００５６】
このように、装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎは、データの種類に応じて、それぞれ異なるカウンター値を保持している。つまり、装置Ｍ２＿１，Ｍ２＿２，・・・，Ｍ２＿Ｎが、複数の異なるデータを暗号化して送信する送信側装置１００である場合、送信側装置１００のカウンター１０１に相当するカウンターをデータ毎に備えている。また、本実施形態のように、同一のＣＡＮ−ＩＤのデータについて複数の装置を送信側装置１００としない場合、データ毎に、装置Ｍ３＿１，Ｍ３＿２，・・・，Ｍ３＿Ｎがそれぞれ送信側装置１００として利用するカウンター値が、互いに一致していない。
これにより、装置Ｍ３＿１，Ｍ３＿２，・・・，Ｍ３＿Ｎのうちのいずれか１つのカウンター値が不正に見られた場合であっても、他の装置Ｍ３＿１，Ｍ３＿２，・・・，Ｍ３＿Ｎにおいて利用されるカウンター値までは知られずにすむ。よって、セキュリティー性を向上させることができる。
また、データ毎にカウンター値を決定することができる。よって、高いセキュリティーが求められるデータに対しては、カウンター値のビット長を長くし、低いセキュリティーでよいデータに対しては、カウンター値のビット長を短くすることができる。これにより、高効率に暗号化および復号の処理を実行できるとともに、カウンター値の同期処理の効率についても向上させることができる。
【００５７】
［カウンター値の初期化の一例］
次に、上述の実施形態に適用できる、ＣＴＲ値＿２の初期化の一例について説明する。
初めに、図３に示すステップＳＴ１０１に相当する処理の一例について説明する。
送信側装置１００は、初期値であるＣＴＲ値＿１の全桁データを送信するための専用ＩＤを用いて、このＣＴＲ値＿１の全桁データを受信側装置２００に送信する。なお、専用ＩＤとは、データの種類を示す固有の識別情報である。
このＣＴＲ値＿１の全桁データのデータフレームの一例を、図７に示す。図７は、ＣＴＲ値＿１の全桁データのデータフレームの一例を示す図である。
図７に示す通り、ＣＴＲ値＿１の全桁データのデータフレームは、ＩＤ、ＤＬＣ、データの順番で送出されるデータである。ＩＤは、ＣＴＲ値＿１の全桁データに割り当てられた専用ＩＤである。ＤＬＴは、データのビット長を示す。データは、ＣＴＲ管理番号とＣＴＲ全桁データとを含む。ＣＴＲ管理番号は、システムで利用するカウンター値が複数ある場合に、装置あるいはデータに対応するＣＴＲ値＿１であるのかを識別するための識別情報である。本実施形態において、ＣＴＲ管理番号は、例えば、１１ｂｉｔのデータである。ＣＴＲ全桁データは、ＣＴＲ値＿１の全桁の値を示す情報であって、例えば、３２ｂｉｔである。
なお、ＣＴＲ全桁データのビット長を削ることはできないため、データフレームのビット長を抑えるためには、ＩＤのビット長をできるだけ小さい値とした方がよい。
【００５８】
次に、図３に示すステップＳＴ１０８に相当する処理が実行されなかった場合の処理の一例について説明する。つまり、送信側装置１００から送信されるＣＴＲ値＿１の全桁データを受信側装置２００が受信できなかった場合の処理の一例である。
例えば、送信側装置１００が、１回だけＣＴＲ値＿１の全桁データを送信するとすると、受信側装置２００がこのデータを受信できない場合がある。例えば、受信側装置２００側で、この全桁データよりも優先度の高いデータを受信している場合や、優先度の高い処理を実行している場合などがある。
このような場合に備え、送信側装置１００は、ＣＴＲ値＿１の全桁データを受信側装置２００に対して、２回以上送信する。
これにより、受信側装置２００でＣＴＲ値＿１の全桁データを取りこぼす事態を防止することができる。
【００５９】
また、本発明はこれに限られず、例えば、受信側装置２００から、ＣＴＲ値＿１の全桁データの送信を要求するものであってもよい。
例えば、受信側装置２００は、起動後一定時間が経過してもなお、必要なＣＴＲ値＿１の全桁データを得られていない場合、図８に示すような、ＣＴＲ全桁データ要求フレームを送信側装置１００に送信するものであってもよい。図８は、ＣＴＲ全桁データ要求フレームの一例を示す図である。
図８に示す通り、ＣＴＲ全桁データ要求フレームは、ＩＤ、ＤＬＣ、データの順番で送出されるデータである。
ＩＤは、ＣＴＲ値＿１の全桁データの送信を要求するリクエストデータに割り当てられた専用ＩＤである。データは、ＣＴＲ管理番号と受信側装置２００の装置番号とを含む。このＣＴＲ管理番号は、例えば１１ｂｉｔのデータであり、受信側装置２００の装置番号は、例えば１１ｂｉｔのデータである。
【００６０】
あるいは、ＣＴＲマスターである送信側装置１００が、ＣＴＲスレーブである受信側装置２００の装置ＩＤを保持しておき、全ての受信側装置２００にＣＴＲ値＿１の全桁データ（初期値）を送信したか否かを確認し、確認が取れるまでＣＴＲ値＿１の全桁データを送信するものであってもよい。具体的に説明すると、送信側装置１００は、ＣＴＲ値＿１の全桁データを受信側装置２００に対して送信する。受信側装置２００は、ＣＴＲ値＿１の全桁データを受信した場合、例えば、図９に示すようなＣＴＲ全桁データ受信Ａｃｋｎｏｗｌｅｄｇｅフレームを送信側装置１００に送信し、ＣＴＲ値＿１の全桁データの受信に成功したことを送信側装置１００に通知する。図９は、ＣＴＲ全桁データ受信Ａｃｋｎｏｗｌｅｄｇｅフレームの一例を示す図である。
図９に示す通り、ＣＴＲ全桁データ受信Ａｃｋｎｏｗｌｅｄｇｅフレームは、ＩＤ、ＤＬＣ、データの順番で送出されるデータである。
ＩＤは、ＣＴＲ値＿１の全桁データの受信を通知するＡｃｋｎｏｗｌｅｄｇｅデータに割り当てられた専用ＩＤである。データは、ＣＴＲ管理番号と受信側装置２００の装置番号とを含む。このＣＴＲ管理番号は、例えば１１ｂｉｔのデータであり、受信側装置２００の装置番号は、例えば１１ｂｉｔのデータである。
【００６１】
また、ＣＡＮ−ＢＵＳ上に不正な装置が接続され、不正なＣＴＲ値＿１の全桁データが送出されるおそれがある。この場合、受信側装置２００に不正なＣＴＲ値＿１の初期値が設定されてしまい、不正は制御に利用される虞がある。
この問題に対して、例えば、送信側装置１００は、初期値を送信する際、図１０に示すような、ＭＡＣ値をＣＴＲ全桁データフレームの最後につけたデータを受信側装置２００に送信する。図１０は、ＭＡＣ付き暗号化ＣＴＲ全桁データフレームの一例を示す図である。
図１０に示す通り、ＭＡＣ付き暗号化ＣＴＲ全桁データフレームは、ＩＤ、ＤＬＣ、データの順番で送出されるデータである。
ＩＤは、ＣＴＲ値＿１の全桁データに割り当てられた専用ＩＤである。データは、ＣＴＲ管理番号と、ＥＣＢモードで暗号化されたＣＴＲ値＿１の全桁データと、ＭＡＣ値とを含む。このＣＴＲ管理番号は、例えば１１ｂｉｔのデータであり、ＥＣＢモードで暗号化されたＣＴＲ値＿１の全桁データは、例えば５（１＋４）ｂｉｔであり、ＭＡＣ値は、例えば４８ｂｉｔである。なお、送信側装置１００は、受信側装置２００と共有するＫＥＹ値を用いて、ＣＴＲ値＿１の全桁データをＥＣＢモードで暗号化する。受信側装置２００は、このＣＴＲ全桁データフレームを受信した場合、ＭＡＣ検証を行うことによって、不正な受信側装置２００から受信したＣＴＲ全桁データフレームに基づき、カウンター２０１が初期化してしまうことを防止することができる。
なお、本発明はこれに限られず、ＭＡＣ値だけをデータ内に含める構成であってもよく、ＥＣＢモードでＣＴＲ値＿１の全桁データを暗号化するだけの構成であってもよい。
【００６２】
なお、本発明は上記構成および機能に限られず、以下のような構成および機能を実現するものであってもよい。
例えば、送信側装置１００の暗号関数処理部１３１と、受信側装置２００の暗号関数処理部２３１とは、それぞれ、カウンター１０１あるいはカウンター２０１のＣＴＲ値＿１あるいはＣＴＲ値＿２とＫＥＹ値に基づき、暗号化処理あるいは復号化処理毎に、ＭＡＳＫ＿１あるいはＭＡＳＫ＿２を算出すると説明した。しかし、本発明はこれに限られず、暗号関数処理部１３１あるいは暗号関数処理部２３１は、それぞれＣＴＲ値＿１あるいはＣＴＲ値＿２に対応するＭＡＳＫ＿１あるいはＭＡＳＫ＿２を、ＫＥＹ値毎に予め算出しておき、算出結果を記憶部１０２あるいは記憶部２０２に格納しておくものであってもよい。
例えば、送信側装置１００や受信側装置２００において、十分なアイドル時間がある場合、予めメモリの許す範囲において、暗号関数処理部１３１あるいは暗号関数処理部２３１は、それぞれ、将来使用されるであろうＣＴＲ値＿１とＭＡＳＫ＿１のペア、あるいは、ＣＴＲ値＿２とＭＡＳＫ＿２のペアを計算で求めておき、それぞれ、記憶部１０２あるいは記憶部２０２に格納しておく。これらペアの値をプールしておくことによって、暗号化処理あるいは復号化処理中に、演算負荷の高いＭＡＳＫ＿１あるいはＭＡＳＫ＿２の演算処理（Ｅｎｃｒｙｐｔｉｏｎ処理）を実行せずに済む。つまり、ＣＴＲ値とＭＡＳＫの対応テーブルを参照して、ＣＴＲ値＿１あるいはＣＴＲ値＿２に対応するＭＡＳＫ＿１あるいはＭＡＳＫ＿２を読み出すだけでよいため、暗号化処理あるいは復号化処理における処理負荷を軽減することができる。よって、暗号化処理あるいは復号化処理に伴う処理遅延を大幅に軽減することができる。
【００６３】
また、本実施の形態に係る送信側装置１００および受信側装置２００は、内部にコンピュータシステムを有している。そして、動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいう「コンピュータシステム」とは、ＣＰＵ及び各種メモリやＯＳ、周辺機器等のハードウェアを含むものである。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
【００６４】
また、各ステップを実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、また、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、各処理を行ってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００６５】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。
さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６６】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【符号の説明】
【００６７】
１  暗号システム
１００  送信側装置
１０１  カウンター
１０２  記憶部
１０３  暗号部
１０４  通信部
１０５  カウンター値補正部
１３１  暗号関数処理部
１３２  マスク処理部
１３３  排他的論理和計算部
１３４  暗号文データ生成部
２００  受信側装置
２０１  カウンター
２０２  記憶部
２０３  復号部
２０４  通信部
２０５  カウンター値補正部
２３１  暗号関数処理部
２３２  マスク処理部
２３３  排他的論理和計算部
２３４  暗号文データ生成部
【図１】
2014168216.tif 000003
【図２】
2014168216.tif 000004
【図３】
2014168216.tif 000005
【図４】
2014168216.tif 000006
【図５】
2014168216.tif 000007
【図６】
2014168216.tif 000008
【図７】
2014168216.tif 000009
【図８】
2014168216.tif 000010
【図９】
2014168216.tif 000011
【図１０】
2014168216.tif 000012