説明

鍵管理装置及び暗号処理システム及びコンピュータプログラム及び鍵管理方法

【課題】暗号処理に使用する鍵の漏洩を防ぐとともに、鍵の更新を容易にする。
【解決手段】鍵・パスワード生成管理装置100は、業務アプリケーション装置500の利用する鍵の生成および管理用のパスワード情報を作成する。キーストア装置200は、パスワードにより保持する鍵情報へのアクセス制御を行う。パスワードストア装置300は、パスワードにより保持するパスワード情報へのアクセス制御を行う。鍵・パスワード生成管理装置100は、管理者・開発者にも入手が困難な業務アプリケーション装置500の呼び出し情報(コールスタック等)と管理者の入力するパスワード情報からキーストアパスワードを作成する。鍵・パスワード生成管理装置100は、作成した鍵情報からパスワードストアパスワードを作成する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、暗号処理に使用する鍵を管理する鍵管理装置に関する。
【背景技術】
【0002】
アプリケーションプログラムで鍵を管理する方式には、例えば、アプリケーションプログラムのなかに鍵を埋め込む(ハードコーディング)ことにより、外部から鍵を読み出すことができないようにする方式や、アプリケーションプログラムのなかに埋め込んだデータと、管理者が入力する管理パスワードとを合成することにより、鍵を生成する方式がある。また、鍵を管理する鍵管理装置で鍵を管理し、パスワードを使って鍵にアクセスする方式がある。パスワードは、例えば、管理者が入力する方式、アプリケーションプログラムに埋め込む方式、外部ファイルに記述しておきアプリケーションプログラムが読み込む方式などがある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−304237号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
アプリケーションプログラムに鍵を埋め込む方式は、アプリケーションプログラム自体を更新しなければ、鍵を更新できない。また、アプリケーションプログラムの開発者が鍵を知っているので、内部犯行による情報漏洩の可能性がある。
アプリケーションプログラムに埋め込んだデータと管理パスワードとを合成して鍵を生成する方式は、管理パスワードを変えれば鍵を更新できるが、管理者が知っている管理パスワードが漏洩するなどして、埋め込みデータを知っている開発者が管理パスワードを知った場合などには、やはり情報漏洩の可能性がある。
鍵管理装置が鍵を管理する方式の場合、管理者や開発者がパスワードを知っている場合、鍵管理装置から鍵を読み出す可能性がある。
【0005】
この発明は、例えば上記のような課題を解決するためになされたものであり、鍵を容易に更新できるとともに、鍵の漏洩を防ぐことを目的とする。
【課題を解決するための手段】
【0006】
この発明にかかる鍵管理装置は、データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、取得要求入力部と、鍵パスワード算出部と、鍵取得部と、新規鍵生成部と、鍵登録部と、鍵出力部と、更新要求入力部と、更新鍵生成部と、鍵更新部と、更新鍵出力部とを有し、
上記鍵記憶部は、上記記憶装置を用いて、暗号処理に使用する鍵と上記鍵にアクセスするための鍵パスワードとを記憶し、
上記取得要求入力部は、上記処理装置を用いて、取得すべき鍵の管理に使用する管理パスワードを入力し、
上記鍵パスワード算出部は、上記処理装置を用いて、上記取得要求入力部が入力した管理パスワードに基づいて、鍵パスワードを算出し、
上記鍵取得部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、上記処理装置を用いて、上記鍵記憶部が記憶した鍵を取得し、
上記新規鍵生成部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、鍵を生成し、
上記鍵登録部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、上記新規鍵生成部が生成した鍵と、上記鍵パスワード算出部が算出した鍵パスワードとを上記鍵記憶部に記憶させ、
上記鍵出力部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、上記処理装置を用いて、上記鍵取得部が取得した鍵を出力し、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、上記新規鍵生成部が生成した鍵を出力し、
上記更新要求入力部は、上記処理装置を用いて、更新すべき鍵を入力し、
上記更新鍵生成部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、鍵を生成し、
上記鍵更新部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、上記鍵記憶部が記憶した鍵に代えて、上記更新鍵生成部が生成した鍵を上記鍵記憶部に記憶させ、
上記更新鍵出力部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、上記更新鍵生成部が生成した鍵を出力することを特徴とする。
【発明の効果】
【0007】
この発明にかかる鍵管理装置によれば、鍵を容易に更新できるとともに、鍵の漏洩を防ぐことができる。
【図面の簡単な説明】
【0008】
【図1】実施の形態1における暗号処理システム800の全体構成の一例を示すシステム構成図。
【図2】実施の形態1における鍵管理装置10及び暗号/復号化装置400及び業務アプリケーション装置500及びクライアントアプリケーション装置600の外観の一例を示す斜視図。
【図3】実施の形態1における鍵管理装置10及び暗号/復号化装置400及び業務アプリケーション装置500及びクライアントアプリケーション装置600のハードウェア資源の一例を示す図。
【図4】実施の形態1における暗号処理システム800の初期処理の流れの一例を示すシーケンス図。
【図5】実施の形態1におけるキーストアパスワードの作成手順の一例を示す図。
【図6】実施の形態1におけるキーストアパスワードの作成例を示す図。
【図7】実施の形態1におけるパスワードストアパスワードの作成手順の一例を示す図。
【図8】実施の形態1におけるパスワードストアパスワードの作成例を示す図。
【図9】実施の形態1における暗号処理システム800の再起動時の処理の流れの一例を示すシーケンス図。
【図10】実施の形態1における暗号処理システム800の鍵更新時の処理の流れの一例を示すシーケンス図。
【図11】実施の形態2における暗号処理システム800の機能ブロックの構成の一例を示すブロック構成図。
【図12】実施の形態2における暗号処理システム800全体の処理の流れの一例を示すフローチャート図。
【図13】実施の形態2における鍵管理装置10の処理の詳細な流れの一例を示すフローチャート図。
【図14】実施の形態2における実行装置501の処理の詳細な流れの一例を示すフローチャート図。
【図15】実施の形態3における暗号処理システム800の機能ブロックの構成の一例を示すブロック構成図。
【図16】実施の形態3における暗号処理システム800全体の処理の流れの一例を示すフローチャート図。
【図17】実施の形態3における鍵管理装置10の処理の詳細な流れの一例を示すフローチャート図。
【図18】実施の形態3における実行装置501の処理の詳細な流れの一例を示すフローチャート図。
【発明を実施するための形態】
【0009】
実施の形態1.
実施の形態1について、図1〜図10を用いて説明する。
【0010】
図1は、この実施の形態における暗号処理システム800の全体構成の一例を示すシステム構成図である。
暗号処理システム800は、この実施の形態における鍵管理方式を用いたシステムの一例である。
暗号処理システム800は、鍵管理装置10と、業務アプリケーション装置500と、暗号/復号化装置400と、クライアントアプリケーション装置600とを有する。
【0011】
鍵管理装置10は、業務アプリケーション装置500が暗号処理に使用する鍵を管理する。鍵管理装置10は、鍵・パスワード生成管理装置100と、キーストア装置200と、パスワードストア装置300とを有する。鍵管理装置10は、API(Apprication Programming Interface)やネットワークなどにより、外部の業務アプリケーション装置500と接続されている。
【0012】
業務アプリケーション装置500(実行装置)は、業務アプリケーションを実行する装置である。1つの鍵管理装置10に対して、複数の業務アプリケーション装置500がある構成であってもよいし、1つの業務アプリケーション装置500が、複数の業務アプリケーションを実行する構成であってもよい。
業務アプリケーション装置500は、管理者や定義ファイルなどからパスワード情報を取得する。業務アプリケーション装置500(取得要求部)は、渡されたパスワード情報を用いて、鍵管理装置10に対して、情報の暗号/復号化を行う鍵の取得を要求する。業務アプリケーション装置500は、クライアントアプリケーション装置600からの処理要求の延長やその他の処理をする際、鍵・パスワード生成管理装置100から取得した暗号/復号鍵を暗号/復号化装置400に渡して、暗号処理を要求する。
暗号/復号化装置400(暗号処理部)は、業務アプリケーション装置500からの要求に応じて、業務アプリケーション装置500から受け取った鍵を使って、情報の暗号/復号化などの暗号処理を行う。
【0013】
キーストア装置200(順記憶部)は、鍵を記憶している。キーストア装置200は、例えば、鍵情報を保持するファイルや、ハードウェアデバイスなどである。キーストア装置200が記憶した鍵にアクセスするためには、キーストアパスワード(鍵パスワード)が必要である。キーストア装置200(順記憶部)は、鍵を記憶するにあたり、鍵と一緒にその鍵のキーストアパスワードを記憶する。キーストア装置200(鍵登録部、鍵取得部)は、キーストアパスワードによって、内部に管理する鍵情報の登録/取得/更新/削除のアクセス制御を行う。例えば、キーストア装置200(鍵取得部)は、記憶した鍵の読み出し要求とともにキーストアパスワードを入力し、入力したキーストアパスワードが、記憶したキーストアパスワードと一致した場合のみ、鍵を返す。
パスワードストア装置300(逆記憶部)は、キーストアパスワードを記憶している。パスワードストア装置300は、例えば、パスワード情報を保持するファイルや、ハードウェアデバイスなどである。パスワードストア装置300が記憶したキーストアパスワードにアクセスするためには、パスワードストアパスワード(逆パスワード)が必要である。パスワードストア装置300(逆記憶部)は、キーストアパスワードを記憶するにあたり、キーストアパスワードと一緒にそのキーストアパスワードのパスワードストアパスワードを記憶する。パスワードストア装置300(パスワード登録部、パスワード取得部)は、パスワードストア・パスワードによって内部に管理するパスワード情報の登録/取得/更新/削除のアクセス制御を行う。例えば、パスワードストア装置300(パスワード取得部)は、記憶したキーストアパスワードの読み出し要求とともにパスワードストアパスワードを入力し、入力したパスワードストアパスワードが、記憶したパスワードストアパスワードと一致した場合のみ、キーストアパスワードを返す。
【0014】
鍵・パスワード生成管理装置100は、業務アプリケーション装置500からの鍵取得要求に対して、キーストア装置200から鍵を取得する。キーストア装置200に鍵がない場合、鍵・パスワード生成管理装置100は、鍵を新規に生成し、生成した鍵をキーストア装置200に登録する。鍵・パスワード生成管理装置100は、取得あるいは生成した鍵を、業務アプリケーション装置500に対して戻す。
鍵・パスワード生成管理装置100は、業務アプリケーション装置500の呼び出し情報とパスワード情報とに基づいて、キーストアパスワードを生成し、キーストア装置200にアクセスする。また、鍵・パスワード生成管理装置100は、鍵情報に基づいて、パスワードストアパスワードを生成し、パスワードストア装置300にアクセスする。
【0015】
図2は、この実施の形態における鍵管理装置10及び暗号/復号化装置400及び業務アプリケーション装置500及びクライアントアプリケーション装置600の外観の一例を示す斜視図である。
鍵管理装置10及び暗号/復号化装置400及び業務アプリケーション装置500及びクライアントアプリケーション装置600は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
なお、上記の構成は一例である。鍵管理装置10などは、プリンタ装置906やファクシミリ機932などの出力装置を有さない最小限の構成であってもよい。不要な出力装置がない最小限の構成とすることで、情報漏洩を防止することができる。
【0016】
図3は、この実施の形態における鍵管理装置10及び暗号/復号化装置400及び業務アプリケーション装置500及びクライアントアプリケーション装置600のハードウェア資源の一例を示す図である。
鍵管理装置10及び暗号/復号化装置400及び業務アプリケーション装置500及びクライアントアプリケーション装置600は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信装置915、キーボード902、スキャナ装置907、FDD904、CDD905などは、入力部、入力装置の一例である。
また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
【0017】
通信装置915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信装置915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不用となる。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
【0018】
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータは、「〜ファイル」や「〜データベース」の各項目として磁気ディスク装置920などの不揮発性メモリが記憶し、あるいは、RAM914など揮発性メモリが一時的に記憶する。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0019】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【0020】
図4は、この実施の形態における暗号処理システム800の初期処理の流れの一例を示すシーケンス図である。
【0021】
「1:パスワード設定」において、業務アプリケーション装置500(取得要求部)は、管理者または定義ファイルなどからパスワード情報を取得する。
「1.1:鍵取得要求」において、業務アプリケーション装置500(取得要求部)は、取得したパスワード情報を用いて、鍵・パスワード生成管理装置100に対して、鍵取得要求を行う。この際、業務アプリケーション装置500は、鍵・パスワード生成管理装置100に対して、パスワード情報と一緒に、呼び出し情報(文脈)としてコールスタックの情報を渡す。
「1.1.1:キーストアパスワードの生成」において、鍵・パスワード生成管理装置100(鍵パスワード算出部)は、業務アプリケーション装置500からの呼び出し情報(コールスタックなど)とパスワード情報とに基づいて、キーストアパスワードを算出する。
【0022】
「1.1.2:鍵取得要求」において、鍵・パスワード生成管理装置100(パスワード算出部)は、キーストア装置200(鍵取得部)に対して、生成したキーストアパスワードを用いて鍵の取得要求を行う。鍵・パスワード生成管理装置100は、キーストア装置200に対して、キーストアパスワードを通知する。なお、鍵・パスワード生成管理装置100は、キーストアパスワードに加えて、例えばエイリアス名をキーストア装置200に対して通知する構成であってもよい。エイリアス名は、1つの鍵管理装置10が鍵を管理する業務アプリケーションが複数ある場合に、業務アプリケーションを区別するためのデータである。鍵・パスワード生成管理装置100は、例えば、業務アプリケーションから渡されるパラメータや、鍵パスワード生成管理装置で呼び出し情報などから生成する値を、エイリアス名として、キーストア装置200に対して通知する。
【0023】
初回起動時など、キーストア装置200(順記憶部)に鍵が登録されていない場合、キーストア装置200(鍵取得部)は、鍵・パスワード生成管理装置100に対して、鍵の取得に失敗したことを通知する。その場合、「1.1.3:鍵生成」において、鍵・パスワード生成管理装置100(新規鍵生成部)は、新規に鍵の生成を行う。
鍵・パスワード生成管理装置100(新規鍵生成部)は、鍵アルゴリズムや鍵長などのパラメータにしたがって、鍵を生成する。鍵・パスワード生成管理装置100は、例えば、設定ファイル等に保持されているパラメータを読み出して鍵を生成する構成であってもよいし、業務アプリケーションから指定されるパラメータを用いて鍵を生成する構成であってもよい。
【0024】
「1.1.4:鍵登録要求」において、鍵・パスワード生成管理装置100(鍵登録部)は、生成した鍵を、同じく生成したキーストアパスワードを用いて、キーストア装置200(順記憶部)に対して登録する。これ以降、この鍵情報にアクセスするには、登録時に設定したキーストアパスワードが必要になる。
【0025】
「1.1.5:パスワードストアパスワードの生成」において、鍵・パスワード生成管理装置100(逆パスワード算出部)は、生成した鍵情報に対して符号化を行うことにより、パスワードストアパスワードを算出する。
「1.1.6:パスワード登録要求」において、鍵・パスワード生成管理装置100(パスワード登録部)は、パスワードストア装置300(逆記憶部)に対して、生成したパスワードストア・パスワードを用いてキーストアパスワードを登録する。
【0026】
この処理の後、鍵・パスワード生成管理装置100(鍵出力部)は、業務アプリケーション装置500に対して、生成した鍵を、鍵取得要求の結果として返す。
業務アプリケーション装置500(暗号鍵記憶部)は、返された鍵を受け取って、オンメモリ(揮発性記憶装置)で保持する。
【0027】
「2:処理要求」において、クライアントアプリケーション装置600は、業務アプリケーション装置500に対して、処理を要求する。業務アプリケーション装置500は、要求された処理の実行にあたり暗号化処理が必要な場合、暗号/復号化装置400(暗号処理部)に対して、平文と、オンメモリに保持している鍵とを通知して、暗号化を要求する。暗号/復号化装置400は、通知された鍵を使って、平文を暗号化し、暗号文を返す。
【0028】
「3:処理要求」において、クライアントアプリケーション装置600は、業務アプリケーション装置500に対して、処理を要求する。業務アプリケーション装置500は、要求された処理の実行にあたり復号処理が必要な場合、暗号/復号化装置400(暗号処理部)に対して、暗号文と、オンメモリに保持している鍵とを通知して、復号を要求する。暗号/復号化装置400は、通知された鍵を使って、暗号文を復号し、復号した平文を返す。
【0029】
図5は、この実施の形態におけるキーストアパスワードの作成手順の一例を示す図である。
例えば、鍵・パスワード生成管理装置100(取得要求入力部)は、業務アプリケーション装置500からパスワード701と、呼び出し情報702(コールスタック)とを受け取る。鍵・パスワード生成管理装置100(鍵パスワード算出部)は、受け取ったパスワード701と、呼び出し情報702とを連結した情報(連結データ703)を作成する。鍵・パスワード生成管理装置100(鍵パスワード算出部)は、作成した情報を、一方向性関数を使って、キーストアパスワードとして利用可能な文字列等(キーストアパスワード705)に変換する。例えば、鍵・パスワード生成管理装置100(鍵パスワード算出部)は、この連結した値に対してハッシュ値を取り、それをBase64エンコードするなどの符号化を行い、その結果をキーストアパスワードとする。
【0030】
図6は、この実施の形態におけるキーストアパスワードの作成例を示す図である。
パスワード701は、例えば、管理者が業務アプリケーション装置500に入力する。
業務アプリケーション装置500は、例えば、パスワード701を引数として、鍵・パスワード生成管理装置100が提供する鍵管理オブジェクトの鍵取得要求メソッドを呼び出す。このとき、業務アプリケーション装置500には、引数であるパスワード701だけでなく、呼び出し情報702が渡される。
呼び出し情報702(コールスタック)は、例えば、業務アプリケーション装置500が提供するオブジェクトのメソッドがどのような順で呼び出されているかなどを表わすデータである。例えば、この図に示した呼び出し情報702は、クラス「jp.co.mitsubishielectric.key.App」のメソッド「main」が、ソースコード「App.java」の18行目で、クラス「jp.co.mitsubishielectric.key.App」のメソッド「initialize」を呼び出したことを表わしている。更に、この図に示した呼び出し情報702は、呼び出されたメソッド「initialize」が、そのソースコード「App.java」の27行目で、クラス「jp.co.mitsubishielectric.key.KeyManage」のメソッド「getKeyPair」を呼び出したことを表わしている。このように、呼び出し情報702は、業務アプリケーション装置500が実行しているプログラムが自動的に生成するものであり、プログラムの構造によって定まる固有のデータであって、業務アプリケーション装置500の管理者などが任意に設定できるものではない。業務アプリケーション装置500や他の装置が実行する他のプログラムが、鍵取得要求メソッドを呼び出したとすると、異なる呼び出し情報702が鍵・パスワード生成管理装置100に渡される。
連結データ703は、鍵・パスワード生成管理装置100がパスワード701と呼び出し情報702とを連結して生成したデータである。鍵・パスワード生成管理装置100は、例えば、パスワード701を表わす文字列データの後ろに、呼び出し情報702を表わす文字列データを結合して、連結データ703を生成する。
ハッシュ値704は、鍵・パスワード生成管理装置100が連結データ703をハッシュして算出したハッシュ値(16進表記)である。
キーストアパスワード705は、鍵・パスワード生成管理装置100がハッシュ値704をエンコードした文字列データである。
【0031】
図7は、この実施の形態におけるパスワードストアパスワードの作成手順の一例を示す図である。
例えば、鍵・パスワード生成管理装置100(逆パスワード算出部)は、一方向性関数を使って、鍵706に対するハッシュ値を生成する。鍵・パスワード生成管理装置100(逆パスワード算出部)は、その結果に対してBase64エンコードを行うことで、パスワードストアパスワード708として利用可能な文字列等に変換する。
【0032】
図8は、この実施の形態におけるパスワードストアパスワードの作成例を示す図である。
鍵706は、例えば、RSA(登録商標)のプライベート鍵(16進表記)である。鍵・パスワード生成管理装置100が鍵706を生成する。
ハッシュ値707は、鍵・パスワード生成管理装置100が鍵706をハッシュして算出したハッシュ値(16進表記)である。
パスワードストアパスワード708は、鍵・パスワード生成管理装置100がハッシュ値707をエンコードした文字列データである。
【0033】
図9は、この実施の形態における暗号処理システム800の再起動時の処理の流れの一例を示すシーケンス図である。
再起動などにより、業務アプリケーション装置500のオンメモリ上から鍵が削除された場合、再び鍵・パスワード生成管理装置100から鍵を取得する必要が生じる。
【0034】
「1:パスワード設定」において、業務アプリケーション装置500(取得要求部)は、管理者などからパスワードを取得する。
「1.1:鍵取得要求」において、業務アプリケーション装置500(取得要求部)は、取得したパスワード情報を用いて、鍵・パスワード生成管理装置100に対して、鍵取得要求を行う。この際、業務アプリケーション装置500は、鍵・パスワード生成管理装置100に対して、パスワード情報と一緒に、呼び出し情報としてコールスタックの情報を渡す。
【0035】
「1.1.1:キーストアパスワードの生成」において、鍵・パスワード生成管理装置100(鍵パスワード算出部)は、業務アプリケーション装置500からの呼び出し情報(コールスタックなど)とパスワード情報とに基づいて、キーストアパスワードを算出する。
業務アプリケーション装置500が鍵・パスワード生成管理装置100に渡すコールスタックは、初期処理のときと同じである。したがって、業務アプリケーション装置500が管理者などから取得したパスワードが初期処理のときと同じであれば、鍵・パスワード生成管理装置100が算出するキーストアパスワードは、初期処理のときと同じになる。
【0036】
「1.1.2:鍵取得要求」において、鍵・パスワード生成管理装置100(パスワード算出部)は、キーストア装置200(鍵取得部)に対して、生成したキーストアパスワードを用いて鍵の取得要求を行う。
今回は、キーストア装置200(順記憶部)に登録済の鍵情報がある。キーストア装置200(鍵取得部)は、鍵・パスワード生成管理装置100から通知されたキーストアパスワードが、登録されたキーストアパスワードと一致すれば、登録された鍵を、鍵・パスワード生成管理装置100に対して返す。
鍵・パスワード生成管理装置100(鍵出力部)は、キーストア装置200から取得した鍵を、業務アプリケーション装置500に対して返す。
【0037】
図10は、この実施の形態における暗号処理システム800の鍵更新時の処理の流れの一例を示すシーケンス図である。
【0038】
機密の漏洩を防ぐには、鍵を定期的に更新することが望ましい。管理者が鍵を更新すべき時期が来たと判断した場合、業務アプリケーション装置500に対して鍵の更新を要求する。
「1:鍵更新要求」において、業務アプリケーション装置500(更新要求部)は、管理者からの鍵更新要求を受ける。
「1.1:鍵更新要求」において、業務アプリケーション装置500(更新要求部)は、鍵・パスワード生成管理装置100に対して、オンメモリに保持している更新前の古い鍵を通知して、鍵の更新要求を行う。なお、業務アプリケーション装置500は、タイマーなどを用いて鍵を生成・更新してからの経過時間を測定し、所定の期間(例えば一週間や一か月)が経過した場合に、管理者からの要求によらず自動的に、鍵・パスワード生成管理装置100に対して鍵の更新を要求する構成であってもよい。
【0039】
業務アプリケーション装置500のコールスタックは、鍵取得要求時と異なる。このため、鍵・パスワード生成管理装置100は、業務アプリケーション装置500からパスワードと呼び出し情報とを受け取ったとしても、初期処理時や再起動時と同じキーストアパスワードを生成することはできない。その代わりとして、鍵・パスワード生成管理装置100は、パスワードストア装置300にアクセスして、キーストアパスワードを入手する。
【0040】
「1.1.1:パスワードストアパスワードの生成」において、鍵・パスワード生成管理装置100(逆パスワード算出部)は、業務アプリケーション装置500から通知された鍵に基づいて、パスワードストアパスワード(逆パスワード)を生成する。業務アプリケーション装置500から通知された鍵が、キーストア装置200(順記憶部)に登録されている古い鍵と同一であれば、鍵・パスワード生成管理装置100が生成するパスワードストアパスワードは、初期処理のときと同じになるから、パスワードストア装置300(逆記憶部)に登録されているパスワードストアパスワードと一致する。
「1.1.2:パスワード取得要求」において、鍵・パスワード生成管理装置100(逆パスワード算出部)は、パスワードストア装置300(パスワード取得部)に対して、生成したパスワードストアパスワードを通知して、パスワードの取得を要求する。パスワードストア装置300(パスワード取得部)は、鍵・パスワード生成管理装置100から通知されたパスワードストアパスワードが、初期処理時に登録されたパスワードストアパスワードと一致すれば、初期処理時に登録されたキーストアパスワードを、鍵・パスワード生成管理装置100に対して返す。鍵・パスワード生成管理装置100は、パスワードストア装置300が返したキーストアパスワードを取得する。これにより、鍵・パスワード生成管理装置100は、初期処理時や再起動時と同じキーストアパスワードを入手する。
【0041】
「1.1.3:鍵生成」において、鍵・パスワード生成管理装置100(更新鍵生成部)は、更新後の新しい鍵を生成する。
「1.1.4:鍵更新登録要求」において、鍵・パスワード生成管理装置100(更新鍵生成部)は、キーストア装置200に対して、パスワードストア装置300から入手したキーストアパスワードと、生成した更新後の新しい鍵とを通知して、鍵の更新登録を要求する。キーストア装置200(鍵更新部)は、鍵・パスワード生成管理装置100から通知されたキーストアパスワードが、初期処理時に登録されたキーストアパスワードと一致すれば、更新要求を受け入れる。キーストア装置200(順記憶部)は、初期処理時に登録された古い鍵を削除し、その代わりとして、鍵・パスワード生成管理装置100から通知された新しい鍵を記憶する。なお、更新されるのは鍵だけであり、キーストアパスワードは、更新前と変わらず、初期処理時に登録されたキーストアパスワードのままである。
「1.1.5:パスワードストアパスワードの生成」において、鍵・パスワード生成管理装置100(逆パスワード算出部)は、生成した新しい鍵に基づいて、パスワードストアパスワードを生成する。鍵・パスワード生成管理装置100が生成するパスワードストアパスワードは、鍵が更新されたので、更新前のパスワードストアパスワードと異なる。
「1.1.6:パスワード更新登録要求」において、鍵・パスワード生成管理装置100は、パスワードストア装置300に対して、生成したパスワードストアパスワードと、パスワードストア装置300から入力したキーストアパスワードとを通知して、パスワードの更新登録を要求する。パスワードストア装置300(鍵更新部)は、鍵・パスワード生成管理装置100から通知されたキーストアパスワードが、初期処理時に登録されたキーストアパスワードと一致すれば、更新要求を受け入れる。パスワードストア装置300(逆記憶部)は、初期処理時に登録された古いパスワードストアパスワードを削除し、その代わりとして、鍵・パスワード生成管理装置100から通知された新しいパスワードストアパスワードを記憶する。なお、更新されるのはパスワードストアパスワードだけであり、キーストアパスワードは、更新前と変わらず、初期処理時に登録されたキーストアパスワードのままである。
【0042】
その後、鍵・パスワード生成管理装置100(更新鍵出力部)は、業務アプリケーション装置500に対して、新しく作成した鍵を返す。
業務アプリケーション装置500(暗号鍵更新部)は、更新された新しい鍵をオンメモリに保持して、暗号処理をする。業務アプリケーション装置500(暗号更新部)は、例えば、既に暗号化したデータを古い鍵を使って復号し、復号した平文を新しい鍵を使って再暗号化するなどの処理を行う。
【0043】
この実施の形態における暗号処理システム800(鍵管理方式)は、鍵を用いて情報の暗号/復号化を行う暗号/復号化装置400と、内部に管理する鍵情報の登録/取得/更新/削除のアクセス制御をエイリアス名とパスワードによって管理するキーストア装置200と、内部に管理するパスワード情報の登録/取得/更新/削除のアクセス制御をエイリアス名とパスワードによって管理するパスワードストア装置300と、鍵/パスワードの生成および上記装置への情報の登録/取得/更新/削除を行う鍵・パスワード生成管理装置100とを備え、アプリケーション(業務アプリケーション装置500)からの呼び出し情報と管理者(設定ファイル等を含む)からのパスワード情報を組み合わせてキーストア装置用のパスワード(キーストア・パスワード)を生成し、生成した鍵情報を、本キーストアパスワードを用いて登録する。
【0044】
暗号処理システム800は、鍵管理装置10に登録する鍵情報を符号化してパスワードを生成し、キーストアパスワードを管理するパスワードストア装置300のパスワード(パスワードストア・パスワード)として用いる。
【0045】
これにより、プログラムに埋め込んだ情報など開発者が知る情報を使わないので、管理者および開発者による内部からの不正なアクセスを防ぐことができる。これにより、管理者/開発者からの不正アクセスに対する強度が向上する。また、鍵情報の更新が可能なので、危殆化を防ぐことができる。
【0046】
暗号・復号および鍵管理装置10は、業務アプリケーション装置500の利用する鍵の生成および管理用のパスワード情報を作成する鍵・パスワード生成管理装置100と、パスワードにより保持する鍵情報へのアクセス制御を行うキーストア装置200と、パスワードにより保持するパスワード情報へのアクセス制御を行うパスワードストア装置300とを備え、管理者/開発者にも入手が困難な業務アプリケーションの呼び出し情報(コールスタック等)と管理者の入力するパスワード情報からキーストアパスワードを作成することにより、管理者/開発者からの不正アクセスに対する強度を向上させることができる。
また、作成した鍵情報からパスワードストア・パスワードを作成することにより、業務アプリケーションからの鍵の更新要求に応じてキーストア装置内の鍵を更新することができる。
【0047】
これにより、情報を暗号/復号化するシステムにおいて、鍵情報の更新を可能にするとともに、管理者/開発者の不正アクセスによる情報漏えいのリスクを低減することが可能となる。
【0048】
実施の形態2.
実施の形態2について、図11〜図14を用いて説明する。
なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。
【0049】
図11は、この実施の形態における暗号処理システム800の機能ブロックの構成の一例を示すブロック構成図である。
【0050】
暗号処理システム800は、例えば、実行装置501と、鍵管理装置10とを有する。
実行装置501は、平文データを入力し、入力した平文データを暗号化して暗号化データを生成し、生成した暗号化データを記憶しておく。実行装置501は、必要に応じて、記憶した暗号化データを復号して、平文データを復元し、復元した平文データ(復元平文データ)を出力する。実行装置501のハードウェア構成は、例えば、図3を用いて説明した鍵管理装置10のハードウェア構成と同様である。
【0051】
鍵管理装置10は、実行装置501が暗号化や復号などの暗号処理に使用する鍵を管理する。
鍵管理装置10は、例えば、鍵記憶部110と、取得要求入力部121と、更新要求入力部122と、応答出力部123と、鍵パスワード算出部131と、鍵取得部132と、鍵生成部133と、応答生成部134と、鍵登録部135と、逆パスワード算出部136と、パスワード取得部137とを有する。
【0052】
鍵記憶部110は、磁気ディスク装置920(記憶装置)を用いて、鍵管理装置10が管理している鍵を表わす鍵データを記憶している。また、鍵データに対するアクセスを制限するため、鍵記憶部110は、鍵データにアクセスするための鍵パスワードを記憶している。
また、1つの鍵管理装置10が鍵を管理する実行装置501が複数ある場合や、1つの実行装置501が複数の鍵を使用する場合などが想定されるため、鍵管理装置10は、複数の鍵を管理する場合がある。このため、鍵記憶部110は、複数の鍵データを記憶する。それぞれの鍵データを識別するため、鍵記憶部110は、それぞれの鍵の識別データを記憶する。
【0053】
鍵記憶部110は、順記憶部201と、逆記憶部301とを有する。
順記憶部201は、磁気ディスク装置920(記憶装置)を用いて、鍵を表わす鍵データと、その鍵の鍵パスワードと、その鍵の識別データとを対応づけて記憶する。
逆記憶部301は、磁気ディスク装置920(記憶装置)を用いて、順記憶部201が記憶した鍵パスワードと、その鍵パスワードにアクセスするための逆パスワードと、その鍵パスワードによってアクセスされる鍵の識別データとを対応づけて記憶する。
【0054】
取得要求入力部121は、CPU911(処理装置)を用いて、実行装置501が通知した鍵取得要求メッセージを入力する。鍵取得要求メッセージは、鍵管理装置10が管理している鍵の取得を要求することを表わす。鍵取得要求メッセージは、取得したい鍵の識別データと、その鍵に対応する管理パスワードとを含む。また、鍵取得要求メッセージは、実行装置501が本物であることを証明するための証明データを含む。これは、実行装置501になりすました偽物に鍵管理装置10が管理する鍵を窃取されないためである。証明データには、例えば、実行装置501に固有の識別データや、公開鍵暗号を利用した署名データなどがある。また、証明データは、取得要求入力部121が入力した鍵取得要求メッセージを実行装置501が通知した文脈を表わす文脈データであってもよい。
ここでいう「文脈」とは、例えば、コンピュータがプログラムを実行する際、サブルーチンや関数、メソッドなどの呼び出し時に、保存しておく戻り先などを表わす情報のことである。すなわち、「文脈」は、実行装置501が実行装置501として機能するために実行しているプログラムの構造によって定まるものであり、偽造することができない。例えば、実行装置501が実行しているプログラム内において、鍵管理装置10は、一つのオブジェクトとして認識され、そのオブジェクトの鍵取得要求メソッドを呼び出すことによって、鍵管理装置10に対する鍵取得要求メッセージが通知される。「文脈」は、プログラム言語の仕様によって、鍵管理装置10に通知される。
このため、文脈データを証明データとして利用すると、単なる識別データを利用する場合と違って、なりすましが困難になる。文脈データを証明データとして利用すると、公開鍵暗号を利用した署名データを利用する場合と違って、計算量が少ないなど、実行装置501が本物であることを証明するためのコストを抑えることができる。
【0055】
更新要求入力部122は、CPU911(処理装置)を用いて、実行装置501が通知した鍵更新要求メッセージを入力する。鍵更新要求メッセージは、鍵管理装置10が管理している鍵の更新を要求することを表わす。鍵更新要求メッセージは、更新したい鍵の識別データと、更新前の古い鍵そのものを表わす鍵データとを含む。鍵更新要求メッセージは、証明データを含む必要はない。なぜなら、鍵更新要求メッセージは更新前の鍵データを含むので、鍵更新要求メッセージを通知してきた装置は、更新前の鍵を知っている。鍵の秘密性が守られている限りにおいて、更新前の鍵を知っているのは、実行装置501だけであるから、実行装置501が本物であることを証明する必要はない。
【0056】
応答出力部123(鍵出力部、更新鍵出力部)は、CPU911(処理装置)を用いて、実行装置501に対して、取得要求入力部121が入力した鍵取得要求メッセージや、更新要求入力部122が入力した鍵更新要求メッセージに対する応答メッセージを出力する。応答メッセージは、鍵の取得や更新が成功したか否かを表わす成否データを含む。また、鍵の取得や更新が成功した場合、応答メッセージは、取得した鍵あるいは更新後の新しい鍵を表わす鍵データを含む。
【0057】
鍵パスワード算出部131は、CPU911(処理装置)を用いて、鍵パスワードを算出する。鍵パスワード算出部131は、取得要求入力部121が入力した鍵取得要求メッセージに含まれる管理パスワードと証明データとに基づいて、鍵パスワードを算出する。鍵パスワード算出部131は、例えば、管理パスワードと証明データとを連結し、ハッシュ関数などの一方向性関数を使用して、連結したデータを変換することにより、鍵パスワードを算出する。鍵パスワード算出部131が鍵パスワードを算出するために使用する関数は、衝突困難性と予測困難性とを有する関数であることが望ましい。衝突困難性とは、管理パスワードと証明データとのいずれか一方が1ビットでも異なれば、異なる鍵パスワードが算出されることをいう。また、予測困難性とは、管理パスワードと証明データとのいずれか一方が1ビットでも不明であれば、算出される鍵パスワードを1ビットも予測できないことをいう。
【0058】
鍵取得部132は、CPU911(処理装置)を用いて、順記憶部201から鍵データを取得する。鍵取得部132は、順記憶部201が記憶した識別データのなかから、取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データと一致するものを探す。一致する識別データがある場合、鍵取得部132は、その識別データに対応づけて順記憶部201が記憶した鍵パスワードと、鍵パスワード算出部131が算出した鍵パスワードとが一致するか否かを判定する。鍵取得部132は、鍵パスワードが一致する場合、その鍵パスワード及び識別データに対応づけて順記憶部201が記憶した鍵データを取得する。それ以外の場合、鍵取得部132は、鍵データの取得に失敗する。
【0059】
鍵生成部133(新規鍵生成部、更新鍵生成部)は、CPU911(処理装置)を用いて、新たな鍵を表わす鍵データを生成する。鍵生成部133が鍵データを生成する場合には、新規登録時と、更新時との2つの場合がある。新規登録時とは、鍵取得部132が鍵データの取得に失敗した場合のうち、順記憶部201が記憶した識別データのなかに、取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データと一致する識別データがなかった場合である。更新時については、後述する。
【0060】
応答生成部134は、CPU911(処理装置)を用いて、応答出力部123が出力する応答メッセージを生成する。鍵取得部132が鍵データを取得した場合、応答生成部134は、鍵取得部132が取得した鍵データを含む応答メッセージを生成する。また、鍵生成部133が鍵データを生成した場合、応答生成部134は、鍵生成部133が生成した鍵データを含む応答メッセージを生成する。それ以外の場合、応答生成部134は、鍵の取得あるいは更新に失敗したことを表わす応答メッセージを生成する。
【0061】
鍵登録部135は、CPU911(処理装置)を用いて、順記憶部201に鍵データを登録する。鍵登録部135が鍵データを登録する場合には、新規登録時と更新時との2つの場合がある。新規登録時において、鍵登録部135は、CPU911(処理装置)を用いて、順記憶部201が記憶した識別データのなかから、取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データと一致するものを探す。新規登録時とは、鍵取得部132が鍵データの取得に失敗した場合のうち、順記憶部201が記憶した識別データのなかに、取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データと一致する識別データがなかった場合であるから、一致する識別データは存在しないはずである。一致する識別データが存在しない場合、鍵生成部133は、鍵生成部133が生成した鍵データと、鍵パスワード算出部131が算出した鍵パスワードと、取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データとを、順記憶部201に新たに記憶させる。順記憶部201は、磁気ディスク装置920(記憶装置)を用いて、鍵生成部133が生成した鍵データと、鍵パスワード算出部131が算出した鍵パスワードと、取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データとを対応づけて、新たに記憶する。更新時については、後述する。
【0062】
逆パスワード算出部136(旧逆パスワード算出部、新逆パスワード算出部)は、CPU911(処理装置)を用いて、逆パスワードを算出する。例えば、逆パスワード算出部136は、ハッシュ関数などの一方向性関数を使用して、鍵データを変換することにより、逆パスワードを算出する。逆パスワード算出部136が逆パスワードの算出に使用する関数は、鍵パスワード算出部131が鍵パスワードの算出に使用する関数と同一の関数であってもよいし、異なる関数であってもよい。逆パスワード算出部136が逆パスワードの算出に使用する関数は、衝突困難性と予測困難性とを有することが望ましい。
逆パスワード算出部136が逆パスワードを算出する場合には、新規登録時と更新時との2つの場合がある。新規登録時において、逆パスワード算出部136は、CPU911(処理装置)を用いて、鍵登録部135が順記憶部201に記憶させた鍵データに基づいて、逆パスワードを算出する。
更新時において、逆パスワード算出部136は、逆パスワードを2回算出する。1回目は、更新要求入力部122が鍵更新要求メッセージを入力したときである。逆パスワード算出部136(旧逆パスワード算出部)は、CPU911(処理装置)を用いて、更新要求入力部122が入力した鍵更新要求メッセージに含まれる更新前の古い鍵データに基づいて、逆パスワードを算出する。2回目については、後述する。
【0063】
新規登録時において、逆記憶部301は、磁気ディスク装置920(記憶装置)を用いて、鍵登録部135が順記憶部201に記憶させた鍵パスワードと、逆パスワード算出部136が算出した逆パスワードと、取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データとを対応づけて記憶する。
【0064】
パスワード取得部137は、CPU911(処理装置)を用いて、鍵記憶部110から鍵パスワードを取得する。逆パスワード算出部136が更新時1回目の逆パスワードを算出した場合、パスワード取得部137は、逆記憶部301が記憶した識別データのなかから、更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データと一致するものを探す。一致する識別データがある場合、パスワード取得部137は、その識別データに対応づけて逆記憶部301が記憶した逆パスワードと、逆パスワード算出部136が算出した逆パスワードとが一致するか否かを判定する。逆パスワードが一致する場合、パスワード取得部137は、その逆パスワード及び識別データに対応づけて逆記憶部301が記憶した鍵パスワードを取得する。それ以外の場合、パスワード取得部137は、鍵パスワードの取得に失敗する。
【0065】
更新時において、パスワード取得部137が鍵パスワードを取得した場合、鍵生成部133(更新鍵生成部)は、CPU911(処理装置)を用いて、更新後の新しい鍵データを生成する。
鍵登録部135(鍵更新部)は、CPU911(処理装置)を用いて、順記憶部201が記憶した識別データのなかから、更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データと一致するものを探す。順記憶部201は、逆記憶部301と同じ識別データを記憶しているので、一致する識別データがあるはずである。一致する識別データがある場合、鍵登録部135(鍵更新部)は、その識別データに対応づけて順記憶部201が記憶した鍵パスワードと、パスワード取得部137が取得した鍵パスワードとが一致するか否かを判定する。順記憶部201は、逆記憶部301と同じ鍵パスワードを同じ識別データに対応づけて記憶しているので、鍵パスワードは一致するはずである。鍵パスワードが一致する場合、鍵登録部135(鍵更新部)は、その鍵パスワード及び識別データに対応づけて順記憶部201が記憶した鍵データに代えて、鍵生成部133が生成した更新後の新しい鍵データを、順記憶部201に記憶させる。
順記憶部201は、磁気ディスク装置920(記憶装置)を用いて、鍵パスワード及び識別データはそのままにして、鍵データだけを鍵生成部133が生成した鍵データに置き換えて、その鍵パスワード及び識別データに対応づけて記憶する。
逆パスワード算出部136(新逆パスワード算出部)は、CPU911(処理装置)を用いて、更新時2回目の逆パスワードを算出する。逆パスワード算出部136(新逆パスワード算出部)は、鍵登録部135(鍵更新部)が順記憶部201に登録した更新後の新しい鍵データに基づいて、逆パスワードを算出する。
逆記憶部301(鍵更新部)は、CPU911(処理装置)を用いて、記憶した識別データのなかから、更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データに一致するものを探す。パスワード取得部137が鍵パスワードを取得しているので、一致する識別データがあるはずである。一致する識別データがある場合、逆記憶部301は、CPU911(処理装置)を用いて、その識別データに対応づけて記憶した鍵パスワードと、鍵登録部135が順記憶部201に記憶させた鍵パスワードとが一致するか否かを判定する。鍵登録部135が順記憶部201に記憶させた鍵パスワードは、パスワード取得部137が逆記憶部301から取得したものなので、鍵パスワードは一致するはずである。鍵パスワードが一致する場合、逆記憶部301は、磁気ディスク装置920(記憶装置)を用いて、その鍵パスワード及び識別データに対応づけて記憶した逆パスワードに代えて、逆パスワード算出部136(新逆パスワード算出部)が算出した更新後の新しい逆パスワードを記憶する。逆記憶部301は、記憶した鍵パスワード及び識別データはそのままにして、逆パスワードだけを逆パスワード算出部136(新逆パスワード算出部)が算出した更新後の新しい逆パスワードに置き換えて、その鍵パスワード及び識別データに対応づけて記憶する。
【0066】
実行装置501は、例えば、取得要求部510と、更新要求部520と、応答取得部531と、暗号鍵記憶部532と、暗号処理部540とを有する。
【0067】
取得要求部510は、実行装置501の起動時などに、鍵管理装置10に対して、鍵取得要求メッセージを通知する。取得要求部510は、例えば、管理パスワード取得部511と、取得要求生成部512と、取得要求通知部513とを有する。
管理パスワード取得部511は、CPU911(実行処理装置)を用いて、管理パスワードを取得する。例えば、管理パスワード取得部511は、管理者がキーボード902などを操作することにより実行装置501に入力した管理パスワードを取得する。あるいは、管理パスワード取得部511は、設定ファイルを読み込んで、設定ファイルに記録された管理パスワードを取得する。
取得要求生成部512は、CPU911(実行処理装置)を用いて、鍵取得要求メッセージを生成する。取得要求生成部512が生成する鍵取得要求メッセージは、管理パスワード取得部511が取得した管理パスワードを含む。また、取得要求生成部512が生成する鍵取得要求メッセージは、文脈データなどの証明データを含む。更に、取得要求生成部512が生成する鍵取得要求メッセージは、実行装置501(または、取得すべき鍵)を識別する識別データを含む。なお、鍵管理装置10に鍵が登録されていない場合は、鍵管理装置10が鍵を生成する。このため、取得要求生成部512が生成する鍵取得要求メッセージは、更に、鍵アルゴリズムや鍵長など鍵生成に必要なパラメータを含む構成であってもよい。
取得要求通知部513は、CPU911(実行処理装置)を用いて、取得要求生成部512が生成した鍵取得要求メッセージを、鍵管理装置10に対して通知する。
【0068】
更新要求部520は、鍵管理装置10に対して、鍵更新要求メッセージを通知する。更新要求部520は、例えば、更新判定部521と、更新要求生成部522と、更新要求通知部523とを有する。
更新判定部521は、CPU911(実行処理装置)を用いて、鍵を更新すべきか否かを判定する。例えば、更新判定部521は、磁気ディスク装置920(不揮発性記憶装置)を用いて、鍵を更新した日付を記憶しておく。更新判定部521は、記憶した日付と、今の日付とを比較して、所定の日数が経過したとき、鍵を更新すべきと判定する。あるいは、更新判定部521は、管理者がキーボード902などを操作することにより鍵を更新すべきことを実行装置501に入力した場合に、鍵を更新すべきと判定する。
更新要求生成部522は、鍵を更新すべきと更新判定部521が判定した場合、CPU911(実行処理装置)を用いて、鍵更新要求メッセージを生成する。更新要求生成部522が生成する鍵更新要求メッセージは、暗号鍵記憶部532が記憶した鍵データを含む。また、更新要求生成部522が生成する鍵更新要求メッセージは、実行装置501(または、更新すべき鍵)を識別する識別データを含む。
更新要求通知部523は、CPU911(実行処理装置)を用いて、更新要求生成部522が生成した鍵更新要求メッセージを、鍵管理装置10に対して通知する。
【0069】
応答取得部531(暗号鍵取得部、暗号鍵更新部)は、CPU911を用いて、取得要求部510が通知した鍵取得要求メッセージや、更新要求部520が通知した鍵更新要求メッセージに対する応答として、鍵管理装置10が出力した応答メッセージを取得する。取得した応答メッセージが、鍵の取得あるいは更新に成功したことを表わし、鍵データを含む場合、応答取得部531は、CPU911(実行処理装置)を用いて、応答メッセージに含まれる鍵データを、暗号鍵記憶部532に記憶させる。
暗号鍵記憶部532は、RAM914(揮発性記憶装置)を用いて、応答取得部531が取得した応答メッセージに含まれる鍵データを記憶する。なお、1つの実行装置501が複数の鍵を使用する場合、暗号鍵記憶部532は、複数の鍵データを記憶する。複数の鍵は、識別データによって区別される。暗号鍵記憶部532は、取得要求部510が生成した鍵取得要求メッセージや更新要求部520が生成した鍵更新要求メッセージに含まれる識別データと、それに対する応答である応答メッセージに含まれる鍵データとを対応づけて記憶する。
【0070】
暗号処理部540は、CPU911(実行処理装置)を用いて、暗号鍵記憶部532が記憶した鍵データを使用して、暗号処理をする。暗号処理部540は、例えば、平文入力部541と、暗号化部401と、暗号記憶部542と、復号部402と、平文出力部543とを有する。
【0071】
平文入力部541は、CPU911(実行処理装置)を用いて、実行装置501が暗号化して記憶すべき平文データを入力する。
暗号化部401は、CPU911(実行処理装置)を用いて、暗号鍵記憶部532が記憶した鍵データを使用して、平文入力部541が入力した平文データを暗号化し、暗号化データを生成する。
暗号記憶部542は、磁気ディスク装置920(不揮発性記憶装置)を用いて、暗号化部401が暗号化した暗号化データを記憶する。
復号部402は、CPU911(実行処理装置)を用いて、暗号鍵記憶部532が記憶した鍵データを使用して、暗号記憶部542が記憶した暗号化データを復号し、復元平文データを生成する。
平文出力部543は、CPU911(実行処理装置)を用いて、復号部402が生成した復元平文データを出力する。
【0072】
図12は、この実施の形態における暗号処理システム800全体の処理の流れの一例を示すフローチャート図である。
【0073】
鍵管理装置10は、例えば、取得要求入力処理S710と、鍵取得処理S720と、更新要求入力処理S750と、鍵更新処理S760とを実行する。
取得要求入力処理S710において、鍵管理装置10は、実行装置501から鍵取得要求メッセージが通知されたか否かを判定する。実行装置501から鍵取得要求メッセージが通知された場合、鍵管理装置10は、通知された鍵取得要求メッセージを入力して、鍵取得処理S720へ処理を進める。実行装置501から鍵取得要求メッセージが通知されない場合、鍵管理装置10は、更新要求入力処理S750へ処理を進める。
鍵取得処理S720において、鍵管理装置10は、取得要求入力処理S710で入力した鍵取得要求メッセージにしたがって、鍵を取得する。なお、鍵管理装置10に鍵が登録されていない場合、鍵管理装置10は、鍵を生成して登録する。鍵管理装置10は、実行装置501に対して、応答メッセージを出力する。鍵管理装置10は、更新要求入力処理S750へ処理を進める。
更新要求入力処理S750において、鍵管理装置10は、実行装置501から鍵更新要求メッセージが通知されたか否かを判定する。実行装置501から鍵更新要求メッセージが通知された場合、鍵管理装置10は、通知された鍵更新要求メッセージを入力して、鍵更新処理S760へ処理を進める。実行装置501から鍵更新要求メッセージが通知されない場合、鍵管理装置10は、取得要求入力処理S710に処理を戻す。
鍵更新処理S760において、鍵管理装置10は、更新要求入力処理S750で入力した鍵更新メッセージにしたがって、鍵を更新し、実行装置501に対して、応答メッセージを出力する。鍵管理装置10は、取得要求入力処理S710に処理を戻す。
【0074】
実行装置501は、例えば、取得要求処理S810と、暗号処理S820と、更新判定処理S830と、更新要求処理S840と、暗号更新処理S850とを実行する。
実行装置501が起動すると、まず、取得要求処理S810を実行する。
取得要求処理S810において、実行装置501は、鍵管理装置10に対して、鍵取得要求メッセージを通知する。実行装置501は、通知した鍵取得要求メッセージに対する応答として鍵管理装置10が出力した応答メッセージを取得する。
暗号処理S820において、実行装置501は、取得要求処理S810で取得した応答メッセージに含まれる鍵データを使用して、暗号処理をする。
更新判定処理S830において、実行装置501は、鍵を更新するか否かを判定する。更新すると判定した場合、実行装置501は、更新要求処理S840へ処理を進める。更新しないと判定した場合、実行装置501は、暗号処理S820に処理を戻す。
更新要求処理S840において、実行装置501は、鍵管理装置10に対して、鍵更新要求メッセージを通知する。実行装置501は、通知した鍵更新要求メッセージに対する応答として鍵管理装置10が出力した応答メッセージを取得する。
暗号更新処理S850において、実行装置501は、更新要求処理S840で取得した応答メッセージに含まれる更新後の新しい鍵データを使用して、記憶している暗号化データを更新する。実行装置501は、暗号処理S820に処理を戻す。
【0075】
図13は、この実施の形態における鍵管理装置10の処理の詳細な流れの一例を示すフローチャート図である。
【0076】
取得要求入力処理S710は、例えば、取得要求入力工程S711を有する。
取得要求入力工程S711において、取得要求入力部121は、実行装置501から新たに通知された鍵取得要求メッセージがあれば、CPU911を用いて、通知された鍵取得要求メッセージを入力し、鍵取得処理S720へ処理を進める。実行装置501から通知された鍵取得要求メッセージがない場合、取得要求入力部121は、CPU911を用いて、更新要求入力処理S750へ処理を進める。
【0077】
鍵取得処理S720は、例えば、鍵パスワード算出工程S721と、鍵取得工程S722と、鍵生成工程S723と、鍵登録工程S724と、鍵出力工程S725と、失敗出力工程S726とを有する。
鍵パスワード算出工程S721において、鍵パスワード算出部131は、CPU911を用いて、取得要求入力工程S711で取得要求入力部121が入力した鍵取得要求メッセージに含まれる管理パスワードと証明データとに基づいて、鍵パスワードを算出する。
鍵取得工程S722において、鍵取得部132は、CPU911を用いて、鍵パスワード算出工程S721で鍵パスワード算出部131が算出した鍵パスワードと、取得要求入力工程S711で取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データとを使って、順記憶部201から鍵データを取得する。鍵データの取得に成功した場合、鍵取得部132は、CPU911を用いて、鍵出力工程S725へ処理を進める。識別データの不一致により鍵データの取得に失敗した場合、鍵取得部132は、CPU911を用いて、鍵生成工程S723へ処理を進める。鍵パスワードの不一致により鍵データの取得に失敗した場合、鍵取得部132は、CPU911を用いて、失敗出力工程S726へ処理を進める。
【0078】
鍵生成工程S723において、鍵生成部133(新規鍵生成部)は、CPU911を用いて、新たな鍵データを生成する。鍵生成部133は、取得要求入力部121が入力した鍵取得要求メッセージに含まれる鍵アルゴリズムや鍵長などのパラメータにしたがって、鍵データを生成する構成であってもよいし、あらかじめ固定されたパラメータを使って、鍵データを生成する構成であってもよい。鍵取得要求メッセージがパラメータを含む構成であれば、実行装置501の側で、扱う情報の機密レベルに応じて鍵生成のパラメータを変更することができるので、好ましい。
鍵登録工程S724において、鍵登録部135は、CPU911を用いて、鍵生成工程S723で鍵生成部133が生成した鍵データを、鍵記憶部110に登録する。順記憶部201は、磁気ディスク装置920を用いて、鍵生成工程S723で鍵生成部133が生成した鍵データと、鍵パスワード算出工程S721で鍵パスワード算出部131が算出した鍵パスワードと、取得要求入力工程S711で取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データとの組を、新たに記憶する。逆パスワード算出部136は、CPU911を用いて、鍵生成工程S723で鍵生成部133が生成した鍵データに基づいて、逆パスワードを算出する。逆記憶部301は、鍵パスワード算出工程S721で鍵パスワード算出部131が算出した鍵パスワードと、逆パスワード算出部136が算出した逆パスワードと、取得要求入力工程S711で取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データとの組を、新たに記憶する。鍵登録部135は、CPU911を用いて、鍵出力工程S725へ処理を進める。
なお、なんらかのエラーにより、鍵データの登録に失敗した場合は、鍵登録部135は、CPU911を用いて、失敗出力工程S726へ処理を進める。
【0079】
鍵出力工程S725において、応答生成部134は、CPU911を用いて、鍵取得工程S722で鍵取得部132が取得した鍵データ、もしくは、鍵生成工程S723で鍵生成部133が生成した鍵データを含む応答メッセージを生成する。応答出力部123は、CPU911を用いて、実行装置501に対して、応答生成部134が生成した応答メッセージを出力する。応答出力部123は、CPU911を用いて、更新要求入力処理S750へ処理を進める。
【0080】
失敗出力工程S726において、応答生成部134は、CPU911を用いて、鍵の取得に失敗したことを表わす応答メッセージを生成する。応答出力部123は、CPU911を用いて、実行装置501に対して、応答生成部134が生成した応答メッセージを出力する。応答出力部123は、CPU911を用いて、更新要求入力処理S750へ処理を進める。
【0081】
更新要求入力処理S750は、例えば、更新要求入力工程S751を有する。
更新要求入力工程S751において、更新要求入力部122は、実行装置501から新たに通知された鍵更新要求メッセージがあれば、CPU911を用いて、通知された鍵更新要求メッセージを入力し、鍵更新処理S760へ処理を進める。実行装置501から通知された鍵更新要求メッセージがない場合、更新要求入力部122は、CPU911を用いて、取得要求入力処理S710に処理を戻す。
【0082】
鍵更新処理S760は、例えば、逆パスワード算出工程S761と、パスワード取得工程S762と、鍵生成工程S763と、鍵更新工程S764と、鍵出力工程S765と、失敗出力工程S766とを有する。
逆パスワード算出工程S761において、逆パスワード算出部136(旧逆パスワード算出部)は、CPU911を用いて、更新要求入力工程S751で更新要求入力部122が入力した鍵更新要求メッセージに含まれる更新前の古い鍵データに基づいて、逆パスワードを算出する。
パスワード取得工程S762において、パスワード取得部137は、CPU911を用いて、逆パスワード算出工程S761で逆パスワード算出部136が算出した逆パスワードと、更新要求入力工程S751で更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データとを使って、逆記憶部301が記憶した鍵パスワードを取得する。鍵パスワードの取得に成功した場合、パスワード取得部137は、CPU911を用いて、鍵生成工程S763へ処理を進める。識別データの不一致や逆パスワードの不一致により鍵パスワードの取得に失敗した場合、パスワード取得部137は、CPU911を用いて、失敗出力工程S766へ処理を進める。
【0083】
鍵生成工程S763において、鍵生成部133(更新鍵生成部)は、CPU911を用いて、新たな鍵データを生成する。
鍵更新工程S764において、鍵登録部135(鍵更新部)は、CPU911を用いて、鍵記憶部110に登録された鍵データを、鍵生成工程S763で鍵生成部133が生成した鍵データに更新する。順記憶部201は、磁気ディスク装置920を用いて、対応づけられた識別データが、更新要求入力工程S751で更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データと一致し、かつ、対応づけられた鍵パスワードが、パスワード取得工程S762でパスワード取得部137が取得した鍵パスワードと一致する鍵データを、鍵生成工程S763で鍵生成部133が生成した鍵データに置き換えて記憶する。逆パスワード算出部136(新逆パスワード算出部)は、CPU911を用いて、鍵生成工程S763で鍵生成部133が生成した鍵データに基づいて、新たな逆パスワードを算出する。逆記憶部301は、磁気ディスク装置920を用いて、対応づけられた識別データが、更新要求入力工程S751で更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データと一致し、かつ、対応づけられた鍵パスワードが、パスワード取得工程S762でパスワード取得部137が取得した鍵パスワードと一致する逆パスワードを、逆パスワード算出部136が算出した新たな逆パスワードで置き換えて記憶する。なお、なんらかのエラーにより鍵データの更新に失敗した場合、鍵登録部135は、CPU911を用いて、失敗出力工程S766へ処理を進める。
【0084】
鍵出力工程S765において、応答生成部134は、CPU911を用いて、鍵生成工程S763で鍵生成部133が生成した新たな鍵データを含む応答メッセージを生成する。応答出力部123は、CPU911を用いて、実行装置501に対して、応答生成部134が生成した応答メッセージを出力する。応答出力部123は、CPU911を用いて、取得要求入力処理S710に処理を戻す。
【0085】
失敗出力工程S766において、応答生成部134は、CPU911を用いて、鍵の更新に失敗したことを表わす応答メッセージを生成する。応答出力部123は、CPU911を用いて、実行装置501に対して、応答生成部134が生成した応答メッセージを出力する。応答出力部123は、CPU911を用いて、取得要求入力処理S710に処理を戻す。
【0086】
図14は、この実施の形態における実行装置501の処理の詳細な流れの一例を示すフローチャート図である。
【0087】
取得要求処理S810は、例えば、管理パスワード取得工程S811と、鍵取得要求生成工程S812と、鍵取得要求通知工程S813と、応答取得工程S814と、鍵記憶工程S815とを有する。
管理パスワード取得工程S811において、管理パスワード取得部511は、CPU911を用いて、管理パスワードを取得する。
鍵取得要求生成工程S812において、取得要求生成部512は、CPU911を用いて、管理パスワード取得工程S811で管理パスワード取得部511が取得した管理パスワードと、識別データと、証明データとを含む鍵取得要求メッセージを生成する。
鍵取得要求通知工程S813において、取得要求通知部513は、CPU911を用いて、鍵取得要求生成工程S812で取得要求生成部512が生成した鍵取得要求メッセージを、鍵管理装置10に対して通知する。
応答取得工程S814において、応答取得部531(暗号鍵取得部)は、CPU911を用いて、鍵取得要求通知工程S813で取得要求通知部513が通知した鍵取得要求メッセージに対する応答として鍵管理装置10が出力した応答メッセージを取得する。取得した応答メッセージが、鍵の取得に成功したことを表わす場合、応答取得部531は、CPU911を用いて、鍵記憶工程S815へ処理を進める。取得した応答メッセージが、鍵の取得に失敗したことを表わす場合、応答取得部531は、CPU911を用いて、管理パスワード取得工程S811に処理を戻す。
鍵記憶工程S815において、暗号鍵記憶部532は、RAM914を用いて、応答取得工程S814で応答取得部531が取得した応答メッセージに含まれる鍵データを記憶する。
【0088】
暗号処理S820において、暗号処理部540は、CPU911を用いて、暗号鍵記憶部532が記憶した鍵データを使って、暗号処理をする。
【0089】
更新判定処理S830において、更新判定部521は、CPU911を用いて、鍵の更新をするか否かを判定する。鍵の更新をすると判定した場合、更新判定部521は、CPU911を用いて、更新要求処理S840へ処理を進める。まだ鍵の更新をしないと判定した場合、更新判定部521は、CPU911を用いて、暗号処理S820に処理を戻す。
【0090】
更新要求処理S840は、例えば、鍵更新要求生成工程S841と、鍵更新要求通知工程S842と、応答取得工程S843と、新鍵記憶工程S844とを有する。
鍵更新要求生成工程S841において、更新要求生成部522は、CPU911を用いて、暗号鍵記憶部532が記憶した鍵データと、識別データとを含む鍵更新要求メッセージを生成する。
鍵更新要求通知工程S842において、更新要求通知部523は、CPU911を用いて、鍵更新要求生成工程S841で更新要求生成部522が生成した鍵更新要求メッセージを、鍵管理装置10に対して通知する。
応答取得工程S843において、応答取得部531(更新鍵取得部)は、CPU911を用いて、鍵更新要求通知工程S842で更新要求通知部523が通知した鍵更新要求メッセージに対する応答として鍵管理装置10が出力した応答メッセージを取得する。取得した応答メッセージが、鍵の更新に成功したことを表わす場合、応答取得部531は、CPU911を用いて、新鍵記憶工程S844へ処理を進める。取得した応答メッセージが、鍵の更新に失敗したことを表わす場合、応答取得部531は、CPU911を用いて、管理パスワード取得工程S811に処理を戻す。
新鍵記憶工程S844において、暗号鍵記憶部532(暗号鍵更新部)は、RAM914を用いて、応答取得工程S843で応答取得部531が取得した応答メッセージに含まれる更新後の新しい鍵データを記憶する。なお、次の暗号更新処理S850で更新前の古い鍵データを使うので、暗号鍵記憶部532は、更新前の古い鍵データも、まだ保持しておく。
【0091】
暗号更新処理S850は、例えば、暗号選択工程S851と、復号工程S852と、暗号化工程S853と、暗号記憶工程S854と、旧鍵削除工程S855とを有する。
暗号選択工程S851において、復号部402(暗号更新部)は、CPU911を用いて、暗号記憶部542が記憶した暗号化データのなかから、まだ処理していない暗号化データを一つ選択する。暗号記憶部542が記憶した暗号化データがすべて処理済であり、選択できる暗号化データがない場合、復号部402は、CPU911を用いて、旧鍵削除工程S855へ処理を進める。暗号記憶部542が記憶した暗号化データのなかに、まだ処理していない暗号化データがある場合、復号部402は、CPU911を用いて、まだ処理していない暗号化データのなかから暗号化データを一つ選択し、復号工程S852へ処理を進める。
復号工程S852において、復号部402は、CPU911を用いて、暗号鍵記憶部532が記憶している更新前の古い鍵データを使って、暗号選択工程S851で選択した暗号化データを復号し、復元平文データを生成する。
暗号化工程S853において、暗号化部401(更新暗号化部)は、CPU911を用いて、暗号鍵記憶部532が記憶している更新後の新しい鍵データを使って、復号工程S852で復号部402が生成した復元平文データを暗号化し、更新後の新しい暗号化データを生成する。
暗号記憶工程S854において、暗号記憶部542(暗号更新部)は、磁気ディスク装置920を用いて、暗号選択工程S851で復号部402が選択した更新前の古い暗号化データを、暗号化工程S853で暗号化部401が生成した更新後の新しい暗号化データに置き換えて記憶する。暗号記憶部542は、CPU911を用いて、暗号選択工程S851に処理を戻す。
【0092】
旧鍵削除工程S855において、暗号鍵記憶部532は、RAM914を用いて記憶した更新前の古い鍵データを削除する。暗号鍵記憶部532は、CPU911を用いて、暗号処理S820に処理を戻す。
【0093】
このように、識別データ及び鍵パスワードが一致しなければ、順記憶部201から鍵データを取得したり、順記憶部201が記憶した鍵データを更新したりできないことにより、鍵データの秘密性・安全性を担保する。また、証明データからの情報を鍵パスワードに埋め込むことにより、本物の実行装置501しか鍵データを取得できない。特に、証明データとして文脈データを使用することにより、実行装置501が本物であることの証明が容易にできるとともに、偽造を防ぐことができる。鍵更新時には、証明データではなく、更新前の古い鍵データそのものによって実行装置501が本物であることを証明する。順記憶部201が記憶した鍵データを更新するために必要な鍵パスワードは、逆記憶部301から取得する。識別データ及び逆パスワードが一致しなければ、逆記憶部301から鍵パスワードを取得したり、逆記憶部301が記憶した鍵パスワードを更新したりできないことにより、鍵パスワードの秘密性・安全性を担保する。逆パスワードは、鍵データに基づいて算出されるので、鍵データがわかれば鍵パスワードを取得でき、鍵データを更新することができる。
【0094】
なお、鍵更新要求メッセージに鍵データを含めるのではなく、実行装置501の側で逆パスワードを算出し、鍵更新要求メッセージに逆パスワードを含める構成としてもよい。その場合、パスワード取得部137は、鍵更新要求メッセージに含まれる識別データと一致する識別データに対応づけて逆記憶部301が記憶した逆パスワードと、鍵更新要求メッセージに含まれる逆パスワードとが一致するか否かを判定し、一致する場合に、その逆パスワード及び識別データに対応づけて逆記憶部301が記憶した鍵パスワードを取得する。
【0095】
また、鍵管理装置10は、逆記憶部301を有さない構成であってもよい。その場合、パスワード取得部137は、CPU911を用いて、順記憶部201が記憶した識別データのなかから、更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データと一致するものを探す。一致する識別データがある場合、パスワード取得部137は、CPU911を用いて、その識別データに対応づけて順記憶部201が記憶した鍵データと、更新要求入力部122が入力した鍵更新要求メッセージに含まれる鍵データとが、一致するか否かを判定する。鍵データが一致する場合、パスワード取得部137は、CPU911を用いて、その鍵データに対応づけて順記憶部201が記憶した鍵パスワードを取得する。
鍵更新要求メッセージに逆パスワードを含める構成の場合は、鍵更新要求メッセージに含まれる識別データと一致する識別データに対応づけて順記憶部201が記憶した鍵データに基づいて、逆パスワード算出部136が逆パスワードを算出する。パスワード取得部137は、逆パスワード算出部136が算出した逆パスワードと、鍵更新要求メッセージに含まれる逆パスワードとが一致するか否かを判定し、一致する場合に、その鍵データに対応づけて順記憶部201が記憶した鍵パスワードを取得する。
【0096】
更に、鍵管理装置10は、パスワード取得部137を有さない構成であってもよい。その場合、鍵登録部135(鍵更新部)は、CPU911を用いて、順記憶部201が記憶した識別データのなかから、更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データと一致するものを探す。一致する識別データがある場合、鍵登録部135は、CPU911を用いて、その識別データに対応づけて順記憶部201が記憶した鍵データと、更新要求入力部122が入力した鍵更新要求メッセージに含まれる鍵データとが、一致するか否かを判定する。鍵データが一致する場合、鍵登録部135は、CPU911を用いて、その鍵データを更新する。
鍵更新要求メッセージに逆パスワードを含める構成の場合は、鍵更新要求メッセージに含まれる識別データと一致する識別データに対応づけて順記憶部201が記憶した鍵データに基づいて、逆パスワード算出部136が逆パスワードを算出する。鍵登録部135(鍵更新部)は、逆パスワード算出部136が算出した逆パスワードと、鍵更新要求メッセージに含まれる逆パスワードとが一致するか否かを判定し、一致する場合に、その鍵データを更新する。
【0097】
実施の形態3.
実施の形態3について、図15〜図18を用いて説明する。
なお、実施の形態2と共通する部分については、同一の符号を付し、説明を省略する。
【0098】
図15は、この実施の形態における暗号処理システム800の機能ブロックの構成の一例を示すブロック構成図である。
鍵管理装置10は、実施の形態2で説明した構成に加えて、更に、削除要求入力部125を有する。実行装置501は、実施の形態2で説明した構成に加えて、更に、削除要求部550を有する。
【0099】
鍵管理装置10は、鍵を更新しても、更新前の古い鍵データを残しておき、実行装置501から鍵の削除を要求されて初めて、鍵データを削除する。削除要求入力部125は、CPU911(処理装置)を用いて、実行装置501が通知した鍵削除要求メッセージを入力する。鍵削除要求メッセージは、鍵の削除を要求することを表わす。鍵削除要求メッセージは、削除したい鍵そのものを表わす鍵データと、削除したい鍵の識別データとを含む。
【0100】
削除要求部550は、CPU911(実行処理装置)を用いて、鍵管理装置10に対して、鍵削除要求メッセージを通知する。削除要求部550は、例えば、削除要求生成部552と、削除要求通知部553とを有する。
削除要求生成部552は、CPU911(実行処理装置)を用いて、鍵削除要求メッセージを生成する。例えば、削除要求生成部552は、暗号処理部540が暗号更新処理を完了した場合に、暗号鍵記憶部532がまだ記憶している更新前の古い鍵データを含む鍵削除要求メッセージを生成する。
削除要求通知部553は、CPU911(実行処理装置)を用いて、削除要求生成部552が生成した鍵削除要求メッセージを、鍵管理装置10に対して通知する。
【0101】
実行装置501が暗号更新処理をしている途中でダウンして再起動した場合などにおいて、暗号鍵記憶部532がRAM914を用いて記憶した鍵データが消えてしまう。実行装置501は、再起動後、鍵取得要求メッセージを鍵管理装置10に対して通知する。このとき、鍵管理装置10は、更新後の新しい鍵データだけでなく、更新前の古い鍵データも保持している。鍵管理装置10は、鍵取得要求メッセージに対する応答として、更新前の古い鍵データと、更新後の新しい鍵データとの2つの鍵データを含む応答メッセージを出力する。実行装置501は、更新前の古い鍵データと、更新後の新しい鍵データを取得して、暗号更新処理を続けることができる。
【0102】
また、この実施の形態における暗号処理システム800は、管理パスワードを更新することができる。管理者が管理パスワードを更新しようと考えた場合、管理者は、実行装置501の起動時に、キーボード902などを操作して、更新前の古い管理パスワードと、更新後の新しいパスワードとの2つの管理パスワードを実行装置501に入力する。
取得要求部510(パスワード更新要求部)の管理パスワード取得部511は、CPU911(実行処理装置)を用いて、管理者が入力した2つの管理パスワードを取得する。
取得要求生成部512(パスワード更新要求生成部)は、CPU911(実行処理装置)を用いて、管理パスワード取得部511が取得した2つの管理パスワードを含む鍵取得要求メッセージを生成する。
取得要求通知部513(パスワード更新要求通知部)は、CPU911(実行処理装置)を用いて、取得要求生成部512が生成した2つの管理パスワードを含む鍵取得要求メッセージ(パスワード更新要求メッセージ)を、鍵管理装置10に対して通知する。
【0103】
取得要求入力部121(パスワード更新要求入力部)は、CPU911(処理装置)を用いて、実行装置501が通知した鍵取得要求メッセージを入力する。取得要求入力部121は、入力した鍵取得要求メッセージが管理パスワードを2つ含む場合、鍵の取得と同時に管理パスワードの更新を要求されたと判定する。
鍵パスワード算出部131(旧パスワード算出部、新パスワード算出部)は、CPU911(処理装置)を用いて、取得要求入力部121が入力した鍵取得要求メッセージに含まれる2つの管理パスワードそれぞれに基づいて、鍵パスワードを算出する。すなわち、鍵パスワード算出部131は、更新前の古い鍵パスワードと、更新後の新しい鍵パスワードとを算出する。
鍵取得部132は、CPU911(処理装置)を用いて、鍵パスワード算出部131(旧パスワード算出部)が算出した更新前の古い鍵パスワードを使って、順記憶部201から鍵データを取得する。
鍵生成部133は、識別データの不一致により鍵取得部132が鍵データの取得に失敗した場合でも、新たな鍵データを生成しない。管理パスワードの更新は、古い鍵データを順記憶部201が記憶していることが前提だからである。
鍵登録部135(パスワード更新部)は、鍵取得部132が鍵データの取得に成功した場合、CPU911(処理装置)を用いて、鍵取得部132が取得した鍵データに対応づけられた鍵パスワードを更新する。例えば、鍵登録部135は、順記憶部201が記憶した識別データのなかから、取得要求入力部121が入力した鍵取得要求データに含まれる識別データと一致するものを探す。一致する識別データがある場合、鍵登録部135は、その識別データに対応づけて順記憶部201が記憶した鍵パスワードと、鍵パスワード算出部131(旧パスワード算出部)が算出した更新前の古い鍵パスワードとが一致するか否かを判定する。鍵パスワードが一致する場合、鍵登録部135は、その鍵パスワードに代えて、鍵パスワード算出部131(新パスワード算出部)が算出した更新後の新しい鍵パスワードを、順記憶部201に記憶させる。順記憶部201は、磁気ディスク装置920(記憶装置)を用いて、鍵データ及び識別データはそのままにして、鍵パスワードだけを鍵パスワード算出部131が算出した更新後の新しい鍵パスワードに置き換えて、その鍵データ及び識別データに対応づけて記憶する。
逆パスワード算出部136は、CPU911(処理装置)を用いて、鍵取得部132が取得した鍵データに基づいて、逆パスワードを算出する。
逆記憶部301(パスワード更新部)は、CPU911(処理装置)を用いて、記憶した識別データのなかから、更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データに一致するものを探す。一致する識別データがある場合、逆記憶部301は、CPU911(処理装置)を用いて、その識別データに対応づけて記憶した逆パスワードと、逆パスワード算出部136が算出した逆パスワードとが一致するか否かを判定する。逆パスワードが一致する場合、逆記憶部301は、磁気ディスク装置920(記憶装置)を用いて、その逆パスワード及び識別データに対応づけて記憶した鍵パスワードに代えて、鍵パスワード算出部131(新パスワード算出部)が算出した更新後の新しい鍵パスワードを記憶する。逆記憶部301は、記憶した逆パスワード及び識別データはそのままにして、鍵パスワードだけを鍵パスワード算出部131(新パスワード算出部)が算出した更新後の新しい鍵パスワードに置き換えて、その逆パスワード及び識別データに対応づけて記憶する。
【0104】
図16は、この実施の形態における暗号処理システム800全体の処理の流れの一例を示すフローチャート図である。
鍵管理装置10は、実施の形態2で説明した処理に加えて、更に、パスワード更新処理S730と、削除要求入力処理S780と、鍵削除処理S790とを実行する。
【0105】
取得要求入力処理S710において、鍵管理装置10は、鍵取得要求メッセージを入力した場合、入力した鍵取得要求メッセージに含まれる管理パスワードの数に基づいて、管理パスワードの更新が要求されているか否かを判定する。鍵取得要求メッセージに管理パスワードが2つ含まれる場合、鍵管理装置10は、鍵の取得だけでなく、管理パスワードの更新が要求されていると判定し、パスワード更新処理S730へ処理を進める。鍵取得要求メッセージに管理パスワードが1つしか含まれない場合、鍵管理装置10は、管理パスワードの更新は要求されず、鍵の取得だけが要求されていると判定し、鍵取得処理S720へ処理を進める。
パスワード更新処理S730において、鍵管理装置10は、古い管理パスワードによってアクセスできる鍵データに対応づけられた鍵パスワードを更新して、新しい管理パスワードによってアクセスできるようにする。鍵管理装置10は、更新要求入力処理S750へ処理を進める。
【0106】
更新要求入力処理S750において、実行装置501から鍵更新要求メッセージが通知されない場合、鍵管理装置10は、削除要求入力処理S780へ処理を進める。
また、鍵更新処理S760における処理が終わったあとも、鍵管理装置10は、削除要求入力処理S780へ処理を進める。
【0107】
削除要求入力処理S780において、鍵管理装置10は、実行装置501から鍵削除要求メッセージが通知されたか否かを判定する。実行装置501から鍵削除要求メッセージが通知された場合、鍵管理装置10は、通知された鍵削除要求メッセージを入力して、鍵削除処理S790へ処理を進める。実行装置501から鍵削除要求メッセージが通知されない場合、鍵管理装置10は、取得要求入力処理S710に処理を戻す。
鍵削除処理S790において、鍵管理装置10は、削除要求入力処理S780で入力した鍵削除要求メッセージにしたがって、鍵を削除し、実行装置501に対して、応答メッセージを出力する。鍵管理装置10は、取得要求入力処理S710に処理を戻す。
【0108】
取得要求処理S810において、実行装置501は、鍵管理装置10が出力した応答メッセージに含まれる鍵データの数に基づいて、暗号更新処理の途中であるか否かを判定する。応答メッセージに鍵データが2つ含まれる場合、実行装置501は、暗号更新処理の途中であると判定し、暗号更新処理S850へ処理を進める。応答メッセージに鍵データが1つしか含まれない場合、実行装置501は、暗号更新処理の途中ではないと判定し、通常どおり、暗号処理S820へ処理を進める。
【0109】
暗号更新処理S850が終了したのち、実行装置501は、削除要求工程S860へ処理を進める。
削除要求工程S860において、実行装置501は、鍵管理装置10に対して、鍵削除要求メッセージを通知する。実行装置501は、通知した鍵削除要求メッセージに対する応答として鍵管理装置10が出力した応答メッセージを取得する。実行装置501は、暗号処理S820に処理を戻す。
【0110】
図17は、この実施の形態における鍵管理装置10の処理の詳細な流れの一例を示すフローチャート図である。
取得要求入力処理S710は、実施の形態2で説明した工程に加えて、更に、パスワード更新判定工程S712を有する。
パスワード更新判定工程S712において、取得要求入力部121は、CPU911を用いて、入力した鍵取得要求メッセージに管理パスワードが2つ含まれているか、1つしか含まれていないかを判定する。鍵取得要求メッセージに管理パスワードが2つ含まれている場合は、管理パスワードの更新要求なので、取得要求入力部121は、CPU911を用いて、パスワード更新処理S730へ処理を進める。鍵取得要求メッセージに管理パスワードが1つしか含まれていない場合は、通常どおり鍵の取得要求なので、取得要求入力部121は、CPU911を用いて、鍵取得処理S720へ処理を進める。
【0111】
パスワード更新処理S730は、例えば、旧パスワード算出工程S731と、鍵取得工程S732と、新パスワード算出工程S733と、パスワード更新工程S734と、鍵出力工程S735と、失敗出力工程S736とを有する。
旧パスワード算出工程S731において、鍵パスワード算出部131(旧パスワード算出部)は、CPU911を用いて、取得要求入力工程S711で取得要求入力部121が入力した鍵取得要求メッセージに含まれる更新前の古い管理パスワードと証明データとに基づいて、更新前の古い鍵パスワードを算出する。
鍵取得工程S732において、鍵取得部132は、CPU911を用いて、旧パスワード算出工程S731で鍵パスワード算出部131が算出した更新前の古い鍵パスワードを使って、順記憶部201から鍵データを取得する。鍵データの取得に成功した場合、鍵取得部132は、CPU911を用いて、新パスワード算出工程S733へ処理を進める。識別データの不一致や鍵パスワードの不一致により鍵データの取得に失敗した場合、鍵取得部132は、CPU911を用いて、失敗出力工程S736へ処理を進める。
【0112】
新パスワード算出工程S733において、鍵パスワード算出部131(新パスワード算出部)は、CPU911を用いて、取得要求入力工程S711で取得要求入力部121が入力した鍵取得要求メッセージに含まれる更新後の新しい管理パスワードと証明データとに基づいて、更新後の新しい鍵パスワードを算出する。
パスワード更新工程S734において、鍵登録部135(パスワード更新部)は、CPU911を用いて、鍵記憶部110に登録された鍵パスワードを、新パスワード算出工程S733で鍵パスワード算出部131が算出した更新後の新しい鍵パスワードに更新する。順記憶部201は、磁気ディスク装置920を用いて、対応づけられた識別データが、取得要求入力工程S711で取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データと一致し、かつ、対応づけれられた鍵データが、鍵取得工程S732で鍵取得部132が取得した鍵データと一致する鍵パスワードを、新パスワード算出工程S733で鍵パスワード算出部131が算出した更新後の新しい鍵パスワードに置き換えて記憶する。逆パスワード算出部136は、CPU911を用いて、鍵取得工程S732で鍵取得部132が取得した鍵データに基づいて、逆パスワードを算出する。逆記憶部301は、磁気ディスク装置920を用いて、対応づけられた識別データが、取得要求入力工程S711で取得要求入力部121が入力した鍵取得要求メッセージに含まれる識別データと一致し、かつ、対応づけられた逆パスワードが、逆パスワード算出部136が算出した逆パスワードに一致する鍵パスワードを、新パスワード算出工程S733で鍵パスワード算出部131が算出した更新後の新しい鍵パスワードに置き換えて記憶する。なお、なんらかのエラーにより鍵パスワードの更新に失敗した場合、鍵登録部135は、CPU911を用いて、失敗出力工程S736へ処理を進める。
【0113】
鍵更新処理S760は、実施の形態2で説明した工程のうち、鍵更新工程S764に換えて、新鍵登録工程S767を有する。
新鍵登録工程S767において、鍵登録部135は、更新前の古い鍵データを鍵記憶部110に残したまま、更新後の新しい鍵データを鍵記憶部110に新たに登録する。順記憶部201は、磁気ディスク装置920を用いて、鍵生成工程S763で鍵生成部133(更新鍵生成部)が生成した鍵データと、パスワード取得工程S762でパスワード取得部137が取得した鍵パスワードと、更新要求入力工程S751で更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データとを対応づけて新たに記憶する。なお、更新前の古い鍵データと、更新後の新しい鍵データとを区別する必要があるので、順記憶部201は、例えば鍵データの生成順を表わすデータを、鍵データに対応づけて更に記憶する。逆パスワード算出部136(新逆パスワード算出部)は、CPU911を用いて、鍵生成工程S763で鍵生成部133が生成した更新後の新しい鍵データに基づいて、更新後の新しい逆パスワードを算出する。逆記憶部301は、磁気ディスク装置920を用いて、パスワード取得工程S762でパスワード取得部137が取得した鍵パスワードと、逆パスワード算出部136が算出した更新後の新しい逆パスワードと、更新要求入力工程S751で更新要求入力部122が入力した鍵更新要求メッセージに含まれる識別データとを対応づけて新たに記憶する。なお、逆記憶部301も順記憶部201と同様、例えば鍵データの生成順を表わすデータを、鍵パスワードに対応づけて更に記憶する構成であってもよい。
【0114】
削除要求入力処理S780は、例えば、削除要求入力工程S781を有する。
削除要求入力工程S781において、削除要求入力部125は、実行装置501から新たに通知された鍵削除要求メッセージがあれば、CPU911を用いて、通知された鍵削除要求メッセージを入力し、鍵削除処理S790へ処理を進める。実行装置501から通知された鍵削除要求メッセージがない場合、削除要求入力部125は、CPU911を用いて、取得要求入力処理S710に処理を戻す。
【0115】
鍵削除処理S790は、例えば、逆パスワード算出工程S791と、パスワード取得工程S792と、鍵削除工程S794と、成功出力工程S795と、失敗出力工程S796とを有する。
逆パスワード算出工程S791において、逆パスワード算出部136(削除逆パスワード算出部)は、CPU911を用いて、削除要求入力工程S781で削除要求入力部125が入力した鍵削除要求メッセージに含まれる鍵データに基づいて、逆パスワードを算出する。
パスワード取得工程S762において、パスワード取得部137(削除パスワード取得部)は、CPU911を用いて、逆パスワード算出工程S791で逆パスワード算出部136が算出した逆パスワードと、削除要求入力工程S781で削除要求入力部125が入力した鍵削除要求メッセージに含まれる識別データとを使って、逆記憶部301が記憶した鍵パスワードを取得する。鍵パスワードの取得に成功した場合、パスワード取得部137は、CPU911を用いて、鍵削除工程S794へ処理を進める。識別データの不一致や逆パスワードの不一致により鍵パスワードの取得に失敗した場合、パスワード取得部137は、CPU911を用いて、失敗出力工程S796へ処理を進める。
【0116】
鍵削除工程S794において、鍵登録部135(鍵削除部)は、CPU911を用いて、鍵記憶部110に登録された鍵データを削除する。順記憶部201は、磁気ディスク装置920を用いて記憶した鍵データ及び鍵パスワード及び識別データのなかから、対応づけられた識別データが、削除要求入力工程S781で削除要求入力部125が入力した鍵削除要求メッセージに含まれる識別データと一致し、かつ、対応づけられた鍵パスワードが、パスワード取得工程S792でパスワード取得部137が取得した鍵パスワードと一致する鍵データと、その鍵データに対応づけられた鍵パスワード及び識別データとを削除する。逆記憶部301は、磁気ディスク装置920を用いて記憶した鍵パスワード及び逆パスワード及び識別データのなかから、対応づけられた識別データが、削除要求入力工程S781で削除要求入力部125が入力した鍵削除要求メッセージに含まれる識別データと一致し、かつ、対応づけられた逆パスワードが、逆パスワード算出工程S791で逆パスワード算出部136が算出した逆パスワードと一致する鍵パスワードと、その鍵パスワードに対応づけられた逆パスワード及び識別データとを削除する。なお、なんらかのエラーにより鍵データの削除に失敗した場合、鍵登録部135は、CPU911を用いて、失敗出力工程S796へ処理を進める。
【0117】
成功出力工程S795において、応答生成部134は、CPU911を用いて、鍵の削除に成功したことを表わす応答メッセージを生成する。応答出力部123は、CPU911を用いて、実行装置501に対して、応答生成部134が生成した応答メッセージを出力する。応答出力部123は、CPU911を用いて、取得要求入力処理S710に処理を戻す。
【0118】
失敗出力工程S796において、応答生成部134は、CPU911を用いて、鍵の削除に失敗したことを表わす応答メッセージを生成する。応答出力部123は、CPU911を用いて、実行装置501に対して、応答生成部134が生成した応答メッセージを出力する。応答出力部123は、CPU911を用いて、取得要求入力処理S710に処理を戻す。
【0119】
なお、鍵更新処理S760において、鍵管理装置10は、前回の鍵更新処理S760で残しておいた古い鍵データがまだ削除されていない場合は、鍵の更新に失敗する構成であってもよい。
また、鍵削除処理S790において、鍵管理装置10は、鍵更新処理S760で残しておいた古い鍵データではなく、鍵更新処理S760で新たに生成した新しい鍵データを削除しようとした場合は、鍵の削除に失敗する構成であってもよい。
【0120】
図18は、この実施の形態における実行装置501の処理の詳細な流れの一例を示すフローチャート図である。
【0121】
管理パスワード取得工程S811において、管理パスワード取得部511は、CPU911を用いて、1つまたは2つの管理パスワードを取得する。
鍵取得要求生成工程S812において、取得要求生成部512は、CPU911を用いて、管理パスワード取得工程S811で管理パスワード取得部511が取得した1つまたは2つの管理パスワードを含む鍵取得要求メッセージを生成する。
【0122】
鍵記憶工程S815において、暗号鍵記憶部532は、RAM914を用いて、応答取得工程S814で応答取得部531が取得した応答メッセージに含まれる鍵データを記憶する。応答メッセージに鍵データが2つ含まれる場合、暗号鍵記憶部532は、暗号選択工程S851へ処理を進める。応答メッセージに鍵データが1つしか含まれない場合、暗号鍵記憶部532は、暗号処理S820へ処理を進める。
【0123】
暗号更新処理S850は、実施の形態2で説明した旧鍵削除工程S855を有さない。
暗号選択工程S851において、暗号記憶部542が記憶した暗号化データがすべて処理済である場合、復号部402は、CPU911を用いて、削除要求工程S860へ処理を進める。
【0124】
削除要求工程S860は、例えば、鍵削除要求生成工程S861と、鍵削除要求通知工程S862と、応答取得工程S863と、旧鍵削除工程S864とを有する。
鍵削除要求生成工程S861において、削除要求生成部552は、CPU911を用いて、暗号鍵記憶部532が記憶している更新前の古い鍵データと、識別データとを含む鍵削除要求メッセージを生成する。
鍵削除要求通知工程S862において、削除要求通知部553は、CPU911を用いて、鍵削除要求生成工程S861で削除要求生成部552が生成した鍵削除要求メッセージを、鍵管理装置10に対して通知する。
応答取得工程S863において、応答取得部531は、CPU911を用いて、鍵削除要求通知工程S862で削除要求生成部552が通知した鍵削除要求メッセージに対する応答として鍵管理装置10が出力した応答メッセージを取得する。
旧鍵削除工程S855において、暗号鍵記憶部532は、RAM914を用いて記憶した更新前の古い鍵データを削除する。暗号鍵記憶部532は、CPU911を用いて、暗号処理S820に処理を戻す。
【0125】
以上、各実施の形態で説明した構成は一例であり、これに限るものではない。例えば、異なる実施の形態で説明した構成を組み合わせた構成としてもよいし、重要でない部分の構成を他の構成で置き換えた構成としてもよい。
【0126】
以上説明した鍵管理装置(10)は、データを記憶する記憶装置(磁気ディスク装置920)と、データを処理する処理装置(CPU911)と、鍵記憶部(110;キーストア装置200、パスワードストア装置300)と、取得要求入力部(121;鍵・パスワード生成管理装置100)と、鍵パスワード算出部(131;鍵・パスワード生成管理装置100)と、鍵取得部(132;キーストア装置200)と、新規鍵生成部(鍵生成部133;鍵・パスワード生成管理装置100)と、鍵登録部(135;キーストア装置200、パスワードストア装置300)と、鍵出力部(応答出力部123;鍵・パスワード生成管理装置100)と、更新要求入力部(122;鍵・パスワード生成管理装置100)と、更新鍵生成部(鍵生成部133;鍵・パスワード生成管理装置100)と、鍵更新部(鍵登録部135;キーストア装置200、パスワードストア装置300)と、更新鍵出力部(応答出力部123;鍵・パスワード生成管理装置100)とを有する。
上記鍵記憶部は、上記記憶装置を用いて、暗号処理に使用する鍵と上記鍵にアクセスするための鍵パスワードとを記憶する。
上記取得要求入力部は、上記処理装置を用いて、取得すべき鍵の管理に使用する管理パスワードを入力する。
上記鍵パスワード算出部は、上記処理装置を用いて、上記取得要求入力部が入力した管理パスワードに基づいて、鍵パスワードを算出する。
上記鍵取得部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、上記処理装置を用いて、上記鍵記憶部が記憶した鍵を取得する。
上記新規鍵生成部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、鍵を生成する。
上記鍵登録部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、上記新規鍵生成部が生成した鍵と、上記鍵パスワード算出部が算出した鍵パスワードとを上記鍵記憶部に記憶させる。
上記鍵出力部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、上記処理装置を用いて、上記鍵取得部が取得した鍵を出力し、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、上記新規鍵生成部が生成した鍵を出力する。
上記更新要求入力部は、上記処理装置を用いて、更新すべき鍵を入力する。
上記更新鍵生成部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、鍵を生成する。
上記鍵更新部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、上記鍵記憶部が記憶した鍵に代えて、上記更新鍵生成部が生成した鍵を上記鍵記憶部に記憶させる。
上記更新鍵出力部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、上記更新鍵生成部が生成した鍵を出力する。
【0127】
鍵の取得には、管理パスワードから算出した鍵パスワードが必要なので、鍵の漏洩を防ぐことができる。また、鍵の更新には、更新前の鍵があればよいので、容易に鍵を更新することができる。
【0128】
上記鍵パスワード算出部は、上記処理装置を用いて、上記取得要求入力部が上記管理パスワードを入力した文脈を取得し、上記取得要求入力部が入力した管理パスワードと取得した文脈とに基づいて、鍵パスワードを算出する。
【0129】
管理パスワードと文脈とに基づいて鍵パスワードを算出するので、管理パスワードを知っていても、異なる文脈では、鍵を取得できず、鍵の漏洩を防ぐことができる。
【0130】
上記鍵パスワード算出部は、上記処理装置を用いて、上記管理パスワードを表わすデータと上記文脈を表わすデータとを結合し、結合したデータを一方向性関数により変換することにより、鍵パスワードを算出する。
【0131】
管理パスワードと文脈とを係合して一方向性関数により変換するので、管理パスワード及び文脈のいずれかを知っていても、鍵パスワードを算出することができない。
【0132】
上記鍵管理装置は、更に、逆パスワード算出部(136;鍵・パスワード生成管理装置100)と、旧逆パスワード算出部(逆パスワード算出部136;鍵・パスワード生成管理装置100)と、新逆パスワード算出部(逆パスワード算出部136;鍵・パスワード生成管理装置100)と、パスワード取得部(137;パスワードストア装置300)とを有する。
上記鍵記憶部は、順記憶部(201;キーストア装置200)と、逆記憶部(301;パスワードストア装置300)とを有する。
上記逆パスワード算出部は、上記処理装置を用いて、上記新規鍵生成部が生成した鍵に基づいて、上記鍵パスワードにアクセスするための逆パスワードを算出する。
上記順記憶部は、上記記憶装置を用いて、上記新規鍵生成部が生成した鍵と、上記鍵パスワード算出部が算出した鍵パスワードとを記憶する。
上記逆記憶部は、上記記憶装置を用いて、上記鍵パスワード算出部が算出した鍵パスワードと上記逆パスワード算出部が算出した逆パスワードとを記憶する。
上記鍵取得部は、上記処理装置を用いて、入力した鍵パスワードと上記順記憶部が記憶した鍵パスワードとが一致する場合に、上記順記憶部が記憶した鍵を出力する。
上記旧逆パスワード算出部は、上記処理装置を用いて、上記更新要求入力部が入力した鍵に基づいて、逆パスワードを算出する。
上記パスワード取得部は、上記旧逆パスワード算出部が算出した逆パスワードが、上記逆記憶部が記憶した逆パスワードと一致する場合に、上記処理装置を用いて、上記逆記憶部が記憶した鍵パスワードを取得する。
上記更新鍵生成部は、上記旧逆パスワード算出部が算出した逆パスワードが、上記逆記憶部が記憶した逆パスワードと一致する場合に、上記処理装置を用いて、鍵を生成する。
上記新逆パスワード算出部は、上記旧逆パスワード算出部が算出した逆パスワードが、上記逆記憶部が記憶した逆パスワードと一致する場合に、上記処理装置を用いて、上記更新鍵生成部が生成した鍵に基づいて、逆パスワードを算出する。
上記鍵更新部は、上記処理装置を用いて、上記パスワード取得部が取得した鍵パスワードが、上記順記憶部が記憶した鍵パスワードと一致する場合に、上記順記憶部が記憶した鍵に代えて、上記更新鍵生成部が生成した鍵を上記順記憶部に記憶させ、上記逆記憶部が記憶した逆パスワードに代えて、上記新逆パスワード算出部が算出した逆パスワードを上記逆記憶部に記憶させる。
【0133】
順記憶部が記憶した鍵にアクセスするには、鍵パスワードが必要になる。また、逆記憶部が記憶した鍵パスワードにアクセスするには、鍵から算出した逆パスワードが必要になる。これにより、鍵と鍵パスワードといずれかを知っていれば、他方も知ることができるので、容易に鍵を更新することができる。
【0134】
上記逆パスワード算出部及び上記旧逆パスワード算出部及び上記新逆パスワード算出部は、上記処理装置を用いて、上記鍵を一方向性関数により変換することにより、上記逆パスワードを生成する。
【0135】
鍵を一方向性関数により変換して逆パスワードを生成するので、逆パスワードから鍵を生成することはできない。
【0136】
上記鍵管理装置は、更に、パスワード更新要求入力部(取得要求入力部121)と、旧パスワード算出部(鍵パスワード算出部131)と、新パスワード算出部(鍵パスワード算出部131)と、パスワード更新部(鍵登録部135)とを有する。
上記パスワード更新要求入力部は、更新すべき古い管理パスワードと更新後の新たな管理パスワードとを入力する。
上記旧パスワード算出部は、上記処理装置を用いて、上記パスワード更新要求入力部が入力した古い管理パスワードに基づいて、鍵パスワードを算出する。
上記新パスワード算出部は、上記処理装置を用いて、上記パスワード更新要求入力部が入力した新たな管理パスワードに基づいて、鍵パスワードを算出する。
上記パスワード更新部は、上記旧パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、上記処理装置を用いて、上記鍵記憶部が記憶した鍵パスワードに代えて、上記新パスワード算出部が算出した鍵パスワードを上記鍵記憶部に記憶させる。
【0137】
管理パスワードを更新できるので、鍵の漏洩を防ぐことができる。
【0138】
以上説明した暗号処理システム(800)は、上記鍵管理装置(10)と、実行装置(501;業務アプリケーション装置500)とを有する。
上記実行装置は、データを記憶する実行記憶装置(RAM914、磁気ディスク装置920)と、データを処理する実行処理装置(CPU911)と、取得要求部(510)と、暗号鍵記憶部(532)と、暗号処理部(540;暗号/復号化装置400)と、暗号鍵更新部(暗号鍵記憶部532)とを有する。
上記取得要求部は、上記実行処理装置を用いて、管理パスワードを取得する。
上記取得要求入力部は、上記処理装置を用いて、上記取得要求部が取得した管理パスワードを入力する。
上記暗号鍵記憶部は、上記実行記憶装置を用いて、上記鍵出力部が出力した鍵を記憶する。
上記暗号処理部は、上記実行処理装置を用いて、上記暗号鍵記憶部が記憶した鍵を使って、暗号処理を実行する。
上記更新要求入力部は、上記処理装置を用いて、上記暗号鍵記憶部が記憶した鍵を入力する。
上記暗号鍵更新部は、上記実行処理装置を用いて、上記更新鍵出力部が出力した鍵を上記暗号鍵記憶部に記憶させる。
【0139】
鍵管理装置が管理する鍵を使って暗号処理をするので、情報の漏洩を防ぐことができる。
【0140】
上記実行記憶装置は、揮発性の揮発性記憶装置(RAM914)と、不揮発性の不揮発性記憶装置(磁気ディスク装置920)とを有する。
上記暗号処理部は、暗号化部(401)と、暗号記憶部(542)と、復号部(402)と、更新暗号化部(暗号化部401)と、暗号更新部(暗号記憶部542)とを有する。
上記暗号鍵記憶部は、上記揮発性記憶装置を用いて、上記鍵出力部及び上記更新鍵出力部が出力した鍵を記憶する。
上記暗号化部は、上記実行処理装置を用いて、上記暗号鍵記憶部が記憶した鍵を使って、平文データを暗号化して暗号化データを生成する。
上記暗号記憶部は、上記不揮発性記憶装置を用いて、上記暗号化部が生成した暗号化データを記憶する。
上記復号部は、上記実行処理装置を用いて、上記暗号鍵記憶部が記憶した鍵を使って、上記暗号記憶部が記憶した暗号化データを復号して復元平文データを生成する。
上記更新暗号化部は、上記実行処理装置を用いて、上記更新鍵出力部が出力した鍵を使って、上記復号部が生成した復元平文データを暗号化して更新暗号化データを生成する。
上記暗号更新部は、上記実行処理装置を用いて、上記暗号記憶部が記憶した暗号化データに代えて、上記更新暗号化部が生成した更新暗号化データを上記暗号記憶部に記憶させる。
【0141】
鍵の更新に伴って、暗号化データを更新するので、情報の漏洩を防ぐことができる。
【0142】
以上説明した鍵管理装置10は、コンピュータを鍵管理装置10として機能させるプログラムをコンピュータが実行することにより実現することができる。
【符号の説明】
【0143】
10 鍵管理装置、100 鍵・パスワード生成管理装置、110 鍵記憶部、121 取得要求入力部、122 更新要求入力部、123 応答出力部、125 削除要求入力部、131 鍵パスワード算出部、132 鍵取得部、133 鍵生成部、134 応答生成部、135 鍵登録部、136 逆パスワード算出部、137 パスワード取得部、200 キーストア装置、201 順記憶部、300 パスワードストア装置、301 逆記憶部、400 暗号/復号化装置、401 暗号化部、402 復号部、500 業務アプリケーション装置、501 実行装置、510 取得要求部、511 管理パスワード取得部、512 取得要求生成部、513 取得要求通知部、520 更新要求部、521 更新判定部、522 更新要求生成部、523 更新要求通知部、531 応答取得部、532 暗号鍵記憶部、540 暗号処理部、541 平文入力部、542 暗号記憶部、543 平文出力部、550 削除要求部、552 削除要求生成部、553 削除要求通知部、600 クライアントアプリケーション装置、701 パスワード、702 呼び出し情報、703 連結データ、704,707 ハッシュ値、705 キーストアパスワード、706 鍵、708 パスワードストアパスワード、800 暗号処理システム、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信装置、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN。

【特許請求の範囲】
【請求項1】
データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、取得要求入力部と、鍵パスワード算出部と、鍵取得部と、新規鍵生成部と、鍵登録部と、鍵出力部と、更新要求入力部と、更新鍵生成部と、鍵更新部と、更新鍵出力部とを有し、
上記鍵記憶部は、上記記憶装置を用いて、暗号処理に使用する鍵と上記鍵にアクセスするための鍵パスワードとを記憶し、
上記取得要求入力部は、上記処理装置を用いて、取得すべき鍵の管理に使用する管理パスワードを入力し、
上記鍵パスワード算出部は、上記処理装置を用いて、上記取得要求入力部が入力した管理パスワードに基づいて、鍵パスワードを算出し、
上記鍵取得部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、上記処理装置を用いて、上記鍵記憶部が記憶した鍵を取得し、
上記新規鍵生成部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、鍵を生成し、
上記鍵登録部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、上記新規鍵生成部が生成した鍵と、上記鍵パスワード算出部が算出した鍵パスワードとを上記鍵記憶部に記憶させ、
上記鍵出力部は、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、上記処理装置を用いて、上記鍵取得部が取得した鍵を出力し、上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、上記処理装置を用いて、上記新規鍵生成部が生成した鍵を出力し、
上記更新要求入力部は、上記処理装置を用いて、更新すべき鍵を入力し、
上記更新鍵生成部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、鍵を生成し、
上記鍵更新部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、上記鍵記憶部が記憶した鍵に代えて、上記更新鍵生成部が生成した鍵を上記鍵記憶部に記憶させ、
上記更新鍵出力部は、上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、上記処理装置を用いて、上記更新鍵生成部が生成した鍵を出力することを特徴とする鍵管理装置。
【請求項2】
上記鍵パスワード算出部は、上記処理装置を用いて、上記取得要求入力部が上記管理パスワードを入力した文脈を取得し、上記取得要求入力部が入力した管理パスワードと取得した文脈とに基づいて、鍵パスワードを算出することを特徴とする請求項1に記載の鍵管理装置。
【請求項3】
上記鍵パスワード算出部は、上記処理装置を用いて、上記管理パスワードを表わすデータと上記文脈を表わすデータとを結合し、結合したデータを一方向性関数により変換することにより、鍵パスワードを算出することを特徴とする請求項2に記載の鍵管理装置。
【請求項4】
上記鍵管理装置は、更に、逆パスワード算出部と、旧逆パスワード算出部と、新逆パスワード算出部と、パスワード取得部とを有し、
上記鍵記憶部は、順記憶部と、逆記憶部とを有し、
上記逆パスワード算出部は、上記処理装置を用いて、上記新規鍵生成部が生成した鍵に基づいて、上記鍵パスワードにアクセスするための逆パスワードを算出し、
上記順記憶部は、上記記憶装置を用いて、上記新規鍵生成部が生成した鍵と、上記鍵パスワード算出部が算出した鍵パスワードとを記憶し、
上記逆記憶部は、上記記憶装置を用いて、上記鍵パスワード算出部が算出した鍵パスワードと上記逆パスワード算出部が算出した逆パスワードとを記憶し、
上記鍵取得部は、上記処理装置を用いて、入力した鍵パスワードと上記順記憶部が記憶した鍵パスワードとが一致する場合に、上記順記憶部が記憶した鍵を出力し、
上記旧逆パスワード算出部は、上記処理装置を用いて、上記更新要求入力部が入力した鍵に基づいて、逆パスワードを算出し、
上記パスワード取得部は、上記旧逆パスワード算出部が算出した逆パスワードが、上記逆記憶部が記憶した逆パスワードと一致する場合に、上記処理装置を用いて、上記逆記憶部が記憶した鍵パスワードを取得し、
上記更新鍵生成部は、上記旧逆パスワード算出部が算出した逆パスワードが、上記逆記憶部が記憶した逆パスワードと一致する場合に、上記処理装置を用いて、鍵を生成し、
上記新逆パスワード算出部は、上記旧逆パスワード算出部が算出した逆パスワードが、上記逆記憶部が記憶した逆パスワードと一致する場合に、上記処理装置を用いて、上記更新鍵生成部が生成した鍵に基づいて、逆パスワードを算出し、
上記鍵更新部は、上記処理装置を用いて、上記パスワード取得部が取得した鍵パスワードが、上記順記憶部が記憶した鍵パスワードと一致する場合に、上記順記憶部が記憶した鍵に代えて、上記更新鍵生成部が生成した鍵を上記順記憶部に記憶させ、上記逆記憶部が記憶した逆パスワードに代えて、上記新逆パスワード算出部が算出した逆パスワードを上記逆記憶部に記憶させることを特徴とする請求項1乃至請求項3のいずれかに記載の鍵管理装置。
【請求項5】
上記逆パスワード算出部及び上記旧逆パスワード算出部及び上記新逆パスワード算出部は、上記処理装置を用いて、上記鍵を一方向性関数により変換することにより、上記逆パスワードを生成することを特徴とする請求項4に記載の鍵管理装置。
【請求項6】
上記鍵管理装置は、更に、パスワード更新要求入力部と、旧パスワード算出部と、新パスワード算出部と、パスワード更新部とを有し、
上記パスワード更新要求入力部は、更新すべき古い管理パスワードと更新後の新たな管理パスワードとを入力し、
上記旧パスワード算出部は、上記処理装置を用いて、上記パスワード更新要求入力部が入力した古い管理パスワードに基づいて、鍵パスワードを算出し、
上記新パスワード算出部は、上記処理装置を用いて、上記パスワード更新要求入力部が入力した新たな管理パスワードに基づいて、鍵パスワードを算出し、
上記パスワード更新部は、上記旧パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、上記処理装置を用いて、上記鍵記憶部が記憶した鍵パスワードに代えて、上記新パスワード算出部が算出した鍵パスワードを上記鍵記憶部に記憶させることを特徴とする請求項1乃至請求項5のいずれかに記載の鍵管理装置。
【請求項7】
請求項1乃至請求項6のいずれかに記載の鍵管理装置と、実行装置とを有し、
上記実行装置は、データを記憶する実行記憶装置と、データを処理する実行処理装置と、取得要求部と、暗号鍵記憶部と、暗号処理部と、暗号鍵更新部とを有し、
上記取得要求部は、上記実行処理装置を用いて、管理パスワードを取得し、
上記取得要求入力部は、上記処理装置を用いて、上記取得要求部が取得した管理パスワードを入力し、
上記暗号鍵記憶部は、上記実行記憶装置を用いて、上記鍵出力部が出力した鍵を記憶し、
上記暗号処理部は、上記実行処理装置を用いて、上記暗号鍵記憶部が記憶した鍵を使って、暗号処理を実行し、
上記更新要求入力部は、上記処理装置を用いて、上記暗号鍵記憶部が記憶した鍵を入力し、
上記暗号鍵更新部は、上記実行処理装置を用いて、上記更新鍵出力部が出力した鍵を上記暗号鍵記憶部に記憶させることを特徴とする暗号処理システム。
【請求項8】
上記実行記憶装置は、揮発性の揮発性記憶装置と、不揮発性の不揮発性記憶装置とを有し、
上記暗号処理部は、暗号化部と、暗号記憶部と、復号部と、更新暗号化部と、暗号更新部とを有し、
上記暗号鍵記憶部は、上記揮発性記憶装置を用いて、上記鍵出力部及び上記更新鍵出力部が出力した鍵を記憶し、
上記暗号化部は、上記実行処理装置を用いて、上記暗号鍵記憶部が記憶した鍵を使って、平文データを暗号化して暗号化データを生成し、
上記暗号記憶部は、上記不揮発性記憶装置を用いて、上記暗号化部が生成した暗号化データを記憶し、
上記復号部は、上記実行処理装置を用いて、上記暗号鍵記憶部が記憶した鍵を使って、上記暗号記憶部が記憶した暗号化データを復号して復元平文データを生成し、
上記更新暗号化部は、上記実行処理装置を用いて、上記更新鍵出力部が出力した鍵を使って、上記復号部が生成した復元平文データを暗号化して更新暗号化データを生成し、
上記暗号更新部は、上記実行処理装置を用いて、上記暗号記憶部が記憶した暗号化データに代えて、上記更新暗号化部が生成した更新暗号化データを上記暗号記憶部に記憶させることを特徴とする請求項7に記載の暗号処理システム。
【請求項9】
データを記憶する記憶装置とデータを処理する処理装置とを有するコンピュータが実行することにより、上記コンピュータが請求項1乃至請求項6のいずれかに記載の鍵管理装置として機能することを特徴とするコンピュータプログラム。
【請求項10】
データを記憶する記憶装置と、データを処理する処理装置とを有する鍵管理装置が鍵を管理する鍵管理方法において、
鍵記憶部として、上記記憶装置が、暗号処理に使用する鍵と上記鍵にアクセスするための鍵パスワードとを記憶し、
取得要求入力部として、上記処理装置が、取得すべき鍵の管理に使用する管理パスワードを入力し、
鍵パスワード算出部として、上記処理装置が、上記取得要求入力部が入力した管理パスワードに基づいて、鍵パスワードを算出し、
上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致する場合に、
鍵取得部として、上記処理装置が、上記鍵記憶部が記憶した鍵を取得し、
鍵出力部として、上記処理装置が、上記鍵取得部が取得した鍵を出力し、
上記鍵パスワード算出部が算出した鍵パスワードが、上記鍵記憶部が記憶した鍵パスワードと一致しない場合に、
新規鍵生成部として、上記処理装置が、鍵を生成し、
上記鍵記憶部として、上記記憶装置が、上記新規鍵生成部が生成した鍵と、上記鍵パスワード算出部が算出した鍵パスワードとを記憶し、
上記鍵出力部として、上記処理装置が、上記新規鍵生成部が生成した鍵を出力し、
更新要求入力部として、上記処理装置が、更新すべき鍵を入力し、
上記更新要求入力部が入力した鍵が、上記鍵記憶部が記憶した鍵と一致する場合に、
更新鍵生成部として、上記処理装置が、鍵を生成し、
鍵更新部として、上記処理装置が、上記鍵記憶部が記憶した鍵に代えて、上記更新鍵生成部が生成した鍵を上記鍵記憶部に記憶させ、
更新鍵出力部として、上記処理装置が、上記更新鍵生成部が生成した鍵を出力することを特徴とする鍵管理方法。

【図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

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate