(57)【特許請求の範囲】
【請求項１】
通信相手装置からの暗号文を復号するための鍵を取得する鍵取得部と、
前記通信相手装置から暗号文を受信する受信部と、
安全であることが確認されている安全コマンドと安全コマンドの引数に用いられる安全であることが確認されている安全データに対して前記鍵取得部により取得された鍵を用いた暗号化を行い、暗号結果を用いて、前記暗号文を復号することなく、前記暗号文が安全コマンドと安全データで構成された安全通信文の暗号文であるか否かの検証を行う検証処理部とを有することを特徴とする情報処理装置。
【請求項２】
前記検証処理部は、
複数の安全コマンドの中から前記受信部により受信された前記暗号文の平文に含まれていると予測される安全コマンドを検証用安全コマンドとして特定し、前記検証用安全コマンドと前記検証用安全コマンドの引数に用いられる安全データである検証用安全データとを用いて、前記暗号文の平文と等価であると予測される通信文を検証用通信文として生成し、
前記鍵取得部により取得された鍵を用いて、前記検証用通信文を暗号化して暗号検証用通信文を生成し、
前記暗号文に対して一方向演算を行って前記暗号文の一方向演算値を生成し、
前記暗号検証用通信文に対して一方向演算を行って前記暗号検証用通信文の一方向演算値を生成し、
生成した２つの一方向演算値を比較して前記暗号文が安全通信文の暗号文であるか否かの検証を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記受信部は、
前記通信相手装置から複数の暗号文を受信し、
前記検証処理部は、
前記受信部により受信された暗号文ごとに検証用安全コマンドを特定し、暗号文ごとに、特定した検証用安全コマンドと当該検証用安全コマンドの引数に用いられる検証用安全データとを用いて検証用通信文を生成し、
複数の検証用通信文を前記鍵取得部により取得された鍵を用いて暗号化し、複数の暗号検証用通信文を生成し、
前記受信部により受信された複数の暗号文に対して一方向演算を行って前記複数の暗号文の一方向演算値を生成し、
前記複数の暗号検証用通信文に対して一方向演算を行って前記複数の暗号検証用通信文の一方向演算値を生成し、
生成した２つの一方向演算値を比較して前記複数の暗号文が安全通信文の暗号文であるか否かの検証を行うことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記検証処理部は、
複数の安全コマンドの中から前記受信部により受信された前記暗号文の平文に含まれていると予測される安全コマンドを検証用安全コマンドとして特定し、前記検証用安全コマンドと前記検証用安全コマンドの引数に用いられる安全データである検証用安全データとを用いて、前記暗号文の平文と等価であると予測される通信文を検証用通信文として生成し、
前記鍵取得部により取得された鍵を用いて、前記検証用通信文を暗号化して暗号検証用通信文を生成し、
前記暗号文と前記暗号検証用通信文を比較して前記暗号文が安全通信文の暗号文であるか否かの検証を行うことを特徴とする請求項１〜３のいずれかに記載の情報処理装置。
【請求項５】
前記検証処理部は、
前記通信相手装置との通信の経緯から、前記受信部により受信された前記暗号文の検証用安全コマンドと検証用安全データとを特定し、検証用通信文を生成することを特徴とする請求項１〜４のいずれかに記載の情報処理装置。
【請求項６】
前記検証処理部は、
複数の安全コマンドと前記複数の安全コマンドの引数に用いられる安全であることが確認されている複数の安全データの各々に対して、秘匿情報検索が可能な暗号化方式で、前記鍵取得部により取得された鍵を用いた暗号化を行い、
秘匿情報検索が可能な暗号化方式で暗号化された複数の安全コマンドと複数の安全データと、前記受信部により受信された前記暗号文に対して秘匿情報検索を行った結果とに基づき、前記暗号文が安全通信文の暗号文であるか否かの検証を行うことを特徴とする請求項１〜５のいずれかに記載の情報処理装置。
【請求項７】
前記情報処理装置は、更に、
前記検証処理部により前記暗号文が安全通信文の暗号文であると判断された後に、前記暗号文の復号を行う復号部を有することを特徴とする請求項１〜６のいずれかに記載の情報処理装置。
【請求項８】
前記情報処理装置は、
前記検証処理部により前記暗号文が安全通信文の暗号文でないと判断された場合に、前記暗号文を復号しないことを特徴とする請求項１〜７のいずれかに記載の情報処理装置。
【請求項９】
前記検証処理部は、
前記情報処理装置に危害を及ぼす可能性のある危険コマンドと危険コマンドの引数に用いられる危険データに対して前記鍵取得部により取得された鍵を用いた暗号化を行い、暗号結果を用いて、前記暗号文を復号することなく、前記暗号文が危険コマンドと危険データが含まれている危険通信文の暗号文であるか否かの検証を行うことを特徴とする請求項１〜８のいずれかに記載の情報処理装置。
【請求項１０】
前記検証処理部は、
複数の危険コマンドと前記複数の危険コマンドの引数に用いられる複数の危険データの各々に対して、秘匿情報検索が可能な暗号化方式で、前記鍵取得部により取得された鍵を用いた暗号化を行い、
秘匿情報検索が可能な暗号化方式で暗号化された複数の危険コマンドと複数の危険データと、前記受信部により受信された前記暗号文に対して秘匿情報検索を行った結果とに基づき、前記暗号文が危険通信文の暗号文であるか否かの検証を行うことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記復号部は、
前記検証処理部により安全通信文の暗号文であることが確認されていない暗号文を復号する場合があり、
前記情報処理装置は、更に、
前記復号部により復号された復号文を解析し、前記情報処理装置に危害を及ぼす可能性のある危険コマンドが前記復号文に含まれている場合に、前記危険コマンドを抽出する復号文解析部を有することを特徴とする請求項７に記載の情報処理装置。
【請求項１２】
前記復号部は、
前記検証処理部により安全通信文の暗号文であることが確認されていない暗号文を復号する場合があり、
前記情報処理装置は、更に、
前記復号部により復号された復号文を解析し、前記復号文に対する処理が発生しない場合に、所定のエラーカウンタをカウントし、前記エラーカウンタのカウント値が一定値以上となった際に、前記通信相手装置との通信を終了する復号文解析部を有することを特徴とする請求項７に記載の情報処理装置。
【請求項１３】
通信相手装置からの暗号文を復号するための鍵を取得する鍵取得処理と、
前記通信相手装置から暗号文を受信する受信処理と、
安全であることが確認されている安全コマンドと安全コマンドの引数に用いられる安全であることが確認されている安全データに対して前記鍵取得処理により取得された鍵を用いた暗号化を行い、暗号結果を用いて、前記暗号文を復号することなく、前記暗号文が安全コマンドと安全データで構成された安全通信文の暗号文であるか否かの検証を行う検証処理とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号文を検証する技術に関する。
【背景技術】
【０００２】
従来の暗号通信装置は、通信データに含まれるレングスフィールドの値とデータフィールドのデータ長を比較し、レングスフィールドの値とデータ長が異なっていれば不正処理とみなし、不正な通信データに対する暗号処理を行わないことで、耐タンパ性を向上させていた（例えば、特許文献１）。
【０００３】
また、特許文献１では、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と暗号化ＩＣの機能分担を行い、暗号化ＩＣの規模を抑えることによって、暗号化ＩＣのコストを抑える方法も開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２０４３２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の暗号通信は、レングス値とデータ長の比較を行うため、不正なデータであってもレングスフィールドの値とデータ長が一致すれば正当なデータとみなされ、データ処理を行ってしまうという課題がある。
また、機能分担により暗号化ＩＣのコストを抑えたとしても、共有化された鍵で、データを暗号、復号して処理を行うことには変わらないので、一方の機器の意図的なデータ改変に対抗できないという課題があった。
【０００６】
この発明は上記のような課題を解決することを主な目的とし、暗号文の復号を行う前に、受信した暗号文の正当性を検証することで、安全性を高めることを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、
通信相手装置からの暗号文を復号するための鍵を取得する鍵取得部と、
前記通信相手装置から暗号文を受信する受信部と、
安全であることが確認されている安全コマンドと安全コマンドの引数に用いられる安全であることが確認されている安全データに対して前記鍵取得部により取得された鍵を用いた暗号化を行い、暗号結果を用いて、前記暗号文を復号することなく、前記暗号文が安全コマンドと安全データで構成された安全通信文の暗号文であるか否かの検証を行う検証処理部とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、暗号文を復号することなく、暗号文が安全通信文の暗号文であるかどうかを検証しており、危険な暗号文を復号して障害が発生する事態を回避することができ、安全性を高めることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る暗号通信装置の構成例を示す図。
【図２】実施の形態１に係る暗号通信装置の動作例を示すフローチャート図。
【図３】実施の形態１に係る暗号通信装置の動作例を示すフローチャート図。
【図４】実施の形態１に係る暗号通信装置の動作例を示すフローチャート図。
【図５】実施の形態２に係る暗号通信装置の動作例を示すフローチャート図。
【図６】実施の形態２に係る暗号通信装置の動作例を示すフローチャート図。
【図７】実施の形態３に係る暗号通信装置の動作例を示すフローチャート図。
【図８】実施の形態３に係る暗号通信装置の動作例を示すフローチャート図。
【図９】実施の形態４に係る暗号通信装置の動作例を示すフローチャート図。
【図１０】実施の形態１〜４に係る暗号通信装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１〜４では、相互認証により機器間の認証が行われ、鍵共有を確立し、機器間の安全な通信が確立したとしても、一方の機器の意図的なデータ改変などにより、他方の機器の動作異常などを引き起こさない安全な暗号通信装置であり、また、サイドチャネル攻撃に対する耐性のある暗号通信装置を説明する。
なお、実施の形態１では、暗号通信装置の動作の概要を説明し、実施の形態２〜４において暗号通信装置の動作の詳細を説明する。
【００１１】
実施の形態１．
図１は、実施の形態１〜４に係る暗号通信装置の構成例を示す。
暗号通信装置１は、通信部２、メモリ部３、判断部４、暗号部５、乱数生成部６から構成される。
【００１２】
通信部２は、通信を行う部分であり、データの変調、復調、および、通信制御を行う。
通信部２は、暗号通信を行う通信相手装置から暗号文を受信する。
通信部２は、受信部の例である。
【００１３】
メモリ部３は、判断部４や暗号部５が論理演算や数値演算の際に一時的に使用するデータを格納するとともに、秘密情報である鍵等が記録される。
また、後述する認証シーケンスで使用される安全コマンド、安全データも格納される。
また、後述する認証シーケンスで使用される危険コマンド、危険データが格納されている場合もある。
安全コマンドは、安全であることが確認されているコマンドであり、例えば、暗号通信装置１の製造段階でメモリ部３に格納されているコマンドである。
また、安全データは、安全コマンドの引数となるデータであり、安全であることが確認されているデータである。例えば、暗号通信装置１の製造段階でメモリ部３に格納されているデータである。
危険コマンドは、暗号通信装置１に危害を及ぼす可能性のあるコマンドである。
また、危険データは、危険コマンドの引数となるデータである。
メモリ部３において鍵等の秘密情報が記録される領域は、アクセス制御などのセキュリティ機能が搭載されている。
【００１４】
判断部４は、データの真偽判断や、全体を制御する機能を有する。
より具体的には、判断部４は、通信部２を介して、通信相手装置の認証を行う。
また、判断部４は、通信部２を介して、通信相手装置からの暗号文を復号するための鍵を通信相手装置から取得する。取得された鍵はメモリ部３に格納される。
また、判断部４は、安全コマンド、安全データに対して通信相手装置から取得した鍵を用いた暗号化を暗号部５に行わせ、暗号結果を用いて、通信相手装置からの暗号文を復号することなく、当該暗号文が安全コマンドと安全データで構成された安全通信文の暗号文であるか否かの検証を行う。
また、暗号部５により暗号文が復号された際に復号文の解析を行う。
判断部４は、鍵取得部、検証処理部、復号文解析部の例である。
【００１５】
暗号部５は暗号演算を行う部分で、暗号化、復号を行うとともに、秘匿情報検索も行う。
より具体的には、判断部４が通信相手装置からの暗号文を検証する際に、安全コマンド、安全データに対して所定の暗号化を行う。暗号部５が行う暗号には、秘匿情報検索が可能な暗号方式も含まれる。
また、暗号部５は、判断部４により暗号文が安全であること、つまり、暗号文が安全通信文の暗号文であることが判断できたときに暗号文を復号する。
なお、暗号部５は復号部の例であるとともに検証処理部の例でもある。
【００１６】
乱数生成部６は、乱数を発生する機能を有する。
【００１７】
次に動作について説明する。
図２は、本実施の形態に係る暗号通信装置１の処理フローである。
Ｓ１から始まる。
Ｓ２の相互認証では、チャレンジ＆レスポンス方式などを用いて、乱数生成部６で発生した乱数を通信部２を通じて通信相手装置に送信し、また、通信相手装置で生成された乱数を通信部２で受信し、メモリ部３に保存されている秘密情報である鍵を用いて乱数を暗号部５で暗号化して送り返す。
また、通信相手装置から送り返された値は、判断部４で生成した乱数と送り返された暗号文を暗号部５で復号した値とを比較し、一致しているか否かで、通信相手装置の正当性を検証する。
通信相手装置においても同様な動作にて暗号通信装置１の正当性の検証を行う。
相互に相手側の正当性を確認できた場合には、Ｓ３に進む。
相互認証に失敗した場合は、通信を打ち切る。
【００１８】
Ｓ３の鍵共有では、相互認証で用いた乱数などを用いて、一時的な鍵を双方で共有する。
この処理は判断部４で行う。
【００１９】
Ｓ４の状態判定では、現在の暗号通信装置１が置かれている状態を判断する。
これは、メモリ部３に安全コマンド、安全データが記憶されているか否か、通信シーケンスの進展状況などを判断材料として、次に行うべき処理を決める。
この判断は、相互認証を終え、相互に通信を行っている各々の装置毎に判断を行う。つまり、相互のネゴシエーションはなく、個々の装置が自らの判断で状態を判断する。
状態判定の結果に応じて、秘匿通信および処理（Ｓ５）か、秘匿データ検証通信（Ｓ６）のいずれかが行われる。
例えば、安全コマンド、安全データがメモリ部３に記憶されており、通信シーケンスの経緯から、通信相手装置から受信した暗号文を復号しなくても暗号文の構成が予測できる状態（受信した暗号文の平文がどのようなコマンド、データで構成されているのかが暗号文を復号しなくても予測できる状態）にあれば、秘匿データ検証通信（Ｓ６）が行われる。
一方、安全コマンド、安全データがメモリ部３に記憶されていても、例えば、まだ通信シーケンスの初期段階にあり、暗号文を復号しないと通信相手装置から受信した暗号文の構成が予測できない状態（受信した暗号文の平文がどのようなコマンド、データで構成されているのかを予測できない状態）にある場合は、秘匿通信及び処理（Ｓ５）が行われる。
なお、どのような状態にあるときにＳ５が選択され、また、どのような状態にあるときにＳ６が選択されるかは、システム管理者等が任意に決めることができる。
【００２０】
Ｓ５の秘匿通信および処理では、送られてきた暗号文を暗号部５が復号し、判断部４がその復号文に対応する処理を実行する。
復号文に対応する処理が無い場合は無処理として、判断部４はエラーカウンタをカウントする。
エラーカウンタのカウント値が一定の値以上になれば、判断部４は、通信状態を解除する（通信相手装置との通信を終了する）。
また、復号文のデータの値によっては、自らの装置に危険を及ぼす恐れのある復号文は、メモリ部３に記憶する。
この記憶された復号文は、危険コマンドとして、秘匿データ検証通信で使用される。
自らの装置に危険を及ぼす恐れのある復号文とは、例えば、コマンドとして認められているが、設定データの値によっては装置の不具合を誘発する恐れのあるコマンドのことである。
具体的には、メモリ部３に記憶されている安全コマンド以外のコマンドが復号文に含まれている場合には、このようなコマンドを危険コマンドとして抽出し、危険コマンドの引数を危険データとして抽出する。
【００２１】
次に、図３に秘匿通信および処理（Ｓ５）の処理フローを示す。
Ｓ５１から始まり、Ｓ５２で通信相手装置からの暗号文を受信し、Ｓ５３で暗号部５が暗号文を復号し、Ｓ５４で判断部４が復号文を解析して解析結果に応じたデータ処理を行う。
Ｓ５４では、復号文に危険コマンドが含まれているか否かの判断も行い、危険コマンドが含まれていれば判断部４は危険コマンドをメモリ部３に格納する。
復号文に対応する処理が無い場合は無処理になるとともに前述のエラーカウンタをカウントアップする。
Ｓ５５はレスポンス処理で、正常終了、異常終了などのレスポンスを行う。
Ｓ５６で終了となる。
【００２２】
Ｓ６の秘匿データ検証通信では、判断部４が、通信相手装置から受信した暗号文が安全であるか、つまり、通信相手装置から受信した暗号文が安全コマンド及び安全データで構成される安全通信文の暗号文であるかを、暗号文を復号せずに検証する。
【００２３】
Ｓ６の秘匿データ検証通信では、図４に示したフローで処理が行われる。
通信部２が暗号文を受信する（Ｓ６２）と、判断部４が暗号文のまま暗号文を検証する（Ｓ６３）。
Ｓ６３では、秘匿通信でメモリ部に記憶した自らの装置に危険を及ぼす恐れのある復号文、もしくは、装置製造時にあらかじめ記録した安全なコマンド、データを使って、検証が行われる。
検証に成功した暗号文は、暗号部５で復号化され（Ｓ６４）、判断部４が復号文を解析し、復号文に応じたデータ処理（Ｓ６５）がなされる。
その後レスポンス処理（Ｓ６６）に移る。
検証に失敗した場合は、暗号文はなにも処理されず（復号されず）に、レスポンス処理に移る。
レスポンス処理では、処理状況に応じたレスポンスを返す。
なお、Ｓ６３の検証処理の詳細は実施の形態２〜４で説明する。
【００２４】
以上のように、本実施の形態１では、個々の装置の状態判定を各々の装置単独で判定できるようにしたので、通信相手に知られずに自らの状態を管理できるようになる。
その結果、他装置から攻撃を受けた場合は、通信後のデータ処理を実行しないので、被害を最小限に抑える効果がある。
【００２５】
また、送られてきた暗号文を復号したデータ内容を判断し、自らの装置に危険を及ぼす恐れのある復号文を記憶したので、自らの装置に危険を及ぼす恐れのある処理を排除することが可能となるとともに、安全な使用法を順守する通信相手との通信を確立できる効果がある。
【００２６】
また、秘匿通信でメモリ部に記憶した自らの装置に危険を及ぼす恐れのある復号文、もしくは、装置製造時にあらかじめ記録した安全なコマンド、データを使って、暗号文を検証するので、自らの装置に危険を及ぼす恐れのある処理を排除することが可能となるとともに、安全な使用法を順守する通信相手との通信を確立する効果がある。
【００２７】
また、データ検証に失敗した場合は、暗号文はなにも処理されずに、レスポンス処理に移るようにしたので、複数の暗号処理を行わせ、その秘密情報を導き出すサイドチャネル攻撃に対しては、暗号処理自体が行われないので耐性を有することになる効果がある。
【００２８】
以上、本実施の形態では、
通信部、判断部、乱数生成部、暗号部、メモリ部から構成される暗号通信装置において、暗号通信装置の状態判定を装置内で行い、装置内に安全なコマンド、データが保持されている場合、暗号文を復号する以前に、秘匿データの検証を行い、検証にパスした暗号文だけを復号する暗号通信装置を説明した。
【００２９】
また、本実施の形態では、
メモリ部に保持された危険を及ぼす恐れのある復号文、もしくは、製造時にあらかじめ記録されたデータを用いて通信暗号文の検証を行うことを説明した。
【００３０】
また、本実施の形態では、
メモリ部に保持される危険を及ぼす恐れのある復号文は、通信時に危険と判断された復号文を運用時に保持することを説明した。
【００３１】
また、本実施の形態では、
復号文に対応する処理が無い場合、エラーカウンタをカウントし、エラーカウンタが一定数以上になれば、通信状態を解除することを説明した。
【００３２】
実施の形態２．
以上の実施の形態１では、データ検証を暗号文のままで行うことを示したが、実施の形態２ではより詳細にデータ検証について述べる。
【００３３】
図５は実施の形態２における事前準備の処理フローを示す。
Ｓ６３２で安全なコマンドとそのコマンドの引数として安全なデータを、メモリ部３に格納する。
安全なデータとは、コマンドが正常に動作するデータのことであり、１つのコマンドに対して複数のデータがあってもよい。
また、安全コマンドに対して引数として取りうる範囲、例えば、１〜１００という具体的な数値や８桁の文字列という形で、安全データを設定してもよい。
このようなコマンドとデータの組を必要に応じて複数格納する。
【００３４】
図６はデータ検証（図４のＳ６３）の詳細な処理フローである。
Ｓ６３５では、判断部４が、メモリ部３に格納された安全なコマンドとデータで通信文を作成する。
コマンドのシーケンスをチェックすれば、次に来るコマンドの予測ができるので、図４のＳ６２で受信した暗号文の平文に含まれる安全コマンドと安全データを予測し、予測した安全コマンドと安全データから、Ｓ６２で受信した暗号文の平文と等価と予測される通信文を生成する。
ここで作成する通信文は１文乃至数文でよい。
なお、Ｓ６３５で予測した安全コマンドは検証用安全コマンドに相当し、安全データは検証用安全データに相当し、また、Ｓ６３５で生成した通信文は検証用通信文に相当する。
【００３５】
Ｓ６３６では、Ｓ６３５で作成した通信文をＳ３で共有した共有鍵を用いて暗号部５が暗号化し、暗号文（暗号検証用通信文に相当）を得る。
この暗号文を暗号文１と呼ぶことにする。
Ｓ６３７では、判断部４が暗号文１に一方向性関数でその暗号文のダイジェスト（検証用通信文の一方向演算値に相当）を得る。
このダイジェストをダイジェスト１と呼ぶことにする。
【００３６】
Ｓ６３８では、判断部４は、Ｓ６２で受信した通信暗号文のダイジェスト（暗号文の一方向演算値に相当）を一方向性関数で算出する。
このダイジェストをダイジェスト２と呼ぶことにする。
また、受信した通信暗号文を暗号文２と呼ぶことにする。
【００３７】
Ｓ６３９では、判断部４は、Ｓ６３７のダイジェスト１、Ｓ６３８のダイジェスト２を比較する。
この比較値を持って、データ検証Ｓ６３の判断値とする。
つまり、ダイジェスト１とダイジェスト２が一致すれば、Ｓ６２で受信した暗号文２は、安全コマンドと安全データで構成される安全通信文の暗号文であり、検証成功と判断する。
ダイジェスト１とダイジェスト２が一致しない場合は、Ｓ６２で受信した暗号文２は安全通信文の暗号文ではないため、検証失敗と判断する。
【００３８】
以上のように、本実施の形態２では、安全なコマンドとデータから構成される通信文を作り、共有した共有鍵で暗号化し、ダイジェストを算出したので、毎回変わる共有鍵を用いる暗号通信装置でも、自らの装置に危険を及ぼす恐れのある処理を排除することができる効果がある。
【００３９】
また、本実施の形態２では、検証に失敗した場合は、暗号文はなにも処理されずに、レスポンス処理に移るようにしたので、複数の暗号処理を行わせ、その秘密情報を導き出すサイドチャネル攻撃に対して、耐性を有する効果がある。
【００４０】
なお、本実施の形態２では一方向性関数を使って、ダイジェスト１とダイジェスト２を比較したが、暗号文１と暗号文２を比較しても同様の効果を奏する。
つまり、暗号文１と暗号文２が一致すれば、Ｓ６２で受信した暗号文２は、安全コマンドと安全データで構成される安全通信文の暗号文であり、検証成功と判断する。
暗号文１と暗号文２が一致しない場合は、Ｓ６２で受信した暗号文２は安全通信文の暗号文ではないため、検証失敗と判断する。
【００４１】
以上、本実施の形態では、
メモリ部に保持された危険を及ぼす恐れのある復号文、もしくは、製造時にあらかじめ記録されたコマンド、データを、共有鍵で暗号化した暗号文のダイジェストを用いて通信暗号文の検証を行うことを説明した。
【００４２】
また、本実施の形態では、
メモリ部に保持された危険を及ぼす恐れのある復号文、もしくは、製造時にあらかじめ記録されたコマンド、データを、共有鍵で暗号化した暗号文を用いて通信暗号文の検証を行うことを説明した。
【００４３】
実施の形態３．
以上の実施の形態では、データ検証をダイジェスト値で行うものであるが、本実施の形態３では、暗号文のままデータ検証を行う方式について述べる。
【００４４】
実施の形態３は、暗号化データの検索を行う秘匿情報検索技術を応用したものである。秘匿情報検索技術としては、ＩＤベース暗号を応用したＢｏｎｅｈらの方式などが知られている。
Ｂｏｎｅｈらの方式は、ＩＤベース暗号を用いて秘匿検索を実現した方法である。
これは、キーワードをＩＤとして暗号化データや秘密鍵を生成する事で、暗号化したままキーワードの一致／不一致が判定できる方式である。
具体的には次の手順で、キーワードの一致／不一致を判定する。
ＩＤをキーワードとして、ＩＤベース暗号の公開鍵と秘密鍵を生成する。
次に、キーワードとは無関係な予め決められた判定用定数を前記公開鍵で暗号化し、検索タグを生成する。
検索タグにキーワードが含まれているか否かを判定するには、前記秘密鍵を用いて検索タグを復号化する。
復号化に成功すれば、すなわち、判定定数が確認できれば、ＩＤをキーワードとした秘密鍵で復号できたので、キーワードが一致したと判定する。
復号化に失敗した場合は、ＩＤをキーワードとした秘密鍵で復号できなかったので、キーワードが不一致であると判定する。
ＩＤをキーワードとする秘密鍵、検索タグ、判定用定数の３つは、ＩＤとは無関係な数値であるので、判定箇所は情報の内容を知ることなく、キーワードの一致／不一致が判定できるということで、暗号化したままキーワードの一致／不一致が判定できる秘匿情報検索方式と呼ぶ。
本実施の形態３では、秘匿情報検索に用いられる暗号方式を採用する。
【００４５】
図７は実施の形態３における事前準備の処理フローを示す。
Ｓ６３２１で、暗号部５は、安全なコマンドとそのコマンドの引数として安全なデータを、Ｓ３で共有した共有鍵を用いて秘匿情報検索可能な暗号化方式で暗号化し、暗号化された安全コマンド及び安全データをメモリ部３に格納する。
安全なデータとは、コマンドが正常に動作するデータのことであり、１つのコマンドに対して複数のデータがあってもよい。
また、安全コマンドに対して引数として取りうる範囲、例えば、１〜１００という具体的な数値や８桁の文字列という形で、安全データを設定してもよい。
このような暗号文（暗号化された安全コマンドと安全データ）を必要に応じて複数格納する。
【００４６】
図８は実施の形態３におけるデータ検証（図４のＳ６３）の詳細な処理フローである。
Ｓ６３９１では、判断部４は、安全なコマンドが通信暗号文に存在するかを、秘匿情報検索する。コマンドのシーケンスをチェックすることで、通信暗号文に存在するコマンドの予測が可能であるので、この検索は全ての安全なコマンドの暗号文に対して行う必要はない。
【００４７】
Ｓ６３９２は、判断部４は、安全なデータが通信暗号文に存在するかを秘匿情報検索する。
このステップは、安全なコマンドがデータを引数として持たない場合は、省略する。
【００４８】
判断部４は、Ｓ６３９１の検索値、Ｓ６３９２の検索値をデータ検証Ｓ６３の判断値とする。
つまり、検索値が一致すれば、Ｓ６２で受信した暗号文は、安全コマンドと安全データで構成される安全通信文の暗号文であり、検証成功と判断する。
一方、検索値が一致しない場合は、Ｓ６２で受信した暗号文は安全通信文の暗号文ではないため、検証失敗と判断する。
【００４９】
以上のように、本実施の形態３では、秘匿情報検索技術を用いるので、暗号文を復号しなくても、該当コマンド、データが存在するか否かを判定できる。
その結果、自らの装置に危険を及ぼす恐れのある処理を排除する効果がある。
【００５０】
また、本実施の形態３では、安全なコマンド、安全なデータ以外は、暗号文は何も処理されずレスポンス処理に移るようにしたので、複数の暗号処理を行わせ、その秘密情報を導き出すサイドチャネル攻撃に対して耐性を有する効果がある。
【００５１】
また、上記では、安全コマンド、安全データを秘匿情報検索可能な暗号化方式で暗号化し、通信暗号文に対して秘匿情報検索により安全コマンド、安全データが含まれているかを検証したが、安全コマンド、安全データの代わりに危険コマンド、危険データを用いて検証を行ってもよい。
つまり、図７のＳ６３２１において、暗号部５は、危険コマンドとそのコマンドの引数として用いられる危険データを、Ｓ３で共有した共有鍵を用いて秘匿情報検索可能な暗号化方式で暗号化し、暗号化された危険コマンド及び危険データをメモリ部３に格納する。
そして、図８のＳ６３９１において、判断部４は、危険コマンドが通信暗号文に存在するかを、秘匿情報検索し、Ｓ６３９２において、危険データが通信暗号文に存在するかを秘匿情報検索する。
更に、判断部４は、Ｓ６３９１の検索値、Ｓ６３９２の検索値を比較し、検索値が一致すれば、Ｓ６２で受信した暗号文は、危険コマンドと危険データが含まれる危険通信文の暗号文であり、検証失敗と判断する。
一方、検索値が一致しない場合は、Ｓ６２で受信した暗号文は危険通信文の暗号文ではないため、検証成功と判断する。
【００５２】
以上、本実施の形態では、
メモリ部に安全なコマンドとそのコマンドの引数として安全なデータを、秘匿情報検索可能な暗号方式で暗号化し、その暗号文を用いて通信暗号文の検証を行うことを説明した。
【００５３】
実施の形態４．
以上の実施の形態では、一つの通信暗号文に対してデータ検証を行うものであるが、本実施の形態４では、複数の通信暗号文に対してデータ検証を行うものである。
【００５４】
事前準備として、図５に示すように、安全なコマンドと引数に使用される安全なデータをメモリ部３に格納する。
【００５５】
図９はデータ検証（図４のＳ６３）の詳細な処理フローである。
Ｓ６３５では、判断部４は、メモリ部３に格納された安全なコマンドとデータで通信シーケンスに沿って通信文を作成する。
Ｓ６３６では、暗号部５が、Ｓ６３５で作成した通信文をＳ３で共有した共有鍵を用いて暗号化し、暗号文を得る。
Ｓ６３ｂでは、検証しようとする最後の通信文まで、暗号化された通信文が用意できたかを判断する。
最後でない場合は、Ｓ６３５、Ｓ６３６のステップを繰返し、暗号文を得る。
【００５６】
Ｓ６３７１で、判断部４が、複数の暗号文を一つにまとめて、一方向性関数でダイジェストを求める。
このダイジェストをダイジェスト１と呼ぶことにする。
また、複数の暗号文を暗号文群１と呼ぶことにする。
【００５７】
Ｓ６３８１では、判断部４が、Ｓ６２で受信した複数の通信暗号文のダイジェストを一方向性関数で算出する。
この際、Ｓ６３７１の複数の暗号文とＳ６３８１の複数の通信暗号文の数は合っていなければならない。
ここで算出したダイジェストをダイジェスト２と呼ぶことにする。
また、複数の通信暗号文を暗号文群２と呼ぶことにする。
【００５８】
Ｓ６３９では、Ｓ６３７のダイジェスト１、Ｓ６３８のダイジェスト２を比較する。
この比較値を持って、データ検証Ｓ６３の判断値とする。
つまり、ダイジェスト１とダイジェスト２が一致すれば、Ｓ６２で受信した暗号文群２は、安全コマンドと安全データで構成される安全通信文の暗号文群であり、検証成功と判断する。
ダイジェスト１とダイジェスト２が一致しない場合は、Ｓ６２で受信した暗号文群２は安全通信文の暗号文群ではないため、検証失敗と判断する。
【００５９】
以上のように、本実施の形態４では、安全なコマンドとデータから構成される通信文を複数作り、共有した共有鍵で暗号化し、複数の暗号文を一つにまとめてダイジェスト算出したので、ダイジェストに使用するメモリ量を削減する効果がある。
【００６０】
また、本実施の形態４では、複数の暗号文と暗号通信文のダイジェストを一度に検証するので、検証に要する時間を削減するとともに、検証の回数を減らすことでデータ検証の効率的な実装が可能となる効果がある。
【００６１】
なお、本実施の形態４では一方向性関数を使って、ダイジェスト１とダイジェスト２を比較したが、暗号文群１と暗号文群２を比較しても同様の効果を奏する。
【００６２】
以上、本実施の形態では、
メモリ部に保持された製造時にあらかじめ記録された安全なデータから複数の通信文を作り、共有した共有鍵で暗号化し、複数の暗号文を一つにまとめたダイジェストを用いて通信暗号文の検証を行うことを説明した。
【００６３】
また、本実施の形態では、
メモリ部に保持された製造時にあらかじめ記録された安全なデータから複数の通信文を作り、共有した共有鍵で暗号化し、複数の暗号文を用いて複数の通信暗号文の検証を行うことを説明した。
【００６４】
最後に、実施の形態１〜４に示した暗号通信装置１のハードウェア構成例について説明する。
図１０は、実施の形態１〜４に示す暗号通信装置１のハードウェア資源の一例を示す図である。
なお、図１０の構成は、あくまでも暗号通信装置１のハードウェア構成の一例を示すものであり、暗号通信装置１のハードウェア構成は図１０に記載の構成に限らず、他の構成であってもよい。
【００６５】
図１０において、暗号通信装置１は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態１〜４で説明した「メモリ部」は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００６６】
通信ボード９１５は、例えば、、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【００６７】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００６８】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００６９】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
暗号通信装置１の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００７０】
上記プログラム群９２３には、実施の形態１〜４の説明において「〜部」（「メモリ部」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００７１】
ファイル群９２４には、実施の形態１〜４の説明において、「〜の判断」、「〜の計算」、「〜の生成」、「〜の比較」、「〜の予測」、「〜の検証」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜４で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００７２】
また、実施の形態１〜４の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１〜４で説明したフローチャートに示すステップ、手順、処理により、暗号通信装置１を方法として把握することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、実施の形態１〜４の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜４の「〜部」の手順や方法をコンピュータに実行させるものである。
【００７３】
このように、実施の形態１〜４に示す暗号通信装置１は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００７４】
１  暗号通信装置、２  通信部、３  メモリ部、４  判断部、５  暗号部、６  乱数生成部。
【図１】
0005455771.tif 000002
【図２】
0005455771.tif 000003
【図３】
0005455771.tif 000004
【図４】
0005455771.tif 000005
【図５】
0005455771.tif 000006
【図６】
0005455771.tif 000007
【図７】
0005455771.tif 000008
【図８】
0005455771.tif 000009
【図９】
0005455771.tif 000010
【図１０】
0005455771.tif 000011