(57)【要約】  【課題】個人情報を含む電子証明書を用いて、通信相手を認証するための技術を提供【解決手段】クライアント装置は、サーバ装置から電子証明書の要求を受信すると、格納部から個人情報を含むクライアント証明書及びサーバ装置のサーバ公開鍵を読み出し、サーバ公開鍵を用いてクライアント証明書を暗号化する。クライアント装置はまた、電子証明書の基本領域に当該電子証明書が一時デジタル証明であることを示す所定事項を設定し、かつ電子証明書の拡張領域に暗号化されたクライアント証明書を設定することにより、一時電子証明書を作成する。そしてクライアント装置は一時電子証明書をサーバ装置に送信する。
2008050792.tif 000002
【特許請求の範囲】
【請求項１】
個人情報を含む電子証明書を用いて通信相手を認証する方法であって、
クライアント装置において、
サーバ装置から電子証明書の要求を受信するステップと、
前記要求の受信に応答して、格納部から個人情報を含むクライアント証明書及び前記サーバ装置のサーバ公開鍵を読み出すステップと、
前記サーバ公開鍵を用いて前記クライアント証明書を暗号化するステップと、
前記サーバ装置がサポートするフォーマットの電子証明書の第１領域に当該電子証明書が一時電子証明書であることを示す判定情報を設定し、かつ第２領域に暗号化された前記クライアント証明書を設定することにより、前記一時電子証明書を作成するステップと、
前記一時電子証明書をサーバ装置に送信するステップとを含み、
前記サーバ装置において、  
電子証明書を受信するステップと、
受信した前記電子証明書の前記第１領域から前記判定情報を取り出すステップと、
前記判定情報が、受信した前記電子証明書が前記一時電子証明書であることを示すかどうか判定するステップと、
受信した前記電子証明書が前記一時電子証明書であると判定した場合、
前記一時電子証明書の前記第２領域から暗号化された前記クライアント証明書を取り出すステップと、
取り出した前記クライアント証明書を前記サーバ公開鍵に対応するサーバ秘密鍵を用いて復号するステップと、
復号した前記クライアント証明書を用いて前記クライアント装置を認証するステップとを含む、  
認証方法。
【請求項２】
前記サーバ装置において、受信した前記電子証明書が前記一時電子証明書でないと判定した場合、受信した前記電子証明書を用いて前記クライアント装置を認証するステップを含む、請求項１に記載の認証方法。
【請求項３】
前記個人情報を含むクライアント証明書は、公的個人認証サービスにより発行された前記クライアント装置の電子証明書である、請求項１に記載の認証方法。
【請求項４】
前記サーバ装置がサポートする電子証明書のフォーマットは、Ｘ．５０９である、請求項１に記載の方法。
【請求項５】
前記第１領域は、Ｘ．５０９証明書の基本領域であり、前記第２領域は、前記Ｘ．５０９証明書の拡張領域である、請求項１に記載の方法。
【請求項６】
前記サーバ装置がサポートするフォーマットの電子証明書の第１領域は、Ｘ．５０９証明書の拡張領域であり、電子証明書が一時電子証明書であることを示す前記判定情報として、証明書ポリシーが利用される、請求項１に記載の方法。
【請求項７】
前記クライアント装置において受信される前記電子証明書の要求は、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）又はＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）のＨａｎｄＳｈａｋｅプロトコルのＣｅｒｔｉｆｉｃａｔｅ  Ｒｅｑｕｅｓｔメッセージである、請求項１に記載の方法。
【請求項８】
前記クライアント装置において、前記第２領域に更に、所定の文字列と、当該所定の文字列のハッシュ値を前記クライアント証明書に記載されるクライアント公開鍵に対応するクライアント秘密鍵を用いて暗号化した署名値とを設定するステップを含み、
前記サーバ装置において、受信した前記電子証明書が前記一時電子証明書であると判定した場合に、前記一時電子証明書の前記第２領域に記載された前記所定の文字列から求めたハッシュ値と、前記一時電子証明書の前記第２領域に記載された前記署名値を前記クライアント証明書から取り出した前記クライアント公開鍵を用いて復号したものとを比較することにより通信相手が前記クライアント証明書の所有者本人であることを確認するステップを更に含む、請求項１に記載の認証方法。
【請求項９】
前記クライアント装置において、前記クライアント装置上の現在時刻を取得するステップと、前記第２領域に更に、所定の文字列、前記現在時刻を示す署名時刻、並びに前記所定の文字列及び前記署名時刻のハッシュ値を前記クライアント証明書に含まれるクライアント公開鍵に対応するクライアント秘密鍵を用いて暗号化した署名値とを設定するステップを含み、
前記サーバ装置において、受信した前記電子証明書が前記一時電子証明書であると判定した場合に、前記一時電子証明書の前記第２領域に記載された前記所定の文字列及び前記署名時刻と、前記一時電子証明書の前記第２領域に記載された前記署名値を前記クライアント証明書から取り出した前記クライアント公開鍵を用いて復号したものとを比較することにより、通信相手が前記クライアント証明書の所有者本人であることを確認するステップを更に含む、請求項１記載の認証方法。
【請求項１０】
前記サーバ装置において、受信した前記電子証明書が前記一時電子証明書であると判定した場合に、前記サーバ装置上の現在時刻を取得するステップと、当該現在時刻と前記一時電子証明書の前記第２領域から取り出した前記署名時刻との差が許容範囲内であるかどうか判断するステップを更に含む、請求項９に記載の方法。
【請求項１１】
クライアント装置において実行される、個人情報を含む電子証明書を用いて通信相手を認証するための方法であって、
サーバ装置から電子証明書の要求を受信するステップと、
前記要求の受信に応答して、格納部から個人情報を含むクライアント証明書及び前記サーバ装置のサーバ公開鍵を読み出すステップと、
前記サーバ公開鍵を用いて前記クライアント証明書を暗号化するステップと、
前記サーバ装置がサポートするフォーマットの電子証明書の第１領域に当該電子証明書が一時電子証明書であることを示す判定情報を設定し、かつ第２領域に暗号化された前記クライアント証明書を設定することにより、前記一時電子証明書を作成するステップと、
前記一時電子証明書を前記サーバ装置に送信するステップと
を含む通信相手認証のための方法。
【請求項１２】
サーバ装置において実行される、個人情報を含む電子証明書を用いて通信相手を認証するための方法であって、
クライアント装置に対しクライアント証明書を要求するステップと、
前記クライアント装置から当該クライアント装置の電子証明書を受信するステップと、
受信した前記電子証明書の第１領域から判定情報を取り出すステップと、
前記判定情報が、受信した前記電子証明書が個人情報を含む一時電子証明書であることを示すかどうか判定するステップと、
受信した前記電子証明書が前記一時電子証明書でないと判定した場合、受信した前記電子証明書を用いて前記クライアント装置を認証するステップと、
受信した前記電子証明書が前記一時電子証明書であると判定した場合、
受信した前記電子証明書の第２領域から前記サーバ装置のサーバ公開鍵を用いて暗号化されたクライアント証明書を取り出すステップと、
暗号化された前記クライアント証明書を前記サーバ公開鍵に対応するサーバ秘密鍵を用いて復号するステップと、
復号した前記クライアント証明書を用いて前記クライアント装置を認証するステップとを含む、
通信相手認証のための方法。
【請求項１３】
個人情報を含む電子証明書を用いて通信相手を認証するためのシステムであって、
サーバ装置から電子証明書の要求を受信する受信部と、
個人情報を含むクライアント証明書及び前記サーバ装置のサーバ公開鍵を格納する格納部と、
前記要求の受信に応答して、前記格納部から読み出した前記サーバ公開鍵を用いて前記クライアント証明書を暗号化する暗号化部と、
前記サーバ装置がサポートするフォーマットの電子証明書の第１領域に当該電子証明書が一時電子証明書であることを示す判定情報を設定し、かつ第２領域に暗号化された前記クライアント証明書を設定することにより、前記一時電子証明書を作成する作成部と、
前記一時電子証明書をサーバ装置に送信する送信部と
を備えるクライアント装置と、
前記サーバ公開鍵に対応するサーバ秘密鍵を格納する格納部と、
電子証明書を受信する受信部と、
受信した前記電子証明書の前記第１領域から取り出した前記判定情報が、受信した前記電子証明書が一時電子証明書であることを示すかどうか判定する判定部と、
前記判定部が一時電子証明書であると判定することに応答して、受信した前記電子証明書の前記第２領域から暗号化された前記クライアント証明書を取り出し、当該クライアント証明書を前記格納部から読み出したサーバ秘密鍵を用いて復号する復号部と、
受信した前記電子証明書が一時電子証明書であると前記判定部が判定した場合、前記復号部により復号された前記クライアント証明書を用いてクライアント装置を認証する認証部と
を備えるサーバ装置と
を含む、システム。
【請求項１４】
個人情報を含む電子証明書を用いて通信相手を認証するためのクライアント装置であって、
サーバ装置から電子証明書の要求を受信する受信部と、
個人情報を含むクライアント証明書及び前記サーバ装置のサーバ公開鍵を格納する格納部と、
前記要求の受信に応答して、前記格納部から読み出した前記サーバ公開鍵を用いて前記クライアント証明書を暗号化する暗号化部と、
前記サーバ装置がサポートするフォーマットの電子証明書の第１領域に当該電子証明書が一時電子証明書であることを示す判定情報を設定し、かつ第２領域に暗号化された前記クライアント証明書を設定することにより、一時電子証明書を作成する作成部と、
前記一時電子証明書をサーバ装置に送信する送信部と
を備えるクライアント装置。
【請求項１５】
個人情報を含む電子証明書を用いて通信相手を認証するためのサーバ装置であって、
サーバ公開鍵に対応するサーバ秘密鍵を格納する格納部と、
クライアント装置から電子証明書を受信する受信部と、
受信した前記電子証明書の第１領域から取り出した判定情報が、受信した前記電子証明書が一時電子証明書であることを示すかどうか判定する判定部と、
前記判定部が一時電子証明書であると判定することに応答して、受信した前記電子証明書の第２領域から暗号化されたクライアント証明書を取り出し、前記格納部から読み出したサーバ秘密鍵で復号する復号部と、
受信した前記電子証明書が前記一時電子証明書でないと前記判定部が判定する場合、受信した前記電子証明書を用いて前記クライアントを認証し、一時電子証明書であると前記判定部が判定する場合、前記復号部により復号された前記クライアント証明書を用いて前記クライアントを認証する認証部と
を備えるサーバ装置。
【請求項１６】
個人情報を含む電子証明書を用いて通信相手を認証するためのプログラムであって、
前記プログラムは、クライアント装置に、
サーバ装置から電子証明書の要求を受信するステップと、
前記要求の受信に応答して、格納部から個人情報を含むクライアント証明書及び前記サーバ装置のサーバ公開鍵を読み出すステップと、
前記サーバ公開鍵を用いて前記クライアント証明書を暗号化するステップと、
前記サーバ装置がサポートするフォーマットの電子証明書の第１領域に当該電子証明書が一時電子証明書であることを示す判定情報を設定し、かつ第２領域に暗号化された前記クライアント証明書を設定することにより、一時電子証明書を作成するステップと、
前記一時電子証明書をサーバ装置に送信するステップとを実行させ、
前記プログラムは、更に、前記サーバ装置に  
電子証明書を受信するステップと、
受信した前記電子証明書の前記第１領域から前記判定情報を取り出すステップと、
前記判定情報が、受信した前記電子証明書が前記一時電子証明書であることを示すかどうか判定するステップと、
受信した前記電子証明書が前記一時電子証明書であると判定した場合、
前記一時電子証明書の前記第２領域から暗号化された前記クライアント証明書を取り出すステップと、
取り出した前記クライアント証明書を前記サーバ公開鍵に対応するサーバ秘密鍵を用いて復号するステップと、
復号した前記クライアント証明書を用いて前記クライアント装置を認証するステップとを実行させる、  
通信相手を認証するためのプログラム。
【請求項１７】
個人情報を含む電子証明書を用いて通信相手を認証するためのプログラムであって、前記プログラムは、クライアント装置に、
サーバ装置から電子証明書の要求を受信するステップと、
前記要求の受信に応答して、格納部から個人情報を含むクライアント証明書及び前記サーバ装置のサーバ公開鍵を読み出すステップと、
前記サーバ公開鍵を用いて前記クライアント証明書を暗号化するステップと、
前記サーバ装置がサポートするフォーマットの電子証明書の第１領域に当該電子証明書が一時電子証明書であることを示す判定情報を設定し、かつ第２領域に暗号化された前記クライアント証明書を設定することにより、一時電子証明書を作成するステップと、
前記一時電子証明書を前記サーバ装置に送信するステップとを実行させる、
通信相手認証のためのプログラム。
【請求項１８】
個人情報を含む電子証明書を用いて通信相手を認証するためのプログラムであって、前記プログラムは、サーバ装置に、
クライアント装置に対しクライアント証明書を要求するステップと、
前記クライアント装置から当該クライアント装置の電子証明書を受信するステップと、
受信した前記電子証明書の第１領域から判定情報を取り出すステップと、
前記判定情報が、受信した前記電子証明書が前記個人情報を含む一時電子証明書であることを示すかどうか判定するステップと、
受信した前記電子証明書が前記一時電子証明書でないと判定した場合、受信した前記電子証明書を用いて前記クライアント装置を認証するステップと、
受信した前記電子証明書が前記一時電子証明書であると判定した場合、
受信した前記電子証明書の第２領域から前記サーバ装置のサーバ公開鍵を用いて暗号化されたクライアント証明書を取り出すステップと、
暗号化された前記クライアント証明書を前記サーバ公開鍵に対応するサーバ秘密鍵を用いて復号するステップと、
復号した前記クライアント証明書を用いて前記クライアント装置を認証するステップとを実行させる、
通信相手認証のためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子証明書を用いた通信相手の認証に関し、特に個人情報を含む電子証明書を用いて通信相手を認証する技術に関する。
【背景技術】
【０００２】
従来、電子商取引やオンラインバンキング等のセキュアな通信が求められるサーバ−クライアント型データ通信では、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）及びその後継技術でありＲＦＣ  ２２４６としてＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）で標準化されたＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）が広く利用されている。【０００３】
ＳＳＬ／ＴＬＳのＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌでは、暗号化通信の開始に先立ち、サーバ−クライアント間で暗号化通信を開始するために必要な各種パラメータのネゴシエーションが行われる。ＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌでは、最初に相手の認証が行われ、その後クライアントとサーバの両者が共通して利用できる圧縮／暗号化アルゴリズムから最適なアルゴリズムの利用が決定される。ＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌによるネゴシエーションが正常に終了すると、以後サーバ−クライアント間で暗号化通信が開始される。  【０００４】
ここで、ＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌにおける相手認証を、サーバ装置がクライアント装置を認証する場合を例に説明する。公開鍵暗号方式を利用するＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌの相手認証では、サーバ装置からのＣｅｒｔｉｆｉｃａｔｅＲｅｑｕｅｓｔメッセージに応答して、クライアント装置が、自身の電子証明書をＣｌｉｅｎｔＣｅｒｔｉｃｉｃａｔｅメッセージの本体に含めてサーバ装置へ送信する。電子証明書を受け取ったサーバ装置は、その正当性を、保有するルート認証局（Ｃ（Ａ）の鍵を用いて確認する。電子証明書にはまた、公開鍵の他、当該公開鍵に対応する秘密鍵の所有者（電子証明書の発行相手）情報、公開鍵の有効期限等の書誌情報が記載される。そこでサーバ装置は、かかる書誌情報を参照してクライアント装置が適当な通信相手であることを確認する。【０００５】
次にクライアント装置は、ＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌの開始メッセージであるＣｌｉｅｎｔＨｅｌｌｏメッセージからＣｌｉｅｎｔ  Ｋｅｙ  Ｅｘｃｈａｎｇｅメッセージまでの通信内容のダイジェストをクライアント装置の秘密鍵で暗号化して署名を作成し、これをＣｅｒｔｉｆｉｃａｔｅＶｅｒｉｆｙメッセージの本体に含めてサーバ装置へ送信する。サーバ装置は、ＣｅｒｔｉｆｉｃａｔｅＶｅｒｉｆｙメッセージの本体に含まれる情報をクライアント装置の電子証明書に記載される公開鍵で復号することにより、現在の通信相手が電子証明書の所有者本人であることを確認する（非特許文献１参照）。【０００６】
このように、ＳＳＬ／ＴＬＳが提供する相手認証の機能は非常に厳密なものであり、他人によるなりすましや改竄が重大な問題となる電子政府、電子自治体において最適な認証方式といえる。ところで、電子政府・電子自治体の基盤として、近年公的個人認証サービスが開始された（非特許文献２参照）。公的個人認証サービスとは、行政機関が提供する電子申請・届出サービスを利用する際に使用できる電子証明書を、都道府県知事が発行するサービスである。電子証明書の発行は、全国どこに住んでいる人に対しても、安い費用で行われる。従って、公的個人認証サービスにより発行される電子証明書をＳＳＬ／ＴＬＳのクライアント証明書として使用することが望まれる。【０００７】
【非特許文献１】Ｔ．Ｄｉｅｒｋｓ，Ｅ．Ｒｅｓｃｏｒｌａ、“Ｔｈｅ  ＴｒａｎｓｐｏｒｔＬａｙｅｒ  Ｓｅｃｕｒｉｔｙ（ＴＬＳ）Ｐｒｏｔｏｃｏｌ”、［ｏｎｌｉｎｅ］、平成１６年４月、ＲＦＣ  ４３４６、［平成１８年９月２２日検索］、インターネット<ＵＲＬ：http://www.ietf.org/rfc/rfc4346.txt>
【非特許文献２】“公的個人認証サービス  ポータルサイト”、［ｏｎｌｉｎｅ］、平成１６年１月２９日（サイト開設）、公的個人認証サービス都道府県協議会、［平成１８年９月２２日検索］、インターネット<ＵＲＬ：http://www.jpki.go.jp/index1.html>
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、公的個人認証サービスにより発行される電子証明書には、住民基本台帳に記録された氏名、住所、生年月日、性別が公開鍵の所有者情報として記載されている。そのため、これをＳＳＬ／ＴＬＳのクライアント証明書として使用すると、上述したようにＳＳＬ／ＴＬＳでは暗号化通信の開始に先立って相手認証が行われるため、氏名、住所といった個人情報が暗号化されることなくそのまま送信されてしまう。また、電子証明書の規格としては、ＩＴＵ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ）が勧告したＸ．５０９がある。Ｘ．５０９は、ＳＳＬ／ＴＬＳにおいても採用されており標準仕様となっているが、この規格には記載情報を安全に送信できる仕組みは組み込まれていない。【０００９】
そこで本発明は、個人情報を含む電子証明書を用いた通信相手の認証において、盗聴などの個人情報への不正アクセスを防止する通信相手の認証方法、装置、システム及びプログラムを提供することを目的とする。本発明のもう一つの目的は、個人情報を含む電子証明書を用いた安全な通信相手の認証において、従来の通信相手の認証方法との互換性を維持することである。
【課題を解決するための手段】
【００１０】
上記の目的を達成する本発明は、次のような個人情報を含む電子証明書を用いて通信相手を認証するための方法によって実現される。この方法は、クライアント装置がサーバ装置から電子証明書の要求を受信することから開始される。要求の受信に応答して、クライアント装置は、格納部から個人情報を含むクライアント証明書とサーバ装置のサーバ公開鍵を読み出し、サーバ公開鍵を用いて個人情報を含むクライアント証明書を暗号化する。そしてクライアント装置はサーバ装置がサポートするフォーマットの電子証明書の第１領域に当該電子証明書が一時電子証明書であることを示す判定情報を設定し、かつ第２領域に暗号化されたクライアント証明書を設定することにより、一時電子証明書を作成する。一時電子証明書が作成できると、クライアント装置はこれをサーバ装置に送信する。  【００１１】
電子証明書の受信に応答して、サーバ装置は受信した電子証明書の第１領域から判定情報を取り出す。そしてサーバ装置は、判定情報が受信した電子証明書が一時電子証明書であることを示すかどうか判定する。受信した電子証明書は一時電子証明書でないと判定した場合、サーバ装置は受信した電子証明書を用いてクライアント装置を認証する。一方、受信した電子証明書は一時電子証明書であると判定した場合、サーバ装置は一時電子証明書の第２領域に記載されるクライアント証明書を用いてクライアント装置を認証する。後者の場合、サーバ装置は前処理として、第２領域から暗号化されたクライアント証明書を取り出し、これをサーバ公開鍵に対応するサーバ秘密鍵を用いて復号する。【００１２】
クライアント証明書に含まれる個人情報は、氏名、住所、生年月日、性別、会社名、メールアドレス等、個人を特定可能な任意の情報である。個人情報を含むクライアント証明書は、公的個人認証サービスにより発行されたクライアントの電子証明書であってよい。この場合電子証明書には、当該電子証明書に記載された公開鍵に対応する秘密鍵の所有者情報として、住民基本台帳に記載された氏名、住所、生年月日、性別が記載される。【００１３】
サーバ装置がサポートする電子証明書のフォーマットは、Ｘ．５０９であってよい。好ましくは、第１領域はＸ．５０９証明書の基本領域であり、第２領域はＸ．５０９証明書の拡張領域である。これに代えて、サーバ装置がサポートするフォーマットの電子証明書の第１領域は、Ｘ．５０９証明書の拡張領域であり、電子証明書が一時電子証明書であることを示す判定情報として、証明書ポリシーを利用してもよい。また、クライアント装置において受信される電子証明書の要求は、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）又はＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）のＨａｎｄＳｈａｋｅプロトコルのＣｅｒｔｉｆｉｃａｔｅ  Ｒｅｑｕｅｓｔメッセージであってよい。【００１４】
また、クライアント装置は、電子証明書の第２領域に、所定の文字列と、当該文字列のハッシュ値をクライアント証明書に含まれるクライアント公開鍵に対応するクライアント秘密鍵を用いて暗号化した署名値とを更に追加で設定してもよい。この場合、サーバ装置は受信した電子証明書が一時電子証明書であると判定することを条件として、更に一時電子証明書の第２領域に記載される文字列のハッシュ値を求める。また、サーバ装置は一時電子証明書の第２領域に記載される署名値をクライアント証明書に記載されるクライアント公開鍵を用いて復号する。そしてこれら２つの値が一致するかどうか判定することにより、サーバ装置は通信相手がクライアント証明書の所有者本人であることを確認する。【００１５】
これに代えてクライアント装置は、電子証明書の第２領域に、所定の文字列と、現在時刻を示す署名時刻と、所定の文字列と署名時刻とのハッシュ値をクライアント証明書に含まれるクライアント公開鍵に対応するクライアント秘密鍵を用いて暗号化した署名値とを更に追加で設定してもよい。現在時刻は署名時にクライアント装置上で取得される。この場合、サーバ装置は受信した電子証明書が一時電子証明書であると判定することを条件として、更に一時電子証明書の第２領域に記載される所定の文字列と署名時刻とのハッシュ値を求める。また、サーバ装置は一時電子証明書の第２領域に記載される署名値をクライアント証明書に記載されるクライアント公開鍵を用いて復号する。そしてこれら２つの値が一致するかどうか判定することにより、サーバ装置は通信相手がクライアント証明書の所有者本人であることを確認する。【００１６】
好ましくは、サーバ装置は、受信した電子証明書が一時電子証明書であることを条件として、サーバ装置上で現在時刻を取得する。そしてサーバ装置は、過去に使用された本人確認情報の再利用を禁止するべく、現在時刻と一時電子証明書の第２領域に記載される署名時刻との差を求め、求めた差が許容範囲内であるかどうか判断する。【００１７】
以上、クライアント装置及びサーバ装置を含むシステムにおける、通信相手を認証するための方法として本発明を説明したが、本発明は、通信相手を認証するためのシステム又は当該システムに上記方法を実行させるためのプログラムとして把握することもできる。また本発明は、クライアント装置又はサーバ装置における、通信相手を認証するための方法又は当該各方法をクライアント装置又はサーバ装置に実行させるためのプログラムとして把握することもできる。更に本発明は、通信相手を認証するためのクライアント装置又はサーバ装置として把握することもできる。
【発明の効果】
【００１８】
本発明によれば、個人情報を含む電子証明書を用いた通信相手の認証において、盗聴などの個人情報への不正アクセスを防止することができる。更に本発明の通信相手の認証技術を用いると、従来の通信相手の認証方法との互換性も維持できる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。【００２０】
図１は、本発明の一実施形態に係る通信相手を認証するためのシステム１００の構成の一例を示す。本実施形態に係る通信相手を認証するためのシステム１００は、サーバ装置４００からの電子証明書の要求に応答してクライアント装置２００が自身の個人情報を含む電子証明書を送信する場合に、盗聴等による個人情報への不正アクセスを防止しつつ、従来の通信相手の認証方法との互換性を維持することを目的とする。なお、本実施形態では、従来の通信相手の認証方法はＳＳＬ／ＴＬＳのＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌに従う。【００２１】
通信相手を認証するためのシステム１００は、サーバ装置４００との通信を要求するクライアント装置２００と、通信相手を認証するために電子証明書を要求するサーバ装置４００とを備える。クライアント装置２００とサーバ装置４００とは、インターネット等のネットワーク３００を介して接続される。  なお、クライアント装置２００は、自身を証明する電子証明書として個人情報を含むクライアントの電子証明書を予め取得しているものとする。【００２２】
ＳＳＬ／ＴＬＳを利用した通信では、通信相手の認証はＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌに従う手続きの初期に行われる。サーバ装置４００はまず、サーバ証明書を含むＳｅｒｖｅｒ  Ｃｅｒｔｉｆｉｃａｔｅメッセージをクライアント装置２００へ送信する。サーバ証明書には公開鍵暗号方式に従うサーバの公開鍵が含まれる。そのためクライアント装置２００はこの時点でサーバ公開鍵を取得する。次にサーバ装置４００はクライアント装置２００へＣｌｉｅｎｅｔ  Ｃｅｒｔｉｆｉｃａｔｅメッセージを送信し、クライアント装置２００に電子証明書を要求する。要求を受信したクライアント装置２００は、自身の格納部から個人情報を含むクライアント証明書とサーバ装置４００のサーバ公開鍵を読み出し、個人情報への不正アクセスを防ぐためサーバ公開鍵でクライアント証明書を暗号化する。【００２３】
暗号化されたクライアント証明書はそのままではサーバ装置４００において電子証明書として認識されない。そのためクライアント装置２００は、サーバ装置４００がサポートする電子証明書のフォーマットに従う一時電子証明書を作成する。ＳＳＬ／ＴＬＳは、電子証明書のフォーマットとしてＸ．５０９を採用する。Ｘ．５０９には複数のバージョンがあり、現在最もよく利用されているバージョン３には、発行者情報や公開鍵等の基本事項が記載される基本領域の他に、独自の情報を記載できる拡張領域が新たに設けられている。そこでクライアント装置２００は、Ｘ．５０９証明書の基本領域または拡張領域に当該電子証明書が一時電子証明書であることを示す判定情報を設定し、またＸ．５０９証明書の拡張領域に暗号化されたクライアント証明書を設定することで、一時電子証明書を作成する。そしてクライアント装置２００はＣｌｉｅｎｔ  Ｃｅｒｔｉｆｉｃａｔｅメッセージに一時電子証明書を含めてサーバ装置４００へ送信する。【００２４】
サーバ装置４００は、クライアント装置から一時電子証明書が含まれたＣｌｉｅｎｔ  Ｃｅｒｔｉｆｉｃａｔｅメッセージを受信し、一時電子証明書の基本領域または拡張領域から判定情報を取り出す。そしてサーバ装置４００は判定情報が、受信した電子証明書が一時電子証明書であることを示すかどうか判定する。受信した電子証明書が一時電子証明書でないと判定した場合、サーバ装置４００は、受信した電子証明書を用いてクライアント装置を認証する。一方、受信した電子証明書が一時電子証明書であると判定した場合、サーバ装置４００は、一時電子証明書の拡張領域から暗号化されたクライアント証明書を取り出し、これをサーバ公開鍵に対応するサーバ秘密鍵で復号する。そしてサーバ装置４００は、復号したクライアント証明書を用いてクライアント装置を認証する。【００２５】
以上のようにクライアント装置２００は、サーバ装置４００がサポートするフォーマットの電子証明書内に自身を証明する真の電子証明書を設定するので、個人情報を含むクライアント証明書を暗号化して送信することが可能となり、第三者による個人情報への不正アクセスが防止される。また、サーバ装置４００は、所定の領域に記載される判定情報により受信した電子証明書が一時電子証明書かどうか判定するので、判定結果に応じて相手認証に用いる電子証明書とすべき対象を変えることが可能となり、従来の通信相手の認証方法との互換性が維持される。【００２６】
図２は、本発明の一実施形態に係るクライアント装置２００の機能構成の一例を示す。クライアント装置２００は、格納部２０５、一時証明書作成部２３５、ポリシー判定部２８０、署名作成部２８５及び通信部２７５を備える。一時証明書作成部２３５は、サーバ装置４００がサポートする電子証明書のフォーマットに従う一時証明書を作成する機能を有し、一時鍵作成部２４０、基本領域設定部２４５、暗号化部２５０、時刻取得部２５５、署名値計算部２６０、拡張領域設定部２６５、及び署名設定部２７０を含む。格納部２０５は、予め取得した個人情報を含むクライアント証明書２３０、当該クライアント証明書２３０に記載される公開鍵暗号方式に従うクライアント公開鍵に対応するクライアント秘密鍵２２５、サーバ装置から取得したサーバ証明書２１５、所定の文字列２１０、及び一時証明書作成対象ポリシー一覧２３２を格納する。【００２７】
ここで図３（ａ）を参照して、ＳＳＬ／ＴＬＳで採用されるＸ．５０９バージョン３の電子証明書のフォーマットを説明する。Ｘ．５０９証明書は大きく分けて基本領域と拡張領域の２つの領域から構成される。基本領域には、Ｘ．５０９のバージョン、証明書のシリアル番号、証明書の署名に使用されているハッシュ・アルゴリズム及び公開鍵アルゴリズム（署名方式）、証明書の発行者である発行者情報、当該基本領域に設定される公開鍵の有効期限及びこれに対応する秘密鍵の所有者情報を含む書誌情報と、公開鍵情報とが設定される。また拡張領域には、Ｘ．５０９バージョン２から追加された認証局固有識別情報及び所有者固有識別情報、またＸ．５０９バージョン３から追加された拡張型、拡張値及びクリティカルビットの３つの組の集合が、それぞれ任意で設定可能である。なお拡張型にはＸ．５０９バージョン３で定められた標準の拡張型のほか、独自の新しい拡張型を組み込むことが可能である。【００２８】
Ｘ．５０９証明書にはまた、基本領域及び拡張領域に設定される情報をハッシュ処理して得られるハッシュ値を認証局の秘密鍵で暗号化した、認証局の署名が付される。電子証明書の受信者は、認証局のルート証明書を用いて認証局の署名を検証することにより電子証明書の有効性を確認できる。すなわち、基本領域及び拡張領域に設定される情報をハッシュ処理して得られるハッシュ値と、認証局のルート証明書に記載されるルート公開鍵を用いて復号した認証局の署名とが一致するかどうか判定することにより、署名が確かに認証局により付されたこと、及び基本領域及び拡張領域に記載される情報が損傷や改竄を受けていないことを確認できる。なお、ルート証明書とは、電子証明書を発行する認証局が、その正当性を証明するために自ら署名して発行する電子証明書である。【００２９】
格納部２０５に格納されるサーバ証明書２２０は、上述したようにＳＳＬ／ＴＬＳを利用した通信の認証処理において、サーバ装置４００からクライアント装置２００へ送信されたものである。従って本実施形態に係るサーバ証明書２２０はＸ．５０９のフォーマットに従う。また、格納部２０５に格納される個人情報を含むクライアント証明書２３０は、本実施形態では公的個人認証サービスにより発行されたものとする。図３（ｂ）に、公的個人認証サービスにより発行されたＸ．５０９のフォーマットに従うクライアント証明書の一例を示す。クライアント証明書の基本領域には、図３（ａ）を参照して説明した通りの情報が記載される。一方クライアント証明書２３０の拡張領域には、独自に、住民基本台帳に記載される氏名、生年月日、性別、住所が記載される。同じく拡張領域に記載される証明書ポリシーは、証明書の目的や利用用途を規定するものである。ここでは、当該証明書が公的個人認証サービスにより発行されたものであることを示す情報がＯｂｊｅｃｔ  Ｉｄｅｎｔｉｆｉｅｒ（ＯＩＤ）形式で記載される。ＯＩＤとは、国際的に登録し標準化機関によって承認された特別に形式化された番号であり、ISO 標準に登録された特定のオブジェクトやオブジェクトクラスを示すものである。
またクライアント証明書２３０に付される署名値Ｂは都道府県知事により施される署名である。【００３０】
なお、公的個人認証サービスでは、他人による不正使用を防ぐため、電子証明書と当該電子証明書が証明する公開鍵に対応する秘密鍵は利用者のＩＣカードに格納される。従って、図２では一時証明書作成に必要な情報はすべて同一の格納部２０５に格納されるよう示しているが、クライアント証明書２３０及びクライアント秘密鍵２２５は実際にはＩＣカードに格納され、ＩＣカードリーダライタによって読み出される。格納部２０５に格納される所定の文字列は、予めサーバ装置４００との間で取り決められた文字列であり、署名として利用するのに適切な任意の文字列である。また格納部２０５に格納される一時証明書作成対象ポリシー一覧２３２は、個人情報を含む電子証明書に設定されうる証明書ポリシーの一覧である。本実施形態にかかる一時証明書作成対象ポリシー一覧２３２は、公的個人認証サービスにより発行されたものであることを示す証明書ポリシーがリストされる。【００３１】
通信部（受信部）２７５は、サーバ装置４００から電子証明書の要求を受信し、ポリシー判定部２８０にメッセージの受信を通知する。ポリシー判定部２８０は、電子証明書の要求の通知に応答して、格納部２０５からクライアント証明書２３０と一時証明書作成対象ポリシー一覧２３２を読み出す。そして、ポリシー判定部２８０は、クライアント証明書２３０の拡張領域に記載される証明書ポリシーが、一時証明書作成対象ポリシー一覧２３２にリストされている証明書ポリシーであるかどうか判定する。【００３２】
クライアント証明書２３０の証明書ポリシーが一時証明書作成対象ポリシー一覧２３２にリストされている場合、ポリシー判定部２８０は、一時証明書作成部２３５に一時電子証明書の作成を依頼する。クライアント証明書２３０の証明書ポリシーが一時証明書作成対象ポリシー一覧２３２にリストされていない場合、すなわちクライアント証明書２３０が個人情報を含まない場合は、ポリシー判定部２８０は、格納部２０５から読み出したクライアント証明書２３０を、通信部（送信部）２７５を介してそのままサーバ装置４００へ送信する。なお、本実施形態に係るクライアント証明書２３０は個人情報を含むため、ポリシー判定部２８０は、一時証明書作成部２３５に一時電子証明書の作成を依頼する。【００３３】
一時証明書作成部２３５は、ポリシー判定部２８０からの依頼に応答して、サーバ装置４００がサポートする電子証明書のフォーマット、すなわち本実施形態ではＸ．５０９に従う一時電子証明書の作成を次のように開始する。一時鍵作成部２４０は、一時電子証明書作成に使用するため、公開鍵暗号方式に従う一組の鍵、すなわち一時公開鍵とこれに対応する一時秘密鍵とを生成する。基本領域設定部２４５は、一時電子証明書の基本領域を設定する。一例として基本領域設定部２４５は、格納部２０５からサーバ証明書２１５に記載される所有者情報を読み出し、これを一時電子証明書の発行者情報のフィールドにコピーする。これにより一時電子証明書を受信したサーバ装置４００に対し、当該電子証明書が一時電子証明書であることを示すことができる。【００３４】
これに代えて、電子証明書が一時電子証明書であることを示す証明書ポリシーを利用してもよい。電子証明書の基本領域の発行者情報のフィールドや、電子証明書の拡張領域の証明書ポリシーのフィールドは、一般的に電子証明書の種別を識別する目的で使用されているフィールドである。このためこれらのフィールドを電子証明書が一時電子証明書であることを示す情報を記載するために利用した場合は、独自定義のフィールドを利用する場合のように、電子証明書の内容が第三者に対し意味不明なるというようなことがない。基本領域設定部２４５はまた、所有者情報のフィールドに自身の情報を設定し、更に公開鍵のフィールドに一時鍵作成部２４０が生成した一時公開鍵を設定する。基本領域のその他のフィールドについては、それぞれ任意の適切な値が設定される。  【００３５】
暗号化部２５０は、格納部２０５からクライアント証明書２３０及びサーバ証明書２１５に記載されるサーバ公開鍵２２０を読み出し、サーバ公開鍵２２０を用いてクライアント証明書２３０を暗号化する。時刻取得部２５５は、クライアント装置２００上の現在時刻を取得する。署名値計算部２６０は、格納部２０５から文字列２１０を読み出し、時刻取得部２５５により取得された現在時刻と文字列とを署名対象として署名値を計算する。すなわち署名値計算部２６０は、現在時刻と文字列２１０とをハッシュ関数を用いてハッシュ処理し、得られるハッシュ値を格納部２０５に格納されるクライアント秘密鍵２２５を用いて暗号化する。【００３６】
署名値計算に用いるハッシュ関数は、予めサーバ装置４００との間で取り決めておいてもよく、又はクライアント証明書２３０の署名に利用されているものと同じものとしてもよい。更には利用したハッシュ関数情報を一時電子証明書の拡張領域を利用してサーバ装置４００に通知してもよい。また、署名値計算部２６０は、格納部２０５から読み出した文字列２１０のみを署名対象としてもよい。【００３７】
拡張領域設定部２６５は、一時電子証明書の拡張領域に暗号化部２５０により暗号化されたクライアント証明書２３０を設定する。拡張領域設定部２６５はまた、本人確認情報として一時電子証明書の拡張領域に、格納部２０５から読み出された文字列２１０、時刻取得部２５５により取得された現在時刻（以下、「署名時刻」という）、及び署名値計算部２６０により計算された署名値を追加設定してもよい。また、署名設定部２７０は、一時電子証明書に署名を施す。すなわち署名設定部２７０は、基本領域及び拡張領域に設定された情報をハッシュ処理し、得られるハッシュ値をサーバ証明書２１５に記載されるサーバ公開鍵２２０を用いて暗号化した署名値を一時電子証明書に設定する。【００３８】
図３（ｃ）に、一時証明書作成部２３５により作成された一時電子証明書の一例を示す。上述したように、本実施形態に係る一時電子証明書の発行者情報フィールドには、当該電子証明書が一時デジタル証明であることを示す判定情報（本実施形態ではサーバ装置４００情報）が記載される。また、一時電子証明書の拡張領域には、暗号化済みのクライアント証明書２３０と本人確認情報である文字列２１０、署名時刻、署名値Ｃが記載される。更に、一時電子証明書には、サーバ装置４００のサーバ公開鍵を用いて計算された署名値Ｂが付される。通信部（送信部）２７５は、一時証明書作成部２３５により作成された一時電子証明書を電子証明書の要求に対する応答としてサーバ装置４００へ送信する。【００３９】
一時格納部２９０は、ＳＳＬ／ＴＬＳのＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌの開始メッセージであるＣｌｉｅｎｔＨｅｌｌｏメッセージからＣｌｉｅｎｔ  Ｋｅｙ  Ｅｘｃｈａｎｇｅメッセージまでの通信内容を一時的に格納する。署名作成部２８５は、通信部（送信部）２７５より送信される電子証明書が確かにクライアント装置２００により送信されたものであることをサーバ装置４００が確認する際に使用可能な署名を、一時格納部２９０が格納する上記情報を使用して作成する。すなわち、署名作成部２８５は、一時格納部２９０から上記通信内容を読み出してハッシュ処理することによりハッシュ値を求め、これを送信する電子証明書に記載される公開鍵に対応する秘密鍵で暗号化することにより署名を作成する。そして署名作成部２８５は、作成した署名を、電子証明書と一緒に又はその送信の後、通信部（送信部）２７５を介してサーバ装置４００へ送信する。【００４０】
以上のように、本発明の実施形態に係るクライアント装置２００によれば、電子証明書の拡張領域を利用してサーバ装置４００がサポートするフォーマットの電子証明書内に自身を証明する真の電子証明書を設定するので、個人情報を含むクライアント証明書を暗号化した状態で送信することができ、第三者による個人情報への不正アクセスを防止できる。【００４１】
図４は、本発明の一実施形態に係るサーバ装置４００の機能構成の一例を示す。サーバ装置４００は、通信部４０５、一時格納部４１０、判定部４１５、復号部４２０、格納部４２５、及び認証部４３０を備える。格納部４２５は、サーバ秘密鍵４３０と信頼済み証明書一覧４３５を格納する。ここでサーバ秘密鍵４３０は、クライアント装置２００へ送信したサーバ証明書２１５に記載されるサーバ公開鍵２２０に対応する秘密鍵である。また、信頼済み証明書一覧４３５は、複数の認証局のルート証明書の一覧であり、ルート証明書の正当性はサーバ装置４００において既に確認されているものとする。認証部４３０は、通信相手を認証する機能を有し、証明書検証部４３５と本人確認部４４０とを含む。本人確認部４４０は電子証明書が確かに本人から送信されたことを確認する機能を有し、署名検証部４４５と時刻検証部４５０とを含む。【００４２】
通信部４０５は、電子証明書の要求に対する応答としてクライアント装置２００から電子証明書を受信する。受信した電子証明書は、一時格納部４１０に格納される。判定部４１５は、一時格納部４１０から電子証明書に記載される判定情報、すなわち本実施形態では電子証明書の基本領域に記載される発行者情報を読み出し、受信した電子証明書が一時電子証明書であることを判定情報が示しているかどうか判定する。受信した電子証明書が一時電子証明書であることを示す場合、すなわち本実施形態では発行者情報がサーバ装置４００自身を示す場合、判定部４１５は判定結果を復号部４２０と認証部４３０に通知する。一方、受信した電子証明書が一時電子証明書であることを示さない場合、判定部４１５は判定結果を認証部４３０にのみ通知する。    【００４３】
復号部４２０は、受信した電子証明書が一時電子証明書であるとの通知に応答して、一時格納部４１０から受信した電子証明書の拡張領域に記載される暗号化されたクライアント証明書２３０を読み出す。そして復号部４２０は、読み出したクライアント証明書２３０を格納部４２５に格納される対応するサーバ秘密鍵４３０を用いて復号する。復号されたクライアント証明書２３０はその後認証部４３０へ渡される。【００４４】
認証部４３０は、受信した電子証明書は一時電子証明書でないと判定部４１５が判定した場合、受信した電子証明書と当該電子証明書と一緒に又はその後にクライアント装置２００から送信される署名とを用いてクライアント装置２００を認証する。一方、受信した電子証明書は一時電子証明書であると判定部４１５が判定した場合、認証部４３０は復号されたクライアント証明書２３０と一時電子証明書の拡張領域に設定される署名とを用いてクライアント装置２００を認証する。認証部４３０による認証処理は、判定部４１５からの判定結果の通知に応答して開始され、証明書検証部４３５と本人確認部４４０による処理が行われる。【００４５】
電子証明書の検証方法は判定部４１５による判定結果にかかわらず基本的に同じである。そこで以下では、個人情報を含むクライアント証明書２３０を検証する場合を例に、証明書検証部４３５による処理を説明する。なお、個人情報を含むクライアント証明書２３０を検証対象とする場合、後述する本人確認部４４０による処理の成功を条件としてもよい。【００４６】
証明書検証部４３５は、復号部４２０から復号されたクライアント証明書２３０を受け取り、電子証明書の検証、すなわち、クライアント証明書２３０に付された署名の検証と、クライアント証明書２３０に記載される書誌情報の確認を行う。署名の検証は次のようにして行う。まず、クライアント証明書２３０に記載される発行者情報を参照して、格納部４２５に格納される信頼済み証明書一覧４３５の中から該当する認証局（本実施形態では、都道府県知事）のルート証明書を検索する。次に、ルート証明書に記載されるルート公開鍵を用いてクライアント証明書２３０に付された署名を復号する。そして、これをクライアント証明書２３０の基本領域及び拡張領域に記載される情報をハッシュ処理して得られたハッシュ値と比較して一致するかどうか判定する。２つが一致すれば検証は成功である。なお、署名に使用されるアルゴリズムは、クライアント証明書２３０に記載される署名方式により確認できる。【００４７】
次に、クライアント証明書２３０に記載される書誌情報の確認には、一例としてクライアント証明書２３０の有効期限及び失効の確認、また所有者情報や個人情報を参照した通信相手の確認が含まれる。ここで、クライアント証明書の失効を確認する方法を説明する。認証局が電子証明書の失効を利用者に通知するには２つの方法があり、１つは失効された証明書のリストを定期的に公開するＣｅｒｔｉｆｉｃａｔｅ Ｒｅｖｏｃａｔｉｏｎ Ｌｉｓｔ（ＣＲＬ)方法であり、１つは証明書の失効情報を保持したサーバーが、クライアン
トからの証明書の失効情報の問い合わせに答えるＯｎｌｉｎｅ  Ｃｅｒｔｉｆｉｃａｔｅ  Ｓｔａｔｕｓ  Ｐｒｏｔｏｃｏｌ（ＯＣＳＰ）方法である。公的個人認証サービスでは前者の方法が採用されており、従って本実施形態では、証明書検証部４３５は認証局にＣＲＬを要求し、受信したＣＲＬにクライアント証明書がリストされているかどうか判定することにより失効を確認する。なお、上述した個人情報を参照した通信相手の確認は、個人情報を含むクライアント証明書２３０を検証対象とする場合に限られる。  【００４８】
本人確認部４４０は、検証対象の電子証明書が確かにクライアント証明書２３０の所有者により送信されたことを確認する。受信した電子証明書は一時電子証明書であると判定部４１５が判定した場合、署名検証部４４５は、一時格納部４１０から一時電子証明書の拡張領域に記載される本人確認情報を読み出し、署名の検証を行う。本人確認情報を用いた署名の検証は次のようにして行われる。まず本人確認情報に含まれる文字列２１０と署名時刻を予めクライアント装置２００との間で取り決められたハッシュ関数を用いてハッシュ処理しハッシュ値を得る。次に本人確認情報に含まれる署名値Ｃを、復号されたクライアント証明書２３０に記載されるクライアント公開鍵を用いて復号する。最後に復号された署名値Ｃと上記ハッシュ値を比較する。２つが一致すれば、クライアント証明書２３０は確かにクライアント証明書２３０の所有者により送信されたものであるといえる。【００４９】
一方、受信した電子証明書は一時電子証明書でないと判定部４１５が判定した場合、署名検証部４４５は、電子証明書と一緒に又は電子証明書の受信の後にクライアント装置２００から送信される署名に対して検証処理を行う。クライアント装置２００の機能構成の説明で上述したように、ＳＳＬ／ＴＬＳのＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌにおける相手認証では、本人確認情報として、ＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌの開始メッセージであるＣｌｉｅｎｔＨｅｌｌｏメッセージからＣｌｉｅｎｔ  Ｋｅｙ  Ｅｘｃｈａｎｇｅメッセージまでの通信内容が利用される。そして、かかる通信内容のハッシュ値を電子証明書に記載される公開鍵に対応する秘密鍵で暗号化することにより計算された署名値が、ＣｌｉｅｎｔＣｅｒｔｉｆｉｃａｔｅメッセージの後に送信されるＣｅｒｔｉｆｉｃａｔｅＶｅｒｉｆｙメッセージの本体に入れられてクライアント装置２００から送信される。【００５０】
そこで、受信した電子証明書がそのまま検証対象となる場合、署名検証部４４５は次のようにして署名検証を行う。通信部４０５においてクライアント装置２００からＣｅｒｔｉｆｉｃａｔｅＶｅｒｉｆｙメッセージが受信されると、署名検証部４４５は一時格納部４１０を介してＣｅｒｔｉｆｉｃａｔｅＶｅｒｉｆｙメッセージ本体に含まれる署名値を読み出す。そして、署名検証部４４５は署名値をクライアント装置２００から受信した電子証明書に記載される公開鍵で復号する。また一時格納部４１０は、ＣｌｉｅｎｔＨｅｌｌｏメッセージからＣｌｉｅｎｔ  Ｋｅｙ  Ｅｘｃｈａｎｇｅメッセージまでの通信内容を一時的に格納する。そこで署名検証部４４５は一時格納部４１０からこれら通信内容を読み出してハッシュ値を求め、復号した署名値と比較する。２つが一致すれば、受信した電子証明書は確かに当該電子証明書の所有者により送信されたものであるといえる。  【００５１】
なお、本実施形態では従来の通信相手の認証方法、すなわちＳＳＬ／ＴＬＳのＨａｎｄｓｈａｋｅＰｒｏｔｏｃｏｌにおける相手認証との互換性を維持するため、一時電子証明書をサーバ装置４００へ送信する場合でも、クライアント装置２００はＣｅｒｔｉｆｉｃａｔｅＶｅｒｉｆｙメッセージを作成しサーバ装置４００へ送信するものとする。この場合使用されるクライアントの秘密鍵は一時電子証明書に記載される一時公開鍵に対応する一時秘密鍵である。但し、サーバ装置４００は、ＣｅｒｔｉｆｉｃａｔｅＶｅｒｉｆｙメッセージ本体に含まれる署名を検証する必要はない。【００５２】
本人確認部４４０はまた、一時電子証明書の拡張領域に署名時刻が記載される場合、一時電子証明書の拡張領域に記載される本人確認情報が再利用されたものでないことを確認してもよい。この場合、時刻検証部４５０はまずサーバ装置４００上の現在時刻を取得する。そして、現在時刻と一時電子証明書の拡張領域に記載される署名時刻との差を計算し、求めた差が許容範囲内であるかどうか判定する。許容範囲内であれば、本人確認情報は再利用されたものでないといえる。このように署名に署名時刻を含めることによって本人確認情報の再利用を禁止することで、一時電子証明書を盗聴して本人確認情報を盗んだ第三者が偽の一時電子証明書を作成することを防止できる。【００５３】
以上のように、本発明の実施形態に係るサーバ装置４００によれば、クライアント装置２００から電子証明書を受信した場合に、まず電子証明書の所定の領域に記載される判定情報を用いて、受信した電子証明書が一時電子証明書かどうか判定するので、判定結果に応じて相手認証に用いる電子証明書とすべき対象を変えることが可能となる。すなわち、本発明の実施形態に係るサーバ装置４００によれば、暗号化された電子証明書と通常の暗号化されていない電子証明書の両方を処理することが可能となり、従来の通信相手の認証方法との互換性を維持できる。【００５４】
次に、図５のフローチャートを参照して、本実施形態に係るクライアント装置２００の動作を説明する。図５（ａ）はサーバ装置４００からの電子証明書の要求に応答して電子証明書を送信するまでのクライアント装置２００の処理の流れを示す。クライアント装置２００は、サーバ装置４００からクライアント装置２００を認証するための電子証明書の要求を受信すると（ステップ５００）、格納部２０５からサーバ装置４００へ送信すべきクライアント証明書２３０と一時証明書作成対象ポリシー一覧２３２を読み出す（ステップ５０３）。そしてクライアント装置２００は、クライアント証明書２３０の拡張領域から証明書ポリシーを取り出し（ステップ５０６）、取り出した証明書ポリシーが一時証明書作成対象ポリシー一覧２３２にリストされているかどうか判断する（ステップ５０９）。【００５５】
取り出した証明書ポリシーが一時証明書作成対象ポリシー一覧２３２にリストされている場合（ステップ５０９：ＹＥＳ）、一時電子証明書を作成するための前準備が開始される。すなわちクライアント装置２００はまず、格納部２０５からサーバ証明書２１５を読み出し（ステップ５１２）、読み出したサーバ証明書２１５から所有者情報とサーバ公開鍵を取り出す（ステップ５１５）。また、クライアント装置２００は、一時電子証明書に使用するため、公開鍵方式に従う一組の鍵、すなわち一時公開鍵と一時秘密鍵とを生成する（ステップ５１８）。  【００５６】
前準備が終わると、クライアント装置２００は用意した情報を用いてサーバ装置４００がサポートする電子証明書のフォーマットに従う一時電子証明書を作成する（ステップ５２１）。一時電子証明書の作成方法については後述する。クライアント装置２００は、作成した一時電子証明書をサーバ装置４００へ送信すると（ステップ５２４）、一時電子証明書に記載される一時公開鍵に対応する一時秘密鍵を用いて署名を作成し、これをサーバ装置４００へ送信する（ステップ５２７）。【００５７】
一方、ステップ５０９でＮＯの場合、すなわち取り出した証明書ポリシーが一時証明書作成対象ポリシー一覧２３２にリストされておらずクライアント証明書２３０に個人情報が含まれていない場合、クライアント装置２００は、格納部２０５から読み出したクライアント証明書２３０をそのままサーバ装置４００へ送信する（ステップ５３０）。そして、クライアント装置２００は、クライアント証明書２３０に記載されるクライアント公開鍵に対応するクライアント秘密鍵を用いて署名を作成し、これをサーバ装置４００へ送信する（ステップ５３６）。ステップ５２７又はステップ５３３の後処理は終了する。【００５８】
図５（ｂ）を参照して一時電子証明書作成の処理の流れを説明する。クライアント装置２００はまず、図５（ａ）のステップ５１５及び５１８で用意した情報を用いて、一時電子証明書の基本領域の設定を行う（ステップ５４０）。すなわち、発行者情報のフィールドにサーバ装置４００を示す所有者情報を設定し、また公開鍵情報のフィールドに一時公開鍵を設定する。その他のフィールドについては、それぞれ任意の適切な値を設定する。次にクライアント装置２００は、図５（ａ）のステップ５１５で取得したサーバ公開鍵を用いて、個人情報を含むクライアント証明書を暗号化する（ステップ５４５）。またクライアント装置２００は、クライアント証明書が確かにその所有者により送信されたことを示すため本人確認情報を作成する（ステップ５５０）。本人確認情報の作成方法については後述する。そしてクライアント装置２００は、暗号化済みのクライアント証明書と本人確認情報とを一時電子証明書の拡張領域に設定する（ステップ５５５）。最後にクライアント装置２００は、サーバ公開鍵２２０を用いて一時電子証明書に署名を施す（ステップ５６０）。そして処理は終了する。  【００５９】
図５（ｃ）を参照して、本人確認情報の作成方法の処理の流れを説明する。クライアント装置２００は、格納部２０５から予めサーバ装置４００との間で取り決めておいた文字列を読み出す（ステップ５７０）。次にクライアント装置２００はクライアント装置２００上の現在時刻を取得する（ステップ５７５）。そして読み出した文字列と現在時刻とを署名対象として、クライアント証明書２３０に記載されるクライアント公開鍵に対応するクライアント秘密鍵を用いて署名値を計算する（ステップ５８０）。そして処理は終了する。【００６０】
次に、図６のフローチャートを参照して、本実施形態に係るサーバ装置４００の動作を説明する。図６（ａ）はサーバ装置４００による処理の流れの概要を示す。サーバ装置４００は、通信相手であるクライアント装置２００を認証するために、クライアント装置２００へ電子証明書の要求を送信する（ステップ６００）。クライアント装置２００から電子証明書を受信すると（ステップ６０３）、サーバ装置４００はこれを検証する（ステップ６０６）。続いてサーバ装置４００はクライアント装置２００から署名を受信する（ステップ６０９）。サーバ装置４００は署名を検証し、受信した電子証明書が確かに当該電子証明書の所有者から送信されたことを確認する（ステップ６１２）。そして処理は終了する。【００６１】
図６（ｂ）を参照して、サーバ装置４００による電子証明書の検証処理の流れを説明する。まずサーバ装置４００は、受信した電子証明書の基本領域から発行者情報を取り出し（ステップ６１５）、受信した電子証明書が一時電子証明書であるかどうか判定する（ステップ６２０）。一時電子証明書であると判定した場合（ステップ６２０：ＹＥＳ）、サーバ装置４００は一時電子証明書を検証する（ステップ６２５）。一時電子証明書の検証については後述する。ステップ６３０において一時電子証明書の検証が成功した場合、サーバ装置４００は一時電子証明書内に含まれるクライアント証明書２３０をクライアント装置２００認証のための検証対象と認識する（ステップ６３５）。一方、受信した電子証明書は一時電子証明書でないと判定した場合（ステップ６２０：ＮＯ）サーバ装置４００は受信した電子証明書そのものをクライアント装置２００認証のための検証対象と認識する（ステップ６３７）。【００６２】
そして処理はステップ６３５又はステップ６３７からステップ６４０へ進み、サーバ装置４００は、検証対象の証明書に施された署名を検証する（ステップ６４０）。ステップ６４０において検証が成功すると、サーバ装置４００は検証対象の証明書に記載された有効期限から証明書がまだ有効であることを検証する（ステップ６４５）。ステップ６４５において検証が成功すると、サーバ装置４００は検証対象の証明書の発行者と通信し、証明書が失効していないことを検証する（ステップ６５０）。ステップ６５０において検証に成功すると、サーバ装置４００は、検証対象の証明書に記載された所有者情報を参照し、クライアント装置２００が適当な通信相手であることを検証する（ステップ６５２）。ステップ６５２における検証の成功は、電子証明書の検証の成功を意味する。なお、検証の順番は図６（ｂ）に示す順番に制限されない。【００６３】
ステップ６３０において一時電子証明書の検証に失敗した場合、又はステップ６４０、６４５、６５０及び６５２のいずれかにおいて検証に失敗した場合、処理はステップ６６０へ進み、検証が失敗したことをクライアント装置２００へ通知する。検証の失敗を知らせるために、ＳＳＬ／ＴＬＳではＡｌｅｒｔＰｒｏｔｏｃｏｌを利用する。例えば証明書の有効期限が切れている場合、Ｃｅｒｔｉｆｉｃａｔｅ＿ｅｘｐｉｒｅｄメッセージをクライアント装置２００へ送信する。また、証明書が失効している場合は、Ｃｅｒｔｉｆｉｃａｔｅ＿ｒｅｖｏｋｅｄメッセージをクライアント装置２００へ送信する。【００６４】
図６（ｃ）を参照して、サーバ装置４００による一時電子証明書の検証処理の流れを説明する。まずサーバ装置４００は、一時電子証明書の拡張領域から暗号化されたクライアント証明書２３０を取り出し（ステップ６６５）、格納部４２５から読み出したサーバ秘密鍵４３０を用いてクライアント証明書２３０を復号する（ステップ６７０）。次にサーバ装置４００は一時電子証明書の拡張領域から、本人確認情報として記載されている署名対象、すなわち文字列と署名時刻とを取り出し（ステップ６７５）、所定のハッシュ関数を用いて署名対象のハッシュ値を求める。サーバ装置４００はまた、一時電子証明書の拡張領域から本人確認情報として記載されている署名値を取り出す（ステップ６８０）。サーバ装置４００は、復号したクライアント証明書に記載されているクライアント公開鍵を用いて取り出した署名値を復号し、これをハッシュ値と比較して署名を検証する（ステップ６８５）。【００６５】
ステップ６９０で検証が成功した場合、すなわちクライアント証明書２３０が確かにクライアント証明書２３０の所有者から送信されたと確認できる場合、サーバ装置４００は更に、サーバ装置４００上の現在時刻を取得する（ステップ６９５）。そしてサーバ装置４００は、取得した現在時刻と、一時電子証明書の拡張領域に記載された署名時刻との差を計算する（ステップ７００）。計算した差が許容範囲内である場合（ステップ７０５：ＹＥＳ）、すなわち、一時電子証明書の拡張領域に記載された本人確認情報が再利用されたものでないと確認できる場合、サーバ装置４００は検証成功を保存する（ステップ７１０）。ステップ７４０において署名検証が失敗した場合又はステップ７０５で計算した差が許容範囲内でない場合、サーバ装置４００は検証失敗を保存する（ステップ７１５）。そして処理は終了する。【００６６】
図７は、本実施形態に係るクライアント装置２００のハードウェア構成の一例を示す。図７はまたサーバ装置４００のハードウェア構成の一例でもある。以下では、クライアント装置２００のハードウェア構成として図７を説明する。クライアント装置２００は、ホストコントローラ７１５により相互に接続されるＣＰＵ７１０及びＲＡＭ７３０を含むＣＰＵ周辺部と、入出力コントローラ７３５によりホストコントローラ７１５に接続されるカードバスコントローラ７４０及びカードバスコントローラ７４０に接続されるＩＣカードリードライタ７４５、通信インターフェース７７０、ハードディスクドライブ７５０、及びＣＤ−ＲＯＭドライブ７６０を含む入出力部と、入出力コントローラ７３５に接続されるスーパーＩ／Ｏコントローラ７８０及びスーパーＩ／Ｏコントローラ７８０に接続されるフレキシブルディスクドライブ７９０、フラッシュＲＯＭ８００、ならびにキーボードマウスコントローラ８１０を有するレガシー入出力部とを備える。【００６７】
ホストコントローラ７１５は、高い転送レートでＲＡＭ７３０にアクセスするＣＰＵ７１０をＲＡＭ７３０と接続する。ＣＰＵ７１０は、ハードディスクに格納されたプログラムに基づいて動作し、各部の制御を行う。本発明の実施形態に係る通信相手を認証するためのクライアント装置２００用のプログラムは、ハードディスクに格納され、ＲＡＭ７３０を用いてＣＰＵ７１０により実行される。クライアント装置２００用のプログラムは、クライアント装置２００を、格納部２０５、ポリシー判定部２８０、署名作成部２８５、一時格納部２９０、一時証明作成部２３５、すなわち、一時鍵作成部２４０、基本領域設定部２４５、暗号化部２５０、時刻取得部２５５、署名値計算部２６０、拡張領域設定部２６５、及び署名設定部２７０、並びに通信部２７５として機能させる。その具体的な機能及び動作は、図２及び図５を用いて説明したのと同一であるから説明を省略する。【００６８】
一方、本発明の実施形態に係るサーバ装置４００用のプログラムは、サーバ装置４００を、通信部４０５、一時格納部４１０、判定部４１５、復号部４２０、格納部４２５、及び認証部４３０、すなわち、証明書検証部４３５、並びに署名検証部４４５及び時刻検証部４５０を含む本人確認部４４０として機能させる。その具体的な機能及び動作は、図４及び図６を用いて説明したのと同一であるから説明を省略する。なお、本発明の実施形態に係るクライアント装置２００用及びサーバ装置４００用のプログラムは、コンピュータにより読み取り可能な媒体に格納できる。コンピュータで読み取り可能な媒体とは、命令実行システム、装置または機器に使用されあるいはこれらに関連するプログラムを含み、記憶し、通信し、伝搬し、あるいは搬送することができる任意の装置であることができる。媒体は、電子的、磁気的、光学的、電磁的、赤外線または半導体システム（または、装置または機器）あるいは伝搬媒体であることができる。コンピュータ可読の媒体の例には、半導体またはソリッド・ステート記憶装置、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（RAM）、リードオンリー・メモリ（ROM）、リジッド磁気ディスクおよび光ディスクが含まれる。現時点における光ディスクの例には、コンパクト・ディスク−リードオンリー・メモリ（CD-ROM）、コンパクト・ディスク−リード／ライト（CD-R/W）およびDVD が含まれる。【００６９】
入出力コントローラ７３５は、比較的高速な入出力装置であるカードバスコントローラ７４０及びカードバスコントローラ７４０に接続されるＩＣカードリードライタ７４５、通信インターフェース７７０、ハードディスクドライブ７５０、及びＣＤ−ＲＯＭドライブ７６０をホストコントローラ７１５と接続する。通信インターフェース７７０は、ネットワークを介してサーバ装置４００等の外部装置と通信する。【００７０】
また、入出力コントローラ７３５には、フレキシブルディスクドライブ７９０やキーボードマウスコントローラ８１０等の比較的低速な入出力装置と、フラッシュＲＯＭ８００とが接続される。フラッシュＲＯＭ８００は、クライアント装置２００の起動時にＣＰＵ７１０が実行するブートプログラムや、クライアント装置２００のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ７９０は、フレキシブルディスクからプログラムまたはデータを読み取り、ＲＡＭ７３０を介してスーパーＩ／Ｏコントローラ７３５に提供する。スーパーＩ／Ｏコントローラ７３５は、フレキシブルディスクや、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。【００７１】
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【００７２】
【図１】本発明の一実施形態に係る通信相手を認証するためのシステム１００の構成の一例を示す。
【図２】本発明の一実施形態に係るクライアント装置２００の機能構成の一例を示す。
【図３】（ａ）は、Ｘ．５０９証明書のフォーマットを示す。（ｂ）は、本発明の実施形態に係る個人情報を含むクライアント証明書の一例を示す。（ｃ）は本発明の実施形態に係る一時電子証明書の一例を示す。
【図４】本発明の一実施形態に係るサーバ装置４００の機能構成の一例を示す。
【図５】（ａ）は、本発明の実施形態に係るクライアント装置２００における、サーバ装置４００による通信相手認証のための処理の流れの一例を示すフローチャートを示す。（ｂ）は、本発明の実施形態に係る一時電子証明書作成の処理の流れの一例を示すフローチャートである。（ｃ）は、本発明の実施形態に係る本人確認情報作成の処理の流れの一例を示すフローチャートである。
【図６】（ａ）は、本発明の実施形態に係るサーバ装置４００における、通信相手認証のための処理の流れの一例を示すフローチャートを示す。（ｂ）は、本発明の実施形態に係る電子証明書検証の処理の流れの一例を示すフローチャートである。（ｃ）は、本発明の実施形態に係る一時電子証明書検証の処理の流れの一例を示すフローチャートである。
【図７】本発明の実施形態に係るクライアント装置２００及びサーバ装置４００のハードウェア構成の一例を示す。
【図１】
2008050792.tif 000003
【図２】
2008050792.tif 000004
【図３】
2008050792.tif 000005
【図４】
2008050792.tif 000006
【図５】
2008050792.tif 000007
【図６】
2008050792.tif 000008
【図７】
2008050792.tif 000009
【国際調査報告】
2008050792.tif 000010
2008050792.tif 000011