(57)【要約】【課題】（ｋ，ｎ）閾値秘密分散法である分散データが壊れていた場合に正しい分散データでどれであるかを対象データを復元前に判断する際に方式において、計算量が少なく且つ正しい分散データの検証を可能とする。【解決手段】秘密分散システムとして、対象データに対して任意の検知用データ列を付加し、当該検知用データ列を付加した対象データを（ｋ，ｎ）閾値秘密分散法（ｎは３以上の自然数で、ｋ≦ｎ）に基づく分散化関数を用いてｎ個の分散データに分散し、当該ｎ個の分散データ夫々を暗号関数を用いて暗号化した暗号化分散データに対して、当該暗号化分散データ夫々から算出した検証値を付加してｎ個の検証値付き分散データを生成する秘密分散部と、ｎ個の検証値付き分散データを夫々異なるデータベースに格納する制御部を備える。【選択図】  図１
2019168660.tif 000002
【特許請求の範囲】
【請求項１】
対象データに対して任意の検知用データ列を付加し、当該検知用データ列を付加した前記対象データを（ｋ，ｎ）閾値秘密分散法（ｎは３以上の自然数で、ｋ≦ｎ）に基づく分散化関数を用いてｎ個の分散データに分散し、当該ｎ個の分散データ夫々を暗号関数を用いて暗号化した暗号化分散データに対して、当該暗号化分散データ夫々から算出した検証値を付加してｎ個の検証値付き分散データを生成する秘密分散部と、
前記ｎ個の検証値付き分散データを夫々異なるデータベースに格納する制御部と
を備えることを特徴とする秘密分散システム。
【請求項２】
請求項１に記載の秘密分散システムであって、
前記秘密分散部は、前記（ｋ，ｎ）閾値をｎ＝３及びｋ＝２として３個の分散データに分散する
ことを特徴とする秘密分散システム。
【請求項３】
請求項２に記載の秘密分散システムであって、
前記秘密分散部は、前記検知用データ列として固定長の“０”が連続するデータ列を前記対象データの後ろに付加する
ことを特徴とする秘密分散システム。
【請求項４】
請求項１〜３のいずれか１項に記載の秘密分散システムであって、
前記秘密分散部が用いる前記暗号関数は、共通鍵暗号方式でありかつブロック暗号化モードがＣＢＣモードである
ことを特徴とする秘密分散システム。
【請求項５】
請求項１〜３のいずれか１項に記載の秘密分散システムであって、
前記秘密分散部は、前記検証値として前記暗号化分散データのＨａｓｈ値を算出して当該暗号化分散データの前に付加する
ことを特徴とする秘密分散システム。
【請求項６】
請求項１〜３のいずれか１項に記載の秘密分散システムであって、
前記制御部は、前記異なるデータベースからｋ個の前記検証値付き分散データを取得し、
前記秘密分散部は、前記ｋ個の検証値付き分散データから復元化関数、前記暗号関数及び前記検証値を用いて前記対象データを復元する
ことを特徴とする秘密分散システム。
【請求項７】
請求項６に記載の秘密分散システムであって、
前記秘密分散部は、前記ｋ個の検証値付き分散データ夫々から分離した当該検証値夫々と残った暗号化分散データ夫々から再度算出した検証値夫々とが一致するかを確認する
ことを特徴とする秘密分散システム。
【請求項８】
請求項７に記載の秘密分散システムであって、
前記秘密分散部は、前記一致が確認できた前記ｋ個の暗号化分散データを前記暗号関数を用いて復号した前記ｋ個の分散データから前記付加した任意の検知用データ列が抽出できるかを確認し、当該抽出が確認できれば前記対象データを復元する
ことを特徴とする秘密分散システム。
【請求項９】
対象データに任意の検知用データ列を付加する第１のステップと、
（ｋ，ｎ）閾値秘密分散法（ｎは３以上の自然数で、ｋ≦ｎ）に基づく分散化関数を用いて、前記検知用データ列を付加した前記対象データをｎ個の分散データに分散する第２のステップと、
前記ｎ個の分散データを暗号関数を用いて暗号化してｎ個の暗号化分散データを生成する第３のステップと、
前記ｎ個の暗号化分散データ夫々の検証値を算出して当該ｎ個の暗号化分散データ夫々に付加し検証値付き分散データとして夫々を異なるデータベースに格納する第４のステップと
を有する秘密分散方法。
【請求項１０】
請求項９に記載の秘密分散方法であって、
前記第２のステップは、前記（ｋ，ｎ）閾値をｎ＝３及びｋ＝２として３個の分散データに分散する
ことを特徴とする秘密分散方法。
【請求項１１】
請求項１０に記載の秘密分散方法であって、
前記第１のステップは、前記検知用データ列として固定長の“０”が連続するデータ列を前記対象データの後ろに付加する
ことを特徴とする秘密分散方法。
【請求項１２】
請求項９〜１１のいずれか１項に記載の秘密分散方法であって、
前記第３のステップで用いる前記暗号関数は、共通鍵暗号方式でありかつブロック暗号化モードがＣＢＣモードである
ことを特徴とする秘密分散方法。
【請求項１３】
請求項９〜１１のいずれか１項に記載の秘密分散方法であって、
前記第４のステップは、前記検証値として前記暗号化分散データのＨａｓｈ値を算出して当該暗号化分散データの前に付加する
ことを特徴とする秘密分散方法。
【請求項１４】
請求項９〜１１のいずれか１項に記載の秘密分散方法であって、
前記異なるデータベースからｋ個の前記検証値付き分散データを取得する第５のステップと、
前記ｋ個の検証値付き分散データ夫々から分離した当該検証値夫々と残った暗号化分散データ夫々から再度算出した検証値夫々とが一致するかを確認する第６のステップと、
前記一致が確認できた前記ｋ個の暗号化分散データを前記暗号関数を用いて復号した前記ｋ個の分散データから、前記付加した任意の検知用データ列が抽出できるかを確認する第７のステップと、
前記抽出が確認できれば前記対象データを復元する第８のステップと
を更に有する秘密分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データの正当性を検証する秘密分散システム及び秘密分散方法に関する。
【背景技術】
【０００２】
秘密分散法の代表例として、Ｓｈａｍｉｒが考案した（ｋ，ｎ）閾値秘密分散法がある。Ｓｈａｍｉｒの（ｋ，ｎ）閾値秘密分散法では、対象データ（元データ）を意味を成さないｎ個の分散データに分散し、その内ｋ個以上の分散データを集めると対象データ（元データ）を復元することができる手法である。
【０００３】
しかし、Ｓｈａｍｉｒの（ｋ，ｎ）閾値秘密分散法では、ある分散データが壊れていた場合、どれが正しい分散データであるかを、対象データ（元データ）を復元する前に判断することができず、また、復元されたデータが分散前の元データと同一であるかを確認することができないという問題があった。
【０００４】
上記問題に対して、特許文献１には、分散データに対して検証用のデータを別途付加し、復元前に分散データと検証用データを用いてチェックすることで、分散データの正当性を保証する秘密分散法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２３４０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術における秘密分散法では、検証用データを生成及び検証する際、離散対数演算を用いているため、各々の処理における計算量が増加するという課題があった。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明に係る秘密分散システムは、対象データに対して任意の検知用データ列を付加し、当該検知用データ列を付加した対象データを（ｋ，ｎ）閾値秘密分散法（ｎは３以上の自然数で、ｋ≦ｎ）に基づく分散化関数を用いてｎ個の分散データに分散し、当該ｎ個の分散データ夫々を暗号関数を用いて暗号化した暗号化分散データに対して、当該暗号化分散データ夫々から算出した検証値を付加してｎ個の検証値付き分散データを生成する秘密分散部と、ｎ個の検証値付き分散データを夫々異なるデータベースに格納する制御部を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、Ｈａｓｈ演算及び共通鍵暗号演算のみで検証用データの生成及び検証をすることが可能で、離散対数演算を必要としないため、従来技術と比べて各々の処理における計算量を抑えることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例に係る秘密分散システムの全体構成例を示す図である。
【図２】各分散ＤＢ及びクライアント端末を実現するためのハードウェアである情報処理装置の構成例を示す図である。
【図３】本実施例に係る分散化処理手順を示すシーケンス図である。
【図４】分散化処理手順の各ステップにおけるデータの状態を表す図である。
【図５】分散化処理手順の内のデータ分散処理を説明する図である。
【図６】本実施例に係る復元化処理手順を示すシーケンス図である。
【図７】正当性検証兼データ復元処理の詳細な処理フローを示す図である。
【図８】正当性検証兼データ復元処理でデータが復元される過程を示す図である。
【図９】復元化処理手順の内のデータ復元処理を説明する図である。
【発明を実施するための形態】
【００１０】
以下に、本発明を実施するための形態として、実施例について図面を用いて詳細に説明する。
【実施例】
【００１１】
図１は、本発明の実施例に係る秘密分散システムの全体構成例を示す図である。
本実施例に係る秘密分散システム１は、分散ＤＢ１０、２０及び３０とクライアント端末５０が、インターネット等の適宜なネットワーク４０を介して通信可能に接続されて構成されたコンピュータネットワークシステムである。尚、本発明が採用する、Ｓｈａｍｉｒが考案した（ｋ，ｎ）閾値分散法においては、分散ＤＢの数はｎ個存在するが、本実施例では、ｎ＝３及びｋ＝２とした（２，３）閾値分散法の場合を例にして、分散ＤＢは３個としている。また、図１では、ネットワーク４０を介して分散ＤＢ１０、２０及び３０とクライアント端末５０とを接続しているが、この接続態様に拘束されるものではなく、例えば、ネットワーク４０を介することなく直接的に接続する態様であっても構わない。
【００１２】
次に、図１に示す秘密分散システム１におけるデータの分散格納及び復元の概要を記す。クライアント端末５０が対象データ５０３を、秘密分散機能５０１を使って複数の検証値付き分散データに分散し、各検証値付き分散データを、制御機能５０２を使って、各分散ＤＢ１０、２０及び３０にネットワーク４０を介して格納する。対象データ（元データ）を復元する際には、制御機能５０２が、ネットワーク４０を介して各分散ＤＢ１０、２０及び３０から必要な分だけ検証値付き分散データを取得し、且つ、検証値付き分散データの正当性を確認し、取得した正しい検証値付き分散データから秘密分散機能５０１を使って、対象データ（元データ）を復元する。
【００１３】
ここで、各分散ＤＢ１０、２０及び３０は、夫々、検証値付き分散データ１１０１、検証値付き分散データ２２０１及び検証値付き分散データ３３０１を管理している。ここで、
各分散ＤＢ１０、２０及び３０は、夫々別の格納装置に格納することが望ましいが、１つの格納装置内に分散させても構わない。
【００１４】
また、クライアント端末５０は、少なくとも、秘密分散機能５０１及び制御機能５０２を備え、対象データ５０３と鍵Ｋ５０４を管理している。この内、秘密分散機能５０１は、データを秘密分散させる分散化関数５０５、データを復元させる復元化関数５０６、データを暗復号化する暗号関数５０７及びＨａｓｈ値を計算するＨａｓｈ関数５０８から成る。
【００１５】
ここで、分散化関数５０５は、Ｓｈａｍｉｒが考案した（ｋ，ｎ）閾値秘密分散法等を用いてデータの秘密分散化を行う。また、暗号関数５０７は、共通鍵暗号方式であり、且つ、出力される暗号文ブロックがそれ以前のすべての入力ブロックに依存するＣＢＣモード（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ Ｍｏｄｅ）をブロック暗号化モードとして用いる。
【００１６】
制御機能５０２は、各検証値付き分散データを各分散ＤＢ１０、２０及び３０に配置する、各分散ＤＢ１０、２０及び３０から必要に応じて検証値付き分散データを取得する、取得した検証値付き分散データの正当性を検証する、といった機能を実行する。
【００１７】
図２は、上記した機能を有する各分散ＤＢ１０、２０、３０及びクライアント端末５０を実現するためのハードウェアである一般的な情報処理装置６０の構成例を示す図である。
例えば、クライアント端末５０が備える秘密分散機能５０１及び制御機能５０２は、ＣＰＵ（ＣＥＮＴＲＡＬ  ＰＲＯＣＥＳＳＩＮＧ  ＵＮＩＴ）等のＣＰＵ６０５により実行されるコンピュータプログラムとして実現できる。こうしたコンピュータプログラムは、例えば、ハードディスク等の記憶装置６０４に予め格納・保持するか、或いはネットワーク４０から配布を受け、メモリー６０３上に展開して利用することができる。
【００１８】
また、秘密分散システム１を利用する利用者からの指示は、入力を受け付けるキーボードやマウス等の入力装置６０１から入力され、その指示によって実行された処理結果は、液晶表示装置や有機ＥＬ（ＥＬＥＣＴＲＯ  ＬＵＭＩＮＥＳＣＥＮＣＥ）ディスプレイ等の出力装置６０６から表示される。
【００１９】
さらに、ネットワーク４０を介して他装置と通信する通信装置６０２を備え、上記した各構成装置は、内部通信線としてのバス６０６で連結される。
【００２０】
次に、本実施例が実行する処理手順について説明する。以下で説明する各処理動作は、図１に示す各分散ＤＢ１０、２０、３０及びクライアント端末５０が、それぞれメモリー等に読み出して実行するプログラムによって実現されることになる。
【００２１】
まず、分散化処理手順の概要について説明する。
図３は、本実施例に係る分散化処理手順を示すシーケンス図であって、クライアント端末５０が対象データ５０３を秘密分散方式で分散させる処理手順を示している。
【００２２】
ステップ１０（Ｓ１０）として、クライアント端末５０は、対象データ５０３を取得し、秘密分散機能５０１に入力する。
【００２３】
ステップ１１（Ｓ１１）として、クライアント端末５０は、秘密分散機能５０１を用いて、検知用ｂｙｔｅ列“０”がｍ個続く固定長ｍのｂｙｔｅ列を対象データ５０３の後ろに付与する。
【００２４】
ステップ１２（Ｓ１２）として、秘密分散機能５０１は、分散化関数５０５を用いて、検知用ｂｙｔｅ列付き対象データを３つの分散データに変換するデータ分散処理を行う。
【００２５】
ステップ１３（Ｓ１３）として、秘密分散機能５０１は、暗号関数５０７と鍵５０４を用いて、ステップ１２（Ｓ１２）で分散化した各分散データを暗号化する。尚、暗号関数としては、ＡＥＳ暗号のＣＢＣモードを例とする。
【００２６】
ステップ１４（Ｓ１４）として、秘密分散機能５０１は、ステップ１３（Ｓ１３）で暗号化した各暗号化分散データに対し、Ｈａｓｈ関数５０８を用いて夫々Ｈａｓｈ値を計算し、夫々のＨａｓｈ値を各暗号化分散データの前に付与することで、検証値付き分散データを生成する。
【００２７】
ステップ１５（Ｓ１５）として、クライアント端末５０は、制御機能５０２を用いて、各検証値付き分散データ１０１〜３０１（検証値付き分散データ１１０１、検証値付き分散データ２２０１及び検証値付き分散データ３３０１）を、各分散ＤＢ１０、２０及び３０に夫々配布する。
【００２８】
ステップ１６（Ｓ１６）として、各分散ＤＢ１０、２０及び３０は、夫々受け取った検証値付き分散データ１１０１、検証値付き分散データ２２０１及び検証値付き分散データ３３０１を記憶装置６０４内に格納して管理する。
【００２９】
図４は、図３に示す分散化処理手順の各ステップにおけるデータの状態を示す図である。
対象データ５０３は、ステップ１０（Ｓ１０）で取得した秘密分散処理を施す対象データである。
【００３０】
ステップ１１（Ｓ１１）では、この対象データ５０３の後ろに、検知用ｂｙｔｅ列４０１として、“０”がｍ個続く固定長ｍのｂｙｔｅ列が付与される。
【００３１】
ステップ１２（Ｓ１２）のデータ分散処理により、分散データ１１０２、分散データ２２０２及び分散データ３３０２が出力される。
【００３２】
ステップ１３（Ｓ１３）では、分散データ１１０２、分散データ２２０２及び分散データ３３０２を夫々暗号化した暗号化分散データとして、ＥＫ（分散データ１）１０３、ＥＫ（分散データ２）２０３、ＥＫ（分散データ３）３０３が出力される。ここでは、鍵Ｋ５０４による暗号化を“ＥＫ（）”と記す。
【００３３】
ステップ１４（Ｓ１４）では、ＥＫ（分散データ１）１０３、ＥＫ（分散データ２）２０３及びＥＫ（分散データ３）３０３夫々のＨａｓｈ値Ｈ（ＥＫ（分散データ１））１０４、Ｈ（ＥＫ（分散データ２））２０４、Ｈ（ＥＫ（分散データ３））３０４が、これら暗号化分散データＥＫ（分散データ１）１０３、ＥＫ（分散データ２）２０３及びＥＫ（分散データ３）３０３の前に付与されることで、検証値付き分散データが生成される。
【００３４】
ステップ１５（Ｓ１５）及びステップ１６（Ｓ１６）では、検証値付き分散データＨ（ＥＫ（分散データ１））１０４＋ＥＫ（分散データ１）１０３、Ｈ（ＥＫ（分散データ２））２０４＋ＥＫ（分散データ２）２０３及びＨ（ＥＫ（分散データ３））３０４＋ＥＫ（分散データ３）３０３が、対応する各分散ＤＢ１０、２０及び３０に格納される。
【００３５】
図５は、分散化処理の中心的な処理であるデータ分散処理（ステップ１２（Ｓ１２））を説明する図である。ステップ１２（Ｓ１２）は、以下のように、ステップ１２１（Ｓ１２１）〜ステップ１２３（Ｓ１２３）から構成される。
【００３６】
ステップ１１（Ｓ１１）で生成された検知用ｂｙｔｅ列付対象データ（５０３＋４０１）は、ステップ１２１（Ｓ１２１）において、１ｂｙｔｅ毎に分割される。ここでは、ｒ個に分割され、ｉｂｙｔｅ目のデータをｓｉと記す。尚、ｓｉ（ｒ−ｍ＋１≦ｉ≦ｒ）は、検知用ｂｙｔｅ列であるので全て“０”である。
【００３７】
ステップ１２２（Ｓ１２２）では、各ｓｉ（１≦ｉ≦ｒ）を秘密値として、分散化関数５０５を用いて秘密分散処理を行う。ここで、分散化関数５０５は、Ｓｈａｍｉｒが考案した（２，３）閾値秘密分散法における分散化関数である。各ｓｉに対して乱数ａｉを生成し、ａｉを係数、ｓｉを定数とした一次直線上の座標点が分散値となり、ｉ＝１〜ｒまで繰り返される。尚、各ｓｉに対して、ｘ座標は固定で、各々ｘ１、ｘ２及びｘ３とし、秘密分散システム１で共有されている。
【００３８】
ステップ１２３（Ｓ１２３）では、ｉ＝１〜ｒまで繰り返されたステップ１２２（Ｓ１２２）により出力された各座標点の内、ｙ座標の値（ｙ＝ｆｉ（ｘ）＝ａｉｘ＋ｓｉ）を夫々連結して分散データとし、ｘ座標と共に出力される。即ち、本実施例では、各分散データは、以下の分散データ１１０２、分散データ２２０２及び分散データ３３０２になる。ここで、“｜｜”は、データの連結を意味する。
【００３９】
分散データ１１０２＝（ｘ１，ｆ１（ｘ１）｜｜ｆ２（ｘ１）｜｜・・・｜｜ｆｒ（ｘ１））
分散データ２２０２＝（ｘ２，ｆ１（ｘ２）｜｜ｆ２（ｘ２）｜｜・・・｜｜ｆｒ（ｘ２））
分散データ３３０２＝（ｘ３，ｆ１（ｘ３）｜｜ｆ２（ｘ３）｜｜・・・｜｜ｆｒ（ｘ３））
【００４０】
次に、復元化処理手順について説明する。
図６は、本実施例に係る復元化処理手順を示すシーケンス図である。
復元化処理では、クライアント端末５０が、秘密分散機能５０１及び制御機能５０２を用いて、各分散ＤＢ１０、２０及び３０に格納してある検証値付き分散データ１０１〜３０１から対象データ（元データ）を復元させることになる。
【００４１】
ステップ２０（Ｓ２０）として、クライアント端末５０は、制御機能５０２を用いて、分散ＤＢ１０、２０及び３０の内、任意の２つの分散ＤＢを選択する。ここでは、分散ＤＢ１０及び分散ＤＢ２０が選ばれたとする。
【００４２】
ステップ２１（Ｓ２１）として、選ばれた分散ＤＢ１０及び分散ＤＢ２０夫々は、自身で管理している検証値付き分散データ１１０１及び検証値付き分散データ２２０１を、クライアント端末５０に送付する。
【００４３】
ステップ２２（Ｓ２２）として、クライアント端末５０は、２つの検証値付き分散データ１０１及び２０１を取得する。
【００４４】
ステップ２３（Ｓ２３）として、クライアント端末５０は、秘密分散機能５０１（復元化関数５０６、暗号関数５０７及びＨａｓｈ関数５０８）を用いて、正当性検証兼データ復元処理として検証値付き分散データ１０１及び２０１から対象データ（元データ）の正当性を検証しつつデータの復元を行う。
【００４５】
ステップ２４（Ｓ２４）として、クライアント端末５０は、正当性の検証に成功した場合に限り、復元された対象データを取得する。
【００４６】
図７は、ステップ２３（Ｓ２３）で実行する正当性検証兼データ復元処理の詳細な処理フローを示すフローチャートである。また、図８は、この正当性検証兼データ復元処理でデータが復元される過程を示す図である。以下では、正当性検証兼データ復元処理を、図７及び図８を用いて詳しく説明する。
【００４７】
クライアント端末５０は、前述のとおり、ステップ２０（Ｓ２０）で任意の２つの分散ＤＢを選択し、ステップ２２（Ｓ２２）で２つの検証値付き分散データを取得する。
【００４８】
ステップ２３０（Ｓ２３０）として、２つの検証値付き分散データを取得したクライアント端末５０は、２つの検証値付き分散データをＨａｓｈ値Ｈ（ＥＫ（分散データ１））１０４及びＨ（ＥＫ（分散データ２））２０４と、暗号化分散データＥＫ（分散データ１）１０３及びＥＫ（分散データ２）２０３とに分割する。
【００４９】
ステップ２３１（Ｓ２３１）として（Ｈａｓｈ値検証ステップ）、クライアント端末５０は、暗号化分散データＥＫ（分散データ１）１０３及びＥＫ（分散データ２）２０３をＨａｓｈ関数５０８に入力して夫々のＨａｓｈ値を求め、検証値付き分散データにおけるＨａｓｈ値Ｈ（ＥＫ（分散デー  タ１））１０４及びＨ（ＥＫ（分散データ２））２０４と夫々一致するか否かを確認する。
【００５０】
一致しない場合（ＮＯ）、ステップ２３３（Ｓ２３３）として、クライアント端末５０は、当該検証値付き分散データは不正なデータと判断してステップ２０（Ｓ２０）に戻る（ステップ２０（Ｓ２０）では、残りの分散ＤＢの中から新たに分散ＤＢが選択されることになる）。
一致する場合（ＹＥＳ）、ステップ２３２（Ｓ２３２）として、クライアント端末５０は、正しいデータと判断して次のステップ２３４（Ｓ２３４）へ処理を移す。
【００５１】
ステップ２３４（Ｓ２３４）として、クライアント端末５０は、正しい検証値付き分散データがｋ個集まったか否かを判断する。正しい検証値付き分散データがｋ個集まっていない場合（ＮＯ）、ステップ２０（Ｓ２０）に戻り、ｋ個集まるまでステップ２０（Ｓ２０）からステップ２３３（Ｓ２３３）までの処理を繰返す。ここでは、ｋ＝２である。
【００５２】
ただし、正しい検証値付き分散データがｋ個集まらず（ＮＯ）、かつ、全ての分散ＤＢとの組み合わせを実行してしまった場合（ステップ２３８’（Ｓ２３８’）の「ＹＥＳ」の場合）には、クライアント端末５０は、ステップ２３９’（Ｓ２３９’）として、対象データの復元が不可能であるのでエラー（ＥＲＲＯＲ）を出力する。
【００５３】
一方、正しい検証値付き分散データがｋ個集まると（ＹＥＳ）、ステップ２３５（Ｓ２３５）として（復号処理ステップ）、クライアント端末５０は、暗号関数５０７と鍵５０４を用いて、該当する検証値付き分散データの暗号化分散データＥＫ（分散データ１）１０３及び、ＥＫ（分散データ２）２０３を夫々復号し、分散データ１１０２及び分散データ２２０２を取得する。ここでは、暗号関数５０７として、ＡＥＳ暗号のＣＢＣモードを例とする。
【００５４】
ステップ２３６（Ｓ２３６）として（データ復元処理ステップ）、クライアント端末５０は、２つの分散データ１１０２及び分散データ２２０２を用いて対象データの復元処理を行う。当該ステップ２３６（Ｓ２３６）は、図７に示すように、以下のステップ２３６’（Ｓ２３６’）とステップ２３６”（Ｓ２３６”）から成る。
【００５５】
まず、ステップ２３６’（Ｓ２３６’）として、クライアント端末５０は、復号した分散データの内、後方ｍバイト目（後ろからｍバイト目）までを復元する。
【００５６】
ステップ２３７（Ｓ２３７）として、クライアント端末５０は、復元された後方ｍバイトが全て“０”であるかを確認する。後方ｍバイトが全て“０”でない場合（ＮＯ）、クライアント端末５０は、ステップ２３８（Ｓ２３８）として、正しく復元できていないと判断し、かつ、全ての分散ＤＢとの組み合わせを実行していなければ（ＮＯ）、再びステップ２０（Ｓ２０）へ戻って処理を繰返す。ただし、全ての分散ＤＢとの組み合わせを実行してしまった場合には（ＹＥＳ）、ステップ２３９（Ｓ２３９）として、クライアント端末５０は、対象データの復元が不可能であるのでエラー（ＥＲＲＯＲ）を出力する。
【００５７】
一方、後方ｍバイトが全て“０”である場合（ＹＥＳ）、ステップ２３６”（Ｓ２３６”）として、クライアント端末５０は、後方ｍバイト４０１（図８）を除去した残りのデータを対象データ５０３として復元する。
【００５８】
図９は、復元化処理手順の中心的な処理であるデータ復元処理（ステップ２３６（Ｓ２３６））を説明する図である。
分散データ１１０２＝（ｘ１，ｆ１（ｘ１）｜｜ｆ２（ｘ１）｜｜・・・ｆｒ（ｘ１））及び分散データ２２０２＝（ｘ２，ｆ１（ｘ２）｜｜ｆ２（ｘ２）｜｜・・・ｆｒ（ｘ２））が入力された際、ステップ２３６’（Ｓ２３６’）として、クライアント端末５０は、秘密分散システム１で共有されているｘ座標であるｘ１及びｘ２と両分散データ１０２及び１０３の各バイト（ｂｙｔｅ）の値をｙ座標とした座標点（ｘ１、ｆｉ（ｘ１））及び（ｘ２、ｆｉ（ｘ２））を通る一次直線を計算し、当該一次直線の切片ｓｉを秘密値として復元する。この復元処理は、両分散データ１０２及び１０３共に、後方向から順に行われる。
【００５９】
次に、ステップ２３６”（Ｓ２３６”）として、クライアント端末５０は、後方ｍバイトのｓｉ（ｒ−ｍ＋１≦ｉ≦ｒ）を復元している間に、１つでも“０”でないｓｉが復元された場合、処理を中止する。そして、図７に示すステップ２３８（Ｓ２３８）に移ることになる。他方、後方ｍバイトのｓｉ（ｒ−ｍ＋１≦ｉ≦ｒ）が全て“０”である場合、クライアント端末５０は、残りのｓｉ（１≦ｉ≦ｒ−ｍ）も復元し、復元したこの残りのｓｉを連結して、対象データ５０３＝ｓ１｜｜・・・｜｜ｓｒ−ｍを取得する。
【００６０】
本実施例によれば、検証値付き分散データが壊れている場合、ステップ２３１（Ｓ２３１）の検証処理によってＨａｓｈ値は一致せず、検証値付き分散データが壊れていることを対象データ（元データ）の復元前に確認することができる。
【００６１】
尚、本実施例では、故意にステップ２３１（Ｓ２３１）の検証処理をパスするような検証値付き分散データの改竄が可能である。例えば、改竄した暗号化分散データに対してＨａｓｈ値を生成し、このＨａｓｈ値を改竄した暗号化分散データの前に付与したものを改竄した検証値付き分散データとした場合、改竄した検証値付き分散データは、ステップ２３１（Ｓ２３１）の検証処理をパスすることになる。
【００６２】
しかし、本実施例では、暗号化分散データは、分散データを鍵Ｋ５０４を用いて共通鍵暗号で暗号化し、また、暗号化モードは、出力される暗号文ブロックがそれ以前のすべての入力ブロックに依存するＣＢＣモード（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ  Ｍｏｄｅ）を用いている。そのため、鍵Ｋ５０４を知らない限り、元データを復元した際に後方ｍバイトが全て“０”となる分散データを生成できる確率は、１／２８ｍである。例えば、仮にｍ＝８程度とした場合でも、その確率は無視できる。故に、ステップ２３７（Ｓ２３７）で、後方ｍバイト目までを復号し、一つでも“０”でないデータが復元されたと判断された時点で、検証値付き分散データの改竄を検知することが可能となる。これは逆に、後方ｍバイトが全て“０”となった場合、復元されたデータが分散前の元データ（対象データ）と同一であることを意味する。
【００６３】
以下では、（２，ｎ）閾値秘密分散法を用いた場合の処理コストについて従来技術（特許文献１）と比較する。
仮に、ｎ個の分散データの内、ｘ個の分散データが壊れている場合（ｎ−ｘ＞２）、従来技術では、復元前に検証用データを用いて分散データの正当性を確認できるため、最低でもｘ＋２回の検証処理と１回の復元処理を行うことになる。
【００６４】
一方、本実施例では、最低でもｘ＋２回の検証値付き分散データのＨａｓｈ値の検証処理とｘ＋２回の共通鍵暗号による暗号化処理と復元処理が必要である。
【００６５】
ここで、離散対数処理、Ｈａｓｈ演算処理、共通鍵暗号による暗号処理及び秘密分散復元処理にかかる処理コストを、夫々ａ、ｂ、ｃ及びｄとした場合、従来技術の処理コストは、ａ（ｘ＋２）＋ｄであり、本実施例の処理コストは、（ｂ＋ｃ＋ｄ）（ｘ＋２）である。また概ね、離散対数処理、Ｈａｓｈ演算処理、共通鍵暗号による暗号処理及び秘密分散復元処理の処理コストの比が、ａ：ｂ：ｃ：ｄ＝５００：１：１：３とすると、従来技術の処理コストは、５００ｘ＋１００３であるが、本実施例の処理コストは、５ｘ＋１０となる。したがって、従来技術と比べて本実施例は、約１００倍近く処理コストを抑えることができる。
【符号の説明】
【００６６】
１…秘密分散システム、１０…分散ＤＢ、２０…分散ＤＢ、３０…分散ＤＢ、
４０…ネットワーク、５０…クライアント端末、６０…情報処理装置、
１０１…検証値付き分散データ１、１０２…分散データ１、１０３…暗号化分散データ１、１０４…暗号化分散データ１のＨａｓｈ値、２０１…検証値付き分散データ２、
２０２…分散データ２、２０３…暗号化分散データ２、
２０４…暗号化分散データ２のＨａｓｈ値、３０１…検証値付き分散データ３、
３０２…分散データ３、３０３…暗号化分散データ３、
３０４…暗号化分散データ３のＨａｓｈ値、４０１…検知用ｂｙｔｅ列、
５０１…秘密分散機能、５０２…制御機能、５０３…対象データ、５０４…鍵Ｋ、
５０５…分散化関数、５０６…復元化関数、５０７…暗号関数、５０８…Ｈａｓｈ関数、
６０１…入力装置、６０２…通信装置、６０３…メモリー、６０４…記憶装置、
６０５…ＣＰＵ、６０６…出力装置
【図１】
2019168660.tif 000003
【図２】
2019168660.tif 000004
【図３】
2019168660.tif 000005
【図４】
2019168660.tif 000006
【図５】
2019168660.tif 000007
【図６】
2019168660.tif 000008
【図７】
2019168660.tif 000009
【図８】
2019168660.tif 000010
【図９】
2019168660.tif 000011