(57)【特許請求の範囲】
【請求項１】
端末装置であって、
サーバ装置から、前記端末装置が電子証明書の発行要求を許可された正当な端末装置であると前記サーバ装置が判断した後に前記サーバ装置により生成された電子証明書と、電子署名付きのプログラムであって、前記電子証明書が前記サーバ装置で生成された電子証明書であるか否かを検証するための証明書検証プログラムとを受信する通信部と、
認証局により生成された証明書であり、前記認証局により前記証明書検証プログラムが認証されていることを証明する証明書を認証局証明書として記憶する認証局証明書記憶部と、
前記認証局証明書記憶部に記憶されている認証局証明書から電子署名を生成し、前記通信部により受信された証明書検証プログラムの電子署名が前記認証局証明書から生成された電子署名と一致するか否かを検証し、前記通信部により受信された証明書検証プログラムの電子署名が前記認証局証明書から生成された電子署名と一致する場合に、前記通信部により受信された前記証明書検証プログラムを実行して、前記通信部により受信された前記電子証明書が前記サーバ装置で生成された電子証明書であるか否かを検証する検証実行部とを備えることを特徴とする端末装置。
【請求項２】
前記端末装置は、更に、
前記電子証明書の送信を要求する、電子署名付きの証明書送信要求を生成する証明書送信要求生成部を備え、
前記通信部は、
前記証明書送信要求を前記サーバ装置に送信するとともに、前記サーバ装置から、前記電子証明書と前記証明書検証プログラムとを受信することを特徴とする請求項１記載の端末装置。
【請求項３】
認証局によって生成された電子署名が付加された電子署名付きのプログラムであって、電子証明書の送信先において電子証明書の生成元を検証するための証明書検証プログラムを記憶する証明書検証プログラム記憶部と、
端末装置から、前記端末装置の電子証明書の送信を要求する証明書送信要求を受信する通信部と、
前記端末装置が、電子証明書の発行要求が許可された正当な端末装置であるか否かを判断し、前記端末装置が正当な端末装置である場合に、前記端末装置の電子証明書を生成する電子証明書生成部とを備え、
前記通信部は、
前記証明書検証プログラム記憶部に記憶されている証明書検証プログラムと、前記電子証明書生成部により生成された電子証明書とを、前記端末装置に送信することを特徴とするサーバ装置。
【請求項４】
前記サーバ装置は、更に、
前記サーバ装置を特定するサーバ特定情報を記憶するサーバ特定情報記憶部を備え、
前記電子証明書生成部は、
前記サーバ特定情報記憶部に記憶されたサーバ特定情報に基づいて前記サーバ装置の電子証明書を生成することを特徴とする請求項３記載のサーバ装置。
【請求項５】
前記通信部は、
前記端末装置から、前記端末装置を特定する端末装置特定情報を含み、前記端末装置の電子証明書の送信を要求する、電子署名付きの証明書送信要求を受信し、
前記電子証明書生成部は、
前記通信部によって受信された証明書送信要求が含む端末装置特定情報から電子署名を生成し、前記通信部により受信された証明書送信要求の電子署名が前記端末装置特定情報から生成された電子署名と一致するか否かを検証し、前記通信部により受信された証明書送信要求の電子署名が前記端末装置特定情報から生成された電子署名と一致する場合に、前記端末装置が正当な端末装置であると判断して、前記通信部によって受信された証明書送信要求が含む端末装置特定情報に基づいて前記端末装置の電子証明書を生成することを特徴とする請求項３記載のサーバ装置。
【請求項６】
請求項１又は２記載の端末装置と、
請求項３〜５いずれか記載のサーバ装置と
を備えたことを特徴とする電子証明書発行システム。
【請求項７】
コンピュータが、サーバ装置から、前記コンピュータが電子証明書の発行要求を許可された正当なコンピュータであると前記サーバ装置が判断した後に前記サーバ装置により生成された電子証明書と、電子署名付きのプログラムであって、前記電子証明書が前記サーバ装置で生成された電子証明書であるか否かを検証するための証明書検証プログラムとを通信部により受信する通信ステップと、
コンピュータが、認証局により生成された証明書であり、前記認証局により前記証明書検証プログラムが認証されていることを証明する証明書を認証局証明書として認証局証明書記憶部に記憶する認証局証明書記憶ステップと、
コンピュータが、前記認証局証明書記憶部に記憶されている認証局証明書から電子署名を生成し、前記通信部により受信された証明書検証プログラムの電子署名が前記認証局証明書から生成された電子署名と一致するか否かを検証し、前記通信部により受信された証明書検証プログラムの電子署名が前記認証局証明書から生成された電子署名と一致する場合に、前記通信部により受信された前記証明書検証プログラムを実行して、前記通信部により受信された前記電子証明書が前記サーバ装置で生成された電子証明書であるか否かを検証実行部により検証する検証実行ステップと
を備えることを特徴とする電子証明書受信方法。
【請求項８】
コンピュータが、認証局によって生成された電子署名が付加された電子署名付きのプログラムであって、電子証明書の送信先において電子証明書の生成元を検証するための証明書検証プログラムを証明書検証プログラム記憶部に記憶する証明書検証プログラム記憶ステップと、
コンピュータが、端末装置から、前記端末装置の電子証明書の送信を要求する証明書送信要求を通信部により受信する受信ステップと、
コンピュータが、前記端末装置が、電子証明書の発行要求が許可された正当な端末装置であるか否かを電子証明書生成部により判断し、前記端末装置が正当な端末装置である場合に、前記端末装置の電子証明書を前記電子証明書生成部により生成する電子証明書生成ステップと、
コンピュータが、前記証明書検証プログラム記憶部に記憶されている証明書検証プログラムと、前記電子証明書生成部により生成された電子証明書とを、前記通信部により前記端末装置に送信する送信ステップとを有することを特徴とする電子証明書送信方法。
【請求項９】
コンピュータに、
サーバ装置から、前記コンピュータが電子証明書の発行要求を許可された正当なコンピュータであると前記サーバ装置が判断した後に前記サーバ装置により生成された電子証明書と、電子署名付きのプログラムであって、前記電子証明書が前記サーバ装置で生成された電子証明書であるか否かを検証するための証明書検証プログラムとを通信部により受信する通信ステップと、
認証局により生成された証明書であり、前記認証局により前記証明書検証プログラムが認証されていることを証明する証明書を認証局証明書として認証局証明書記憶部に記憶する認証局証明書記憶ステップと、
前記認証局証明書記憶部に記憶されている認証局証明書から電子署名を生成し、前記通信部により受信された証明書検証プログラムの電子署名が前記認証局証明書から生成された電子署名と一致するか否かを検証し、前記通信部により受信された証明書検証プログラムの電子署名が前記認証局証明書から生成された電子署名と一致する場合に、前記通信部により受信された前記証明書検証プログラムを実行して、前記通信部により受信された前記電子証明書が前記サーバ装置で生成された電子証明書であるか否かを検証実行部により検証する検証実行ステップと
を実行させることを特徴とするプログラム。
【請求項１０】
コンピュータに、
認証局によって生成された電子署名が付加された電子署名付きのプログラムであって、電子証明書の送信先において電子証明書の生成元を検証するための証明書検証プログラムを証明書検証プログラム記憶部に記憶する証明書検証プログラム記憶ステップと、
端末装置から、前記端末装置の電子証明書の送信を要求する証明書送信要求を通信部により受信する受信ステップと、
前記端末装置が、電子証明書の発行要求が許可された正当な端末装置であるか否かを電子証明書生成部により判断し、前記端末装置が正当な端末装置である場合に、前記端末装置の電子証明書を前記電子証明書生成部により生成する電子証明書生成ステップと、
前記証明書検証プログラム記憶部に記憶されている証明書検証プログラムと、前記電子証明書生成部により生成された電子証明書とを、前記通信部により前記端末装置に送信する送信ステップと
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、電子証明書を発行する電子証明書発行システムおよび端末装置およびサーバ装置およびプログラムに関する（ここで、電子証明書を生成して、生成した電子証明書を送信することを「電子証明書を発行する」と称する。）。
【背景技術】
【０００２】
遠隔地に端末装置を配置し、サーバ装置から端末装置に対して遠隔監視を行なったり、コンテンツを配送したりするシステムが存在する。
このようなシステムにおいて、公衆網（例えばインターネット）経由でサーバ装置に接続する場合、端末装置は、接続先のサーバ装置が本当に接続したいサーバ装置であるのかを認証する必要がある。またサーバ装置は、接続してきた端末装置が本当にサービスを提供するべき端末装置であるのかを認証する必要がある。すなわち、端末装置とサーバ装置とは、相互に認証する必要がある（以降、端末装置とサーバ装置とが相互に認証し合うことを相互認証と称する）。
特に、端末装置が組み込み機器の場合、端末装置とサーバ装置とは、人手を介さず相互認証を行なう必要がある。
【０００３】
人手を介さず相互認証を行なう方法として、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）／ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）等の相互認証・鍵共有プロトコルを用いる方法がある（例えば非特許文献１参照）。
【０００４】
非特許文献１によれば、サーバ装置と端末装置とは、双方に電子証明書が発行される必要がある。電子証明書は、信頼される第三者機関が運用する認証局（ＣＡ、Ｃｅｒｔｉｆｉｃａｔｉｏｎ  Ａｕｔｈｏｒｉｔｙ）によって発行される。また、認証局の証明書（ルート証明書）は、予めサーバ装置と端末装置との双方にプリインストールされている必要がある。
【０００５】
第三者機関が運用する認証局に電子証明書の発行を依頼する場合は、一つの電子証明書毎に、発行コストが発生する。そして、サーバ装置に接続される端末装置、すなわちクライアントの数が増加すると、クライアントの数の増加に比例して、電子証明書の発行コストは増加する。また、電子証明書の有効期限が、１〜２年である為、発行コストは１〜２年毎に発生する。
【０００６】
その為、電子証明書の発行コストを抑制する為には、電子証明書の発行を第三者機関が運用する認証局に依頼せず、サーバ装置と端末装置とを使用する企業などにおいて独自に認証局の機能、すなわち電子証明書の発行を実現する必要がある。その際に、独自に実現した認証局のルート証明書にも有効期限が有る為、独自に実現した認証局は、電子証明書を発行する対象のサーバ装置と端末装置に対して、ルート証明書を更新することも必要となる。
【０００７】
認証局の機能を独自に実現する場合、「なりすましによる非正規の端末装置への証明書発行の防止」と「遠隔地にある端末装置への各種証明書の安全なインストール」とが課題となる。
第三者機関が運用する認証局のルート証明書は、サーバ装置と端末装置とのオペレーティングシステム（ＯＳ）が提供するアップデート機能等で配布される。一方、認証局の機能を独自に実現する場合、独自に実現した認証局は、このＯＳのアップデート機能を利用することが出来ない。
【０００８】
「遠隔地にある端末装置への各種証明書の安全なインストール」を行う為の方法が、特許文献１に開示されている。また、独自に証明書を運用してリソース共有を行なう方法が特許文献２に開示されている。
【０００９】
また、第三者機関が運用する認証局に頼らずに、電子証明書を通信機器が自動で発行する方法が、特許文献３に開示されている。特許文献３は、自己署名証明書をＩＤベース署名（Ｉｄｅｎｔｉｔｙ−Ｂａｓｅｄ  Ｓｉｇｎａｔｕｒｅ）で署名することで、自己署名証明書をクライアント側で検証可能にする手法を示している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−３２２０３１号公報
【特許文献２】特開２００４−１６４６３８号公報
【特許文献３】ＷＯ２０１０／０６７８１２号公報
【非特許文献】
【００１１】
【非特許文献１】Ｔｈｅ  ＴＬＳ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  １．０  ＲＦＣ２２４６
【発明の概要】
【発明が解決しようとする課題】
【００１２】
特許文献１によれば、遠隔地にある端末装置は、独自に実現した認証局（電子証明書を発行（メンテナンス）する機器）に接続し、パスワードによる認証を行なった後、パスワードで暗号化したルート証明書を復号してインストールする。しかし、パスワードの入力は、人手で行わなければならず、端末装置が多数ある場合に多大な労力が必要となる。
また、独自に実現した認証局（電子証明書を発行（メンテナンス）する機器）にパスワードを予め登録しなければならず、端末装置と、独自に実現した認証局とは、パスワード登録時に安全な通信を行う必要がある。
【００１３】
特許文献２によれば、独自に実現した認証局は、電子証明書を遠隔地にある端末装置に電子証明書を受け渡す為に、安全な通信を行う必要がある。
【００１４】
特許文献３によれば、遠隔地にある端末装置（クライアント）は、独自に実現した認証局が発行した電子証明書の検証プログラムをあらかじめ組み込んでおく必要がある。
【００１５】
この発明は前記のような課題を解決することを主な目的とするもので、例えば、人手を介さずに、予め電子証明書の検証プログラムを端末装置に組み込む必要がなく、安全な通信により、電子証明書を発行する電子証明書発行システムを実現することを主な目的とする。
【課題を解決するための手段】
【００１６】
この発明に係る端末装置は、
サーバ装置から、電子証明書と、電子署名付きのプログラムであって、前記電子証明書が前記サーバ装置で生成された電子証明書であるか否かを検証するための証明書検証プログラムとを受信する通信部と、
認証局により生成された証明書であり、前記認証局により前記証明書検証プログラムが認証されていることを証明する証明書を認証局証明書として記憶する認証局証明書記憶部と、
前記認証局証明書記憶部に記憶されている認証局証明書から電子署名を生成し、前記通信部により受信された証明書検証プログラムの電子署名が前記認証局証明書から生成された電子署名と一致するか否かを検証し、前記通信部により受信された証明書検証プログラムの電子署名が前記認証局証明書から生成された電子署名と一致する場合に、前記通信部により受信された前記証明書検証プログラムを実行して、前記通信部により受信された電子証明書が前記サーバ装置で生成された電子証明書であるか否かを検証する検証実行部と
を備えることを特徴とする。
【００１７】
また、この発明に係るサーバ装置は、
認証局によって生成された電子署名が付加された電子署名付きのプログラムであって、電子証明書の送信先において電子証明書の生成元を検証するための証明書検証プログラムを記憶する証明書検証プログラム記憶部と、
電子証明書を生成する電子証明書生成部と、
前記証明書検証プログラム記憶部に記憶されている証明書検証プログラムと、前記電子証明書生成部により生成された電子証明書とを、送信先に送信する通信部と
を備えることを特徴とする。
【発明の効果】
【００１８】
この発明に係る端末装置とサーバ装置とは、例えば、人手を介さずに、予め電子証明書の検証プログラムを端末装置に組み込む必要がなく、安全な通信により、電子証明書を発行する電子証明書発行システムを実現する。
【図面の簡単な説明】
【００１９】
【図１】実施の形態１を示す図で、電子証明書発行システムの構成を示す図。
【図２】実施の形態１を示す図で、端末装置１００の外観の一例を示す図。
【図３】実施の形態１を示す図で、端末装置１００のハードウェア資源の一例を示す図。
【図４】実施の形態１を示す図で、端末装置１００とサーバ装置２００との構成を示す図。
【図５】実施の形態１を示す図で、サーバ装置２００が生成した電子証明書を端末装置１００に発行する際のフローを示す図。
【図６】実施の形態１を示す図で、サーバ装置２００における処理を示す図。
【図７】実施の形態１を示す図で、端末装置１００における処理を示す図。
【図８】実施の形態２を示す図で、端末装置１００とサーバ装置２００との構成を示す図。
【図９】実施の形態２を示す図で、端末装置１００の要求に基づき、サーバ装置２００が生成した電子証明書を端末装置１００に発行する際のフローを示す図。
【図１０】実施の形態２を示す図で、端末装置１００における処理を示す図。
【図１１】実施の形態２を示す図で、サーバ装置２００における処理を示す図。
【図１２】実施の形態３を示す図で、端末装置１００における処理を示す図。
【図１３】実施の形態３を示す図で、サーバ装置２００における処理を示す図。
【発明を実施するための形態】
【００２０】
実施の形態１．
（電子証明書発行システムの概要）
図１は、電子証明書発行システムの構成を示す図である。
電子証明書発行システムは、電子証明書を発行するサービスセンター２０１と、発行された電子証明書を利用する拠点１０１とが例えばインターネット９４０で接続されている。拠点１０１は、例えばサービスセンター２０１から地理的に離れた遠隔地である。そして、拠点１０１は、複数存在する場合が有り、複数の拠点１０１が一つのサービスセンター２０１に接続されている場合が有る。
サービスセンター２０１には、電子証明書を発行するサーバ装置２００が有る。このサーバ装置２００は、電子証明書を発行する証明書発行サーバとも称する。
そして、拠点１０１には、端末装置１００が配置されている。端末装置１００は、一つの拠点１０１に対して、一台もしくは複数台配置される。端末装置１００は、サーバ装置２００に対するクライアント（クライアント装置）とも称する。
すなわち、電子証明書発行システムは、端末装置１００とサーバ装置２００とから構成されていると言える。
【００２１】
サーバ装置２００は端末装置１００に対して、各種の電子証明書を発行する。
サーバ装置２００が発行する電子証明書の種類は、サーバ証明書、クライアント証明書およびルート証明書である。
前記ルート証明書は、サーバ装置２００自身を証明する電子証明書を用いたセキュリティーシステムの大本となる証明書である。
サーバ証明書、クライアント証明書はサーバもしくはクライアントであることを認証するための証明書である（詳細は後述）。ルート証明書（もしくは、ルート証明書にて検証可能な、認証局が発行した中間証明書）は、サーバ証明書、クライアント証明書の検証に必要とされる。
【００２２】
（端末装置１００とサーバ装置２００とのハードウェア構成の概要）
次に、図２、図３を用いて端末装置１００とサーバ装置２００とのハードウェア構成の概要を説明する。
ここで、サーバ装置２００は、端末装置１００と同様のハードウェアから構成されている。よって、ここでは、端末装置１００のハードウェア構成の例のみ説明し、サーバ装置２００のハードウェア構成の説明は省略する。
すなわち、説明は省略するが、サーバ装置２００は、端末装置１００と同様に図２と図３に示すようなハードウェアから構成されるものである。
なお、以下の説明において、端末装置１００とサーバ装置２００とで、ハードウェアを個別に区別する必要が生じた場合は、例えば、端末装置１００の表示装置を「表示装置９０１ａ」、サーバ装置２００の表示装置を「表示装置９０１ｂ」というように、端末装置１００を構成するハードウェアとソフトウェアとは「ａ」、サーバ装置２００を構成するハードウェアとソフトウェアとは「ｂ」を付加して区別する。
【００２３】
図２は、実施の形態１における端末装置１００の外観の一例を示す図である。
図２において、端末装置１００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット９１０は、コンピュータであり、ファクシミリ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク９４２（ＬＡＮ）、ゲートウェイ９４１を介してインターネット９４０に接続されている。
【００２４】
図３は、実施の形態１における端末装置１００のハードウェア資源の一例を示す図である。
図３において、端末装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００２５】
通信ボード９１５は、ファクシミリ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。通信ボード９１５は、ＬＡＮ９４２に限らず、インターネット９４０等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０等のＷＡＮに接続されている場合、ゲートウェイ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００２６】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」（「〜記憶部」を除く）として説明する機能を実行するプログラムが記憶されている。更に端末装置１００のプログラム群９２３ａには、後述の証明書検証プログラム５０８、証明書発行要求署名プログラム５０５、証明書発行要求生成プログラム５０９が記憶される。更にサーバ装置２００のプログラム群９２３ｂには、後述の証明書検証プログラム５０８、証明書情報生成プログラム５５０、証明書発行要求検証プログラム５０６、証明書情報署名プログラム５０７、証明書生成プログラム５１４が記憶される。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶されている。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示・命令・検証・実行・格納などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示・命令・検証・実行・格納のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００２７】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。「〜部」（「〜記憶部」を除く）として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラム（後述の証明書検証プログラム５０８、証明書発行要求署名プログラム５０５、証明書発行要求生成プログラム５０９、証明書検証プログラム５０８、証明書情報生成プログラム５５０、証明書発行要求検証プログラム５０６、証明書情報署名プログラム５０７、証明書生成プログラム５１４は除く）は、以下に述べる「〜部」（「〜記憶部」を除く）としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」（「〜記憶部」を除く）の手順や方法をコンピュータに実行させるものである。
【００２８】
（端末装置１００とサーバ装置２００との構成）
図４は、端末装置１００とサーバ装置２００との構成を示す図である。
端末装置１００は、端末記憶部１３０と端末制御部１１０と端末通信部１２０とから構成される。
ここで、端末記憶部１３０は、認証局証明書記憶部に対応する。また、端末制御部１１０は、検証実行部に対応する。更に、端末通信部１２０は、端末装置１００の通信部に対応する。
端末記憶部１３０は、例えば図３に示す磁気ディスク装置９２０等の記憶装置で実現され、端末制御部１１０は、例えば図３に示すＣＰＵ９１１で実現され、端末通信部１２０は、例えば図３に示す通信ボード９１５で実現される。
【００２９】
サーバ装置２００は、サーバ記憶部２３０とサーバ制御部２１０とサーバ通信部２２０とから構成される。
ここで、サーバ記憶部２３０は、証明書検証プログラム記憶部とサーバ特定情報記憶部とに対応する。また、サーバ制御部２１０は、電子証明書生成部に対応する。更に、サーバ通信部２２０は、サーバ装置２００の通信部に対応する。
前述の通り、サーバ記憶部２３０は、端末装置１００と同様に図２と図３に示すようなハードウェアから構成されるものである。すなわち、サーバ記憶部２３０は、例えば図３に示す磁気ディスク装置９２０等の記憶装置と同様の記憶装置で実現され、サーバ制御部２１０は、例えば図３に示すＣＰＵ９１１と同様のＣＰＵで実現され、サーバ通信部２２０は、例えば図３に示す通信ボード９１５と同様の通信ボードで実現される。
【００３０】
サーバ装置２００は、製造元５０１により製造される。
サーバ記憶部２３０は、製造元５０１によって生成された証明書情報生成プログラム５５０、証明書情報署名プログラム５０７、証明書生成プログラム５１４、証明書検証プログラム５０８を例えば、製造元５０１による製造時に、予め記憶している。
ここで、サーバ記憶部２３０が記憶する証明書検証プログラム５０８は、予め製造元５０１によって、認証局６００により生成された電子署名５０４が付加されている。
証明書検証プログラム５０８は、端末装置１００が受信した電子証明書がサーバ装置２００で生成されたものであるか否かを検証するためのプログラムである。言い換えれば、証明書検証プログラム５０８は、電子証明書の送信先において電子証明書の生成元を検証するためのプログラムである。
【００３１】
ここで、製造元５０１は、サーバ装置２００毎に、証明書情報生成プログラム５５０、証明書情報署名プログラム５０７、証明書生成プログラム５１４、証明書検証プログラム５０８を生成してもよい。その場合に、製造元５０１は、各プログラムの内、サーバ装置２００毎に依存するデータを分離し、サーバ装置２００に非依存の部分をサーバ装置２００製造時に、サーバ記憶部２３０に記憶させることが出来る。そして、製造元５０１はサーバ装置２００製造後に、サーバ装置２００毎に依存するデータを生成し、後から各サーバ装置２００のサーバ記憶部２３０に追加して記憶させることが出来る。あるいは、サーバ装置２００が自らサーバ装置２００毎に依存するデータを生成し、サーバ記憶部２３０がサーバ装置２００毎に依存するデータを追加して記憶することが出来る。
【００３２】
サーバ制御部２１０は、サーバ装置２００の制御を行う。
サーバ通信部２２０は、端末装置１００との通信を行う。
【００３３】
端末装置１００は、サーバ装置２００と同じ製造元５０１により製造されてもよいし、異なる製造元５０１により製造されてもよい。
端末記憶部１３０は、証明書検証プログラム５０８と認証局証明書５１６とを記憶する。
ここで、証明書検証プログラム５０８は、端末通信部１２０を介してサーバ装置２００からダウンロードされ、端末記憶部１３０に記憶される（詳細は後述）。また、認証局証明書５１６は、認証局６００によって発行された電子証明書であり、端末記憶部１３０に記憶されている（詳細は後述）。
【００３４】
端末制御部１１０は、端末装置１００の制御を行う。
端末通信部１２０は、サーバ装置２００との通信を行う。
【００３５】
（電子証明書発行の動作）
まず、図５を用いて電子証明書発行の動作の概要を説明する。
図５は、サーバ装置２００が生成した電子証明書を端末装置１００に発行する際のフローを示す図である。
【００３６】
サーバ制御部２１０（図４）は、サーバ記憶部２３０（図４）に記憶された証明書情報生成プログラム５５０を実行して、証明書記載情報６０８（詳細は後述）を生成する。
そして、サーバ制御部２１０（図４）は、サーバ記憶部２３０（図４）に記憶された証明書情報署名プログラム５０７を実行して、証明書記載情報６０８から電子署名６０９を生成する（詳細は後述）。
【００３７】
更に、サーバ制御部２１０（図４）は、サーバ記憶部２３０（図４）に記憶された証明書生成プログラム５１４を実行して、証明書記載情報６０８と電子署名６０９とから電子証明書６１１を生成する（詳細は後述）。ここで、電子証明書６１１は、Ｘ．５０９証明書であってもよいし、ＰＫＣＳ（Ｐｕｂｌｉｃ−Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｓｔａｎｄａｒｄｓ）＃７で符号化されていてもよい。さらにＰＫＣＳ＃７で符号化された電子証明書６１１は、ＢＡＳＥ６４でエンコードされていてもよい。
【００３８】
そして、サーバ通信部２２０（図４）は生成された電子証明書６１１をサーバ制御部２１０（図４）の命令により、端末装置１００に対して送信する。
更に、サーバ通信部２２０（図４）はサーバ制御部２１０（図４）の命令により、サーバ記憶部２３０（図４）に記憶された証明書検証プログラム５０８を端末装置１００（端末通信部１２０）に対して送信する。
ここで、図示は省略するが、サーバ制御部２１０は、例えば端末装置１００から電子証明書の発行の要求が有った場合に、サーバ通信部２２０を介して、端末装置１００からの要求を受信し、電子証明書６１１と証明書検証プログラム５０８との送信をサーバ通信部２２０に命令する。
【００３９】
端末通信部１２０（図４）は、端末制御部１１０（図４）の命令により、サーバ装置２００（サーバ通信部２２０）から電子証明書６１１と証明書検証プログラム５０８とを受信（ダウンロード）する。
端末通信部１２０（図４）は、電子証明書６１１と証明書検証プログラム５０８とを同時に受信（ダウンロード）してもよいし、電子証明書６１１と証明書検証プログラム５０８とを別々に受信（ダウンロード）してもよい。
証明書検証プログラム５０８には、前述の通り、予め製造元５０１によって、認証局６００の電子署名５０４が付けられている。
ここで、図示は省略するが、端末制御部１１０は、電子証明書６１１が必要になった場合に、端末通信部１２０を介して、サーバ装置２００に電子証明書６１１の発行の要求を送信する。また、図示は省略するが、端末制御部１１０は、証明書検証プログラム５０８が必要になった場合に、端末通信部１２０を介して、サーバ装置２００に証明書検証プログラム５０８のダウンロードの要求を送信する。
【００４０】
また端末記憶部１３０（図４）は、認証局６００（図４）が発行した認証局証明書５１６を記憶する。この認証局証明書５１６は、証明書検証プログラム５０８が認証局６００（図４）により認証されていることを証明する電子証明書である。認証局証明書５１６はサーバ装置２００からダウンロードしてもよいし、ＣＤ−ＲＯＭなどの記録媒体で配布されてもよい。
端末記憶部１３０（図４）は、端末装置１００が新設された時点で認証局証明書５１６を記憶してもよいし、電子証明書６１１が必要になった時点で認証局証明書５１６を記憶してもよい。少なくとも、端末記憶部１３０（図４）は、端末通信部１２０が証明書検証プログラム５０８をダウンロードする以前に、認証局証明書５１６を前述の何らか方法で取得し、記憶する。
【００４１】
端末制御部１１０（図４）は、既存の電子署名検証プログラムを実行することにより、端末記憶部１３０（図４）が予め記憶している認証局証明書５１６を実行して、証明書検証プログラム５０８を検証する。
すなわち、端末制御部１１０（図４）は、既存の電子署名検証プログラムを実行することにより、端末記憶部１３０（図４）に記憶されている認証局証明書５１６から電子署名を生成し、証明書検証プログラム５０８に付与された電子署名と一致するか否かを検証する。
端末制御部１１０（図４）は、認証局証明書５１６から生成された電子署名と証明書検証プログラム５０８に付与された電子署名とが一致する場合に、証明書検証プログラム５０８を実行する。そして、端末制御部１１０（図４）は、証明書検証プログラム５０８を実行することにより、電子証明書６１１がサーバ装置２００で生成された電子証明書であるか否かを検証する。
ここで、端末制御部１１０（図４）は、証明書検証プログラム５０８を実行して、電子証明書６１１に対し、必要な場合は、ＢＡＳＥ６４やＰＫＣＳ＃７のデコードを行うことも可能である。
【００４２】
更に、端末制御部１１０（図４）は、電子証明書６１１がサーバ装置２００で生成された電子証明書である場合に、受入判定が行われる（受入判定６０２を出力する）。
そして、受入判定が行われた電子証明書６１１は、認証局６００から発行された電子証明書と同様に、端末装置１００において利用される。
ここで、証明書検証プログラム５０８は、例えばＡｃｔｉｖｅＸ（登録商標）で実装されていてもよい。
【００４３】
（サーバ装置２００における処理の説明）
図６は、サーバ装置２００における処理を示す図である。
ここで、実施の形態１では、サーバ装置２００は、サーバ装置２００自身を証明する電子証明書であるルート証明書を発行する場合を想定する。
そして、電子証明書６１１は、Ｘ．５０９形式の電子証明書を例に示す。
【００４４】
サーバ記憶部２３０は、サーバ自身を特定する情報であるサーバ特定情報を予め記憶している。
このサーバ特定情報は、後述の証明書記載情報６０８に含まれる情報を含んだ証明書記載情報６０８の元となる情報である。例えば、サーバ特定情報には、後述の発行者情報３０５などが含まれる。
【００４５】
（証明書情報生成プログラム５５０における処理）
前述の通り、サーバ制御部２１０は、最初に証明書情報生成プログラム５５０を実行し証明書記載情報６０８を生成する。この際に、サーバ制御部２１０は、サーバ記憶部２３０に記憶されたサーバ特定情報を用いる。
図６に示すように、証明書記載情報６０８は、少なくとも発行者情報３０５、有効期限３０６、主体者情報３０７、主体者公開鍵情報３０８、拡張情報３０９を含む。
これらの情報は、生データでもよいし、特定の方式（たとえばＡＳＮ．１（Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｎｏｔａｔｉｏｎ  Ｏｎｅ））でエンコードされていてもよい。
【００４６】
発行者情報３０５は、電子証明書６１１の発行者を示す情報である為、サーバ装置２００を示す情報となる。例えば、発行者情報３０５は、サーバ装置２００の名称や識別子などである。
【００４７】
主体者情報３０７は、電子証明書６１１が証明する対象の情報である。ここでルート証明書の場合、主体者はサーバ装置２００である為、主体者情報３０７は、サーバ装置２００を示す情報となる。すなわち、ルート証明書の場合は、主体者情報３０７と発行者情報３０５とは同じ内容であっても良い。
少なくとも主体者情報３０７と発行者情報３０５とは、サーバ特定情報に含まれサーバ記憶部２３０に記憶されている。
【００４８】
有効期限３０６は、電子証明書６１１の有効期限を示す情報である。サーバ制御部２１０は、証明書情報生成プログラム５５０実行時から、証明書情報生成プログラム５５０に予めプログラミングされた一定期間が経過した時を有効期限３０６として設定する。
【００４９】
主体者公開鍵情報３０８は、サーバ装置２００の秘密鍵によってサーバ制御部２１０が暗号化した情報を平文化する為の公開鍵の情報である。
主体者公開鍵情報３０８は、サーバ特定情報の一部としてサーバ記憶部２３０に予め記憶されていても良い。あるいは、主体者公開鍵情報３０８は、サーバ制御部２１０が証明書情報生成プログラム５５０を実行時に生成されてもよい。
なお、サーバ装置２００の秘密鍵は、サーバ記憶部２３０に予め記憶されている。
【００５０】
拡張情報３０９は、電子証明書６１１に記載される前記発行者情報３０５、有効期限３０６、主体者情報３０７、主体者公開鍵情報３０８以外の情報である。例えば電子証明書６１１の識別子であっても良いし、公開鍵のアルゴリズムを示す情報であっても良い。拡張情報３０９は、端末制御部１１０が証明書情報生成プログラム５５０を実行時に生成されてもよいし、サーバ記憶部２３０に記憶されていても良い。
【００５１】
（証明書情報署名プログラム５０７における処理）
次に、サーバ制御部２１０は、証明書情報署名プログラム５０７を実行する。
ここで、サーバ制御部２１０は、証明書情報署名プログラム５０７を実行して証明書記載情報６０８から電子署名６０９を生成する。
この電子署名６０９は、端末装置１００が証明書検証プログラム５０８を実行して検証可能であれば良く、形式を問わない。すなわち、電子署名６０９は、公開鍵暗号署名やＩＤベース署名を用いてもよいし、独自の電子署名生成方式であっても構わない。
【００５２】
また、サーバ制御部２１０は、端末装置１００が証明書検証プログラム５０８を実行して電子署名６０９を検証するのに必要な情報である署名検証パラメータ３１１を、証明書情報署名プログラム５０７を実行して生成する。
署名検証パラメータ３１１は、例えば、証明書情報署名プログラム５０７における電子署名６０９の生成アルゴリズム（ハッシュ関数や公開鍵暗号方式、もしくは独自の電子署名生成方式）などの情報が含まれる。
【００５３】
（証明書生成プログラム５１４における処理）
そして、サーバ制御部２１０は、証明書生成プログラム５１４を実行する。
サーバ制御部２１０は、証明書生成プログラム５１４を実行して、証明書記載情報６０８と電子署名６０９と署名検証パラメータ３１１とから電子証明書６１１を生成する。
【００５４】
サーバ制御部２１０は、図６に示す通り、証明書記載情報６０８に含まれる発行者情報３０５、有効期限３０６、主体者情報３０７、主体者公開鍵情報３０８、拡張情報３０９をそのまま電子証明書６１１に格納する。
そして、サーバ制御部２１０は、Ｘ．５０９形式の電子証明書を生成する場合、電子署名６０９をシリアル番号３１３として、署名検証パラメータ３１１を発行者ユニークＩＤ３１５として電子証明書６１１に格納してもよい。
【００５５】
更に、電子証明書６１１は、証明書生成プログラム５１４の実行により生成されたバージョン情報３１２と電子署名３１４と主体者ユニークＩＤ３１６とを含む。
バージョン情報３１２は、電子証明書６１１のバージョンを示す情報である。
主体者ユニークＩＤ３１６は、例えば主体者（ルート証明書の場合は、サーバ装置２００）の識別子である。主体者ユニークＩＤ３１６は主体者情報３０７と同一であっても構わない。
電子署名３１４は、証明書生成プログラム５１４によって、例えば、所定の情報のハッシュ値が求められ、更に求められたハッシュ値をサーバ記憶部２３０に記憶されている秘密鍵で暗号化されたものである。ここで、所定の情報は、例えば主体者ユニークＩＤ３１６などである。
【００５６】
生成された電子証明書６１１は、前述の通り、サーバ通信部２２０によって、端末装置１００に送信される。
【００５７】
（端末装置１００における処理の説明）
図７は、端末装置１００における処理を示す図である。
前述の通り、端末制御部１１０は、端末通信部１２０を介して電子証明書６１１を受信すると、証明書検証プログラム５０８を実行して、電子証明書６１１の検証を行う。
ここで、電子証明書６１１は、前述の通りＸ．５０９形式であり、シリアル番号３１３に電子署名６０９が格納され、発行者ユニークＩＤ３１５に署名検証パラメータ３１１が格納されているものとする。
【００５８】
端末制御部１１０は、証明書検証プログラム５０８を実行して、電子証明書６１１から発行者情報３０５、有効期限３０６、主体者情報３０７、主体者公開鍵情報３０８、拡張情報３０９が示す情報を検証対象情報として取得する。
更に、端末制御部１１０は、証明書検証プログラム５０８を実行して、電子証明書６１１からシリアル番号３１３（電子署名６０９）と発行者ユニークＩＤ３１５（署名検証パラメータ３１１）とを取得する。
【００５９】
そして、端末制御部１１０は、証明書検証プログラム５０８を実行して、発行者ユニークＩＤ３１５（署名検証パラメータ３１１）に示された電子署名６０９の生成アルゴリズムなどの情報に基づき、検証対象情報（発行者情報３０５、有効期限３０６、主体者情報３０７、主体者公開鍵情報３０８、拡張情報３０９）から電子署名を生成する。
そして、端末制御部１１０は、証明書検証プログラム５０８を実行して、検証対象情報から生成した電子署名とシリアル番号３１３（電子署名６０９）とを比較する。
【００６０】
そして、検証対象情報から生成した電子署名とシリアル番号３１３（電子署名６０９）とが一致する場合に、端末制御部１１０は、電子証明書６１１の受入判定を行う（受入判定６０２を出力する）。
【００６１】
（実施の形態１の効果）
実施の形態１における電子証明書発行システム（端末装置１００とサーバ装置２００）は、電子証明書６１１に証明書検証プログラム５０８によって検証が可能な電子署名６０９を加えることで、第三者機関が運用する認証局に頼らずに、かつ人手を介することなく、電子証明書６１１の発行が可能である。
また、端末装置１００は、証明書検証プログラム５０８をサーバ装置２００からダウンロードすることにより、端末装置１００自体に予め特別な設定（電子証明書の検証プログラムを端末装置に組み込む等）を行う必要が無い。
【００６２】
更に、証明書検証プログラム５０８は、認証局６００の電子署名５０４が付与されている為、端末装置１００は、証明書検証プログラム５０８の改ざんの有無を検証可能である。すなわち、端末装置１００は、改ざんが無いことが確認された証明書検証プログラム５０８を実行して、電子証明書６１１の検証を行う為、通信の安全性も保証可能である。
また、第三者機関が運用する認証局による認証局証明書５１６の発行は、一つの証明書検証プログラム５０８に対して行われる。よって、第三者機関が運用する認証局が端末装置１００毎に電子証明書を発行する場合に比べて、コストを低く抑えることができる。
【００６３】
実施の形態２．
実施の形態２では、サーバ装置２００は、端末装置１００を証明するサーバ証明書またはクライアント証明書を発行する場合を想定する。
端末装置１００は、サービスを受けるクライアントと成ることも、自らがサービスを提供するサーバとなることも可能である。そして、端末装置１００がクライアントとして機能する場合、端末装置１００を証明する証明書は、クライアント証明書となり、端末装置１００がサーバとして機能する場合、端末装置１００を証明する証明書は、サーバ証明書となる。
【００６４】
（実施の形態２における端末装置１００とサーバ装置２００との構成）
図８は、端末装置１００とサーバ装置２００との構成を示す図である。
各構成要素は、実施の形態１と同じであるが、使用されるプログラムが異なるので、実施の形態１と異なる部分のみ説明する。
なお、端末制御部１１０は、実施の形態１で説明の検証実行部に加え、証明書送信要求生成部にも対応する。
【００６５】
サーバ記憶部２３０は、実施の形態１の証明書情報生成プログラム５５０に代わり、製造元５０１によって生成された証明書発行要求検証プログラム５０６を例えば、製造元５０１による製造時に、予め記憶している。証明書検証プログラム５０８、証明書情報署名プログラム５０７、証明書生成プログラム５１４については実施の形態１と同様である。
ここで、製造元５０１は、サーバ装置２００毎に、証明書発行要求検証プログラム５０６を生成してもよい。その場合に、製造元５０１は、プログラムの内、サーバ装置２００毎に依存するデータを分離し、サーバ装置２００に非依存の部分をサーバ装置２００製造時に、サーバ記憶部２３０に記憶させることが出来る。そして、製造元５０１はサーバ装置２００製造後に、サーバ装置２００毎に依存するデータ生成し、後から各サーバ装置２００のサーバ記憶部２３０に追加して記憶させることが出来る。あるいは、サーバ装置２００が自らサーバ装置２００毎に依存するデータを生成し、サーバ記憶部２３０がサーバ装置２００毎に依存するデータを追加して記憶することが出来る。
【００６６】
端末記憶部１３０は、証明書検証プログラム５０８と認証局証明書５１６とに加え、証明書発行要求署名プログラム５０５と証明書発行要求生成プログラム５０９とを記憶する。
ここで、証明書発行要求署名プログラム５０５と証明書発行要求生成プログラム５０９とは、製造元５０１によって生成される。
端末装置１００は、製造元５０１によって製造されてもよく、その場合は、端末記憶部１３０は、証明書発行要求署名プログラム５０５と証明書発行要求生成プログラム５０９とを製造時に予め記憶することができる。あるいは、端末記憶部１３０は、ＣＤ−ＲＯＭなどの記録媒体で配布された証明書発行要求署名プログラム５０５と証明書発行要求生成プログラム５０９とを記憶してもよい。
【００６７】
さらに、製造元５０１は、端末装置１００毎に証明書発行要求署名プログラム５０５と証明書発行要求生成プログラム５０９とを生成してもよい。その場合に、製造元５０１は、プログラムの内、端末装置１００毎に依存するデータを分離し、端末装置１００に非依存の部分をインターネット等で配布し、端末装置１００毎に依存するデータのみを安全な方法で配布（例えばＣＤ−ＲＯＭによる配布）してもよい。
【００６８】
（サーバ証明書もしくはクライアント証明書発行の動作）
図９を用いてサーバ証明書もしくはクライアント証明書発行の動作の概要を説明する。
図９は、端末装置１００の要求に基づき、サーバ装置２００が生成した電子証明書を端末装置１００に発行する際のフローを示す図である。
【００６９】
端末装置１００の端末制御部１１０（図８）は、端末記憶部１３０（図８）に記憶された証明書発行要求生成プログラム５０９を実行して証明書発行要求６１０を生成する（詳細は後述）。
そして、端末制御部１１０（図８）は、端末記憶部１３０（図８）に記憶された証明書発行要求署名プログラム５０５を実行して、証明書発行要求６１０から署名付き証明書発行要求６０１を生成する。
すなわち、端末制御部１１０（図８）は、端末装置１００の電子証明書（サーバ証明書もしくはクライアント証明書）の送信を要求する電子署名付きの証明書送信要求を生成する。
端末通信部１２０は、生成された署名付き証明書発行要求６０１（証明書送信要求）をサーバ装置２００に送信する。
なお、署名付き証明書発行要求６０１は、端末装置１００を特定する端末装置特定情報を含んでいる（詳細は後述）。
【００７０】
サーバ装置２００のサーバ通信部２２０（図８）は、端末装置特定情報を含み、端末装置１００の電子証明書（サーバ証明書もしくはクライアント証明書）の送信を要求する署名付き証明書発行要求６０１（電子署名付きの証明書送信要求）を端末装置１００から受信する。
ここで、端末装置特定情報とは、例えば端末装置１００の名称や識別子などである。また、端末装置１００がクライアントとして機能する場合は、クライアントとして機能することを示す情報、端末装置１００がサーバとして機能する場合は、サーバとして機能することを示す情報も端末装置特定情報に含まれる。
【００７１】
サーバ制御部２１０（図８）は、サーバ記憶部２３０に記憶された証明書発行要求検証プログラム５０６を実行して、受信した署名付き証明書発行要求６０１が証明書発行要求署名プログラム５０５にて署名されているか否かを検証する。
すなわち、サーバ制御部２１０（図８）は、サーバ通信部２２０によって受信された署名付き証明書発行要求６０１（証明書送信要求）が含む端末装置特定情報から電子署名を生成し、サーバ通信部２２０により受信された署名付き証明書発行要求６０１（証明書送信要求）の電子署名が、端末装置特定情報から生成された電子署名と一致するか否かを検証する。
【００７２】
そして、サーバ制御部２１０（図８）は、署名付き証明書発行要求６０１が証明書発行要求署名プログラム５０５にて署名されていると検証出来た場合に、署名付き証明書発行要求６０１から証明書記載情報６０８を抽出する。
【００７３】
更に、サーバ制御部２１０は、サーバ記憶部２３０に記憶された証明書情報署名プログラム５０７と証明書生成プログラム５１４とを実行して、抽出された証明書記載情報６０８から電子証明書６１１を生成する。ここで、電子証明書６１１は、サーバ証明書もしくはクライアント証明書となる。
【００７４】
すなわち、サーバ制御部２１０は、サーバ通信部２２０により受信された署名付き証明書発行要求６０１（証明書送信要求）の電子署名が、端末装置特定情報から生成された電子署名と一致する場合に、サーバ通信部２２０により受信された署名付き証明書発行要求６０１（証明書送信要求）が含む端末装置特定情報に基づいて端末装置１００の電子証明書（サーバ証明書もしくはクライアント証明書）を生成する。
【００７５】
サーバ装置２００における電子証明書６１１の生成処理は実施の形態１と同じ為、説明を省略する。
【００７６】
同様に、端末通信部１２０は、サーバ装置２００から端末装置１００の電子証明書（サーバ証明書もしくはクライアント証明書）と証明書検証プログラム５０８とを受信する。
端末装置１００における電子証明書６１１の検証処理も実施の形態１と同じ為、説明を省略する。
【００７７】
（端末装置１００における処理の説明）
図１０は、端末装置１００における処理を示す図である。
前述の通り、端末装置１００は証明書発行要求生成プログラム５０９を実行し、証明書発行要求６１０を生成する。
ここで、端末記憶部１３０は、端末装置１００を特定する端末装置特定情報を予め記憶している。
サーバ証明書もしくはクライアント証明書との差異は、この端末装置１００がサーバとして機能することを示す情報を含んでいるか、あるいは、この端末装置１００がクライアントとして機能することを示す情報を含んでいるかである。
そして、端末装置１００は証明書発行要求生成プログラム５０９を実行し、端末装置特定情報を元に証明書発行要求６１０を生成する。
【００７８】
次に、端末制御部１１０は、証明書発行要求署名プログラム５０５を実行することにより、証明書発行要求６１０から証明書発行要求情報７０４を生成する。
証明書発行要求情報７０４は、図１０に示す通り、バージョン情報３１２、主体者情報３０７、主体者公開鍵情報３０８、属性７０８、電子署名７０１から構成される。
【００７９】
バージョン情報３１２は、サーバ証明書もしくはクライアント証明書のバージョンを示す情報であり、証明書発行要求生成プログラム５０９の実行により生成され、証明書発行要求６１０に予め含まれている。
主体者情報３０７は、電子証明書６１１が証明する対象の情報である。ここで主体者は端末装置１００である為、主体者情報３０７は、端末装置１００を示す情報となる。主体者情報３０７は、端末装置特定情報から抽出される。主体者情報３０７は、証明書発行要求生成プログラム５０９の実行により証明書発行要求６１０に予め含まれている。
【００８０】
主体者公開鍵情報３０８は、端末装置１００の主体者秘密鍵６０３によって暗号化された情報を平文化する為の公開鍵の情報である。
主体者公開鍵情報３０８は、端末装置特定情報の一部として端末記憶部１３０に予め記憶されていても良い。あるいは、主体者公開鍵情報３０８は、端末制御部１１０が証明書発行要求生成プログラム５０９を実行時に生成されてもよい。主体者公開鍵情報３０８は、証明書発行要求６１０に予め含まれている。
なお、サーバ装置２００の主体者秘密鍵６０３は、サーバ記憶部２３０に予め記憶されている。
また、属性７０８は、例えば、証明書発行要求署名プログラム５０５における電子署名８１０の生成アルゴリズム（ハッシュ関数や公開鍵暗号方式、もしくは独自の電子署名生成方式）などの情報を含む。属性７０８は証明書発行要求生成プログラム５０９を実行時に生成され、証明書発行要求６１０に予め含まれている。
【００８１】
そして、端末制御部１１０は、証明書発行要求署名プログラム５０５を実行して主体者情報３０７と主体者公開鍵情報３０８とから電子署名８１０を生成する。
この電子署名８１０は、サーバ装置２００が証明書発行要求検証プログラム５０６を実行して検証可能であれば良く、形式を問わない。すなわち、電子署名８１０は、公開鍵暗号署名やＩＤベース署名を用いてもよいし、独自の電子署名生成方式であっても構わない。
そして、端末制御部１１０は、電子署名８１０を属性７０８の情報の一部として追加する。
ここで、端末制御部１１０は、証明書発行要求署名プログラム５０５を実行して主体者情報３０７と主体者公開鍵情報３０８と、属性７０８とから電子署名８１０を生成しても構わない。
【００８２】
更に、端末制御部１１０は、証明書発行要求署名プログラム５０５を実行して所定の情報のハッシュ値を求め、求めたハッシュ値を主体者秘密鍵６０３でエンコード（暗号化）することにより、電子署名７０１を生成する。
ここで、所定の情報とは、証明書発行要求情報７０４（バージョン情報３１２、主体者情報３０７、主体者公開鍵情報３０８、属性７０８）である。
【００８３】
端末制御部１１０は、バージョン情報３１２、主体者情報３０７、主体者公開鍵情報３０８、属性７０８を証明書発行要求情報７０４とし、証明書発行要求情報７０４に電子署名７０１が追加されたものを署名付き証明書発行要求６０１として、端末通信部１２０を介し、サーバ装置２００に送信する。
【００８４】
（サーバ装置２００における処理の説明）
図１１は、サーバ装置２００における処理を示す図である。
サーバ制御部２１０は、サーバ通信部２２０を介して署名付き証明書発行要求６０１を受信すると、証明書発行要求検証プログラム５０６を実行して、署名付き証明書発行要求６０１の検証を行う。
まず、サーバ制御部２１０は、証明書発行要求検証プログラム５０６を実行して、署名付き証明書発行要求６０１から証明書発行要求情報７０４を抽出（デコード）する。
また、サーバ制御部２１０は、証明書発行要求検証プログラム５０６を実行して、署名付き証明書発行要求６０１から電子署名７０１を抽出する（図示は省略）。
【００８５】
次に、図示は省略するが、サーバ制御部２１０は、証明書発行要求検証プログラム５０６を実行して、電子署名７０１の検証を行う。すなわち、サーバ制御部２１０は、主体者公開鍵情報３０８で電子署名７０１の復号を行い、更に証明書発行要求情報７０４から電子署名を生成し、復号された電子署名７０１と比較することで、電子署名７０１の検証を行う。
サーバ制御部２１０は、証明書発行要求情報７０４から生成された電子署名と復号された電子署名７０１とが一致した場合に、証明書発行要求情報７０４は改ざんされていないと判断することが出来る。
【００８６】
そして、サーバ制御部２１０は、証明書発行要求検証プログラム５０６を実行して、主体者情報３０７と主体者公開鍵情報３０８とから属性７０８に記された電子署名８１０の生成アルゴリズムにより電子署名を生成する。そして、サーバ制御部２１０は、生成した電子署名と属性７０８に含まれている電子署名８１０とを比較することで、電子署名８１０を検証する。
サーバ制御部２１０は、生成した電子署名と属性７０８に含まれている電子署名８１０とが一致した場合に、署名付き証明書発行要求６０１が、証明書発行要求署名プログラム５０５を備えた端末装置１００によって生成されたと判断することが出来る。
ここで、証明書発行要求署名プログラム５０５を備えた端末装置１００は、端末装置１００の電子証明書（サーバ証明書もしくはクライアント証明書）の発行要求を許可された正当な端末装置１００と言うことが出来る。
【００８７】
また、サーバ制御部２１０は、生成した電子署名と属性７０８に含まれている電子署名８１０とが一致した場合に、署名付き証明書発行要求６０１が正当な端末装置１００から要求されたものであることを示す検証結果７１１を出力する。
【００８８】
そして、サーバ制御部２１０は、実施の形態１で説明の通り、証明書情報生成プログラム５５０を実行し証明書記載情報６０８を生成する。この時に、サーバ制御部２１０は、証明書発行要求情報７０４から主体者情報３０７と主体者公開鍵情報３０８とを抽出し、証明書記載情報６０８に格納する。
以降の処理は、実施の形態１と同様である為、説明を省略する。
【００８９】
このようにして、サーバ装置２００は、端末装置１００を主体者とした電子証明書６１１（サーバ証明書もしくはクライアント証明書）を発行する。
【００９０】
（実施の形態２の効果）
実施の形態２における電子証明書発行システム（端末装置１００とサーバ装置２００）は、実施の形態１の効果に加え、端末装置１００が署名付き証明書発行要求６０１（証明書送信要求）を生成して、サーバ装置２００に送信し、要求された電子証明書６１１をサーバ装置２００にて生成することが可能である。
そして、サーバ装置２００は、署名付き証明書発行要求６０１（証明書送信要求）の検証を行うことで、不正な第三者からの証明書送信要求を拒否することが出来、無制限な証明書発行を抑制することができる。
【００９１】
実施の形態３．
実施の形態３では、実施の形態２と同様にサーバ装置２００は、端末装置１００を証明するサーバ証明書またはクライアント証明書を発行する場合を想定する。
実施の形態３の構成は、実施の形態２と同じで有る為、説明を省略する。
【００９２】
（端末装置１００における処理の説明）
図１２は、端末装置１００における処理を示す図である。
最初に、端末制御部１１０は、実施の形態２と同様に証明書発行要求生成プログラム５０９を実行して証明書発行要求６１０を生成する。
そして、端末制御部１１０は、実施の形態２と同様に証明書発行要求署名プログラム５０５を実行して証明書発行要求情報７０４を生成する。
更に、端末制御部１１０は、実施の形態２と同様に証明書発行要求署名プログラム５０５を実行して電子署名８１０を生成する。ここで電子署名８１０は、実施の形態２と同様に公開鍵暗号署名やＩＤベース署名を用いてもよいし、独自の電子署名生成方式であっても構わない。
なお、電子署名８１０は、実施の形態２と同様に主体者情報３０７と主体者公開鍵情報３０８とから生成されてもよいし、証明書発行要求６１０から生成されてもよい。
【００９３】
次に端末制御部１１０は、証明書発行要求署名プログラム５０５を実行して、証明書発行要求署名プログラム５０５に定められた所定の方式で、電子署名８１０に対してエンコードを行い、エンコード電子署名８１２を生成する。ここでエンコードの所定の方式とは、例えばＢＡＳＥ６４等である。
【００９４】
更に、端末制御部１１０は、証明書発行要求署名プログラム５０５を実行して、証明書発行要求６１０とエンコード電子署名８１２とを一つのファイルに一体化（重畳）し、署名付き証明書発行要求６０１を生成する。
署名付き証明書発行要求６０１は、例えば、図１２に記載のように特定の文字列（「Ｂｅｇｉｎ  ＣＳＲ」、「Ｅｎｄ  ＣＳＲ」、「Ｂｅｇｉｎ  ＣＳＲ  Ｓｉｇｎａｔｕｒｅ」、「Ｅｎｄ  ＣＳＲ  Ｓｉｇｎａｔｕｒｅ」）を用いて、証明書発行要求６１０とエンコード電子署名８１２とが区別出来るようになっていてもよい。
【００９５】
署名付き証明書発行要求６０１は、端末通信部１２０を介して、サーバ装置２００に送信される。
【００９６】
（サーバ装置２００における処理の説明）
図１３は、サーバ装置２００における処理を示す図である。
サーバ制御部２１０は、サーバ通信部２２０を介して署名付き証明書発行要求６０１を受信すると、証明書発行要求検証プログラム５０６を実行して、証明書発行要求６１０とエンコード電子署名８１２とを分離する。
【００９７】
サーバ制御部２１０は、端末装置１００における証明書発行要求署名プログラム５０５の処理と同様に、証明書発行要求６１０から証明書発行要求情報７０４（バージョン情報３１２、主体者情報３０７、主体者公開鍵情報３０８、属性７０８）を抽出する。
そして、サーバ制御部２１０は、端末装置１００における証明書発行要求署名プログラム５０５の処理と同様に、主体者情報３０７と主体者公開鍵情報３０８とから電子署名８２０を生成する。
ここで、端末制御部１１０が証明書発行要求署名プログラム５０５を実行して、証明書発行要求６１０から電子署名８１０を生成した場合は、サーバ制御部２１０は、証明書発行要求６１０から電子署名８２０を生成する。
【００９８】
一方、サーバ制御部２１０は、証明書発行要求検証プログラム５０６で定められた所定の方式で、エンコード電子署名８１２をデコードし、電子署名８１０を生成する。ここでデコードの所定の方式とは、証明書発行要求署名プログラム５０５に定められたエンコードの方式をデコードする為の方式である。
【００９９】
サーバ制御部２１０は、証明書発行要求検証プログラム５０６を実行して、電子署名８２０と電子署名８１０とが一致するか否かの検証を行う。
電子署名８２０と電子署名８１０とが一致する場合に、サーバ制御部２１０は、署名付き証明書発行要求６０１が、証明書発行要求署名プログラム５０５を備えた端末装置１００によって生成されたと判断することが出来る。
ここで、証明書発行要求署名プログラム５０５を備えた端末装置１００は、端末装置１００の電子証明書（サーバ証明書もしくはクライアント証明書）の発行要求を許可された正当な端末装置１００と言うことが出来る。
【０１００】
また、サーバ制御部２１０は、電子署名８２０と電子署名８１０とが一致した場合に、署名付き証明書発行要求６０１が正当な端末装置１００から要求されたものであることを示す検証結果７１１を出力する。
【０１０１】
そして、サーバ制御部２１０は、実施の形態１および実施の形態２で説明の通り、証明書情報生成プログラム５５０を実行し証明書記載情報６０８を生成する。この時に、サーバ制御部２１０は、証明書発行要求情報７０４から主体者情報３０７と主体者公開鍵情報３０８とを抽出し、証明書記載情報６０８に格納する。
以降の処理は、実施の形態１および実施の形態２と同様である為、説明を省略する。
【０１０２】
このようにして、サーバ装置２００は、端末装置１００を主体者とした電子証明書６１１（サーバ証明書もしくはクライアント証明書）を発行する。
【０１０３】
（実施の形態３の効果）
実施の形態３における電子証明書発行システム（端末装置１００とサーバ装置２００）は、主体者秘密鍵６０３を使わずに実施の形態２の効果を実現可能である。
例えばＩＩＳ（Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｉｃｅ）（登録商標）でＷｅｂサーバを構築する場合、端末装置１００は、証明書発行要求を生成しても、主体者秘密鍵６０３を取得することができない。実施の形態３における電子証明書発行システム（端末装置１００とサーバ装置２００）は、このようなケースでも電子証明書の発行を行なうことができる。
【０１０４】
まとめると、実施の形態１〜３において、
サーバ装置２００から、電子証明書６１１と、電子署名５０４付きのプログラムであって、前記電子証明書６１１が前記サーバ装置２００で生成された電子証明書６１１であるか否かを検証するための証明書検証プログラム５０８とを受信する通信部（端末通信部１２０）と、
認証局６００により生成された証明書であり、前記認証局６００により前記証明書検証プログラム５０８が認証されていることを証明する証明書を認証局証明書５１６として記憶する認証局証明書記憶部（端末記憶部１３０）と、
前記認証局証明書記憶部（端末記憶部１３０）に記憶されている認証局証明書５１６から電子署名を生成し、前記通信部（端末通信部１２０）により受信された証明書検証プログラム５０８の電子署名５０４が前記認証局証明書５１６から生成された電子署名と一致するか否かを検証し、前記通信部（端末通信部１２０）により受信された証明書検証プログラム５０８の電子署名５０４が前記認証局証明書５１６から生成された電子署名と一致する場合に、前記通信部（端末通信部１２０）により受信された前記証明書検証プログラム５０８を実行して、前記通信部（端末通信部１２０）により受信された電子証明書６１１が前記サーバ装置２００で生成された電子証明書６１１であるか否かを検証する検証実行部（端末制御部１１０）と
を備えることを特徴とする端末装置１００について説明した。
【０１０５】
更に、実施の形態２〜３において、
前記端末装置１００は、更に、
前記端末装置１００の電子証明書６１１の送信を要求する、電子署名付きの証明書送信要求（署名付き証明書発行要求６０１）を生成する証明書送信要求生成部（端末制御部１１０）を備え、
前記通信部（端末通信部１２０）は、
前記証明書送信要求（署名付き証明書発行要求６０１）を前記サーバ装置２００に送信するとともに、前記サーバ装置２００から、前記端末装置１００の電子証明書６１１と前記証明書検証プログラム５０８とを受信することを特徴とする端末装置１００について説明した。
【０１０６】
更に、実施の形態１〜３において、
認証局６００によって生成された電子署名５０４が付加された電子署名付きのプログラムであって、電子証明書６１１の送信先において電子証明書６１１の生成元を検証するための証明書検証プログラム５０８を記憶する証明書検証プログラム記憶部（サーバ記憶部２３０）と、
電子証明書６１１を生成する電子証明書生成部（サーバ制御部２１０）と、
前記証明書検証プログラム記憶部（サーバ記憶部２３０）に記憶されている証明書検証プログラム５０８と、前記電子証明書生成部（サーバ制御部２１０）により生成された電子証明書６１１とを、送信先に送信する通信部（サーバ通信部２２０）と
を備えることを特徴とするサーバ装置２００について説明した。
【０１０７】
更に、実施の形態１において、
前記サーバ装置２００は、更に、
前記サーバ装置２００を特定するサーバ特定情報を記憶するサーバ特定情報記憶部（サーバ記憶部２３０）を備え、
前記電子証明書生成部（サーバ制御部２１０）は、
前記サーバ特定情報記憶部（サーバ記憶部２３０）に記憶されたサーバ特定情報に基づいて前記サーバ装置２００の電子証明書６１１を生成することを特徴とするサーバ装置について説明した。
【０１０８】
更に、実施の形態２〜３において、
前記通信部（サーバ通信部２２０）は、
端末装置１００から、前記端末装置１００を特定する端末装置特定情報を含み、前記端末装置１００の電子証明書６１１の送信を要求する、電子署名付きの証明書送信要求（署名付き証明書発行要求６０１）を受信し、
前記電子証明書生成部（サーバ制御部２１０）は、
前記通信部（サーバ通信部２２０）によって受信された証明書送信要求（署名付き証明書発行要求６０１）が含む端末装置特定情報から電子署名を生成し、前記通信部（サーバ通信部２２０）により受信された証明書送信要求（署名付き証明書発行要求６０１）の電子署名が前記端末装置特定情報から生成された電子署名と一致するか否かを検証し、前記通信部（サーバ通信部２２０）により受信された証明書送信要求（署名付き証明書発行要求６０１）の電子署名が前記端末装置特定情報から生成された電子署名と一致する場合に、前記通信部（サーバ通信部２２０）によって受信された証明書送信要求（署名付き証明書発行要求６０１）が含む端末装置特定情報に基づいて前記端末装置１００の電子証明書６１１を生成することを特徴とするサーバ装置について説明した。
【０１０９】
更に、実施の形態１〜３において、
端末装置１００と、サーバ装置２００とを備えたことを特徴とする電子証明書発行システムについて説明した。
【０１１０】
なお、既に、説明したように、本実施の形態１に示す端末装置１００とサーバ装置２００とは、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０１１１】
１００  端末装置、１０１  拠点、１１０  端末制御部、１２０  端末通信部、１３０  端末記憶部、２００  サーバ装置、２０１  サービスセンター、２１０  サーバ制御部、２２０  サーバ通信部、２３０  サーバ記憶部、３０５  発行者情報、３０６  有効期限、３０７  主体者情報、３０８  主体者公開鍵情報、３０９  拡張情報、３１１  署名検証パラメータ、３１２  バージョン情報、３１３  シリアル番号、３１４  電子署名、３１５  発行者ユニークＩＤ、３１６  主体者ユニークＩＤ、５０１  製造元、５０４  電子署名、５０５  証明書発行要求署名プログラム、５０６  証明書発行要求検証プログラム、５０７  証明書情報署名プログラム、５０８  証明書検証プログラム、５０９  証明書発行要求生成プログラム、５１４  証明書生成プログラム、５１６  認証局証明書、５５０  証明書情報生成プログラム、６００  認証局、６０１  署名付き証明書発行要求、６０２  受入判定、６０３  主体者秘密鍵、６０８  証明書記載情報、６０９  電子署名、６１０  証明書発行要求、６１１  電子証明書、７０１  電子署名、７０４  証明書発行要求情報、７０８  属性、７１１  検証結果、８１０  電子署名、８１２  エンコード電子署名、８２０  電子署名、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  コンパクトディスク装置、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ファクシミリ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ローカルエリアネットワーク。
【図１】
0005734095.tif 000002
【図２】
0005734095.tif 000003
【図３】
0005734095.tif 000004
【図４】
0005734095.tif 000005
【図５】
0005734095.tif 000006
【図６】
0005734095.tif 000007
【図７】
0005734095.tif 000008
【図８】
0005734095.tif 000009
【図９】
0005734095.tif 000010
【図１０】
0005734095.tif 000011
【図１１】
0005734095.tif 000012
【図１２】
0005734095.tif 000013
【図１３】
0005734095.tif 000014