(57)【要約】【課題】複数の異なる復号鍵データの内の任意のものを使って復号できるように、秘匿の対象とする電子データを共通に暗号化することを可能とする。【解決手段】複数鍵暗号化装置は、秘匿対象電子データの入力を受け付ける手段、暗号化した電子データの復号鍵情報となる電子データの入力を複数受け付ける手段、秘匿対象の電子データを一定長以下の長さのブロックに分割する手段、秘匿対象の電子データに対して、分散生成される暗号化データの内の一個あるいは複数個が、復号鍵データとなるように、分散データを生成するための分散関数中の変数値を決定して分散関数を生成する手段、秘匿対象の電子データに対して、前記した分散関数により分散データを複数分散生成する手段、前記分散データを秘密の復元に必要な個数よりも一つだけ少ない個数組み合わせた上で暗号化データとして出力する手段を備える。【選択図】図１
2006080998.tif 000002
【特許請求の範囲】
【請求項１】
秘匿の対象とする電子データを複数の異なる鍵の内の一個あるいは複数個で復号可能なように暗号化する複数鍵暗号化装置であって、
秘匿の対象とする電子データの入力を受け付ける秘匿データ入力手段と、
暗号化した電子データを復号する際の鍵情報となる電子データの入力を一つあるいは複数受け付ける復号鍵データ入力手段と、
入力された秘匿対象の電子データを一定長以下の長さのブロックに分割する電子データ分割手段と、
秘匿対象の電子データに対して、分散生成される暗号化データの内の一個あるいは複数個が、前記受け付けた復号鍵データとなるように、分散データを生成するための分散関数中の変数値を決定して分散関数を生成する分散関数生成手段と、
秘匿対象の電子データに対して、前記生成した分散関数により分散データを一つあるいは複数分散生成する分散データ生成手段と、
前記生成した分散データを秘密の復元に必要な個数よりも一つだけ少ない個数組み合わせた上で暗号化データとして出力する暗号化データ出力手段と、
を備える事を特徴とする複数鍵暗号化装置。
【請求項２】
請求項１に記載の複数鍵暗号化装置であって、
一定長以下の長さの乱数データを生成する乱数データ生成手段を更に備え、
分散関数生成手段は、復号鍵データと乱数データとから分散データを生成するための分散関数中の変数値を決定する事を特徴とする複数鍵暗号化装置。
【請求項３】
請求項１もしくは２に記載の複数鍵暗号化装置であって、
暗号化データ出力手段は、生成した分散データを秘密の復元に必要な個数よりも、秘密の復元に必要な復号鍵データの数だけ少ない個数組み合わせた上で暗号化データとして出力する事を特徴とする複数鍵暗号化装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の複数鍵暗号化装置により分散暗号化された秘匿対象の電子データを復号する複数鍵復号装置であって、
復号の対象とする暗号化データの入力を受け付ける暗号化データ入力手段と、
分散暗号化した電子データを復号する際の鍵情報となる電子データの入力を一つあるいは複数受け付ける復号鍵データ入力手段と、
入力された暗号化データを一定長以下の長さのブロックに分割する電子データ分割手段と、
暗号化データと復号鍵データを元に、所定の復号関数により秘匿対象の電子データを復号する秘匿データ復号手段と、
前記復号した秘匿対象の電子データを出力する秘匿データ出力手段と、
を備える事を特徴とする複数鍵復号装置。
【請求項５】
請求項１乃至３のいずれか１項に記載の複数鍵暗号化装置と請求項４に記載の複数台の複数鍵復号装置からなる複数鍵暗号化システムであって、
複数鍵暗号化装置において、秘匿の対象とする電子データを複数の復号鍵データにより復号可能なように暗号化した暗号化データを個々の複数鍵復号装置に配信し、
各複数鍵復号装置において、配信された暗号化データに対して別個に入力あるいは記憶する復号鍵データによって復号し出力する、
事を特徴とする複数鍵暗号化システム。
【請求項６】
請求項１乃至３のいずれか１項に記載の複数鍵暗号化装置における処理機能をコンピュータに実行させるためのプログラム。
【請求項７】
請求項４に記載の複数鍵復号装置における処理機能をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パスワードや鍵情報といった秘密情報や、テキスト、画像、音楽などの電子化されたデータを対象として分散暗号化し、幾つか以上の分散生成された電子データ片から元の電子データを復号可能とする秘密分散法を用いた分散暗号化技術に関する。特に、秘匿の対象とする電子データに対して、複数個の復号鍵データを設定して分散暗号化し、複数個の復号鍵データの内の任意の１個を用いて元の秘匿データを復号可能とする分散暗号化技術に関する。
【背景技術】
【０００２】
従来、秘匿の対象とする電子データを暗号化する技術としては、例えばパスワードや暗証番号による暗号化、共通鍵や公開鍵・秘密鍵などの鍵暗号方式を用いた暗号化などが一般に知られている。
【０００３】
前者は、所定のあるいは入力されたパスワードや暗証番号を使って、元の秘密データに対して和、積、論理的排他和などの演算処理を行う事で電子データの暗号化を実現するもので、復号するためには暗号化時に用いられたパスワードや暗証番号を使って逆演算を行う必要があり、したがってパスワードや暗証番号を知らない場合は元の秘密データ復号する事ができず、電子データの秘匿が実現できる（例えば、特許文献１参照）。
【０００４】
後者は、共通鍵や公開鍵・秘密鍵と呼ばれる鍵情報を使って、元の秘密データに対して剰余演算などの演算処理を行う事で電子データの暗号化を実現するもので、復号するためには同様に共通鍵や公開鍵・秘密鍵を使って演算処理を行う必要があり、共通鍵や公開鍵・秘密鍵を持たない限り元の秘密データを復号する事ができず、電子データの秘匿が実現できる（例えば、特許文献２参照）。
【０００５】
ー方、秘匿の対象とする電子データを分散暗号化する技術として秘密分散法がある。秘密分散法は、分散関数と呼ばれる関数情報を使って元の秘密データから複数の異なる情報を生成する事で電子データの暗号化を実現するもので、復号するためには生成した分散情報の全てあるいは一定数以上の情報を集めた上で行列演算などによる復号処理を行う必要があり、したがって必要な数に足りない分散情報からは元の秘密データを復号する事ができず、電子データの秘匿が実現できる（例えば、非特許文献１参照）。
【０００６】
【特許文献１】特開平５−５３９９０号公報
【特許文献２】特開平５−１３００９９号公報
【非特許文献１】尾形わかは、黒沢馨；「秘密分散共有法とその応用」、電子情報通信学会誌、ｖｏｌ．８２  ，ＮＯ．１２，ｐｐ１２２８〜１２３６，１９９９年１２月
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述した鍵情報あるいはパスワードによる暗号化技術においては、鍵情報やパスワード等は一回の暗号化に際して高々一個しか設定できず、同時に複数の鍵で暗号化および復元する事はできなかった。すなわち、あるデータに対して異なる鍵情報、例えば鍵情報１でも鍵情報２でも一回の処理で復号が可能なように暗号化する事はできなかった。
【０００８】
異なる鍵情報を使って暗号化した電子データを復号する技術は全くないわけではなく、対象データを共通の単一の鍵情報で暗号化した後に、この共通の鍵情報を利用者によって異なる鍵情報やパスワードで暗号化する事で、異なる鍵情報から共通の鍵情報を復元した後に復号する方法や、複数の鍵情報やパスワードを別途記憶しておいて、記憶に該当する鍵情報やパスワードが入力された時に共通の鍵情報を用いて暗号化データを復号する方法などもある。しかしながら、このような方法はどちらも複数の異なる鍵情報から単一の共通の鍵情報を導き出すという処理を必要とし、煩雑であった。
【０００９】
本発明は、上記の課題を鑑みてなされたもので、電子データの暗号化において、利用者によって異なる複数の鍵情報やパスワードを使って、同時に一回の処理で電子データの暗号化および復号を可能とする事で、利便性と安全性の高い電子データの暗号化を可能とする複数鍵暗号化装置、複数鍵復号装置及び複数鍵暗号化システム並びにプログラムを実現することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、（ｋ，ｎ）閾値秘密分散法、（ｄ，ｋ，ｎ）閾値秘密分散法、あるいは、本出願人の既出願に係る特願２００３−３６６５３８号に記載の復元制御型秘密情報分散法などのいわゆる閾値秘密分散法を用いる。
【００１１】
（ｋ，ｎ）閾値秘密分散法は、分散情報を配布する数である２以上の整数の分散数ｎと、秘密情報Ｓの復元に必要な分散情報の最低数である２以上ｎ以下の整数の閾値ｋから、秘密情報Ｓを定数項とする（ｋ−１）次の多項式ｆ（ｘ）を、
ｆ（ｘ）＝Ｓ＋ｒ１ｘ＋…ｒk-1ｘk-1    mod  ｐ              …（１）
として作成し（ｒ１，…，ｒk-1：乱数、ｐ：素数）、元の秘密情報Ｓを所有あるいは預託により分配する秘密情報分配者は、分散情報を保管する各分散情報保持者ｉ（ｉ＝１，２，…，ｎ）に対して、分散情報Ｗｉ＝ｆ（ｉ）を分配するものである。
【００１２】
この（ｋ，ｎ）閾値秘密分散法は、ｎ個の分散情報の内、任意のｋ個の分散情報がそろえば、ｆ（ｘ）に関する連立方程式を解く事により元の秘密情報Ｓを復元できるが、任意の（ｋ−１）個までの分散情報がそろってもｆ（ｘ）に関する連立方程式を解く事はできないため、元の秘密情報Ｓは復元できないという特徴がある。したがって、（ｎ−ｋ）個までの分散情報が紛失や破壊により損なわれても元の秘密情報Ｓが復元可能であり、（ｋ−１）個までの分散情報が漏洩や盗難により得られても元の秘密情報Ｓは復元できないという、秘密情報を安全に保管する方法が実現できる。
【００１３】
（ｄ，ｋ，ｎ）閾値秘密分散法は、上記（ｋ，ｎ）閾値秘密分散法を拡張したもので、分散情報を配布する数である２以上の整数の分散数ｎと、秘密情報Ｓの完全な復元に必要な分散情報の最低数である２以上ｎ以下の整数の閾値ｋと、閾値ｋに対して秘密情報Ｓの部分的な復元を許容する分散情報の不足数を決定する２以上ｋ以下の整数の分割数ｄから、秘密情報ＳをＳ０，Ｓ１，…，Ｓd-1に分割し、これらの分割した秘密情報（分割情報）を定数項とする（ｋ−１）次の多項式ｆ（ｘ）を、
ｆ(ｘ)＝Ｓ０＋Ｓ１ｘ＋…Ｓd-1ｘd-1＋ｒ1ｘd＋…ｒk-dｘk-1  mod  Ｐ  …（２）
として作成し（ｒ１，…，ｒｋ−d：乱数、ｐ：素数）、元の秘密情報Ｓを所有あるいは預託により分配する秘密情報分配者は、分散情報を保管する各分散情報保持者ｉ（１＝１，２，…，ｎ）に対して、分散情報Ｗｉ＝ｆ（ｉ）を分配するものである。
【００１４】
この（ｄ，ｋ，ｎ）閾値秘密分散法は、上記の（ｋ，ｎ）閾値秘密分散法と同様に、ｎ個の分散情報の内、任意のｋ個の分散情報がそろえば、ｆ（ｘ）に関する連立方程式を解く事により元の秘密情報Ｓを復元できるが、任意の（ｋ−ｄ）個までの分散情報がそろってもｆ（ｘ）に関する連立方程式を解く事はできないため、元の秘密情報Ｓは復元できないという特徴がある。ただし、任意の（ｋ−ｄ＋１）個から（ｋ−１）個までの分散情報がそろった場合には、ｆ（ｘ）に関する連立方程式から分割情報Ｓ０，Ｓ１，…，Ｓd-1に関する関係式が求められるため、分割情報Ｓ０，Ｓ１，…，Ｓd-1として可能な値を得る事ができ、元の秘密情報Ｓを部分的に復元する事ができる。
【００１５】
なお、（ｋ，ｎ）閾値秘密分散法および（ｄ，ｋ，ｎ）閾値秘密分散法については、詳しくは、それぞれ「Ａ．Ｓhamir，“Ｈow  to  Ｓhare  a  Ｓecret”，Ｃommun．of  ＡＣＭ，Ｖol．２２，Ｎｏ．１１，pp．６１２−６１３，１９７９」および「Ｇ．Ｒ．Ｂｌakley，Ｃ．Ｍeadows，“Ｓecurity  of  ramp  schemes”，Ｐroc．of  Ｃrypto’８４，Ｌecure  Ｎotes  on  Ｃomput．Ｓci．，１９６，pp．２４２−２６８，１９８４」に述べられている。
【００１６】
復元制御型秘密情報分散法は、この（ｋ，ｎ）閾値秘密分散法および（ｄ，ｋ，ｎ）閾値秘密分散法を更に拡張した方法で、ｎ個の分散情報の内、任意のｋ個の分散情報がそろえば、ｆ（ｘ）に関する連立方程式を解く事により元の秘密情報Ｓを復元できるが、任意の（ｋ−ｄ）個までの分散情報がそろってもｆ（ｘ）に関する連立方程式を解く事はできないため、元の秘密情報Ｓは復元できないという特徴をもつ。ただし、情報を分散させる分散関数を特定の形式に規定する事により、任意の（ｋ−ｄ＋１）個から（ｋ−１）個までの分散情報が特定の組み合わせによりそろった場合にはｆ（ｘ）に関する連立方程式から特定の分割情報Ｓ０，Ｓ１，…，Ｓd-1を求める事ができ、元の秘密情報Ｓを部分的に復元する事ができる情報分散方法である。
【００１７】
この復元制御型秘密情報分散法は、基本的には、秘密情報Ｓについて、秘密情報Ｓの完全な復元に必要な分散情報の最低数である２以上の整数の閾値ｋ、閾値ｋに対して秘密情報Ｓの部分的な復元を許容する分散情報の不足数を決定する２以上ｋ以下の整数の分割数ｄと、秘密情報Ｓのｄ個の分割情報（分配情報）Ｓ０，Ｓ１，…，Ｓd-1などの秘密情報Ｓを分散するための条件を入力し、
最大の分割情報Ｓｔ（０≦ｔ≦ｄ−１）よりも大きな素数ｐと、素数ｐよりも小さく０でない（ｋ−ｄ個）の乱数ｒｉ（１≦１≦ｋ−ｄ）と、（ｋ（ｋ−１）／２）個の乱数ａｊ（１≦ｊ≦ｋ（ｋ−１）／２）を生成して、
ｆ（ｘ）＝Ｓ０＋Ｓ１(ｘ−ａ１)＋…＋Ｓｄ−１(ｘ−ａ（ｄ−１）（ｄ−２）／２＋１)(ｘ−ａ（ｄ−１）（ｄ−２）／２＋２)…(ｘ−ａ（ｄ−１）（ｄ−２）／２＋ｄ−１)＋ｒ１(ｘ−ａｄ（ｄ−１）／２＋１)(ｘ−ａｄ（ｄ−１）／２＋２)…(ｘ−ａｄ（ｄ−１）／２＋ｄ)＋…＋ｒｋ−ｄ(ｘ−ａ（ｋ−１）（ｋ−２）／２＋１)(ｘ−ａ（ｋ−１）（ｋ−２）／２＋２)…(ｘ−ａ（ｋ−１）（ｋ−２）／２＋ｋ−１)  mod  Ｐ          …（３）
の式で表現される秘密情報Ｓの分散情報ｆ（ｘ）を生成するものである。
【００１８】
上記式（３）の分散関数ｆ（ｘ）は、例えばｋ＝３、ｄ＝２とした場合、
ｆ（ｘ）＝Ｓ０＋Ｓ１(ｘ−ａ１)＋ｒ(ｘ−ａ２)(ｘ−ａ３）  mod  Ｐ  …（４）
で表現され、任意の２個の分散情報ＷｘとＷｘ＋ｂ（ｘ＞０、ｂ＞０）についての連立方程式は以下のような行列式で表現できる。
【００１９】
【数１】
2006080998.tif 000003
上記行列式の左項を掃き出し法により変形すると、
【００２０】
【数２】
2006080998.tif 000004
となり、ａ1，ａ2，ａ3の値によっては−ｘ2＋（２ａ1−ｂ）＋ａ1ｂ−ａ1ａ2−ａ1ａ3＋ａ2ａ3＝０，もしくは２ｘ＋ｂ−ａ2−ａ3＝０を満たすｘとｂがある場合に、連立方程式から分割情報（部分情報）のＳ0のみ、もしくはＳ1のみを求めることができる。
【００２１】
本発明の複数鍵暗号化装置は、秘匿の対象とする電子データの入力を受け付ける秘匿データ入力手段と、暗号化した電子データを復号する際の鍵情報となる電子データの入力を一つあるいは複数受け付ける復号鍵データ入力手段と、入力された秘匿対象の電子データを一定長以下の長さのブロックに分割する電子データ分割手段と、秘密分散法を利用して、秘匿対象の電子データに対して、分散生成される暗号化データの内の一個あるいは複数個が、前記受け付けた復号鍵データとなるように、分散データを生成するための分散関数中の変数値を決定して分散関数を生成する分散関数生成手段と、秘匿対象の電子データに対して、前記生成した分散関数により分散データを一つあるいは複数分散生成する分散データ生成手段と、前記生成した分散データを秘密の復元に必要な個数よりも一つだけ少ない個数組み合わせた上で暗号化データとして出力する暗号化データ出力手段とを備える事を特徴とし、複数の異なる復号鍵データの内の少なくとも任意の一個を使って復号できるように、秘匿の対象とする電子データを共通に暗号化する事を可能とする。
【００２２】
また、本発明の複数鍵暗号化装置は、一定長以下の長さの乱数データを生成する乱数データ生成手段を更に備え、分散関数生成手段は、復号鍵データと乱数データとから分散データを生成するための分散関数中の変数値を決定する事を特徴とし、複数の異なる復号鍵データの内の少なくとも任意の一個を使って復号できるように、秘匿の対象とする電子データを共通にかつ安全に暗号化する事を可能とする。
【００２３】
また、本発明の複数鍵暗号化装置は、暗号化データ出力手段が、生成した分散データを秘密の復元に必要な個数よりも、秘密の復元に必要な復号鍵データの数だけ少ない個数組み合わせた上で暗号化データとして出力する事を特徴とし、複数の異なる復号鍵データの内、所定の数の任意の復号鍵データを使って復号できるように、秘匿の対象とする電子データを共通に暗号化する事を可能とする。
【００２４】
復号の対象とする暗号化データの入力を受け付ける暗号化データ入力手段と、分散暗号化した電子データを復号する際の鍵情報となる電子データの入力を一つあるいは複数受け付ける復号鍵データ入力手段と、入力された暗号化データを一定長以下の長さのブロックに分割する電子データ分割手段と、暗号化データと復号鍵データを元に、所定の復号関数により秘匿対象の電子データを復号する秘匿データ復号手段と、前記復号した秘匿対象の電子データを出力する秘匿データ出力手段とを備える事を特徴とし、上記複数鍵暗号化装置によって暗号化された電子データに対し、復号の鍵となる復号鍵データによって元の電子データを復元する事を可能とする。
【００２５】
本発明の複数鍵の暗号化システムは、上記複数鍵暗号化装置と複数台の複数鍵復号装置からなり、複数鍵暗号化装置において、秘匿の対象とする電子データを複数の復号鍵データにより復号可能なように暗号化した暗号化データを個々の複数鍵復号装置に配信し、各複数鍵復号装置において、配信された暗号化データに対して別個に入力あるいは記憶する復号鍵データによって復号し出力することを特徴とし、秘匿の対象とする任意の複数の電子データについて、複数の異なる復号鍵データを用いて複数鍵暗号化装置において同時に暗号化して、これを個別の複数鍵復号装置に送信する事で、該暗号化した電子データの復号に必要な復号鍵データがないと該電子データを復元・参照・利用できないように安全に電子データを秘匿・配信する事を可能とする。
【発明の効果】
【００２６】
本発明によれば、複数鍵暗号化装置において、秘匿の対象とする任意の電子データＳに対して、複数個の復号鍵データを設定し、秘匿データＳを分散暗号化した後の分散データの幾つかが固定の復号鍵データとなるように分散関数を決定して、該分散関数により秘匿データを分散暗号化した分散データを生成する事で、複数鍵復号装置において複数個の復号鍵データの内の任意の一個を用いて元の秘匿データＳを復号する事が可能となる。これにより、電子データの暗号化において、複数個の復号鍵データに対して個別に暗号化して暗号化データを生成し、個別の復号鍵データによって復号するのではなく、ただ一度の処理により共通に暗号化して暗号化データを生成し、個々の復号鍵データによって復号する事ができ、利便性の高い電子データの暗号化・復号が可能なる。
【発明を実施するための最良の形態】
【００２７】
図１に、本発明の実施形態における複数鍵暗号化装置１００、複数の複数鍵復号装置２００による複数鍵暗号化システムの構成例を示す。ここで、複数鍵暗号化装置１００と複数の複数鍵復号装置２００は、相互に接続されていても良いし、接続されていなくとも良い。また、例えば図１のようにインターネットなどの通信回線３００を通じてネットワーク的に接続されていても良い。複数鍵暗号化装置１００は、入力された秘匿対象とする電子データを、復号の鍵とする一つあるいは複数の復号鍵データに基づいて分散暗号化して暗号化データを生成して出力する。各複数鍵復号装置２００では、入力された暗号化データに対して、それぞれ復号の鍵である任意の復号鍵データに基づいて秘匿対象の電子データを復号して出力する。
【実施例】
【００２８】
以下、複数鍵暗号化装置１００、複数鍵復号装置２００の構成例及び動作例について詳述する。なお、動作例では（ｋ，ｎ）値閾秘密分散法を利用するが、（ｄ，ｋ，ｎ）閾値秘密分散あるいは復元制御型秘密情報分散法を利用しても同様である。
【００２９】
＜複数鍵暗号化装置１００＞
図２に本発明の実施例における複数鍵暗号化装置１００の機能構成図を示す。複数鍵暗号化装置１００は、暗号化制御部１１０、秘匿データ入力部１２０、復号鍵データ入力部１３０、電子データ分割部１４０、分散関数生成部１５０、分散データ生成部１６０、暗号化データ出力部１７０、情報記憶部１８０から構成される。複数鍵暗号化装置１００は暗号化制御部１１０の制御にしたがって動作する。
【００３０】
秘匿データ入力部１２０は、秘匿の対象とする電子データの入力を受け付ける。受け付けた電子データは例えば情報記憶部１８０や内部メモリなどに一時的に記録するのが望ましい。本実施例では、電子データとして６桁の文字列テキスト「秘密情報の例」が入力されたものとする。入力された文字列テキストは、例えばシフトＪＩＳコードにより符号化されて情報記憶部１８０や内部メモリなどに格納される。本実施例では、「秘密情報の例」が２４桁の１６進文字列「94E996A78FEE95F182CC97E1」と符号化され、情報記憶部１８０などに格納されるとする。以下、入力された電子データを秘匿データＳとして記す。
【００３１】
なお、本発明は秘匿データ入力部１２０において入力を受け付ける電子データの種類や内容および長さなどを特に規定するものではない。数値情報、文字列など符号化する事で分散関数による演算が可能であればどのような情報でも良く、また文字列テキストだけでなく画像データや音楽データなどの任意の電子データ、あるいは予め暗号化された暗号化データを対象としても良い。さらに、入力された秘匿データＳを秘匿データ入力部１２０においてさらに暗号化する事で安全性を高める事も考えられる。また、本実施例は情報の入力の方法および形式を規定するものではない。キーボード入力やファイル入力の他に、インターネットなどの接続回線を介して他の装置から入力するようにしても構わない。
【００３２】
次に、復号鍵データ入力部１３０は、復号の鍵とする電子データの入力を一個あるいは複数個受け付ける。受け付けた電子データは、例えば情報記憶部１８０や内部メモリなどに一時的に記録するのが望ましい。本実施例では、復号の鍵とする電子データとして３個の電子データ、「6B6579」、「6D6173」、「72796F」が入力されたものとする。以下、入力された復号鍵データをそれぞれＷＦ１、ＷＦ２、ＷＦ３と記す。
【００３３】
なお、本発明は復号鍵データ入力部１３０において入力を受け付ける電子データの内容やその数および長さを特に規定するものではない。数値情報、文字列など符号化する事で分散関数による演算が可能であればどのような情報でも良く、本実施例における入力例「6B6579」が「ｋｅｙ」のＡＳＣＩＩコード表記であるように、１６進入力ではなく「ｋｅｙ」、「ｍａｓ」、「ｒｙｏ」のように文字列で入力して１６進表記に変換しても良いし、６桁ではなく「6B65796D6173」のように１２桁の１６進入力であっても良い。また、本実施例は復号鍵データの入力の方法および形式を規定するものではない。キーボード入力やファイル入力の他に、インターネットなどの接続回線を介して他の装置から入力するようにしても構わない。さらには、復号の鍵とする電子データを常に固定のものとして複数鍵暗号化装置１００の内部に作り込むあるいは外部ファイルを読み込むようにして、復号鍵データ入力部１３０では入力を受け付けずに固定の復号鍵データを用いる、あるいは複数の復号鍵データの候補を提示して、利用者に復号の鍵とする電子データを選択させるようにしても構わない。
【００３４】
次に、電子データ分割部１４０は、情報記憶部１８０または内部メモリなどに記録された秘匿データＳを読み出し、一定長の電子データに分割してブロック化した上で、再度情報記憶部１８０または内部メモリなどに記録する。
【００３５】
本実施例では分割後のブロック化した電子データの長さを３バイトとする。秘匿データＳをブロック化した電子データは、分散暗号化の際に分散関数の一部として使用する素数である固定文字列Ｐよりも小さくなければならない。本実施例では固定文字列Ｐを３バイトの１６進文字列「FFFFFD」とする。したがって、３バイト単位で分割した後の電子データが固定文字列Ｐ以上の値をとる、「FFFFFD」、「FFFFFE」、「FFFFFF」がブロックとして存在する場合が考えられる。そのような場合には、例えば分割する際に冗長なブロックに置換するなどの方法がある。本実施例ではＰ＝FFFFFDであるため、ブロック化した電子データがＰより１少ない「FFFFFC」の場合には、「FFFFFC」、「FFFFFC」というように冗長なブロックを追加し、同様に、「FFFFFD」の場合には「FFFFFC」、「000001」のように、「FFFFFE」の場合には「FFFFFC」、「000002」のように、「FFFFFF」の場合には「FFFFFC」、「000003」のように冗長なブロックを追加して置換する事で、復号時の秘匿データが完全に元の秘匿データと同一になるようにブロック化する事ができる。なお、復号の鍵とする復号鍵データについては厳密性を持たせずに、「FFFFFD」、「FFFFFE」、「FFFFFF」を全て「FFFFFC」に置換するようにしても良い。また、このようなブロック化した電子データの補完あるいは置換を行わずに、固定文字列Ｐをブロック化する電子データの長さよりも大きくする方法も考えられるが、その場合は分散データ生成部１６０において分散生成される暗号化データの大きさが元の秘匿データよりも大きくなる事になる。
【００３６】
本実施例における秘匿データＳは２４桁の１６進文字列「94E996A78FEE95F182CC97E1」であり、３バイト単位にブロック化すると「94E996」，「A78FEE」，「95F182」，「CC97E1」の４ブロックとなる。以下、秘匿データＳをブロック化した個々の電子データをＳｉ（１≦ｉ≦４）と記す。
【００３７】
なお、本実施例は電子データ分割部１４０における電子データをブロック化するための分割方法を特に規定するものではない。本実施例では３バイト単位で単純に分割したが、後から正しく元の電子データに復号できれば良く、例えば２バイト単位で分割した上にエラー訂正符号やハッシュ値などを付与して３バイトとしてデータの復号誤りや改ざん検出機能を持たせたりするなどの分割方法が考えられる。
【００３８】
次に、分散関数生成部１５０は、分割した個々の秘匿データＳｉおよび復号鍵データＷＦ１、ＷＦ２、ＷＦ３を元に、秘匿データを分散暗号化するための分散関数と呼ばれる特殊な関数ｆ（ｘ）において必要な変数を決定し、分散関数ｆ（ｘ）を生成する。本実施例では、分散関数ｆ（ｘ）の基本形を次の式（７）で表現するものとする。
【００３９】
ｆ（ｘ）＝Ｓ＋ＲＡｘ＋ＲＢｘ２＋ＲＣｘ３      （ｍｏｄＰ）…（７）
式（７）は、先の式（１）においてｋ＝４としたもので、Ｓは秘匿の対象とする電子データ、ｘは電子データを分散暗号化して分散データＷｘを生成するための情報番号ｘ、ＲＡ、ＲＢ、ＲＣは変数または乱数、Ｐは素数である固定文字列を表す。式（７）の分散関数ｆ（ｘ）は、秘匿の対象とする電子データを任意の個数に分散暗号化するもので、分散暗号化により生成した多数の分散データの内、任意の４つの分散データから元の秘匿データＳが復元可能となるが、３個までの分散データが揃っても元の秘匿データＳは復元できないような（ｋ，ｎ）閾値、秘密分散法に従った分散関数である。（ｄ，ｋ，ｎ）閾値秘密分散法や復元型秘密情報分散法などの場合は基本形の式が異なるだけである。
【００４０】
なお、変数または乱数であるＲｊの個数は本実施例においては簡便化のために３つとしたが、これは複数鍵暗号化装置１００において設定を可能とする復号鍵データの多重数を決定するものであり、復号鍵データの数より多くの個数を使用しても良い。
【００４１】
また、本実施例においては、前述したように固定文字列Ｐとして素数である３バイトの１６進文字列P＝FFFFFDを用いる。なお、素数である固定文字列Ｐのサイズおよび値に関しては、本実施例で特に規定するものではない。分散暗号化する電子データの想定されるブロック単位やまた総当り攻撃に対するセキュリティ強度などの観点から任意に決定して良く、また個別の複数鍵暗号化装置によって異なるようにしても良い。
【００４２】
なお、分散関数ｆ（ｘ）および固定文字列Ｐについては、複数鍵暗号化装置１００だけでなく、複数鍵復号装置２００においても共通に使用する必要がある。これらの情報を各装置間で共有する手段については本発明で規定するものではないが、例えば、これらの情報を記憶したＩＣカードなどの記録媒体を共通に使用したり、また各装置に固有の秘密鍵情報などによって分散暗号化したこれらの情報を送信したりなどの手段が考えられる。また、これらの情報を常に固定の情報として、各装置内の固定メモリなどに作り込んでしまっても構わない。
【００４３】
以下、分散関数生成部１５０の動作について詳細を説明する。分散関数生成部１５０は、ブロック化した個々の秘匿データＳｉに対して、復号鍵データＷＦ１、ＷＦ２、ＷＦ３を用いて、変数または乱数（以下、乱数で総称）ＲＡｉ、ＲＢｉおよびＲＣｉを算出する。本実施例における式（７）の分散関数ｆ（ｘ）は任意の４つの分散データから元の秘匿データＳを復元可能とするものである事から、例えば分散関数ｆ（ｘ）にｘ＝２を代入したＷ２が復号鍵データＷＦ１と、ｘ＝４を代入したＷ４がＷＦ２と、ｘ＝６を代入したＷ６がＷＦ３と一致するように乱数ＲＡ，ＲＢ，ＲＣを決定する事により、何れかの復号鍵データと任意に生成した３つの分散データにより秘匿データＳが復号可能となるように、暗号化データを分散生成する事ができる。
【００４４】
式（７）の分散関数ｆ（ｘ）を、復号鍵データＷＦ１，ＷＦ２，ＷＦ３について記述すると、次の式（８）のようになる。
【００４５】
【数３】
2006080998.tif 000005
これらの式をＲＡ，ＲＢ，ＲＣに着目して変形すると、個々のブロック化した秘匿データＳｉと復号鍵データＷＦｊに対する、乱数ＲＡ１，ＲＢｉ、ＲＣｉの算出式は次の式（９）のようになる。
【００４６】
【数４】
2006080998.tif 000006
【００４７】
分散関数生成部１５０は、秘匿データの各ブロックＳｉ毎に式（９）にＳｉ、ＷＦｊを代入して、乱数ＲＡｉ、ＲＢｉ、ＲＣｉを算出する。例えば１ブロック目はＳ１＝９４Ｅ９９６であり、ＷＦ１＝6B6579、ＷＦ２＝6D6173、ＷＦ３＝72796Fとすると、式（９）より、ＲＡ１＝EEF7E5、ＲＢ１＝8A7C84、ＲＣ１＝D9D33Dとなる。以下、秘匿データの各ブロックＳｉに対して、順次ＲＡｉ、ＲＢｉ、ＲＣｉを算出して情報記憶部１８０または内部メモリなどに記録する。本実施例における分散関数生成部１５０の計算例を図３に示す。
【００４８】
なお、本実施例では復号鍵データＷＦ１，ＷＦ２，ＷＦ３をそれぞれ６桁の１６進として算出を行ったが、復号鍵データの鍵長さが１２桁などのようにブロック長さよりも長い場合には、秘匿データと同様に復号鍵データを分割した上で、例えば前半と後半といったように交互に復号鍵データの使用する部分を変えて算出を行うようにしても良い。さらにまた、復号鍵データが例えばＷＦ１とＷＦ２の２個のみである場合には、変数ＲＣを任意の乱数として生成するようにして構わない。変数ＲＣｉを秘匿データの各ブロックＳｉ毎に任意の全くの乱数として生成し、ブロック毎に異なるものとする事で、暗号化の法則性を隠して安全性を高める事ができる。ただしその場合変数ＲＣｉは固定文字列Ｐより小さく秘匿データＳｉと同程度のサイズの乱数である事が望ましい。さらに、各ブロックＳｉ毎にＲＣｉを乱数として生成する以外に固定の値を使っても良く、また後で生成する暗号化データがうまくランダム性を持つようにＲＣｉを生成しても良い。本発明は、これらの各変数の決定方法を特に規定するものではなく、生成される分散関数ｆ（ｘ）がある固定のｘの値の下で復号鍵データＷＦを算出するように各変数が決定されれば良い。
【００４９】
次に、分散データ生成部１６０は、分散関数生成部１５０において生成した秘匿データＳｉ、および乱数ＲＡｉ，ＲＢｉ，ＲＣｉからなる分散関数ｆ（ｘ）を使って、ｘ＝１を代入した分散データＷ１＝ｆ（１）、ｘ＝３を代入した分散データＷ３＝ｆ（３）、ｘ＝５を代入した分散データＷ５＝ｆ（５）を算出する。
【００５０】
本実施例においては、例えば１ブロック目（ｉ＝１）としてＳ１＝94E996、ＲＡ１＝EEF7E5、ＲＢ１＝8A7C84、ＲＣ１＝D9D33Dであり（図３）、式（７）の分散関数ｆ（ｘ）に情報番号ｘ＝１，３，５をそれぞれ代入して分散データＷ１、Ｗ３、Ｗ５を算出すると、以下のように算出結果が得られる。
【００５１】
【数５】
2006080998.tif 000007
【００５２】
ちなみに、式（７）に示す分散関数ｆ（ｘ）にｘ＝２を代入して分散データＷ２ｉを算出すると、Ｗ２ｉ＝6B6579が得られ、ＷＦ１と一致する。すなわち、実施例の本分散関数ｆ（ｘ）は固定値ｘ＝２の下で復号鍵データＷＦ１を算出するような分散関数ｆ（ｘ）である。また、実施例の本分散関数ｆ（ｘ）は前述したように４つの分散データから秘匿データＳを復号可能とする秘密分散法の分散関数である。したがって、本分散関数ｆ（ｘ）により生成した分散データＷ１、Ｗ３、Ｗ５と、複合鍵データＷＦ１、ＷＦ２、ＷＦ３のいずれか１つとから、秘匿データＳを復号する事が可能となる。
【００５３】
以下、分散データ生成部１６０は、同様にして秘匿データＳｉの各ブロックに対してＷ１ｉ、Ｗ３ｉ、Ｗ５ｉを算出し、情報記憶部１８０または内部メモリなどに記録する。図３に示した分散関数生成部１５における計算例に対する、分散データ生成部１６０の計算例を図４に示す。なお、個々のブロックに対して分散データＷ１ｉ、Ｗ３ｉ、Ｗ５ｉを算出した後は、情報の漏洩を防ぐために、秘匿データＳｉ、復号鍵データＷＦｊ、乱数ＲＡｉ、ＲＢｉ、ＲＣｉなどの各値を情報記憶部１８０や内部メモリなどから破棄する事が望ましい。
【００５４】
なお、本実施例では復号鍵データＷＦ１、ＷＦ２、ＷＦ３をそれぞれ６桁の１６進として計算を行ったが、復号鍵データの鍵長さが１２桁などのようにブロック長さよりも長く、秘匿データと同様に復号鍵データを分割した場合には、例えば前半と後半といったように交互に復号鍵データの使用する部分を変えて計算を行うようにしても良い。また、本実施例では分散データの長さは秘匿データＳｉと同様に４ブロックとなるが、秘匿データＳの長さが暗号化データＷＯからは分からないようにダミーのデータを追加するようにしても良い。例えば、ｉ＝５からｉ＝８までの４ブロックについて、Ｓｉ＝000000という空データを追加して乱数ＲＡｉ、ＲＢｉ、ＲＣｉを算出し、分散データを計算する事で、生成する暗号化データの長さを秘匿データの長さと異なるようにできる。さらに、復号後の秘匿データの正当性を検証するために、一定の特徴を持つダミーの検証用データを追加するようにしても良い。これにより復号後の秘匿データが正しいものかどうかを複数鍵復号装置が検証できるようになる。
【００５５】
次に、暗号化データ出力部１７０は、情報記憶部１８０または内部メモリなどに記録された分散データＷ１ｉ、Ｗ３ｉ、Ｗ５ｉをまとめ、暗号化データＷＯとして出力する。本実施例においては、図４に示すＷ１ｉ、Ｗ３ｉ、Ｗ５ｉを順次出力するものとして、出力される暗号化データＷ０は「E831423979B52210336E053FB84F4EA33A972883BEF969346220B1C997BAA5FECFB58B16」となる。暗号化データＷＯを出力した後は、暗号化データの漏洩を防ぐために情報記憶部１８０や内部メモリなどから出力した分散データＷ１ｉ、Ｗ３ｉ、Ｗ５ｉを破棄する事が望ましい。
【００５６】
なお、本発明は暗号化データ出力部１７０においてまとめる分散データの個数や組み合わせを限定するものではない。本実施例は４つの分散データにより秘匿データの復元が可能である事から３つの分散データをまとめて暗号化データＷＯとして出力したが、暗号化データ出力部１７０では、生成した分散データを秘密の復元に必要な個数よりも、秘密の復元に必要な復号鍵データの数だけ少ない個数組み合わせ上で暗号化データとして出力する事も可能である。例えば２つの分散データをまとめて暗号化データとする事で、任意の２つの復号鍵データがないと復号できないように暗号化データを出力する事も可能である。
【００５７】
また、本発明例は、暗号化データ出力部１７０における暗号化データの出力の方法やフロトコル、フォーマットを特に規定するものではない。暗号化データを画面や記録媒体などに直接出力したり、ファイル出力したりする他に、ネットワーク出力として、例えば複数鍵復号装置２００に通信回線３００を介して送信するようにしても良い。出力する際に暗号化データをさらに暗号化したり、出力先の複数鍵復号装置２００との問で認証を行うなどして、通信回線３００における盗聴に対する安全性を高める事も考えられる。
【００５８】
＜複数鍵復号装置２００＞
図５に本発明の実施例における複数鍵復号装置２００の機能構成図を示す。複数鍵復号装置２００は、復号制御部２１０、暗号化データ入力部２２０、復号鍵データ入力部２３０、電子データ分割部２４０、秘匿データ復号部２５０、復号データ出力部２６０、情報記憶部２７０から構成される。複数鍵復号装置２００は復号制御部２１０の制御にしたがって動作する。
【００５９】
暗号化データ入力部２２０は、復号の対象とする暗号化データの入力を受け付ける。受け付けた暗号化データは例えば情報記憶部２７０や内部メモリなどに一時的に記録するのが望ましい。本実施例では暗号化データとして、前述の複数鍵暗号化装置１００により秘匿データとして入力された文字列テキスト“秘密情報の例”から生成された暗号化データＷ０＝E831423979B52210336E053FB84F4EA33A972883BEF969346220B1C997BAA5FECFB58B16が入力されたものとする。以下、入力された暗号化データをＷＩと記す。
【００６０】
なお、本発明は暗号化データ入力部２２０において入力を受け付ける暗号化データの内容やその数を特に規定するものではない。本実施例では１６進出力された暗号化データを入力としたが、数値情報、文字列など符号化する事で演算が可能であればどのようなデータでも良く、また複数の分割された暗号化データを対象として良い。また、本実施例は情報の入力の方法および形式を規定するものではない。キーボード入力やファイル入力の他に、インターネットなどの接続回線を介して他の装置から入力するようにしても構わない。
【００６１】
次に、復号鍵データ入力部２３０は復号の鍵とする電子データとその情報番号ｘの入力を受け付ける。受け付けた電子データは例えば情報記憶部２７０や内部メモリなどに一時的に記録するのが望ましい。本実施例では前述の複数鍵暗号化装置１００で入力された復号鍵データの内の一つである、ＷＦ１＝6B6579が入力されたものとする。なお、ＷＦ１は情報番号２の復号鍵データであり、ｘ＝２とする。以下、入力された復号鍵データをＷＦと記す。
【００６２】
なお、本発明は復号鍵データ入力部２３０において入力を受け付ける復号の鍵とする電子データの内容やその数および長さを特に規定するものではない。数値情報、文字列など符号化する事で分散関数による演算が可能であればどのような情報でも良く、本実施例における入力例「6B6579」が「ｋｅｙ」のＡＳＣＩＩコード表記であるように、１６進入力ではなく文字列で入力して１６進表記に変換しても良いし、６桁ではなく「6B65796D6173」のように１２桁の１６進入力であっても良い。情報番号ｘについても同様である。本実施例においては復号鍵データと情報番号を別々の入力として記述したが、情報番号ｘが予め復号鍵データの一部として組み込まれていても良い。また、本実施例は復号鍵データの入力の方法および形式を規定するものではない。キーボード入力やファイル入力の他に、インターネットなどの接続回線を介して他の装置から入力するようにしても構わない。さらには、復号の鍵とする電子データを常に固定のものとして複数鍵復号装置２００の内部に作り込むあるいは外部ファイルを読み込むようにして、復号鍵データ入力部２３０では入力を受け付けずに固定の復号鍵データを用いる、あるいは複数の復号鍵データの候補を提示して復号の鍵とする電子データを選択させるようにしても構わない。
【００６３】
電子データ分割部２４０は、情報記憶部２７０または内部メモリなどに記録された暗号化データＷＩを読み出し、一定長の電子データに分割してブロック化した上で、再度情報記憶部２７０または内部メモリなどに記録する。本実施例では素数である固定文字列Ｐが３バイトの１６進文字列「FFFFFD」である事から、分割後のブロック化した電子データの長さを３バイトと固定する。なお、電子データを３バイト単位で分割した場合、暗号化データは常に固定文字列Ｐより小さい値をとるが、復号鍵データは固定文字列Ｐ以上の値として「FFFFFD」、「FFFFFE」、「FFFFFF」をとる場合が考えられる。そのような場合には、複数鍵暗号化装置と同様に冗長なブロックを追加あるいは置換するなどして、情報の損失を補う事ができる。
【００６４】
本実施例における入力された暗号化データＷＩは、「E831423979B52210336E053FB84F4EA33A972883BEF969346220B1C997BAA5FECFB58B16」であり、３バイト単位にブロック化すると「E83142」，「3979B5」，「221033」，「6E053F」，・・・，「Ｂ５８Ｂ１６」の１２ブロックとなる。以下、暗号化データをブロック化した個々の電子データを順にＷＡ１、ＷＢ１、ＷＣ１、ＷＡ２、・・・、ＷＣ４と記述する。
【００６５】
なお、本実施例は電子データ分割部２４０における電子データをブロック化するための分割方法および振り分け方法を特に規定するものではない。本実施例では暗号化データが３バイト単位で３つの分散データを結合して出力しているため、３バイト単位で単純に分割して振り分けたが、暗号化データの出力方法によっては１バイトずつ細かく分割して振り分けたり、最初の４ブロックをＷＡ、次の４ブロックをＷＢ、最後の４ブロックをＷＣというように、まとめて振り分けるようにしても良い。
【００６６】
次に、秘匿データ復号部２５０において、ブロック化した暗号化データＷＩと復号鍵データＷＦから、秘匿データＳを復号する。秘匿データ復号部２５０は、分割した暗号化データＷＡｉ、ＷＢｉ、ＷＣｉ（１≦ｉ≦４）および復号鍵データＷＦを元に演算を行う事で秘匿データのブロックＳｉを算出する。本実施例における分散関数ｆ（ｘ）が、式（７）に示した
ｆ（ｘ）＝Ｓ＋ＲＡｘ＋ＲＢｘ２＋ＲＣｘ３      （modＰ）
であって、ＷＡｉは分散データＷ１＝ｆ（１）、ＷＢｉは分散データＷ３＝ｆ（３）、ＷＣｉは分散データＷ５＝ｆ（５）で、なおかつ復号鍵データＷＦは情報番号ｘに対するｆ（ｘ）である事から、４個の分散データに関する連立方程式を次の式（１０）のような行列式で表現できる。
【００６７】
【数６】
2006080998.tif 000008
なお、上記行列式において、Ｓｉはブロック化された秘匿データ、ＲＡｉ、ＲＢｉ、ＲＣｉは未知の変数（乱数）である。
【００６８】
本実施例において、復号鍵データとして入力されたＷＦの情報番号はｘ＝２である事から、式（１０）の行列式においてｘ＝２を代入して、行列式を掃き出し法などにより次のように解いてＳを求める事で、秘匿データＳを復号する事ができる。
【００６９】
【数７】
2006080998.tif 000009
【００７０】
【数８】
2006080998.tif 000010
上記の演算の結果、Ｓｉは行列式から、
Ｓｉ＝（−２０ＷＦ＋１５ＷＡｉ＋１０ＷＢｉ−ＷＣｉ）÷４（mod  Ｐ）…（１２）
の計算式により求める事ができる。本実施例においては、秘匿データの１ブロック目の計算は、ＷＡ１＝E83142、ＷＢ１＝3979B5、ＷＣ１＝221033およびＷＦ＝6B6579より、次のようにＳ１＝94E996を得る。
Ｓｉ＝（−20×6B6579＋15×E83142＋10×3979B5−221033）÷4    （mod  FFFFFD）
＝94E996
【００７１】
秘匿データ復号部２５０は、Ｓ１を情報記憶部２７０あるいは内部メモリなどに記録する。以下、入力された暗号化データの各フロックについて同様の計算を行い、Ｓ２、Ｓ３、Ｓ４をそれぞれ得る。本実施例における秘匿データ復号部２５０の計算例を図６に示す。
【００７２】
なお、復号鍵データ入力部において入力された復号鍵データが、ＷＦ２＝６Ｄ６１７３であって情報番号ｘ＝４の場合にも同様に行列式から、
Ｓｉ＝（１０ＷＦ＋５ＷＡｉ−１０ＷＢｉ−３ＷＣｉ）÷２（mod  Ｐ）…（１３）
の計算式を求め、これからＳｉを計算する事ができる。本実施例においては、秘匿データの１ブロック目の計算は、ＷＡｌ＝E83142、ＷＢｌ＝3979B5、ＷＣｌ＝221033およびＷＦ２＝6D6173より、次のように同様にＳｌ＝94E996を得る。
Ｓｉ＝（−20×6D6173＋5×E83142−10×3979B5−221033）÷2    （mod  FFFFFD）
＝94E996
【００７３】
このように、秘匿データ復号部２５０では、異なる復号鍵データが入力された場合であっても、同じ秘匿データを復号する事ができる。
【００７４】
復号データ出力部２６０は、秘匿データ復号部２５０で計算されて情報記憶部２７０または内部メモリなどに記録された秘匿データＳｉをまとめ、復号された秘匿データＳとして出力する。図６に示すように、本実施例においては、出力される秘匿データは「94E996A78FEE95F182CC97E1」となり、これは図３に示した複数鍵暗号化装置１００において入力された秘匿データＳに等しく、正しく復元できている。秘匿データを出力した後は、秘匿データの漏洩を防ぐために情報記憶部２７０や内部メモリなどから出力した秘匿データを破棄する事が望ましい。
【００７５】
複数鍵暗号化装置１００において、秘匿データのブロック化時に冗長化処理を行っている場合には、復号データ出力部２６０において縮退処理を行う必要がある。本実施例ではＰが「FFFFFD」であるため、算出したブロックがＰより１少ない「FFFFFC」の場合には、次のブロックの値により縮退処理を行って出力する。例えば「FFFFFC」、「FFFFFC」と続いた場合は「FFFFFC」を、「FFFFFC」、「000001」の場合には「FFFFFD」を、「FFFFFC」、「000002」の場合には「FFFFFE」を、「FFFFFC」、「000003」の場合には「FFFFFF」を出力するようにすれば、復号時の秘匿データは完全に元の秘匿データと同一になる。
【００７６】
また、複数鍵暗号化装置１００において、秘匿データＳに対してダミーのデータが追加されている場合には、ダミーのデータを除去して出力する事が望ましい。また、一定の特徴を持つダミーの検証用データが追加されている場合には、復号後の秘匿データＳが検証用データを含まない場合には復号後の秘匿データの正当性が検証できないものとして復号処理を中止、あるいはエラーメッセージを表示するなどして、復号処理の正当性を検証するようにもできる。
【００７７】
なお、本実施例は、復号データ出力部２６０における秘匿データの出力の方法やプロトコル、フォーマットを特に規定するものではない。本実施例では単なる１６進文字列の状態で出力するものとしたが、例えばシフトＪＩＳコードにより逆符号化した文字列を出力するようにしても良い。本実施例における秘匿データＳの出力文字列は“秘密情報の例”となり、これは複数鍵暗号化装置１００において秘匿の対象とされた秘匿データＳと同値である。また、暗号化データを画面や記録媒体などに直接出力したり、ファイル出力したりする他に、ネットワークを介して他の装置に出力するなどの方法が考えられる。
【００７８】
以上のように、本実施例によれば、複数鍵暗号化装置１００において入力された１つの秘匿データと複数の復号鍵データを元にして１つの暗号化データを生成し、複数鍵復号装置２００において入力された１つの暗号化データと複数個の復号鍵データの内の１つの復号鍵データを元にして１つの秘匿データを復号する事ができる。なお、１つの秘匿データと複数個の復号鍵データを元にして１つの暗号化データを生成し、該暗号化データと任意の２つの復号鍵データから元の秘匿データを復号するようにしたりする事も可能である。
【００７９】
ここで、図１で示した複数鍵暗号化装置や図５で示した複数鍵復号装置における各部の一部もしくは全部の処理機能をコンピュータのプログラムで構成し、そのプログラムをコンピュータを用いて実行して本発明を実現することができることは言うまでもない。また、コンピュータでその処理機能を実現するためのプログラムを、そのコンピュータが読み取り可能な記録媒体、例えば、ＦＤ、ＭＯ、ＲＯＭ、メモリカード、ＣＤ、ＤＶＤ、リムーバブルディスクなどに記録して、保存したり、提供したりすることができるとともに、インターネット等のネットワークを通してそのプログラムを配布したりすることが可能である。
【図面の簡単な説明】
【００８０】
【図１】本発明の一実施形態における複数鍵暗号化システムの構成図。
【図２】複数鍵暗号化装置の一実施例の機能構成図。
【図３】分散関数生成部における計算例を示す図。
【図４】分散データ生成部における計算例を示す図。
【図５】複数鍵復号装置の一実施例の機能構成図。
【図６】秘匿データ復号部における計算例を示す図。
【符号の説明】
【００８１】
１００  複数鍵暗号化装置
１１０  暗号化制御部
１２０  秘匿データ入力部
１３０  復号鍵データ入力部
１４０  電子データ分割部
１５０  分散関数生成部
１６０  分散データ生成部
１７０  暗号化データ出力部
１８０  情報記憶部
２００  複数鍵復号装置
２１０  復号制御部
２２０  暗号化データ入力部
２３０  復号鍵データ入力部
２４０  電子データ分割部
２５０  秘匿データ復号部
２６０  復号データ出力部
２７０  情報記憶部
３００  通信回線
【図１】
2006080998.tif 000011
【図２】
2006080998.tif 000012
【図３】
2006080998.tif 000013
【図４】
2006080998.tif 000014
【図５】
2006080998.tif 000015
【図６】
2006080998.tif 000016