説明

情報処理装置及びプログラム

【課題】暗号文の復号を行う前に、受信した暗号文の正当性を検証する。
【解決手段】メモリ部3は、安全であることが確認されている安全コマンドと安全データを記憶しており、判断部4は、通信相手装置と鍵を共有した後に、通信相手装置から暗号文を受信した際に、通信シーケンスの経緯から、受信した暗号文の平文に含まれていると予測される安全コマンドと安全データを選択し、選択した安全コマンドと安全データを用いて、受信した暗号文の平文と等価であると予測される通信文を生成し、暗号部5が当該通信文を通信相手装置と共有している鍵を用いて暗号化し、当該暗号文に対して一方向演算を行ってダイジェストを生成し、受信した暗号文に対しても一方向演算を行ってダイジェストを生成し、ダイジェスト同士を比較し、一致した場合は、受信した暗号文は安全であり、暗号部5は暗号文を復号する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号文を検証する技術に関する。
【背景技術】
【0002】
従来の暗号通信装置は、通信データに含まれるレングスフィールドの値とデータフィールドのデータ長を比較し、レングスフィールドの値とデータ長が異なっていれば不正処理とみなし、不正な通信データに対する暗号処理を行わないことで、耐タンパ性を向上させていた(例えば、特許文献1)。
【0003】
また、特許文献1では、MPU(Micro Processing Unit)と暗号化ICの機能分担を行い、暗号化ICの規模を抑えることによって、暗号化ICのコストを抑える方法も開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−204322号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の暗号通信は、レングス値とデータ長の比較を行うため、不正なデータであってもレングスフィールドの値とデータ長が一致すれば正当なデータとみなされ、データ処理を行ってしまうという課題がある。
また、機能分担により暗号化ICのコストを抑えたとしても、共有化された鍵で、データを暗号、復号して処理を行うことには変わらないので、一方の機器の意図的なデータ改変に対抗できないという課題があった。
【0006】
この発明は上記のような課題を解決することを主な目的とし、暗号文の復号を行う前に、受信した暗号文の正当性を検証することで、安全性を高めることを主な目的とする。
【課題を解決するための手段】
【0007】
本発明に係る情報処理装置は、
通信相手装置からの暗号文を復号するための鍵を取得する鍵取得部と、
前記通信相手装置から暗号文を受信する受信部と、
安全であることが確認されている安全コマンドと安全コマンドの引数に用いられる安全であることが確認されている安全データに対して前記鍵取得部により取得された鍵を用いた暗号化を行い、暗号結果を用いて、前記暗号文を復号することなく、前記暗号文が安全コマンドと安全データで構成された安全通信文の暗号文であるか否かの検証を行う検証処理部とを有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、暗号文を復号することなく、暗号文が安全通信文の暗号文であるかどうかを検証しており、危険な暗号文を復号して障害が発生する事態を回避することができ、安全性を高めることができる。
【図面の簡単な説明】
【0009】
【図1】実施の形態1に係る暗号通信装置の構成例を示す図。
【図2】実施の形態1に係る暗号通信装置の動作例を示すフローチャート図。
【図3】実施の形態1に係る暗号通信装置の動作例を示すフローチャート図。
【図4】実施の形態1に係る暗号通信装置の動作例を示すフローチャート図。
【図5】実施の形態2に係る暗号通信装置の動作例を示すフローチャート図。
【図6】実施の形態2に係る暗号通信装置の動作例を示すフローチャート図。
【図7】実施の形態3に係る暗号通信装置の動作例を示すフローチャート図。
【図8】実施の形態3に係る暗号通信装置の動作例を示すフローチャート図。
【図9】実施の形態4に係る暗号通信装置の動作例を示すフローチャート図。
【図10】実施の形態1〜4に係る暗号通信装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【0010】
実施の形態1〜4では、相互認証により機器間の認証が行われ、鍵共有を確立し、機器間の安全な通信が確立したとしても、一方の機器の意図的なデータ改変などにより、他方の機器の動作異常などを引き起こさない安全な暗号通信装置であり、また、サイドチャネル攻撃に対する耐性のある暗号通信装置を説明する。
なお、実施の形態1では、暗号通信装置の動作の概要を説明し、実施の形態2〜4において暗号通信装置の動作の詳細を説明する。
【0011】
実施の形態1.
図1は、実施の形態1〜4に係る暗号通信装置の構成例を示す。
暗号通信装置1は、通信部2、メモリ部3、判断部4、暗号部5、乱数生成部6から構成される。
【0012】
通信部2は、通信を行う部分であり、データの変調、復調、および、通信制御を行う。
通信部2は、暗号通信を行う通信相手装置から暗号文を受信する。
通信部2は、受信部の例である。
【0013】
メモリ部3は、判断部4や暗号部5が論理演算や数値演算の際に一時的に使用するデータを格納するとともに、秘密情報である鍵等が記録される。
また、後述する認証シーケンスで使用される安全コマンド、安全データも格納される。
また、後述する認証シーケンスで使用される危険コマンド、危険データが格納されている場合もある。
安全コマンドは、安全であることが確認されているコマンドであり、例えば、暗号通信装置1の製造段階でメモリ部3に格納されているコマンドである。
また、安全データは、安全コマンドの引数となるデータであり、安全であることが確認されているデータである。例えば、暗号通信装置1の製造段階でメモリ部3に格納されているデータである。
危険コマンドは、暗号通信装置1に危害を及ぼす可能性のあるコマンドである。
また、危険データは、危険コマンドの引数となるデータである。
メモリ部3において鍵等の秘密情報が記録される領域は、アクセス制御などのセキュリティ機能が搭載されている。
【0014】
判断部4は、データの真偽判断や、全体を制御する機能を有する。
より具体的には、判断部4は、通信部2を介して、通信相手装置の認証を行う。
また、判断部4は、通信部2を介して、通信相手装置からの暗号文を復号するための鍵を通信相手装置から取得する。取得された鍵はメモリ部3に格納される。
また、判断部4は、安全コマンド、安全データに対して通信相手装置から取得した鍵を用いた暗号化を暗号部5に行わせ、暗号結果を用いて、通信相手装置からの暗号文を復号することなく、当該暗号文が安全コマンドと安全データで構成された安全通信文の暗号文であるか否かの検証を行う。
また、暗号部5により暗号文が復号された際に復号文の解析を行う。
判断部4は、鍵取得部、検証処理部、復号文解析部の例である。
【0015】
暗号部5は暗号演算を行う部分で、暗号化、復号を行うとともに、秘匿情報検索も行う。
より具体的には、判断部4が通信相手装置からの暗号文を検証する際に、安全コマンド、安全データに対して所定の暗号化を行う。暗号部5が行う暗号には、秘匿情報検索が可能な暗号方式も含まれる。
また、暗号部5は、判断部4により暗号文が安全であること、つまり、暗号文が安全通信文の暗号文であることが判断できたときに暗号文を復号する。
なお、暗号部5は復号部の例であるとともに検証処理部の例でもある。
【0016】
乱数生成部6は、乱数を発生する機能を有する。
【0017】
次に動作について説明する。
図2は、本実施の形態に係る暗号通信装置1の処理フローである。
S1から始まる。
S2の相互認証では、チャレンジ&レスポンス方式などを用いて、乱数生成部6で発生した乱数を通信部2を通じて通信相手装置に送信し、また、通信相手装置で生成された乱数を通信部2で受信し、メモリ部3に保存されている秘密情報である鍵を用いて乱数を暗号部5で暗号化して送り返す。
また、通信相手装置から送り返された値は、判断部4で生成した乱数と送り返された暗号文を暗号部5で復号した値とを比較し、一致しているか否かで、通信相手装置の正当性を検証する。
通信相手装置においても同様な動作にて暗号通信装置1の正当性の検証を行う。
相互に相手側の正当性を確認できた場合には、S3に進む。
相互認証に失敗した場合は、通信を打ち切る。
【0018】
S3の鍵共有では、相互認証で用いた乱数などを用いて、一時的な鍵を双方で共有する。
この処理は判断部4で行う。
【0019】
S4の状態判定では、現在の暗号通信装置1が置かれている状態を判断する。
これは、メモリ部3に安全コマンド、安全データが記憶されているか否か、通信シーケンスの進展状況などを判断材料として、次に行うべき処理を決める。
この判断は、相互認証を終え、相互に通信を行っている各々の装置毎に判断を行う。つまり、相互のネゴシエーションはなく、個々の装置が自らの判断で状態を判断する。
状態判定の結果に応じて、秘匿通信および処理(S5)か、秘匿データ検証通信(S6)のいずれかが行われる。
例えば、安全コマンド、安全データがメモリ部3に記憶されており、通信シーケンスの経緯から、通信相手装置から受信した暗号文を復号しなくても暗号文の構成が予測できる状態(受信した暗号文の平文がどのようなコマンド、データで構成されているのかが暗号文を復号しなくても予測できる状態)にあれば、秘匿データ検証通信(S6)が行われる。
一方、安全コマンド、安全データがメモリ部3に記憶されていても、例えば、まだ通信シーケンスの初期段階にあり、暗号文を復号しないと通信相手装置から受信した暗号文の構成が予測できない状態(受信した暗号文の平文がどのようなコマンド、データで構成されているのかを予測できない状態)にある場合は、秘匿通信及び処理(S5)が行われる。
なお、どのような状態にあるときにS5が選択され、また、どのような状態にあるときにS6が選択されるかは、システム管理者等が任意に決めることができる。
【0020】
S5の秘匿通信および処理では、送られてきた暗号文を暗号部5が復号し、判断部4がその復号文に対応する処理を実行する。
復号文に対応する処理が無い場合は無処理として、判断部4はエラーカウンタをカウントする。
エラーカウンタのカウント値が一定の値以上になれば、判断部4は、通信状態を解除する(通信相手装置との通信を終了する)。
また、復号文のデータの値によっては、自らの装置に危険を及ぼす恐れのある復号文は、メモリ部3に記憶する。
この記憶された復号文は、危険コマンドとして、秘匿データ検証通信で使用される。
自らの装置に危険を及ぼす恐れのある復号文とは、例えば、コマンドとして認められているが、設定データの値によっては装置の不具合を誘発する恐れのあるコマンドのことである。
具体的には、メモリ部3に記憶されている安全コマンド以外のコマンドが復号文に含まれている場合には、このようなコマンドを危険コマンドとして抽出し、危険コマンドの引数を危険データとして抽出する。
【0021】
次に、図3に秘匿通信および処理(S5)の処理フローを示す。
S51から始まり、S52で通信相手装置からの暗号文を受信し、S53で暗号部5が暗号文を復号し、S54で判断部4が復号文を解析して解析結果に応じたデータ処理を行う。
S54では、復号文に危険コマンドが含まれているか否かの判断も行い、危険コマンドが含まれていれば判断部4は危険コマンドをメモリ部3に格納する。
復号文に対応する処理が無い場合は無処理になるとともに前述のエラーカウンタをカウントアップする。
S55はレスポンス処理で、正常終了、異常終了などのレスポンスを行う。
S56で終了となる。
【0022】
S6の秘匿データ検証通信では、判断部4が、通信相手装置から受信した暗号文が安全であるか、つまり、通信相手装置から受信した暗号文が安全コマンド及び安全データで構成される安全通信文の暗号文であるかを、暗号文を復号せずに検証する。
【0023】
S6の秘匿データ検証通信では、図4に示したフローで処理が行われる。
通信部2が暗号文を受信する(S62)と、判断部4が暗号文のまま暗号文を検証する(S63)。
S63では、秘匿通信でメモリ部に記憶した自らの装置に危険を及ぼす恐れのある復号文、もしくは、装置製造時にあらかじめ記録した安全なコマンド、データを使って、検証が行われる。
検証に成功した暗号文は、暗号部5で復号化され(S64)、判断部4が復号文を解析し、復号文に応じたデータ処理(S65)がなされる。
その後レスポンス処理(S66)に移る。
検証に失敗した場合は、暗号文はなにも処理されず(復号されず)に、レスポンス処理に移る。
レスポンス処理では、処理状況に応じたレスポンスを返す。
なお、S63の検証処理の詳細は実施の形態2〜4で説明する。
【0024】
以上のように、本実施の形態1では、個々の装置の状態判定を各々の装置単独で判定できるようにしたので、通信相手に知られずに自らの状態を管理できるようになる。
その結果、他装置から攻撃を受けた場合は、通信後のデータ処理を実行しないので、被害を最小限に抑える効果がある。
【0025】
また、送られてきた暗号文を復号したデータ内容を判断し、自らの装置に危険を及ぼす恐れのある復号文を記憶したので、自らの装置に危険を及ぼす恐れのある処理を排除することが可能となるとともに、安全な使用法を順守する通信相手との通信を確立できる効果がある。
【0026】
また、秘匿通信でメモリ部に記憶した自らの装置に危険を及ぼす恐れのある復号文、もしくは、装置製造時にあらかじめ記録した安全なコマンド、データを使って、暗号文を検証するので、自らの装置に危険を及ぼす恐れのある処理を排除することが可能となるとともに、安全な使用法を順守する通信相手との通信を確立する効果がある。
【0027】
また、データ検証に失敗した場合は、暗号文はなにも処理されずに、レスポンス処理に移るようにしたので、複数の暗号処理を行わせ、その秘密情報を導き出すサイドチャネル攻撃に対しては、暗号処理自体が行われないので耐性を有することになる効果がある。
【0028】
以上、本実施の形態では、
通信部、判断部、乱数生成部、暗号部、メモリ部から構成される暗号通信装置において、暗号通信装置の状態判定を装置内で行い、装置内に安全なコマンド、データが保持されている場合、暗号文を復号する以前に、秘匿データの検証を行い、検証にパスした暗号文だけを復号する暗号通信装置を説明した。
【0029】
また、本実施の形態では、
メモリ部に保持された危険を及ぼす恐れのある復号文、もしくは、製造時にあらかじめ記録されたデータを用いて通信暗号文の検証を行うことを説明した。
【0030】
また、本実施の形態では、
メモリ部に保持される危険を及ぼす恐れのある復号文は、通信時に危険と判断された復号文を運用時に保持することを説明した。
【0031】
また、本実施の形態では、
復号文に対応する処理が無い場合、エラーカウンタをカウントし、エラーカウンタが一定数以上になれば、通信状態を解除することを説明した。
【0032】
実施の形態2.
以上の実施の形態1では、データ検証を暗号文のままで行うことを示したが、実施の形態2ではより詳細にデータ検証について述べる。
【0033】
図5は実施の形態2における事前準備の処理フローを示す。
S632で安全なコマンドとそのコマンドの引数として安全なデータを、メモリ部3に格納する。
安全なデータとは、コマンドが正常に動作するデータのことであり、1つのコマンドに対して複数のデータがあってもよい。
また、安全コマンドに対して引数として取りうる範囲、例えば、1〜100という具体的な数値や8桁の文字列という形で、安全データを設定してもよい。
このようなコマンドとデータの組を必要に応じて複数格納する。
【0034】
図6はデータ検証(図4のS63)の詳細な処理フローである。
S635では、判断部4が、メモリ部3に格納された安全なコマンドとデータで通信文を作成する。
コマンドのシーケンスをチェックすれば、次に来るコマンドの予測ができるので、図4のS62で受信した暗号文の平文に含まれる安全コマンドと安全データを予測し、予測した安全コマンドと安全データから、S62で受信した暗号文の平文と等価と予測される通信文を生成する。
ここで作成する通信文は1文乃至数文でよい。
なお、S635で予測した安全コマンドは検証用安全コマンドに相当し、安全データは検証用安全データに相当し、また、S635で生成した通信文は検証用通信文に相当する。
【0035】
S636では、S635で作成した通信文をS3で共有した共有鍵を用いて暗号部5が暗号化し、暗号文(暗号検証用通信文に相当)を得る。
この暗号文を暗号文1と呼ぶことにする。
S637では、判断部4が暗号文1に一方向性関数でその暗号文のダイジェスト(検証用通信文の一方向演算値に相当)を得る。
このダイジェストをダイジェスト1と呼ぶことにする。
【0036】
S638では、判断部4は、S62で受信した通信暗号文のダイジェスト(暗号文の一方向演算値に相当)を一方向性関数で算出する。
このダイジェストをダイジェスト2と呼ぶことにする。
また、受信した通信暗号文を暗号文2と呼ぶことにする。
【0037】
S639では、判断部4は、S637のダイジェスト1、S638のダイジェスト2を比較する。
この比較値を持って、データ検証S63の判断値とする。
つまり、ダイジェスト1とダイジェスト2が一致すれば、S62で受信した暗号文2は、安全コマンドと安全データで構成される安全通信文の暗号文であり、検証成功と判断する。
ダイジェスト1とダイジェスト2が一致しない場合は、S62で受信した暗号文2は安全通信文の暗号文ではないため、検証失敗と判断する。
【0038】
以上のように、本実施の形態2では、安全なコマンドとデータから構成される通信文を作り、共有した共有鍵で暗号化し、ダイジェストを算出したので、毎回変わる共有鍵を用いる暗号通信装置でも、自らの装置に危険を及ぼす恐れのある処理を排除することができる効果がある。
【0039】
また、本実施の形態2では、検証に失敗した場合は、暗号文はなにも処理されずに、レスポンス処理に移るようにしたので、複数の暗号処理を行わせ、その秘密情報を導き出すサイドチャネル攻撃に対して、耐性を有する効果がある。
【0040】
なお、本実施の形態2では一方向性関数を使って、ダイジェスト1とダイジェスト2を比較したが、暗号文1と暗号文2を比較しても同様の効果を奏する。
つまり、暗号文1と暗号文2が一致すれば、S62で受信した暗号文2は、安全コマンドと安全データで構成される安全通信文の暗号文であり、検証成功と判断する。
暗号文1と暗号文2が一致しない場合は、S62で受信した暗号文2は安全通信文の暗号文ではないため、検証失敗と判断する。
【0041】
以上、本実施の形態では、
メモリ部に保持された危険を及ぼす恐れのある復号文、もしくは、製造時にあらかじめ記録されたコマンド、データを、共有鍵で暗号化した暗号文のダイジェストを用いて通信暗号文の検証を行うことを説明した。
【0042】
また、本実施の形態では、
メモリ部に保持された危険を及ぼす恐れのある復号文、もしくは、製造時にあらかじめ記録されたコマンド、データを、共有鍵で暗号化した暗号文を用いて通信暗号文の検証を行うことを説明した。
【0043】
実施の形態3.
以上の実施の形態では、データ検証をダイジェスト値で行うものであるが、本実施の形態3では、暗号文のままデータ検証を行う方式について述べる。
【0044】
実施の形態3は、暗号化データの検索を行う秘匿情報検索技術を応用したものである。秘匿情報検索技術としては、IDベース暗号を応用したBonehらの方式などが知られている。
Bonehらの方式は、IDベース暗号を用いて秘匿検索を実現した方法である。
これは、キーワードをIDとして暗号化データや秘密鍵を生成する事で、暗号化したままキーワードの一致/不一致が判定できる方式である。
具体的には次の手順で、キーワードの一致/不一致を判定する。
IDをキーワードとして、IDベース暗号の公開鍵と秘密鍵を生成する。
次に、キーワードとは無関係な予め決められた判定用定数を前記公開鍵で暗号化し、検索タグを生成する。
検索タグにキーワードが含まれているか否かを判定するには、前記秘密鍵を用いて検索タグを復号化する。
復号化に成功すれば、すなわち、判定定数が確認できれば、IDをキーワードとした秘密鍵で復号できたので、キーワードが一致したと判定する。
復号化に失敗した場合は、IDをキーワードとした秘密鍵で復号できなかったので、キーワードが不一致であると判定する。
IDをキーワードとする秘密鍵、検索タグ、判定用定数の3つは、IDとは無関係な数値であるので、判定箇所は情報の内容を知ることなく、キーワードの一致/不一致が判定できるということで、暗号化したままキーワードの一致/不一致が判定できる秘匿情報検索方式と呼ぶ。
本実施の形態3では、秘匿情報検索に用いられる暗号方式を採用する。
【0045】
図7は実施の形態3における事前準備の処理フローを示す。
S6321で、暗号部5は、安全なコマンドとそのコマンドの引数として安全なデータを、S3で共有した共有鍵を用いて秘匿情報検索可能な暗号化方式で暗号化し、暗号化された安全コマンド及び安全データをメモリ部3に格納する。
安全なデータとは、コマンドが正常に動作するデータのことであり、1つのコマンドに対して複数のデータがあってもよい。
また、安全コマンドに対して引数として取りうる範囲、例えば、1〜100という具体的な数値や8桁の文字列という形で、安全データを設定してもよい。
このような暗号文(暗号化された安全コマンドと安全データ)を必要に応じて複数格納する。
【0046】
図8は実施の形態3におけるデータ検証(図4のS63)の詳細な処理フローである。
S6391では、判断部4は、安全なコマンドが通信暗号文に存在するかを、秘匿情報検索する。コマンドのシーケンスをチェックすることで、通信暗号文に存在するコマンドの予測が可能であるので、この検索は全ての安全なコマンドの暗号文に対して行う必要はない。
【0047】
S6392は、判断部4は、安全なデータが通信暗号文に存在するかを秘匿情報検索する。
このステップは、安全なコマンドがデータを引数として持たない場合は、省略する。
【0048】
判断部4は、S6391の検索値、S6392の検索値をデータ検証S63の判断値とする。
つまり、検索値が一致すれば、S62で受信した暗号文は、安全コマンドと安全データで構成される安全通信文の暗号文であり、検証成功と判断する。
一方、検索値が一致しない場合は、S62で受信した暗号文は安全通信文の暗号文ではないため、検証失敗と判断する。
【0049】
以上のように、本実施の形態3では、秘匿情報検索技術を用いるので、暗号文を復号しなくても、該当コマンド、データが存在するか否かを判定できる。
その結果、自らの装置に危険を及ぼす恐れのある処理を排除する効果がある。
【0050】
また、本実施の形態3では、安全なコマンド、安全なデータ以外は、暗号文は何も処理されずレスポンス処理に移るようにしたので、複数の暗号処理を行わせ、その秘密情報を導き出すサイドチャネル攻撃に対して耐性を有する効果がある。
【0051】
また、上記では、安全コマンド、安全データを秘匿情報検索可能な暗号化方式で暗号化し、通信暗号文に対して秘匿情報検索により安全コマンド、安全データが含まれているかを検証したが、安全コマンド、安全データの代わりに危険コマンド、危険データを用いて検証を行ってもよい。
つまり、図7のS6321において、暗号部5は、危険コマンドとそのコマンドの引数として用いられる危険データを、S3で共有した共有鍵を用いて秘匿情報検索可能な暗号化方式で暗号化し、暗号化された危険コマンド及び危険データをメモリ部3に格納する。
そして、図8のS6391において、判断部4は、危険コマンドが通信暗号文に存在するかを、秘匿情報検索し、S6392において、危険データが通信暗号文に存在するかを秘匿情報検索する。
更に、判断部4は、S6391の検索値、S6392の検索値を比較し、検索値が一致すれば、S62で受信した暗号文は、危険コマンドと危険データが含まれる危険通信文の暗号文であり、検証失敗と判断する。
一方、検索値が一致しない場合は、S62で受信した暗号文は危険通信文の暗号文ではないため、検証成功と判断する。
【0052】
以上、本実施の形態では、
メモリ部に安全なコマンドとそのコマンドの引数として安全なデータを、秘匿情報検索可能な暗号方式で暗号化し、その暗号文を用いて通信暗号文の検証を行うことを説明した。
【0053】
実施の形態4.
以上の実施の形態では、一つの通信暗号文に対してデータ検証を行うものであるが、本実施の形態4では、複数の通信暗号文に対してデータ検証を行うものである。
【0054】
事前準備として、図5に示すように、安全なコマンドと引数に使用される安全なデータをメモリ部3に格納する。
【0055】
図9はデータ検証(図4のS63)の詳細な処理フローである。
S635では、判断部4は、メモリ部3に格納された安全なコマンドとデータで通信シーケンスに沿って通信文を作成する。
S636では、暗号部5が、S635で作成した通信文をS3で共有した共有鍵を用いて暗号化し、暗号文を得る。
S63bでは、検証しようとする最後の通信文まで、暗号化された通信文が用意できたかを判断する。
最後でない場合は、S635、S636のステップを繰返し、暗号文を得る。
【0056】
S6371で、判断部4が、複数の暗号文を一つにまとめて、一方向性関数でダイジェストを求める。
このダイジェストをダイジェスト1と呼ぶことにする。
また、複数の暗号文を暗号文群1と呼ぶことにする。
【0057】
S6381では、判断部4が、S62で受信した複数の通信暗号文のダイジェストを一方向性関数で算出する。
この際、S6371の複数の暗号文とS6381の複数の通信暗号文の数は合っていなければならない。
ここで算出したダイジェストをダイジェスト2と呼ぶことにする。
また、複数の通信暗号文を暗号文群2と呼ぶことにする。
【0058】
S639では、S637のダイジェスト1、S638のダイジェスト2を比較する。
この比較値を持って、データ検証S63の判断値とする。
つまり、ダイジェスト1とダイジェスト2が一致すれば、S62で受信した暗号文群2は、安全コマンドと安全データで構成される安全通信文の暗号文群であり、検証成功と判断する。
ダイジェスト1とダイジェスト2が一致しない場合は、S62で受信した暗号文群2は安全通信文の暗号文群ではないため、検証失敗と判断する。
【0059】
以上のように、本実施の形態4では、安全なコマンドとデータから構成される通信文を複数作り、共有した共有鍵で暗号化し、複数の暗号文を一つにまとめてダイジェスト算出したので、ダイジェストに使用するメモリ量を削減する効果がある。
【0060】
また、本実施の形態4では、複数の暗号文と暗号通信文のダイジェストを一度に検証するので、検証に要する時間を削減するとともに、検証の回数を減らすことでデータ検証の効率的な実装が可能となる効果がある。
【0061】
なお、本実施の形態4では一方向性関数を使って、ダイジェスト1とダイジェスト2を比較したが、暗号文群1と暗号文群2を比較しても同様の効果を奏する。
【0062】
以上、本実施の形態では、
メモリ部に保持された製造時にあらかじめ記録された安全なデータから複数の通信文を作り、共有した共有鍵で暗号化し、複数の暗号文を一つにまとめたダイジェストを用いて通信暗号文の検証を行うことを説明した。
【0063】
また、本実施の形態では、
メモリ部に保持された製造時にあらかじめ記録された安全なデータから複数の通信文を作り、共有した共有鍵で暗号化し、複数の暗号文を用いて複数の通信暗号文の検証を行うことを説明した。
【0064】
最後に、実施の形態1〜4に示した暗号通信装置1のハードウェア構成例について説明する。
図10は、実施の形態1〜4に示す暗号通信装置1のハードウェア資源の一例を示す図である。
なお、図10の構成は、あくまでも暗号通信装置1のハードウェア構成の一例を示すものであり、暗号通信装置1のハードウェア構成は図10に記載の構成に限らず、他の構成であってもよい。
【0065】
図10において、暗号通信装置1は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜4で説明した「メモリ部」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0066】
通信ボード915は、例えば、、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されている。
【0067】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0068】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0069】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
暗号通信装置1の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0070】
上記プログラム群923には、実施の形態1〜4の説明において「〜部」(「メモリ部」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
【0071】
ファイル群924には、実施の形態1〜4の説明において、「〜の判断」、「〜の計算」、「〜の生成」、「〜の比較」、「〜の予測」、「〜の検証」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0072】
また、実施の形態1〜4の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1〜4で説明したフローチャートに示すステップ、手順、処理により、暗号通信装置1を方法として把握することができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1〜4の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」の手順や方法をコンピュータに実行させるものである。
【0073】
このように、実施の形態1〜4に示す暗号通信装置1は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0074】
1 暗号通信装置、2 通信部、3 メモリ部、4 判断部、5 暗号部、6 乱数生成部。

【特許請求の範囲】
【請求項1】
通信相手装置からの暗号文を復号するための鍵を取得する鍵取得部と、
前記通信相手装置から暗号文を受信する受信部と、
安全であることが確認されている安全コマンドと安全コマンドの引数に用いられる安全であることが確認されている安全データに対して前記鍵取得部により取得された鍵を用いた暗号化を行い、暗号結果を用いて、前記暗号文を復号することなく、前記暗号文が安全コマンドと安全データで構成された安全通信文の暗号文であるか否かの検証を行う検証処理部とを有することを特徴とする情報処理装置。
【請求項2】
前記検証処理部は、
複数の安全コマンドの中から前記受信部により受信された前記暗号文の平文に含まれていると予測される安全コマンドを検証用安全コマンドとして特定し、前記検証用安全コマンドと前記検証用安全コマンドの引数に用いられる安全データである検証用安全データとを用いて、前記暗号文の平文と等価であると予測される通信文を検証用通信文として生成し、
前記鍵取得部により取得された鍵を用いて、前記検証用通信文を暗号化して暗号検証用通信文を生成し、
前記暗号文に対して一方向演算を行って前記暗号文の一方向演算値を生成し、
前記暗号検証用通信文に対して一方向演算を行って前記暗号検証用通信文の一方向演算値を生成し、
生成した2つの一方向演算値を比較して前記暗号文が安全通信文の暗号文であるか否かの検証を行うことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記受信部は、
前記通信相手装置から複数の暗号文を受信し、
前記検証処理部は、
前記受信部により受信された暗号文ごとに検証用安全コマンドを特定し、暗号文ごとに、特定した検証用安全コマンドと当該検証用安全コマンドの引数に用いられる検証用安全データとを用いて検証用通信文を生成し、
複数の検証用通信文を前記鍵取得部により取得された鍵を用いて暗号化し、複数の暗号検証用通信文を生成し、
前記受信部により受信された複数の暗号文に対して一方向演算を行って前記複数の暗号文の一方向演算値を生成し、
前記複数の暗号検証用通信文に対して一方向演算を行って前記複数の暗号検証用通信文の一方向演算値を生成し、
生成した2つの一方向演算値を比較して前記複数の暗号文が安全通信文の暗号文であるか否かの検証を行うことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記検証処理部は、
複数の安全コマンドの中から前記受信部により受信された前記暗号文の平文に含まれていると予測される安全コマンドを検証用安全コマンドとして特定し、前記検証用安全コマンドと前記検証用安全コマンドの引数に用いられる安全データである検証用安全データとを用いて、前記暗号文の平文と等価であると予測される通信文を検証用通信文として生成し、
前記鍵取得部により取得された鍵を用いて、前記検証用通信文を暗号化して暗号検証用通信文を生成し、
前記暗号文と前記暗号検証用通信文を比較して前記暗号文が安全通信文の暗号文であるか否かの検証を行うことを特徴とする請求項1〜3のいずれかに記載の情報処理装置。
【請求項5】
前記検証処理部は、
前記通信相手装置との通信の経緯から、前記受信部により受信された前記暗号文の検証用安全コマンドと検証用安全データとを特定し、検証用通信文を生成することを特徴とする請求項1〜4のいずれかに記載の情報処理装置。
【請求項6】
前記検証処理部は、
複数の安全コマンドと前記複数の安全コマンドの引数に用いられる安全であることが確認されている複数の安全データの各々に対して、秘匿情報検索が可能な暗号化方式で、前記鍵取得部により取得された鍵を用いた暗号化を行い、
秘匿情報検索が可能な暗号化方式で暗号化された複数の安全コマンドと複数の安全データと、前記受信部により受信された前記暗号文に対して秘匿情報検索を行った結果とに基づき、前記暗号文が安全通信文の暗号文であるか否かの検証を行うことを特徴とする請求項1〜5のいずれかに記載の情報処理装置。
【請求項7】
前記情報処理装置は、更に、
前記検証処理部により前記暗号文が安全通信文の暗号文であると判断された後に、前記暗号文の復号を行う復号部を有することを特徴とする請求項1〜6のいずれかに記載の情報処理装置。
【請求項8】
前記情報処理装置は、
前記検証処理部により前記暗号文が安全通信文の暗号文でないと判断された場合に、前記暗号文を復号しないことを特徴とする請求項1〜7のいずれかに記載の情報処理装置。
【請求項9】
前記検証処理部は、
前記情報処理装置に危害を及ぼす可能性のある危険コマンドと危険コマンドの引数に用いられる危険データに対して前記鍵取得部により取得された鍵を用いた暗号化を行い、暗号結果を用いて、前記暗号文を復号することなく、前記暗号文が危険コマンドと危険データが含まれている危険通信文の暗号文であるか否かの検証を行うことを特徴とする請求項1〜8のいずれかに記載の情報処理装置。
【請求項10】
前記検証処理部は、
複数の危険コマンドと前記複数の危険コマンドの引数に用いられる複数の危険データの各々に対して、秘匿情報検索が可能な暗号化方式で、前記鍵取得部により取得された鍵を用いた暗号化を行い、
秘匿情報検索が可能な暗号化方式で暗号化された複数の危険コマンドと複数の危険データと、前記受信部により受信された前記暗号文に対して秘匿情報検索を行った結果とに基づき、前記暗号文が危険通信文の暗号文であるか否かの検証を行うことを特徴とする請求項9に記載の情報処理装置。
【請求項11】
前記復号部は、
前記検証処理部により安全通信文の暗号文であることが確認されていない暗号文を復号する場合があり、
前記情報処理装置は、更に、
前記復号部により復号された復号文を解析し、前記情報処理装置に危害を及ぼす可能性のある危険コマンドが前記復号文に含まれている場合に、前記危険コマンドを抽出する復号文解析部を有することを特徴とする請求項7に記載の情報処理装置。
【請求項12】
前記復号部は、
前記検証処理部により安全通信文の暗号文であることが確認されていない暗号文を復号する場合があり、
前記情報処理装置は、更に、
前記復号部により復号された復号文を解析し、前記復号文に対する処理が発生しない場合に、所定のエラーカウンタをカウントし、前記エラーカウンタのカウント値が一定値以上となった際に、前記通信相手装置との通信を終了する復号文解析部を有することを特徴とする請求項7に記載の情報処理装置。
【請求項13】
通信相手装置からの暗号文を復号するための鍵を取得する鍵取得処理と、
前記通信相手装置から暗号文を受信する受信処理と、
安全であることが確認されている安全コマンドと安全コマンドの引数に用いられる安全であることが確認されている安全データに対して前記鍵取得処理により取得された鍵を用いた暗号化を行い、暗号結果を用いて、前記暗号文を復号することなく、前記暗号文が安全コマンドと安全データで構成された安全通信文の暗号文であるか否かの検証を行う検証処理とをコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−234050(P2011−234050A)
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願番号】特願2010−101408(P2010−101408)
【出願日】平成22年4月26日(2010.4.26)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】