(57)【要約】  本発明に係る通信装置は、送信側の通信装置が再起動等された場合でも、通信装置間の鍵共有を再度することなく、短時間で通信装置間のデータ送受信を再開することを目的とする。  本発明に係る通信装置は、カウンタ値を記憶する揮発性メモリと、カウンタ値が格納されたデータを作成する作成部と、データを他の通信装置に送信する通信部と、通信部のデータ送信毎に、カウンタ値を揮発性メモリに更新して記憶させる記憶指示部と、不揮発性メモリとを備え、カウンタ値は通信部のデータ送信毎に加算され、記憶指示部は所定間隔毎にカウンタ値を不揮発性メモリに記憶させ、作成部は通信装置が再起動された場合、不揮発性メモリに記憶されているカウンタ値に所定値を加算した値をデータに格納する。
2014147934.tif 000002
【特許請求の範囲】
【請求項１】
他の通信装置にデータフレームを送信する通信装置であって、
揮発性のメモリであり、前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を記憶する第１のメモリと、
前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成するフレーム作成部と、
前記データフレームを前記他の通信装置に送信する通信部と、
前記通信部が前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させる記憶指示部と、
不揮発性のメモリである第２のメモリと、を備え、
前記カウンタ値は、前記通信部が前記データフレームを送信するごとに加算され、
前記記憶指示部は、所定の間隔ごとに、前記データフレームに格納された前記カウンタ値を前記第２のメモリに記憶させ、
前記フレーム作成部は、前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納する、
通信装置。
【請求項２】
前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、前記通信部が送信する前記データフレームに格納される前記カウンタ値が所定値増加するごととする、
請求項１に記載の通信装置。
【請求項３】
前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、前記通信部が前記データフレームを所定の回数送信するごととする、
請求項１に記載の通信装置。
【請求項４】
前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、所定の時間とする、
請求項１に記載の通信装置。
【請求項５】
前記通信装置が再起動された場合、前記フレーム作成部が、前記データフレームに格納する値として、前記第２のメモリから読み出した前記カウンタ値に加算する所定値は、前記記憶指示部が前記カウンタ値を前記第２のメモリに記憶させる所定の間隔に、増加した前記カウンタ値の増加分とする、
請求項１〜４のいずれか１項に記載の通信装置。
【請求項６】
前記通信装置が再起動された場合、前記フレーム作成部が、前記データフレームに格納する値として、前記第２のメモリから読み出した前記カウンタ値に加算する所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とにより算定する、
請求項１〜４のいずれか１項に記載の通信装置。
【請求項７】
前記所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とを乗じた値とする、
請求項６に記載の通信装置。
【請求項８】
前記通信装置が再起動された場合、前記フレーム作成部が、前記データフレームに格納する値として、前記第２のメモリから読み出した前記カウンタ値に加算する所定値は、前記記憶指示部が前記カウンタ値を前記第２のメモリに記憶させる所定の間隔に、増加した前記カウンタ値の増加分よりも小さい数とする、
請求項１〜４のいずれか１項に記載の通信装置。
【請求項９】
前記通信部が送信する前記データフレームが前記他の通信装置に認証されない場合、前記第２のメモリから読み出した前記カウンタ値に、前記所定値よりも大きい値を加算する、
請求項８に記載の通信装置。
【請求項１０】
前記カウンタ値を前記第２のメモリに記憶させる所定の間隔の指示を受け付ける記憶間隔受信部を備える、
請求項１〜４のいずれか１項に記載の通信装置。
【請求項１１】
他の通信装置にデータフレームを送信する通信装置が実行する、データフレームの通信方法であって、
前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を揮発性のメモリである第１のメモリに記憶し、
前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成し、
前記データフレームを前記他の通信装置に送信し、
前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させ、
前記データフレームを送信するごとに前記カウンタ値を加算し、
所定の間隔ごとに、前記データフレームに格納された前記カウンタ値を前記第２のメモリに記憶させ、
前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納する、
通信方法。
【請求項１２】
通信装置から、他の通信装置にデータフレームを送信する通信システムであって、
揮発性のメモリであり、前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を記憶する第１のメモリと、
前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成するフレーム作成部と、
前記データフレームを前記他の通信装置に送信する通信部と、
前記通信部が前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させる記憶指示部と、
不揮発性のメモリである第２のメモリと、を備え、
前記フレーム作成部は、前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納する、通信装置と、
前記通信装置から送信される前記データフレームを受信し、受信した前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているかを認証する、他の通信装置と、
を備える通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置間におけるデータ通信において、通信データの漏洩や改ざん、なりすましを防止する通信装置、通信システム及び通信方法に関する。
【背景技術】
【０００２】
従来、通信装置間で通信を行ってデータを送受信するシステムが検討されている。このようなシステムにおいて、通信装置間でデータ通信を実行する場合、セキュリティ確保が重要な問題である。特に、外部からのアクセスが可能な公開通信路を利用した通信を行なう場合等には、データ漏洩や改ざん、成りすましによる攻撃等にさらされる可能性が高まる。【０００３】
このような問題に対して、キャプチャした暗号データをそのまま再使用することで送信者に成りすますリプレイ攻撃を防止するために、送受信それぞれの通信装置においてカウンタ値を用い、自己のカウンタ値と受信するカウンタ値とを比較することによって、通信装置の同期確認を行うシステムが知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１３３６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のシステムでは、送信側のエンティティが再起動等された場合、送信側のエンティティが記憶部に記憶しているカウンタ値が初期化されるため、受信側のエンティティで認証を行うことができなくなる。また、再度の認証を行うためには、送受信それぞれのエンティティの初期化処理が必要となり、時間がかかる。【０００６】
本発明は、上記課題に鑑みてなされたものであって、送信側の通信装置が再起動等された場合でも、通信装置間の鍵共有を再度することなく、短時間で通信装置間のデータ送受信を再開することができる通信装置、通信システム、及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
前記従来の課題を解決するために、本発明の一態様に係る通信装置は、他の通信装置にデータフレームを送信する通信装置であって、揮発性のメモリであり、前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を記憶する第１のメモリと、前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成するフレーム作成部と、前記データフレームを前記他の通信装置に送信する通信部と、前記通信部が前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させる記憶指示部と、不揮発性のメモリである第２のメモリと、を備え、前記カウンタ値は、前記通信部が前記データフレームを送信するごとに加算され、前記記憶指示部は、所定の間隔ごとに、前記データフレームに格納された前記カウンタ値を前記第２のメモリに記憶させ、前記フレーム作成部は、前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納する。【０００８】
尚、これらの全般的または包括的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なＣＤ−ＲＯＭ等の記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されても良い。
【発明の効果】
【０００９】
本態様によれば、送信側の通信装置が再起動等された場合でも、通信装置間の鍵共有を再度することなく、短時間で通信装置間のデータ送受信を再開することができる。また、不揮発メモリへの書き込み頻度を少なくすることができる。その結果、通信装置の不揮発メモリの劣化を抑え、送信側の通信装置が故障する可能性を低減することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る通信装置の機能ブロック図の例である。
【図２】実施の形態１に係る通信装置間で送受信されるデータフレームの構成例を表す図である。
【図３】実施の形態１に係る通信装置間の鍵共有の動作を示すフローチャートである。
【図４】実施の形態１に係る通信装置間の通信シーケンスの例である。
【図５】実施の形態１に係る通信装置（送信側）の動作を示すフローチャートである。
【図６】実施の形態１に係る通信装置（送信側）が再起動した後のデータフレーム送信処理を示すフローチャートである。
【図７】実施の形態１に係る通信装置（受信側）の動作を示すフローチャートである。
【図８】実施の形態２に係る通信装置の機能ブロック図の例である。
【図９】実施の形態２に係る通信装置間の通信シーケンスの例である。
【発明を実施するための形態】
【００１１】
（１）本発明の一態様に係る通信装置は、他の通信装置にデータフレームを送信する通信装置であって、揮発性のメモリであり、前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を記憶する第１のメモリと、前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成するフレーム作成部と、前記データフレームを前記他の通信装置に送信する通信部と、前記通信部が前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させる記憶指示部と、不揮発性のメモリである第２のメモリと、を備え、前記カウンタ値は、前記通信部が前記データフレームを送信するごとに加算され、前記記憶指示部は、所定の間隔ごとに、前記データフレームに格納された前記カウンタ値を前記第２のメモリに記憶させ、前記フレーム作成部は、前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納する。
【００１２】
（２）（１）において、例えば、前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、前記通信部が送信する前記データフレームに格納される前記カウンタ値が所定値増加するごととしても良い。
【００１３】
これにより、通信装置の不揮発メモリへの書き込み頻度を減らすことができる。その結果、不揮発メモリの劣化を抑え、送信側の通信装置が故障する可能性を低減することができる。
【００１４】
（３）（１）において、例えば、前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、前記通信部が前記データフレームを所定の回数送信するごととしても良い。
これにより、通信装置の不揮発メモリへの書き込み頻度を減らすことができる。
【００１５】
これにより、不揮発メモリの劣化を抑え、送信側の通信装置が故障する可能性を低減することができる。
【００１６】
（４）（１）において、例えば、前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、所定の時間としても良い。
【００１７】
これにより、送信側の通信装置が再起動等された場合でも、通信装置間の鍵共有を再度することなく、短時間で通信装置間のデータ送受信を再開することができる。
【００１８】
（５）（１）〜（４）のいずれか１つにおいて、例えば、前記通信装置が再起動された場合、前記フレーム作成部が、前記データフレームに格納する値として、前記第２のメモリから読み出した前記カウンタ値に加算する所定値は、前記記憶指示部が前記カウンタ値を前記第２のメモリに記憶させる所定の間隔に、増加した前記カウンタ値の増加分としても良い。
【００１９】
これにより、送信側の通信装置が再起動等された場合でも、短時間で通信装置間のデータ送受信を再開することができる。
【００２０】
（６）（１）〜（４）のいずれか１つにおいて、例えば、前記通信装置が再起動された場合、前記フレーム作成部が、前記データフレームに格納する値として、前記第２のメモリから読み出した前記カウンタ値に加算する所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とにより算定しても良い。
【００２１】
（７）（６）において、例えば、前記所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とを乗じた値としても良い。
【００２２】
これにより、揮発性メモリに記憶されるカウンタ値を余分に増やすことを防ぐことができる。更に、短時間で通信装置間のデータ送受信を再開することができる。
【００２３】
（８）（１）〜（４）のいずれか１つにおいて、例えば、前記通信装置が再起動された場合、前記フレーム作成部が、前記データフレームに格納する値として、前記第２のメモリから読み出した前記カウンタ値に加算する所定値は、前記記憶指示部が前記カウンタ値を前記第２のメモリに記憶させる所定の間隔に、増加した前記カウンタ値の増加分よりも小さい数としても良い。
【００２４】
これにより、揮発性メモリに記憶されるカウンタ値を余分に増やすことを防ぐことができる。更に、短時間で通信装置間のデータ送受信を再開することができる。
【００２５】
（９）（８）において、例えば、前記通信部が送信する前記データフレームが前記他の通信装置に認証されない場合、前記第２のメモリから読み出した前記カウンタ値に、前記所定値よりも大きい値を加算しても良い。
【００２６】
これにより、揮発性メモリに記憶されるカウンタ値を余分に増やすことを防ぐことができる。更に、短時間で通信装置間のデータ送受信を再開することができる。
【００２７】
（１０）（１）〜（９）のいずれか１つにおいて、例えば、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔の指示を受け付ける記憶間隔受信部を備えても良い。
【００２８】
これにより、各送信側の通信装置のデータフレーム送信時間が異なる場合でも、各送信側の通信装置は、適したタイミングでデータフレームを送信できる。
【００２９】
（１１）本発明の一態様に係る通信方法は、他の通信装置にデータフレームを送信する通信装置が実行する、データフレームの通信方法であって、前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を揮発性のメモリである第１のメモリに記憶し、前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成し、前記データフレームを前記他の通信装置に送信し、前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させ、前記データフレームを送信するごとに前記カウンタ値を加算し、所定の間隔ごとに、前記データフレームに格納された前記カウンタ値を前記第２のメモリに記憶させ、前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納しても良い。
【００３０】
（１２）本発明の一態様に係る通信システムは、通信装置から、他の通信装置にデータフレームを送信する通信システムであって、揮発性のメモリであり、前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を記憶する第１のメモリと、前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成するフレーム作成部と、前記データフレームを前記他の通信装置に送信する通信部と、前記通信部が前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させる記憶指示部と、不揮発性のメモリである第２のメモリと、を備え、前記フレーム作成部は、前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納する、通信装置と、前記通信装置から送信される前記データフレームを受信し、受信した前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているかを認証する、他の通信装置と、を備えても良い。
【００３１】
以下、本願発明の実施の形態について、図面を用いて説明する。
【００３２】
尚、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。
【００３３】
以下の実施の形態で示される数値、形状、構成要素、構成要素の配置位置及び接続形態、処理のステップ、ステップの順序等は、一例である。したがって、これらの各形態により、本発明が限定されるものではない。また、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【００３４】
＜実施の形態１＞
実施の形態１に係る通信装置は、揮発性メモリとは別に不揮発性メモリを備え、所定の間隔でカウンタ値を不揮発性メモリに記憶させる通信装置である。そして、実施の形態１に係る通信装置は、再起動時に、当該不揮発性メモリに記憶されているカウンタ値を読み出し、所定値を加算した値を、データフレームに格納し、他の通信装置に送信することができる。
【００３５】
図１は、実施の形態１に係る通信装置１及び通信装置２の機能ブロック図の例を表す。
【００３６】
送信側の通信装置である通信装置１は、カウンタ算定部１０１と、フレーム作成部１０２と、通信部１０３と、記憶指示部１０４と、第１のメモリ１０５と、第２のメモリ１０６とを含む。
【００３７】
カウンタ算定部１０１は、データフレームのヘッダ２０１内に格納するフレームカウンタ値を算定する。具体的には、第１のメモリ１０５または第２のメモリ１０６に記憶されているフレームカウンタ値を読み出し、当該フレームカウンタ値に１を加算して、データフレームのヘッダ２０１内に格納するフレームカウンタ値を算定する。
【００３８】
フレーム作成部１０２は、カウンタ算定部１０１が算定するフレームカウンタ値等を用いてヘッダ２０１を生成する。また、フレーム作成部１０２は、改ざん防止のための改ざん検知コードをヘッダ２０１の一部と暗号化前の通信データを基に生成する。更に、フレーム作成部１０２は、通信データ及び改ざん検知コードを暗号化して暗号化ペイロード２０２、暗号化改ざん検知コード２０３を生成し、データフレームを作成する。尚、フレーム作成部１０２が、カウンタ算定部１０１の機能を果たしても良い。このデータフレームの内容については、図２を用いて説明する。
【００３９】
通信部１０３は、フレーム作成部１０２が作成するデータフレームを通信装置２に送信する。
【００４０】
記憶指示部１０４は、通信部１０３がデータフレームを通信装置２に送信するごとに、送信されるデータフレームに格納されているフレームカウンタ値を、第１のメモリ１０５に記憶させる。また、記憶指示部１０４は、通信部１０３が送信する前記データフレームに格納される前記カウンタ値が所定値増加するごとに、送信されるデータフレームに格納されているフレームカウンタ値を、第２のメモリ１０６に記憶させる。記憶指示部１０４が、フレームカウンタ値を第２のメモリ１０６に記憶させる間隔は、通信部１０３がデータフレームを通信装置２に送信する一定の回数ごとや不定の回数ごとであっても良い。また、一定の時間や不定の時間ごとであっても良く、これらの例に限られない。
【００４１】
第１のメモリ１０５は、揮発性のメモリであり、通信装置１の電源が切断された場合、または、通信装置１が再起動等された場合、当該記憶内容が失われる。
【００４２】
第２のメモリ１０６は、不揮発性のメモリであり、通信装置１の電源が切断された場合、または、通信装置１が再起動等された場合でも、当該記憶内容は保持される。
【００４３】
受信側の通信装置である通信装置２は、通信部１１１と、第３のメモリ１１２と、カウンタ判定部１１３とを含む。
【００４４】
通信部１１１は、カウンタ判定部１１３を含む。通信部１１１は、通信装置１から送信されるデータフレームを受信する。また、通信部１１１は、新たに受信したデータフレームが正しい通信装置１から送信されたデータフレームであると認証した場合、通信装置１にＡＣＫを送信する。
【００４５】
第３のメモリ１１２は、過去に同じ通信装置１から受信したデータフレームに格納されたフレームカウンタ値を記憶している。
【００４６】
カウンタ判定部１１３は、通信部１１１が新たに受信したデータフレームのヘッダ２０１に格納されているフレームカウンタ値と、第３のメモリ１１２が記憶しているフレームカウンタ値とを取得する。そして、カウンタ判定部１１３は、新たに受信したデータフレームに格納されているフレームカウンタ値と、記憶している過去のフレームカウンタ値との比較を行う。このとき、新たに受信したデータフレームに格納されているフレームカウンタ値が、記憶している過去のフレームカウンタ値以下の場合、通信部１１１は、新たに受信したデータフレームを破棄する。新たに受信したデータフレームに格納されているフレームカウンタ値が、記憶している過去のフレームカウンタ値よりも大きい場合、通信部１１１は、暗号化ペイロード２０２と暗号化改ざん検知コード２０３を復号する。通信部１１１は、フレームカウンタ値を含むヘッダの一部と復号されたペイロードを基に算出した値と、復号された改ざん検知コードとが一致すると、新たに受信したデータフレームは正しい通信装置１から送信されたデータフレームであると認証する。
【００４７】
これにより、通信データの漏洩や改ざん、なりすましを防止して、通信装置間における安全なデータ通信を行うことができる。
【００４８】
尚、通信装置１は、通信装置２の構成を備える構成としても良く、その場合、同一の構成である通信装置１間で、データ通信を行うことができる。
【００４９】
図２は、本発明の実施の形態１に係る通信装置間で送受信されるデータフレームの構成例を表す図である。図２において、データフレームは、ヘッダ２０１と、暗号化ペイロード２０２と、暗号化改ざん検知コード２０３とを含む。
【００５０】
ヘッダ２０１は、フレームカウンタ値と、通信装置１のアドレス情報とを含む。
【００５１】
暗号化ペイロード２０２は、フレームカウンタ値や通信装置１のアドレス情報等から生成されるノンスを使用して、ＡＥＳ−Ｃｏｕｎｔｅｒ  ｗｉｔｈ  ＣＢＣ−ＭＡＣ（ＡＥＳ―ＣＣＭ）等の共通鍵暗号方式により通信データを暗号化したものである。
【００５２】
暗号化改ざん検知コード２０３は、暗号化前の通信データとフレームカウンタ値を含むヘッダ２０１の一部に基づいて算出された改ざん検知コードを通信データと同様に暗号化したものであり、データの完全性を保証するために用いられる。
【００５３】
以下、実施の形態１に係る通信装置１のデータ通信における動作について、図３〜図７を用いて説明する。
【００５４】
図３は、実施の形態１に係る通信装置間の鍵共有の動作を示すフローチャートを表す。
【００５５】
まず、通信装置１と通信装置２との間で鍵共有のプロトコルを行い（Ｓ３０１）、利用する暗号方式用の鍵を共有する（Ｓ３０２）。
【００５６】
その後、データフレームに格納されるフレームカウンタ値をリセットし（Ｓ３０３）、データフレームを送受信する（Ｓ３０４）。
【００５７】
通信装置２において、フレームカウンタ値がオーバーフローする可能性があると判断した場合（Ｓ３０５でＹＥＳ）、Ｓ３０１に戻り、鍵共有のプロトコルを再度行い、共通鍵を更新し、フレームカウンタ値をリセットしても良い。共通鍵の更新のトリガーはこの例に限られず、通信装置１から鍵共有のプロトコルを再度行うようにしても良い。
【００５８】
図４は、実施の形態１に係る通信装置間の通信シーケンスの例を表す。
【００５９】
ここでは、カウンタ算定部１０１が、フレームカウンタ値に加算する値は１とする。
【００６０】
また、ここでは、記憶指示部１０４がフレームカウンタ値を第２のメモリ１０６に記憶させる間隔は、フレームカウンタ値が一定値α増加するごととするが、この例に限られない。即ち、記憶指示部１０４がフレームカウンタ値を第２のメモリ１０６に記憶させる間隔は、通信部１０３がデータフレームを所定の回数送信するごととしても良く、所定の時間（例えば１分、１時間等）ごととしても良い。
【００６１】
また、ここでは、通信装置１の再起動時に、カウンタ算定部１０１が第２のメモリ１０６が記憶しているフレームカウンタ値に加算する値（β）は、α以上の一定値とするが、この例に限られない。βの他のパターンは後述する。
【００６２】
まず、通信部１０３は、フレームカウンタ値Ｎ−１を格納したデータフレームを通信装置２に送信する（Ｓ４０１）。このとき、記憶指示部１０４は、送信したデータフレームに格納されているフレームカウンタ値Ｎ−１を、第１のメモリ１０５に記憶させる（Ｓ４０２）。
【００６３】
次に、通信部１０３は、フレームカウンタ値Ｎを格納したデータフレームを通信装置２に送信する（Ｓ４０３）。このとき、第２のメモリ１０６に記憶されているフレームカウンタ値はＮ−αであり、通信部１０３が通信装置２に送信するデータフレームに格納されるフレームカウンタ値Ｎとの差がαであるとする。このとき、記憶指示部１０４は、送信したデータフレームに格納されているフレームカウンタ値Ｎを、第１のメモリ１０５及び第２のメモリ１０６に記憶させる（Ｓ４０４）。
【００６４】
その後、Ｓ４０１と同様に、通信部１０３は、フレームカウンタ値Ｎ＋１を格納したデータフレームを通信装置２に送信する（Ｓ４０５）。このとき、記憶指示部１０４は、Ｓ４０２と同様に、送信したデータフレームに格納されているフレームカウンタ値Ｎ＋１を、第１のメモリ１０５に記憶させる（Ｓ４０６）。
【００６５】
ここで、通信装置１が再起動された場合（Ｓ４０７）、カウンタ算定部１０１は、第２のメモリ１０６に記憶されているフレームカウンタ値Ｎを読み出す。カウンタ算定部１０１は、読み出したフレームカウンタ値Ｎにβを加算して、データフレームのヘッダ２０１内に格納するフレームカウンタ値Ｎ＋βを算定する（Ｓ４０８）。
【００６６】
その後、Ｓ４０３と同様に、通信部１０３は、フレームカウンタ値Ｎ＋βを格納したデータフレームを通信装置２に送信する（Ｓ４０９）。このとき、記憶指示部１０４は、Ｓ４０４と同様に、送信したデータフレームに格納されているフレームカウンタ値Ｎ＋βを、第１のメモリ１０５及び第２のメモリ１０６に記憶させる（Ｓ４１０）。
【００６７】
図５は、実施の形態１に係る通信装置１（送信側）の動作を示すフローチャートを表す。
【００６８】
まず、通信装置１は、再起動されたか否か判定する（Ｓ５０１）。
【００６９】
通信装置１が再起動されていない場合（Ｓ５０１でＮＯ）、通信装置１がアプリケーション等の上位層からデータの送信要求を受けると、カウンタ算定部１０１は、第１のメモリ１０５からフレームカウンタ値を読み出す。そして、カウンタ算定部１０１は、読み出したフレームカウンタ値をインクリメントした値を新しいフレームカウンタ値として算定する（５０２）。
【００７０】
尚、通信装置１が再起動された場合（Ｓ５０１でＹＥＳ）の再起動時データフレーム送受信処理（Ｓ５０８）については、図６を用いて説明する。また、図５では、データフレーム送信処理の最初に、通信装置１が再起動されたか否かを判定しているが、この例に限られない。即ち、Ｓ５０２以降で通信装置１が再起動された場合には、それまでの処理を初期化してＳ５０８の処理を行うとしても良い。
【００７１】
フレーム作成部１０２は、Ｓ５０２で算定されたフレームカウンタ値等を含むヘッダ２０１、通信データを暗号化した暗号化ペイロード２０２、及び暗号化改ざん検知コード２０３の作成を行い、送信するデータフレームを作成する（Ｓ５０３）。
【００７２】
通信部１０３は、Ｓ５０３で作成されたデータフレームを通信装置２に送信する（Ｓ５０４）。
【００７３】
記憶指示部１０４は、送信したデータフレームに格納されるフレームカウンタ値を第１のメモリ１０５に記憶させる（Ｓ５０５）。
【００７４】
その後、記憶指示部１０４は、送信したデータフレームに格納されたフレームカウンタ値が、第２のメモリ１０６に記憶されている値からα以上増加したか否かを判定する（Ｓ５０６）。
【００７５】
送信したデータフレームに格納されたフレームカウンタ値が、第２のメモリ１０６に記憶されている値からα増加した場合（Ｓ５０６でＹＥＳ）、記憶指示部１０４は、送信したデータフレームに格納されたフレームカウンタ値を第２のメモリ１０６に記憶させる（Ｓ５０７）。
【００７６】
次に、図６を用いて、通信装置１（送信側）が再起動した後のデータフレーム送信処理を説明する。
【００７７】
尚、通信装置１が再起動されていない場合（Ｓ５０１でＹＥＳ）と同一の処理については、同一の符号を付し、その説明を省略する。
【００７８】
通信装置１がアプリケーション等の上位層からデータの送信要求を受けると、カウンタ算定部１０１は、第２のメモリ１０６からフレームカウンタ値を読み出す。そして、カウンタ算定部１０１は、読み出したフレームカウンタ値にβを加えた値を新しいフレームカウンタ値として算定する（Ｓ６０１）。続いて、通信装置１は、Ｓ５０３及びＳ５０４の処理を行う。
【００７９】
その後、通信装置１は、データフレームの送信が成功した場合に通信装置２から送られるＡＣＫによって、データフレームの送信が成功したか否かを判定する（Ｓ６０５）。送信が成功しない場合（Ｓ６０５でＮＯ）、Ｓ６０１に戻り、フレームカウンタ値を再度算定する。一方、送信が成功した場合（Ｓ６０５でＹＥＳ）、Ｓ５０５の処理を行う。
【００８０】
図７は、実施の形態１に係る通信装置２（受信側）の動作を示すフローチャートを表す。
【００８１】
まず、通信部１１１は、通信装置１から送信されるデータフレームを受信する。そして、カウンタ判定部１１３は、通信部１１１が新たに受信したデータフレームのヘッダ２０１に格納されているフレームカウンタ値と通信装置１のアドレス情報を取得する（Ｓ７０１）。
【００８２】
次に、カウンタ判定部１１３は、第３のメモリ１１２から、過去に同じ通信装置１から受信したデータフレームに格納されたフレームカウンタ値を読み出す（Ｓ７０２）。
【００８３】
カウンタ判定部１１３は、新たに受信したデータフレームに格納されているフレームカウンタ値と、記憶している過去のフレームカウンタ値との比較を行う（Ｓ７０３）。
【００８４】
新たに受信したデータフレームに格納されているフレームカウンタ値が、記憶している過去のフレームカウンタ値よりも大きい場合（Ｓ７０３でＹＥＳ）、通信部１１１は、暗号化ペイロード２０２を復号後、フレームカウンタ値を含むヘッダの一部と復号されたペイロードを基に算出した値と、受信した暗号化改ざん検知コード２０３とが一致すると、新たに受信したデータフレームは正しい通信装置１から送信されたデータフレームであると認証する。そして、通信部１１１は、通信装置１にＡＣＫを送信する（Ｓ７０４）。
【００８５】
その後、通信部１１１は、新たに受信したデータフレームに格納されているフレームカウンタ値を、第３のメモリ１１２に記憶させる（Ｓ７０５）。
【００８６】
一方、新たに受信したデータフレームに格納されているフレームカウンタ値が、記憶している過去のフレームカウンタ値以下の場合（Ｓ７０３でＮＯ）、通信部１１１は、新たに受信したデータフレームを破棄する（Ｓ７０６）。
【００８７】
実施の形態１に係る通信装置１によれば、第２のメモリ１０６へのフレームカウンタ値の記憶をデータフレーム送信ごとではなく、フレームカウンタ値が一定値αカウントアップするごとに行う。これにより、第２のメモリ１０６へのアクセス回数を抑えることができる。その結果、不揮発メモリの寿命を縮めることなく、成りすましによるリプレイ攻撃を防ぐことができる。また、再起動後に相手通信装置との間の鍵共有のプロトコルを再度行う必要がないため、再起動しても、即座に通信を再開可能である。
【００８８】
また、通信装置１の再起動時に、カウンタ算定部１０１が、第２のメモリ１０６が記憶しているフレームカウンタ値に加算する値（β）は、所定の時間中に通信装置１が送信する最大データフレーム数の推定値としても良い。即ち、通信部１０３がデータフレームを送信する送信頻度と、記憶指示部１０４がフレームカウンタ値を第２のメモリ１０６に記憶させる所定の間隔とを乗じた値としても良い。
【００８９】
尚、この推定値は、システム設計の時点で固定値として設定しても良いし、通信装置１が実際の通信した統計情報から適応的に設定しても良い。
【００９０】
また、通信装置１の再起動時に、カウンタ算定部１０１が、第２のメモリ１０６が記憶しているフレームカウンタ値に加算する値（β）は、αよりも小さい数としても良い。この場合、カウンタ算定部１０１は、第２のメモリ１０６からフレームカウンタ値を読み出す。そして、カウンタ算定部１０１は、読み出したフレームカウンタ値にαより小さな値（例えばα／８）を加えた値を新しいフレームカウンタ値として算定する。ここで、送信が成功しない場合、フレームカウンタ値を再度算定する。このとき、カウンタ算定部１０１は、読み出したフレームカウンタ値にα以下で前回加算した値より大きい値（例えばα／４）等を加算して、新しいフレームカウンタ値として算定する。通信装置１は、データフレームの送信が成功するまで以上の処理を繰り返し行う。
【００９１】
これにより、フレームカウンタ値の値域が限られている場合において、通信装置１が何度も再起動されて、その都度フレームカウンタ値がカウントアップされた場合でも、フレームカウンタ値がオーバーフローする可能性を低減することができる。
【００９２】
また、通信装置２において、カウンタ判定部１１３が、第３のメモリ１１２が記憶している過去に同じ通信装置１から受信したデータフレームのフレームカウンタ値と、通信部１１１が新たに受信したデータフレームのヘッダ２０１に格納されているフレームカウンタ値との比較を行う際に、新たに受信したフレームカウンタ値の方が、第３のメモリ１１２が記憶しているフレームカウンタ値より、β＋１以上大きいと判定した場合、通信部１１１は、新たに受信したデータフレームを破棄しても良い。
【００９３】
これにより、受信するデータフレームのフレームカウンタ値の範囲を制限することができる。その結果、成りすましによるリプレイ攻撃に対する安全性を向上できる。
【００９４】
また、データフレームの送信に失敗した場合（通信装置２の生存確認が取れない場合）、通信装置２の生存確認が取れるまでデータフレームの送信を待機しても良い。ここで通信装置２の生存確認には、通信装置２が定期的に通信装置１に送信する制御フレーム等を利用しても良い。制御フレームは、例えば、ビーコンフレームやＬｉｎｋ  Ｓｔａｔｕｓフレームであり、これらの例に限られない。
【００９５】
また、記憶指示部１０４は、第２のメモリ１０６に、直近で正常に送信できたデータフレームのフレームカウンタ値とタイムスタンプを併せて記憶させても良い。このとき、再起動時に、カウンタ算定部１０１は単位時間あたりの想定フレームカウンタ値更新数を考慮して推定しても良い。
【００９６】
以上、図１〜図７を用いて、実施の形態１における通信装置について説明した。
【００９７】
これにより、送信側の通信装置が再起動等された場合でも、通信装置間の鍵共有を再度することなく、短時間で通信装置間のデータ送受信を再開することができる。また、不揮発メモリへの書き込み頻度を少なくすることができる。その結果、通信装置の不揮発メモリの劣化を抑え、送信側の通信装置が故障する可能性を低減することができる。
【００９８】
＜実施の形態２＞
実施の形態１に係る通信装置１は、記憶指示部１０４が所定の間隔を判定し、フレームカウンタ値を第２のメモリ１０６へ記憶させる構成であった。一方、実施の形態２に係る通信装置１は、受信側の通信装置１２から、フレームカウンタ値を第２のメモリ１０６へ記憶させるタイミングの指示を受ける。そして、実施の形態２に係る通信装置１は、このタイミングに基づいて、フレームカウンタ値を第２のメモリ１０６へ記憶させる。この点が、実施の形態１に係る通信装置１と異なる。
【００９９】
以下、実施の形態２の通信装置について、図８及び図９を用いて説明する。
【０１００】
尚、以下の実施の形態２の通信装置１及び通信装置１２において、実施の形態１の通信装置１及び通信装置２と同一の構成要素には、同一の符号を付し、その説明を省略する。
【０１０１】
図８は、実施の形態２に係る通信装置１及び通信装置１２の機能ブロック図の例を表す。
【０１０２】
通信装置１２は、通信部１１１と、第３のメモリ１１２と、カウンタ判定部１１３と、記憶タイミング指示部１１４とを含む。
【０１０３】
記憶タイミング指示部１１４は、通信装置１の記憶指示部１０４がフレームカウンタ値を第２のメモリ１０６へ記憶させる記憶タイミング指示を、通信部１１１に送信させる。通信部１１１は、その記憶タイミング指示を通信装置１の通信部１０３に送信する。
【０１０４】
通信装置１の通信部１０３は、通信装置１２の通信部１１１から記憶タイミング指示を受信する。
【０１０５】
そして、記憶指示部１０４は、通信部１０３が受信した記憶タイミング指示を受け、フレームカウンタ値を第２のメモリ１０６へ記憶させる。
【０１０６】
図９は、実施の形態２に係る通信装置間の通信シーケンスの例を表す。
【０１０７】
通信装置１２は、受信したデータフレームに格納されるフレームカウンタ値を取得する（Ｓ４０３）。そして、記憶タイミング指示部１１４は、記憶指示部１０４がフレームカウンタ値を第２のメモリ１０６へ記憶させる所定のタイミングであると判定した場合、通信装置１に対して、記憶タイミング指示を行う（Ｓ４１１）。
【０１０８】
記憶指示部１０４は、記憶タイミング指示部１１４からの記憶タイミング指示を受け、フレームカウンタ値を第２のメモリ１０６へ記憶させる（Ｓ４０４）。
【０１０９】
通信装置１が再起動された後に、通信装置１２がデータフレームを受信した場合も、同一の処理を行う。
【０１１０】
以上、図８及び図９を用いて、実施の形態２の通信装置１及び通信装置１２について説明した。
【０１１１】
以上の説明はあらゆる点において本願発明の例示に過ぎず、その範囲を限定しようとするものではない。また、本願発明の範囲を逸脱することなく、実施の形態１または実施の形態２に対して、種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【０１１２】
本発明にかかる通信装置、通信システム及び通信方法は、セキュリティ性が求められるネットワーク・システム等に適用できる。
【符号の説明】
【０１１３】
１、２、１２  通信装置
１０１  カウンタ算定部
１０２  フレーム作成部
１０３、１１１  通信部
１０４  記憶指示部
１０５  第１のメモリ
１０６  第２のメモリ
１１２  第３のメモリ
１１３  カウンタ判定部
１１４  記憶タイミング指示部
２０１  ヘッダ
２０２  暗号化ペイロード
２０３  暗号化改ざん検知コード
【図１】
2014147934.tif 000003
【図２】
2014147934.tif 000004
【図３】
2014147934.tif 000005
【図４】
2014147934.tif 000006
【図５】
2014147934.tif 000007
【図６】
2014147934.tif 000008
【図７】
2014147934.tif 000009
【図８】
2014147934.tif 000010
【図９】
2014147934.tif 000011
【手続補正書】
【提出日】平成26年5月14日(2014.5.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
他の通信装置にデータフレームを送信する通信装置であって、
揮発性のメモリであり、前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を記憶する第１のメモリと、
前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成するフレーム作成部と、
前記データフレームを前記他の通信装置に送信する通信部と、
前記通信部が前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させる記憶指示部と、
不揮発性のメモリである第２のメモリと、を備え、
前記カウンタ値は、前記通信部が前記データフレームを送信するごとに加算され、
前記記憶指示部は、所定の間隔ごとに、前記データフレームに格納された前記カウンタ値を前記第２のメモリに記憶させ、
前記フレーム作成部は、前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納し、
前記所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とにより算定する、
通信装置。
【請求項２】
前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、前記通信部が送信する前記データフレームに格納される前記カウンタ値が所定値増加するごととする、
請求項１に記載の通信装置。
【請求項３】
前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、前記通信部が前記データフレームを所定の回数送信するごととする、
請求項１に記載の通信装置。
【請求項４】
前記記憶指示部が、前記カウンタ値を前記第２のメモリに記憶させる所定の間隔は、所定の時間とする、
請求項１に記載の通信装置。
【請求項５】
前記所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とにより算定する代わりに、前記記憶指示部が前記カウンタ値を前記第２のメモリに記憶させる所定の間隔に、増加した前記カウンタ値の増加分とする、
請求項１〜４のいずれか１項に記載の通信装置。
【請求項６】
前記所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とを乗じた値とする、
請求項１〜４のいずれか一項に記載の通信装置。
【請求項７】
前記所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とにより算定する代わりに、前記所定の間隔に、増加した前記カウンタ値の増加分よりも小さい数とする、
請求項１〜４のいずれか１項に記載の通信装置。
【請求項８】
前記通信部が送信する前記データフレームが前記他の通信装置に認証されない場合、前記第２のメモリから読み出した前記カウンタ値に、前記所定値よりも大きい値を加算する、
請求項７に記載の通信装置。
【請求項９】
前記カウンタ値を前記第２のメモリに記憶させる所定の間隔の指示を受け付ける記憶間隔受信部を備える、
請求項１〜４のいずれか１項に記載の通信装置。
【請求項１０】
他の通信装置にデータフレームを送信する通信装置が実行する、データフレームの通信方法であって、
前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を揮発性のメモリである第１のメモリに記憶し、
前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成し、
前記データフレームを前記他の通信装置に送信し、
前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させ、
前記データフレームを送信するごとに前記カウンタ値を加算し、
所定の間隔ごとに、前記データフレームに格納された前記カウンタ値を前記第２のメモリに記憶させ、
前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納し、
前記所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とにより算定する、
通信方法。
【請求項１１】
通信装置から、他の通信装置にデータフレームを送信する通信システムであって、
揮発性のメモリであり、前記他の通信装置で受信された前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているか否かを前記他の通信装置が判定するためのカウンタ値を記憶する第１のメモリと、
前記第１のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値が格納されたデータフレームを作成するフレーム作成部と、
前記データフレームを前記他の通信装置に送信する通信部と、
前記通信部が前記データフレームを送信するごとに、当該データフレームに格納された前記カウンタ値を前記第１のメモリに更新して記憶させる記憶指示部と、
不揮発性のメモリである第２のメモリと、を備え、
前記フレーム作成部は、前記通信装置が再起動された場合、前記第２のメモリに記憶されている前記カウンタ値を読み出し、当該読み出した前記カウンタ値に所定値を加算した値を、前記データフレームに格納する、通信装置と、
前記通信装置から送信される前記データフレームを受信し、受信した前記データフレームと、前記通信装置から送信された前記データフレームとが一致しているかを認証する、他の通信装置と、を備え、
前記所定値は、前記通信部が前記データフレームを送信する送信頻度と、前記所定の間隔とにより算定する、
通信システム。
【請求項１２】
（削除）
【国際調査報告】
2014147934.tif 000012
2014147934.tif 000013