説明

電子署名生成方法及び電子署名生成プログラム

【課題】署名生成で利用する暗号方式を柔軟に拡張できる電子署名生成方法及び電子署名生成プログラムを提供する。
【解決手段】電子署名生成装置11は、ICカード管理情報と、ICカードの機能を補完するドライバを記憶する記憶部を具備し、前記ICカード管理情報に基づいて、電子署名を実施する文書を一定の長さに圧縮した情報を、電子署名生成装置で実施するか、ICカードリーダライタ12を介して接続されているICカード13で実施するか判定し、この判定結果に基づき、前記ICカードの機能を補完するドライバを利用して、前記電子署名を実施する文書を一定の長さに圧縮した情報を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子署名生成方法及び電子署名生成プログラムに関する。
【背景技術】
【0002】
行政手続きの電子申請・申告や、電子商取引、オンラインバンキング、オンラインショッピングなど、インターネットを利用したサービス(以下、オンラインサービスと記載する)が普及している。しかし、オンラインサービスでは、他人へのなりすまし、また、インターネット上を流れる電子文書の改ざん、また、契約や申請内容が事後に否定されるといった脅威がある。そこで、電子文書の真正性を担保するために、公開鍵暗号方式を利用した電子署名を電子文書に付与することで、上記の脅威を対策している。
【0003】
電子署名の生成処理は、電子署名対象文書を一定の長さのデータに圧縮するハッシュ演算と、電子署名を実施する者だけが所持する秘密鍵によって暗号データを生成する暗号演算から構成される。オンラインサービスを実行するアプリケーションは、電子署名を生成する際に、電子計算機器の暗号ライブラリに対して、ハッシュ演算と暗号演算を分けて実行するか、あるいは、一括して実行するか選択して、命令する。
【0004】
公開鍵暗号方式の安全性は、秘密鍵を厳密に管理することが前提となっているため、秘密鍵を安全に保存し、また、秘密鍵を外部に漏洩せずに暗号演算を行う必要がある。そこで、オンラインサービスによっては、電子署名を生成する際に、耐タンパ性を備えたICカードを利用する場合がある。
【0005】
ICカードを利用して電子署名を生成するには、オンラインサービスを実行するアプリケーション側に、ICカードに対して電子署名生成処理を命令する機能を実装する必要がある。複数の異なるICカードに対応するために、アプリケーションとICカード間には標準化されたインターフェースが設けられている。標準のインターフェースで電子署名生成処理を命令する機能を実装することにより、アプリケーションは、複数の種類のICカードと相互運用性を保つことが可能である。なお、前記を実現するには、オンラインサービスを実行する端末装置に、標準化されたインターフェースからICカード固有のコマンドに変換するためのドライバ(以下、ICカードドライバと記載する)をインストールすることが前提となる。例えば、標準化されたインターフェースの一つであるPKCS#11の仕様が、非特許文献1に詳細に記載されている。
【0006】
電子署名の生成処理の中で、ハッシュ演算に関しては、秘密鍵を利用しないため、ICカード内での実施することが必須ではない。そのため、ハッシュ演算をICカード内で実行するか、ICカードドライバ内で実行するかは、それぞれのICカードに依存する。
【0007】
一方で、近年の暗号解読技術の進歩や電子計算機能力の向上により、電子署名などの演算で利用する一部の暗号アルゴリズム、また、鍵長の短い公開鍵暗号の安全性に、問題があることが指摘されている。米国連邦政府の標準暗号を制定する米国立標準技術研究所では、2010年までに、米国政府での情報システムにおいて、電子署名に利用するハッシュ関数を、SHA−1からSHA-2へ移行することを強く推奨している。SHA−1の安全性に関するコメントは、非特許文献2に詳細に記載されている。
【0008】
非特許文献2のコメントを受け、各国の認証基盤やアプリケーション提供者は、アプリケーションで利用する暗号アルゴリズムをより安全性の高いものに移行し、また、複数の暗号アルゴリズムから選択できるようにするなど、情報システムの安全性を高める施策を実施している。例えば、非特許文献3によると、日本の政府認証基盤では、2014年度から、電子署名に利用する暗号アルゴリズムとして、現行使用している暗号アルゴリズムに加えて、安全性の高い暗号アルゴリズムを追加する。さらに、一定期間経過後には、安全性の高い暗号アルゴリズムのみを利用することが記載されている。
【0009】
また、ICカードベンダは、安全性の高い暗号アルゴリズムに対応したICカードを発行し、さらに、安全性の高い暗号アルゴリズムに対応したICカードドライバを提供している。ユーザは、最新のICカードの発行を受け、また、最新のICカードドライバを取得し、端末装置に再インストールすることで、ICカードで実行する暗号アルゴリズムの種類を追加することができる。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】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>
【非特許文献2】NIST Comments on Cryptanalytic Attacks on SHA-1, 2006年4月, [online], [平成23年08月日検索], インターネット<URL:http://csrc.nist.gov/groups/ST/hash/statement.html>
【非特許文献3】政府認証基盤相互運用性仕様書(移行期間編), 2010年3月, [online], [平成23年08月日検索], インターネット<URL:http://www.gpki.go.jp/session/CompatibilitySpecifications_phase2.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0011】
非特許文献2に記載されているように、暗号解読技術の進歩及び電子計算機能力の向上により、暗号アルゴリズムの安全性は、日々変化している。そこで、電子申請など、電子署名を求めるアプリケーションでは、暗号アルゴリズムの技術動向を確認し、安全性が担保された暗号アルゴリズムを電子署名の生成処理に採用する必要がある。
【0012】
さらに、非特許文献3に示すように、安全性の高い暗号アルゴリズムへ移行する際には、現行の暗号アルゴリズムと安全性の高い暗号アルゴリズムの両方を利用できる期間(以下、移行期間)が設けられている。アプリケーションやICカードなどは、移行期間中の各々の時期に暗号アルゴリズム移行を進めていくことになるため、アプリケーションやICカードによっては、暗号アルゴリズム移行の完了時期が一致しない場合がある。
【0013】
そのため、移行期間中に、アプリケーションがICカードによる電子署名の生成処理を要求する場合には、ICカードで実行可能な暗号アルゴリズムを考慮した上で、電子署名で利用する暗号アルゴリズムを決定する必要がある。
【0014】
しかしながら、非特許文献1においては、電子署名などの暗号演算を実行する際の、アプリケーションとICカード間でインターフェースが記載されているだけであり、ICカードで実行可能な暗号アルゴリズムを管理する方法については記載されていない。
【0015】
そのため、ユーザは、電子署名を求めるアプリケーションを利用する前に、ユーザの保持するICカードが、アプリケーションの求める暗号アルゴリズムに対応しているか確認する必要がある。さらに、定期的に、ユーザは安全性の高い暗号アルゴリズムに対応したICカードドライバが公開されているか確認し、更新されたICカードドライバを再度セットアップする必要がある。
【0016】
ユーザが上記に示すような確認作業を行った結果、アプリケーションが求める安全性の高い暗号アルゴリズムに、ICカードやICカードドライバが対応していない場合には、暗号アルゴリズム移行を完了したICカードやICカードドライバが発行されない限り、電子申請などのオンラインサービスを実施することができない。
【0017】
以上のように、暗号アルゴリズムの移行期間中に、ICカードを利用して、電子署名を実施する上でユーザの利便性が悪いという課題がある。
【0018】
本発明は上記事項に鑑みてなされたものであり、署名生成で利用する暗号方式を柔軟に拡張できる電子署名生成方法及び電子署名生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【0019】
上記課題を解決するための一手段を説明する。本発明は、電子署名生成装置により、電子署名を実施する電子文書の情報、あるいは、電子署名を実施する電子文書を一定の長さに圧縮した情報、さらに、電子署名に利用する暗号アルゴリズムを含んだ、電子署名生成要求を生成し、前記電子署名生成要求を、ICカードリーダライタを介して接続されているICカードに送信して、前記ICカードから電子署名生成応答を受信し、電子署名生成処理を実施する、電子署名生成方法である。前記電子署名生成装置は、ICカード管理情報と、前記ICカードの機能を補完するドライバを記憶する記憶部を具備する。前記電子署名生成装置により、前記ICカード管理情報に基づいて、電子署名を実施する文書を一定の長さに圧縮した情報を、電子署名生成装置で実施するか、ICカードで実施するか判定する処理と、前記ICカードの機能を補完するドライバを利用して、前記電子署名を実施する文書を一定の長さに圧縮した情報を生成する処理とを実施する。
【発明の効果】
【0020】
本発明によれば、署名生成で利用する暗号方式を柔軟に拡張できる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施形態に係る電子署名生成システムの構成を示す図である。
【図2】電子署名生成装置11の構成を示す図である。
【図3】電子署名生成装置11のハードウェア構成例を示す図である。
【図4】電子署名生成装置11の設定情報保持部28に保存されている、ICカードドライバの情報を示した図である。
【図5】電子署名生成装置11の設定情報保持部28に保存されている、ICカード13が対応する暗号アルゴリズムを示した図である。
【図6】電子署名生成装置11における、ICカードドライバの初期インストール処理を示すフローチャートである。
【図7】電子署名生成装置11における、ICカードドライバの更新インストール処理を示すフローチャートである。
【図8】電子署名生成装置11とICカード13における、電子署名生成処理を示すシーケンス図である。
【図9】電子署名生成装置11とICカード13における、電子署名生成処理を示すシーケンス図である。
【図10】電子署名生成装置11とICカード13における、電子署名生成処理を示すシーケンス図である。
【発明を実施するための形態】
【0022】
以下に、本発明の実施形態について、図面を参照して、詳細に説明する。
【0023】
図1は、本発明の実施形態に係る電子署名生成システムの構成を示す図である。
【0024】
本実施形態では、電子署名を生成する複数の電子署名生成装置11a〜電子署名生成装置11l(「電子署名生成装置11」と総称する)と、電子署名生成装置11からの命令により暗号演算を実行するICカード13a〜ICカード13n(「ICカード13」と総称する)と、電子署名生成装置11とICカード13の間の通信を制御するICカードリーダライタ12a〜ICカードリードライタ12m(「ICカードリードライタ12」と総称する)、ICカード13を実行するためのドライバを提供するICカードドライバ提供装置14と、イーサネット(登録商標)等のネットワーク15からなる。なお、電子署名生成装置11に複数のICカードリーダライタ12を接続し、複数のICカード13を使い分ける場合もある。
【0025】
次に、図2を用いて、電子署名生成装置11を説明する。
【0026】
電子署名生成装置11は、処理部20aと記憶部20bと、ユーザからの指示の受付を行う入出力部20cと、ネットワーク15を介して他装置と通信を行うための通信部20dと、を有する。
【0027】
処理部20aは、電子申請・申告や電子契約を行う際に必要となる電子文書を生成する電子文書生成部21と、電子文書生成部21で生成した電子文書に対して電子署名を付与する電子署名生成部22と、電子署名生成装置11にインストールされているICカード13を管理し、電子署名生成部22とICカード13間の命令を制御するICカード管理部23と、ICカード13固有のICカードコマンドを生成するICカードアクセス部24を有する。
【0028】
記憶部20bは、ユーザが入出力20dを介して生成した電子文書を保持する電子文書保持部25と、ICカード13の機能を補完するICカード補完ドライバを保持するICカード補完ドライバ保持部26と、ICカード13に付属するICカードドライバを保持するICカードドライバ保持部27と、電子署名生成装置11で利用するICカード13を管理するための情報を保持する設定情報保持部28を有する。
【0029】
ICカード管理部23は、ユーザがICカード13のICカードドライバを電子署名生成装置11にインストールし、ICカードドライバ保持部27にICカードドライバが保存されたことを検知すると、ICカード13が実行可能な暗号アルゴリズムをリスト化し、暗号アルゴリズム対応リストを設定情報保持部28に保存する。また、ICカード13に付属するICカードドライバをインストールした日時を記憶し、予め設定した時間毎にインストールした日時と現在時刻とを比較する。その結果、一定以上の時間が経過している場合には、ICカードドライバ提供装置14にアクセスし、ICカード13に付属するICカードドライバが更新されているか否か確認する。
【0030】
さらに、ICカード管理部23は、電子署名生成部22から、ハッシュ値生成要求や、署名生成要求を受けると、ICカード13が、ハッシュ値生成要求や署名生成要求に含まれる暗号アルゴリズムで、ハッシュ演算や暗号演算を実行可能であるか確認する。ハッシュ値生成要求の暗号アルゴリズムに対応していない場合には、ICカード補完ドライバを利用して、ハッシュ演算を実行し、電子署名生成部22へハッシュ値を応答する。また、署名生成要求の暗号アルゴリズムに対応していない場合には、要求された署名生成処理をハッシュ演算と暗号演算に分解可能か確認する。分解可能な場合には、最初にハッシュ演算をICカード補完ドライバで実施し、次に、その実行結果に対して暗号演算を行うようにICカード13に命令して署名値を得る。そして、得られた署名値を電子署名生成部22へ応答する。
【0031】
なお、図2に示す電子署名生成装置11は、例えば、図3に示すような、CPU31と、メモリ32と、ハードディスク等の外部記憶装置33と、ネットワーク15を介して他装置と通信を行うための通信装置34と、キーボードやマウス等の入力装置35と、モニタやプリンタ等の出力装置36と、CD−ROM等の可搬性を有する記憶媒体38から情報を読み取る読取装置37と、これらの各装置間のデータ送受を行う内部通信線30とを備えた、一般的な電子計算機(コンピュータ)上に構築できる。
【0032】
そして、CPU31が外部記憶装置33からメモリ32上にロードされた所定のプログラムを実行することにより、上述の各処理部を実現できる。すなわち、通信部20dは、CPU31が通信装置34を利用することにより、入出力部20cは、CPU31が入力装置35や出力装置36や読取装置37を利用することにより、そして、記憶部20bは、CPU31がメモリ32や外部記憶装置33や可搬性を有する記憶媒体38を利用することにより実現される。また、処理部20aは、CPU31のプロセスとして実現される。
【0033】
上記所定のプログラムは、予め外部記憶装置33に格納されていても良いし、上記電子計算機が利用可能な記憶媒体38に格納されており、読み取り装置37を介して、必要に応じて読み出され、あるいは、上記電子計算機が利用可能な通信媒体であるネットワークまたはネットワーク上を伝搬する搬送波を利用する通信装置34と接続された他の装置から、必要に応じてダウンロードされて、外部記憶装置33に導入されるものであっても良い。
【0034】
次に図4を用いて、電子署名生成装置11の設定情報保持部28に記憶されている、ICカードドライバ管理リスト40を説明する。ICカードドライバ管理リスト40は、ICカード管理部23が、ICカードドライバの初期インストールや更新インストールを実行する際に編集される。また、ICカードドライバ管理リスト40は、ユーザにより、入出力部20cを介して、編集される。
【0035】
各々のICカードドライバについて、番号41の列に、ICカードドライバを識別する番号を、ICカード42の列に、ICカードを識別する名前を、ICカードドライバファイル名43の列に、ICカードドライバのフルパスを、バージョン44の列にICカードドラバのバージョンを記載する。また、ネットワーク15に接続されたICカードドライバ提供装置14がICカードドライバを公開している場合には、ダウンロードサイト45の列に、ダウンロードサイトのアドレスを記載する。さらに、インストール日時46の列に、ICカードドライバを初期インストールあるいは更新インストールした日時を記載する。
【0036】
次に図5を用いて、電子署名生成装置11の設定情報保持部28に記憶されている、暗号アルゴリズムリスト50を説明する。暗号アルゴリズムリスト50は、ICカードドライバの初期インストールや更新インストールを実行する際に、ICカード管理部23により、編集される。また、暗号アルゴリズムリスト50は、ユーザがICカードドライバ提供装置14などからICカード13が実行可能な暗号アルゴリズムリストを取得した際に、ユーザにより、入出力部20cを介して、編集される。
【0037】
暗号アルゴリズム51の列に、ハッシュ演算のアルゴリズム(SHA−1、SHA−256、SHA−384、SHA−512)や、暗号演算のアルゴリズム(RSA、DSA、ECDSA)や、ハッシュ演算と暗号演算を併せたアルゴリズム(sha1withRSAEncryption、sha256withRSAEncryption、sha384withRSAEncryption、sha512withRSAEncryption、dsaWithSha1、ecdsaWithSha1)を記載する。さらに、ICカード52の列に、各々のICカード13において、実行可能な暗号アルゴリズムの項目に○を記載する。
【0038】
次に、図6において、ユーザが、入出力部20cを介して、ICカード13に付属するICカードドライバを初期インストールや更新インストールする際の、ICカード管理部23の処理について示す。
【0039】
電子署名生成装置11のICカード管理部23は、ICカードドライバ保持部27に、新たなICカードドライバがインストールされたことを検知する(S101)と、ICカードドライバ管理リスト40を作成し、設定情報保持部28に保存する(S102)。次に、ICカード管理部23は、新たにインストールされたICカード13にアクセスし、ICカード13やICカード13に付属するICカードドライバが、実行可能な暗号アルゴリズムのリストを取得する(S103)。さらに、ICカード管理部23は、実行可能な暗号アルゴリズムを暗号アルゴリズムリスト50に記載し、設定情報保持部28に保存する(S104)。なお、S102やS104において、すでに検知したICカードドライバの情報が、ICカードドライバ管理リスト40や暗号アルゴリズムリスト50に記載されている場合は、記載内容を上書きする。
【0040】
次に、図7において、ICカード管理部23が、予め設定した時間毎にインストールしたICカードドライバの更新を確認する処理について示す。
【0041】
電子署名生成装置11のICカード管理部23は、ICカードドライバ管理リスト40の番号41の最初の行を読み込み(S201)、S201で選択した行に記載されているインストール日時46を取得する(S202)。ICカード管理部23は、S202で取得したインストール日時46と現在時刻を比較し、予め設定した更新間隔を経過していない場合には(S203でNo)、S210へ進む。
【0042】
一方、予め設定した更新間隔を経過している場合には(S203でYes)、ICカード管理部23は、ICカードドライバ管理リスト40において、S201で選択した番号41の行に、ダウンロードサイト45が記載されているかを確認する。ダウンロードサイト45が記載されていない場合には(S204でNo)、ICカード管理部23は、入出力部20cを介して、ICカードドライバの更新を確認する旨のメッセージを電子署名生成装置11の出力装置36に表示し(S205)、S210へ進む。なお、ユーザがメッセージを確認し、ICカードドライバを更新すると、図6で示した処理を実施する。
【0043】
一方、ダウンロードサイト45が記載されている場合には(S204でYes)、ICカード管理部23は、記載されているアドレスに基づいて、ICカードドライバ提供装置14にアクセスする(S206)。ICカードドライバ提供装置14で提供されているICカードドライバのバージョンと、S201で選択した番号41の行に記載されているバージョン44が一致する場合には(S207でNo)、S210へ進む。
【0044】
一方、ICカードドライバ提供装置14で提供されているICカードドライバのバージョンが、S201で選択した番号41の行に記載されているバージョン44より新しい場合には(S207でYes)、ICカード管理部23は、通信部20dを介して、ICカードドライバをダウンロードし、ICカードドライバ保持部27にインストールする。さらに、ICカード管理部23は、ICカードドライバ管理リスト40において、S201で選択した番号41の行に記載されているバージョン44とインストール日時46を更新する(S208)。
【0045】
次に、ICカード管理部23は、S208で更新インストールしたICカード13にアクセスし、ICカード13やICカード13に付属するICカードドライバが実行可能な暗号アルゴリズムのリストを取得し、暗号アルゴリズムリスト50において、S201で選択した番号41に該当するICカード52の列を更新する(S209)。
【0046】
次に、ICカードドライバ管理リスト40において、最後の行まで達しているか確認し、最後まで達している場合には(S210でYes)、処理を終了する。
【0047】
一方、最後の行まで達していない場合には(S210でNo)、S201に進み、ICカードドライバ管理リスト40の次の行を読み込む。
【0048】
次に、図8、図9、図10を用いて、電子署名生成装置11とICカード13において、ユーザが入出力部20cを介して選択した電子文書に対して、電子署名を生成する処理について説明する。
【0049】
最初に、図8において、電子署名生成部22とICカード管理部23が実行する処理について示す。
【0050】
電子署名生成部22は、ユーザが選択した電子文書を電子文書保持部25から取得する(S301)。署名生成処理をハッシュ演算と暗号演算に分けて実施しない場合には(S302でNo)、S307へ進む。
【0051】
一方、電子署名生成部22が、署名生成処理をハッシュ演算と暗号演算に分けて実施する場合には(S302でYes)、まず、ハッシュ演算を行うために、電子署名生成部22がICカード管理部23に対してハッシュ値生成要求を送信する(S303)。ハッシュ値生成要求には、電子文書のデータとハッシュ演算のための暗号アルゴリズムを含む。ICカード管理部23は、ハッシュ値生成要求を受信すると(S304)、ICカード管理部23あるいはICカード13でハッシュ演算処理を実施する。次に、ハッシュ演算処理の実行結果をもとに、ハッシュ値生成応答を送信する(S305)。電子署名生成部22は、ハッシュ値生成応答を受信する(S306)。なお、ハッシュ演算の詳細な処理については、図9で説明する。
【0052】
次に、電子署名値を生成するために、電子署名生成部22は、ICカード管理部23に対して署名生成要求を送信する。署名生成要求には、署名対象データと署名生成のための暗号アルゴリズムが含まれる。なお、署名生成処理をハッシュ演算と暗号演算に分けて実施する場合には(S302でYes)場合には、署名対象のデータはS306で受信した電子文書のハッシュ値であり、また、指定する暗号アルゴリズムは、暗号演算の暗号アルゴリズムとなる。一方、署名生成処理をハッシュ演算と暗号演算に分けて実施しない場合には(S302でNo)、署名対象のデータは電子文書全体であり、また、指定する暗号アルゴリズムは、ハッシュ演算と暗号演算を併せた暗号アルゴリズムとなる。
【0053】
ICカード管理部23は、署名生成要求を受信すると(S308)、署名生成処理を実施する。次に、署名生成処理の実行結果をもとに、署名生成応答を送信する(S309)。電子署名生成部22は、署名生成応答を受信する(S310)。なお、署名生成処理の詳細な処理については、図9で説明する。
【0054】
次に、図9において、電子署名生成装置11のICカード管理部23とICカードアクセス部24と、ICカード13が実行するハッシュ演算の処理について示す。
【0055】
最初に、ICカード管理部23は、S304で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにICカードが対応しているか確認する。具体的には、暗号アルゴリズムリスト50において、暗号アルゴリズム51の中でハッシュ値生成要求に含まれる暗号アルゴリズムに該当する行と、ICカード52の中で署名生成処理を実行するICカードに該当する列を検索し、「○」となっているか確認する(S401)。
【0056】
S304で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにICカードが対応している場合には(S401でYes)、ICカードドライバ保持部27に保存されているICカードドライバを利用して、ICカード13固有のハッシュ値生成コマンドを作成し(S402)、ICカードアクセス部24へ送信する(S403)。
【0057】
ICカードアクセス部24は、ICカード管理部23からのハッシュ値生成コマンドを受信する(S404)。ハッシュ演算をICカードで実行する場合には(S405でYes)、ICカードリーダライタ12を介して、ICカード13へハッシュ値生成を命令し、ICカード13でハッシュ演算を実行する(S406)。一方、ハッシュ演算をICカードで実行しない場合には(S405でNo)、ICカードドライバを利用してハッシュ演算を実行する(S407)。ICカードアクセス部24は、ハッシュ演算結果であるハッシュ値をICカード管理部23へ送信する(S408)。
【0058】
ICカード管理部23は、ICカードアクセス部24からハッシュ値を受信すると(S409)、S411へ進む。
【0059】
一方、S304で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにICカードが対応していない場合には(S401でNo)、ICカード補完ドライバ保持部26に保存されているICカード補完ドライバを利用してハッシュ演算を実行する(S410)。
【0060】
ICカード管理部23は、S409で受信した、あるいは、S410で生成したハッシュ値を含むハッシュ値生成応答を作成する(S411)。
【0061】
なお、ICカードリーダライタ12は、ICカードアクセス部24とICカード13の通信を制御する(S400)。
【0062】
次に、図10において、電子署名生成装置11のICカード管理部23とICカードアクセス部24と、ICカード13が実行する署名生成処理について示す。
【0063】
ICカード管理部23は、S308で受信した署名生成要求に含まれる暗号アルゴリズムにICカードが対応しているか確認する。具体的には、暗号アルゴリズムリスト50において、暗号アルゴリズム51の中で署名生成要求に含まれる暗号アルゴリズムに該当する行と、ICカード52の中で署名生成処理を実行するICカードに該当する列を検索し、「○」となっているか確認する(S501)。
【0064】
S308で受信した署名生成要求に含まれる暗号アルゴリズムにICカードが対応していない場合には(S501でNo)、ICカード管理部23は、前記暗号アルゴリズムにハッシュ演算と暗号演算を両方共含むかを確認する(S502)。ICカード管理部23では、秘密鍵利用した暗号演算を補完できないため、暗号演算のみの場合は(S502でNo)の場合は、エラー値を含んだ署名生成応答を作成する(S503)。
【0065】
一方、ハッシュ演算と暗号演算を両方共含む場合には(S502でYes)、ICカード管理部23は、暗号アルゴリズムをハッシュ演算と暗号演算に分解する。分解した暗号演算の暗号アルゴリズムがICカード13に対応しているか、S501と同様に確認する(S504)。例えば、暗号アルゴリズムがsha256withRSAEncryptionであれば、SHA−256とRSAに分解し、RSAにICカードが対応しているか確認する。分解した暗号演算の暗号アルゴリズムにICカード13が対応していない場合には(S504でNo)、ICカード管理部23は、S503へ進む。
【0066】
一方、分解した暗号演算の暗号アルゴリズムにICカード13が対応している場合には(S504でYes)、ICカード管理部23は、ICカード補完ドライバを用いて、分解したハッシュ演算を実行する(S505)。さらに、ICカード管理部23は、S505で生成したハッシュ値を署名対象とし、S504で分解した暗号演算の暗号アルゴリズムによる署名コマンドを作成する(S506)。
【0067】
S308で受信した署名生成要求に含まれる暗号アルゴリズムにICカードが対応している場合には(S501でYes)、ICカード管理部23は、ICカードドライバ保持部27に保存されているICカードドライバを利用して、S308に含まれる署名対象データを署名対象とし、S308に含まれる暗号アルゴリズムによる署名コマンドを作成する(S507)。
【0068】
ICカード管理部23は、S506あるいはS507で生成した署名コマンドをICカードアクセス部24へ送信する(S508)。
【0069】
ICカードアクセス部24は、ICカード管理部23からの署名コマンドを受信すると(S509)、ICカードリーダライタ12を介して、ICカード13へ署名コマンドを送信する(S510)。次に、ICカード13は、ICカードアクセス部24から署名コマンドを受信すると(S511)、署名コマンドに含まれる暗号アルゴリズムで署名生成を実行する(S512)。さらに、ICカード13は、ICカードリーダライタ12を介して、S512で生成した署名値をICカードアクセス部24へ送信する(S513)。次に、ICカードアクセス部24は、ICカード13から署名値を受信すると(S514)、ICカード管理部23へ送信する(S515)。
【0070】
ICカード管理部23は、ICカードアクセス部24から署名値を受信すると(S516)、署名値を含んだ署名生成応答を作成する(S517)。
【0071】
以上、本発明の実施形態について詳述したが、上記実施形態によれば、署名生成で利用する暗号方式を柔軟に拡張できる電子署名生成方法、これを実施する電子署名生成装置及び電子署名生成プログラムを提供することができる。
【0072】
また、本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【0073】
11・・・電子署名生成装置、12・・・ICカードリーダライタ、13・・・ICカード、14・・・ICカードドライバ提供装置、15・・・ネットワーク、20a・・・処理部、20b・・・記憶部、20c・・・入出力部、20d・・・通信部、21・・・電子文書生成部、22・・・電子署名生成部、23・・・ICカード管理部、24・・・ICカードアクセス部、25・・・電子文書保持部、26・・・ICカード補完ドライバ保持部、27・・・ICカードドライバ保持部、28・・・設定情報保持部、30・・・内部通信線、31・・・CPU、32・・・メモリ、33・・・外部記憶装置、34・・・通信装置、35・・・入力装置、36・・・出力装置、37・・・読取装置、38・・・可搬性を有する記憶媒体。

【特許請求の範囲】
【請求項1】
電子署名生成装置により、電子署名を実施する電子文書の情報、あるいは、電子署名を実施する電子文書を一定の長さに圧縮した情報、さらに、電子署名に利用する暗号アルゴリズムを含んだ、電子署名生成要求を生成し、前記電子署名生成要求を、ICカードリーダライタを介して接続されているICカードに送信して、前記ICカードから電子署名生成応答を受信し、電子署名生成処理を実施する、電子署名生成方法であって、
前記電子署名生成装置は、ICカード管理情報と、前記ICカードの機能を補完するドライバを記憶する記憶部を具備し、
前記ICカード管理情報に基づいて、電子署名を実施する文書を一定の長さに圧縮した情報を、電子署名生成装置で実施するか、前記ICカードで実施するか判定する処理と、
前記判定結果に基づき、前記ICカードの機能を補完するドライバを利用して、前記電子署名を実施する文書を一定の長さに圧縮した情報を生成する処理と、
を実施する、
ことを特徴とする電子署名生成方法。
【請求項2】
前記ICカード管理情報は、前記ICカードに付属するICカードドライバに関する情報及び前記ICカードが実行可能な暗号アルゴリズムに関する情報である、
ことを特徴とする請求項1に記載の電子署名生成方法。
【請求項3】
前記電子署名生成装置により、
前記ICカード導入時に、前記ICカードリーダライタを介して、前記ICカードに付属するICカードドライバに関する情報及び前記ICカードが実行可能な暗号アルゴリズムを取得し、前記ICカード管理情報を作成する処理を実施する、
ことを特徴とする請求項2に記載の電子署名生成方法。
【請求項4】
前記電子署名生成装置により、
前記ICカードを導入してから一定期間経過後に、ネットワークを介してICカードドライバ提供装置に接続し、前記ICカードに付属するICカードドライバが更新されているか確認する処理を実施する、
ことを特徴とする請求項3に記載の電子署名生成方法。
【請求項5】
前記電子署名生成装置により、
ネットワークを介して前記ICカード提供装置に接続して、最新のICカードドライバを取得し、前記ICカードに付属するICカードドライバに関する情報及び前記ICカードが実行可能な暗号アルゴリズムを取得し、前記ICカードドライバ管理情報を更新する処理を実施する、
ことを特徴とする請求項4に記載の電子署名生成方法。
【請求項6】
コンピュータに、請求項1乃至請求項5の何れか1項に記載の電子署名生成方法を実行させる電子署名生成プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−98808(P2013−98808A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−240761(P2011−240761)
【出願日】平成23年11月2日(2011.11.2)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】