(57)【要約】【課題】署名生成で利用する暗号方式を柔軟に拡張できる電子署名生成方法及び電子署名生成プログラムを提供する。【解決手段】電子署名生成装置１１は、ＩＣカード管理情報と、ＩＣカードの機能を補完するドライバを記憶する記憶部を具備し、前記ＩＣカード管理情報に基づいて、電子署名を実施する文書を一定の長さに圧縮した情報を、電子署名生成装置で実施するか、ＩＣカードリーダライタ１２を介して接続されているＩＣカード１３で実施するか判定し、この判定結果に基づき、前記ＩＣカードの機能を補完するドライバを利用して、前記電子署名を実施する文書を一定の長さに圧縮した情報を生成する。【選択図】図１
2013098808.tif 000002
【特許請求の範囲】
【請求項１】
電子署名生成装置により、電子署名を実施する電子文書の情報、あるいは、電子署名を実施する電子文書を一定の長さに圧縮した情報、さらに、電子署名に利用する暗号アルゴリズムを含んだ、電子署名生成要求を生成し、前記電子署名生成要求を、ＩＣカードリーダライタを介して接続されているＩＣカードに送信して、前記ＩＣカードから電子署名生成応答を受信し、電子署名生成処理を実施する、電子署名生成方法であって、
前記電子署名生成装置は、ＩＣカード管理情報と、前記ＩＣカードの機能を補完するドライバを記憶する記憶部を具備し、
前記ＩＣカード管理情報に基づいて、電子署名を実施する文書を一定の長さに圧縮した情報を、電子署名生成装置で実施するか、前記ＩＣカードで実施するか判定する処理と、
前記判定結果に基づき、前記ＩＣカードの機能を補完するドライバを利用して、前記電子署名を実施する文書を一定の長さに圧縮した情報を生成する処理と、
を実施する、
ことを特徴とする電子署名生成方法。
【請求項２】
前記ＩＣカード管理情報は、前記ＩＣカードに付属するＩＣカードドライバに関する情報及び前記ＩＣカードが実行可能な暗号アルゴリズムに関する情報である、
ことを特徴とする請求項１に記載の電子署名生成方法。
【請求項３】
前記電子署名生成装置により、
前記ＩＣカード導入時に、前記ＩＣカードリーダライタを介して、前記ＩＣカードに付属するＩＣカードドライバに関する情報及び前記ＩＣカードが実行可能な暗号アルゴリズムを取得し、前記ＩＣカード管理情報を作成する処理を実施する、
ことを特徴とする請求項２に記載の電子署名生成方法。
【請求項４】
前記電子署名生成装置により、
前記ＩＣカードを導入してから一定期間経過後に、ネットワークを介してＩＣカードドライバ提供装置に接続し、前記ＩＣカードに付属するＩＣカードドライバが更新されているか確認する処理を実施する、
ことを特徴とする請求項３に記載の電子署名生成方法。
【請求項５】
前記電子署名生成装置により、
ネットワークを介して前記ＩＣカード提供装置に接続して、最新のＩＣカードドライバを取得し、前記ＩＣカードに付属するＩＣカードドライバに関する情報及び前記ＩＣカードが実行可能な暗号アルゴリズムを取得し、前記ＩＣカードドライバ管理情報を更新する処理を実施する、
ことを特徴とする請求項４に記載の電子署名生成方法。
【請求項６】
コンピュータに、請求項１乃至請求項５の何れか１項に記載の電子署名生成方法を実行させる電子署名生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子署名生成方法及び電子署名生成プログラムに関する。
【背景技術】
【０００２】
行政手続きの電子申請・申告や、電子商取引、オンラインバンキング、オンラインショッピングなど、インターネットを利用したサービス（以下、オンラインサービスと記載する）が普及している。しかし、オンラインサービスでは、他人へのなりすまし、また、インターネット上を流れる電子文書の改ざん、また、契約や申請内容が事後に否定されるといった脅威がある。そこで、電子文書の真正性を担保するために、公開鍵暗号方式を利用した電子署名を電子文書に付与することで、上記の脅威を対策している。
【０００３】
電子署名の生成処理は、電子署名対象文書を一定の長さのデータに圧縮するハッシュ演算と、電子署名を実施する者だけが所持する秘密鍵によって暗号データを生成する暗号演算から構成される。オンラインサービスを実行するアプリケーションは、電子署名を生成する際に、電子計算機器の暗号ライブラリに対して、ハッシュ演算と暗号演算を分けて実行するか、あるいは、一括して実行するか選択して、命令する。
【０００４】
公開鍵暗号方式の安全性は、秘密鍵を厳密に管理することが前提となっているため、秘密鍵を安全に保存し、また、秘密鍵を外部に漏洩せずに暗号演算を行う必要がある。そこで、オンラインサービスによっては、電子署名を生成する際に、耐タンパ性を備えたＩＣカードを利用する場合がある。
【０００５】
ＩＣカードを利用して電子署名を生成するには、オンラインサービスを実行するアプリケーション側に、ＩＣカードに対して電子署名生成処理を命令する機能を実装する必要がある。複数の異なるＩＣカードに対応するために、アプリケーションとＩＣカード間には標準化されたインターフェースが設けられている。標準のインターフェースで電子署名生成処理を命令する機能を実装することにより、アプリケーションは、複数の種類のＩＣカードと相互運用性を保つことが可能である。なお、前記を実現するには、オンラインサービスを実行する端末装置に、標準化されたインターフェースからＩＣカード固有のコマンドに変換するためのドライバ（以下、ＩＣカードドライバと記載する）をインストールすることが前提となる。例えば、標準化されたインターフェースの一つであるＰＫＣＳ＃１１の仕様が、非特許文献１に詳細に記載されている。
【０００６】
電子署名の生成処理の中で、ハッシュ演算に関しては、秘密鍵を利用しないため、ＩＣカード内での実施することが必須ではない。そのため、ハッシュ演算をＩＣカード内で実行するか、ＩＣカードドライバ内で実行するかは、それぞれのＩＣカードに依存する。
【０００７】
一方で、近年の暗号解読技術の進歩や電子計算機能力の向上により、電子署名などの演算で利用する一部の暗号アルゴリズム、また、鍵長の短い公開鍵暗号の安全性に、問題があることが指摘されている。米国連邦政府の標準暗号を制定する米国立標準技術研究所では、２０１０年までに、米国政府での情報システムにおいて、電子署名に利用するハッシュ関数を、ＳＨＡ−１からＳＨＡ-２へ移行することを強く推奨している。ＳＨＡ−１の安全性に関するコメントは、非特許文献２に詳細に記載されている。
【０００８】
非特許文献２のコメントを受け、各国の認証基盤やアプリケーション提供者は、アプリケーションで利用する暗号アルゴリズムをより安全性の高いものに移行し、また、複数の暗号アルゴリズムから選択できるようにするなど、情報システムの安全性を高める施策を実施している。例えば、非特許文献３によると、日本の政府認証基盤では、2014年度から、電子署名に利用する暗号アルゴリズムとして、現行使用している暗号アルゴリズムに加えて、安全性の高い暗号アルゴリズムを追加する。さらに、一定期間経過後には、安全性の高い暗号アルゴリズムのみを利用することが記載されている。
【０００９】
また、ＩＣカードベンダは、安全性の高い暗号アルゴリズムに対応したＩＣカードを発行し、さらに、安全性の高い暗号アルゴリズムに対応したＩＣカードドライバを提供している。ユーザは、最新のＩＣカードの発行を受け、また、最新のＩＣカードドライバを取得し、端末装置に再インストールすることで、ＩＣカードで実行する暗号アルゴリズムの種類を追加することができる。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】PKCS #11 v2.20: Cryptographic Token Interface Standard, 2004年6月, [online], [平成23年08月日検索], インターネット＜URL:ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/pkcs-11v2-20.pdf＞
【非特許文献２】NIST Comments on Cryptanalytic Attacks on SHA-1, 2006年4月, [online], [平成23年08月日検索], インターネット＜URL:http://csrc.nist.gov/groups/ST/hash/statement.html＞
【非特許文献３】政府認証基盤相互運用性仕様書（移行期間編）, 2010年3月, [online], [平成23年08月日検索], インターネット＜URL:http://www.gpki.go.jp/session/CompatibilitySpecifications_phase2.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１１】
非特許文献２に記載されているように、暗号解読技術の進歩及び電子計算機能力の向上により、暗号アルゴリズムの安全性は、日々変化している。そこで、電子申請など、電子署名を求めるアプリケーションでは、暗号アルゴリズムの技術動向を確認し、安全性が担保された暗号アルゴリズムを電子署名の生成処理に採用する必要がある。
【００１２】
さらに、非特許文献３に示すように、安全性の高い暗号アルゴリズムへ移行する際には、現行の暗号アルゴリズムと安全性の高い暗号アルゴリズムの両方を利用できる期間（以下、移行期間）が設けられている。アプリケーションやＩＣカードなどは、移行期間中の各々の時期に暗号アルゴリズム移行を進めていくことになるため、アプリケーションやＩＣカードによっては、暗号アルゴリズム移行の完了時期が一致しない場合がある。
【００１３】
そのため、移行期間中に、アプリケーションがＩＣカードによる電子署名の生成処理を要求する場合には、ＩＣカードで実行可能な暗号アルゴリズムを考慮した上で、電子署名で利用する暗号アルゴリズムを決定する必要がある。
【００１４】
しかしながら、非特許文献１においては、電子署名などの暗号演算を実行する際の、アプリケーションとＩＣカード間でインターフェースが記載されているだけであり、ＩＣカードで実行可能な暗号アルゴリズムを管理する方法については記載されていない。
【００１５】
そのため、ユーザは、電子署名を求めるアプリケーションを利用する前に、ユーザの保持するＩＣカードが、アプリケーションの求める暗号アルゴリズムに対応しているか確認する必要がある。さらに、定期的に、ユーザは安全性の高い暗号アルゴリズムに対応したＩＣカードドライバが公開されているか確認し、更新されたＩＣカードドライバを再度セットアップする必要がある。
【００１６】
ユーザが上記に示すような確認作業を行った結果、アプリケーションが求める安全性の高い暗号アルゴリズムに、ＩＣカードやＩＣカードドライバが対応していない場合には、暗号アルゴリズム移行を完了したＩＣカードやＩＣカードドライバが発行されない限り、電子申請などのオンラインサービスを実施することができない。
【００１７】
以上のように、暗号アルゴリズムの移行期間中に、ＩＣカードを利用して、電子署名を実施する上でユーザの利便性が悪いという課題がある。
【００１８】
本発明は上記事項に鑑みてなされたものであり、署名生成で利用する暗号方式を柔軟に拡張できる電子署名生成方法及び電子署名生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記課題を解決するための一手段を説明する。本発明は、電子署名生成装置により、電子署名を実施する電子文書の情報、あるいは、電子署名を実施する電子文書を一定の長さに圧縮した情報、さらに、電子署名に利用する暗号アルゴリズムを含んだ、電子署名生成要求を生成し、前記電子署名生成要求を、ＩＣカードリーダライタを介して接続されているＩＣカードに送信して、前記ＩＣカードから電子署名生成応答を受信し、電子署名生成処理を実施する、電子署名生成方法である。前記電子署名生成装置は、ＩＣカード管理情報と、前記ＩＣカードの機能を補完するドライバを記憶する記憶部を具備する。前記電子署名生成装置により、前記ＩＣカード管理情報に基づいて、電子署名を実施する文書を一定の長さに圧縮した情報を、電子署名生成装置で実施するか、ＩＣカードで実施するか判定する処理と、前記ＩＣカードの機能を補完するドライバを利用して、前記電子署名を実施する文書を一定の長さに圧縮した情報を生成する処理とを実施する。
【発明の効果】
【００２０】
本発明によれば、署名生成で利用する暗号方式を柔軟に拡張できる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態に係る電子署名生成システムの構成を示す図である。
【図２】電子署名生成装置１１の構成を示す図である。
【図３】電子署名生成装置１１のハードウェア構成例を示す図である。
【図４】電子署名生成装置１１の設定情報保持部２８に保存されている、ＩＣカードドライバの情報を示した図である。
【図５】電子署名生成装置１１の設定情報保持部２８に保存されている、ＩＣカード１３が対応する暗号アルゴリズムを示した図である。
【図６】電子署名生成装置１１における、ＩＣカードドライバの初期インストール処理を示すフローチャートである。
【図７】電子署名生成装置１１における、ＩＣカードドライバの更新インストール処理を示すフローチャートである。
【図８】電子署名生成装置１１とＩＣカード１３における、電子署名生成処理を示すシーケンス図である。
【図９】電子署名生成装置１１とＩＣカード１３における、電子署名生成処理を示すシーケンス図である。
【図１０】電子署名生成装置１１とＩＣカード１３における、電子署名生成処理を示すシーケンス図である。
【発明を実施するための形態】
【００２２】
以下に、本発明の実施形態について、図面を参照して、詳細に説明する。
【００２３】
図１は、本発明の実施形態に係る電子署名生成システムの構成を示す図である。
【００２４】
本実施形態では、電子署名を生成する複数の電子署名生成装置１１ａ〜電子署名生成装置１１ｌ（「電子署名生成装置１１」と総称する）と、電子署名生成装置１１からの命令により暗号演算を実行するＩＣカード１３ａ〜ＩＣカード１３ｎ（「ＩＣカード１３」と総称する）と、電子署名生成装置１１とＩＣカード１３の間の通信を制御するＩＣカードリーダライタ１２ａ〜ＩＣカードリードライタ１２ｍ（「ＩＣカードリードライタ１２」と総称する）、ＩＣカード１３を実行するためのドライバを提供するＩＣカードドライバ提供装置１４と、イーサネット(登録商標)等のネットワーク１５からなる。なお、電子署名生成装置１１に複数のＩＣカードリーダライタ１２を接続し、複数のＩＣカード１３を使い分ける場合もある。
【００２５】
次に、図２を用いて、電子署名生成装置１１を説明する。
【００２６】
電子署名生成装置１１は、処理部２０ａと記憶部２０ｂと、ユーザからの指示の受付を行う入出力部２０ｃと、ネットワーク１５を介して他装置と通信を行うための通信部２０ｄと、を有する。
【００２７】
処理部２０ａは、電子申請・申告や電子契約を行う際に必要となる電子文書を生成する電子文書生成部２１と、電子文書生成部２１で生成した電子文書に対して電子署名を付与する電子署名生成部２２と、電子署名生成装置１１にインストールされているＩＣカード１３を管理し、電子署名生成部２２とＩＣカード１３間の命令を制御するＩＣカード管理部２３と、ＩＣカード１３固有のＩＣカードコマンドを生成するＩＣカードアクセス部２４を有する。
【００２８】
記憶部２０ｂは、ユーザが入出力２０ｄを介して生成した電子文書を保持する電子文書保持部２５と、ＩＣカード１３の機能を補完するＩＣカード補完ドライバを保持するＩＣカード補完ドライバ保持部２６と、ＩＣカード１３に付属するＩＣカードドライバを保持するＩＣカードドライバ保持部２７と、電子署名生成装置１１で利用するＩＣカード１３を管理するための情報を保持する設定情報保持部２８を有する。
【００２９】
ＩＣカード管理部２３は、ユーザがＩＣカード１３のＩＣカードドライバを電子署名生成装置１１にインストールし、ＩＣカードドライバ保持部２７にＩＣカードドライバが保存されたことを検知すると、ＩＣカード１３が実行可能な暗号アルゴリズムをリスト化し、暗号アルゴリズム対応リストを設定情報保持部２８に保存する。また、ＩＣカード１３に付属するＩＣカードドライバをインストールした日時を記憶し、予め設定した時間毎にインストールした日時と現在時刻とを比較する。その結果、一定以上の時間が経過している場合には、ＩＣカードドライバ提供装置１４にアクセスし、ＩＣカード１３に付属するＩＣカードドライバが更新されているか否か確認する。
【００３０】
さらに、ＩＣカード管理部２３は、電子署名生成部２２から、ハッシュ値生成要求や、署名生成要求を受けると、ＩＣカード１３が、ハッシュ値生成要求や署名生成要求に含まれる暗号アルゴリズムで、ハッシュ演算や暗号演算を実行可能であるか確認する。ハッシュ値生成要求の暗号アルゴリズムに対応していない場合には、ＩＣカード補完ドライバを利用して、ハッシュ演算を実行し、電子署名生成部２２へハッシュ値を応答する。また、署名生成要求の暗号アルゴリズムに対応していない場合には、要求された署名生成処理をハッシュ演算と暗号演算に分解可能か確認する。分解可能な場合には、最初にハッシュ演算をＩＣカード補完ドライバで実施し、次に、その実行結果に対して暗号演算を行うようにＩＣカード１３に命令して署名値を得る。そして、得られた署名値を電子署名生成部２２へ応答する。
【００３１】
なお、図２に示す電子署名生成装置１１は、例えば、図３に示すような、ＣＰＵ３１と、メモリ３２と、ハードディスク等の外部記憶装置３３と、ネットワーク１５を介して他装置と通信を行うための通信装置３４と、キーボードやマウス等の入力装置３５と、モニタやプリンタ等の出力装置３６と、ＣＤ−ＲＯＭ等の可搬性を有する記憶媒体３８から情報を読み取る読取装置３７と、これらの各装置間のデータ送受を行う内部通信線３０とを備えた、一般的な電子計算機（コンピュータ）上に構築できる。
【００３２】
そして、ＣＰＵ３１が外部記憶装置３３からメモリ３２上にロードされた所定のプログラムを実行することにより、上述の各処理部を実現できる。すなわち、通信部２０ｄは、ＣＰＵ３１が通信装置３４を利用することにより、入出力部２０ｃは、ＣＰＵ３１が入力装置３５や出力装置３６や読取装置３７を利用することにより、そして、記憶部２０ｂは、ＣＰＵ３１がメモリ３２や外部記憶装置３３や可搬性を有する記憶媒体３８を利用することにより実現される。また、処理部２０ａは、ＣＰＵ３１のプロセスとして実現される。
【００３３】
上記所定のプログラムは、予め外部記憶装置３３に格納されていても良いし、上記電子計算機が利用可能な記憶媒体３８に格納されており、読み取り装置３７を介して、必要に応じて読み出され、あるいは、上記電子計算機が利用可能な通信媒体であるネットワークまたはネットワーク上を伝搬する搬送波を利用する通信装置３４と接続された他の装置から、必要に応じてダウンロードされて、外部記憶装置３３に導入されるものであっても良い。
【００３４】
次に図４を用いて、電子署名生成装置１１の設定情報保持部２８に記憶されている、ＩＣカードドライバ管理リスト４０を説明する。ＩＣカードドライバ管理リスト４０は、ＩＣカード管理部２３が、ＩＣカードドライバの初期インストールや更新インストールを実行する際に編集される。また、ＩＣカードドライバ管理リスト４０は、ユーザにより、入出力部２０ｃを介して、編集される。
【００３５】
各々のＩＣカードドライバについて、番号４１の列に、ＩＣカードドライバを識別する番号を、ＩＣカード４２の列に、ＩＣカードを識別する名前を、ＩＣカードドライバファイル名４３の列に、ＩＣカードドライバのフルパスを、バージョン４４の列にＩＣカードドラバのバージョンを記載する。また、ネットワーク１５に接続されたＩＣカードドライバ提供装置１４がＩＣカードドライバを公開している場合には、ダウンロードサイト４５の列に、ダウンロードサイトのアドレスを記載する。さらに、インストール日時４６の列に、ＩＣカードドライバを初期インストールあるいは更新インストールした日時を記載する。
【００３６】
次に図５を用いて、電子署名生成装置１１の設定情報保持部２８に記憶されている、暗号アルゴリズムリスト５０を説明する。暗号アルゴリズムリスト５０は、ＩＣカードドライバの初期インストールや更新インストールを実行する際に、ＩＣカード管理部２３により、編集される。また、暗号アルゴリズムリスト５０は、ユーザがＩＣカードドライバ提供装置１４などからＩＣカード１３が実行可能な暗号アルゴリズムリストを取得した際に、ユーザにより、入出力部２０ｃを介して、編集される。
【００３７】
暗号アルゴリズム５１の列に、ハッシュ演算のアルゴリズム（ＳＨＡ−１、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２）や、暗号演算のアルゴリズム（ＲＳＡ、ＤＳＡ、ＥＣＤＳＡ）や、ハッシュ演算と暗号演算を併せたアルゴリズム（ｓｈａ１ｗｉｔｈＲＳＡＥｎｃｒｙｐｔｉｏｎ、ｓｈａ２５６ｗｉｔｈＲＳＡＥｎｃｒｙｐｔｉｏｎ、ｓｈａ３８４ｗｉｔｈＲＳＡＥｎｃｒｙｐｔｉｏｎ、ｓｈａ５１２ｗｉｔｈＲＳＡＥｎｃｒｙｐｔｉｏｎ、ｄｓａＷｉｔｈＳｈａ１、ｅｃｄｓａＷｉｔｈＳｈａ１）を記載する。さらに、ＩＣカード５２の列に、各々のＩＣカード１３において、実行可能な暗号アルゴリズムの項目に○を記載する。
【００３８】
次に、図６において、ユーザが、入出力部２０ｃを介して、ＩＣカード１３に付属するＩＣカードドライバを初期インストールや更新インストールする際の、ＩＣカード管理部２３の処理について示す。
【００３９】
電子署名生成装置１１のＩＣカード管理部２３は、ＩＣカードドライバ保持部２７に、新たなＩＣカードドライバがインストールされたことを検知する（Ｓ１０１）と、ＩＣカードドライバ管理リスト４０を作成し、設定情報保持部２８に保存する（Ｓ１０２）。次に、ＩＣカード管理部２３は、新たにインストールされたＩＣカード１３にアクセスし、ＩＣカード１３やＩＣカード１３に付属するＩＣカードドライバが、実行可能な暗号アルゴリズムのリストを取得する（Ｓ１０３）。さらに、ＩＣカード管理部２３は、実行可能な暗号アルゴリズムを暗号アルゴリズムリスト５０に記載し、設定情報保持部２８に保存する（Ｓ１０４）。なお、Ｓ１０２やＳ１０４において、すでに検知したＩＣカードドライバの情報が、ＩＣカードドライバ管理リスト４０や暗号アルゴリズムリスト５０に記載されている場合は、記載内容を上書きする。
【００４０】
次に、図７において、ＩＣカード管理部２３が、予め設定した時間毎にインストールしたＩＣカードドライバの更新を確認する処理について示す。
【００４１】
電子署名生成装置１１のＩＣカード管理部２３は、ＩＣカードドライバ管理リスト４０の番号４１の最初の行を読み込み（Ｓ２０１）、Ｓ２０１で選択した行に記載されているインストール日時４６を取得する（Ｓ２０２）。ＩＣカード管理部２３は、Ｓ２０２で取得したインストール日時４６と現在時刻を比較し、予め設定した更新間隔を経過していない場合には（Ｓ２０３でＮｏ）、Ｓ２１０へ進む。
【００４２】
一方、予め設定した更新間隔を経過している場合には（Ｓ２０３でＹｅｓ）、ＩＣカード管理部２３は、ＩＣカードドライバ管理リスト４０において、Ｓ２０１で選択した番号４１の行に、ダウンロードサイト４５が記載されているかを確認する。ダウンロードサイト４５が記載されていない場合には（Ｓ２０４でＮｏ）、ＩＣカード管理部２３は、入出力部２０ｃを介して、ＩＣカードドライバの更新を確認する旨のメッセージを電子署名生成装置１１の出力装置３６に表示し（Ｓ２０５）、Ｓ２１０へ進む。なお、ユーザがメッセージを確認し、ＩＣカードドライバを更新すると、図６で示した処理を実施する。
【００４３】
一方、ダウンロードサイト４５が記載されている場合には（Ｓ２０４でＹｅｓ）、ＩＣカード管理部２３は、記載されているアドレスに基づいて、ＩＣカードドライバ提供装置１４にアクセスする（Ｓ２０６）。ＩＣカードドライバ提供装置１４で提供されているＩＣカードドライバのバージョンと、Ｓ２０１で選択した番号４１の行に記載されているバージョン４４が一致する場合には（Ｓ２０７でＮｏ）、Ｓ２１０へ進む。
【００４４】
一方、ＩＣカードドライバ提供装置１４で提供されているＩＣカードドライバのバージョンが、Ｓ２０１で選択した番号４１の行に記載されているバージョン４４より新しい場合には（Ｓ２０７でＹｅｓ）、ＩＣカード管理部２３は、通信部２０ｄを介して、ＩＣカードドライバをダウンロードし、ＩＣカードドライバ保持部２７にインストールする。さらに、ＩＣカード管理部２３は、ＩＣカードドライバ管理リスト４０において、Ｓ２０１で選択した番号４１の行に記載されているバージョン４４とインストール日時４６を更新する（Ｓ２０８）。
【００４５】
次に、ＩＣカード管理部２３は、Ｓ２０８で更新インストールしたＩＣカード１３にアクセスし、ＩＣカード１３やＩＣカード１３に付属するＩＣカードドライバが実行可能な暗号アルゴリズムのリストを取得し、暗号アルゴリズムリスト５０において、Ｓ２０１で選択した番号４１に該当するＩＣカード５２の列を更新する（Ｓ２０９）。
【００４６】
次に、ＩＣカードドライバ管理リスト４０において、最後の行まで達しているか確認し、最後まで達している場合には（Ｓ２１０でＹｅｓ）、処理を終了する。
【００４７】
一方、最後の行まで達していない場合には（Ｓ２１０でＮｏ）、Ｓ２０１に進み、ＩＣカードドライバ管理リスト４０の次の行を読み込む。
【００４８】
次に、図８、図９、図１０を用いて、電子署名生成装置１１とＩＣカード１３において、ユーザが入出力部２０ｃを介して選択した電子文書に対して、電子署名を生成する処理について説明する。
【００４９】
最初に、図８において、電子署名生成部２２とＩＣカード管理部２３が実行する処理について示す。
【００５０】
電子署名生成部２２は、ユーザが選択した電子文書を電子文書保持部２５から取得する（Ｓ３０１）。署名生成処理をハッシュ演算と暗号演算に分けて実施しない場合には（Ｓ３０２でＮｏ）、Ｓ３０７へ進む。
【００５１】
一方、電子署名生成部２２が、署名生成処理をハッシュ演算と暗号演算に分けて実施する場合には（Ｓ３０２でＹｅｓ）、まず、ハッシュ演算を行うために、電子署名生成部２２がＩＣカード管理部２３に対してハッシュ値生成要求を送信する（Ｓ３０３）。ハッシュ値生成要求には、電子文書のデータとハッシュ演算のための暗号アルゴリズムを含む。ＩＣカード管理部２３は、ハッシュ値生成要求を受信すると（Ｓ３０４）、ＩＣカード管理部２３あるいはＩＣカード１３でハッシュ演算処理を実施する。次に、ハッシュ演算処理の実行結果をもとに、ハッシュ値生成応答を送信する（Ｓ３０５）。電子署名生成部２２は、ハッシュ値生成応答を受信する（Ｓ３０６）。なお、ハッシュ演算の詳細な処理については、図９で説明する。
【００５２】
次に、電子署名値を生成するために、電子署名生成部２２は、ＩＣカード管理部２３に対して署名生成要求を送信する。署名生成要求には、署名対象データと署名生成のための暗号アルゴリズムが含まれる。なお、署名生成処理をハッシュ演算と暗号演算に分けて実施する場合には（Ｓ３０２でＹｅｓ）場合には、署名対象のデータはＳ３０６で受信した電子文書のハッシュ値であり、また、指定する暗号アルゴリズムは、暗号演算の暗号アルゴリズムとなる。一方、署名生成処理をハッシュ演算と暗号演算に分けて実施しない場合には（Ｓ３０２でＮｏ）、署名対象のデータは電子文書全体であり、また、指定する暗号アルゴリズムは、ハッシュ演算と暗号演算を併せた暗号アルゴリズムとなる。
【００５３】
ＩＣカード管理部２３は、署名生成要求を受信すると（Ｓ３０８）、署名生成処理を実施する。次に、署名生成処理の実行結果をもとに、署名生成応答を送信する（Ｓ３０９）。電子署名生成部２２は、署名生成応答を受信する（Ｓ３１０）。なお、署名生成処理の詳細な処理については、図９で説明する。
【００５４】
次に、図９において、電子署名生成装置１１のＩＣカード管理部２３とＩＣカードアクセス部２４と、ＩＣカード１３が実行するハッシュ演算の処理について示す。
【００５５】
最初に、ＩＣカード管理部２３は、Ｓ３０４で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにＩＣカードが対応しているか確認する。具体的には、暗号アルゴリズムリスト５０において、暗号アルゴリズム５１の中でハッシュ値生成要求に含まれる暗号アルゴリズムに該当する行と、ＩＣカード５２の中で署名生成処理を実行するＩＣカードに該当する列を検索し、「○」となっているか確認する（Ｓ４０１）。
【００５６】
Ｓ３０４で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにＩＣカードが対応している場合には（Ｓ４０１でＹｅｓ）、ＩＣカードドライバ保持部２７に保存されているＩＣカードドライバを利用して、ＩＣカード１３固有のハッシュ値生成コマンドを作成し（Ｓ４０２）、ＩＣカードアクセス部２４へ送信する（Ｓ４０３）。
【００５７】
ＩＣカードアクセス部２４は、ＩＣカード管理部２３からのハッシュ値生成コマンドを受信する（Ｓ４０４）。ハッシュ演算をＩＣカードで実行する場合には（Ｓ４０５でＹｅｓ）、ＩＣカードリーダライタ１２を介して、ＩＣカード１３へハッシュ値生成を命令し、ＩＣカード１３でハッシュ演算を実行する（Ｓ４０６）。一方、ハッシュ演算をＩＣカードで実行しない場合には（Ｓ４０５でＮｏ）、ＩＣカードドライバを利用してハッシュ演算を実行する（Ｓ４０７）。ＩＣカードアクセス部２４は、ハッシュ演算結果であるハッシュ値をＩＣカード管理部２３へ送信する（Ｓ４０８）。
【００５８】
ＩＣカード管理部２３は、ＩＣカードアクセス部２４からハッシュ値を受信すると（Ｓ４０９）、Ｓ４１１へ進む。
【００５９】
一方、Ｓ３０４で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにＩＣカードが対応していない場合には（Ｓ４０１でＮｏ）、ＩＣカード補完ドライバ保持部２６に保存されているＩＣカード補完ドライバを利用してハッシュ演算を実行する（Ｓ４１０）。
【００６０】
ＩＣカード管理部２３は、Ｓ４０９で受信した、あるいは、Ｓ４１０で生成したハッシュ値を含むハッシュ値生成応答を作成する（Ｓ４１１）。
【００６１】
なお、ＩＣカードリーダライタ１２は、ＩＣカードアクセス部２４とＩＣカード１３の通信を制御する（Ｓ４００）。
【００６２】
次に、図１０において、電子署名生成装置１１のＩＣカード管理部２３とＩＣカードアクセス部２４と、ＩＣカード１３が実行する署名生成処理について示す。
【００６３】
ＩＣカード管理部２３は、Ｓ３０８で受信した署名生成要求に含まれる暗号アルゴリズムにＩＣカードが対応しているか確認する。具体的には、暗号アルゴリズムリスト５０において、暗号アルゴリズム５１の中で署名生成要求に含まれる暗号アルゴリズムに該当する行と、ＩＣカード５２の中で署名生成処理を実行するＩＣカードに該当する列を検索し、「○」となっているか確認する（Ｓ５０１）。
【００６４】
Ｓ３０８で受信した署名生成要求に含まれる暗号アルゴリズムにＩＣカードが対応していない場合には（Ｓ５０１でＮｏ）、ＩＣカード管理部２３は、前記暗号アルゴリズムにハッシュ演算と暗号演算を両方共含むかを確認する（Ｓ５０２）。ＩＣカード管理部２３では、秘密鍵利用した暗号演算を補完できないため、暗号演算のみの場合は（Ｓ５０２でＮｏ）の場合は、エラー値を含んだ署名生成応答を作成する（Ｓ５０３）。
【００６５】
一方、ハッシュ演算と暗号演算を両方共含む場合には（Ｓ５０２でＹｅｓ）、ＩＣカード管理部２３は、暗号アルゴリズムをハッシュ演算と暗号演算に分解する。分解した暗号演算の暗号アルゴリズムがＩＣカード１３に対応しているか、Ｓ５０１と同様に確認する（Ｓ５０４）。例えば、暗号アルゴリズムがｓｈａ２５６ｗｉｔｈＲＳＡＥｎｃｒｙｐｔｉｏｎであれば、ＳＨＡ−２５６とＲＳＡに分解し、ＲＳＡにＩＣカードが対応しているか確認する。分解した暗号演算の暗号アルゴリズムにＩＣカード１３が対応していない場合には（Ｓ５０４でＮｏ）、ＩＣカード管理部２３は、Ｓ５０３へ進む。
【００６６】
一方、分解した暗号演算の暗号アルゴリズムにＩＣカード１３が対応している場合には（Ｓ５０４でＹｅｓ）、ＩＣカード管理部２３は、ＩＣカード補完ドライバを用いて、分解したハッシュ演算を実行する（Ｓ５０５）。さらに、ＩＣカード管理部２３は、Ｓ５０５で生成したハッシュ値を署名対象とし、Ｓ５０４で分解した暗号演算の暗号アルゴリズムによる署名コマンドを作成する（Ｓ５０６）。
【００６７】
Ｓ３０８で受信した署名生成要求に含まれる暗号アルゴリズムにＩＣカードが対応している場合には（Ｓ５０１でＹｅｓ）、ＩＣカード管理部２３は、ＩＣカードドライバ保持部２７に保存されているＩＣカードドライバを利用して、Ｓ３０８に含まれる署名対象データを署名対象とし、Ｓ３０８に含まれる暗号アルゴリズムによる署名コマンドを作成する（Ｓ５０７）。
【００６８】
ＩＣカード管理部２３は、Ｓ５０６あるいはＳ５０７で生成した署名コマンドをＩＣカードアクセス部２４へ送信する（Ｓ５０８）。
【００６９】
ＩＣカードアクセス部２４は、ＩＣカード管理部２３からの署名コマンドを受信すると（Ｓ５０９）、ＩＣカードリーダライタ１２を介して、ＩＣカード１３へ署名コマンドを送信する（Ｓ５１０）。次に、ＩＣカード１３は、ＩＣカードアクセス部２４から署名コマンドを受信すると（Ｓ５１１）、署名コマンドに含まれる暗号アルゴリズムで署名生成を実行する（Ｓ５１２）。さらに、ＩＣカード１３は、ＩＣカードリーダライタ１２を介して、Ｓ５１２で生成した署名値をＩＣカードアクセス部２４へ送信する（Ｓ５１３）。次に、ＩＣカードアクセス部２４は、ＩＣカード１３から署名値を受信すると（Ｓ５１４）、ＩＣカード管理部２３へ送信する（Ｓ５１５）。
【００７０】
ＩＣカード管理部２３は、ＩＣカードアクセス部２４から署名値を受信すると（Ｓ５１６）、署名値を含んだ署名生成応答を作成する（Ｓ５１７）。
【００７１】
以上、本発明の実施形態について詳述したが、上記実施形態によれば、署名生成で利用する暗号方式を柔軟に拡張できる電子署名生成方法、これを実施する電子署名生成装置及び電子署名生成プログラムを提供することができる。
【００７２】
また、本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【００７３】
１１・・・電子署名生成装置、１２・・・ＩＣカードリーダライタ、１３・・・ＩＣカード、１４・・・ＩＣカードドライバ提供装置、１５・・・ネットワーク、２０ａ・・・処理部、２０ｂ・・・記憶部、２０ｃ・・・入出力部、２０ｄ・・・通信部、２１・・・電子文書生成部、２２・・・電子署名生成部、２３・・・ＩＣカード管理部、２４・・・ＩＣカードアクセス部、２５・・・電子文書保持部、２６・・・ＩＣカード補完ドライバ保持部、２７・・・ＩＣカードドライバ保持部、２８・・・設定情報保持部、３０・・・内部通信線、３１・・・ＣＰＵ、３２・・・メモリ、３３・・・外部記憶装置、３４・・・通信装置、３５・・・入力装置、３６・・・出力装置、３７・・・読取装置、３８・・・可搬性を有する記憶媒体。
【図１】
2013098808.tif 000003
【図２】
2013098808.tif 000004
【図３】
2013098808.tif 000005
【図４】
2013098808.tif 000006
【図５】
2013098808.tif 000007
【図６】
2013098808.tif 000008
【図７】
2013098808.tif 000009
【図８】
2013098808.tif 000010
【図９】
2013098808.tif 000011
【図１０】
2013098808.tif 000012