(57)【特許請求の範囲】
【請求項１】
複数の情報処理装置を有し、各装置が、個別の装置間で他の装置には秘密に情報の通信を行なうための秘密通信路と、各装置から他の全ての装置へ共通に情報の送信を行なうための放送通信路とを介して接続された通信システムにおいて、
秘密情報を有する第１の情報処理装置が、当該秘密情報から所定の部分配列を生成し、
前記第１の情報処理装置が、他の各情報処理装置に対して、前記部分配列より夫々異なる第１の部分情報を抽出して、当該各情報処理装置に前記秘密通信路を介して送信し、
前記第１の情報処理装置が、前記第１の部分情報の夫々に所定の関数を作用させ、得られた出力値を前記放送通信路を介して他の全ての装置へ放送し、
前記各情報処理装置が、乱数を生成し、生成された乱数を前記放送通信路を介して他の全ての装置へ放送し、
前記第１の情報処理装置が、放送された前記乱数の値に応じて、前記部分配列より第２の部分情報を生成し、生成された第２の部分情報を前記放送通信路を介して他の全ての装置へ放送し、
前記各情報処理装置が、前記第１の部分情報及び放送された前記乱数に応じて、第２の部分情報の当該各情報処理装置に対応する部分として前記第１の情報処理装置で生成されるべき第３の部分情報を生成し、
前記各情報処理装置が、前記第３の部分情報と放送された前記第２の部分情報の当該各情報処理装置に対応する部分とを比較して、前記第１の情報処理装置による秘密の分散を確認することを特徴とする秘密情報処理方法。
【請求項２】
前記各情報処理装置が、前記比較の結果が不一致の場合に、前記放送通信路を介して他の全ての装置へメッセージを放送し、放送された前記メッセージの総数に基づいて、前記確認を実行することを特徴とする請求項１に記載の秘密情報処理方法。
【請求項３】
前記各情報処理装置に送信された前記第１の部分情報に基づいて、前記各情報処理装置全体により、前記秘密情報の復元を実行することを特徴とする請求項１に記載の秘密情報処理方法。
【請求項４】
前記各情報処理装置が夫々、送信された前記第１の部分情報に基づいて演算を実行し、該演算結果に基づいて、前記復元を行なうことで、前記秘密情報に対する演算を実行することを特徴とする請求項１に記載の秘密情報処理方法。
【請求項５】
前記部分配列は、前記秘密情報及びランダムに選ばれた秘密の元の各々に対して定まる部分行列であって、該部分行列の行ベクトル及び列ベクトルが、対応する各秘密に対する秘密部分であり、各ベクトルの要素が、当該ベクトルの秘密部分であることを特徴とする請求項１に記載の秘密情報処理方法。
【請求項６】
前記関数が一方向性の関数であることを特徴とする請求項１に記載の秘密情報処理方法。
【請求項７】
前記秘密情報は有限体上の元であり、前記部分情報の生成は該有限体上の演算を利用することを特徴とする請求項１に記載の秘密情報処理方法。
【請求項８】
複数の情報処理装置と、
前記装置の各々が、個別の装置間で他の装置には秘密に情報の通信を行なうための秘密通信路と、
前記装置の各々から他の全ての装置へ共通に情報の送信を行なうための放送通信路とを有する通信システムであって、
秘密情報を有する第１の情報処理装置に、
前記秘密情報から所定の部分配列を生成する第１の生成手段と、
他の各情報処理装置に対して、前記部分配列より夫々異なる第１の部分情報を抽出して、当該各情報処理装置に前記秘密通信路を介して送信する抽出手段と、
前記第１の部分情報に所定の関数を作用させ、得られた出力値を前記放送通信路を介して他の全ての装置へ放送する関数処理手段と、
他の情報処理装置より放送された乱数の値に応じて、前記部分配列より第２の部分情報を生成し、生成された第２の部分情報を前記放送通信路を介して他の全ての装置へ放送する第２の生成手段とを具え、
前記第１の情報処理装置以外の各情報処理装置に、
乱数を生成し、生成された乱数を前記放送通信路を介して他の全ての装置へ放送する乱数生成手段と、
前記第１の情報処理装置から送信された第１の部分情報及び放送された前記乱数に応じて、第２の部分情報の当該各情報処理装置に対応する部分として前記第１の情報処理装置で生成されるべき第３の部分情報を生成する第３の生成手段と、
前記第３の部分情報と放送された前記第２の部分情報の当該各情報処理装置に対応する部分とを比較して、前記第１の情報処理装置による秘密の分散を確認する確認手段とを具えたことを特徴とする通信システム。
【請求項９】
前記各情報処理装置が、前記比較の結果が不一致の場合に、前記放送通信路を介してメッセージを放送するメッセージ放送手段を具え、前記確認手段が、放送された前記メッセージの総数に基づいて、前記確認を実行することを特徴とする請求項８に記載の通信システム。
【請求項１０】
前記各情報処理装置に送信された前記第１の部分情報に基づいて、前記各情報処理装置全体により、前記秘密情報の復元を実行することを特徴とする請求項８に記載の通信システム。
【請求項１１】
前記各情報処理装置に、送信された前記第１の部分情報に基づいて演算を実行する演算手段を具え、該演算結果に基づいて、前記各情報処理装置全体により、前記復元を行なうことで、前記秘密情報に対する演算を実行することを特徴とする請求項８に記載の通信システム。
【請求項１２】
前記部分配列は、前記秘密情報及びランダムに選ばれた秘密の元の各々に対して定まる部分行列であって、該部分行列の行ベクトル及び列ベクトルが、対応する各秘密に対する秘密部分であり、各ベクトルの要素が、当該ベクトルの秘密部分であることを特徴とする請求項８に記載の通信システム。
【請求項１３】
前記関数が一方向性の関数であることを特徴とする請求項８に記載の通信システム。
【請求項１４】
前記秘密情報は有限体上の元であり、前記生成手段は、該有限体上の演算を利用することを特徴とする請求項８に記載の通信システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、通信路によって接続された複数の加入者端末間で、ある加入者が持っている情報を秘密に分散する方法に関するものである。
【０００２】
【従来の技術】
従来、情報通信システムの信頼性を高める技術の一つとして、情報の冗長度を増やす符号化技術が知られている。
【０００３】
特に、通信路に誤りが生じてもその誤りを検出・訂正できる誤り訂正符号は、信頼性の高い通信システムを効率的に実現できる技術としてよく用いられている。
【０００４】
更に、通信システムにおいて秘密情報を守りながら信頼性を高める手段としても、秘密情報を分散して冗長度を増やす符号化技術が有効であることが、Ａ．  Ｓｈａｍｉｒ（”Ｈｏｗ  ｔｏ  Ｓｈａｒｅ  ａ  Ｓｅｃｒｅｔ”，  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，  Ｖｏｌ．  ２２，  １１，  １９７９）によって示されている。
【０００５】
複数の加入者端末からなる通信システムにおいて、秘密情報を分散すること（つまり、全ての加入者間で秘密情報を分散保持すること）は、秘密情報の保持において、特定の１人の加入者の物理的な安全性のみに依存しなくて済むようになり、次の２つの意味で信頼度が高まる（フォールトトレランスを実現できる）と考えられる。
【０００６】
１つは、分散しても秘密情報が漏れず安全であるという意味の信頼度であり、これは秘密性に対するフォールトトレラントと呼ばれる。もう１つは、分散された秘密情報に不正が行われても正しい出力を得ることができるという意味の信頼度であり、これは正当性に対するフォールトトレランスと呼ばれる。ただし、物理的な安全性とは、ある加入者が持っている情報がその加入者以外に漏れないこと、及びある加入者により行われている計算が、その加入者以外からは制御できないこと、を意味する。
【０００７】
具体的に、ある秘密情報ｘ  が全ての加入者間で分散保持されるとは、以下の条件（ａ）  ，（ｂ）  が満たされるように、各加入者ｉ  が秘密情報ｘ  に対応する部分情報ｘ＿ｉ  を生成し、他の加入者に分配することを意味する。
【０００８】
（ａ）  秘密情報ｘ  を復元するためには、ｔ＋１  人の加入者の部分情報が必要である。以後、その秘密情報を復元するための必要な加入者の数ｔ＋１  を、しきい値と呼ぶ。
【０００９】
（ｂ）  しきい値未満の数（ｔ  以下）の部分情報では、その秘密情報に関するどのような情報も得ることができない。
【００１０】
従来の基本的な秘密分散方式は、Ａ．  Ｓｈａｍｉｒ  （”Ｈｏｗ  ｔｏ  Ｓｈａｒｅ  ａ  Ｓｅｃｒｅｔ”，  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，Ｖｏｌ．  ２２，  １１，  １９７９）によって提案され、次のように実現された。
【００１１】
ある加入者の情報を、秘密に複数の加入者に分散するために、定数項が前述の秘密情報となるｔ次の多項式ｆ（ｘ）をランダムに選び、ｎ  個の異なる値に対するその多項式の値ｆ（ｉ）（ｉ＝１，．．．，ｎ）  を各加入者に配る。この加入者ｉ  に配られる多項式の値ｆ（ｉ）が前述の部分情報の一部分になる。よって、秘密情報は、ｔ＋１  個の部分情報を用いた多項式補間によって復元できる（ｔ  以下の部分情報では、秘密情報に関するどのような情報を得ることはできない）。
【００１２】
以上のようにして秘密を分散する方式が、しきい値スキーム（Ｔｈｒｅｓｈｏｌｄ  Ｓｃｈｅｍｅ）と呼ばれ、前述の秘密性に対するフォールトトレランスを実現できると考えられる。ただし、前述の定義だけでは秘密情報が分散されたとき、ｔ＋１  以上の加入者の部分情報が集まっても不正な部分情報があった場合には、元の秘密情報ｘ  を復元できないことがありうる。つまり、分散された秘密情報の正当性に対するフォールトトレランスが保証されないことが分かる。よって、前述の分散システムにおいて、完全に信頼度を高めるためには、秘密性と正当性に対するフォールトトレランスを同時に考える必要がある。
【００１３】
どのような誤りを持つ加入者に対しても耐えられる秘密分散方式として提案された確認可能な秘密分散（Ｖｅｒｉｆｉａｂｌｅ  Ｓｅｃｒｅｔ  Ｓｈａｒｉｎｇ  ）とは、前述のしきい値スキームの条件（ａ），（ｂ）  に次の条件（ｃ），（ｄ）  を付加することによって定義されている。
【００１４】
（ｃ）  不正な部分情報が正しい部分情報と混在していても、ｔ＋１  個の正しい部分情報があれば元の秘密情報を復元するために十分である。
【００１５】
（ｄ）  全ての加入者がその秘密の部分情報を受け取ったとき、その部分情報が、ある秘密情報ｘ  を復元するために正しい情報であるかどうかを確認できる。
【００１６】
秘密の通信路を持つ通信システムに対して、全加入者の３分の１より少ない数であれば、どのような誤りを持つ加入者にも耐えられる確認可能な秘密分散方式（しきい値ｔがｔ＜ｎ／３を満たす場合）を構成するためには、従来の誤り訂正符号技術で十分であることが、Ｍ．  Ｂｅｎ−Ｏｒ，  Ｓ．  Ｇｏｌｄｗａｓｓｅｒ，  Ａ．  Ｗｉｇｄｅｒｓｏｎ  （Ｃｏｍｐｌｅｔｅｎｅｓｓ  Ｔｈｅｏｒｅｍｓ  ｆｏｒ  Ｎｏｎ−Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｆａｕｌｔ−Ｔｏｌｅｒａｎｔ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔａｔｉｏｎ”，  ＡＣＭ  ＳＴＯＣ  １９８８）  によって示されている。
【００１７】
更に、全加入者の半分より少ない数であれば、どのような誤りを持つ加入者にも耐えられる確認可能な秘密分散方式を構成するためには、さらに条件を付加する必要があり、すべての加入者が同じメッセージを受信したことを確認できる放送型通信路を全ての加入者が持つとした場合、次の２通りの構成方法が知られている。
【００１８】
（１）  零知識対話証明システム（辻井、笠原：“暗号と情報セキュリティ”、昭晃堂、１９９０  参照）で用いられている｀Ｃｕｔ  ａｎｄ  Ｃｈｏｏｓｅ’と呼ばれる技術を利用し、前述のＡ．Ｓｈａｍｉｒによる基本的な秘密分散方式によって元の秘密ｓ  を分散した上に、配られた部分情報ｓ＿ｉ  （ｉ＝１，．．．，ｎ  ）を更に分散する方式。
【００１９】
つまり、確認可能な分散方式によって配られた全ての部分情報は、秘密部分情報ｓ＿ｉ  に対する秘密部分になるように生成された部分行列と考えることができる。ただし、前述の｀Ｃｕｔ  ａｎｄ  Ｃｈｏｏｓｅ’技術を用いることによって、前述の条件（ｄ）  による確認とは統計的確認になり、秘密情報を復元できる正しい分散が行われているかどうかを示す判定出力に誤り確率が生じる。ただし、その誤り確率は設定する安全性のパラメータにより無視できる程度まで小さくすることができる。具体例として、Ｔ．  Ｒａｂｉｎ，  Ｍ．  Ｂｅｎ−Ｏｒ  （”Ｖｅｒｉｆｉａｂｌｅ  Ｓｅｃｒｅｔ  Ｓｈａｒｉｎｇ  ａｎｄ  Ｍｕｌｔｉｐａｒｔｙ  Ｐｒｏｔｏｃｏｌｓ  ｗｉｔｈ  Ｈｏｎｅｓｔ  Ｍａｊｏｒｉｔｙ”，  ＡＣＭ  ＳＴＯＣ  １９８９）による方式があげられる。
【００２０】
（２）  非対話型で特殊な代数学的な性質を持つ一方向性関数を利用する方法。ただし、このように構成された秘密分散方式の安全性は、その代数学的な性質を満たす一方向性関数の逆元を計算するのが困難である（実用的な逆元計算方式が存在しないこと）という暗号的な仮定をする必要が生じる。具体例は、Ｐ．  Ｆｅｌｄｍａｎ  （”Ａ  Ｐｒａｃｔｉｃａｌ  Ｓｃｈｅｍｅ  ｆｏｒ  Ｎｏｎ−Ｉｎｔｅｒａｃｔｉｖｅ  Ｖｅｒｉｆｉａｂｌｅ  Ｓｅｃｒｅｔ  Ｓｈａｒｉｎｇ”，  ＩＥＥＥ  ＦＯＣＳ，  １９８７）によって提案されている。
【００２１】
また、上述の確認可能な秘密分散方式を利用をすることによって、ある与えられた有限体上の分散演算を安全に実現する回路を構成できることが  Ｔ．  Ｒａｂｉｎ，  Ｍ．  Ｂｅｎ−Ｏｒ  （”Ｖｅｒｉｆｉａｂｌｅ  Ｓｅｃｒｅｔ  Ｓｈａｒｉｎｇ  ａｎｄ  Ｍｕｌｔｉｐａｒｔｙ  Ｐｒｏｔｏｃｏｌｓ  ｗｉｔｈ  Ｈｏｎｅｓｔ  Ｍａｊｏｒｉｔｙ”，  ＡＣＭ  ＳＴＯＣ，  １９８９）、Ｄ．  Ｂｅａｖｅｒ  （”Ｓｅｃｕｒｅ  Ｍｕｌｔｉｐａｒｔｙ  Ｐｒｏｔｏｃｏｌｓ  ａｎｄ  Ｚｅｒｏ−Ｋｎｏｗｌｅｄｇｅ  Ｐｒｏｏｆ  Ｓｙｓｔｅｍｓ  Ｔｏｌｅｒａｔｉｎｇ  ａ  Ｆａｕｌｔｙ  Ｍｉｎｏｒｉｔｙ”，  Ｊｏｕｒｎａｌ  ｏｆ  Ｃｒｙｐｔｏｌｏｇｙ，  １９９１，  ４，  ｐｐ．  ７５−１２２；  ”Ｅｆｆｉｃｉｅｎｔ  Ｍｕｌｔｉｐａｒｔｙ  Ｐｒｏｔｏｃｏｌｓ  Ｕｓｉｎｇ  Ｃｉｒｃｕｉｔ  Ｒａｎｄｏｍｉｚａｔｉｏｎ”，  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−Ｃｒｙｐｔｏ’９１，  １９９２）  及び  Ｍ．  Ｆｒａｎｋｌｉｎ，  Ｓ．  Ｈａｂｅｒ  （”Ｊｏｉｎｔ  Ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  Ｍｅｓｓａｇｅ−Ｅｆｆｉｃｉｅｎｔ  Ｓｅｃｕｒｅ  Ｃｏｍｐｕｔａｔｉｏｎ”，  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−Ｃｒｙｐｔｏ’９３，  １９９４）によって示されている。
【００２２】
【発明が解決しようとしている課題】
しかしながら、上述の対話的な方式（１）  においては、１  ビットを分散するために必要な通信量は、安全性のパラメータをｋ  と表したときｎ  個の秘密部分に対してｎ＾３ｋ＾２のオーダーとなることが知られており、効率的ではない。
【００２３】
また、一方向性関数を用い通信量の少ない、非対話型の暗号的な方式（２）  では、ｎ  個の秘密部分に対してｎ  回のオーダーの特殊な一方向性関数の計算処理を行う必要があり、特に秘密分散処理を安全に分散計算を実行するための部分処理として用いる場合には、実行すべき秘密分散処理の数が多くなり（例えば、分散乗算においてはｎ２のオーダーとなる）、全体的には非実用的な計算量になる。
【００２４】
以上のように、上記従来技術において、対話的な方式（１）  は通信量が非常に大きく、暗号的な方式（２）  は計算量が非常に大きいという問題があった。
【００２５】
そこで、本発明は、前述の対話的な方式（１）  及び暗号的な方式（２）  と比して、必要な計算量と通信量の両方が実用的なオーダーになる確認可能な秘密分散方法を提供することを目的とする。
【００２６】
【課題を解決するための手段】
上述の課題を解決するために、本発明の秘密情報処理方法は、複数の情報処理装置を有し、各装置が、個別の装置間で他の装置には秘密に情報の通信を行なうための秘密通信路と、各装置から他の全ての装置へ共通に情報の送信を行なうための放送通信路とを介して接続された通信システムにおいて、秘密情報を有する第１の情報処理装置が、当該秘密情報から所定の部分配列を生成し、前記第１の情報処理装置が、他の各情報処理装置に対して、前記部分配列より夫々異なる第１の部分情報を抽出して、当該各情報処理装置に前記秘密通信路を介して送信し、前記第１の情報処理装置が、前記第１の部分情報の夫々に所定の関数を作用させ、得られた出力値を前記放送通信路を介して他の全ての装置へ放送し、前記各情報処理装置が、乱数を生成し、生成された乱数を前記放送通信路を介して他の全ての装置へ放送し、前記第１の情報処理装置が、放送された前記乱数の値に応じて、前記部分配列より第２の部分情報を生成し、生成された第２の部分情報を前記放送通信路を介して他の全ての装置へ放送し、前記各情報処理装置が、前記第１の部分情報及び放送された前記乱数に応じて、第２の部分情報の当該各情報処理装置に対応する部分として前記第１の情報処理装置で生成されるべき第３の部分情報を生成し、前記各情報処理装置が、前記第３の部分情報と放送された前記第２の部分情報の当該各情報処理装置に対応する部分とを比較して、前記第１の情報処理装置による秘密の分散を確認することを特徴とする。
【００２７】
また、本発明の他の態様によれば、複数の情報処理装置と、前記装置の各々が、個別の装置間で他の装置には秘密に情報の通信を行なうための秘密通信路と、前記装置の各々から他の全ての装置へ共通に情報の送信を行なうための放送通信路とを有する通信システムにおいて、秘密情報を有する第１の情報処理装置に、前記秘密情報から所定の部分配列を生成する第１の生成手段と、他の各情報処理装置に対して、前記部分配列より夫々異なる第１の部分情報を抽出して、当該各情報処理装置に前記秘密通信路を介して送信する抽出手段と、前記第１の部分情報に所定の関数を作用させ、得られた出力値を前記放送通信路を介して他の全ての装置へ放送する関数処理手段と、他の情報処理装置より放送された乱数の値に応じて、前記部分配列より第２の部分情報を生成し、生成された第２の部分情報を前記放送通信路を介して他の全ての装置へ放送する第２の生成手段とを具え、前記第１の情報処理装置以外の各情報処理装置に、乱数を生成し、生成された乱数を前記放送通信路を介して他の全ての装置へ放送する乱数生成手段と、前記第１の情報処理装置から送信された第１の部分情報及び放送された前記乱数に応じて、第２の部分情報の当該各情報処理装置に対応する部分として前記第１の情報処理装置で生成されるべき第３の部分情報を生成する第３の生成手段と、前記第３の部分情報と放送された前記第２の部分情報の当該各情報処理装置に対応する部分とを比較して、前記第１の情報処理装置による秘密の分散を確認する確認手段とを具える。
【００２９】
【実施例】
以下、図面を参照して本発明の実施例を詳細に説明する。
【００３０】
まず、本実施例の原理について説明する。
【００３１】
図３は、秘密ｓ  と部分行列Ｓ  との関係を示す図である。
【００３２】
本実施例において、ある秘密ｓ  に対する部分行列Ｓ  とは、従来の対話型確認可能な秘密分散方式に用いられている部分行列に、以下に説明するように、更に条件が付けられた秘密部分のｎ  ×ｎ  行列Ｓ＝［ｓ（ｉ，ｊ）］（ｉ，ｊ＝１，．．．，ｎ）である。
【００３３】
まず、各行ベクトルＳ＿ｒ（ｉ）＝［ｓ（ｉ，１），．．．，ｓ（ｉ，ｎ）］（ｉ＝１，．．．，ｎ）が、ある秘密ｓ＿ｒ（ｉ）に対する秘密部分ベクトル（ベクトルの要素ｊ  がある秘密分散方式における加入者ｊ  の秘密部分であるベクトル）になり、各列ベクトルＳ＿ｃ（ｊ）＝［ｓ（１，ｊ），．．．，ｓ（ｎ，ｊ）］（ｊ＝１，．．．，ｎ）が、ある秘密ｓ＿ｃ（ｊ）に対する秘密部分ベクトルになる。
【００３４】
ただし、前述の秘密ｓ＿ｒ（ｉ）及びｓ＿ｃ（ｊ）よりなるベクトル［ｓ＿ｒ（１），．．．，ｓ＿ｒ（ｎ）］  及び［ｓ＿ｃ（１），．．．，ｓ＿ｃ（ｎ）］  の両方は、元の秘密ｓ  に対する秘密部分ベクトルになる。秘密分散処理のときに、このように構成された部分行列の列ベクトルｉ  （ｉ＝１，．．．，ｎ  ）及び秘密ｓ＿ｒ（ｉ）を、加入者ｉ  の秘密部分情報として各加入者ｉ  に送信することによって、秘密復元処理のときに、部分情報を配った加入者が不正をしなければ、各加入者によって放送された部分情報が正しいかどうかを非常に高い確率で確認できる。
【００３５】
また、本実施例では、元の秘密情報を持ち、秘密部分情報を配った加入者が不正をした場合でも秘密復元処理のとき放送される部分情報が正しいかどうかを確認するために、秘密部分情報を配る上で各加入者ｉ  （ｉ＝１，．．．，ｎ  ）に対応する秘密ｓ＿ｒ（ｉ）の認証子のような役割を果たす値を一方向性ハッシュ関数（池野、小山：“現代暗号理論”、ｐｐ．２２４−２２５、電子情報通信学会、１９８６、参照）によって生成する。
【００３６】
次に、この一方向性ハッシュ関数について説明する。
【００３７】
一方向性ハッシュ関数とは、データ圧縮型スクランブルを行う関数であり、入力値から出力値を求める演算は容易であるが、出力値から入力値を求める逆演算は困難である関数である。ただし、本実施例では、従来の非対話型確認可能な秘密分散方式に用いられる一方向性関数に比べると、特殊な代数学的な性質を持たなくてもよく、計算処理の高速な一方向性ハッシュ関数を利用できる。
【００３８】
一方向性ハッシュ関数の具体例として、Ｒ．  Ｍｅｒｋｌｅ  （”Ｏｎｅ  Ｗａｙ  Ｈａｓｈ  Ｆｕｎｃｔｉｏｎｓ  ａｎｄ  ＤＥＳ”，Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ  −Ｃｒｙｐｔｏ’８９，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  Ｖｏｌ．  ４３５，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９０  ）によってＤＥＳ  （Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）のようなブロック暗号を用いた一方向性ハッシュ関数を提案されている。
【００３９】
図８は、一方向性ハッシュ関数の具体的な構成を説明する図である。
【００４０】
同図において、（ａ）  は、ＤＥＳ  によるブロック暗号化を示しており、８１は、６４ビットの入力及び５６ビットの鍵から６４ビットの出力が得られる暗号化回路（図８では、ＤＥＳ  をＥ  で表している）である。
【００４１】
（ｂ）  は、このＤＥＳ  を部分処理として利用し、入力の長さが１１９  ビットで出力の長さが１１２  ビットとなる関数Ｆ  の処理を示しており、８２は、関数演算回路である。この処理は、次のように定義される。
【００４２】
まず、入力を二つの部分ｋ，ｘ  に分ける（ただし、その一つの部分ｋ  長さを５５ビットとし、残りの部分ｘ  の長さを６４ビットとする）。次に、その部分ｘ  をＤＥＳ  の入力とし、残りの部分ｋ  と’０’  を連続した値’０’，ｋ  を５６ビットの鍵として得られた出力とｘ  とのＸＯＲ  を計算した結果を、関数Ｆ  の出力における左側の６４ビットとする。同様に、同じ部分ｘ  を入力とし、残りの部分ｋ  と’１’  を連続した値’１’，ｋ  を鍵として得られた出力とｘ  とのＸＯＲ  を計算した結果（６４ビット）より４８ビットを関数Ｆ  の残りの部分（右側の４８ビット）とする。これによって得られた二つの出力を連続した結果が１１２  ビットのＦ  関数の出力となる。
【００４３】
（ｃ）  は、与えられたメッセージを入力として、一方向性ハッシュ関数のハッシュ値を出力とする処理を示しており、８３は、ハッシュ関数処理部である。この処理は、次のように実行される。
【００４４】
まず、与えられたメッセージの最初の１１９  ビットを上述の関数Ｆ  の入力として、最初の１１２  ビットの出力を得る。次に、その出力を再び入力の１１２  ビット分とし、以後メッセージから残りの７  ビット分を連続して繰り返し関数Ｆ  に入力する。最後に、全メッセージを入力したときに（メッセージの最後の７  ビットを入力するために足りないビットがあれば適当に’０’  を加える）得られた１１２  ビットの出力をメッセージに対するハッシュ値とする。
【００４５】
前述のように計算されたハッシュ関数の一方向性（１つのハッシュ値が与えられたとき、同じハッシュ値が得られるような異なる入力のメッセージを求めることが極めて困難であること）は、用いられるＤＥＳ  のようなブロック暗号の安全性（入力が与えられたとき出力は鍵によるランダムな変数になり、出力が与えられたとき入力は鍵によるランダムな変数になる）によって与えられることが、Ｒ．  Ｍｅｒｋｌｅ  より示されている（前述の論文参照）。
【００４６】
更に、同じ論文では前述のハッシュ関数より効率のよい一方向性ハッシュ関数も提案されており、ブロック暗号を利用しない効率的な一方向性ハッシュ関数がＲ．Ｒｉｖｅｓｔ（”Ｔｈｅ  ＭＤ４  ｍｅｓｓａｇｅ  ｄｉｇｅｓｔ  ａｌｇｏｒｉｔｈｍ”，  Ａｄｖａｎｃｅｓ  ｉｎ  ＣｒｙｐｔｏｌｏｇｙーＣｒｙｐｔｏ’９０，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  Ｖｏｌ．  ５３７，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９１．  ＮＩＳＴ  Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄ  ｆｏｒ  Ｓｅｃｕｒｅ  Ｈａｓｈ，  Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄ  Ｘ９．３０−１９９ｘ）によって提案されている。
【００４７】
次に、本実施例におけるＣｕｔ  ａｎｄ  Ｃｈｏｏｓｅ処理を説明する。
【００４８】
従来の対話型確認可能な秘密分散方式で行われるＣｕｔ  ａｎｄ  Ｃｈｏｏｓｅのように、秘密分散処理のとき全ての加入者が受け取った秘密部分情報が、確認可能に分散された秘密の部分情報となるかどうかを確認するために、元の秘密ｓ  に対する部分行列及びハッシュ値を分配すると同時にｋ  個のランダムに選ばれた秘密ｌ１，．．．，ｌｋ  に対する部分行列及びハッシュ値を分配し、全加入者によってランダムに決められたｋ／２  の秘密（ｌｉ（１），．．．，ｌｉ（ｋ／２）  ）に関する全ての秘密情報を放送し、残りのｋ／２  の秘密（ｌｊ（１），．．．，ｌｊ（ｋ／２）  ）に対してｌｊ（１）＋ｓ，．．．，ｌｊ（ｋ／２）＋ｓ  に関する全ての秘密情報を放送し、全ての放送された情報の中には誤りを持つ部分の数がｔ  より多ければ、秘密分散処理が正しくないと判断される。
【００４９】
以上によって、従来の確認可能な秘密分散方式の条件（ｃ），（ｄ）  の代わりに、次の条件（ｃ’），（ｄ’）  を満たす秘密分散方式が実現でき、それを用いて安全に分散計算を実行する方式及び通信システムが実現できる。
【００５０】
（ｃ’）不正な部分情報が正しい部分情報と混在したとき、ｔ＋１  個の正しい部分情報があっても元の秘密情報を復元できない場合が存在するが、不正をした加入者の識別は可能である。
【００５１】
（ｄ’）全ての加入者がその秘密の部分情報を受け取ったとき、その部分情報がある秘密情報ｘ  を復元するための正しい情報でなければ、復元処理のときに不正をした加入者の識別が可能である。
【００５２】
これらの条件は、従来方式のように不正な加入者があっても秘密を復元、すなわち誤り訂正は行えないが、不正な加入者は識別、すなわち誤り検出は可能にするものである。条件（ｃ），（ｄ）  があれば不正な加入者がいても正しく分散演算が実行できる（正当性に対するフォールトトレランスを実現できる）が、条件（ｃ’），（ｄ’）  に変更しても不正な加入者は検出できるので警告などを行い再実行することによって正しい出力を得ることができ、正当性に対するフォールトトレランスを実現することができる。
【００５３】
よって、本実施例では、分散された秘密を復元するとき不正な加入者があった場合には、復元できないこともありえるが不正を行った加入者の識別は可能であるような確認可能な秘密分散方式を提案する。これによって、前述の対話的な方式（１）  及び暗号的な方式（２）  の中間に位置する必要な計算量と通信量の両方が実用的なオーダーになる確認可能な秘密分散方式が実現できる。
【００５４】
図１は、本発明の１実施例である、分散した情報処理装置を有する情報処理システムを示す図である。
【００５５】
同図において、１１は、システムの各加入者の利用する情報処理装置である。以下の説明では、各装置とそれを利用する各加入者とを同一視して、加入者と呼ぶことにする。１２は、全ての加入者に情報を公開することができる放送型通信路であり、１３は、各加入者毎に秘密の通信を行うことができる秘密通信路である。
【００５６】
図２は、情報処理装置１１のブロック構成を示す図である。同図において、２１は、放送型通信路１２または秘密通信路１３により他の装置と通信を行なうための通信部である。２２は、演算処理部であり、記憶部２４のプログラムに従って、上述した一方向性ハッシュ関数などの各種演算や判定の処理を行なうとともに、装置各部を制御する。２３は、例えば疑似乱数発生器のような乱数発生部であり、ランダムな値を生成するために利用される。２４は、演算処理部２２が実行すべきプログラムや、処理の過程で生成される演算結果等の情報や、他の装置から受信した情報、各種パラメータなどを記憶するための記憶部である。
【００５７】
以下、与えられた有限体Ｆ  上の秘密の確認可能な分散を実現する方法を、具体的に説明する。
【００５８】
まず、秘密ｓ  に対する部分行列Ｓ  を、具体的に説明する。
【００５９】
ある与えられた有限体上の秘密の元ｓ  に対する部分行列Ｓ＝［ｓ（ｉ，ｊ）］（ｉ，ｊ＝１，．．．，ｎ）  とは、各行ベクトルＳ＿ｒ（ｉ）＝［ｓ（ｉ，１），．．．，ｓ（ｉ，ｎ）］（ｉ＝１，．．．，ｎ）の要素が、ｓ＿ｒ（ｉ）を定数項とするｔ  次の多項式ｆｉのｎ  個の異なる値ｉ１，．．．，ｉｎ  に対する値ｆｉ（ｉ１），．．．，ｆｉ（ｉｎ）  になり、各列ベクトルＳ＿ｃ（ｊ）＝［ｓ（１，ｊ），．．．，ｓ（ｎ，ｊ）］（ｊ＝１，．．．，ｎ）の要素が、ｓ＿ｃ（ｊ）を定数項とするｔ  次の多項式ｇｊのｎ  個の異なる値ｊ１，．．．，ｊｎ  に対する値ｇｊ（ｊ１），．．．，ｇｊ（ｊｎ）  になり、更に、前述の値のベクトル［ｓ＿ｒ（１），．．．，ｓ＿ｒ（ｎ）］  及び［ｓ＿ｃ（１），．．．，ｓ＿ｃ（ｎ）］  の両方は、元の秘密ｓ  を定数項とするｔ  次の多項式ｆ  及びｇ  の値ｆ（ｉ１，．．．，ｉｎ）及びｇ（ｊ１，．．．，ｊｎ）になっているものである。
【００６０】
次に、本実施例の処理を、与えられた有限体上の秘密を全ての加入者間で秘密に分散保持されるように秘密部分を分配する秘密分散処理と、全ての加入者に分散された秘密または（不正があった場合に）不正をした加入者を明らかにする秘密復元処理の二つの処理に分けて説明する。
【００６１】
（１）  秘密分散処理
秘密分散処理とは、秘密の元ｓ  を持っている加入者ｄ  がｓ  に対する秘密部分を分配する処理である。図５に、その処理手順を示す。同図において、処理Ｒｊ，ｉ  は、ラウンドｊにおける加入者ｉの実行する処理である。
【００６２】
以下において、ｈ  は効率的な（高速な計算方式のある）一方向性ハッシュ関数を表す。例えば高速なブロック暗号化関数によって構成されたハッシュ関数（前出の“現代暗号理論”参照）が用いられる。安全性パラメータｋ  はある定数ｋ’に対してｋ＝ｎｋ’  を満たす。この場合、秘密分散処理の確認が誤る確率は、Ｃｕｔ  ａｎｄ  Ｃｈｏｏｓｅ処理によって、２＾（−ｋ’（ｔ＋１））になる（前記  Ｔ．  Ｒａｂｉｎ，  Ｍ．  Ｂｅｎ−Ｏｒ  ”Ｖｅｒｉｆｉａｂｌｅ  Ｓｅｃｒｅｔ  Ｓｈａｒｉｎｇ  ａｎｄ  Ｍｕｌｔｉｐａｒｔｙ  Ｐｒｏｔｏｃｏｌｓ  ｗｉｔｈ  Ｈｏｎｅｓｔ  Ｍａｊｏｒｉｔｙ”参照）。
【００６３】
（ラウンド１）加入者ｄ  は、乱数発生部２３を用いて、元の秘密ｓ  及び与えられた有限体上のランダムに選ばれた秘密の元ｌ１，．．．，ｌｋ  に対する部分行列Ｓ，Ｌ１，．．．，Ｌｋ  を生成する。そして、図４に示すように、秘密値ｓ＿ｒ（１），．．．，ｓ＿ｒ（ｎ），ｌ１＿ｒ（１），．．．，ｌ１＿ｒ（ｎ），．．．，ｌｋ＿ｒ（１），．．．，ｌｋ＿ｒ（ｎ）  に対する一方向性ハッシュ関数の値ｓ＊を、ハッシュ演算処理部８３により計算する。
【００６４】
加入者ｄ  は、各加入者ｉ  （ｉ＝１，．．．，ｎ  、ただし自分は除く）に対して、秘密通信路１３を利用して、生成した各部分行列の各列ベクトルＳ＿ｃ（ｉ），Ｌ１＿ｃ（ｉ），．．．，Ｌｋ＿ｃ（ｉ）及び秘密ｓ＿ｒ（ｉ），ｌ１＿ｒ（ｉ），．．．，ｌｋ＿ｒ（ｉ）（情報Ｂ１．ｉ）を秘密通信路を用いて送信し、全加入者間でハッシュ値ｓ＊（情報Ｂ１．ｄ）を、放送通信路を用いて放送する（処理Ｒ１．ｄ）。
【００６５】
（ラウンド２）各加入者ｉ  （ｉ＝１，．．．，ｎ  ）は乱数発生部２３を用いて、ｋ’個のランダムに選択されたビット（情報Ｂ２．ｉ）を放送する（処理Ｒ２．ｉ）。それらのランダムに選ばれたｋ’個のビットをＢｉ＿１，．．，Ｂｉ＿ｋ’  、ｎ  人の全ての加入者に対する全ビットをＢ１，．．．，Ｂｋ  と呼ぶ。
【００６６】
（ラウンド３）加入者ｄ  は、ラウンド２で放送された各ビットＢｊ（ｊ＝１，．．．，ｋ  ）に対して、Ｂｊが１  であればラウンド１で加入者ｄ  が生成した部分行列Ｌｊを放送し、Ｂｊが０  であればラウンド１で加入者ｄ  が生成した部分行列Ｓ  とＬｊの要素毎の有限体上の加算結果（Ｓ＋Ｌｊと書く）を放送する（処理Ｒ３．ｄ）。加入者ｄ  が放送した情報は、図５でＢ３．ｄと表わされている。
【００６７】
（ラウンド４）各加入者ｉ  （ｉ＝１，．．．，ｎ  ）は、ラウンド１で秘密に受信した情報Ｂ１．ｉの中で、各値ｊ  （ｊ＝１，．．．，ｋ  ）に対して、列ベクトルＬｊ＿ｃ（ｉ）  及びｌｊ＿ｒ（ｉ）  （ラウンド２で放送されたビットＢｊが１  の場合）あるいは  Ｌｊ＿ｃ（ｉ）＋Ｓ＿ｃ（ｉ）  及びｌｊ＿ｒ（ｉ）＋ｓ＿ｒ（ｉ）（Ｂｊが０  の場合）が、ラウンド３で放送された部分行列に対応する列ベクトル及び秘密値と等しいかどうかを確認し、ある値ｊ  に対して等しくなければ、加入者ｄ  の判定メッセージ（情報Ｂ４．ｉ）を放送する（処理Ｒ４．ｉ）。
【００６８】
（ラウンド５）加入者ｄ  は、ラウンド４で判定メッセージ（情報Ｂ４．ｉ）が放送された場合に、判定メッセージを放送した各加入者ｊ  に関するラウンド１で加入者ｄ  が秘密に送信した情報Ｂ１．ｊ（ここでは、情報Ｂ５．ｄ）を放送する（処理Ｒ５．ｄ）。
【００６９】
（後処理）各加入者ｉ  （ｉ＝１，．．．，ｎ  ）は、ラウンド５で放送された情報が正しくなければ、あるいはラウンド４に放送された判定メッセージの数がしきい値ｔ  より多ければ、加入者ｄ  が不正をしたと判断する（処理Ｐｉ）。
【００７０】
以上のラウンド１から５までで各加入者ｉ  が受信した全ての情報を、ｓ＿ｉ  とする。
【００７１】
（２）  秘密復元処理
秘密復元処理とは、上述の秘密分散処理により各加入者が持っている情報ｓ＿ｉ  から、全ての加入者によって元の秘密ｓ  を計算するための処理である。図６にその手順を示す。
【００７２】
（ラウンド１）各加入者ｉ  （ｉ＝１，．．．，ｎ  ）は、部分情報ｓ＿ｉ  含まれている秘密値ｓ＿ｃ（ｉ）及びｓ＿ｒ（ｉ）（情報Ｂ１．ｉ）を放送する（処理Ｒ１．ｉ）。
【００７３】
（ラウンド２）各加入者ｉ  （ｉ＝１，．．．，ｎ  ）は、ラウンド１で放送された値の内ｔ＋１  個の値ｓ＿ｃ（ｉ，１），．．．，ｓ＿ｃ（ｉ，ｔ＋１）  及びｓ＿ｒ（ｉ，１），．．．，ｓ＿ｒ（ｉ，ｔ＋１）  を選び、多項式補間処理の結果ｓ（ｃ）及びｓ（ｒ）を求め、両方が等しくなり、かつ残りの放送された値がその値ｓ（ｃ）＝ｓ（ｒ）  に対応する同じ多項式の正しい値になるかどうかを確認する。全ての値が正しければ、元の秘密ｓ  はｓ（ｃ）＝ｓ（ｒ）  と等しいと判断し復元処理が終わる。一方、同じ多項式に対応しない値が放送された場合には、部分情報ｓ＿ｉ  に含まれている列ベクトルＳ＿ｃ（ｉ）（情報Ｂ２．ｉ）を放送する（以上、処理Ｒ２．ｉ）。
【００７４】
（ラウンド３）各加入者ｉ  （ｉ＝１，．．．，ｎ  ）は、ラウンド２で放送された列ベクトルＳ＿ｃ（ｊ）（ｊ＝１，．．．，ｎ  ）から部分行列Ｓ’を生成し、１，．．．，ｎ  から異なるｔ＋１  個の値を含む全ての集合ｔ１，．．．，ｔｍ  （全部でｍ＝ｎＣｔ＋１＝ｎ！／（（ｔ＋１）！（ｎ−ｔ−１）！）  個の集合がある）に対する列ベクトルの集合Ｔ１，．．．，Ｔｍ  を選び、それぞれの行と列に対する多項式補間処理の結果ｓ’＿ｒ（１），．．．，ｓ’＿ｒ（ｎ）  及びｓ’＿ｃ（１），．．．，ｓ’＿ｃ（ｎ）  を求め、更にこれらの値の多項式補間処理の結果ｓ’（ｒ）  及びｓ’（ｃ）  を求め、両方が等しくなり、かつそれらの列ベクトルの全ての要素がそれぞれの値ｓ’＿ｃ（１），．．．，ｓ’＿ｃ（ｎ）  及びｓ’＿ｒ（１），．．，ｓ’＿ｒ（ｎ）に対応する同じ多項式の正しい値になるかどうかを確認する。
【００７５】
このように確認されたｔ＋１  個の列ベクトルを含む集合Ｔ１，．．，Ｔｍの内に異なる正しい部分行列に対応する集合の数が最大でｔ＋１  個になり、それらの部分行列をＳ＿１，．．．，Ｓ＿Ｔ  （ただし、Ｔ＜ｔ＋１  ）と呼ぶ。正しい部分行列が一個しかなければ（Ｔ＝１  ）、その行列に対する秘密ｓ  が元の秘密と等しいと判断し、対応しない列ベクトルが不正をした加入者を表す。正しい部分行列が二つ以上があれば、各加入者ｉ  （ｉ＝１，．．．，ｎ  ）は持っている全ての部分情報ｓ＿ｉ  （情報Ｂ３．ｉ）を放送する（以上、処理Ｒ３．ｉ）。
【００７６】
（後処理）各加入者ｉ  （ｉ＝１，．．．，ｎ  ）は、ラウンド３に放送された情報ｓ＿ｊ  （ｊ＝１，．．．，ｎ  ）を用いて、ラウンド４で計算した正しい部分行列Ｓ＿１，．．．，Ｓ＿Ｔ  （ただし、Ｔ＜ｔ＋１  ）に対して、上述の秘密分散処理と同一の一方向性ハッシュ関数を計算し、全ての放送された情報が正しく、分散処理のラウンド１で放送された値ｓ＊に対応するかどうかを確認する。これらの確認に対して正しい（最大一つしかありえない）部分行列に対応する秘密ｓ’は元の秘密ｓ  と等しいと判断する。それに対して前述の確認に対して正しい部分行列がなかったならば、秘密を分散加入者ｄ  が不正したと判断する（処理Ｐｉ）。
【００７７】
以上のように、本実施例によれば、前述した従来の対話型方式（１）  に必要なｎ＾３ｋ＾２のオーダーの通信量に対して、ｎ＾２ｋのオーダー（ｎ  は加入者の数、ｋ  は安全性のパラメータ）の通信量になる。また、従来の非対話型方式（２）  に必要なｎ  のオーダー回の特殊な一方向性関数の計算量に対して、１  回だけの一方向性ハッシュ関数の計算量になり、従来方式に対して通信量及び計算量ともに実現可能な方式が得られる。
【００７８】
（実施例２）
実施例１に示された確認可能な秘密分散処理及び秘密復元処理は、従来技術による安全な分散演算方式（たとえば、Ｄ．  Ｂｅａｖｅｒ  ”Ｓｅｃｕｒｅ  Ｍｕｌｔｉｐａｒｔｙ  Ｐｒｏｔｏｃｏｌｓ  ａｎｄ  Ｚｅｒｏ−Ｋｎｏｗｌｅｄｇｅ  Ｐｒｏｏｆ  Ｓｙｓｔｅｍｓ  Ｔｏｌｅｒａｔｉｎｇ  ａ  Ｆａｕｌｔｙ  Ｍｉｎｏｒｉｔｙ”，  Ｊｏｕｒｎａｌ  ｏｆ  Ｃｒｙｐｔｏｌｏｇｙ，  １９９１、あるいは、Ｍ．  Ｃｅｒｅｃｅｄｏ，  Ｔ．  Ｍａｔｓｕｍｏｔｏ，  Ｈ．  Ｉｍａｉ  ”Ａ  Ｎｏｔｅ  ｏｎ  Ｍｕｌｔｉｐａｒｔｙ  Ｐｒｏｔｏｃｏｌｓ  ｔｏ  Ｃｏｍｐｕｔｅ  Ｍｕｌｔｉｐｌｉｃａｔｉｖｅ  Ｉｎｖｅｒｓｅｓ”，  ＳＣＩＳ  ’９４，  Ｂｉｗａｋｏ，  Ｊａｐａｎ，  Ｊａｎｕａｒｙ  １９９４  参照）の部分処理として用いることによって、より効率的な分散演算処理システムを構成できる。
【００７９】
それらの分散演算方式は、分散乗算処理と分散加算処理を基本的な部分処理として使用し、部分乗算処理は部分加算処理をその部分処理として利用する。また、与えられた有限体上の一般的な演算もまた、分散乗算処理及び分散加算処理の２つを利用する事によって構成できる。よって、全ての基本的な部分処理になる分散加算処理を、実施例１の処理を用いて具体的に構成する場合について、図７を用いて説明する。
【００８０】
実施例１に示された確認可能な秘密分散処理によって、与えられた有限体上の二つの秘密の元ｘ  とｙ  が分散されたとき（このとき、各加入者ｉ  が秘密の元ｘ  とｙ  に対応する秘密部分ｘ＿ｉ  及びｙ＿ｉ  を持つ）、通信を行わずに、与えられた有限体上の和ｘ＋ｙ  に対応する秘密部分（ｘ＋ｙ）＿ｉ  を、次のように計算する。
【００８１】
まず、各加入者が持っている部分行列の列ベクトルＸ＿ｃ（ｉ）及びＹ＿ｃ（ｉ）かつ秘密値ｘ＿ｒ（ｉ）及びｙ＿ｒ（ｉ）（実施例１参照）の要素毎に加算すると、その加算結果Ｘ＿ｃ（ｉ）＋Ｙ＿ｃ（ｉ）  及びｘ＿ｒ（ｉ）＋ｙ＿ｒ（ｉ）  が、ｘ＋ｙ  に対する部分行列の列ベクトル及び秘密値になることは、部分行列の定義（行と列の要素が多項式の値となる）から明らかである。
【００８２】
また、秘密復元処理において部分情報を確認するために用いられる一方向性ハッシュ関数の値ｘ＊及びｙ＊は、両方を記憶し、加算の結果ｘ＋ｙ  を復元処理のときに、必要であれば両方を用いることによって、秘密ｘ＋ｙ  に対応する部分行列Ｘ＋Ｙ  を確認する。
【００８３】
以上のような分散加算処理を部分処理として、一般的な分散演算システムを構成できる。
【００８４】
（他の実施例）
本発明は、実施例１に示した部分行列の次元数等に限定されるものではなく、さらに多次元の部分配列でもよく、また、用いる関数は、一方向性ハッシュ関数でなくても、一方向性が保証されれば他の関数でもよい。また、Ｃｕｔ  ａｎｄ  Ｃｈｏｏｓｅ技術も、実施例１に具体的に示した手順でなくても、全ての秘密を漏らすことなくその正当性を確認できる手法であればよい。
【００８５】
【発明の効果】
以上説明したように、本発明によれば、不正があった場合には不正をした加入者を識別できる（誤りを検出できる）秘密情報の処理方法及びそのシステムを、効率的な通信量及び計算量によって提供できるという効果がある。
【００８６】
そして、従来に比べて、通信量及び計算量が削減できるので、安全な分散演算処理のように、繰り返して同時に多くの秘密分散処理を行う必要がある処理に対しては、通信量が少ないことによって通信システムのトラフィックや通信料金等が改善され、計算量が少ないことによって処理が高速化されるという効果を生じる。
【図面の簡単な説明】
【図１】本発明の１実施例における通信システムのブロック構成を示す図である。
【図２】各加入者の用いる情報処理装置のブロック構成を示す図である。
【図３】秘密と部分行列との関係を示す図である。
【図４】一方向性ハッシュ関数の処理を示す図である。
【図５】秘密分散処理の手順を示す図である。
【図６】秘密復元処理の手順を示す図である。
【図７】分散演算処理を説明する図である。
【図８】入力メッセージよりハッシュ値を得るための処理を示す図である。
【符号の説明】
１１  情報処理装置
１２  放送通信路
１３  秘密通信路
２１  通信部
２２  演算処理部
２３  乱数発生部
２４  記憶部
８１  暗号化回路
８２  関数演算回路
８３  ハッシュ演算処理部
【図１】
0003604737.tif 000002
【図２】
0003604737.tif 000003
【図３】
0003604737.tif 000004
【図４】
0003604737.tif 000005
【図５】
0003604737.tif 000006
【図６】
0003604737.tif 000007
【図７】
0003604737.tif 000008
【図８】
0003604737.tif 000009