情報処理装置、情報処理方法及びコンピュータプログラム
【課題】証明書の有効期限のみならず、証明書で使われているアルゴリズムや公開鍵の利用期限も考慮して、証明書をより安全に利用する情報処理装置を提供する。
【解決手段】情報処理装置は、外部装置から電子証明書を取得する。取得した電子証明書で使われている公開鍵やアルゴリズムの利用期限を取得する。そして、電子証明書の有効期限と公開鍵やアルゴリズムの利用期限とを比較する。電子証明書の有効期限が公開鍵の利用期限よりも短い場合、取得した電子証明書を記憶手段に登録する。
【解決手段】情報処理装置は、外部装置から電子証明書を取得する。取得した電子証明書で使われている公開鍵やアルゴリズムの利用期限を取得する。そして、電子証明書の有効期限と公開鍵やアルゴリズムの利用期限とを比較する。電子証明書の有効期限が公開鍵の利用期限よりも短い場合、取得した電子証明書を記憶手段に登録する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子証明書を利用する情報処理装置に関するものである。
【背景技術】
【0002】
暗号化通信などで用いられる電子証明書(以下、証明書)には、証明書の発行者、証明書の有効期限、公開鍵、その証明者または公開鍵を作るのに用いられたアルゴリズムに関するアルゴリズム情報が含まれている。
情報処理装置は、利用する証明書の有効期限が過ぎているか否か、または証明書が失効しているか否かを判断して、証明書の有効期限が過ぎている場合や証明書が失効している場合には、証明書の利用を制限していた(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−274060
【発明の概要】
【発明が解決しようとする課題】
【0004】
証明書で使われているハッシュアルゴリズムや署名アルゴリズムは、証明書の改ざんを防止し、証明書を安全に利用できるよう設計されている。代表的な署名アルゴリズムであるRSA、DSA、ECDSAなどは、素因数分解問題や離散対数問題の困難性に基づいて安全性が保たれており、証明書で使われている公開鍵からは秘密鍵を求めることが困難である。
【0005】
しかしながら、計算機の性能の向上や数学的進歩などの理由により、証明書で使われるアルゴリズムは、時間の経過とともに、安全性が低下する。例えば、NIST(アメリカ国立標準技術研究所)は、世の中で利用されている暗号アルゴリズムに関してガイドラインを定めており、アルゴリズムや鍵サイズごとに安全性を確保できるとされている期間を報告している。この期間を過ぎて、そのアルゴリズムや鍵サイズを利用し続けると、証明書の偽造や秘密鍵の漏洩が起きる可能性が高くなる。
【0006】
従来、情報処理装置は、利用する証明書の有効期限が過ぎているか否かを判断して、証明書の有効期限が過ぎていなければ、その証明書を利用していた。その結果、証明書で使われているアルゴリズムや公開鍵の利用期限が過ぎているが、その証明書の有効期限が過ぎていない場合、その証明書を使い続けることがあった。つまり、証明書の有効期限はチェックしていたものの、その証明書で使われるアルゴリズムや公開鍵の利用期限はチェックしていなかった。
【0007】
例えば、証明書で使われているアルゴリズムの利用期限が2010であっても、証明書の有効期限2015年であれば、2015年までその証明書を使い続ける可能性があった。
世の中には、証明書を作成可能なソフトウェアがいろいろ存在し、個人が証明書や鍵ペア(証明書と秘密鍵のペア)を作成することが可能である。個人が証明書や鍵ペアを作成する場合、アルゴリズムや公開鍵の利用期限を考慮して証明書や鍵ペアの有効期限を決めているとは限らない。ユーザのなかには、証明書や鍵ペアの更新が煩わしいと思い、有効期限が長期間である証明書や鍵ペアを作成するユーザも存在するかもしれない。そのような証明書を外部装置から取得して利用することは、証明書の偽造や秘密鍵の漏洩の可能性を高める。
【0008】
そこで、本発明では、証明書の有効期限のみならず、証明書で使われているアルゴリズムや公開鍵の利用期限も考慮して、証明書をより安全に利用する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明に係る情報処理装置は、電子証明書を外部装置から取得する第1の取得手段と、前記第1の取得手段で取得した電子証明書で使われている公開鍵の利用期限を取得する第2の取得手段と、前記第1の取得手段で取得した電子証明書の有効期限と前記第2の取得手段で取得した公開鍵の利用期限とを比較する比較手段とを有することを特徴とする。
【0010】
また、本発明に係る情報処理装置は、電子証明書を外部装置から取得する第1の取得手段と、前記第1の取得手段で取得した電子証明書で使われているアルゴリズムの利用期限を取得する第2の取得手段と、前記第1の取得手段で取得した電子証明書の有効期限と前記第2の取得手段で取得した公開鍵の利用期限とを比較する比較手段とを有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、証明書の有効期限のみならず、証明書で使われているアルゴリズムや公開鍵の利用期限も考慮して、証明書をより安全に利用することが可能である。
【図面の簡単な説明】
【0012】
【図1】システムの構成を示す図である。
【図2】証明書をインポートする情報処理を示すフローチャートである。
【図3】証明書の有効性をチェックする情報処理を示すフローチャートである。
【図4】証明書の安全性をチェックする情報処理を示すフローチャートである。
【図5】ライフタイムテーブル記憶部5に記憶されているライフタイムテーブルを示す図である。
【図6】S210で表示される確認画面の一例を示す図である。
【図7】鍵ペアをインポートする情報処理を示すフローチャートである。
【図8】S708で表示される確認画面の一例を示す図である。
【図9】鍵ペアをインポートする情報処理を示すフローチャートである。
【図10】S810で表示される確認画面の一例を示す図である。
【図11】証明書の一例を示す図である。
【図12】期限の関係を示す図である。
【発明を実施するための形態】
【0013】
図面を参照して、本発明に係る実施形態を説明する。ただし、この実施形態はあくまでも例示であり、本発明の範囲がこれにのみに限定されるという趣旨ではない。
【0014】
下記の説明では、期限の比較がある。期限T_aが期限T_bより短いとは、図12に示すような関係をいう。また、この関係をT_a<T_bと表現する。
【0015】
図1は、本発明に係るシステムの構成を示す図である。情報処理装置1は、電子証明書(以下、証明書)を利用して、ネットワーク上で暗号化通信を実行可能である。情報処理装置1の一例として、プリンタ、複合機、スキャナ、パーソナルコンピュータ(PC)、サーバコンピュータなどが挙げられる。
情報処理装置1は、入出力部2、通信部3、鍵記憶部4、ライフタイムテーブル記憶部5、証明書記憶部6、情報記憶部7、内蔵時計8及び制御部9を有する。
入出力部2は、いわゆるユーザインターフェースであり、様々な情報を表示したり、ユーザからの様々な指示を入力したりする。入出力部2は、ディプレイ装置、キーボード、マウス、タッチパネルなどのハードウェアによって構成される。
通信部3は、有線LAN、無線LAN、USBなどのネットワークを介して、外部装置と通信する。通信部3は、証明書、証明書失効リスト(Certificate Revocation List:CRL)、鍵ペアなどを外部装置からインポートすることも可能である。
鍵記憶部4は、利用可能な鍵ペアを記憶する。ライフタイムテーブル記憶部5は、ライフタイムテーブルを記憶する。証明書記憶部6は、利用可能な証明書を記憶する。鍵記憶部4、ライフタイムテーブル記憶部5及び証明書記憶部6は、不揮発性メモリやハードディスクなどのハードウェアによって構成される。
【0016】
なお、鍵記憶部4、ライフタイムテーブル記憶部5及び証明書記憶部6は、別々のハードウェアによって構成されていても、同一のハードウェアによって構成されていてもよい。鍵記憶部4、ライフタイムテーブル記憶部5及び証明書記憶部6に記憶されている情報は、制御部9によって登録され、更新され、削除される。
【0017】
情報記憶部7は、情報処理装置1を制御するコンピュータプログラムを記憶したり、情報処理で生成される情報を記憶したり、情報処理で使用される変数の値を記憶したりする。情報記憶部7は、RAM、ROM、ハードディスクなどのハードウェアによって構成される。
内蔵時計8は、現在の日時を示す日時情報を提供する。
制御部9は、情報処理装置1の全体を制御する。制御部9はCPUやマイクロプロセッサなどのハードウェアによって構成される。制御部9は、情報記憶部7に記憶されているプログラムに従って様々な情報処理を実行する。
【0018】
図11は、証明書の一例を示す図である。図11は証明書の一例であり、証明書の種類によっては図11に記載されている情報が証明書に含まれることがある。
【0019】
証明書のインポートについて説明する。インポート処理では、X.509などの証明書をインポートしても、PKCS#12などの鍵ペアをインポートしてもよい。鍵ペアのインポートは第2の実施形態として説明する。証明書は自己署名証明書とする。
情報処理装置1はセキュリティポリシーに応じた制御を実行することが可能である。本実施形態では、下記のようなセキュリティポリシーが情報処理装置1にて設定可能である。
ノーマルモードでは、インポートすべき証明書の有効性のチェックのみを行う。つまり、証明書が失効状態であるか否か、証明書の有効期限が切れているか否かをチェックする。
【0020】
第1のセキュアモードでは、証明書の有効性のチェックに加えて、証明書の安全性のチェックを行い、安全性のチェックの結果がNGであった場合、証明書のインポートを拒否する。証明書の安全性のチェックについては後述する。
第2のセキュアモードでは、証明書の有効性のチェックと証明書の安全性のチェックとを行い、安全性のチェックの結果がNGであった場合、証明書をインポートするかどうかをユーザに確認する。
ユーザは入出力部2を介して、ノーマルモード、第1のセキュアモードまたは第2のセキュアモードの選択を指示する。
【0021】
図2は、証明書をインポートする情報処理を示すフローチャートである。制御部9は、図2のフローチャートに基づくプログラムを実行することにより、インポート処理を実現する。
制御部9は、証明書のインポート要求があったかどうかを判断する(S201)。ユーザは、証明書のインポートを希望する場合、入出力部2を介して、証明書のインポートを要求する。すると、通信部3は証明書を外部装置から取得する。外部装置は、パーソナルコンピュータやサーバコンピュータなどのコンピュータを含むほか、USBメモリやファイルサーバなどの外部記憶装置も含む。
また、ユーザは自分のPCを介して証明書のインポートを要求することもできる。この場合には、PCは、証明書のインポートの要求を情報処理装置1に送信するとともに、証明書を情報処理装置1に送信する。
外部装置から取得された証明書は一旦情報記憶部7に記憶される。
制御部9は、インポート要求があったと判断すると、証明書の有効性のチェックを行う(S202)。
【0022】
図3は、証明書の有効性をチェックする情報処理を示すフローチャートである。制御部9は、図3のフローチャートに基づくプログラムを実行することにより、証明書の有効性のチェックを行う。
まず、制御部9は、証明書が失効しているかどうかを判断する(S301)。証明書の失効状態は、予め情報記憶部7に記憶していたCRLで確認することができる。CRLは認証局やCRLサーバによって発行され、情報処理装置1はそれを情報記憶部7に記憶しておく。証明書が失効していることがCRLに記述されていれば、制御部9は証明書が失効していると判断する。
証明書の失効状態は、CRLを用いるほか、Online Certificate Status Protocol(OCSP)を用いても確認することができる。この場合、通信部3はOCSPを用いてOCSPサーバと通信し、証明書が失効しているか否かをOCSPサーバに問い合わせる。
制御部9は、証明書が失効していると判断した場合には、証明書が失効していることをユーザに通知すべく、その旨のメッセージを入出力部2に表示させる(S302)。または、制御部9は、証明書が失効していることを示すメッセージを外部装置に送信するよう通信部3を制御する。そして、制御部9は、変数validityにNGをセットする(S303)。
制御部9は、証明書が失効していないと判断した場合には、証明書の有効期限T_certと現在日時T_nowとを比較する(S304)。制御部9は、現在日時T_nowを内蔵時計8から取得する。以下、T_certは、インポート要求の対象となっている証明書の有効期限を示す。
現在日時T_nowが証明書の有効期限T_certを過ぎている場合には、制御部9は、証明書の有効期限が切れていることをユーザに通知すべく、その旨のメッセージを入出力部2に表示させる(S305)。または、制御部9は、証明書が失効していることを示すメッセージを外部装置に送信するよう通信部3を制御する。そして、制御部9は、変数validityにNGをセットする(S303)。
現在日時T_nowが証明書の有効期限T_certを過ぎていない場合には、制御部9は、変数validityにOKをセットする(S306)。
図3のフローチャートでは、証明書の失効状態を確認してから、証明書の有効期限を確認した。しかしながら、証明書の有効期限を確認してから、証明書の失効状態を確認してもよい。
【0023】
図2のフローチャートの説明に戻る。
【0024】
制御部9は、証明書の有効性をチェックした後、変数validityがOKであるかを判断する(S203)。変数validityがNGであれば、制御部9は証明書のインポートを拒否する(S204)。その結果、証明書は証明書記憶部6に登録されない。
変数validityがOKであれば、制御部9は、現在設定されているセキュリティポリシーがノーマルモードであるかを判断する(S205)。セキュリティポリシーがノーマルモードである場合には、制御部9は、証明書のインポート処理を実行する(S206)。インポート処理では、制御部9は証明書を証明書記憶部6に格納して、その証明書を通信で使用できるようにする。
セキュリティポリシーがノーマルモードでない場合には、制御部9は、証明書の安全性のチェックを行う(S207)。
図4は、証明書の安全性をチェックする情報処理を示すフローチャートである。制御部9は、図4のフローチャートに基づくプログラムを実行することにより、証明書の安全性のチェックを行う。
【0025】
まず、制御部9は、証明書の有効期限T_certと、その証明書に利用されているハッシュアルゴリズムの利用期限T_hashとを比較する(S401)。ハッシュアルゴリズムには、SHA1、SHA224、SHA256などがあり、それぞれは異なる利用期限を有している。
【0026】
図5は、ライフタイムテーブル記憶部5に記憶されているライフタイムテーブルを示す図である。ライフタイムテーブルとは、署名アルゴリズムやハッシュアルゴリズムがいつまで安全に利用することができるかを示す情報を格納したテーブルである。テーブルに格納されている利用期限以降には、対応する署名アルゴリズムやハッシュアルゴリズムを使って暗号化された情報が解読される可能性が高くなる。ライフタイムテーブルは、NISTなど信頼のおける機関によって公開されている情報を基に生成される。
なお、本実施形態では、図5のライフタイムテーブルにおいて、「〜2010年」とは「〜2010年12月31日」を意味する。
【0027】
ライフタイムテーブルや証明書は、情報処理装置の管理者など所定の権限を有するユーザによって登録や上書きが可能である。また、ライフタイムテーブルは、外部サーバから定期的に配信される更新情報に基づいて更新される。あるいは、ユーザからの更新要求に従って、情報処理装置が外部サーバから更新情報を取得し、取得した更新情報に基づいてライフタイムテーブルを更新する。あるいは、証明書や鍵ペアのインポート要求があるのに応じて、情報処理装置が外部サーバから更新情報を取得し、取得した更新情報に基づいてライフタイムテーブルを更新する。
【0028】
制御部9は、ライフタイムテーブルを参照して、証明書に利用されているハッシュアルゴリズムの利用期限T_hashを取得し、T_certがT_hashよりも短いまたは等しいかどうかを判断する(S401)。
証明書の有効期限T_certがハッシュアルゴリズムの利用期限T_hashよりも短いまたは等しい場合には、制御部9は、証明書の有効期限T_certと、その証明書に含まれる公開鍵の利用期限T_pkとを比較する(S402)。公開鍵の利用期限T_pkは、その公開鍵を作るのに使われた署名アルゴリズムと公開鍵のサイズとによって決まる。図5のライフタイムテーブルによれば、RSAによって生成された1024ビットの公開鍵の利用期限は2010年である。
【0029】
制御部9は、ライフタイムテーブルを参照して、証明書に含まれる公開鍵の利用期限T_pkを取得し、証明書の有効期限T_certが公開鍵の利用期限T_pkよりも短いまたは等しいかどうかを判断する(S402)。
証明書の有効期限T_certが公開鍵の利用期限T_pkよりも短いまたは等しい場合には、制御部9は、変数securityにOKをセットする(S403)。
証明書の有効期限T_certがハッシュアルゴリズムの利用期限T_hashより長い場合、または証明書の有効期限T_certが公開鍵の利用期限T_pkより長い場合には、制御部9は、変数securityにNGをセットする(S404)。
証明書に利用されているハッシュアルゴリズムは、証明書内のsignatureの情報を参照することで判別可能である。証明書に含まれている公開鍵の種類は、証明書内のsubjectPublicKeyinfoの情報を参照することで判別可能である。
【0030】
図4のフローチャートでは、証明書の有効期限とハッシュアルゴリズムの利用期限との比較を行ったあとで、証明書の有効期限と公開鍵の利用期限との比較をおこなったが、これらの比較の順番を逆にしてもよい。
【0031】
図2のフローチャートの説明に戻る。
制御部9は、証明書の安全性をチェックした後、変数securityがOKであるかを判断する(S208)。変数securityがOKであれば、制御部9はインポート処理を実行する(S206)。
変数securityがNGであれば、制御部9は、現在設定されているセキュリティポリシーが第1のセキュアモードであるかを判断する(S209)。セキュリティポリシーが第1のセキュアモードであれば、制御部9は証明書のインポートを拒否する(S204)。その結果、証明書は証明書記憶部6に登録されない。
セキュリティポリシーが第2のセキュアモードであれば、制御部9は、安全性に関する警告をするために、確認画面を入出力部2に表示させる(S210)。
【0032】
図6は、S210で表示される確認画面の一例を示す図である。この確認画面では、証明書の安全性を有効期限まで保障できないことを示すとともに、証明書のインポートを行うか否かをユーザに確認する。
ユーザが証明書の詳細を確認したい場合には、ボタン601を押下する。すると、制御部9は、証明書に関する詳細情報を入出力部2に表示させる。ユーザが証明書のインポートをしたい場合には、ボタン602を押下する。すると、制御部9は、変数importにOKをセットする。ユーザが証明書のインポートをキャンセルしたい場合には、ボタン603を押下する。すると、制御部9は、変数importにNGをセットする。
制御部9は、変数importがOKである否かを判断する(S211)。変数importがOKであれば、制御部9は証明書のインポート処理を実行する(S206)。変数importがNGであれば、制御部9は証明書のインポートを拒否する(S204)。
【0033】
下記では、本発明に係る第2の実施形態を説明する。第2の実施形態では、情報処理装置1は秘密鍵と証明書とからなる鍵ペアをインポートする。鍵ペアの一例としてはPKCS#12が挙げられる。証明書は自己署名証明書である。
【0034】
図7は、鍵ペアをインポートする情報処理を示すフローチャートである。制御部9は、図7のフローチャートに基づくプログラムを実行することにより、インポート処理を実現する。
制御部9は、鍵ペアのインポート要求があったかどうかを判断する(S701)。ユーザは、鍵ペアのインポートを希望する場合、入出力部2を介して、鍵ペアのインポートを要求する。すると、通信部3は鍵ペアを外部装置から取得する。外部装置は、パーソナルコンピュータやサーバコンピュータなどのコンピュータを含むほか、USBメモリやファイルサーバなどの外部記憶装置も含む。
また、ユーザは自分のPCを介して鍵ペアのインポートを要求することもできる。この場合には、PCは、鍵ペアのインポートの要求を情報処理装置1に送信するとともに、鍵ペアを情報処理装置1に送信する
制御部9は、インポート要求があったと判断すると、鍵ペアを解析し、鍵ペアに含まれている証明書の有効性のチェックを行う(S702)。S702では、制御部9は図3のフローチャートに基づく情報処理を実行する。
制御部9は、証明書の有効性をチェックした後、変数validityがOKであるかを判断する(S703)。変数validityがNGであれば、制御部9は鍵ペアのインポートを拒否する(S704)。その結果、鍵ペアは鍵記憶部4に登録されない。
変数validityがOKであれば、制御部9は、鍵ペアに含まれている証明書の安全性のチェックを行う(S705)。S705では、制御部9は図4のフローチャートに基づく情報処理を実行する。
制御部9は、証明書の安全性をチェックした後、変数securityがOKであるかを判断する(S706)。変数securityがOKであれば、制御部9は鍵ペアのインポート処理を実行する(S707)。インポート処理では、制御部9は鍵ペアを鍵記憶部4に格納して、その鍵ペアを通信で使用できるようにする。
変数securityがNGであれば、制御部9は確認画面を入出力部2に表示させる(S708)。
【0035】
図8は、S708で表示される確認画面の一例を示す図である。この確認画面では、鍵ペアに含まれている証明書の有効期限を短縮して安全な証明書を作成し直すかどうかをユーザに問い合わせる。ユーザは証明書の有効期限の変更を希望する場合、ボタン801を押下する。すると、制御部9は変数C_validityにOKをセットする。ユーザは証明書の有効期限の変更を希望しない場合、ボタン802を押下する。すると、制御部9は変数C_validityにNGをセットする。
制御部9は、変数C_validityがOKであるかを判断する(S709)。変数C_validityがNGである場合、制御部9は鍵ペアのインポートを拒否する(S704)。
変数C_validityがOKである場合には、制御部9は証明書のハッシュアルゴリズムの利用期限T_hashと、証明書の公開鍵の利用期限T_pkとを比較する(S710)。制御部9は、ライフタイムテーブルを参照して、ハッシュアルゴリズムの利用期限T_hashと公開鍵の利用期限T_pkとをそれぞれ取得し、ハッシュアルゴリズムの利用期限T_hashが公開鍵の利用期限T_pkよりも短いかを判断する(S710)。
ハッシュアルゴリズムの利用期限T_hashが公開鍵の利用期限T_pkよりも短い場合には、制御部9は、新規に作成する証明書の有効期限T_cert_newにハッシュアルゴリズムの利用期限T_hashを設定する(S711)。
ハッシュアルゴリズムの利用期限T_hashが公開鍵の利用期限T_pkよりも長いまたは等しい場合には、制御部9は、新規に作成する証明書の有効期限T_cert_newに公開鍵の利用期限T_pkを設定する(S712)。
そして、制御部9は、インポータ要求の対象となっていた鍵ペアに含まれていた秘密鍵を使って、T_cert_newを有効期限とする新しい証明書を作成する(S713)。
新しい証明書のバージョン情報は情報処理装置1がサポートするバージョンとする。新しい証明書のシリアル番号は情報処理装置1が発行する番号とする。新しい証明書の公開鍵アルゴリズム情報は、秘密鍵ペアに含まれていた証明書の公開鍵アルゴリズム情報とする。新しい証明書の署名アルゴリズム及び公開鍵は、鍵ペアに含まれていた証明書の署名アルゴリズム情報及び公開鍵とする。新しい証明書の有効期限の開始日は現在日時にする。新しい証明書の有効期限の終了日はT_cert_newとする。制御部9は、署名アルゴリズムで指定されるハッシュアルゴリズムを使って、上記の情報を含む署名前の証明書からハッシュ値を計算し、秘密鍵を使ってハッシュ値から署名値を計算して、自己署名証明書を作成する。
そして、制御部9は、秘密鍵と新しい証明書とからなる新しい鍵ペアを鍵記憶部4に格納する(S713)。
S713では、インポートする鍵ペアに含まれている証明書の有効期限を変更したうえで、鍵ペアを鍵記憶部4に登録する。これにより、証明書の安全性をより高める。
下記では、本発明に係る第3の実施形態を説明する。第3の実施形態では、情報処理装置1は秘密鍵と証明書とからなる鍵ペアをインポートする。鍵ペアの一例としてはPKCS#12が挙げられる。証明書は自己署名証明書である。
【0036】
図9は、鍵ペアをインポートする情報処理を示すフローチャートである。制御部9は、図9のフローチャートに基づくプログラムを実行することにより、インポート処理を実現する。
制御部9は、鍵ペアのインポート要求があったかどうかを判断する(S901)。ユーザは、鍵ペアのインポートを希望する場合、入出力部2を介して、鍵ペアのインポートを要求する。すると、通信部3は鍵ペアを外部装置から取得する。外部装置は、パーソナルコンピュータやサーバコンピュータなどのコンピュータを含むほか、USBメモリやファイルサーバなどの外部記憶装置も含む。
また、ユーザは自分のPCを介して鍵ペアのインポートを要求することもできる。この場合には、PCは、鍵ペアのインポートの要求を情報処理装置1に送信するとともに、鍵ペアを情報処理装置1に送信する
制御部9は、インポート要求があったと判断すると、鍵ペアを解析し、鍵ペアに含まれている証明書の有効性のチェックを行う(S902)。S902では、制御部9は図3のフローチャートに基づく情報処理を実行する。
制御部9は、証明書の有効性をチェックした後、変数validityがOKであるかを判断する(S903)。変数validityがNGであれば、制御部9は鍵ペアのインポートを拒否する(S904)。その結果、鍵ペアは鍵記憶部4に登録されない。
変数validityがOKであれば、制御部9は、鍵ペアに含まれている証明書の安全性のチェックを行う(S905)。S905では、制御部9は図4のフローチャートに基づく情報処理を実行する。
制御部9は、証明書の安全性をチェックした後、変数securityがOKであるかを判断する(S906)。変数securityがOKであれば、制御部9は鍵ペアのインポート処理を実行する(S907)。インポート処理では、制御部9は鍵ペアを鍵記憶部4に格納して、その鍵ペアを通信で使用できるようにする。
変数securityがNGであれば、制御部9はハッシュアルゴリズムの選択を行う(S908)。制御部9は、ライフタイムテーブルを参照して、証明書の有効期限T_cert≦ハッシュアルゴリズムの利用期限T_hashを満たす1または複数のハッシュアルゴリズムのうち、もっとも利用期限の短いハッシュアルゴリズムを特定する(S908)。つまり、T_cert以降に最初に利用期限を迎えるハッシュアルゴリズムを選択する。
【0037】
例えば、T_certが2015年12月19日である場合、T_cert≦T_hashを満たすハッシュアルゴリズムのうち、もっともT_hashの短いハッシュアルゴリズムはSHA224である。なお、情報処理装置1がSHA224をサポートしていない場合には、制御部9はSHA256を選択する。
さらに、制御部9は、署名アルゴリズム及び公開鍵サイズの組み合わせの選択を行う(S909)。制御部9は、ライフタイムテーブルを参照して、証明書の有効期限T_cert≦公開鍵の利用期限T_pkを満たす署名アルゴリズム及び公開鍵サイズの1または複数の組み合わせのうち、もっともT_pkの短い組み合わせを特定する(S909)。つまり、T_cert以降に最初に利用期限を迎える署名アルゴリズム及び公開鍵サイズの組み合わせを選択する。公開鍵の利用期限T_pkは、その公開鍵を作るのに使われた署名アルゴリズムと公開鍵サイズとによって決まる。例えば、T_certが2015年12月19日である場合、RSA−2048を選択する。
制御部9は確認画面を入出力部2に表示させる(S910)。
【0038】
図10は、S810で表示される確認画面の一例を示す図である。この確認画面では、より安全性の高い鍵ペアを作成するかどうかをユーザに問い合わせる。ユーザは、新しい鍵ペアの作成を希望する場合には、ボタン1001を押下する。すると、制御部9は変数C_keyにOKをセットする。ユーザは、新しい鍵ペアの作成を希望しない場合には、ボタン1002を押下する。すると、制御部9は変数C_keyにNGをセットする。
制御部9は変数C_keyがOKであるかを判断する(S911)。変数C_keyがNGである場合、制御部9は秘密鍵のインポートを拒否する(S904)。
変数C_keyがOKである場合、制御部9は、S908で特定したハッシュアルゴリズム、S909で特定した署名アルゴリズム及び公開鍵サイズの組み合わせを使って、新しい鍵ペアを作成する(S912)。そして、制御部9は、その新しい鍵ペアを鍵記憶部4に格納する(S912)。
鍵ペアの作成では、制御部9はS909で特定した署名アルゴリズムと公開鍵サイズで秘密鍵及び公開鍵を作成する。次に、制御部9はX.509形式の証明書を作成する。さらに、制御部9は、S908で特定したハッシュアルゴリズムと秘密鍵とを使って、証明書に署名を付与する。これによって、秘密鍵と証明書とからなる鍵ペアが作成される。
新しい証明書のバージョン情報は情報処理装置1がサポートするバージョンとする。新しい証明書のシリアル番号は情報処理装置1が発行する番号とする。新しい証明書の公開鍵アルゴリズム情報は、S909で特定した署名アルゴリズム及び公開鍵サイズの組み合わせによって定められる。新しい証明書の署名アルゴリズム情報は、S908で特定したハッシュアルゴリズムとS909で特定した署名アルゴリズム及び公開鍵サイズの組み合わせによって定められる。例えば、ハッシュアルゴリズムがSHA224、署名アルゴリズムがRSA、公開鍵サイズが2048bitである場合、署名アルゴリズム情報はSHA224−RSA(sha224WithRSAEncryption)となる。新しい証明書の有効期限の開始日は現在日時となる。新しい証明書の有効期限の終了日はT_certとする。新しい証明書の公開鍵は新規に作成した公開鍵とする。制御部9は、署名アルゴリズムで指定されるハッシュアルゴリズムを使って、上記の情報を含む署名前の証明書からハッシュ値を計算し、新しく生成した秘密鍵を使ってハッシュ値から署名値を計算して、自己署名証明書を作成する。
なお、制御部9は、ユーザにパスワードを入力させて、そのパスワードを用いたPKCS#12形式の証明書を作成してもよい。
【0039】
上記の実施形態では、図5のライフタイムテーブルにおいて、「〜2010年」とは「〜2010年12月31日」を意味する。しかしながら、「〜2010年」が「〜2010年1月1日」を意味するように変えてもよい。いずれを選ぶかは情報処理装置1の設計事項である。
【0040】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0041】
1 情報処理装置
2 入出力部
3 通信部
4 鍵記憶部
5 ライフタイムテーブル記憶部5
6 証明書記憶物
7 情報記憶部
8 内蔵時計
9 制御部
【技術分野】
【0001】
本発明は、電子証明書を利用する情報処理装置に関するものである。
【背景技術】
【0002】
暗号化通信などで用いられる電子証明書(以下、証明書)には、証明書の発行者、証明書の有効期限、公開鍵、その証明者または公開鍵を作るのに用いられたアルゴリズムに関するアルゴリズム情報が含まれている。
情報処理装置は、利用する証明書の有効期限が過ぎているか否か、または証明書が失効しているか否かを判断して、証明書の有効期限が過ぎている場合や証明書が失効している場合には、証明書の利用を制限していた(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−274060
【発明の概要】
【発明が解決しようとする課題】
【0004】
証明書で使われているハッシュアルゴリズムや署名アルゴリズムは、証明書の改ざんを防止し、証明書を安全に利用できるよう設計されている。代表的な署名アルゴリズムであるRSA、DSA、ECDSAなどは、素因数分解問題や離散対数問題の困難性に基づいて安全性が保たれており、証明書で使われている公開鍵からは秘密鍵を求めることが困難である。
【0005】
しかしながら、計算機の性能の向上や数学的進歩などの理由により、証明書で使われるアルゴリズムは、時間の経過とともに、安全性が低下する。例えば、NIST(アメリカ国立標準技術研究所)は、世の中で利用されている暗号アルゴリズムに関してガイドラインを定めており、アルゴリズムや鍵サイズごとに安全性を確保できるとされている期間を報告している。この期間を過ぎて、そのアルゴリズムや鍵サイズを利用し続けると、証明書の偽造や秘密鍵の漏洩が起きる可能性が高くなる。
【0006】
従来、情報処理装置は、利用する証明書の有効期限が過ぎているか否かを判断して、証明書の有効期限が過ぎていなければ、その証明書を利用していた。その結果、証明書で使われているアルゴリズムや公開鍵の利用期限が過ぎているが、その証明書の有効期限が過ぎていない場合、その証明書を使い続けることがあった。つまり、証明書の有効期限はチェックしていたものの、その証明書で使われるアルゴリズムや公開鍵の利用期限はチェックしていなかった。
【0007】
例えば、証明書で使われているアルゴリズムの利用期限が2010であっても、証明書の有効期限2015年であれば、2015年までその証明書を使い続ける可能性があった。
世の中には、証明書を作成可能なソフトウェアがいろいろ存在し、個人が証明書や鍵ペア(証明書と秘密鍵のペア)を作成することが可能である。個人が証明書や鍵ペアを作成する場合、アルゴリズムや公開鍵の利用期限を考慮して証明書や鍵ペアの有効期限を決めているとは限らない。ユーザのなかには、証明書や鍵ペアの更新が煩わしいと思い、有効期限が長期間である証明書や鍵ペアを作成するユーザも存在するかもしれない。そのような証明書を外部装置から取得して利用することは、証明書の偽造や秘密鍵の漏洩の可能性を高める。
【0008】
そこで、本発明では、証明書の有効期限のみならず、証明書で使われているアルゴリズムや公開鍵の利用期限も考慮して、証明書をより安全に利用する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明に係る情報処理装置は、電子証明書を外部装置から取得する第1の取得手段と、前記第1の取得手段で取得した電子証明書で使われている公開鍵の利用期限を取得する第2の取得手段と、前記第1の取得手段で取得した電子証明書の有効期限と前記第2の取得手段で取得した公開鍵の利用期限とを比較する比較手段とを有することを特徴とする。
【0010】
また、本発明に係る情報処理装置は、電子証明書を外部装置から取得する第1の取得手段と、前記第1の取得手段で取得した電子証明書で使われているアルゴリズムの利用期限を取得する第2の取得手段と、前記第1の取得手段で取得した電子証明書の有効期限と前記第2の取得手段で取得した公開鍵の利用期限とを比較する比較手段とを有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、証明書の有効期限のみならず、証明書で使われているアルゴリズムや公開鍵の利用期限も考慮して、証明書をより安全に利用することが可能である。
【図面の簡単な説明】
【0012】
【図1】システムの構成を示す図である。
【図2】証明書をインポートする情報処理を示すフローチャートである。
【図3】証明書の有効性をチェックする情報処理を示すフローチャートである。
【図4】証明書の安全性をチェックする情報処理を示すフローチャートである。
【図5】ライフタイムテーブル記憶部5に記憶されているライフタイムテーブルを示す図である。
【図6】S210で表示される確認画面の一例を示す図である。
【図7】鍵ペアをインポートする情報処理を示すフローチャートである。
【図8】S708で表示される確認画面の一例を示す図である。
【図9】鍵ペアをインポートする情報処理を示すフローチャートである。
【図10】S810で表示される確認画面の一例を示す図である。
【図11】証明書の一例を示す図である。
【図12】期限の関係を示す図である。
【発明を実施するための形態】
【0013】
図面を参照して、本発明に係る実施形態を説明する。ただし、この実施形態はあくまでも例示であり、本発明の範囲がこれにのみに限定されるという趣旨ではない。
【0014】
下記の説明では、期限の比較がある。期限T_aが期限T_bより短いとは、図12に示すような関係をいう。また、この関係をT_a<T_bと表現する。
【0015】
図1は、本発明に係るシステムの構成を示す図である。情報処理装置1は、電子証明書(以下、証明書)を利用して、ネットワーク上で暗号化通信を実行可能である。情報処理装置1の一例として、プリンタ、複合機、スキャナ、パーソナルコンピュータ(PC)、サーバコンピュータなどが挙げられる。
情報処理装置1は、入出力部2、通信部3、鍵記憶部4、ライフタイムテーブル記憶部5、証明書記憶部6、情報記憶部7、内蔵時計8及び制御部9を有する。
入出力部2は、いわゆるユーザインターフェースであり、様々な情報を表示したり、ユーザからの様々な指示を入力したりする。入出力部2は、ディプレイ装置、キーボード、マウス、タッチパネルなどのハードウェアによって構成される。
通信部3は、有線LAN、無線LAN、USBなどのネットワークを介して、外部装置と通信する。通信部3は、証明書、証明書失効リスト(Certificate Revocation List:CRL)、鍵ペアなどを外部装置からインポートすることも可能である。
鍵記憶部4は、利用可能な鍵ペアを記憶する。ライフタイムテーブル記憶部5は、ライフタイムテーブルを記憶する。証明書記憶部6は、利用可能な証明書を記憶する。鍵記憶部4、ライフタイムテーブル記憶部5及び証明書記憶部6は、不揮発性メモリやハードディスクなどのハードウェアによって構成される。
【0016】
なお、鍵記憶部4、ライフタイムテーブル記憶部5及び証明書記憶部6は、別々のハードウェアによって構成されていても、同一のハードウェアによって構成されていてもよい。鍵記憶部4、ライフタイムテーブル記憶部5及び証明書記憶部6に記憶されている情報は、制御部9によって登録され、更新され、削除される。
【0017】
情報記憶部7は、情報処理装置1を制御するコンピュータプログラムを記憶したり、情報処理で生成される情報を記憶したり、情報処理で使用される変数の値を記憶したりする。情報記憶部7は、RAM、ROM、ハードディスクなどのハードウェアによって構成される。
内蔵時計8は、現在の日時を示す日時情報を提供する。
制御部9は、情報処理装置1の全体を制御する。制御部9はCPUやマイクロプロセッサなどのハードウェアによって構成される。制御部9は、情報記憶部7に記憶されているプログラムに従って様々な情報処理を実行する。
【0018】
図11は、証明書の一例を示す図である。図11は証明書の一例であり、証明書の種類によっては図11に記載されている情報が証明書に含まれることがある。
【0019】
証明書のインポートについて説明する。インポート処理では、X.509などの証明書をインポートしても、PKCS#12などの鍵ペアをインポートしてもよい。鍵ペアのインポートは第2の実施形態として説明する。証明書は自己署名証明書とする。
情報処理装置1はセキュリティポリシーに応じた制御を実行することが可能である。本実施形態では、下記のようなセキュリティポリシーが情報処理装置1にて設定可能である。
ノーマルモードでは、インポートすべき証明書の有効性のチェックのみを行う。つまり、証明書が失効状態であるか否か、証明書の有効期限が切れているか否かをチェックする。
【0020】
第1のセキュアモードでは、証明書の有効性のチェックに加えて、証明書の安全性のチェックを行い、安全性のチェックの結果がNGであった場合、証明書のインポートを拒否する。証明書の安全性のチェックについては後述する。
第2のセキュアモードでは、証明書の有効性のチェックと証明書の安全性のチェックとを行い、安全性のチェックの結果がNGであった場合、証明書をインポートするかどうかをユーザに確認する。
ユーザは入出力部2を介して、ノーマルモード、第1のセキュアモードまたは第2のセキュアモードの選択を指示する。
【0021】
図2は、証明書をインポートする情報処理を示すフローチャートである。制御部9は、図2のフローチャートに基づくプログラムを実行することにより、インポート処理を実現する。
制御部9は、証明書のインポート要求があったかどうかを判断する(S201)。ユーザは、証明書のインポートを希望する場合、入出力部2を介して、証明書のインポートを要求する。すると、通信部3は証明書を外部装置から取得する。外部装置は、パーソナルコンピュータやサーバコンピュータなどのコンピュータを含むほか、USBメモリやファイルサーバなどの外部記憶装置も含む。
また、ユーザは自分のPCを介して証明書のインポートを要求することもできる。この場合には、PCは、証明書のインポートの要求を情報処理装置1に送信するとともに、証明書を情報処理装置1に送信する。
外部装置から取得された証明書は一旦情報記憶部7に記憶される。
制御部9は、インポート要求があったと判断すると、証明書の有効性のチェックを行う(S202)。
【0022】
図3は、証明書の有効性をチェックする情報処理を示すフローチャートである。制御部9は、図3のフローチャートに基づくプログラムを実行することにより、証明書の有効性のチェックを行う。
まず、制御部9は、証明書が失効しているかどうかを判断する(S301)。証明書の失効状態は、予め情報記憶部7に記憶していたCRLで確認することができる。CRLは認証局やCRLサーバによって発行され、情報処理装置1はそれを情報記憶部7に記憶しておく。証明書が失効していることがCRLに記述されていれば、制御部9は証明書が失効していると判断する。
証明書の失効状態は、CRLを用いるほか、Online Certificate Status Protocol(OCSP)を用いても確認することができる。この場合、通信部3はOCSPを用いてOCSPサーバと通信し、証明書が失効しているか否かをOCSPサーバに問い合わせる。
制御部9は、証明書が失効していると判断した場合には、証明書が失効していることをユーザに通知すべく、その旨のメッセージを入出力部2に表示させる(S302)。または、制御部9は、証明書が失効していることを示すメッセージを外部装置に送信するよう通信部3を制御する。そして、制御部9は、変数validityにNGをセットする(S303)。
制御部9は、証明書が失効していないと判断した場合には、証明書の有効期限T_certと現在日時T_nowとを比較する(S304)。制御部9は、現在日時T_nowを内蔵時計8から取得する。以下、T_certは、インポート要求の対象となっている証明書の有効期限を示す。
現在日時T_nowが証明書の有効期限T_certを過ぎている場合には、制御部9は、証明書の有効期限が切れていることをユーザに通知すべく、その旨のメッセージを入出力部2に表示させる(S305)。または、制御部9は、証明書が失効していることを示すメッセージを外部装置に送信するよう通信部3を制御する。そして、制御部9は、変数validityにNGをセットする(S303)。
現在日時T_nowが証明書の有効期限T_certを過ぎていない場合には、制御部9は、変数validityにOKをセットする(S306)。
図3のフローチャートでは、証明書の失効状態を確認してから、証明書の有効期限を確認した。しかしながら、証明書の有効期限を確認してから、証明書の失効状態を確認してもよい。
【0023】
図2のフローチャートの説明に戻る。
【0024】
制御部9は、証明書の有効性をチェックした後、変数validityがOKであるかを判断する(S203)。変数validityがNGであれば、制御部9は証明書のインポートを拒否する(S204)。その結果、証明書は証明書記憶部6に登録されない。
変数validityがOKであれば、制御部9は、現在設定されているセキュリティポリシーがノーマルモードであるかを判断する(S205)。セキュリティポリシーがノーマルモードである場合には、制御部9は、証明書のインポート処理を実行する(S206)。インポート処理では、制御部9は証明書を証明書記憶部6に格納して、その証明書を通信で使用できるようにする。
セキュリティポリシーがノーマルモードでない場合には、制御部9は、証明書の安全性のチェックを行う(S207)。
図4は、証明書の安全性をチェックする情報処理を示すフローチャートである。制御部9は、図4のフローチャートに基づくプログラムを実行することにより、証明書の安全性のチェックを行う。
【0025】
まず、制御部9は、証明書の有効期限T_certと、その証明書に利用されているハッシュアルゴリズムの利用期限T_hashとを比較する(S401)。ハッシュアルゴリズムには、SHA1、SHA224、SHA256などがあり、それぞれは異なる利用期限を有している。
【0026】
図5は、ライフタイムテーブル記憶部5に記憶されているライフタイムテーブルを示す図である。ライフタイムテーブルとは、署名アルゴリズムやハッシュアルゴリズムがいつまで安全に利用することができるかを示す情報を格納したテーブルである。テーブルに格納されている利用期限以降には、対応する署名アルゴリズムやハッシュアルゴリズムを使って暗号化された情報が解読される可能性が高くなる。ライフタイムテーブルは、NISTなど信頼のおける機関によって公開されている情報を基に生成される。
なお、本実施形態では、図5のライフタイムテーブルにおいて、「〜2010年」とは「〜2010年12月31日」を意味する。
【0027】
ライフタイムテーブルや証明書は、情報処理装置の管理者など所定の権限を有するユーザによって登録や上書きが可能である。また、ライフタイムテーブルは、外部サーバから定期的に配信される更新情報に基づいて更新される。あるいは、ユーザからの更新要求に従って、情報処理装置が外部サーバから更新情報を取得し、取得した更新情報に基づいてライフタイムテーブルを更新する。あるいは、証明書や鍵ペアのインポート要求があるのに応じて、情報処理装置が外部サーバから更新情報を取得し、取得した更新情報に基づいてライフタイムテーブルを更新する。
【0028】
制御部9は、ライフタイムテーブルを参照して、証明書に利用されているハッシュアルゴリズムの利用期限T_hashを取得し、T_certがT_hashよりも短いまたは等しいかどうかを判断する(S401)。
証明書の有効期限T_certがハッシュアルゴリズムの利用期限T_hashよりも短いまたは等しい場合には、制御部9は、証明書の有効期限T_certと、その証明書に含まれる公開鍵の利用期限T_pkとを比較する(S402)。公開鍵の利用期限T_pkは、その公開鍵を作るのに使われた署名アルゴリズムと公開鍵のサイズとによって決まる。図5のライフタイムテーブルによれば、RSAによって生成された1024ビットの公開鍵の利用期限は2010年である。
【0029】
制御部9は、ライフタイムテーブルを参照して、証明書に含まれる公開鍵の利用期限T_pkを取得し、証明書の有効期限T_certが公開鍵の利用期限T_pkよりも短いまたは等しいかどうかを判断する(S402)。
証明書の有効期限T_certが公開鍵の利用期限T_pkよりも短いまたは等しい場合には、制御部9は、変数securityにOKをセットする(S403)。
証明書の有効期限T_certがハッシュアルゴリズムの利用期限T_hashより長い場合、または証明書の有効期限T_certが公開鍵の利用期限T_pkより長い場合には、制御部9は、変数securityにNGをセットする(S404)。
証明書に利用されているハッシュアルゴリズムは、証明書内のsignatureの情報を参照することで判別可能である。証明書に含まれている公開鍵の種類は、証明書内のsubjectPublicKeyinfoの情報を参照することで判別可能である。
【0030】
図4のフローチャートでは、証明書の有効期限とハッシュアルゴリズムの利用期限との比較を行ったあとで、証明書の有効期限と公開鍵の利用期限との比較をおこなったが、これらの比較の順番を逆にしてもよい。
【0031】
図2のフローチャートの説明に戻る。
制御部9は、証明書の安全性をチェックした後、変数securityがOKであるかを判断する(S208)。変数securityがOKであれば、制御部9はインポート処理を実行する(S206)。
変数securityがNGであれば、制御部9は、現在設定されているセキュリティポリシーが第1のセキュアモードであるかを判断する(S209)。セキュリティポリシーが第1のセキュアモードであれば、制御部9は証明書のインポートを拒否する(S204)。その結果、証明書は証明書記憶部6に登録されない。
セキュリティポリシーが第2のセキュアモードであれば、制御部9は、安全性に関する警告をするために、確認画面を入出力部2に表示させる(S210)。
【0032】
図6は、S210で表示される確認画面の一例を示す図である。この確認画面では、証明書の安全性を有効期限まで保障できないことを示すとともに、証明書のインポートを行うか否かをユーザに確認する。
ユーザが証明書の詳細を確認したい場合には、ボタン601を押下する。すると、制御部9は、証明書に関する詳細情報を入出力部2に表示させる。ユーザが証明書のインポートをしたい場合には、ボタン602を押下する。すると、制御部9は、変数importにOKをセットする。ユーザが証明書のインポートをキャンセルしたい場合には、ボタン603を押下する。すると、制御部9は、変数importにNGをセットする。
制御部9は、変数importがOKである否かを判断する(S211)。変数importがOKであれば、制御部9は証明書のインポート処理を実行する(S206)。変数importがNGであれば、制御部9は証明書のインポートを拒否する(S204)。
【0033】
下記では、本発明に係る第2の実施形態を説明する。第2の実施形態では、情報処理装置1は秘密鍵と証明書とからなる鍵ペアをインポートする。鍵ペアの一例としてはPKCS#12が挙げられる。証明書は自己署名証明書である。
【0034】
図7は、鍵ペアをインポートする情報処理を示すフローチャートである。制御部9は、図7のフローチャートに基づくプログラムを実行することにより、インポート処理を実現する。
制御部9は、鍵ペアのインポート要求があったかどうかを判断する(S701)。ユーザは、鍵ペアのインポートを希望する場合、入出力部2を介して、鍵ペアのインポートを要求する。すると、通信部3は鍵ペアを外部装置から取得する。外部装置は、パーソナルコンピュータやサーバコンピュータなどのコンピュータを含むほか、USBメモリやファイルサーバなどの外部記憶装置も含む。
また、ユーザは自分のPCを介して鍵ペアのインポートを要求することもできる。この場合には、PCは、鍵ペアのインポートの要求を情報処理装置1に送信するとともに、鍵ペアを情報処理装置1に送信する
制御部9は、インポート要求があったと判断すると、鍵ペアを解析し、鍵ペアに含まれている証明書の有効性のチェックを行う(S702)。S702では、制御部9は図3のフローチャートに基づく情報処理を実行する。
制御部9は、証明書の有効性をチェックした後、変数validityがOKであるかを判断する(S703)。変数validityがNGであれば、制御部9は鍵ペアのインポートを拒否する(S704)。その結果、鍵ペアは鍵記憶部4に登録されない。
変数validityがOKであれば、制御部9は、鍵ペアに含まれている証明書の安全性のチェックを行う(S705)。S705では、制御部9は図4のフローチャートに基づく情報処理を実行する。
制御部9は、証明書の安全性をチェックした後、変数securityがOKであるかを判断する(S706)。変数securityがOKであれば、制御部9は鍵ペアのインポート処理を実行する(S707)。インポート処理では、制御部9は鍵ペアを鍵記憶部4に格納して、その鍵ペアを通信で使用できるようにする。
変数securityがNGであれば、制御部9は確認画面を入出力部2に表示させる(S708)。
【0035】
図8は、S708で表示される確認画面の一例を示す図である。この確認画面では、鍵ペアに含まれている証明書の有効期限を短縮して安全な証明書を作成し直すかどうかをユーザに問い合わせる。ユーザは証明書の有効期限の変更を希望する場合、ボタン801を押下する。すると、制御部9は変数C_validityにOKをセットする。ユーザは証明書の有効期限の変更を希望しない場合、ボタン802を押下する。すると、制御部9は変数C_validityにNGをセットする。
制御部9は、変数C_validityがOKであるかを判断する(S709)。変数C_validityがNGである場合、制御部9は鍵ペアのインポートを拒否する(S704)。
変数C_validityがOKである場合には、制御部9は証明書のハッシュアルゴリズムの利用期限T_hashと、証明書の公開鍵の利用期限T_pkとを比較する(S710)。制御部9は、ライフタイムテーブルを参照して、ハッシュアルゴリズムの利用期限T_hashと公開鍵の利用期限T_pkとをそれぞれ取得し、ハッシュアルゴリズムの利用期限T_hashが公開鍵の利用期限T_pkよりも短いかを判断する(S710)。
ハッシュアルゴリズムの利用期限T_hashが公開鍵の利用期限T_pkよりも短い場合には、制御部9は、新規に作成する証明書の有効期限T_cert_newにハッシュアルゴリズムの利用期限T_hashを設定する(S711)。
ハッシュアルゴリズムの利用期限T_hashが公開鍵の利用期限T_pkよりも長いまたは等しい場合には、制御部9は、新規に作成する証明書の有効期限T_cert_newに公開鍵の利用期限T_pkを設定する(S712)。
そして、制御部9は、インポータ要求の対象となっていた鍵ペアに含まれていた秘密鍵を使って、T_cert_newを有効期限とする新しい証明書を作成する(S713)。
新しい証明書のバージョン情報は情報処理装置1がサポートするバージョンとする。新しい証明書のシリアル番号は情報処理装置1が発行する番号とする。新しい証明書の公開鍵アルゴリズム情報は、秘密鍵ペアに含まれていた証明書の公開鍵アルゴリズム情報とする。新しい証明書の署名アルゴリズム及び公開鍵は、鍵ペアに含まれていた証明書の署名アルゴリズム情報及び公開鍵とする。新しい証明書の有効期限の開始日は現在日時にする。新しい証明書の有効期限の終了日はT_cert_newとする。制御部9は、署名アルゴリズムで指定されるハッシュアルゴリズムを使って、上記の情報を含む署名前の証明書からハッシュ値を計算し、秘密鍵を使ってハッシュ値から署名値を計算して、自己署名証明書を作成する。
そして、制御部9は、秘密鍵と新しい証明書とからなる新しい鍵ペアを鍵記憶部4に格納する(S713)。
S713では、インポートする鍵ペアに含まれている証明書の有効期限を変更したうえで、鍵ペアを鍵記憶部4に登録する。これにより、証明書の安全性をより高める。
下記では、本発明に係る第3の実施形態を説明する。第3の実施形態では、情報処理装置1は秘密鍵と証明書とからなる鍵ペアをインポートする。鍵ペアの一例としてはPKCS#12が挙げられる。証明書は自己署名証明書である。
【0036】
図9は、鍵ペアをインポートする情報処理を示すフローチャートである。制御部9は、図9のフローチャートに基づくプログラムを実行することにより、インポート処理を実現する。
制御部9は、鍵ペアのインポート要求があったかどうかを判断する(S901)。ユーザは、鍵ペアのインポートを希望する場合、入出力部2を介して、鍵ペアのインポートを要求する。すると、通信部3は鍵ペアを外部装置から取得する。外部装置は、パーソナルコンピュータやサーバコンピュータなどのコンピュータを含むほか、USBメモリやファイルサーバなどの外部記憶装置も含む。
また、ユーザは自分のPCを介して鍵ペアのインポートを要求することもできる。この場合には、PCは、鍵ペアのインポートの要求を情報処理装置1に送信するとともに、鍵ペアを情報処理装置1に送信する
制御部9は、インポート要求があったと判断すると、鍵ペアを解析し、鍵ペアに含まれている証明書の有効性のチェックを行う(S902)。S902では、制御部9は図3のフローチャートに基づく情報処理を実行する。
制御部9は、証明書の有効性をチェックした後、変数validityがOKであるかを判断する(S903)。変数validityがNGであれば、制御部9は鍵ペアのインポートを拒否する(S904)。その結果、鍵ペアは鍵記憶部4に登録されない。
変数validityがOKであれば、制御部9は、鍵ペアに含まれている証明書の安全性のチェックを行う(S905)。S905では、制御部9は図4のフローチャートに基づく情報処理を実行する。
制御部9は、証明書の安全性をチェックした後、変数securityがOKであるかを判断する(S906)。変数securityがOKであれば、制御部9は鍵ペアのインポート処理を実行する(S907)。インポート処理では、制御部9は鍵ペアを鍵記憶部4に格納して、その鍵ペアを通信で使用できるようにする。
変数securityがNGであれば、制御部9はハッシュアルゴリズムの選択を行う(S908)。制御部9は、ライフタイムテーブルを参照して、証明書の有効期限T_cert≦ハッシュアルゴリズムの利用期限T_hashを満たす1または複数のハッシュアルゴリズムのうち、もっとも利用期限の短いハッシュアルゴリズムを特定する(S908)。つまり、T_cert以降に最初に利用期限を迎えるハッシュアルゴリズムを選択する。
【0037】
例えば、T_certが2015年12月19日である場合、T_cert≦T_hashを満たすハッシュアルゴリズムのうち、もっともT_hashの短いハッシュアルゴリズムはSHA224である。なお、情報処理装置1がSHA224をサポートしていない場合には、制御部9はSHA256を選択する。
さらに、制御部9は、署名アルゴリズム及び公開鍵サイズの組み合わせの選択を行う(S909)。制御部9は、ライフタイムテーブルを参照して、証明書の有効期限T_cert≦公開鍵の利用期限T_pkを満たす署名アルゴリズム及び公開鍵サイズの1または複数の組み合わせのうち、もっともT_pkの短い組み合わせを特定する(S909)。つまり、T_cert以降に最初に利用期限を迎える署名アルゴリズム及び公開鍵サイズの組み合わせを選択する。公開鍵の利用期限T_pkは、その公開鍵を作るのに使われた署名アルゴリズムと公開鍵サイズとによって決まる。例えば、T_certが2015年12月19日である場合、RSA−2048を選択する。
制御部9は確認画面を入出力部2に表示させる(S910)。
【0038】
図10は、S810で表示される確認画面の一例を示す図である。この確認画面では、より安全性の高い鍵ペアを作成するかどうかをユーザに問い合わせる。ユーザは、新しい鍵ペアの作成を希望する場合には、ボタン1001を押下する。すると、制御部9は変数C_keyにOKをセットする。ユーザは、新しい鍵ペアの作成を希望しない場合には、ボタン1002を押下する。すると、制御部9は変数C_keyにNGをセットする。
制御部9は変数C_keyがOKであるかを判断する(S911)。変数C_keyがNGである場合、制御部9は秘密鍵のインポートを拒否する(S904)。
変数C_keyがOKである場合、制御部9は、S908で特定したハッシュアルゴリズム、S909で特定した署名アルゴリズム及び公開鍵サイズの組み合わせを使って、新しい鍵ペアを作成する(S912)。そして、制御部9は、その新しい鍵ペアを鍵記憶部4に格納する(S912)。
鍵ペアの作成では、制御部9はS909で特定した署名アルゴリズムと公開鍵サイズで秘密鍵及び公開鍵を作成する。次に、制御部9はX.509形式の証明書を作成する。さらに、制御部9は、S908で特定したハッシュアルゴリズムと秘密鍵とを使って、証明書に署名を付与する。これによって、秘密鍵と証明書とからなる鍵ペアが作成される。
新しい証明書のバージョン情報は情報処理装置1がサポートするバージョンとする。新しい証明書のシリアル番号は情報処理装置1が発行する番号とする。新しい証明書の公開鍵アルゴリズム情報は、S909で特定した署名アルゴリズム及び公開鍵サイズの組み合わせによって定められる。新しい証明書の署名アルゴリズム情報は、S908で特定したハッシュアルゴリズムとS909で特定した署名アルゴリズム及び公開鍵サイズの組み合わせによって定められる。例えば、ハッシュアルゴリズムがSHA224、署名アルゴリズムがRSA、公開鍵サイズが2048bitである場合、署名アルゴリズム情報はSHA224−RSA(sha224WithRSAEncryption)となる。新しい証明書の有効期限の開始日は現在日時となる。新しい証明書の有効期限の終了日はT_certとする。新しい証明書の公開鍵は新規に作成した公開鍵とする。制御部9は、署名アルゴリズムで指定されるハッシュアルゴリズムを使って、上記の情報を含む署名前の証明書からハッシュ値を計算し、新しく生成した秘密鍵を使ってハッシュ値から署名値を計算して、自己署名証明書を作成する。
なお、制御部9は、ユーザにパスワードを入力させて、そのパスワードを用いたPKCS#12形式の証明書を作成してもよい。
【0039】
上記の実施形態では、図5のライフタイムテーブルにおいて、「〜2010年」とは「〜2010年12月31日」を意味する。しかしながら、「〜2010年」が「〜2010年1月1日」を意味するように変えてもよい。いずれを選ぶかは情報処理装置1の設計事項である。
【0040】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0041】
1 情報処理装置
2 入出力部
3 通信部
4 鍵記憶部
5 ライフタイムテーブル記憶部5
6 証明書記憶物
7 情報記憶部
8 内蔵時計
9 制御部
【特許請求の範囲】
【請求項1】
情報処理装置であって、
電子証明書を外部装置から取得する第1の取得手段と、
前記第1の取得手段で取得した電子証明書で使われている公開鍵の利用期限を取得する第2の取得手段と、
前記第1の取得手段で取得した電子証明書の有効期限と前記第2の取得手段で取得した公開鍵の利用期限とを比較する比較手段とを有することを特徴とする情報処理装置。
【請求項2】
公開鍵の種類ごとに、公開鍵の利用期限を定めたテーブルを記憶するテーブル記憶手段を有し、
前記第2の取得手段は、前記第1の取得手段で取得した電子証明書で使われている公開鍵の利用期限を前記テーブルから取得することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
利用可能な電子証明書を記憶する記憶手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記第1の取得手段で取得した電子証明書を前記記憶手段に登録する登録手段と、を有することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
利用可能な電子証明書を記憶する記憶手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記第1の取得手段で取得した電子証明書を前記記憶手段に登録するか否かをユーザに選択させる選択手段と、
前記第1の取得手段で取得した電子証明書を前記記憶手段に登録するとユーザが選択した場合、前記第1の取得手段で取得した電子証明書を前記記憶手段に登録する登録手段と、を有することを特徴とする請求項1または2に記載の情報処理装置。
【請求項5】
利用可能な電子証明書を記憶する記憶手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記第1の取得手段で取得した電子証明書の有効期限を変更する変更手段と、
前記変更手段で変更した電子証明書を前記記憶手段に登録する登録手段と、を有することを特徴とする請求項1または2に記載の情報処理装置。
【請求項6】
利用可能な電子証明書を記憶する記憶手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記第1の取得手段で取得した電子証明書の有効期限よりも長い利用期限を有する公開鍵を作成する作成手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記作成手段で作成した公開鍵に基づく電子証明書を前記記憶手段に登録する登録手段と、を有することを特徴とする請求項1または2に記載の情報処理装置。
【請求項7】
前記第1の取得手段で取得した電子証明書の有効期限が過ぎているか否かを判断する判断手段を有し、
前記第1の取得手段で取得した電子証明書の有効期限が過ぎている場合、前記登録手段は、前記第1の取得手段で取得した電子証明書を前記記憶手段に登録しないことを特徴とする請求項3乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
情報処理装置であって、
電子証明書を外部装置から取得する第1の取得手段と、
前記第1の取得手段で取得した電子証明書で使われているアルゴリズムの利用期限を取得する第2の取得手段と、
前記第1の取得手段で取得した電子証明書の有効期限と前記第2の取得手段で取得した公開鍵の利用期限とを比較する比較手段とを有することを特徴とする情報処理装置。
【請求項9】
電子証明書で使われているアルゴリズムは、ハッシュアルゴリズムまたは署名アルゴリズムであることを特徴とする請求項8に記載の情報処理装置。
【請求項10】
情報処理装置で実行される情報処理方法であって、
第1の取得手段が、電子証明書を外部装置から取得する第1の取得ステップと、
第2の取得手段が、前記第1の取得ステップで取得した電子証明書で使われている公開鍵の利用期限を取得する第2の取得ステップと、
比較手段が、前記第1の取得ステップで取得した電子証明書の有効期限と前記第2の取得ステップで取得した公開鍵の利用期限とを比較する比較ステップとを有することを特徴とする情報処理方法。
【請求項11】
外部装置から電子証明書を取得する情報処理装置のコンピュータにより読み取り可能なコンピュータプログラムであって、
外部装置から取得した電子証明書で使われている公開鍵の利用期限を取得する取得ステップと、
外部装置から取得した電子証明書の有効期限と前記取得ステップで取得した公開鍵の利用期限とを比較する比較ステップと、を前記コンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項1】
情報処理装置であって、
電子証明書を外部装置から取得する第1の取得手段と、
前記第1の取得手段で取得した電子証明書で使われている公開鍵の利用期限を取得する第2の取得手段と、
前記第1の取得手段で取得した電子証明書の有効期限と前記第2の取得手段で取得した公開鍵の利用期限とを比較する比較手段とを有することを特徴とする情報処理装置。
【請求項2】
公開鍵の種類ごとに、公開鍵の利用期限を定めたテーブルを記憶するテーブル記憶手段を有し、
前記第2の取得手段は、前記第1の取得手段で取得した電子証明書で使われている公開鍵の利用期限を前記テーブルから取得することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
利用可能な電子証明書を記憶する記憶手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記第1の取得手段で取得した電子証明書を前記記憶手段に登録する登録手段と、を有することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
利用可能な電子証明書を記憶する記憶手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記第1の取得手段で取得した電子証明書を前記記憶手段に登録するか否かをユーザに選択させる選択手段と、
前記第1の取得手段で取得した電子証明書を前記記憶手段に登録するとユーザが選択した場合、前記第1の取得手段で取得した電子証明書を前記記憶手段に登録する登録手段と、を有することを特徴とする請求項1または2に記載の情報処理装置。
【請求項5】
利用可能な電子証明書を記憶する記憶手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記第1の取得手段で取得した電子証明書の有効期限を変更する変更手段と、
前記変更手段で変更した電子証明書を前記記憶手段に登録する登録手段と、を有することを特徴とする請求項1または2に記載の情報処理装置。
【請求項6】
利用可能な電子証明書を記憶する記憶手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記第1の取得手段で取得した電子証明書の有効期限よりも長い利用期限を有する公開鍵を作成する作成手段と、
前記第1の取得手段で取得した電子証明書の有効期限が前記第2の取得手段で取得した公開鍵の利用期限よりも短い場合、前記作成手段で作成した公開鍵に基づく電子証明書を前記記憶手段に登録する登録手段と、を有することを特徴とする請求項1または2に記載の情報処理装置。
【請求項7】
前記第1の取得手段で取得した電子証明書の有効期限が過ぎているか否かを判断する判断手段を有し、
前記第1の取得手段で取得した電子証明書の有効期限が過ぎている場合、前記登録手段は、前記第1の取得手段で取得した電子証明書を前記記憶手段に登録しないことを特徴とする請求項3乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
情報処理装置であって、
電子証明書を外部装置から取得する第1の取得手段と、
前記第1の取得手段で取得した電子証明書で使われているアルゴリズムの利用期限を取得する第2の取得手段と、
前記第1の取得手段で取得した電子証明書の有効期限と前記第2の取得手段で取得した公開鍵の利用期限とを比較する比較手段とを有することを特徴とする情報処理装置。
【請求項9】
電子証明書で使われているアルゴリズムは、ハッシュアルゴリズムまたは署名アルゴリズムであることを特徴とする請求項8に記載の情報処理装置。
【請求項10】
情報処理装置で実行される情報処理方法であって、
第1の取得手段が、電子証明書を外部装置から取得する第1の取得ステップと、
第2の取得手段が、前記第1の取得ステップで取得した電子証明書で使われている公開鍵の利用期限を取得する第2の取得ステップと、
比較手段が、前記第1の取得ステップで取得した電子証明書の有効期限と前記第2の取得ステップで取得した公開鍵の利用期限とを比較する比較ステップとを有することを特徴とする情報処理方法。
【請求項11】
外部装置から電子証明書を取得する情報処理装置のコンピュータにより読み取り可能なコンピュータプログラムであって、
外部装置から取得した電子証明書で使われている公開鍵の利用期限を取得する取得ステップと、
外部装置から取得した電子証明書の有効期限と前記取得ステップで取得した公開鍵の利用期限とを比較する比較ステップと、を前記コンピュータに実行させることを特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−186695(P2012−186695A)
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願番号】特願2011−48975(P2011−48975)
【出願日】平成23年3月7日(2011.3.7)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願日】平成23年3月7日(2011.3.7)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]