(57)【特許請求の範囲】
【請求項１】
記憶メモリや１回の通信量に制限がある第１の装置と第２の装置の間で共通鍵を用いて暗号化したメッセージを暗号通信するための暗号通信路の確立方法であって、
第１の装置は、第１の装置に関連した第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を第２の装置へ送付し、第２の装置は前記第１の公開鍵の証明情報が真正であることを検証し、第２の装置は、第２の装置に関連した第２の公開鍵、第２の公開鍵の証明情報、及び、第２の乱数を第１の装置へ送付し、第１の装置は前記第２の公開鍵の証明情報が真正であることを検証する鍵情報交換手順と、
第１の装置は、暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第２の公開鍵を用いて暗号化し、暗号化された共通鍵を第２の装置へ送付し、第２の装置は前記暗号化された共通鍵を前記第２の公開鍵に対応した第２の秘密鍵で復号化する鍵共有手順と、
第１の装置は、前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、第２の装置へ送付し、第２の装置は前記第１の署名情報を前記第１の公開鍵を用いて検証し、第２の装置は、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから第２の署名情報を作成し、第１の装置へ送付し、第１の装置は前記第２の署名情報を前記第２の公開鍵を用いて検証する相互認証手順と、
を有する暗号通信路の確立方法。
【請求項２】
記憶メモリや１回の通信量に制限がある第１の装置と第２の装置の間で共通鍵を用いて暗号化したメッセージを暗号通信するための暗号通信路の確立方法であって、
第１の装置は、第１の装置に関連した第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を第２の装置へ送付し、第２の装置は前記第１の公開鍵の証明情報が真正であることを検証し、第２の装置は、暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第１の公開鍵を用いて暗号化し、第２の装置に関連した第２の公開鍵、第２の公開鍵の証明情報、第２の乱数、及び、暗号化された共通鍵を第１の装置へ送付し、第１の装置は、前記第２の公開鍵の証明情報が真正であることを検証し、前記暗号化された共通鍵を前記第１の公開鍵に対応した第１の秘密鍵で復号化する鍵交換・鍵共有手順と、
第１の装置は、前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、第２の装置へ送付し、第２の装置は前記第１の署名情報を前記第１の公開鍵を用いて検証し、第２の装置は、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから第２の署名情報を作成し、第１の装置へ送付し、第１の装置は前記第２の署名情報を前記第２の公開鍵を用いて検証する相互認証手順と、
を有する暗号通信路の確立方法。
【請求項３】
前記第１の公開鍵の証明情報及び上記第２の公開鍵の証明情報が真正であるかどうかは、前記第１の公開鍵の証明情報及び上記第２の公開鍵の証明情報を第３の公開鍵を用いて復号化することにより検証される、請求項１又は２記載の暗号通信路の確立方法。
【請求項４】
第１の装置と第２の装置の少なくとも一方から他方へ前記共通鍵で暗号化されていないメッセージが送付されたとき、第１の装置と第２の装置の間で確立された暗号通信路による暗号通信を止めるため、前記共通鍵に関する情報及び第１の装置と第２の装置の相互認証に関する情報を破棄する手順を更に有する、請求項１又は２記載の暗号通信路の確立方法。
【請求項５】
共通鍵を用いて暗号化したメッセージを暗号通信する、記憶メモリや１回の通信量に制限がある装置に、
第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を暗号通信の相手先へ送付する機能と、
相手先から第２の公開鍵、第２の公開鍵の証明情報、及び、第２の乱数を受け取り、前記第２の公開鍵の証明情報が真正であることを検証する機能と、
暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第２の公開鍵を用いて暗号化し、暗号化された共通鍵を相手先へ送付する機能と、
前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、相手先へ送付し、相手先から、前記第１の乱数及び前記共通鍵のペアに基づいて前記第２の公開鍵に対応した前記第２の秘密鍵を用いて作成された第２の署名情報を受け取り、前記第２の署名情報を前記第２の公開鍵を用いて検証する機能と、
を実行させる暗号通信路確立用プログラム。
【請求項６】
共通鍵を用いて暗号化したメッセージを暗号通信する、記憶メモリや１回の通信量に制限がある装置に、
暗号通信の相手先から、第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、第２の公開鍵、第２の公開鍵の証明情報、及び、第２の乱数を相手先へ送付する機能と、
相手先から、前記第２の公開鍵を用いて暗号化された暗号通信路を確立するための共通鍵を受け取り、前記暗号化された共通鍵を前記第２の公開鍵に対応した第２の秘密鍵で復号化する機能と、
相手先から、前記第２の乱数及び前記共通鍵のペアに基づいて前記第１の公開鍵に対応した第１の秘密鍵を用いて作成された第１の署名情報を受け取り、前記第１の署名情報を前記第１の公開鍵を用いて検証し、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから第２の署名情報を作成し、相手先へ送付する機能と、
を実行させる暗号通信路確立用プログラム。
【請求項７】
共通鍵を用いて暗号化したメッセージを暗号通信する、記憶メモリや１回の通信量に制限がある装置に、
第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を暗号通信の相手先へ送付し、相手先から、第２の公開鍵、第２の公開鍵の証明情報、第２の乱数、及び、暗号通信路を確立するための暗号化された共通鍵を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、前記暗号化された共通鍵を前記第１の公開鍵に対応した第１の秘密鍵で復号化する機能と、
前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、相手先へ送付し、相手先から、前記第１の乱数及び前記共通鍵のペアに基づいて前記第２の公開鍵に対応した前記第２の秘密鍵を用いて作成された第２の署名情報を受け取り、前記第２の署名情報を前記第２の公開鍵を用いて検証する機能と、
を実行させる暗号通信路確立用プログラム。
【請求項８】
共通鍵を用いて暗号化したメッセージを暗号通信する、記憶メモリや１回の通信量に制限がある装置に、
暗号通信の相手先から、第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第１の公開鍵を用いて暗号化し、第２の装置に関連した第２の公開鍵、第２の公開鍵の証明情報、第２の乱数、及び、暗号化された共通鍵を相手先へ送付する機能と、
相手先から、前記第２の乱数及び前記共通鍵のペアに基づいて前記第１の公開鍵に対応した第１の秘密鍵を用いて作成された第１の署名情報を受け取り、前記第１の署名情報を前記第１の公開鍵を用いて検証し、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから第２の署名情報を作成し、相手先へ送付する機能と、
を実行させる暗号通信路確立用プログラム。
【請求項９】
請求項５乃至８のうちいずれか一項記載の暗号通信路確立用プログラムを記録したコンピュータ読取可能な記録媒体。
【請求項１０】
記憶メモリや１回の通信量に制限がある第１の装置と第２の装置の間で共通鍵を用いて暗号化したメッセージを暗号通信する暗号通信システムであって、
第１の装置は、
第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を第２の装置へ送付する手段と、
第２の装置から第２の公開鍵、第２の公開鍵の証明情報、及び、第２の乱数を受け取り、前記第２の公開鍵の証明情報が真正であることを検証する手段と、
暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第２の公開鍵を用いて暗号化し、暗号化された共通鍵を第２の装置へ送付する手段と、
前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、第２の装置へ送付し、第２の装置から、前記第１の乱数及び前記共通鍵のペアに基づいて前記第２の公開鍵に対応した前記第２の秘密鍵を用いて作成された第２の署名情報を受け取り、前記第２の署名情報を前記第２の公開鍵を用いて検証する手段とを有し、
第２の装置は、
第１の装置から、前記第１の公開鍵、前記第１の公開鍵の証明情報、及び、前記第１の乱数を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、前記第２の公開鍵、前記第２の公開鍵の証明情報、及び、前記第２の乱数を第１の装置へ送付する手段と、
第１の装置から、前記第２の公開鍵を用いて暗号化された暗号通信路を確立するための共通鍵を受け取り、前記暗号化された共通鍵を前記第２の公開鍵に対応した第２の秘密鍵で復号化する手段と、
第１の装置から、前記第１の署名情報を受け取り、前記第１の署名情報を前記第１の公開鍵を用いて検証し、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから前記第２の署名情報を作成し、第１の装置へ送付する手段と、
を有する、暗号通信システム。
【請求項１１】
記憶メモリや１回の通信量に制限がある第１の装置と第２の装置の間で共通鍵を用いて暗号化したメッセージを暗号通信する暗号通信システムであって、
第１の装置は、
第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を第２の装置へ送付し、第２の装置から、第２の公開鍵、第２の公開鍵の証明情報、第２の乱数、及び、暗号通信路を確立するための暗号化された共通鍵を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、前記暗号化された共通鍵を前記第１の公開鍵に対応した第１の秘密鍵で復号化する手段と、
前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、第２の装置へ送付し、第２の装置から、前記第１の乱数及び前記共通鍵のペアに基づいて前記第２の公開鍵に対応した前記第２の秘密鍵を用いて作成された第２の署名情報を受け取り、前記第２の署名情報を前記第２の公開鍵を用いて検証する手段とを有し、
第２の装置は、
第１の装置から、前記第１の公開鍵、前記第１の公開鍵の証明情報、及び、前記第１の乱数を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第１の公開鍵を用いて暗号化し、前記第２の公開鍵、前記第２の公開鍵の証明情報、前記第２の乱数、及び、前記暗号化された共通鍵を第１の装置へ送付する手段と、
第１の装置から前記第１の署名情報を受け取り、前記第１の署名情報を前記第１の公開鍵を用いて検証し、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから前記第２の署名情報を作成し、第１の装置へ送付する手段と、
を有する、暗号通信システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電気通信システムやＩＣカードなど耐タンパデバイスなどを利用して、複数の装置間において、お互いを認証し、暗号通信路を結ぶ方法、装置及びそのプログラムに関する。
【０００２】
【従来の技術】
従来の技術では、コンピュータ同士にて、公開鍵証明書をお互いに交換して認証を行って暗号通信路を結ぶ手法や、ＤＨ鍵交換やＳＳＬなどの手法を用いて公開鍵情報を交換し暗号通信路を結ぶ手法が提案されている。また、耐タンパデバイスを用いて、お互いのＩＤ情報を交換することにより暗号通信路だけを結ぶ手法が提案されている。
【０００３】
【発明が解決しようとする課題】
しかし、片方の装置、又は、両方の装置の記憶メモリに制限がある場合、或いは、たとえば、ＩＣカードや携帯電話のように一回の通信量に制限のある装置を使用する場合、安全な暗号通信路を結ぶ手法が提案されていないため、従来の暗号通信路を結ぶ手法をそのまま適用すると、通信回数が増えたり、装置が保持するメモリが不足したり、処理に時間がかかるなどの問題がある。そのため、一般的には、このような環境では、共通鍵を用いて行う暗号通信路を結ぶ手法がとられている。
【０００４】
したがって、本発明は、対象とする装置の記憶メモリに制限がある場合、或いは、一回の通信量に制限のある装置を使用する場合に、最小限の通信回数と処理時間で、相互認証を行い、暗号通信路を結ぶことができるように、任意の装置間において公開鍵暗号を利用した相互認証を行った上で、安全な暗号通信路を結ぶ暗号通信路の確立方法、プログラム、及び、プログラム媒体、並びに、暗号通信システムの提供を目的とする。
【０００５】
【課題を解決するための手段】
本発明は、記憶メモリや一回の通信量に制限がある装置にも対応できるように、データの交換を最小限に抑え、相互認証と鍵交換を組み合わせることにより、従来技術よりも安全であり、かつ、通信データ量と通信回数が最小限にすることできる暗号通信路を結ぶ方法及びプログラムに関する。
【０００６】
請求項１に係る発明は、記憶メモリや１回の通信量に制限がある第１の装置と第２の装置の間で共通鍵を用いて暗号化したメッセージを暗号通信するための暗号通信路の確立方法であって、
第１の装置は、第１の装置に関連した第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を第２の装置へ送付し、第２の装置は前記第１の公開鍵の証明情報が真正であることを検証し、第２の装置は、第２の装置に関連した第２の公開鍵、第２の公開鍵の証明情報、及び、第２の乱数を第１の装置へ送付し、第１の装置は前記第２の公開鍵の証明情報が真正であることを検証する鍵情報交換手順と、
第１の装置は、暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第２の公開鍵を用いて暗号化し、暗号化された共通鍵を第２の装置へ送付し、第２の装置は前記暗号化された共通鍵を前記第２の公開鍵に対応した第２の秘密鍵で復号化する鍵共有手順と、
第１の装置は、前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、第２の装置へ送付し、第２の装置は前記第１の署名情報を前記第１の公開鍵を用いて検証し、第２の装置は、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから第２の署名情報を作成し、第１の装置へ送付し、第１の装置は前記第２の署名情報を前記第２の公開鍵を用いて検証する相互認証手順と、
を有する暗号通信路の確立方法である。
【０００７】
請求項２に係る発明は、記憶メモリや１回の通信量に制限がある第１の装置と第２の装置の間で共通鍵を用いて暗号化したメッセージを暗号通信するための暗号通信路の確立方法であって、
第１の装置は、第１の装置に関連した第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を第２の装置へ送付し、第２の装置は前記第１の公開鍵の証明情報が真正であることを検証し、第２の装置は、暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第１の公開鍵を用いて暗号化し、第２の装置に関連した第２の公開鍵、第２の公開鍵の証明情報、第２の乱数、及び、暗号化された共通鍵を第１の装置へ送付し、第１の装置は、前記第２の公開鍵の証明情報が真正であることを検証し、前記暗号化された共通鍵を前記第１の公開鍵に対応した第１の秘密鍵で復号化する鍵交換・鍵共有手順と、
第１の装置は、前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、第２の装置へ送付し、第２の装置は前記第１の署名情報を前記第１の公開鍵を用いて検証し、第２の装置は、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから第２の署名情報を作成し、第１の装置へ送付し、第１の装置は前記第２の署名情報を前記第２の公開鍵を用いて検証する相互認証手順と、
を有する暗号通信路の確立方法である。
【０００８】
特に、本発明の暗号通信路の確立方法において、前記第１の公開鍵の証明情報及び上記第２の公開鍵の証明情報が真正であるかどうかは、前記第１の公開鍵の証明情報及び上記第２の公開鍵の証明情報を第３の公開鍵を用いて復号化することにより検証される。
【０００９】
また、本発明の暗号通信路の確立方法は、第１の装置と第２の装置の少なくとも一方から他方へ前記共通鍵で暗号化されていないメッセージが送付されたとき、第１の装置と第２の装置の間で確立された暗号通信路による暗号通信を止めるため、前記共通鍵に関する情報及び第１の装置と第２の装置の相互認証に関する情報を破棄する手順を更に有する。
【００１０】
請求項５に係る発明は、共通鍵を用いて暗号化したメッセージを暗号通信する、記憶メモリや１回の通信量に制限がある装置に、
第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を暗号通信の相手先へ送付する機能と、
相手先から第２の公開鍵、第２の公開鍵の証明情報、及び、第２の乱数を受け取り、前記第２の公開鍵の証明情報が真正であることを検証する機能と、
暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第２の公開鍵を用いて暗号化し、暗号化された共通鍵を相手先へ送付する機能と、
前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、相手先へ送付し、相手先から、前記第１の乱数及び前記共通鍵のペアに基づいて前記第２の公開鍵に対応した前記第２の秘密鍵を用いて作成された第２の署名情報を受け取り、前記第２の署名情報を前記第２の公開鍵を用いて検証する機能と、
を実行させる暗号通信路確立用プログラムである。
【００１１】
請求項６に係る発明は、共通鍵を用いて暗号化したメッセージを暗号通信する、記憶メモリや１回の通信量に制限がある装置に、
暗号通信の相手先から、第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、第２の公開鍵、第２の公開鍵の証明情報、及び、第２の乱数を相手先へ送付する機能と、
相手先から、前記第２の公開鍵を用いて暗号化された暗号通信路を確立するための共通鍵を受け取り、前記暗号化された共通鍵を前記第２の公開鍵に対応した第２の秘密鍵で復号化する機能と、
相手先から、前記第２の乱数及び前記共通鍵のペアに基づいて前記第１の公開鍵に対応した第１の秘密鍵を用いて作成された第１の署名情報を受け取り、前記第１の署名情報を前記第１の公開鍵を用いて検証し、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから第２の署名情報を作成し、相手先へ送付する機能と、
を実行させる暗号通信路確立用プログラムである。
【００１２】
請求項７に係る発明は、共通鍵を用いて暗号化したメッセージを暗号通信する記憶メモリや１回の通信量に制限がある装置に、
第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を暗号通信の相手先へ送付し、相手先から、第２の公開鍵、第２の公開鍵の証明情報、第２の乱数、及び、暗号通信路を確立するための暗号化された共通鍵を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、前記暗号化された共通鍵を前記第１の公開鍵に対応した第１の秘密鍵で復号化する機能と、
前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、相手先へ送付し、相手先から、前記第１の乱数及び前記共通鍵のペアに基づいて前記第２の公開鍵に対応した前記第２の秘密鍵を用いて作成された第２の署名情報を受け取り、前記第２の署名情報を前記第２の公開鍵を用いて検証する機能と、
を実行させる暗号通信路確立用プログラムである。
【００１３】
請求項８に係る発明は、共通鍵を用いて暗号化したメッセージを暗号通信する、記憶メモリや１回の通信量に制限がある装置に、
暗号通信の相手先から、第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第１の公開鍵を用いて暗号化し、第２の装置に関連した第２の公開鍵、第２の公開鍵の証明情報、第２の乱数、及び、暗号化された共通鍵を相手先へ送付する機能と、
相手先から、前記第２の乱数及び前記共通鍵のペアに基づいて前記第１の公開鍵に対応した第１の秘密鍵を用いて作成された第１の署名情報を受け取り、前記第１の署名情報を前記第１の公開鍵を用いて検証し、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから第２の署名情報を作成し、相手先へ送付する機能と、
を実行させる暗号通信路確立用プログラムである。
【００１４】
請求項１０に係る発明は、記憶メモリや１回の通信量に制限がある第１の装置と第２の装置の間で共通鍵を用いて暗号化したメッセージを暗号通信する暗号通信システムであって、
第１の装置は、
第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を第２の装置へ送付する手段と、
第２の装置から第２の公開鍵、第２の公開鍵の証明情報、及び、第２の乱数を受け取り、前記第２の公開鍵の証明情報が真正であることを検証する手段と、
暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第２の公開鍵を用いて暗号化し、暗号化された共通鍵を第２の装置へ送付する手段と、
前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、第２の装置へ送付し、第２の装置から、前記第１の乱数及び前記共通鍵のペアに基づいて前記第２の公開鍵に対応した前記第２の秘密鍵を用いて作成された第２の署名情報を受け取り、前記第２の署名情報を前記第２の公開鍵を用いて検証する手段とを有し、
第２の装置は、
第１の装置から、前記第１の公開鍵、前記第１の公開鍵の証明情報、及び、前記第１の乱数を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、前記第２の公開鍵、前記第２の公開鍵の証明情報、及び、前記第２の乱数を第１の装置へ送付する手段と、
第１の装置から、前記第２の公開鍵を用いて暗号化された暗号通信路を確立するための共通鍵を受け取り、前記暗号化された共通鍵を前記第２の公開鍵に対応した第２の秘密鍵で復号化する手段と、
第１の装置から、前記第１の署名情報を受け取り、前記第１の署名情報を前記第１の公開鍵を用いて検証し、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから前記第２の署名情報を作成し、第１の装置へ送付する手段と、
を有する、暗号通信システムである。
【００１５】
請求項１１に係る発明は、記憶メモリや１回の通信量に制限がある第１の装置と第２の装置の間で共通鍵を用いて暗号化したメッセージを暗号通信する暗号通信システムであって、
第１の装置は、
第１の公開鍵、第１の公開鍵の証明情報、及び、第１の乱数を第２の装置へ送付し、第２の装置から、第２の公開鍵、第２の公開鍵の証明情報、第２の乱数、及び、暗号通信路を確立するための暗号化された共通鍵を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、前記暗号化された共通鍵を前記第１の公開鍵に対応した第１の秘密鍵で復号化する手段と、
前記第２の乱数及び前記共通鍵のペアを攪拌し、前記第１の公開鍵に対応した第１の秘密鍵を用いて前記攪拌されたペアから第１の署名情報を作成し、第２の装置へ送付し、第２の装置から、前記第１の乱数及び前記共通鍵のペアに基づいて前記第２の公開鍵に対応した前記第２の秘密鍵を用いて作成された第２の署名情報を受け取り、前記第２の署名情報を前記第２の公開鍵を用いて検証する手段とを有し、
第２の装置は、
第１の装置から、前記第１の公開鍵、前記第１の公開鍵の証明情報、及び、前記第１の乱数を受け取り、前記第１の公開鍵の証明情報が真正であることを検証し、暗号通信路を確立するための共通鍵を生成し、前記共通鍵を前記第１の公開鍵を用いて暗号化し、前記第２の公開鍵、前記第２の公開鍵の証明情報、前記第２の乱数、及び、前記暗号化された共通鍵を第１の装置へ送付する手段と、
第１の装置から前記第１の署名情報を受け取り、前記第１の署名情報を前記第１の公開鍵を用いて検証し、前記第１の乱数及び前記共通鍵のペアを攪拌し、前記第２の公開鍵に対応した前記第２の秘密鍵を用いて前記攪拌されたペアから前記第２の署名情報を作成し、第１の装置へ送付する手段と、
を有する、暗号通信システムである。
【００１６】
【発明の実施の形態】
図１は、本発明の一実施例による暗号通信システムの構成図である。暗号通信システムは、外部装置１と、外部装置１に対向する耐タンパ装置、たとえば、ＩＣカード２とにより構成される。外部装置１とＩＣカード２は、（図示されない）通信路と、ＩＣカード２とアクセスするための（図示されない）ＩＣカード・リーダ／ライタなどによって接続される。外部装置１は、暗号文や署名の暗号化、復号化を行う暗号・署名計算装置１１と、外部装置公開鍵証明書、外部装置公開鍵、外部装置秘密鍵などの種々のデータを記憶するメモリ１２とを有する。ＩＣカード２は、同様に、暗号文や署名の暗号化、復号化を行う暗号・署名計算装置２１と、ＩＣカード公開鍵証明書、ＩＣカード公開鍵、ＩＣカード秘密鍵などの種々のデータを記憶するメモリ２２とを有する。
【００１７】
図２は、外部装置１とＩＣカード２の間で行われる従来法による公開鍵証明書の交換処理フローチャートである。たとえば、ＪａｖａＣａｒｄ仕様のように、ＩＣカード２へ一回に送信できるバイト数に制限がある場合を考える。この場合、外部装置公開鍵証明書格納のために、外部装置公開鍵証明書格納１及び外部装置公開鍵証明書格納２の２回以上のコマンドを必要とすることがあり、同様に、ＩＣカード公開鍵証明書送信のために、ＩＣカード公開鍵証明書送信１及びＩＣカード公開鍵証明書送信２の２回以上のコマンドを必要とすることがある。図ｂに示された例では、２回のコマンドが必要とされる。送受信される公開鍵証明書のサイズがより大きい場合には、３回以上のコマンドが必要とされ、それに応じて、公開鍵証明書格納コマンド及び公開鍵証明書送信コマンドに要するコマンド数が増加する。
【００１８】
従来法による公開鍵証明書の交換について説明する。図２に示すように、ＰＵＴ  ＣＥＲＴＩＦＩＣＡＴＥ  １コマンド及びＰＵＴ  ＣＥＲＴＩＦＩＣＡＴＥ２  コマンドを用いて、外部装置１からＩＣカード２へ外部装置公開鍵証明書を格納する。ＩＣカード２は、格納した外部装置公開鍵証明書を、公開鍵証明書発行主体の公開鍵を用いて検証する。次に、ＩＣカード２は、ＩＣカード公開鍵証明書を外部装置１へ送るため、外部装置１からＩＣカード２へＧＥＴ  ＣＥＲＴＩＦＩＣＡＴＥ  １  コマンド及びＧＥＴ  ＣＥＲＴＩＦＩＣＡＴＥ  ２  コマンドを送信し、外部装置１はＩＣカード２からＩＣカード公開鍵証明書を受け取る。外部装置１は、公開鍵証明書発行主体の公開鍵を用いてＩＣカード公開鍵証明書の検証を行う。本例では、一回のＰＵＴ  ＣＥＴＦＩＣＡＴＥコマンド並びにＧＥＴ  ＣＥＲＴＩＦＩＣＡＴＥコマンドでは、公開鍵証明書を送れない場合があるため、２回のコマンドが必要である。
【００１９】
従来、ＩＳＯ（ＩＳＯ７８１６−４、ＩＳＯ７８１６−８）などにて規定されているコマンドを用いると、外部装置からＩＣカードへの公開鍵証明書の格納と、ＩＣカードから外部装置への公開鍵証明書の取得しか行うことができず、公開鍵証明書を交換することはできない。
【００２０】
次に、従来法による相互認証と鍵共有について説明する。
【００２１】
図３は、図２の手法で公開鍵証明書を交換した後に、外部装置１とＩＣカード２が従来法によって相互認証と鍵交換を行う処理のフローチャートである。この場合、相互認証は、内部認証と外部認証の２段階で行われる。内部認証は、外部装置１がＩＣカード２を認証する処理であり、外部認証は、ＩＣカード２が外部装置１を認証する処理である。相互認証の後、鍵を共有するための処理を行う。鍵共有処理後、共有した鍵を用いて後続のコマンドを暗号化して外部装置１からＩＣカード２へ送信する。
【００２２】
公開鍵証明書の交換後、図３に示されるように、ＩＮＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドを用いて、外部装置１からＩＣカード２にチャレンジデータを送る。チャレンジデータとは、その時点で唯一の値である乱数情報などである。ＩＣカード２では、その乱数に対して、ＩＣカード２の秘密鍵を用いて暗号化（又はデジタル署名）を行い、その暗号文（又は署名文）をＩＮＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドへの返答として、外部装置１へ送る。外部装置１では、ＩＣカード２の公開鍵を用いて、返答、すなわち、チャレンジデータに対しＩＣカード２で作成された暗号文（又は署名文）が正しく復号（又は署名検証）できるかどうかを判定する。正しく復号（又は検証）できた場合には、相手側のＩＣカード２が正しいＩＣカードであると認証することができる。これにより外部認証が成功する。
【００２３】
次に、内部認証を行う。そのため、外部装置１は、ＧＥＴ  ＣＨＡＬＬＥＮＧＥコマンドをＩＣカード２へ送信し、ＩＣカード２が作成したチャレンジデータをＩＣカード２から取得する。外部装置１では、ＩＣカード２が作成したチャレンジデータに対し、外部装置１の秘密鍵を用いて暗号化（又はデジタル署名）を行い、その暗号文（又は署名文）をＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥコマンドとして、ＩＣカード２へ送る。ＩＣカード２では、外部装置１の公開鍵を用いて、ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥによって与えられた、ＩＣカード２が作成したチャレンジデータに対し外部装置１で作成された暗号文（又は署名文）が正しく復号（又は署名検証）できるかどうかを判定する。正しく復号（又は検証）できた場合には、相手側の外部装置１が正しい外部装置であると認証することができる。これにより内部認証が成功する。
【００２４】
相互認証に続いて、鍵交換が行われる。外部装置１は、ＩＣカード２の公開鍵を用いて、その後に用いる暗号通信路を確立するために用いるセッション鍵を暗号化し、ＫＥＹ  ＳＨＡＲＩＮＧコマンドなどによってＩＣカード２へ暗号化されたセッション鍵を送る。ＩＣカード２は、暗号化されたセッション鍵を、ＩＣカード２の秘密鍵を用いて復号化する。
【００２５】
外部装置１とＩＣカード２の間でセッション鍵が交換された後、外部装置１は、そのセッション鍵を用いてコマンドの内容を暗号化してＩＣカード２へ送り、ＩＣカード２では、暗号化されたコマンドの内容を、先のセッション鍵を用いて復号化して、たとえば、ＩＣカードコマンドを実行する。
【００２６】
このように図３に示された従来法では、内部認証と外部認証を別々に行う必要がある。また、内部認証と外部認証の際に用いた情報を利用せずにセッション鍵を共有すると、外部装置１とＩＣカード２が相互に認証した後、別の外部装置がＩＣカード２と接続して、外部装置１になりすまして鍵交換を行い、ＩＣカード２との間で暗号化通信ができるという問題がある。
【００２７】
図４は、本発明の一実施例による暗号通信路の確立方法のフローチャートである。この暗号通信路の確立方法によると、外部装置１とＩＣカード２の間で、公開鍵証明書の交換と、チャレンジデータの交換を行い、鍵共有と相互認証を行う。本発明の一実施例の説明においても、図２の例と同様に、公開鍵証明書の格納と送信には２回のコマンドが必要である場合を考える。公開鍵証明書のサイズがより大きい場合には、３回以上のコマンドが必要とされ、それに応じて、公開鍵証明書交換に要するコマンド数が増加する。
【００２８】
公開鍵証明書は、たとえば、第三者機関によって提供される情報であり、この第三者機関は、外部装置１やＩＣカード２を含む多数の装置に対する証明書を発行する。この公開鍵証明書には、証明しようとする公開鍵のアルゴリズムやＩＤのような情報と、この情報に対する第三者機関の署名が含まれる。さらに、公開鍵証明書の中に証明しようとする公開鍵も組み入れることにより、公開鍵だけを別途送付する必要が無くなる。第三者機関は、公開鍵証明書に組み込まれた第三者機関の署名を検証するための公開鍵を配布する。
【００２９】
このように、本発明の一実施例による暗号通信路の確立方法によれば、公開鍵交換と、相互認証と、鍵共有の一連の処理を少ないコマンドで行えるようになる。
【００３０】
ＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥ  １（証明書・チャレンジ交換１）：外部装置１は、外部装置１が作成した外部装置チャレンジデータ（その時点での唯一の値である乱数情報など）と、外部装置公開鍵証明書を、ＩＣカード２へ送信する。
ＩＣカード２は、外部装置１に対する返答として、ＩＣカード２が作成したＩＣカードチャレンジデータと、ＩＣカード公開鍵証明書を、外部装置１へ送信する。
【００３１】
ＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥ  ２（証明書・チャレンジ交換２）：外部装置１は、外部装置公開鍵証明書の中で、ＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥ  １でＩＣカード２へ送れなかった部分をＩＣカード２へ送信する。ＩＣカード２は、受信した外部装置公開鍵証明書を格納し、公開鍵証明書発行主体の公開鍵を用いて外部装置公開鍵証明書を検証する。また、ＩＣカード２は、外部装置１に対する返答として、ＩＣカード公開鍵証明書の中で、ＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥＣＨＡＬＬＥＮＧＥ  １で外部装置１へ送れなかった部分を外部装置１へ送信する。外部装置１は、格納したＩＣカード公開鍵証明書を、公開鍵証明書発行主体の公開鍵を用いて検証する。
【００３２】
このように、本例では、一回のＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＬＬＥＮＧＥコマンドでは、公開鍵証明書の全部を送れない場合があるため、２回のコマンドＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥ  １とＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥ  ２とが用いられる。
【００３３】
また、ＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥコマンドで行われる公開鍵証明書の検証処理自体は、公開鍵証明書の全ての情報が集まったＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥコマンドの最後で行われる。たとえば、１回のコマンドで公開鍵証明書を送ることができる場合には、１回目のコマンドの最後で検証処理が行われ、２回のコマンドが必要である場合には、２回目のコマンドの最後で検証処理が行われる。
【００３４】
ＫＥＹ  ＳＨＡＲＩＮＧ（鍵共有）：外部装置１は、セッション鍵を、ＩＣカード公開鍵で暗号化して、暗号化されたセッション鍵をＩＣカード２へ送信する。ＩＣカード２では、暗号化されたセッション鍵を、ＩＣカード秘密鍵で復号し、セッション鍵を取得する。
【００３５】
ＭＵＴＵＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＩＯＮ（相互認証）：外部装置１は、ＩＣカードチャレンジデータ及びセッション鍵をハッシュ処理した値に対し、外部装置１の秘密鍵を用いて攪拌（デジタル署名又は暗号化）する。攪拌は、たとえば、セキュアハッシュ、共通鍵による暗号化、或いは、デジタル署名を用いる種々の方法で実現することができる。外部装置１は、作成したデジタル署名又は暗号文を、ＩＣカード２へ送信する。ＩＣカード２は、外部装置１から送られてきたデジタル署名又は暗号文を、外部装置公開鍵を用いて検証又は復号し、デジタル署名又は暗号化の対象がＩＣカードチャレンジデータ及びセッション鍵をハッシュ処理した値であるかどうかを確認する。デジタル署名又は暗号化の対象がＩＣカードチャレンジデータ及びセッション鍵をハッシュ処理した値であるならば、ＩＣカード２が外部装置１を正しい外部装置として認証したことになる。
【００３６】
同様に、ＩＣカード２は、外部装置チャレンジデータ及びセッション鍵をハッシュ処理した値に対し、ＩＣカード２の秘密鍵を用いてデジタル署名又は暗号化を行う。ＩＣカード２は、作成したデジタル署名又は暗号文を、外部装置１へ送信する。外部装置１は、ＩＣカード２から送られてきたデジタル署名又は暗号文を、外部装置公開鍵を用いて検証又は復号し、デジタル署名又は暗号化の対象が外部装置チャレンジデータ及びセッション鍵をハッシュ処理した値であるかどうかを確認する。デジタル署名又は暗号化の対象が外部装置チャレンジデータ及びセッション鍵をハッシュ処理した値であるならば、外部装置１がＩＣカード２を正しく認証したことになる。
【００３７】
本発明の一実施例によれば、ＥＸＣＨＡＮＧ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥ  １（証明書・チャレンジ交換１）コマンドと、ＥＸＣＨＡＮＧＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥ  ２（証明書・チャレンジ交換２）コマンドと、ＫＥＹ  ＳＨＡＲＩＮＧ（鍵共有）コマンドと、ＭＵＴＵＡＬＡＵＴＨＥＮＴＩＣＡＴＩＯＮ（相互認証）コマンドの４コマンドを実行することにより、図２、図３を参照して説明した従来法による暗号通信路の確立処理と同等の処理を実現することができる。
【００３８】
このように、外部装置１とＩＣカード２の間に暗号通信路が確立されると、外部装置１とＩＣカード２は、共通鍵であるセッション鍵を用いて暗号化したメッセージを相互に送ることができる。すなわち、外部装置１は、メッセージを、セッション鍵を用いて暗号化し、暗号化されたメッセージをＩＣカード２へ送り、ＩＣカード２は、暗号化されたメッセージを、同じセッション鍵を用いて復号化する。また、ＩＣカード２は、メッセージを、セッション鍵を用いて暗号化し、暗号化されたメッセージを外部装置１へ送り、外部装置１は、暗号化されたメッセージを、同じセッション鍵を用いて復号化する。
【００３９】
さらに、外部装置１とＩＣカード２の間で、暗号通信を続ける必要がなくなったとき、確立された暗号通信路を使用できないようにするため、外部装置１とＩＣカード２は、メモリに記憶している相手方の認証情報やセッション鍵を消去する。このような暗号通信路の停止は、たとえば、外部装置１又はＩＣカード２のいずれか一方が、セッション鍵を用いて暗号化されていないメッセージを他方へ送付することを契機とすることができる。
【００４０】
或いは、本発明の一実施例は、外部装置１とＩＣカード２の間に暗号通信路が確立された後、外部装置１からＩＣカード２への方向と、ＩＣカード２から外部装置１への方向のいずれか一方向のみで暗号通信を行い、もう一方の方向では、メッセージを暗号化しないで通信する場面にも適用できる。
【００４１】
上記の本発明の一実施例において、ＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥのデータが小さい場合には、ＥＸＣＨＡＮＧＥ  ＣＥＲＴＩＦＩＣＡＴＥ  ＣＨＡＬＬＥＮＧＥコマンドの送信時に、ＫＥＹ  ＳＨＡＲＩＮＧのデータを併せて送り、コマンド数をさらに削減することが可能である。図５は、本発明の他の実施例による暗号通信路の確立方法のフローチャートである。この暗号通信路の確立方法によると、外部装置１とＩＣカード２の間で、公開鍵証明書及びチャレンジデータの交換並びに鍵共有のコマンドと、相互認証のコマンドの最小２個のコマンドで暗号通信路を確立することができる。本例の場合、ＫＥＹ  ＳＨＡＲＩＮＧ（鍵共有）では、ＩＣカード２は、セッション鍵を外部装置公開鍵により暗号化し、暗号化されたセッション鍵を外部装置１へ送信し、外部装置１は、暗号化されたセッション鍵を、外部装置秘密鍵で復号し、セッション鍵を取得することにより、ＩＣカード２と外部装置１がセッション鍵を共有する。
【００４２】
上記実施例では、外部装置１とＩＣカード２の間に暗号通信路を確立する場合を例として説明しているが、本発明は、ＩＣカード、携帯電話機、端末装置、コンピュータなどの種々の装置の間に暗号通信路を確立して暗号通信を行う場面に適用できる。
【００４３】
上記の本発明の実施例による暗号通信路の確立方法は、ソフトウェア（プログラム）で構築することが可能であり、コンピュータのＣＰＵによってこのプログラムを実行することにより本発明の実施例による暗号通信路の確立方法を実現することができる。構築されたプログラムは、ディスク装置等に記録しておき必要に応じてコンピュータにインストールされ、フロッピーディスク、メモリカード、ＣＤ−ＲＯＭ等の可搬記録媒体に格納して必要に応じてコンピュータにインストールされ、或いは、通信回線等を介してコンピュータにインストールされ、コンピュータのＣＰＵによって実行することができる。
【００４４】
以上、本発明の代表的な実施例を説明したが、本発明は、上記の実施例に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【００４５】
【発明の効果】
本発明は、次の効果を奏する。
【００４６】
（１）従来法（たとえば、ＩＳＯなど）では８コマンド程度を必要とする公開鍵を用いた認証及び鍵交換処理が、本発明によれば、半分程度の４コマンド程度で実現できるようになる。
【００４７】
（２）従来法では、不正ななりすましが行われる可能性があったが、本発明によれば、チャレンジデータだけではなく、セッション鍵が相互認証処理に必要なデジタル署名（又は暗号文）の対象となるので、正しい相手との間だけで認証及び鍵交換を同時に行えるようになる。
【図面の簡単な説明】
【図１】本発明の一実施例による暗号通信システムの構成図である。
【図２】従来法による公開鍵証明書の交換処理のフローチャートである。
【図３】従来法による相互認証と鍵共有処理のフローチャートである。
【図４】本発明の一実施例による暗号通信路の確立方法のフローチャートである。
【図５】本発明の他の実施例による暗号通信路の確立方法のフローチャートである。
【符号の説明】
１    外部装置
２    ＩＣカード
１１，２１    暗号・署名計算装置
１２，２２    メモリ
【図１】
0004255046.tif 000002
【図２】
0004255046.tif 000003
【図３】
0004255046.tif 000004
【図４】
0004255046.tif 000005
【図５】
0004255046.tif 000006