JP2007013366A - 通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラム - Google Patents

通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラム Download PDF

Info

Publication number
JP2007013366A
JP2007013366A JP2005189298A JP2005189298A JP2007013366A JP 2007013366 A JP2007013366 A JP 2007013366A JP 2005189298 A JP2005189298 A JP 2005189298A JP 2005189298 A JP2005189298 A JP 2005189298A JP 2007013366 A JP2007013366 A JP 2007013366A
Authority
JP
Japan
Prior art keywords
data
counter
ctr
counter value
ciphertext
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005189298A
Other languages
English (en)
Inventor
Taizo Shirai
太三 白井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2005189298A priority Critical patent/JP2007013366A/ja
Publication of JP2007013366A publication Critical patent/JP2007013366A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 CCMモードをベースとした方式を適用した暗号通信における効率的で確実な通信を実現する構成を提供する。
【解決手段】 複数のエンティティ間の通信において、カウンタモードによる暗号文とCBC−MACによるメッセージ認証子を送受信するいわゆるCCMモードをベースとした方式を適用し、カウンタ値を順次、更新してデータ送受信を行うとともに、カウンタ値を通知して、自己の保持するカウンタ値との比較によって同期確認を行なう。本構成によりエラーのない処理が実現される。例えば、通信エラー等の発生により、コマンドや返信データが消失した場合や、外部からのリプレイ攻撃、データ改竄が発生した場合においても、初期状態に戻って最初から通信をやり直すことなく、エラー発生時点からのコマンド再発行によるデータ処理再開が可能となる。
【選択図】 図4

Description

本発明は、通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラムに関する。さらに詳細には、通信処理装置間におけるデータ通信において、通信データの漏洩や改竄を防止するとともに、通信エラーの発見、復旧を効率的に行ない、安全なデータ通信を可能とした通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラムに関する。
通信処理装置間でデータ通信を実行する場合セキュリティ確保が重要な問題である。特に、外部からのアクセスが可能な公開通信路を利用した通信を行なう場合などには、データ漏洩や改竄、その他の攻撃にさらされる可能性が高まる。公開通信路には、以下のような問題がある。
(ア)攻撃者により通信内容を読み取ることが可能である(通信データ傍受)
(イ)攻撃者により通信途中でデータを改変することも可能である(通信データ改竄)
(ウ)過去の通信データを蓄積し再送することが可能(再送攻撃)
(エ)送信したデータが、配送されない(送信データの消失)
例えば、このような公開通信路を利用して、相互通信を実行するエンティティAがエンティティBに対して、コマンドを発行し、BがAからのコマンドを解釈して内部でデータ処理を行い、データ処理結果を含む返答データをAに対して送信する通信モデルにおいて、上述のような(ア)〜(エ)の問題が発生すると、正しいデータ処理結果が得られない、あるいはデータ処理結果の漏洩が検出できないなどの問題が発生する。
本発明は、上述の問題点に鑑みてなされたものであり、通信処理装置間においてデータ通信を実行する場合、上述した(ア)〜(エ)の通信データ傍受、通信データ改竄、再送攻撃、送信データの消失の可能性がある公開通信路を適用した場合においても、データ漏洩、改竄を防止し、様々な攻撃に対する耐性も備えた安全なデータ通信を実現する通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
カウンタ値を入力値として適用したカウンタモードに従った暗号処理によって生成する暗号文と、メッセージ認証子とを送受信する通信処理システムであり、
暗号文およびメッセージ認証子を送信する少なくとも1つのデータ送信エンティティは、
暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行する構成であり、
暗号文およびメッセージ認証子およびカウンタ値を受信するデータ受信エンティティは、
前記データ送信エンティティからの受信カウンタ値と、自己の保持カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行する構成であることを特徴とする通信処理システムにある。
さらに、本発明の通信処理システムの一実施態様において、前記データ送信エンティティは、前記データ受信エンティティからの正当な返信データが受信されない場合、送信済みデータの再送信処理を実行する構成であり、該データ再送信処理において、自己のカウンタ値を更新し、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行ない、生成暗号文とメッセージ認証子、および更新カウンタ値を送信する処理を実行する構成であることを特徴とする。
さらに、本発明の通信処理システムの一実施態様において、前記データ送信エンティティは、前記データ再送信処理において、前記データ受信エンティティから受信予定の返信データの構成ブロック数に基づいて、自己の保持するカウンタ値を更新して、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行なう構成であることを特徴とする。
さらに、本発明の通信処理システムの一実施態様において、前記データ送信エンティティは、前記データ再送信処理において、自己の保持するカウンタ値を、予め設定した値のカウントアップによる更新を実行して、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行なう構成であることを特徴とする。
さらに、本発明の通信処理システムの一実施態様において、前記予め設定した値は1または2であることを特徴とする。
さらに、本発明の通信処理システムの一実施態様において、前記データ送信エンティティは、暗号文またはメッセージ認証子の生成処理に際して、複数のカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)をメッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1をカウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする。
さらに、本発明の通信処理システムの一実施態様において、前記データ送信エンティティは、暗号文またはメッセージ認証子の生成処理に際して、2つのカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1を適用して生成した暗号化データであるEnc(ctr+1)を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする。
さらに、本発明の通信処理システムの一実施態様において、前記データ受信エンティティは、返信データに対応する暗号文またはメッセージ認証子の生成処理に際して、2つのカウンタ値を適用する構成であり、前記データ送信エンティティからの受信カウンタ値ctrに基づくカウンタ値の更新処理によって、
ctr←ctr+2
更新カウンタ値ctrを生成し、該更新カウンタ値ctrを適用した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1を適用して生成した暗号化データであるEnc(ctr+1)を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする。
さらに、本発明の通信処理システムの一実施態様において、前記データ送信エンティティは、暗号文またはメッセージ認証子の生成処理に際して、1つのカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctrを適用して生成した暗号化データであるEnc(Enc(ctr))+1を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする。
さらに、本発明の通信処理システムの一実施態様において、前記データ受信エンティティは、返信データに対応する暗号文またはメッセージ認証子の生成処理に際して、1つのカウンタ値を適用する構成であり、前記データ送信エンティティからの受信カウンタ値ctrを適用した暗号化データであるEnc(Enc(Enc(ctr)))を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctrを適用した暗号化データであるEnc(Enc(Enc(Enc(ctr)))+1を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする。
さらに、本発明の第2の側面は、
データ送信処理を実行する通信処理装置であり、
カウンタ値を入力値として適用したカウンタモードに従った暗号処理による暗号文生成処理と、メッセージ認証子の生成処理を実行するデータ処理部と、
暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行する通信部と、
を有することを特徴とする通信処理装置にある。
さらに、本発明の通信処理装置の一実施態様において、前記通信処理装置は、データ受信エンティティからの正当な返信データが受信されない場合、送信済みデータの再送信処理を実行する構成であり、該データ再送信処理において、自己のカウンタ値を更新し、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行ない、生成暗号文とメッセージ認証子、および更新カウンタ値を送信する処理を実行する構成であることを特徴とする。
さらに、本発明の通信処理装置の一実施態様において、前記通信処理装置は、前記データ再送信処理において、前記データ受信エンティティから受信予定の返信データの構成ブロック数に基づいて、自己の保持するカウンタ値を更新して、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行なう構成であることを特徴とする。
さらに、本発明の通信処理装置の一実施態様において、前記通信処理装置は、前記データ再送信処理において、自己の保持するカウンタ値を、予め設定した値のカウントアップによる更新を実行して、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行なう構成であることを特徴とする。
さらに、本発明の通信処理装置の一実施態様において、前記予め設定した値は1または2であることを特徴とする。
さらに、本発明の通信処理装置の一実施態様において、前記通信処理装置は、暗号文またはメッセージ認証子の生成処理に際して、複数のカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)をメッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1をカウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする。
さらに、本発明の通信処理装置の一実施態様において、前記通信処理装置は、暗号文またはメッセージ認証子の生成処理に際して、2つのカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1を適用して生成した暗号化データであるEnc(ctr+1)を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする。
さらに、本発明の通信処理装置の一実施態様において、前記通信処理装置は、暗号文またはメッセージ認証子の生成処理に際して、1つのカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctrを適用して生成した暗号化データであるEnc(Enc(ctr))+1を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする。
さらに、本発明の第3の側面は、
通信データの受信処理および正当性確認を実行するデータ処理装置であり、
カウンタモードに従った暗号処理によって生成された暗号文と、メッセージ認証子と、前記メッセージ認証子生成処理またはカウンタモードに従った暗号処理において適用したカウンタ値を受信する通信部と、
自装置で更新処理を実行する自己カウンタ値を保持する記憶部と、
前記通信部において受信したカウンタ値と、前記記憶部に保持された自己カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行するデータ処理部と、
を有することを特徴とするデータ処理装置にある。
さらに、本発明の第4の側面は、
カウンタ値を入力値として適用したカウンタモードに従った暗号処理によって生成する暗号文と、メッセージ認証子とを送受信する通信処理方法であり、
暗号文およびメッセージ認証子を送信する少なくとも1つのデータ送信エンティティにおいて、暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行するステップと、
暗号文およびメッセージ認証子およびカウンタ値を受信するデータ受信エンティティにおいて、前記データ送信エンティティからの受信カウンタ値と、自己の保持カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行するステップと、
を有することを特徴とする通信処理方法にある。
さらに、本発明の第5の側面は、
データ送信処理を実行する通信処理方法であり、
カウンタ値を入力値として適用したカウンタモードに従った暗号処理による暗号文生成処理と、メッセージ認証子の生成処理を実行するデータ処理ステップと、
暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行する通信ステップと、
を有することを特徴とする通信処理方法にある。
さらに、本発明の第6の側面は、
通信データの受信処理および正当性確認を実行するデータ処理方法であり、
カウンタモードに従った暗号処理によって生成された暗号文と、メッセージ認証子と、前記メッセージ認証子生成処理またはカウンタモードに従った暗号処理において適用したカウンタ値を受信する通信ステップと、
前記通信ステップにおいて受信したカウンタ値と、記憶部に保持された自己カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行するデータ処理ステップと、
を有することを特徴とするデータ処理方法にある。
さらに、本発明の第7の側面は、
データ送信処理を通信処理装置において実行させるコンピュータ・プログラムであり、
カウンタ値を入力値として適用したカウンタモードに従った暗号処理による暗号文生成処理と、メッセージ認証子の生成処理を実行するデータ処理ステップと、
暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行する通信ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
さらに、本発明の第8の側面は、
通信データの受信処理および正当性確認処理を通信処理装置において実行させるコンピュータ・プログラムであり、
カウンタモードに従った暗号処理によって生成された暗号文と、メッセージ認証子と、前記メッセージ認証子生成処理またはカウンタモードに従った暗号処理において適用したカウンタ値を受信する通信ステップと、
前記通信ステップにおいて受信したカウンタ値と、記憶部に保持された自己カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行するデータ処理ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記憶媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づく、より詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、複数のエンティティ間の通信において、カウンタモードによる暗号文とCBC−MACによるメッセージ認証子を送受信するいわゆるCCMモードをベースとした方式を適用し、カウンタ値を順次、更新してデータ送受信を行うとともに、カウンタ値を通知して、自己の保持するカウンタ値との比較によって同期確認を行なう構成とすることで、エラーのない処理が実現される。例えば、通信エラー等の発生により、コマンドや返信データが消失した場合や、外部からのリプレイ攻撃、データ改竄が発生した場合においても、初期状態に戻って最初から通信をやり直すことなく、エラー発生時点からのコマンド再発行によるデータ処理の再開が可能となり、効率的で確実なデータ通信、データ処理が実現される。
以下、図面を参照しながら、本発明の通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラムの詳細について説明する。本発明は、暗号化+偽造防止+再送検出メカニズムを持ち、データの消失に対しても復旧が可能であり、なおかつシンプルな構成を有するデータ通信を実現する。なお、以下において説明する実施例においては、データ送受信を行なうエンティティA,B間の通信実行システムを例として説明する。
図1に示すように、エンティティA101がエンティティB102に対して、コマンドを発行し、エンティティB102はエンティティA101からのコマンドを解釈して内部でデータ処理を行い、データ処理結果を含む返答データをエンティティA101に対して送信する通信モデルを例として説明する。エンティティA101とエンティティB102との間では暗号化通信が実行される。本発明では、暗号化方式の基本関数として共通鍵ブロック暗号を用いるものとする。共通鍵ブロック暗号は、暗号化鍵と復号鍵を共通の鍵として設定し、共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット,128ビットなど)のデータ変換処理を繰り返し実行する暗号方式である。
複数のブロックにまたがるデータの暗号化にはカウンタ(CTR:Counter)モードと呼ばれるカウンタ値を暗号化した結果を平文データと排他的論理和して暗号文を得る方法を適用するものとする。また通信データの偽造防止メカニズムとしてCBC−MAC(Ciphered Block Chaining−Message Authentication Code)を用いることとする。このカウンタモードによって生成した暗号文と、CBC−MACによって生成したメッセージ認証子を併用した方法はいわゆるCCMモードとして知られており、暗号化に加え、メッセージの完全性、すなわち改竄の有無の検証も保証できるモードである。
図2を参照して、CCMモードをベースとした方式の概要について説明する。なお、エンティティA,Bの間で鍵共有のプロトコルが行われ、利用するブロック暗号用の鍵Kを共有した後において、データ送受信を実行する場合を想定する。
図2(a)は、送信データの構成データとしての平文データを、所定データ長単位でブロック分割した[(a1)平文ブロックデータM1〜Mn]と、これらの平文ブロックデータに基づいて、データ送信側が生成する暗号化データ等からなる[(a2)送信データ]を示している。図2(b)は、データ送信側におけるデータ処理、すなわち、CBC−MACおよびカウンタモードを適用したCCMモードをベースとした方式に基づく送信データの生成処理を示している。
例えば、図2(a1)に示すnブロックのメッセージM1〜Mnを、暗号化して通信相手に送る場合には、図2(a2)に示すように、nブロックのメッセージM1〜Mnに基づいて、カウンタモードを適用した暗号文生成処理によって生成した暗号文ブロックデータC1〜Cnと、nブロックのメッセージM1〜Mnに基づいて、CBC−MACを適用したメッセージ認証子生成処理によって生成したメッセージ認証子Tを送信する。CCMモードをベースとした方式は、これら暗号文ブロックデータC1〜Cnと、メッセージ認証子Tを送信する構成としていた。本発明においては、さらに、図2(a2)に示すカウンタ値Ctrを送信する。
まず、一般的なCCMモードをベースとした方式による暗号文生成処理(カウンタモード)と、メッセージ認証子生成処理(CBC−MAC)の各処理について、図2(b)を参照して説明する。
図2(b)には、データ送信側におけるデータ処理、すなわち、CBC−MACおよびカウンタモードを適用したCCMモードをベースとした方式に基づく送信データの生成処理を示している。(b1)に示すCBC−MACでは、通信データの偽造防止メカニズムとしてのメッセージ認証子(MAC:Message Authentication Code)を、平文ブロックデータM1〜Mnに基づいて生成する。生成結果がメッセージ認証子[T]である。(b2)に示すカウンタ(CTR)モードでは、平文ブロックデータM1〜Mnに基づいて、暗号文ブロックデータC1〜Cnを生成する。カウンタ値(Ctr〜Ctr)を暗号化した結果[X1〜Xn]を平文ブロックデータM1〜Mnと各々排他的論理和して暗号文ブロックデータ[C1〜Cn]を得る。カウンタ値の中の1つ(Ctr)は、カウンタ初期値として生成関数151において演算を実行して作成され、Ctr〜は、
Ctr=Ctri−1+1
の関係であり、1つずつ増分されたカウンタ値が適用される。
最初にデータ送信を実行するデータ送信側では、図2(b)に示すように、CBC−MAC用のIV値(初期値)のシードとしての種B0(1ブロック分)とn個の連続するカウンタ値Ctr(一番小さな値をカウンタ初期値と呼ぶ)を、例えば乱数(nonce)を所定の演算部151において演算を実行して作成する。
なお、(b1)CBC−MAC、(b2)カウンタ(CTR)モードの各々に示すブロック[E]は、暗号化処理部を示し、エンティティA,Bの間で実行済みの鍵共有のプロトコルによって共有したブロック暗号用の共通鍵Kまたは共通鍵Kに基づいて生成される鍵を適用した暗号処理を実行する暗号処理部であり、例えばAES暗号アルゴリズムに従った暗号処理を行なう。
図2に示すように、CCMモードをベースとした方式では、平文ブロックデータM1〜Mnの暗号化には、(b2)に示すカウンタ(CTR:Counter)モードと呼ばれるカウンタ値を暗号化した結果と平文データとの排他的論理和によって暗号文ブロックデータ[C1〜Cn]を生成するとともに、通信データの改竄検証に適用するメッセージ認証子としてのMAC値[T]をCBC−MACを用いて生成する。
CCMモードをベースとした方式は、このようにカウンタモードで通信メッセージの暗号化を行なうのみならず、CBC−MACによってメッセージ認証子を生成して送信する構成であり、通信メッセージの完全性、すなわち改竄の有無の検証も保証できるモードである。
なお、CBC−MACおよびカウンタモードで適用されるシード(種)B0と、カウンタ値Ctr〜Ctrとは、すべての通信を通じて重複がない設定とすることが望ましい。例えば、エンティティAB間で通信を実行する場合、エンティティAからコマンドを暗号化して送信し、エンティティBがコマンドに基づくデータ処理結果を返信データとしてエンティティAに送信する処理を、複数のコマンドについて繰り返し実行するシーケンスでは、n番目のコマンド送信の際の暗号処理に適用したカウンタ値と、次のn+1番目のコマンド送信の際の暗号処理に適用するカウンタ値は、異なる設定とされる。一般には、順次、カウンタ値をカウントアップする処理を行なう。
本発明ではCCMモードをベースとした方式におけるCBC−MACのIV値(初期値)とカウンタ値の初期値(Ctr)の選択の自由さに着目し、例えば公開通信路を適用したデータ通信における前述した問題点、すなわち、
(ア)攻撃者により通信内容を読み取ることが可能である(通信データ傍受)
(イ)攻撃者により通信途中でデータを改変することも可能である(通信データ改竄)
(ウ)過去の通信データを蓄積し再送することが可能(再送攻撃)
(エ)送信したデータが、配送されない(送信データの消失)
これらの問題を含む公開通信路を適用したデータ通信においても、高い安全性が期待できる手法を提案する。
具体的には、
(a)カウンタモードを適用した暗号文生成処理によって生成した暗号文ブロックデータC1〜Cnと、
(b)nブロックのメッセージM1〜Mnに基づいて、CBC−MACを適用したメッセージ認証子生成処理によって生成したメッセージ認証子T、
に加え、
(c)様々な設定としたカウンタ値Ctr、
を送信する構成とすることで、上記問題点を解決した手法を提案する。これまでのCCMモードをベースとした方式では、(a)暗号文ブロックデータC1〜Cn、(b)メッセージ認証子Tの送信を行なっていたが、本発明は、これらのデータに、(c)様々な設定としたカウンタ値Ctrを付加したデータ送信を行なう。
以下、エンティティAとエンティティBとの間で、通信が実行されると想定し、エンティティAが、エンティティBに対して複数のコマンドを、上述したCCMモードをベースとした方式を適用して送信し、エンティティBがエンティティAから受信したコマンドに対応するデータ処理を内部処理として実行し、実行したデータ処理結果をエンティティAに対して、CCMモードをベースとした方式で返信する処理を行なうものとして、
(1)カウンタ値(Ctr)送信を行なわない一般的なCCMモードをベースとした方式を適用した通信処理シーケンス
(2)本発明に従ったカウンタ値(Ctr)送信を行なうCCMモードをベースとした方式を適用した通信処理シーケンス
のそれぞれについて順次、説明する。
なお、エンティティAからエンティティB間では、複数のコマンド送信、コマンドに基づくデータ処理結果の返信が繰り返し実行されるものとし、
エンティティAが発行する各コマンドのブロック数を、
1番目コマンド:ブロック数=m1、
2番目コマンド:ブロック数=m2、
3番目コマンド:ブロック数=m3、

k番目コマンド:ブロック数=mk、
とし、一方、これら1〜k番目のコマンドに対応するデータ処理結果であるエンティティBからの返信データのブロック数を、
1番目返信データ:ブロック数=n1、
2番目返信データ:ブロック数=n2、
3番目返信データ:ブロック数=n3、

k番目返信データ:ブロック数=nk、
であるとして説明を行なう。
[(1)一般的なCCMモードをベースとした方式を適用した場合の処理シーケンス]
まず、カウンタ値(Ctr)送信を行なわない一般的なCCMモードをベースとした方式を適用した場合の通信処理シーケンスについて、図3を参照して説明する。
図3は、エンティティAとエンティティB間で、鍵共有のプロトコルが行われ、利用するブロック暗号用の共通鍵Kを、エンティティAとエンティティB間で共有した後、第i番目のコマンドをエンティティAからエンティティBに対して発行する処理以降の処理シーケンスを示している。また、A,Bは内部にブロックサイズのカウンタctrを持っているものとする。
(a)初期化処理
ステップS100の初期化処理は、A,B共通の処理として実行される。
A,B間で共通鍵Kの共有が完了したら、A,Bそれぞれの内部カウンタctrの値を0に初期化する。
(b)i番目のコマンド発行処理
ステップS101〜S104は、第i番目のコマンドをエンティティAからエンティティBに対して上述したCCMモードをベースとした方式を適用して送信し、エンティティBがエンティティAから受信したコマンドに対応するデータ処理を内部処理として実行し、実行したデータ処理結果をエンティティAに対して、CCMモードをベースとした方式で返信する処理を行なう際の通信処理シーケンスを示している。
まず、ステップS101は、i番目のコマンド発行処理であり、コマンド発行側であるエンティティAの実行する処理である。ここでAの発行するコマンドは、i番目のコマンドであり、すでにi−1番目までのコマンド発行は完了しているものとする。i番目のコマンドのブロック数=miであり、コマンド発行処理は、以下の各処理によって構成される。
A1.miブロックのコマンドデータを準備
A2.ENC(ctr)をCBC−MACの初期値IVとしてメッセージ認証子Tを生成する。
A3.ctr+1をカウンタモード暗号化のカウンタ初期値として暗号化して暗号文Cを得る。
A4.暗号文C,メッセージ認証子Tを送信
A5.ctr←ctr+mi+2
上記処理A1〜A5について説明する。
処理A1[miブロックのコマンドデータを準備]
この処理は、エンティティAからエンティティBに対して送信する平文データとしてのブロック数=miのコマンドデータを準備する処理である。このブロック数=miのコマンドデータに基づくカウンタモードによる暗号文と、CBC−MACによるメッセージ認証子Tを生成する。
処理A2[ENC(ctr)をCBC−MACの初期値IVとしてメッセージ認証子Tを生成する]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)生成処理である。i番目のコマンドを構成するmi個の平文ブロック[M1〜Mmi]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[T]を算出する。なお、ENC(ctr)は、カウンタ値(ctr)の共通鍵Kに基づく暗号化データを示す。暗号化アルゴリズムは例えばAES暗号アルゴリズムである。
処理A3[ctr+1をカウンタモード暗号化のカウンタ初期値として暗号化して暗号文Cを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによる暗号文生成処理である。この場合、i番目のコマンドを構成するブロック数はmiであるので、カウンタctr+1〜ctr+1+miを、それぞれを暗号化し、暗号化カウンタ値[X]を生成し、生成した暗号化カウンタ値と、i番目のコマンドを構成するmi個のブロックの各々との排他論理和(XOR)演算を実行して、暗号化ブロックデータ[C]を得る。暗号化ブロックデータ[C]もmi個のブロックから構成される暗号化ブロック[C1〜Cmi]である。
処理A4[暗号文C,メッセージ認証子Tを送信]は、上述した処理において生成した暗号文[C=C1〜Cmi]と、メッセージ認証子[T]を送信する処理である。
処理A5[ctr←ctr+mi+2]は、カウンタの更新処理であり、カウンタ値をctr+mi+2として更新する。このカウンタ更新処理は、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1〜ctr+mi+1は、カウンタモードの暗号処理で使用している。
従って、ctr+mi+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
(c)コマンド受信およびデータ返信
ステップS102およびステップS103に示す処理であり、コマンド受信側のエンティティBによって実行される処理である。ステップS102がコマンドの受信と確認処理であり、ステップS103が、確認されたコマンドに基づくデータ処理結果の暗号化処理を含む送信データの生成と送信処理に相当する。
ステップS102のコマンドの受信と確認処理には以下の処理が含まれる。
B1.暗号文C、およびメッセージ認証子Tを受信
B2.ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Cを復号してコマンドを得る
B3.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子T'生成
B4.T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る
B5.ctr←ctr+mi+2
上記処理B1〜B5について説明する。
処理B1[暗号文C、およびメッセージ認証子Tを受信]は、エンティティAからの暗号文[C]とMAC値[T]を受信する処理である。
処理B2[ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Cを復号してコマンドを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによるデータ復号処理である。図2(b2)に示す入力データとして、暗号文ブロック[C=C1〜Cmi]を入力して、ctr+1をカウンタ初期値として設定した暗号処理によって、平文ブロック[M1〜Mmi]を得る。
処理B3[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子T'生成]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)の生成処理である。ここでは、処理B2において、エンティティAからの受信暗号文に基づく復号データとしての平文ブロック[M1〜Mmi]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[T']を算出する。
処理B4[T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る]は、エンティティAから受信したオリジナル平文データに基づくメッセージ認証子Tと、受信暗号文の復号データに基づくメッセージ認証子T'が一致するか否か、すなわちT=T'が成立するか否かを判定する。T=T'が成立すれば、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mmi]に一致するデータであり改竄のないデータ(コマンド)であると判定し、次の処理に進む。T=T'が成立しない場合は、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mmi]に一致しないデータであり改竄のなされたデータであると判定し、次の処理に進むことなく、コマンド待ちの状態に戻る。
処理B5[ctr←ctr+mi+2]は、カウンタの更新処理であり、カウンタ値をctr+mi+2として更新する。このカウンタ更新処理も、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1〜ctr+mi+1は、カウンタモードを適用したデータ復号処理で使用している。
従って、ctr+mi+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
このカウンタ更新によって、カウンタ値は、エンティティA,Bで等しい値となり、同期のとれた値に設定される。
ステップS103は、ステップS102において、改竄のないことが確認されたコマンドに基づくデータ処理結果の暗号化処理を含む送信データの生成と送信処理である。ステップS103の処理には、以下の処理が含まれる。
B6.niブロックの返信データを準備
B7.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する
B8.ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る
B9.暗号文D、メッセージ認証子Uを送信する
B10.ctr←ctr+ni+2
上記処理B6〜B10について説明する。
処理B6[niブロックの返信データを準備]
この処理は、エンティティAから受信した暗号文Cに基づく復号結果として得られたコマンドに基づく処理結果として、niブロックの返信データを準備する処理である。
処理B7[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)生成処理である。返信データを構成するni個の平文ブロック[M1〜Mni]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[U]を算出する。なお、初期値(IV)の算出に用いるカウンタ値ctrは、前述の処理B5.ctr←ctr+mi+2において、更新されたカウンタ値ctrである。
処理B8[ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによる暗号文生成処理である。この場合、niブロックの返信データを構成するブロック数はniであるので、カウンタctr+1〜ctr+1+niを、それぞれを暗号化し、暗号化カウンタ値[X]を生成し、生成した暗号化カウンタ値と、返信データを構成するni個のブロックの各々との排他論理和(XOR)演算を実行して、暗号化ブロックデータ[D]を得る。暗号化ブロックデータ[D]もni個のブロックから構成される暗号化ブロック[D1〜Dni]である。
処理B9[暗号文D、メッセージ認証子Uを送信する]は、上述した処理において生成した暗号文[D=D1〜Dni]と、メッセージ認証子[U]を送信する処理である。
処理B10[ctr←ctr+ni+2]は、カウンタの更新処理であり、カウンタ値をctr+ni+2として更新する。このカウンタ更新処理は、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1〜ctr+ni+1は、カウンタモードの暗号処理で使用している。
従って、ctr+ni+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
(d)返信データ受信および確認
次に、エンティティBからの返信データを受信したエンティティAの処理がステップS104において実行される。ステップS104の返信データの受信と確認処理には以下の処理が含まれる。
A6.暗号文D、およびメッセージ認証子Uを受信
A7.ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Dを復号して返信データを得る
A8.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U'生成
A9.U=U'ならば次に進む、そうでなければ処理を停止し、返信データ待ち状態に戻る
A10.ctr←ctr+ni+2
上記処理A6〜A10について説明する。
処理A6[暗号文D、およびメッセージ認証子Uを受信]は、エンティティBからの暗号文[D]とMAC値[U]を受信する処理である。
処理A7[ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Dを復号して返信データを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによるデータ復号処理である。図2(b2)に示す入力データとして、暗号文ブロック[D=D1〜Dni]を入力して、ctr+1をカウンタ初期値として設定した暗号処理によって、平文返信データブロック[M1〜Mni]を得る。
処理A8[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U'生成]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)の生成処理である。ここでは、処理A7において、エンティティBからの受信暗号文に基づいて生成した復号データとしての平文ブロック[M1〜Mni]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[U']を算出する。
処理A9[U=U'ならば次に進む、そうでなければ処理を停止し、返信データ待ち状態に戻る]は、エンティティBから受信したオリジナル返信データに基づくメッセージ認証子Uと、受信暗号文の復号データに基づくメッセージ認証子U'が一致するか否か、すなわちU=U'が成立するか否かを判定する。U=U'が成立すれば、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mni]に一致するデータであり改竄のないデータ(返信データ)であると判定し、次の処理に進む。U=U'が成立しない場合は、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mni]に一致しないデータであり改竄のなされた返信データであると判定し、次の処理に進むことなく、返信データ待ちの状態に戻る。
処理A10[ctr←ctr+ni+2]は、カウンタの更新処理であり、カウンタ値をctr+ni+2として更新する。このカウンタ更新処理も、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1〜ctr+ni+1は、カウンタモードを適用したデータ復号処理で使用している。
従って、ctr+ni+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
このカウンタ更新によって、カウンタ値は、エンティティA,Bで等しい値となり、同期のとれた値に設定される。
その後、エンティティAにおける次のコマンドの発行処理、エンティティBにおけるコマンドに基づく返信データ生成、送信処理、エンティティAにおける返信データの受信確認処理。これらの処理がステップS101〜S104と同様の処理として繰り返し実行される。ただし、カウンタ値は、双方の装置で、順次、更新される。
このようにカウンタモードによる暗号文とCBC−MACによるメッセージ認証子を送受信するCCMモードをベースとした方式では、カウンタ値を順次、更新して、データ送受信を行い、データ送受信を行なう双方の装置において、カウンタ値を同期した状態とすることで、エラーのない処理が実現される。
利用可能なカウンタ値が一巡して0に戻れば同じ値を適用する場合があるが、カウンタサイズが十分に大きければ、一連の通信処理の終了まで、異なるカウンタ値が適用されることになる。このCCMモードをベースとした方式による通信処理では、秘匿および改竄検出は実現されている。また、再送攻撃に対してもカウンタ値の不一致により、メッセージ認証子の不一致、復号エラーなどが発生して、受理されないことになるため耐性を持つ。
しかし、上記の方式では、エンティティAが、コマンドを発行したが、エンティティBから返信をもらえない状態に陥った場合を考えると問題が生ずる。例えば、エンティティBからの返信が、エンティティAにおいて受領できない理由としては以下の状況が想定される。
1)エンティティAからの送信コマンドが消失した
2)エンティティAからの送信コマンドが改竄されてエンティティBは処理を停止した
3)エンティティBの返信データが消失した
エンティティBから、ある一定の時間が経過しても返信が来ない場合、エンティティAはタイムアウトであるとし再度コマンドを発行できる構成である方が望ましい。このコマンド再発行の際に、再発行コマンドに用いるカウンタ値として適切なものは何かを考察する。上記の1)〜3)の状況において、それぞれ適切なカウンタ値として、以下の設定が考えられる。
1)送信コマンドが消失した場合:前と同じカウンタ値[ctr−mi−2]
2)送信コマンドが改竄されてBが処理を停止した場合:前と同じカウンタ値[ctr−mi−2]
3)Bの返信データが消失した場合:現在のカウンタにBの返信データの長さ+2を足したカウンタ値[ctr+ni+2]
上記の1)と2)は同じ値となる3)の場合は値が異なる。すなわち、エンティティAは、エンティティBからの返信データが受信できない理由が明らかであれば、それぞれの理由に応じて、1),2),3)のいずれかのカウンタ値の再設定を行い、エンティティBの持つカウンタ値と同期させて処理を継続することが可能である。しかし、一般的に、エンティティAは、エンティティBからの返信データが受信できない理由を解明することはできない。この場合、エンティティAは、上記の1)と2)に対応するカウンタ値[ctr−mi−2]、または3)に対応するカウンタ値[ctr+ni+2]のいずれを適用すればよいか判断することができない。
結果として、エンティティAは、エンティティBからの返信データが受領できない事態に陥った場合、コマンド送信シーケンスの初期状態に復帰して、すべてのコマンド送信をやり直さなければならないことになってしまう。
このように、これまでのCCMモードをベースとした方式でのデータ送受信方式では、通信を実行するエンティティ間のデータ通信が不調となった場合、初期状態に戻って、データ通信を再度、繰り返さなければならないことになり、データ処理、通信処理効率を低下させるという問題を発生させていた。
[(2)本発明に従ったカウンタ値(Ctr)送信を行なうCCMモードをベースとした方式を適用した通信処理シーケンス]
以下、上述の問題を解決した本発明に従ったコマンド送受信方式について説明する。以下に説明する本発明に従った通信処理は、通信データに関する暗号化+偽造防止+再送検出メカニズムを持ち、データの消失に対しても復旧が可能であり、なおかつシンプルな構成のコマンド送受信方式であり、CCMモードをベースとした方式を適用し、さらに様々な態様のカウンタ値(Ctr)の送信を行なう構成を持つ。以下、本発明に従ったコマンド送受信方式の複数の実施例について、順次、説明する。
[実施例1]
まず、実施例1について、図4、図5を参照して説明する。本実施例も、先に図3を参照して説明した通信処理シーケンスと同様、エンティティAとエンティティB間の通信処理例である。本処理例においても、先に図2(b2)を参照して説明したカウンタモードによる暗号文生成と、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子の生成を行い、これらの各データを送受信するCCMモードをベースとした方式を基本として実行する。
エンティティAとエンティティB間で鍵共有のプロトコルが行われ、利用するブロック暗号用の共通鍵Kを、エンティティAとエンティティB間で共有した後、第i番目のコマンドをエンティティAからエンティティBに対して発行する処理以降の処理シーケンスを示している。また、A,Bは内部にブロックサイズのカウンタctrを持っているものとする。
(a)初期化処理
ステップS200の初期化処理は、A,B共通の処理として実行される。
A,B間で共通鍵Kの共有が完了したら、A,Bそれぞれの内部カウンタctrの値を0に初期化する。
(b)i番目のコマンド発行処理
ステップS201〜S204は、第i番目のコマンドをエンティティAからエンティティBに対して上述したCCMモードをベースとした方式を適用して送信し、エンティティBがエンティティAから受信したコマンドに対応するデータ処理を内部処理として実行し、実行したデータ処理結果をエンティティAに対して、CCMモードをベースとした方式で返信する処理を行なう際の通信処理シーケンスを示している。
まず、ステップS201は、i番目のコマンド発行処理であり、コマンド発行側であるエンティティAの実行する処理である。ここでAの発行するコマンドは、i番目のコマンドであり、すでにi−1番目までのコマンド発行は完了しているものとする。i番目のコマンドのブロック数=miであり、コマンド発行処理は、以下の各処理によって構成される。
A1.miブロックのコマンドデータを準備
A2.ENC(ctr)をCBC−MACの初期値IVとしてメッセージ認証子Tを生成する。
A3.ctr+1をカウンタモード暗号化のカウンタ初期値として暗号化して暗号文Cを得る。
A4.暗号文C,メッセージ認証子Tと、さらに、カウンタ値ctrを送信
A5.ctr←ctr+mi+2
上記処理A1〜A5について説明する。
処理A1[miブロックのコマンドデータを準備]
この処理は、エンティティAからエンティティBに対して送信する平文データとしてのブロック数=miのコマンドデータを準備する処理である。このブロック数=miのコマンドデータに基づくカウンタモードによる暗号文と、CBC−MACによるメッセージ認証子Tを生成する。
処理A2[ENC(ctr)をCBC−MACの初期値IVとしてメッセージ認証子Tを生成する]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)生成処理である。i番目のコマンドを構成するmi個の平文ブロック[M1〜Mmi]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[T]を算出する。なお、ENC(ctr)は、カウンタ値(ctr)の共通鍵Kに基づく暗号化データを示す。暗号化アルゴリズムは例えばAES暗号アルゴリズムである。
処理A3[ctr+1をカウンタモード暗号化のカウンタ初期値として暗号化して暗号文Cを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによる暗号文生成処理である。この場合、i番目のコマンドを構成するブロック数はmiであるので、カウンタctr+1〜ctr+1+miを、それぞれを暗号化し、暗号化カウンタ値[X]を生成し、生成した暗号化カウンタ値と、i番目のコマンドを構成するmi個のブロックの各々との排他論理和(XOR)演算を実行して、暗号化ブロックデータ[C]を得る。暗号化ブロックデータ[C]もmi個のブロックから構成される暗号化ブロック[C1〜Cmi]である。
処理A4[暗号文C,メッセージ認証子Tと、さらに、カウンタ値ctrを送信]は、上述した処理において生成した暗号文[C=C1〜Cmi]と、メッセージ認証子[T]と、さらに、カウンタ値ctrを送信する処理である。
本実施例では、図3を参照して説明した処理では含まれないカウンタ値ctrをエンティティAからエンティティBに対して送信する。このカウンタ値によって、通信エラーなどに基づく通信シーケンスの中断が発生した場合に、初期状態に戻ることなく、処理シーケンスを再開することが可能となる。これらの処理については、後述する。
処理A5[ctr←ctr+mi+2]は、カウンタの更新処理であり、カウンタ値をctr+mi+2として更新する。このカウンタ更新処理は、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1〜ctr+mi+1は、カウンタモードの暗号処理で使用している。
従って、ctr+mi+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
(c)コマンド受信およびデータ返信
ステップS202およびステップS203に示す処理であり、コマンド受信側のエンティティBによって実行される処理である。ステップS202がコマンドの受信と確認処理であり、ステップS203が、確認されたコマンドに基づくデータ処理結果の暗号化処理を含む送信データの生成と送信処理に相当する。
ステップS202のコマンドの受信と確認処理には以下の処理が含まれる。
B1.暗号文C、およびメッセージ認証子Tと、さらに、カウンタ値ctrを受信
B2.カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る
B3.ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Cを復号してコマンドを得る
B4.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子T'生成
B5.T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る
B6.ctr←ctr+mi+2
上記処理B1〜B6について説明する。
処理B1[暗号文C、およびメッセージ認証子Tと、さらに、カウンタ値ctrを受信]は、エンティティAからの暗号文[C]とMAC値[T]と、さらに、カウンタ値ctrを受信する処理である。
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]は、エンティティAから受信したカウンタ値ctrと、エンティティBが保持するカウンタ値ctrとを比較して、カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定する処理である。初期状態では、エンティティAとエンティティBは、双方のカウンタ値は0に設定され、通信処理の進行に従って、双方のカウンタ値は、同期してカウントアップされており、正常な通信が進行している場合は、カウンタ値ctr≧カウンタ値ctrが成立する。この式が成立しない場合は、正常なデータ通信が阻害された場合、例えば、通信エラー、外部からの再送攻撃、改竄などが発生した可能性がある。この場合には、エンティティBは、受信コマンドに基づく処理を停止して、コマント待ち状態に戻る。
エンティティBが、コマンド待ち状態に戻った場合、エンティティAは、エンティティBからの返信データが受信できなくなり、予め定めた待機時間を越えた場合、コマンドの再送処理、すなわちi番目のコマンドを再送する処理を行なうことになる。この処理については、図5を参照して、後段で説明する。
まず、エンティティBにおいて、カウンタ値ctr≧カウンタ値ctrが成立した場合の処理について、説明する。この場合は、エンティティBは、処理B3以下を実行する。
処理B3[ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Cを復号してコマンドを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによるデータ復号処理である。図2(b2)に示す入力データとして、暗号文ブロック[C=C1〜Cmi]を入力して、ctr+1をカウンタ初期値として設定した暗号処理によって、平文ブロック[M1〜Mmi]を得る。
処理B4[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子T'生成]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)の生成処理である。ここでは、処理B2において、エンティティAからの受信暗号文に基づく復号データとしての平文ブロック[M1〜Mmi]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[T']を算出する。
処理B5[T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る]は、エンティティAから受信したオリジナル平文データに基づくメッセージ認証子Tと、受信暗号文の復号データに基づくメッセージ認証子T'が一致するか否か、すなわちT=T'が成立するか否かを判定する。T=T'が成立すれば、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mmi]に一致するデータであり改竄のないデータ(コマンド)であると判定し、次の処理に進む。T=T'が成立しない場合は、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mmi]に一致しないデータであり改竄のなされたデータであると判定し、次の処理に進むことなく、コマンド待ちの状態に戻る。
ここでのコマンド待ち状態も、先に処理B2において説明したコマンド待ち状態と同様であり、エンティティAは、エンティティBからの返信データが受信できなくなり、予め定めた待機時間を越えた場合、コマンドの再送処理、すなわちi番目のコマンドを再送する処理を行なうことになる。この処理については、図5を参照して、後段で説明する。T=T'が成立した場合の処理を先に説明する。T=T'が成立した場合、処理B6以下を実行する。
処理B6[ctr←ctr+mi+2]は、カウンタの更新処理であり、カウンタ値をctr+mi+2として更新する。このカウンタ更新処理も、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1〜ctr+mi+1は、カウンタモードを適用したデータ復号処理で使用している。
従って、ctr+mi+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
このカウンタ更新によって、カウンタ値は、エンティティA,Bで等しい値となり、同期のとれた値に設定される。
ステップS203は、ステップS202において、改竄のないことが確認されたコマンドに基づくデータ処理結果の暗号化処理を含む送信データの生成と送信処理である。ステップS203の処理には、以下の処理が含まれる。
B7.niブロックの返信データを準備
B8.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する
B9.ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る
B10.暗号文D、メッセージ認証子Uを送信する
B11.ctr←ctr+ni+2
上記処理B7〜B11について説明する。
処理B7[niブロックの返信データを準備]
この処理は、エンティティAから受信した暗号文Cに基づく復号結果として得られたコマンドに基づく処理結果として、niブロックの返信データを準備する処理である。
処理B8[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)生成処理である。返信データを構成するni個の平文ブロック[M1〜Mni]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[U]を算出する。なお、初期値(IV)の算出に用いるカウンタ値ctrは、前述の処理B5.ctr←ctr+mi+2において、更新されたカウンタ値ctrである。
処理B9[ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによる暗号文生成処理である。この場合、niブロックの返信データを構成するブロック数はniであるので、カウンタctr+1〜ctr+1+niを、それぞれを暗号化し、暗号化カウンタ値[X]を生成し、生成した暗号化カウンタ値と、返信データを構成するni個のブロックの各々との排他論理和(XOR)演算を実行して、暗号化ブロックデータ[D]を得る。暗号化ブロックデータ[D]もni個のブロックから構成される暗号化ブロック[D1〜Dni]である。
処理B10[暗号文D、メッセージ認証子Uを送信する]は、上述した処理において生成した暗号文[D=D1〜Dni]と、メッセージ認証子[U]を送信する処理である。
処理B11[ctr←ctr+ni+2]は、カウンタの更新処理であり、カウンタ値をctr+ni+2として更新する。このカウンタ更新処理は、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1〜ctr+ni+1は、カウンタモードの暗号処理で使用している。
従って、ctr+ni+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
(d)返信データ受信および確認
次に、エンティティBからの返信データを受信したエンティティAの処理がステップS204において実行される。ステップS204の返信データの受信と確認処理には以下の処理が含まれる。
A6.暗号文D、およびメッセージ認証子Uを受信
A7.ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Dを復号して返信データを得る
A8.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U'生成
A9.U=U'ならば次に進む、そうでなければ処理を停止し、データを破棄する
A10.ctr←ctr+ni+2
上記処理A6〜A10について説明する。
処理A6[暗号文D、およびメッセージ認証子Uを受信]は、エンティティBからの暗号文[D]とMAC値[U]を受信する処理である。
処理A7[ctr+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Dを復号して返信データを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによるデータ復号処理である。図2(b2)に示す入力データとして、暗号文ブロック[D=D1〜Dni]を入力して、ctr+1をカウンタ初期値として設定した暗号処理によって、平文返信データブロック[M1〜Mni]を得る。
処理A8[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U'生成]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)の生成処理である。ここでは、処理A7において、エンティティBからの受信暗号文に基づいて生成した復号データとしての平文ブロック[M1〜Mni]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[U']を算出する。
処理A9[U=U'ならば次に進む、そうでなければ処理を停止し、データを破棄する]は、エンティティBから受信したオリジナル返信データに基づくメッセージ認証子Uと、受信暗号文の復号データに基づくメッセージ認証子U'が一致するか否か、すなわちU=U'が成立するか否かを判定する。U=U'が成立すれば、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mni]に一致するデータであり改竄のないデータ(返信データ)であると判定し、次の処理に進む。U=U'が成立しない場合は、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mni]に一致しないデータであり改竄のなされた返信データであると判定し、次の処理に進むことなく、データを破棄する。
このデータ破棄処理によって、エンティティAは、エンティティBからの返信データが未受領状態であると解釈し、予め定めた一定期間内に正常な返信データ(U=U'が成立する)が受信されない場合は、i番目のコマンドの再送信処理を実行することになる。この処理は、図5を参照して説明する。処理A9において、U=U'が成立した場合は、処理A10以下を実行することになる。
処理A10[ctr←ctr+ni+2]は、カウンタの更新処理であり、カウンタ値をctr+ni+2として更新する。このカウンタ更新処理も、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1〜ctr+ni+1は、カウンタモードを適用したデータ復号処理で使用している。
従って、ctr+ni+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
このカウンタ更新によって、カウンタ値は、エンティティA,Bで等しい値となり、同期のとれた値に設定される。
その後、エンティティAにおける次のコマンドの発行処理、エンティティBにおけるコマンドに基づく返信データ生成、送信処理、エンティティAにおける返信データの受信確認処理。これらの処理がステップS201〜S204と同様の処理として繰り返し実行される。ただし、カウンタ値は、双方の装置で、順次、更新される。
(e)コマンド再発行処理
次に、コマンドの再発行処理について、図5を参照して説明する。コマンドの再発行は、エンティティAが、エンティティBからの返信データを予め定めた待機時間内に受信できなかった場合に実行される。これは、単純な通信エラーの他、図4におけるステップS202において、エンティティBが、コマンド待ち状態になってしまった場合、すなわち、先に説明した処理としての、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]において、カウンタ値ctr≧カウンタ値ctrが成立しなかった場合、または、
処理B5[T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る]において、T=T'が成立しなかった場合、
これらのケースにおいてもエンティティAは、コマンド再発行処理を実行する。
また、エンティティA側のステップS204における処理、
処理A9[メッセージ認証子U=U'ならば次に進む、そうでなければ処理を停止し、データを破棄する]において、メッセージ認証子U=U'が成立しなかった場合にも、予め定めた待機時間内に正常な返信データが受領できない場合は、コマンド再発行処理を実行する。
図5に示す処理について説明する。エンティティAが、エンティティBからの正常な返信データを予め定めた待機時間内に受信できなかった場合、エンティティAは、ステップS205において、コマンドの再発行処理を実行する。ステップS205のコマンド再発行処理には、以下の処理が含まれる。
A21.ctr←ctr+ni+2
A22.通常のコマンド発行処理(ステップS201と同様(前述のA1〜A5の処理))
処理A21[ctr←ctr+ni+2]は、カウンタの更新処理であり、カウンタ値をctr+ni+2として更新する。本処理例では、エンティティAは、i番目のコマンドに対応する返信データのブロック数niを知っていることを前提としている。エンティティAは、i番目のコマンドに対する正常な返信データをエンティティBから受信できなかった場合、エンティティAに設定されたカウンタ値ctrをctr←ctr+ni+2として、想定された返信データのブロック数niに基づいて更新する処理を実行する。
このカウンタ更新後に処理A22[通常のコマンド発行処理(ステップS201と同様(前述のA1〜A5の処理))]を実行する。処理A22は、ステップS201の処理と同様であり、適用するカウンタ値が更新された値[ctr←ctr+ni+2]である点のみが異なる。
このコマンド再送処理によって、エンティティAは、新たなカウンタ値を適用したCBC−MACに基づくメッセージ認証子Tと、カウンタモードによる暗号文Cと、更新されたカウンタ値[ctr←ctr+ni+2]をエンティティBに送信する。
エンティティBは、ステップS206において、図4のステップS202以下の処理を繰り返し実行する。ここで、エンティティBは、先に説明した処理B2、すなわち、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]
この処理を実行する。
この時点で、エンティティBのカウンタは、先に説明したステップS203におけるカウンタ更新処理、すなわち、
処理B11[ctr←ctr+ni+2]を実行済みであるので、エンティティBのカウンタ値は、ctr+ni+2として設定されている。
エンティティAから再発行コマンドiとともに送信されてくるカウンタは、カウンタ値[ctr←ctr+ni+2]であり、エンティティBがこの時点で持つカウンタ値と等しい値となり、エンティティBにおけるステップS202のカウンタ値判定処理、すなわち、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]
この判定処理において、カウンタ値ctr≧カウンタ値ctrが成立することになり、問題なく後続の処理を実行することが可能となる。
上記の実施例1の方式は、エンティティAはコマンドとともにカウンタ値を送信し、エンティティB側で、自分の持っているカウンタ値とエンティティAから受信したカウンタ値の比較を実行して、カウンタ値の同期確認を行って、処理を進める構成であり、エンティティAが、コマンドの再発行を行なう場合は、エンティティBのカウンタ値よりも必ず大きな値を持つようカウンタ更新を行なうことで、Aのコマンド再送信はエンティティBにおいて必ず受理されることになる。
本構成により、通信エラー等の発生により、コマンドや返信データが消失した場合や、外部からのリプレイ攻撃、データ改竄が発生した場合において、初期状態に戻って、最初から通信をやり直すことなく、エラー発生時点からのコマンド再送信を行なえばよく、効率的で確実なデータ通信が実現される。
しかし、本実施例1においては、エンティティAがコマンド再送を行なう場合、エンティティBから返信される予定の返信データのブロック数niに応じたカウンタ値の更新を行なう必要があり、エンティティAが、予め返信データのブロック数niを知っていることが必要となっている。
次に、エンティティAが、返信データのブロック数niを知らない場合にも対応可能な処理例を実施例2として説明する。
[実施例2]
次に、実施例2について、図6、図7を参照して説明する。本実施例も、実施例1と同様、エンティティAとエンティティB間の通信処理例として説明する。本処理例においても、先に図2(b2)を参照して説明したカウンタモードによる暗号文生成と、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子の生成を行い、これらの各データを送受信するCCMモードをベースとした方式を基本として実行する。
エンティティAとエンティティB間で鍵共有のプロトコルが行われ、利用するブロック暗号用の共通鍵Kを、エンティティAとエンティティB間で共有した後、第i番目のコマンドをエンティティAからエンティティBに対して発行する処理以降の処理シーケンスを示している。また、A,Bは内部にブロックサイズのカウンタctrを持っているものとする。
(a)初期化処理
ステップS300の初期化処理は、A,B共通の処理として実行される。
A,B間で共通鍵Kの共有が完了したら、A,Bそれぞれの内部カウンタctrの値を0に初期化する。
(b)i番目のコマンド発行処理
ステップS301〜S304は、第i番目のコマンドをエンティティAからエンティティBに対して上述したCCMモードをベースとした方式を適用して送信し、エンティティBがエンティティAから受信したコマンドに対応するデータ処理を内部処理として実行し、実行したデータ処理結果をエンティティAに対して、CCMモードをベースとした方式で返信する処理を行なう際の通信処理シーケンスを示している。
まず、ステップS301は、i番目のコマンド発行処理であり、コマンド発行側であるエンティティAの実行する処理である。ここでAの発行するコマンドは、i番目のコマンドであり、すでにi−1番目までのコマンド発行は完了しているものとする。i番目のコマンドのブロック数=miであり、コマンド発行処理は、以下の各処理によって構成される。
A1.miブロックのコマンドデータを準備
A2.ENC(ctr)をCBC−MACの初期値IVとしてメッセージ認証子Tを生成する。
A3.ENC(ctr+1)をカウンタモード暗号化のカウンタ初期値として暗号化して暗号文Cを得る。
A4.暗号文C,メッセージ認証子Tと、さらに、カウンタ値ctrを送信
A5.ctr←ctr+2
上記処理A1〜A5について説明する。
処理A1[miブロックのコマンドデータを準備]
この処理は、エンティティAからエンティティBに対して送信する平文データとしてのブロック数=miのコマンドデータを準備する処理である。このブロック数=miのコマンドデータに基づくカウンタモードによる暗号文と、CBC−MACによるメッセージ認証子Tを生成する。
処理A2[ENC(ctr)をCBC−MACの初期値IVとしてメッセージ認証子Tを生成する]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)生成処理である。i番目のコマンドを構成するmi個の平文ブロック[M1〜Mmi]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[T]を算出する。なお、ENC(ctr)は、カウンタ値(ctr)の共通鍵Kに基づく暗号化データを示す。暗号化アルゴリズムは例えばAES暗号アルゴリズムである。
処理A3[ENC(ctr+1)をカウンタモード暗号化のカウンタ初期値として暗号化して暗号文Cを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによる暗号文生成処理である。
前述の実施例1では、カウンタモード暗号化のカウンタ初期値としてctr+1を適用していたが、本実施例では、共通鍵Kを適用してカウンタ値(ctr+1)を暗号化した暗号化カウンタ値ENC(ctr+1)をカウンタモード暗号化のカウンタ初期値とする。
i番目のコマンドを構成するブロック数はmiであるので、カウンタモード暗号化において使用するカウンタ値は、ENC(ctr+1)〜ENC(ctr+1)+miとなる。これらのカウンタ値を適用して、図2(b2)に示すカウンタモートを適用して、i番目のコマンドを構成するmi個のブロックの各々を入力値とした暗号化を実行して、mi個のブロックから構成される暗号化ブロックデータ[C=C1〜Cmi]を生成する。
処理A4[暗号文C,メッセージ認証子Tと、さらに、カウンタ値ctrを送信]は、上述した処理において生成した暗号文[C=C1〜Cmi]と、メッセージ認証子[T]と、さらに、カウンタ値ctrを送信する処理である。
本実施例においても、上述の実施例1と同様、カウンタ値ctrをエンティティAからエンティティBに対して送信する。このカウンタ値によって、通信エラーなどに基づく通信シーケンスの中断が発生した場合に、初期状態に戻ることなく、処理シーケンスを再開することが可能となる。これらの処理については、後述する。
処理A5[ctr←ctr+2]は、カウンタの更新処理であり、カウンタ値をctr+2として更新する。前述の実施例1では、カウンタの更新処理として、
[ctr←ctr+mi+2]
を実行していたが、本実施例では、
[ctr←ctr+2]
のカウンタ更新を実行する。
カウンタ更新処理は、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理であるが、本実施例では、
ctrは、CBC−MACの初期値として使用し、
ctr+1を、カウンタモードの暗号処理で使用しているのみとなる。
従って、ctr+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。本実施例では、使用するカウンタ値の削減を実現している。
(c)コマンド受信およびデータ返信
ステップS302およびステップS303に示す処理であり、コマンド受信側のエンティティBによって実行される処理である。ステップS302がコマンドの受信と確認処理であり、ステップS303が、確認されたコマンドに基づくデータ処理結果の暗号化処理を含む送信データの生成と送信処理に相当する。
ステップS302のコマンドの受信と確認処理には以下の処理が含まれる。
B1.暗号文C、およびメッセージ認証子Tと、さらに、カウンタ値ctrを受信
B2.カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る
B3.ENC(ctr+1)をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Cを復号してコマンドを得る
B4.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子T'生成
B5.T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る
B6.ctr←ctr+2
上記処理B1〜B6について説明する。
処理B1[暗号文C、およびメッセージ認証子Tと、さらに、カウンタ値ctrを受信]は、エンティティAからの暗号文[C]とMAC値[T]と、さらに、カウンタ値ctrを受信する処理である。
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]は、エンティティAから受信したカウンタ値ctrと、エンティティBが保持するカウンタ値ctrとを比較して、カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定する処理である。初期状態では、エンティティAとエンティティBは、双方のカウンタ値は0に設定され、通信処理の進行に従って、双方のカウンタ値は、同期してカウントアップされており、正常な通信が進行している場合は、カウンタ値ctr≧カウンタ値ctrが成立する。この式が成立しない場合は、正常なデータ通信が阻害された場合、例えば、通信エラー、外部からの再送攻撃、改竄などが発生した可能性がある。この場合には、エンティティBは、受信コマンドに基づく処理を停止して、コマント待ち状態に戻る。
エンティティBが、コマンド待ち状態に戻った場合、エンティティAは、エンティティBからの返信データが受信できなくなり、予め定めた待機時間を越えた場合、コマンドの再送処理、すなわちi番目のコマンドを再送する処理を行なうことになる。この処理については、図7を参照して、後段で説明する。
まず、エンティティBにおいて、カウンタ値ctr≧カウンタ値ctrが成立した場合の処理について、説明する。この場合は、エンティティBは、処理B3以下を実行する。
処理B3[ENK(ctr+1)をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Cを復号してコマンドを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによるデータ復号処理である。図2(b2)に示す入力データとして、暗号文ブロック[C=C1〜Cmi]を入力して、ENK(ctr+1)をカウンタ初期値として設定し、ENK(ctr+1)〜ENK(ctr+1)+miを適用したカウンタモード暗号処理によって、平文ブロック[M1〜Mmi]を得る。
処理B4[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子T'生成]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)の生成処理である。ここでは、処理B2において、エンティティAからの受信暗号文に基づく復号データとしての平文ブロック[M1〜Mmi]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[T']を算出する。
処理B5[T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る]は、エンティティAから受信したオリジナル平文データに基づくメッセージ認証子Tと、受信暗号文の復号データに基づくメッセージ認証子T'が一致するか否か、すなわちT=T'が成立するか否かを判定する。T=T'が成立すれば、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mmi]に一致するデータであり改竄のないデータ(コマンド)であると判定し、次の処理に進む。T=T'が成立しない場合は、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mmi]に一致しないデータであり改竄のなされたデータであると判定し、次の処理に進むことなく、コマンド待ちの状態に戻る。
ここでのコマンド待ち状態も、先に処理B2において説明したコマンド待ち状態と同様であり、エンティティAは、エンティティBからの返信データが受信できなくなり、予め定めた待機時間を越えた場合、コマンドの再送処理、すなわちi番目のコマンドを再送する処理を行なうことになる。この処理については、図7を参照して、後段で説明する。T=T'が成立した場合の処理を先に説明する。T=T'が成立した場合、処理B6以下を実行する。
処理B6[ctr←ctr+2]は、カウンタの更新処理であり、カウンタ値をctr+2として更新する。このカウンタ更新処理も、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理であり、エンティティAにおけるステップS301の処理A5のカウンタ更新と同様、カウンタ値を2つのみカウントアップする処理を行なう。すなわち、
ctrは、CBC−MACの初期値として使用し、
ctr+1は、カウンタモードを適用したデータ復号処理で使用している。
従って、ctr+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なう。このカウンタ更新によって、カウンタ値は、エンティティA,Bで等しい値となり、同期のとれた値に設定される。
ステップS303は、ステップS302において、改竄のないことが確認されたコマンドに基づくデータ処理結果の暗号化処理を含む送信データの生成と送信処理である。ステップS303の処理には、以下の処理が含まれる。
B7.niブロックの返信データを準備
B8.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する
B9.ENC(ctr+1)をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る
B10.暗号文D、メッセージ認証子Uを送信する
B11.ctr←ctr+2
上記処理B7〜B11について説明する。
処理B7[niブロックの返信データを準備]
この処理は、エンティティAから受信した暗号文Cに基づく復号結果として得られたコマンドに基づく処理結果として、niブロックの返信データを準備する処理である。
処理B8[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)生成処理である。返信データを構成するni個の平文ブロック[M1〜Mni]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[U]を算出する。なお、初期値(IV)の算出に用いるカウンタ値ctrは、前述の処理B5.ctr←ctr+mi+2において、更新されたカウンタ値ctrである。
処理B9[ENC(ctr+1)をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによる暗号文生成処理である。この場合、niブロックの返信データを構成するブロック数はniであるので、カウンタENC(ctr+1)〜ENC(ctr+1)+niをカウンタ値として適用し、返信データを構成するni個のブロックを入力としたカウンタモード暗号化を行い、暗号化ブロックデータ[D]を得る。暗号化ブロックデータ[D]もni個のブロックから構成される暗号化ブロック[D1〜Dni]である。
処理B10[暗号文D、メッセージ認証子Uを送信する]は、上述した処理において生成した暗号文[D=D1〜Dni]と、メッセージ認証子[U]を送信する処理である。
処理B11[ctr←ctr+2]は、カウンタの更新処理であり、カウンタ値をctr+2として更新する。このカウンタ更新処理は、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理であり、
ctrは、CBC−MACの初期値として使用し、
ctr+1は、カウンタモードの暗号処理で使用している。
従って、ctr+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
エンティティBにおいても、データ送信に際して適用するカウンタ値は、2つのみとなり、更新処理ではカウンタ値を2つのみカウントアップする。
(d)返信データ受信および確認
次に、エンティティBからの返信データを受信したエンティティAの処理がステップS304において実行される。ステップS304の返信データの受信と確認処理には以下の処理が含まれる。
A6.暗号文D、およびメッセージ認証子Uを受信
A7.ENC(ctr+1)をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Dを復号して返信データを得る
A8.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U'生成
A9.U=U'ならば次に進む、そうでなければ処理を停止し、返信データ待ち状態に戻る
A10.ctr←ctr+2
上記処理A6〜A10について説明する。
処理A6[暗号文D、およびメッセージ認証子Uを受信]は、エンティティBからの暗号文[D]とMAC値[U]を受信する処理である。
処理A7[ENC(ctr+1)をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Dを復号して返信データを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによるデータ復号処理である。図2(b2)に示す入力データとして、暗号文ブロック[D=D1〜Dni]を入力して、ENC(ctr+1)をカウンタ初期値として設定した暗号処理によって、平文返信データブロック[M1〜Mni]を得る。ここでも、カウンタ値(ctr+1)の暗号化データENC(ctr+1)をカウンタ初期値として設定し、ENC(ctr+1)〜ENC(ctr+1)+niを利用して、暗号文ブロック[D=D1〜Dni]を入力し、平文返信データブロック[M1〜Mni]を得る。
処理A8[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U'生成]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)の生成処理である。ここでは、処理A7において生成したエンティティBからの受信暗号文に基づく復号データとしての平文ブロック[M1〜Mni]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[U']を算出する。
処理A9[U=U'ならば次に進む、そうでなければ処理を停止し、返信データ待ち状態に戻る]は、エンティティBから受信したオリジナル返信データに基づくメッセージ認証子Uと、受信暗号文の復号データに基づくメッセージ認証子U'が一致するか否か、すなわちU=U'が成立するか否かを判定する。U=U'が成立すれば、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mni]に一致するデータであり改竄のないデータ(返信データ)であると判定し、次の処理に進む。U=U'が成立しない場合は、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mni]に一致しないデータであり改竄のなされた返信データであると判定し、次の処理に進むことなく、返信データ待ち状態に戻る。
この返信データ待ち状態に戻る処理後、予め定めた一定期間内に正常な返信データ(U=U'が成立する)が受信されない場合は、i番目のコマンドの再送信処理を実行することになる。この処理は、図7を参照して説明する。処理A9において、U=U'が成立した場合は、処理A10以下を実行することになる。
処理A10[ctr←ctr+2]は、カウンタの更新処理であり、カウンタ値をctr+2として更新する。このカウンタ更新処理も、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。
ctrは、CBC−MACの初期値として使用し、
ctr+1は、カウンタモードを適用したデータ復号処理で使用している。
従って、ctr+2〜を次の処理で利用するカウンタの値とするカウンタ更新を行なっている。
このカウンタ更新によって、カウンタ値は、エンティティA,Bで等しい値となり、同期のとれた値に設定される。
その後、エンティティAにおける次のコマンドの発行処理、エンティティBにおけるコマンドに基づく返信データ生成、送信処理、エンティティAにおける返信データの受信確認処理。これらの処理がステップS301〜S304と同様の処理として繰り返し実行される。ただし、カウンタ値は、双方の装置で、順次、更新される。
(e)コマンド再発行処理
次に、コマンドの再発行処理について、図7を参照して説明する。コマンドの再発行は、エンティティAが、エンティティBからの返信データを予め定めた待機時間内に受信できなかった場合に実行される。これは、単純な通信エラーの他、図6におけるステップS302において、エンティティBが、コマンド待ち状態になってしまった場合、すなわち、先に説明した処理としての、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]において、カウンタ値ctr≧カウンタ値ctrが成立しなかった場合、または、
処理B5[T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る]において、T=T'が成立しなかった場合、
これらのケースにおいてもエンティティAは、コマンド再発行処理を実行する。
また、エンティティA側のステップS304における処理、
処理A9[メッセージ認証子U=U'ならば次に進む、そうでなければ処理を停止し、返信データ待ち状態に戻る]において、メッセージ認証子U=U'が成立しなかった場合にも、予め定めた待機時間内に正常な返信データが受領できない場合は、コマンド再発行処理を実行する。
図7に示す処理について説明する。エンティティAが、エンティティBからの正常な返信データを予め定めた待機時間内に受信できなかった場合、エンティティAは、ステップS305において、コマンドの再発行処理を実行する。ステップS305のコマンド再発行処理には、以下の処理が含まれる。
A21.ctr←ctr+2
A22.通常のコマンド発行処理(ステップS301と同様(前述のA1〜A5の処理))
処理A21[ctr←ctr+2]は、カウンタの更新処理であり、カウンタ値をctr+2として更新する。本処理例では、各コマンドと、返信データの送受信に応じて、CBC−MACの初期値に対応する1つのカウンタ値と、カウンタモードのカウンタ初期値として1つのカウント値が適用される。これは、コマンドや返信データのブロック数に無関係である。
従って、エンティティAは、i番目のコマンドに対応する返信データのブロック数niを知らなくても、エンティティAは、i番目のコマンドに対する正常な返信データをエンティティBから受信できなかった場合、エンティティAに設定されたカウンタ値ctrをctr←ctr+2として、カウント値の更新を実行し、このカウンタ更新後に処理A22[通常のコマンド発行処理(ステップS301と同様(前述のA1〜A5の処理))]を実行する。処理A22は、ステップS301の処理と同様であり、適用するカウンタ値が更新された値[ctr←ctr+2]である点のみが異なる。
このコマンド再送処理によって、エンティティAは、新たなカウンタ値を適用したCBC−MACに基づくメッセージ認証子Tと、カウンタモードによる暗号文Cと、更新されたカウンタ値[ctr←ctr+2]をエンティティBに送信する。
エンティティBは、ステップS306において、図6のステップS302以下の処理を繰り返し実行する。ここで、エンティティBは、先に説明した処理B2、すなわち、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]
この処理を実行する。
この時点で、エンティティBのカウンタは、先に説明したステップS303におけるカウンタ更新処理、すなわち、
処理B11[ctr←ctr+2]を実行済みであるので、エンティティBのカウンタ値は、ctr+2として設定されている。
エンティティAから再発行コマンドiとともに送信されてくるカウンタは、カウンタ値[ctr←ctr+2]であり、エンティティBがこの時点で持つカウンタ値と等しい値となり、エンティティBにおけるステップS302のカウンタ値判定処理、すなわち、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]
この判定処理において、カウンタ値ctr≧カウンタ値ctrが成立することになり、問題なく後続の処理を実行することが可能となる。
上記の実施例2の方式は、実施例1の方式と同様、エンティティAはコマンドとともにカウンタ値を送信し、エンティティB側で、自分の持っているカウンタ値とエンティティAから受信したカウンタ値の比較を実行して、カウンタ値の同期確認を行って、処理を進める構成であり、エンティティAが、コマンドの再発行を行なう場合は、エンティティBのカウンタ値よりも必ず大きな値を持つようカウンタ更新を行なうことで、Aのコマンド再送信はエンティティBにおいて必ず受理されることになる。
また、本実施例では、実施例1と異なり、コマンドや返信データの送受信の際に、双方で利用、更新されるカウント値は、コマンドや返信データのブロック数に無関係であり、[2]と決まっているため、エンティティAが、コマンドの再発行を行なう場合は、カウント値を2つカウントアップする更新を行なうことで、エンティティAとエンティティBのカウンタの値の同期をとることが可能となる。従って、実施例1と異なり、エンティティAは、エンティティBからの返信データのブロック数niを知っている必要がない。
本構成により、通信エラー等の発生により、コマンドや返信データが消失した場合や、外部からのリプレイ攻撃、データ改竄が発生した場合において、初期状態に戻って、最初から通信をやり直すことなく、エラー発生時点からのコマンド再送信を行なえばよく、効率的で確実なデータ通信が実現される。
[実施例3]
次に、実施例3について、図8、図9を参照して説明する。本実施例も、実施例1,2と同様、エンティティAとエンティティB間の通信処理例として説明する。本処理例においても、先に図2(b2)を参照して説明したカウンタモードによる暗号文生成と、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子の生成を行い、これらの各データを送受信するCCMモードをベースとした方式を基本として実行する。
エンティティAとエンティティB間で鍵共有のプロトコルが行われ、利用するブロック暗号用の共通鍵Kを、エンティティAとエンティティB間で共有した後、第i番目のコマンドをエンティティAからエンティティBに対して発行する処理以降の処理シーケンスを示している。また、A,Bは内部にブロックサイズのカウンタctrを持っているものとする。
(a)初期化処理
ステップS400の初期化処理は、A,B共通の処理として実行される。
A,B間で共通鍵Kの共有が完了したら、A,Bそれぞれの内部カウンタctrの値を0に初期化する。
(b)i番目のコマンド発行処理
ステップS401〜S404は、第i番目のコマンドをエンティティAからエンティティBに対して上述したCCMモードをベースとした方式を適用して送信し、エンティティBがエンティティAから受信したコマンドに対応するデータ処理を内部処理として実行し、実行したデータ処理結果をエンティティAに対して、CCMモードをベースとした方式で返信する処理を行なう際の通信処理シーケンスを示している。
まず、ステップS401は、i番目のコマンド発行処理であり、コマンド発行側であるエンティティAの実行する処理である。ここでAの発行するコマンドは、i番目のコマンドであり、すでにi−1番目までのコマンド発行は完了しているものとする。i番目のコマンドのブロック数=miであり、コマンド発行処理は、以下の各処理によって構成される。
A1.miブロックのコマンドデータを準備
A2.ENC(ctr)をCBC−MACの初期値IVとしてメッセージ認証子Tを生成する。
A3.ENC(ENC(ctr))+1をカウンタモード暗号化のカウンタ初期値として暗号化して暗号文Cを得る。
A4.暗号文C,メッセージ認証子Tと、さらに、カウンタ値ctrを送信
上記処理A1〜A4について説明する。
処理A1[miブロックのコマンドデータを準備]
この処理は、エンティティAからエンティティBに対して送信する平文データとしてのブロック数=miのコマンドデータを準備する処理である。このブロック数=miのコマンドデータに基づくカウンタモードによる暗号文と、CBC−MACによるメッセージ認証子Tを生成する。
処理A2[ENC(ctr)をCBC−MACの初期値IVとしてメッセージ認証子Tを生成する]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)生成処理である。i番目のコマンドを構成するmi個の平文ブロック[M1〜Mmi]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[T]を算出する。なお、ENC(ctr)は、カウンタ値(ctr)の共通鍵Kに基づく暗号化データを示す。暗号化アルゴリズムは例えばAES暗号アルゴリズムである。
処理A3[ENC(ENC(ctr))+1をカウンタモード暗号化のカウンタ初期値として暗号化して暗号文Cを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによる暗号文生成処理である。
前述の実施例1では、カウンタモード暗号化のカウンタ初期値としてctr+1を適用し、実施例2では、共通鍵Kを適用してカウンタ値(ctr+1)を暗号化した暗号化カウンタ値ENC(ctr+1)をカウンタモード暗号化のカウンタ初期値としていた。本実施例3では、CBC−MACによるMAC生成処理の初期値(IV)として利用した暗号化カウンタ値ENC(ctr)を、さらに共通鍵Kを適用して再度、暗号化したデータENC(ENC(ctr))に1を加算した値、ENC(ENC(ctr))+1をカウンタモード暗号化のカウンタ初期値として利用する。
すなわち、本実施例では、コマンド送信に際して使用するカウント値を1つとした設定である。
CBC−MACの初期値:ENC(ctr
カウントモードのカウンタ初期値:ENC(ENC(ctr))+1
として、設定することで、コマンド送信に際して使用するカウント値を1つとしている。
i番目のコマンドを構成するブロック数はmiであるので、カウンタモード暗号化において実際に使用するカウンタ値は、ENC(ENC(ctr))+1〜ENC(ENC(ctr))+1+miとなる。これらのカウンタ値を適用して、図2(b2)に示すカウンタモートを適用して、i番目のコマンドを構成するmi個のブロックの各々を入力値とした暗号化を実行して、mi個のブロックから構成される暗号化ブロックデータ[C=C1〜Cmi]を生成する。
処理A4[暗号文C,メッセージ認証子Tと、さらに、カウンタ値ctrを送信]は、上述した処理において生成した暗号文[C=C1〜Cmi]と、メッセージ認証子[T]と、さらに、カウンタ値ctrを送信する処理である。
本実施例においても、上述の実施例1と同様、カウンタ値ctrをエンティティAからエンティティBに対して送信する。このカウンタ値によって、通信エラーなどに基づく通信シーケンスの中断が発生した場合に、初期状態に戻ることなく、処理シーケンスを再開することが可能となる。これらの処理については、後述する。
本実施例では、実施例1,2のように、この時点でのカウンタ更新は実行しない。次回のコマンド送信に以降する際に、カウンタ値を1つカウントアップする更新を行なうことになる。この処理は、ステップS404において説明する。
(c)コマンド受信およびデータ返信
ステップS402およびステップS403に示す処理であり、コマンド受信側のエンティティBによって実行される処理である。ステップS402がコマンドの受信と確認処理であり、ステップS403が、確認されたコマンドに基づくデータ処理結果の暗号化処理を含む送信データの生成と送信処理に相当する。
ステップS402のコマンドの受信と確認処理には以下の処理が含まれる。
B1.暗号文C、およびメッセージ認証子Tと、さらに、カウンタ値ctrを受信
B2.カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る
B3.ENC(ENC(ctr))+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Cを復号してコマンドを得る
B4.ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子T'生成
B5.T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る
上記処理B1〜B5について説明する。
処理B1[暗号文C、およびメッセージ認証子Tと、さらに、カウンタ値ctrを受信]は、エンティティAからの暗号文[C]とMAC値[T]と、さらに、カウンタ値ctrを受信する処理である。
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]は、エンティティAから受信したカウンタ値ctrと、エンティティBが保持するカウンタ値ctrとを比較して、カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定する処理である。初期状態では、エンティティAとエンティティBは、双方のカウンタ値は0に設定され、通信処理の進行に従って、双方のカウンタ値は、同期してカウントアップされており、正常な通信が進行している場合は、カウンタ値ctr≧カウンタ値ctrが成立する。この式が成立しない場合は、正常なデータ通信が阻害された場合、例えば、通信エラー、外部からの再送攻撃、改竄などが発生した可能性がある。この場合には、エンティティBは、受信コマンドに基づく処理を停止して、コマント待ち状態に戻る。
エンティティBが、コマンド待ち状態に戻った場合、エンティティAは、エンティティBからの返信データが受信できなくなり、予め定めた待機時間を越えた場合、コマンドの再送処理、すなわちi番目のコマンドを再送する処理を行なうことになる。この処理については、図9を参照して、後段で説明する。
まず、エンティティBにおいて、カウンタ値ctr≧カウンタ値ctrが成立した場合の処理について、説明する。この場合は、エンティティBは、処理B3以下を実行する。
処理B3[ENC(ENC(ctr))+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Cを復号してコマンドを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによるデータ復号処理である。図2(b2)に示す入力データとして、暗号文ブロック[C=C1〜Cmi]を入力して、ENC(ENC(ctr))+1をカウンタ初期値として設定し、ENC(ENC(ctr))+1〜ENC(ENC(ctr))+1+miを適用したカウンタモード暗号処理によって、平文ブロック[M1〜Mmi]を得る。
処理B4[ENC(ctr)をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子T'生成]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)の生成処理である。ここでは、処理B2において、エンティティAからの受信暗号文に基づく復号データとしての平文ブロック[M1〜Mmi]を入力とし、さらに、ENC(ctr)を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[T']を算出する。
処理B5[T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る]は、エンティティAから受信したオリジナル平文データに基づくメッセージ認証子Tと、受信暗号文の復号データに基づくメッセージ認証子T'が一致するか否か、すなわちT=T'が成立するか否かを判定する。T=T'が成立すれば、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mmi]に一致するデータであり改竄のないデータ(コマンド)であると判定し、次の処理に進む。T=T'が成立しない場合は、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mmi]に一致しないデータであり改竄のなされたデータであると判定し、次の処理に進むことなく、コマンド待ちの状態に戻る。
ここでのコマンド待ち状態も、先に処理B2において説明したコマンド待ち状態と同様であり、エンティティAは、エンティティBからの返信データが受信できなくなり、予め定めた待機時間を越えた場合、コマンドの再送処理、すなわちi番目のコマンドを再送する処理を行なうことになる。この処理については、図9を参照して、後段で説明する。T=T'が成立した場合の処理を先に説明する。T=T'が成立した場合、ステップS403を実行する。
なお、エンティティBも、実施例1,2と異なり、この時点でのカウンタの更新処理を実行することなく、ステップS403において飲み実行する。
ステップS403は、ステップS402において、改竄のないことが確認されたコマンドに基づくデータ処理結果の暗号化処理を含む送信データの生成と送信処理である。ステップS403の処理には、以下の処理が含まれる。
B6.niブロックの返信データを準備
B7.ENC(ENC(ENC(ctr)))をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する
B8.ENC(ENC(ENC(ENC(ctr))))+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る
B9.暗号文D、メッセージ認証子Uを送信する
B10.ctr←ctr+1
上記処理B6〜B10について説明する。
処理B6[niブロックの返信データを準備]
この処理は、エンティティAから受信した暗号文Cに基づく復号結果として得られたコマンドに基づく処理結果として、niブロックの返信データを準備する処理である。
処理B7[ENC(ENC(ENC(ctr)))をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)生成処理である。返信データを構成するni個の平文ブロック[M1〜Mni]を入力とし、さらに、ENC(ENC(ENC(ctr)))を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[U]を算出する。
本処理例では、エンティティAからの受信カウンタ値(ctr)を共通鍵Kを適用した3重暗号化データENC(ENC(ENC(ctr)))をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U生成する。
処理B8[ENC(ENC(ENC(ENC(ctr))))+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによる暗号文生成処理である。
本実施例では、エンティティAからの受信カウンタ値(ctr)を共通鍵Kを適用した4重暗号化データENC(ENC(ENC(ENC(ctr))))に1加算したデータENC(ENC(ENC(ENC(ctr))))+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの返信データを暗号化して、暗号文Dを得る。
この場合、niブロックの返信データを構成するブロック数はniであるので、カウンタENC(ENC(ENC(ENC(ctr))))+1〜ENC(ENC(ENC(ENC(ctr))))+1+niをカウンタ値として適用し、返信データを構成するni個のブロックを入力としたカウンタモード暗号化を行い、暗号化ブロックデータ[D]を得る。暗号化ブロックデータ[D]もni個のブロックから構成される暗号化ブロック[D1〜Dni]である。
処理B9[暗号文D、メッセージ認証子Uを送信する]は、上述した処理において生成した暗号文[D=D1〜Dni]と、メッセージ認証子[U]を送信する処理である。
処理B10[ctr←ctr+1]は、カウンタの更新処理であり、カウンタ値をctr+1として更新する。このカウンタ更新処理は、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理であり、本処理例では、
1つのカウンタ値ctrの暗号化態様を変更することで、CBC−MACの初期値、およびカウンタモードのカウンタ初期値を生成しているので、消費するカウンタ値は1つのカウンタ値ctrのみである。
従って、ctr+1〜を次の処理で利用するカウンタの値とするカウンタ更新処理、すなわち、
[ctr←ctr+1]
を行なっている。
(d)返信データ受信および確認
次に、エンティティBからの返信データを受信したエンティティAの処理がステップS404において実行される。ステップS404の返信データの受信と確認処理には以下の処理が含まれる。
A5.暗号文D、およびメッセージ認証子Uを受信
A6.ENC(ENC(ENC(ENC(ctr))))+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Dを復号して返信データを得る
A7.ENC(ENC(ENC(ctr)))をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U'生成
A8.U=U'ならば次に進む、そうでなければ処理を停止し、返信データ待ち状態に戻る
A9.ctr←ctr+1
上記処理A5〜A9について説明する。
処理A5[暗号文D、およびメッセージ認証子Uを受信]は、エンティティBからの暗号文[D]とMAC値[U]を受信する処理である。
処理A6[ENC(ENC(ENC(ENC(ctr))))+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して暗号文Dを復号して返信データを得る]は、図2(b2)を参照して説明したカウンタ(CTR)モードによるデータ復号処理である。図2(b2)に示す入力データとして、暗号文ブロック[D=D1〜Dni]を入力して、ENC(ENC(ENC(ENC(ctr)+1をカウンタ初期値として設定した暗号処理によって、平文返信データブロック[M1〜Mni]を得る。
本実施例では、エンティティAは、エンティティBのステップS403における返信データの暗号化に適用したカウンタ初期値と同様、カウンタ値(ctr)を共通鍵Kを適用した4重暗号化データENC(ENC(ENC(ENC(ctr))))に1加算したデータENC(ENC(ENC(ENC(ctr))))+1をカウンタモードのカウンタ初期値として、カウンタモードを適用して、niブロックの暗号文ブロック[D=D1〜Dni]を入力し、平文返信データブロック[M1〜Mni]を得る。
処理A7[ENC(ENC(ENC(ctr)))をCBC−MACの初期値IVとして、CBC−MACに基づいてメッセージ認証子U'生成]は、図2(b1)を参照して説明したCBC−MACによるメッセージ認証子(MAC)の生成処理である。ここでは、処理A6において、エンティティBからの受信暗号文に基づく復号データとしての平文ブロック[M1〜Mni]を入力とし、さらに、カウンタ値(ctr)の3重暗号化データENC(ENC(ENC(ctr)))を初期値(IV)として図2(b1)を参照して説明したCBC−MACによるMAC生成処理を実行して、メッセージ認証子:MAC[U']を算出する。
処理A8[U=U'ならば次に進む、そうでなければ処理を停止し、返信データ待ち状態に戻る]は、エンティティBから受信したオリジナル返信データに基づくメッセージ認証子Uと、受信暗号文の復号データに基づくメッセージ認証子U'が一致するか否か、すなわちU=U'が成立するか否かを判定する。U=U'が成立すれば、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mni]に一致するデータであり改竄のないデータ(返信データ)であると判定し、次の処理に進む。U=U'が成立しない場合は、受信データに基づく復号データは、オリジナルの平文データとしての平文ブロック[M1〜Mni]に一致しないデータであり改竄のなされた返信データであると判定し、次の処理に進むことなく、返信データ待ち状態に戻る。
この返信データ待ち状態に戻る処理後、予め定めた一定期間内に正常な返信データ(U=U'が成立する)が受信されない場合は、i番目のコマンドの再送信処理を実行することになる。この処理は、図9を参照して説明する。処理A8において、U=U'が成立した場合は、処理A9以下を実行することになる。
処理A9[ctr←ctr+1]は、カウンタの更新処理であり、カウンタ値をctr+1として更新する。このカウンタ更新処理も、使用済みのカウンタ値を後続の処理で使用しない設定とするための更新処理である。本処理例では、
1つのカウンタ値ctrの暗号化態様を変更することで、CBC−MACの初期値、およびカウンタモードのカウンタ初期値を生成しているので、消費するカウンタ値は1つのカウンタ値ctrのみである。
従って、ctr+1〜を次の処理で利用するカウンタの値とするカウンタ更新処理、すなわち、
[ctr←ctr+1]
を行なっている。
このカウンタ更新によって、カウンタ値は、エンティティA,Bで等しい値となり、同期のとれた値に設定される。
その後、エンティティAにおける次のコマンドの発行処理、エンティティBにおけるコマンドに基づく返信データ生成、送信処理、エンティティAにおける返信データの受信確認処理。これらの処理がステップS401〜S404と同様の処理として繰り返し実行される。ただし、カウンタ値は、双方の装置で、順次、更新される。
(e)コマンド再発行処理
次に、コマンドの再発行処理について、図9を参照して説明する。コマンドの再発行は、エンティティAが、エンティティBからの返信データを予め定めた待機時間内に受信できなかった場合に実行される。これは、単純な通信エラーの他、図8におけるステップS402において、エンティティBが、コマンド待ち状態になってしまった場合、すなわち、先に説明した処理としての、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]において、カウンタ値ctr≧カウンタ値ctrが成立しなかった場合、または、
処理B5[T=T'ならば次に進む、そうでなければ処理を停止し、コマンド待ち状態に戻る]において、T=T'が成立しなかった場合、
これらのケースにおいてもエンティティAは、コマンド再発行処理を実行する。
また、エンティティA側のステップS404における処理、
処理A8[メッセージ認証子U=U'ならば次に進む、そうでなければ処理を停止し、返信データ待ち状態に戻る]において、メッセージ認証子U=U'が成立しなかった場合にも、予め定めた待機時間内に正常な返信データが受領できない場合は、コマンド再発行処理を実行する。
図9に示す処理について説明する。エンティティAが、エンティティBからの正常な返信データを予め定めた待機時間内に受信できなかった場合、エンティティAは、ステップS405において、コマンドの再発行処理を実行する。ステップS405のコマンド再発行処理には、以下の処理が含まれる。
A21.ctr←ctr+1
A22.通常のコマンド発行処理(ステップS401と同様(前述のA1〜A4の処理))
処理A21[ctr←ctr+1]は、カウンタの更新処理であり、カウンタ値をctr+1として更新する。本処理例では、各コマンドと、返信データの送受信に応じて、CBC−MACの初期値と、カウンタモードのカウンタ初期値として1つのカウント値のみが適用される。これは、コマンドや返信データのブロック数に無関係である。
従って、エンティティAは、i番目のコマンドに対応する返信データのブロック数niを知らなくても、エンティティAは、i番目のコマンドに対する正常な返信データをエンティティBから受信できなかった場合、エンティティAに設定されたカウンタ値ctrをctr←ctr+1として、カウント値の更新を実行し、このカウンタ更新後に処理A22[通常のコマンド発行処理(ステップS401と同様(前述のA1〜A4の処理))]を実行する。処理A22は、ステップS401の処理と同様であり、適用するカウンタ値が更新された値[ctr←ctr+1]である点のみが異なる。
このコマンド再送処理によって、エンティティAは、新たなカウンタ値を適用したCBC−MACに基づくメッセージ認証子Tと、カウンタモードによる暗号文Cと、更新されたカウンタ値[ctr←ctr+1]をエンティティBに送信する。
エンティティBは、ステップS406において、図8のステップS402以下の処理を繰り返し実行する。ここで、エンティティBは、先に説明した処理B2、すなわち、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]
この処理を実行する。
この時点で、エンティティBのカウンタは、先に説明したステップS403におけるカウンタ更新処理、すなわち、
処理B10[ctr←ctr+1]を実行済みであるので、エンティティBのカウンタ値は、ctr+1として設定されている。
エンティティAから再発行コマンドiとともに送信されてくるカウンタは、カウンタ値[ctr←ctr+1]であり、エンティティBがこの時点で持つカウンタ値と等しい値となり、エンティティBにおけるステップS402のカウンタ値判定処理、すなわち、
処理B2[カウンタ値ctr≧カウンタ値ctrが成立するか否かを判定し、成立する場合は、次の処理に進み、成立しない場合は、コマンド待ち状態に戻る]
この判定処理において、カウンタ値ctr≧カウンタ値ctrが成立することになり、問題なく後続の処理を実行することが可能となる。
上記の実施例3の方式は、実施例1,2の方式と同様、エンティティAはコマンドとともにカウンタ値を送信し、エンティティB側で、自分の持っているカウンタ値とエンティティAから受信したカウンタ値の比較を実行して、カウンタ値の同期確認を行って、処理を進める構成であり、エンティティAが、コマンドの再発行を行なう場合は、エンティティBのカウンタ値よりも必ず大きな値を持つようカウンタ更新を行なうことで、Aのコマンド再送信はエンティティBにおいて必ず受理されることになる。
また、本実施例では、実施例1と異なり、コマンドや返信データの送受信の際に、双方で利用、更新されるカウント値は、コマンドや返信データのブロック数に無関係であり、[1]と決まっているため、エンティティAが、コマンドの再発行を行なう場合は、カウント値を1つカウントアップする更新を行なうことで、エンティティAとエンティティBのカウンタの値の同期をとることが可能となる。従って、実施例1と異なり、エンティティAは、エンティティBからの返信データのブロック数niを知っている必要がない。
また、本実施例3では、1回のコマンド発行、返信データ受信処理において消費するカウンタ値が[1]のみであるので、コマンド数が多数ある場合もカウンタ値の消費が少なく、設定カウンタ値の上限に到達して、再度、同じカウンタ値を利用するといった事態を防止することが可能となる。
本構成により、通信エラー等の発生により、コマンドや返信データが消失した場合や、外部からのリプレイ攻撃、データ改竄が発生した場合において、初期状態に戻って、最初から通信をやり直すことなく、エラー発生時点からのコマンド再送信を行なえばよく、効率的で確実なデータ通信が実現される。
このように本発明の実施例1〜3において説明した構成では、カウンタモードによる暗号文とCBC−MACによるメッセージ認証子を送受信するCCMモードをベースとした方式を適用することで、カウンタ値を順次、更新して、データ送受信を行い、データ送受信を行なう双方の装置において、カウンタ値を同期した状態とすることで、エラーのない処理が実現されるとともに、通信エラー等の発生により、コマンドや返信データが消失した場合や、外部からのリプレイ攻撃、データ改竄が発生した場合において、初期状態に戻って、最初から通信をやり直すことなく、エラー発生時点からのコマンド再送信を行なえばよく、効率的で確実なデータ通信が実現される。
[通信処理装置の構成]
上述したデータ通信およびデータ処理を実行する通信処理装置の構成例について、図10を参照して説明する。上述した処理を実行するエンティティは、データ通信可能な情報処理部、情報処理装置、PC、携帯端末、あるいはICカードなどの装置によって構成可能である。あるいはPC内に構成された1つの情報処理部とその他の情報処理部とがバスを介して通信する場合に、上述の処理を実行することも可能であり、この場合には、各情報処理部が、上述のエンティティA、エンティティBの役割を果たすことになる。
図10には、エンティティを構成する1つの設定例として、2つの通信処理装置210,310を示した。通信処理装置210、310、は例えばPCによって構成される。通信処理装置210は、データ処理部211、通信部212、記憶部213を有する。通信処理装置210と通信を実行する情報処理装置310も、データ処理部311、通信部312、記憶部313を有する。
図10に示す通信処理装置210、通信処理装置310は同様の構成を持つ例を示しているが、例えば、上述した各実施例では、エンティティAがコマンド発行部として機能し、エンティティBがコマンドに基づくデータ処理部として機能するように、通信処理装置210、通信処理装置310は、通信機能を持つことは必須であるが、それ以外は、様々な構成が可能であり、それぞれ異なる構成であってよい。
通信処理を実行するエンティティとして通信処理装置210の構成を代表して説明する。データ処理部211は、CPU等によって実行されるプログラムに従って、様々なデータ処理を実行する。記憶部213に記憶されたプログラム、パラメータ、データや、あるいは外部から入力するプログラム、コマンド、データに基づくデータ処理を実行する。
データ処理用のプログラムは、例えば記憶部213に格納され、CPUは、プログラムに基づく処理シーケンスに従ってデータ処理を実行する。このデータ処理には、例えば上述した各実施例において説明したコマンドの発行処理、コマンドに基づくデータ処理、送受信データの暗号処理、メッセージ認証子生成処理、カウンタ値更新処理、受信カウンタ値と自装置の記憶部に格納された自己カウンタ値の比較に基づく受信データの正当性確認処理などの処理も含まれる。これら各種のデータ処理シーケンスを規定したプログラムが、例えば記憶部213に格納され、このプログラムに従って処理を実行する。
通信部212は、通信処理装置310との通信を実行する。なお、通信は、例えばインターネット、LAN等のローカルネットワーク、ケーブル、バスなど様々な通信手段が適用可能である。通信処理装置310も、通信処理装置210と同様の構成を有し、同様の処理を実行する。記憶部213には、データ処理プログラムの他、カウンタ値が保持される。
図10に示す通信処理装置210、310は、例えば、各々いずれか一方が上述したエンティティAとしてコマンド発行処理を実行し、他方がエンティティBとしてデータ処理を実行する通信処理装置として構成することができる。なお、本発明は、コマンド発行およびコマンドに基づくデータ処理を実行する通信エンティティ間の通信にのみ適用可能なものではなく、その他の通信処理においても適用可能である。
本発明において提案された通信処理、すなわち、カウンタモードによる暗号文とCBC−MACによるメッセージ認証子を送受信するCCMモードをベースとした方式を適用し、カウンタ値を順次、更新してデータ送受信を行うとともに、カウンタ値を通知して、自己の保持するカウンタ値との比較によって同期確認を行なう構成とすることで、エラーのない処理が実現されるとともに、通信エラー等の発生により、コマンドや返信データが消失した場合や、外部からのリプレイ攻撃、データ改竄が発生した場合においても、初期状態に戻って最初から通信をやり直すことなく、エラー発生時点からのコマンド再発行によるデータ処理の再開が可能となり、効率的で確実なデータ通信、データ処理が実現される。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
以上、説明したように、本発明の構成によれば、複数のエンティティ間の通信において、カウンタモードによる暗号文とCBC−MACによるメッセージ認証子を送受信するいわゆるCCMモードをベースとした方式を適用し、カウンタ値を順次、更新してデータ送受信を行うとともに、カウンタ値を通知して、自己の保持するカウンタ値との比較によって同期確認を行なう構成とすることで、エラーのない処理が実現される。例えば、通信エラー等の発生により、コマンドや返信データが消失した場合や、外部からのリプレイ攻撃、データ改竄が発生した場合においても、初期状態に戻って最初から通信をやり直すことなく、エラー発生時点からのコマンド再発行によるデータ処理の再開が可能となり、効率的で確実なデータ通信、データ処理が実現される。
本発明の適用可能な通信処理構成例について説明する図である。 CCMモードをベースとした方式を適用した処理の概要について説明する図である。 CCMモードをベースとした方式を適用した一般的なデータ通信シーケンスについて説明する図である。 本発明の実施例1におけるCCMモードをベースとした方式を適用したデータ通信シーケンスについて説明する図である。 本発明の実施例1に従ったCCMモードをベースとした方式を適用したデータ通信シーケンスにおいて実行されるコマンド再発行処理について説明する図である。 本発明の実施例2におけるCCMモードをベースとした方式を適用したデータ通信シーケンスについて説明する図である。 本発明の実施例2に従ったCCMモードをベースとした方式を適用したデータ通信シーケンスにおいて実行されるコマンド再発行処理について説明する図である。 本発明の実施例3におけるCCMモードをベースとした方式を適用したデータ通信シーケンスについて説明する図である。 本発明の実施例3に従ったCCMモードをベースとした方式を適用したデータ通信シーケンスにおいて実行されるコマンド再発行処理について説明する図である。 データ通信を実行する通信処理装置の構成例について説明する図である。
符号の説明
101 エンティティA
102 エンティティB
151 演算部
210 通信処理装置
211 データ処理部
212 通信部
213 記憶部
310 通信処理装置
311 データ処理部
312 通信部
313 記憶部

Claims (24)

  1. カウンタ値を入力値として適用したカウンタモードに従った暗号処理によって生成する暗号文と、メッセージ認証子とを送受信する通信処理システムであり、
    暗号文およびメッセージ認証子を送信する少なくとも1つのデータ送信エンティティは、
    暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行する構成であり、
    暗号文およびメッセージ認証子およびカウンタ値を受信するデータ受信エンティティは、
    前記データ送信エンティティからの受信カウンタ値と、自己の保持カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行する構成であることを特徴とする通信処理システム。
  2. 前記データ送信エンティティは、
    前記データ受信エンティティからの正当な返信データが受信されない場合、送信済みデータの再送信処理を実行する構成であり、該データ再送信処理において、
    自己のカウンタ値を更新し、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行ない、生成暗号文とメッセージ認証子、および更新カウンタ値を送信する処理を実行する構成であることを特徴とする請求項1に記載の通信処理システム。
  3. 前記データ送信エンティティは、
    前記データ再送信処理において、前記データ受信エンティティから受信予定の返信データの構成ブロック数に基づいて、自己の保持するカウンタ値を更新して、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行なう構成であることを特徴とする請求項2に記載の通信処理システム。
  4. 前記データ送信エンティティは、
    前記データ再送信処理において、自己の保持するカウンタ値を、予め設定した値のカウントアップによる更新を実行して、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行なう構成であることを特徴とする請求項2に記載の通信処理システム。
  5. 前記予め設定した値は1または2であることを特徴とする請求項4に記載の通信処理システム。
  6. 前記データ送信エンティティは、
    暗号文またはメッセージ認証子の生成処理に際して、複数のカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)をメッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1をカウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする請求項1に記載の通信処理システム。
  7. 前記データ送信エンティティは、
    暗号文またはメッセージ認証子の生成処理に際して、2つのカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1を適用して生成した暗号化データであるEnc(ctr+1)を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする請求項1に記載の通信処理システム。
  8. 前記データ受信エンティティは、
    返信データに対応する暗号文またはメッセージ認証子の生成処理に際して、2つのカウンタ値を適用する構成であり、前記データ送信エンティティからの受信カウンタ値ctrに基づくカウンタ値の更新処理によって、
    ctr←ctr+2
    更新カウンタ値ctrを生成し、該更新カウンタ値ctrを適用した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1を適用して生成した暗号化データであるEnc(ctr+1)を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする請求項7に記載の通信処理システム。
  9. 前記データ送信エンティティは、
    暗号文またはメッセージ認証子の生成処理に際して、1つのカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctrを適用して生成した暗号化データであるEnc(Enc(ctr))+1を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする請求項1に記載の通信処理システム。
  10. 前記データ受信エンティティは、
    返信データに対応する暗号文またはメッセージ認証子の生成処理に際して、1つのカウンタ値を適用する構成であり、前記データ送信エンティティからの受信カウンタ値ctrを適用した暗号化データであるEnc(Enc(Enc(ctr)))を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctrを適用した暗号化データであるEnc(Enc(Enc(Enc(ctr)))+1を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする請求項9に記載の通信処理システム。
  11. データ送信処理を実行する通信処理装置であり、
    カウンタ値を入力値として適用したカウンタモードに従った暗号処理による暗号文生成処理と、メッセージ認証子の生成処理を実行するデータ処理部と、
    暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行する通信部と、
    を有することを特徴とする通信処理装置。
  12. 前記通信処理装置は、
    データ受信エンティティからの正当な返信データが受信されない場合、送信済みデータの再送信処理を実行する構成であり、該データ再送信処理において、
    自己のカウンタ値を更新し、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行ない、生成暗号文とメッセージ認証子、および更新カウンタ値を送信する処理を実行する構成であることを特徴とする請求項11に記載の通信処理装置。
  13. 前記通信処理装置は、
    前記データ再送信処理において、前記データ受信エンティティから受信予定の返信データの構成ブロック数に基づいて、自己の保持するカウンタ値を更新して、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行なう構成であることを特徴とする請求項12に記載の通信処理装置。
  14. 前記通信処理装置は、
    前記データ再送信処理において、自己の保持するカウンタ値を、予め設定した値のカウントアップによる更新を実行して、該更新カウンタ値を適用して再送信データについてのカウンタモードに従った暗号文生成およびメッセージ認証子生成を行なう構成であることを特徴とする請求項12に記載の通信処理装置。
  15. 前記予め設定した値は1または2であることを特徴とする請求項14に記載の通信処理装置。
  16. 前記通信処理装置は、
    暗号文またはメッセージ認証子の生成処理に際して、複数のカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)をメッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1をカウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする請求項11に記載の通信処理装置。
  17. 前記通信処理装置は、
    暗号文またはメッセージ認証子の生成処理に際して、2つのカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctr+1を適用して生成した暗号化データであるEnc(ctr+1)を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする請求項11に記載の通信処理装置。
  18. 前記通信処理装置は、
    暗号文またはメッセージ認証子の生成処理に際して、1つのカウンタ値を適用する構成であり、カウンタ値ctrを適用して生成した暗号化データであるEnc(ctr)を、メッセージ認証子生成に適用する初期値(IV)とし、カウンタ値ctrを適用して生成した暗号化データであるEnc(Enc(ctr))+1を、カウンタモードに従った暗号処理に適用するカウンタ初期値として利用する構成であることを特徴とする請求項11に記載の通信処理装置。
  19. 通信データの受信処理および正当性確認を実行するデータ処理装置であり、
    カウンタモードに従った暗号処理によって生成された暗号文と、メッセージ認証子と、前記メッセージ認証子生成処理またはカウンタモードに従った暗号処理において適用したカウンタ値を受信する通信部と、
    自装置で更新処理を実行する自己カウンタ値を保持する記憶部と、
    前記通信部において受信したカウンタ値と、前記記憶部に保持された自己カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行するデータ処理部と、
    を有することを特徴とするデータ処理装置。
  20. カウンタ値を入力値として適用したカウンタモードに従った暗号処理によって生成する暗号文と、メッセージ認証子とを送受信する通信処理方法であり、
    暗号文およびメッセージ認証子を送信する少なくとも1つのデータ送信エンティティにおいて、暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行するステップと、
    暗号文およびメッセージ認証子およびカウンタ値を受信するデータ受信エンティティにおいて、前記データ送信エンティティからの受信カウンタ値と、自己の保持カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行するステップと、
    を有することを特徴とする通信処理方法。
  21. データ送信処理を実行する通信処理方法であり、
    カウンタ値を入力値として適用したカウンタモードに従った暗号処理による暗号文生成処理と、メッセージ認証子の生成処理を実行するデータ処理ステップと、
    暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行する通信ステップと、
    を有することを特徴とする通信処理方法。
  22. 通信データの受信処理および正当性確認を実行するデータ処理方法であり、
    カウンタモードに従った暗号処理によって生成された暗号文と、メッセージ認証子と、前記メッセージ認証子生成処理またはカウンタモードに従った暗号処理において適用したカウンタ値を受信する通信ステップと、
    前記通信ステップにおいて受信したカウンタ値と、記憶部に保持された自己カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行するデータ処理ステップと、
    を有することを特徴とするデータ処理方法。
  23. データ送信処理を通信処理装置において実行させるコンピュータ・プログラムであり、
    カウンタ値を入力値として適用したカウンタモードに従った暗号処理による暗号文生成処理と、メッセージ認証子の生成処理を実行するデータ処理ステップと、
    暗号文またはメッセージ認証子の送信処理に際して、送信暗号文またはメッセージ認証子の生成に適用した少なくとも1つのカウンタ値の送信を実行する通信ステップと、
    を有することを特徴とするコンピュータ・プログラム。
  24. 通信データの受信処理および正当性確認処理を通信処理装置において実行させるコンピュータ・プログラムであり、
    カウンタモードに従った暗号処理によって生成された暗号文と、メッセージ認証子と、前記メッセージ認証子生成処理またはカウンタモードに従った暗号処理において適用したカウンタ値を受信する通信ステップと、
    前記通信ステップにおいて受信したカウンタ値と、記憶部に保持された自己カウンタ値との比較を実行し、該比較結果に基づく受信データの正当性確認処理を実行するデータ処理ステップと、
    を有することを特徴とするコンピュータ・プログラム。
JP2005189298A 2005-06-29 2005-06-29 通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラム Pending JP2007013366A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005189298A JP2007013366A (ja) 2005-06-29 2005-06-29 通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005189298A JP2007013366A (ja) 2005-06-29 2005-06-29 通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラム

Publications (1)

Publication Number Publication Date
JP2007013366A true JP2007013366A (ja) 2007-01-18

Family

ID=37751313

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005189298A Pending JP2007013366A (ja) 2005-06-29 2005-06-29 通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラム

Country Status (1)

Country Link
JP (1) JP2007013366A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010068396A (ja) * 2008-09-12 2010-03-25 Toshiba Corp 暗号化装置、端末装置、暗号化プログラム及び方法、情報処理プログラム及び方法
JP2015125533A (ja) * 2013-12-26 2015-07-06 株式会社メガチップス 情報処理システム、通信装置、及び記憶装置
KR101591323B1 (ko) * 2014-11-05 2016-02-03 조선대학교산학협력단 데이터 전송이 가능한 단말 장치 및 상기 데이터 전송이 가능한 단말 장치의 부인 방지를 위한 데이터 전송 방법
WO2017010172A1 (ja) * 2015-07-15 2017-01-19 日立オートモティブシステムズ株式会社 ゲートウェイ装置およびその制御方法
US9800660B2 (en) 2013-03-21 2017-10-24 Panasonic Intellectual Property Management Co., Ltd. Communication device, communication system and communication method
WO2021020144A1 (ja) * 2019-07-30 2021-02-04 ソニー株式会社 データ処理装置、データ処理方法、およびプログラム
JP2022526934A (ja) * 2019-03-25 2022-05-27 マイクロン テクノロジー,インク. ブロックチェーンを基にしたメモリコマンドの正当性確認
JP7509148B2 (ja) 2019-07-30 2024-07-02 ソニーグループ株式会社 データ処理装置、データ処理方法、およびプログラム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010068396A (ja) * 2008-09-12 2010-03-25 Toshiba Corp 暗号化装置、端末装置、暗号化プログラム及び方法、情報処理プログラム及び方法
US9800660B2 (en) 2013-03-21 2017-10-24 Panasonic Intellectual Property Management Co., Ltd. Communication device, communication system and communication method
JP2015125533A (ja) * 2013-12-26 2015-07-06 株式会社メガチップス 情報処理システム、通信装置、及び記憶装置
KR101591323B1 (ko) * 2014-11-05 2016-02-03 조선대학교산학협력단 데이터 전송이 가능한 단말 장치 및 상기 데이터 전송이 가능한 단말 장치의 부인 방지를 위한 데이터 전송 방법
WO2017010172A1 (ja) * 2015-07-15 2017-01-19 日立オートモティブシステムズ株式会社 ゲートウェイ装置およびその制御方法
JP2017028345A (ja) * 2015-07-15 2017-02-02 日立オートモティブシステムズ株式会社 ゲートウェイ装置およびその制御方法
US10560286B2 (en) 2015-07-15 2020-02-11 Hitachi Automotive Systems, Ltd. Gateway device and control method for the same
JP2022526934A (ja) * 2019-03-25 2022-05-27 マイクロン テクノロジー,インク. ブロックチェーンを基にしたメモリコマンドの正当性確認
WO2021020144A1 (ja) * 2019-07-30 2021-02-04 ソニー株式会社 データ処理装置、データ処理方法、およびプログラム
US12019766B2 (en) 2019-07-30 2024-06-25 Sony Group Corporation Data processing device, data processing method, and program
JP7509148B2 (ja) 2019-07-30 2024-07-02 ソニーグループ株式会社 データ処理装置、データ処理方法、およびプログラム

Similar Documents

Publication Publication Date Title
CN110073634B (zh) 数据转换系统及方法
Bellare et al. Breaking and provably repairing the SSH authenticated encryption scheme: A case study of the Encode-then-Encrypt-and-MAC paradigm
US5297208A (en) Secure file transfer system and method
CN110313146B (zh) 模糊度增强
JP5815294B2 (ja) セキュアなフィールドプログラマブルゲートアレイ(fpga)アーキテクチャ
JP4814339B2 (ja) 制約された暗号キー
JP3858527B2 (ja) データ生成装置およびデータ検証装置ならびにその方法
US8458461B2 (en) Methods and apparatus for performing authentication and decryption
US7171552B1 (en) Encrypting information in a communications network
US20020159598A1 (en) System and method of dynamic key generation for digital communications
US20160380770A1 (en) System and Method for Hash-Based Data Stream Authentication
JP2579440B2 (ja) メッセージ確認方法及び通信システム
US20060209843A1 (en) Secure spontaneous associations between networkable devices
WO2001039429A1 (en) Integrity check values (icv) based on pseudorandom binary matrices
JP2007013366A (ja) 通信処理装置、通信処理システム、および方法、並びにコンピュータ・プログラム
JP4379031B2 (ja) 情報伝送方式及びそれに用いる情報送信装置及び情報受信装置
WO2006041082A1 (ja) 正規コンテンツ確認システム
CN102843232A (zh) 生成安全装置密钥
JP2004325677A (ja) 暗号処理装置および暗号処理方法、並びにコンピュータ・プログラム
US7602911B2 (en) Method and system for enhancing cryptography-based security
JP2010510756A (ja) メッセージデータの非順次到着に対する許容性があるメッセージの完全性のための処理方法
JP2011151689A (ja) 情報処理装置および情報処理方法
CN115549910B (zh) 一种数据传输方法、设备以及存储介质
KR100963417B1 (ko) 보안 기능을 갖는 rfid 보안 장치 및 방법
JP2008177998A (ja) 同報通信暗号化方法、情報暗号化方法、情報復号方法、それらの装置、それらのプログラム、およびそれらの記録媒体