特許第6981472号(P6981472)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許6981472合意システム、合意装置、プログラム、および記録媒体
<>
  • 特許6981472-合意システム、合意装置、プログラム、および記録媒体 図000002
  • 特許6981472-合意システム、合意装置、プログラム、および記録媒体 図000003
  • 特許6981472-合意システム、合意装置、プログラム、および記録媒体 図000004
  • 特許6981472-合意システム、合意装置、プログラム、および記録媒体 図000005
  • 特許6981472-合意システム、合意装置、プログラム、および記録媒体 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6981472
(24)【登録日】2021年11月22日
(45)【発行日】2021年12月15日
(54)【発明の名称】合意システム、合意装置、プログラム、および記録媒体
(51)【国際特許分類】
   G09C 1/00 20060101AFI20211202BHJP
   H04L 9/32 20060101ALI20211202BHJP
【FI】
   G09C1/00 650Z
   G09C1/00 640D
   H04L9/00 675B
【請求項の数】8
【全頁数】13
(21)【出願番号】特願2019-537590(P2019-537590)
(86)(22)【出願日】2018年8月16日
(86)【国際出願番号】JP2018030441
(87)【国際公開番号】WO2019039382
(87)【国際公開日】20190228
【審査請求日】2020年2月18日
(31)【優先権主張番号】特願2017-159343(P2017-159343)
(32)【優先日】2017年8月22日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100121706
【弁理士】
【氏名又は名称】中尾 直樹
(74)【代理人】
【識別番号】100128705
【弁理士】
【氏名又は名称】中村 幸雄
(74)【代理人】
【識別番号】100147773
【弁理士】
【氏名又は名称】義村 宗洋
(72)【発明者】
【氏名】五十嵐 大
(72)【発明者】
【氏名】濱田 浩気
【審査官】 金沢 史明
(56)【参考文献】
【文献】 特開平11−088325(JP,A)
【文献】 谷口秀夫,IT TEXT 分散処理,第1版,株式会社オーム社,2005年09月15日,pp. 78-86
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
合意プロトコルを実行する合意システムであって、
n個の合意装置P(0),…,P(n−1)を有し、
nが3以上の整数、i=0,…,n−1、j=0,…,n−1、m=0,…,n−1、i≠j、m≠iであり、
合意装置P(i)は、
意見を表す意見値xと、前記意見値xに対して付した署名sig_i(x)と、を含む署名付き意見値Xij=(x,sig_i(x))を、署名付き意見値X’ij=(x’ij,e’ij)として生成する署名生成部、または、少なくとも一部の要素が前記署名付き意見値Xijとは異なる情報を、署名付き意見値X’ij=(x’ij,e’ij)として生成する署名生成部と、
前記署名付き意見値X’ij前記合意装置P(i)以外の合意装置P(j)に対して出力する第1出力部と、を含み、
前記合意装置P(j)は、
前記署名付き意見値X’ijを受け付ける第1入力部と、
前記署名付き意見値X’ijを、署名付き意見値X”ijとして前記合意装置P(j)以外の合意装置P(m)に対して出力する第2出力部、または、少なくとも一部の要素が前記署名付き意見値X’ijとは異なる情報を、署名付き意見値X”ijとして前記合意装置P(j)以外の合意装置P(m)に対して出力する第2出力部と、を含み、
前記合意装置P(m)は、
前記合意装置P(j)の前記第2出力部から出力された前記署名付き意見値X”ij=(x”ij,e”ij)を受け付ける第2入力部と、
前記署名付き意見値X”ijに対する署名検証を行う署名検証部と、
前記署名付き意見値X”ijのうち、少なくとも何れかの2個の署名付き意見値X”iy=(x”iy,e”iy)および署名付き意見値X”iz=(x”iz,e”iz)(ただし、y,z∈{0,…,i−1,i+1,…,n−1}かつy≠z)に対する署名検証の結果が合格であり、かつ、前記署名付き意見値X”iyに含まれた意見値x”iyと、前記署名付き意見値X”izに含まれた意見値x”izと、が互いに相違する場合に、前記合意装置P(i)に不正があったと判定する第1判定部を含む、合意システム。
【請求項2】
請求項1の合意システムであって、
前記合意装置P(m)は
前記署名付き意見値X”ijに対する署名検証を行う署名検証部と、
前記署名付き意見値X”ijのうち、少なくとも何れかの2個の署名付き意見値X”iy=(x”iy,e”iy)および署名付き意見値X”iz=(x”iz,e”iz)(ただし、y,z∈{0,…,i−1,i+1,…,n−1}かつy≠z)に対する署名検証の結果が不合格である場合に、前記合意装置P(i)に不正があったと判定する第2判定部を含む、合意システム。
【請求項3】
合意プロトコルを実行する合意システムであって、
n個の合意装置P(0),…,P(n−1)を有し、
nが3以上の整数、i=0,…,n−1、j=0,…,n−1、m=0,…,n−1、i≠j、m≠iであり、
合意装置P(i)は、
意見を表す意見値xと、前記意見値xに対して付した署名sig_i(x)と、を含む署名付き意見値Xij=(x,sig_i(x))を、署名付き意見値X’ij=(x’ij,e’ij)として生成する署名生成部、または、少なくとも一部の要素が前記署名付き意見値Xijとは異なる情報を、署名付き意見値X’ij=(x’ij,e’ij)として生成する署名生成部と、
前記署名付き意見値X’ijを前記合意装置P(i)以外の合意装置P(j)に対して出力する第1出力部と、を含み、
前記合意装置P(j)は、
前記署名付き意見値X’ijを受け付ける第1入力部と、
前記署名付き意見値X’ijを、署名付き意見値X”ijとして前記合意装置P(j)以外の合意装置P(m)に対して出力する第2出力部、または、少なくとも一部の要素が前記署名付き意見値X’ijとは異なる情報を、署名付き意見値X”ijとして前記合意装置P(j)以外の合意装置P(m)に対して出力する第2出力部と、を含み、
前記合意装置P(m)は、
前記合意装置P(j)の前記第2出力部から出力された前記署名付き意見値X”ij=(x”ij,e”ij)を受け付ける第2入力部と、
前記署名付き意見値X”ijに対する署名検証を行う署名検証部と、
前記署名付き意見値X”ijのうち、少なくとも何れかの2個の署名付き意見値X”iy=(x”iy,e”iy)および署名付き意見値X”iz=(x”iz,e”iz)(ただし、y,z∈{0,…,i−1,i+1,…,n−1}かつy≠z)に対する署名検証の結果が不合格である場合に、前記合意装置P(i)に不正があったと判定する第2判定部を含む、合意システム。
【請求項4】
請求項1から3のいずれかの合意システムであって、
前記署名検証部は、
前記第2入力部に受け付けられた前記署名付き意見値X”ijが前記合意装置P(i)に対応する検証鍵kに対して正しい関係にある場合に、前記署名付き意見値X”ijに対する署名検証の結果が合格であると判断し、
前記第2入力部に前記署名付き意見値X”ijが受け付けられなかった場合、前記第2入力部に受け付けられた前記署名付き意見値X”ijの形式が規定のものではなかった場合、または、前記第2入力部に受け付けられた前記署名付き意見値X”ijが前記検証鍵kに対して正しい関係にない場合に、前記署名付き意見値X”ijに対する署名検証の結果が不合格であると判断する、合意システム。
【請求項5】
請求項1から4の何れかの前記合意システムが有する前記合意装置P(m)である合意装置。
【請求項6】
合意プロトコルを実行するn個の合意装置P(0),…,P(n−1)を有する合意システムの合意装置P(m)であって、
nが3以上の整数、i=0,…,n−1、j=0,…,n−1、m=0,…,n−1、i≠j、m≠iであり、
前記合意装置P(m)以外の合意装置P(j)から出力された署名付き意見値X”ij=(x”ij,e”ij)を受け付ける第2入力部と、
前記署名付き意見値X”ijに対して署名検証を行う署名検証部と、
記署名付き意見値X”ijのうち、少なくとも何れかの2個の署名付き意見値X”iy=(x”iy,e”iy)および署名付き意見値X”iz=(x”iz,e”iz)(ただし、y,z∈{0,…,i−1,i+1,…,n−1}かつy≠z)に対する署名検証の結果が合格であり、かつ、前記署名付き意見値X”iyに含まれた意見値x”iyと、前記署名付き意見値X”izに含まれた意見値x”izと、が互いに相違する場合に、前記合意装置P(i)に不正があったと判定する第1判定部と、
を有する合意装置。
【請求項7】
請求項5または6の合意装置としてコンピュータを機能させるためのプログラム。
【請求項8】
請求項5または6の合意装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号技術に関し、特に合意プロトコルに関する。
【背景技術】
【0002】
自律分散システムでは複数の装置がそれぞれ独立に処理を行う。これら複数の装置の処理内容は互いに整合のとれたものでなければならない。これを実現する技術に合意プロトコルがある(例えば、非特許文献1等参照)。合意プロトコルでは、複数の装置が自らの意見(例えば、処理順序、リクエストの有無、リクエストの内容など)を表す値(意見値)を互いに提供し、それらを最終合意関数に入力してシステム全体として整合のとれた合意結果(例えば、処理順序、リクエストの有無、リクエストの内容など)を得る。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Zuzana Beerliova-Trubiniova, Martin Hirt, and Micha Riser, “Efficient Byzantine Agreement with Faulty Minority,” ASIACRYPT 2007, LNCS 4833, pp. 393 - 409, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0004】
合意プロトコルでは、何れかの装置が意図的または偶発的に不正な意見値を他の装置に提供したり、意見値を提供しなかったりする場合が想定される。本発明の目的は、合意プロトコルにおいて不正な処理を行った装置をある程度特定することである。
【課題を解決するための手段】
【0005】
合意プロトコルを実行する合意システムは、n個の合意装置P(0),…,P(n−1)を有する。ただし、nが3以上の整数、i=0,…,n−1、j=0,…,n−1、m=0,…,n−1、i≠j、m≠i、m≠jである。合意装置P(i)は、意見を表す意見値xと、当該意見値xに対して付した署名sig_i(x)と、を含む署名付き意見値Xij=(x,sig_i(x))または署名付き意見値Xijとは異なる情報を、署名付き意見値X’ij=(x’ij,e’ij)として生成して合意装置P(j)に対して出力する。合意装置P(j)は、署名付き意見値X’ijを受け付け、署名付き意見値X’ijまたは署名付き意見値X’ijとは異なる情報を、署名付き意見値X”ijとして合意装置P(m)に対して出力する。
【発明の効果】
【0006】
これにより、合意プロトコルにおいて不正な処理を行った装置をある程度特定できる。
【図面の簡単な説明】
【0007】
図1図1は実施形態の合意システムを例示したブロック図である。
図2図2は実施形態の合意装置を例示したブロック図である。
図3図3は実施形態の合意方法の提供処理を例示したフロー図である。
図4図4は実施形態の合意方法の検証処理を例示したフロー図である。
図5図5Aおよび図5Bは実施形態の合意方法を例示した図である。
【発明を実施するための形態】
【0008】
以下、図面を参照して本発明の実施形態を説明する。
<構成>
図1に例示するように、本形態の合意プロトコルを実行する合意システム1は、ネットワークを通じて通信可能なn個の合意装置10−P(0),…,10−P(n−1)を有する自律分散システムである。ただし、nが3以上の整数(例えば、n≧4)、i=0,…,n−1、j=0,…,n−1、r=0,…,n−1、m=0,…,n−1、i≠j、m≠i、m≠jである。図2に例示するように、合意装置10−P(r)は、通信部11−P(r)、記憶部12−P(r)、共有部13−P(r)、署名生成部14−P(r)、署名検証部15−P(r)、判定部16−P(r)、判定部17−P(r)、意見値出力部18−P(r)、および制御部19−P(r)を有する。各合意装置10−P(r)は、制御部19−P(r)の制御に基づいて各処理を実行する。
【0009】
<提供処理>
次に、図3および図5を用い、各合意装置10−P(r)(ただし、r=0,…,n−1)が自らの意見を表す意見値xを提供する提供処理を説明する。意見値xは合意装置10−P(0),…,10−P(n−1)で互いに整合させる必要のある処理内容を表す。意見値xの一例は処理順序を表す意見を表す値である。例えば、合意装置10−P(A)から「値Dを11に更新する」というリクエストRが送信され、合意装置10−P(B)から「値Dを9に更新する」というリクエストRが送信される場合(ただし、A,B∈{0,…,n−1})、リクエストRを処理してからリクエストRを処理するといった意見を表す意見値x=((A,update,D,11),(B,update,D,9))、およびリクエストRを処理してからリクエストRを処理するといった意見を表す意見値x=((B,update,D,9),(A,update,D,11))を例示できる。このような意見値xに対して合意がなされれば、システム全体で処理順序を統一できる。他の意見値xの例はリクエストが送られたことを表す値である。例えば、合意装置10−P(A)から「値Dを11に更新する」というリクエストRが送信され、合意装置10−P(B)から「値Dを9に更新する」というリクエストRが送信される場合、リクエストRおよびRが送られたことを表す意見値x=((A,update,D,11),(B,update,D,9))、リクエストRしか送られなかったことを表す意見値x=(A,update,D,11)などを例示できる。このような意見値xを用いることにより、リクエストが各装置に正しく提供されたことを確認できる。他の意見値xの例はリクエストの内容を表す値である。例えば、合意装置10−P(A)から「値Dを11に更新する」というリクエストRが送信される場合、「値Dを11に更新する」という内容のリクエストRが送られたことを表すx=(A,update,D,11)や「値Dを9に更新する」という内容のリクエストRが送られたことを表すx=(A,update,D,9)を例示できる。このような意見値xを用いることにより、システム全体で各合意装置に同一のリクエストが提供されたかを確認できる。
【0010】
≪ステップS1≫
前提として、各合意装置10−P(i)(ただし、i=0,…,n−1)には、署名生成のための署名生成鍵sk、および署名生成鍵skを用いて生成された署名を検証するための署名検証鍵kが設定されている。署名生成鍵skおよび署名検証鍵kは合意装置10−P(i)の記憶部12−P(i)に格納されている。署名生成鍵skは合意装置10−P(i)の秘密情報であり、署名検証鍵kは公開情報である。署名生成鍵skの例は公開鍵暗号方式(例えば、RSA)に則った秘密鍵であり、署名検証鍵kの例は当該公開鍵暗号方式に則った公開鍵である。この場合の署名生成鍵skおよび署名検証鍵kは公開鍵暗号方式における鍵ペアである。この前提の下、合意装置10−P(i)(ただし、i=0,…,n−1)の共有部13−P(i)が、合意装置10−P(i)(ただし、i=0,…,n−1)以外の合意装置10−P(j)(ただし、j=0,…,n−1、j≠i)の共有部13−P()との間で署名検証鍵kを共有する。共有部13−P(i)と共有部13−P(j)との間での署名検証鍵kの共有は、例えば、共有部13−P(i)から共有部13−P(j)に署名検証鍵kまたは署名検証鍵kに対応する値を送信することで行われる。あるいは、ネットワーク上の公開されたサーバ装置に署名検証鍵kまたは署名検証鍵kに対応する情報を格納しておき、各共有部13−P(j)がこのサーバ装置から署名検証鍵kまたは署名検証鍵kに対応する情報を受信してもよい。署名検証鍵kは合意装置10−P(j)の記憶部12−P(j)に格納される。これにより、各合意装置10−P(j)(ただし、j=0,…,n−1、j≠i)の記憶部12−P(j)には、自らの署名生成鍵skおよび署名検証鍵kに加え、n−1個の他の合意装置10−P(i)の署名検証鍵k(ただし、i=0,…,n−1、i≠j)が格納される。例えばn=3の場合、合意装置10−P(0)の記憶部12−P(0)にsk,k,k,kが格納され、合意装置10−P(1)の記憶部12−P(1)にsk,k,k,kが格納され、合意装置10−P(2)の記憶部12−P(2)にsk,k,k,kが格納される(図5A)。次にステップS2に進む。
【0011】
≪ステップS2≫
合意装置10−P(i)(ただし、i=0,…,n−1)の署名生成部14−P(i)には、意見を表す意見値x、ならびに記憶部12−P(i)から読み込んだ署名生成鍵skが入力される。合意装置10−P(i)は正当な処理を行うかもしれないし、不正な処理を行うかもしれない。合意装置10−P(i)が正当な処理を行う場合、署名生成部14−P(i)は、意見値xと、署名生成鍵skを用いて意見値xに対して付した署名sig_i(x)と、を含む署名付き意見値Xij=(x,sig_i(x))を生成し、当該意見値Xijを署名付き意見値X’ij=(x’ij,e’ij)として出力する。なお、署名生成鍵skが公開鍵暗号方式に則った秘密鍵である場合、署名sig_i(x)は、例えば署名生成鍵skを用い、公開鍵暗号方式に則って意見値xを暗号化して得られる暗号文である。一方、合意装置10−P(i)が不当な処理を行う場合、署名生成部14−P(i)は、署名付き意見値Xijとは異なる情報を、署名付き意見値X’ij=(x’ij,e’ij)として生成して出力する。署名付き意見値X’ijは通信部11−P(i)に送られる。
【0012】
≪ステップS3≫
正当な処理を行う合意装置10−P(i)(ただし、i=0,…,n−1)の通信部11−P(i)(第1出力部)は、n−1個の合意装置10−P(j)(ただし、j=0,…,n−1、j≠i)に対して署名付き意見値X’ij=(x’ij,e’ij)を出力する。例えば、n=3の場合、合意装置10−P(0)は署名付き意見値X’01を合意装置10−P(1)に送信し、署名付き意見値X’02を合意装置10−P(2)に送信し、合意装置10−P(1)は署名付き意見値X’10を合意装置10−P(0)に送信し、署名付き意見値X’12を合意装置10−P(2)に送信し、合意装置10−P(2)は署名付き意見値X’20を合意装置10−P(0)に送信し、署名付き意見値X’21を合意装置10−P(1)に送信する(図5A)。合意装置10−P(i)が正当な処理を実行する場合、X’ij=(x’ij,e’ij)=Xij=(x,sig_i(x)))である。不正な処理を行う合意装置10−P(i)の通信部11−P(i)は署名付き意見値Xij=(x,sig_i(x))とは異なる情報を署名付き意見値X’ij=(x’ij,e’ij)として合意装置10−P(j)に対して出力する。すなわち、通信部11−P(i)は、署名付き意見値Xij=(x,sig_i(x))または署名付き意見値Xijとは異なる情報を、署名付き意見値X’ij=(x’ij,e’ij)として合意装置10−P(j)に対して出力する。不正な処理を行う合意装置10−P(i)の通信部11−P(i)は、署名付き意見値X’ij=(x’ij,e’ij)を、少なくとも一部の合意装置10−P(j)に出力しないかもしれない。
【0013】
≪ステップS4≫
合意装置10−P(i)から出力された署名付き意見値X’ijは、ネットワークを通じて合意装置10−P(j)(ただし、j=0,…,n−1、j≠i)に送信される。署名付き意見値X’ijは、合意装置10−P(j)の通信部11−P(j)(第1入力部)に入力され(受け付けられ)、記憶部12−P(j)に格納される。例えば、n=3の場合、合意装置10−P(0)の記憶部12−P(0)に署名付き意見値X’10および署名付き意見値X’20が格納され、合意装置10−P(1)の記憶部12−P(1)に署名付き意見値X’01および署名付き意見値X’21が格納され、合意装置10−P(2)の記憶部12−P(2)に署名付き意見値X’02および署名付き意見値X’12が格納される(図5B)。
【0014】
≪ステップS5≫
正当な処理を行う合意装置10−P(j)(ただし、j=0,…,n−1、j≠i)の通信部11−P(j)(第2出力部)は、署名付き意見値X”ij=(x”ij,e”ij)(ただし、i=0,…,n−1、i≠j)をn−1個の合意装置10−P(m)(ただし、m=0,…,n−1、m≠j)に対して出力する。合意装置10−P(j)が正当な処理を実行する場合、署名付き意見値X”ijは記憶部12−P(j)に格納されたX’ijであり、X”ij=(x”ij,e”ij)=X’ij=(x’ij,e’ij)である。ただし、何れかの合意装置10−P(j)が不正な処理を行う可能性があり、不正な処理を行う合意装置10−P(j)の通信部11−P(j)は署名付き意見値X’ij=(x’ij,e’ij)とは異なる情報を署名付き意見値X”ij=(x”ij,e”ij)として合意装置10−P(m)に対して出力する。すなわち、通信部11−P(j)は、署名付き意見値X’ij=(x’ij,e’ij)または署名付き意見値X’ijとは異なる情報を、署名付き意見値X”ij=(x”ij,e”ij)として合意装置10−P(m)に対して出力する。通信部11−P(j)から合意装置10−P(m)に対して出力されるn−1個の署名付き意見値X”0j,…,X”(j−1)j,X”(j+1)j,…,X”(n−1)jの集合を確認データC=X”0j,…,X”(j−1)j,X”(j+1)j,…,X”(n−1)jと表現する。例えば、n=3の場合、通信部11−P(0)は、確認データC=X”10,X”20を合意装置10−P(1)およびP(2)に対して出力し、通信部11−P(1)は、確認データC=X”01,X”21を合意装置10−P(0)およびP(2)に対して出力し、通信部11−P(2)は、確認データC=X”02,X”12を合意装置10−P(0)およびP(1)に対して出力する(図5B)。不正な処理を行う合意装置10−P(j)(ただし、j=0,…,n−1、j≠i)の通信部11−P(j)は、確認データCを、少なくとも一部の合意装置10−P(m)に対して出力しないかもしれない。
【0015】
≪ステップS6≫
通信部11−P(j)から出力された確認データCは、ネットワークを通じて合意装置10−P(m)(ただし、m=0,…,n−1、m≠j)に送信される。確認データCは、合意装置10−P(m)の通信部11−P(m)(第2入力部)に入力され(受け付けられ)、記憶部12−P(m)に格納される。例えば、n=3の場合、記憶部12−P(0)に確認データC=X”01,X”21およびC=X”02,X”12が格納され、記憶部12−P(1)に確認データC=X”10,X”20およびC=X”02,X”12が格納され、記憶部12−P(2)に確認データC=X”10,X”20およびC=X”01,X”21が格納される(図5B)。
【0016】
<検証処理>
次に、図4および図5Bを用い、各合意装置10−P(m)(ただし、m=0,…,n−1)が行う意見値の検証処理を説明する。ただし、不正を行う合意装置の個数が1個以下であることを前提とする。検証処理は上述した提供処理の後に実行される。検証処理は提供処理が行われたことを契機として実行されてもよいし、提供処理の後の所定のタイミングで実行されてもよい。検証処理はすべての合意装置10−P(0),…,10−P(n−1)が行ってもよいし、その一部のみが行ってもよい。
【0017】
≪ステップS11≫
まず、合意装置10−P(m)の制御部19−P(m)が判定対象に対応するインデックスi∈{0,…,n−1}を初期化する。例えば、m=0ならば制御部19−P(m)はi=0に初期化し、m=0ならば制御部19−P(m)はi=1に初期化する。
【0018】
≪ステップS12≫
合意装置10−P(m)の署名検証部15−P(m)は、記憶部12−P(m)から、確認データC,…,Cn−1に含まれる、インデックスiについての署名付き意見値X”i0,…,X”i(i―1),X”i(i+1),…,X”i(n−1)、ならびに署名検証鍵k(ただし、i=0,…,n−1,i≠j)を読み込み、これらを用いて署名付き意見値X”i0,…,X”i(i―1),X”i(i+1),…,X”i(n−1)のそれぞれに対する署名検証を行い、それらの結果V(X”i0),…,V(X”i(i―1)),V(X”i(i+1)),…,V(X”i(n−1))を出力する。すなわち、署名検証部15−P(m)は、通信部11−P(m)(第2入力部)で受け付けられた(入力された)署名付き意見値X”ijが合意装置10−P(i)に対応する署名検証鍵kに対して正しい関係にある場合(署名正当の場合)に、署名付き意見値X”ijに対する署名検証の結果が合格であると判定し、その旨を表す結果V(X”ij)=OKを出力する。それ以外の場合、署名検証部15−P(m)は、署名付き意見値X”ijに対する署名検証の結果が不合格であると判定し、その旨を表す結果V(X”ij)=NGを出力する。例えば、署名検証部15−P(m)は、通信部11−P(m)に署名付き意見値X”ijが受け付けられなかった場合(入力されなかった場合)、通信部11−P(m)受け付けられた署名付き意見値X”ijの形式が規定のものではなかった場合、または、通信部11−P(m)に受け付けられた署名付き意見値X”ijが署名検証鍵kに対して正しい関係にない場合(署名不正の場合)に、署名付き意見値X”ijに対する署名検証の結果が不合格であると判定し、その旨を表すV(X”ij)=NGを出力する。
【0019】
署名検証鍵kが公開鍵暗号方式に則った公開鍵である場合、署名付き意見値X”ijが署名検証鍵kに対して正しい関係にあるか否か(署名正当か署名不正か)の判定は、例えば次のように行う。まず、署名検証部15−P(m)は、前述の公開鍵暗号方式に則って、署名付き意見値X”ij=(x”ij,e”ij)に含まれた暗号文e”ijを、署名検証鍵kを用いて復号して復号結果x”=deck_i(e”ij)を得る。ここで、署名付き意見値X”ijが正しく生成されたものであれば、X”ij=(x”ij,e”ij)=(x,sig_i(x))であり、x”=deck_i(e”ij)=deck_i(sig_i(x))=xとなる。次に署名検証部15−P(m)は、x”ij=x”を満たすか否かを判定する。ここで、x”ij=x”を満たす場合には、署名検証部15−P(m)は、署名付き意見値X”ijが署名検証鍵kに対して正しい関係にある(署名正当)と判断する。一方、x”ij=x”を満たさない場合(x”ij≠x”)には、署名検証部15−P(m)は、署名付き意見値X”ijが署名検証鍵kに対して正しい関係にない(署名不正)と判断する。
【0020】
例えば、n=3かつi=1の場合、署名検証部15−P(0)は、署名付き意見値X”12に対する署名検証を行ってその結果V(X”12)を出力し、n=3かつi=0の場合、署名検証部15−P(1)は、署名付き意見値X”02に対する署名検証を行ってその結果V(X”02)を出力し、n=3かつi=0の場合、署名検証部15−P(2)は、署名付き意見値X”01に対する署名検証を行ってその結果V(X”01)を出力する(図5B)。
【0021】
≪ステップS13≫
インデックスiについての署名付き意見値X”ijおよび合意装置10−P(m)から出力されたインデックスiについての署名検証の結果V(X”ij)(ただし、j=0,…,n−1、j≠i)は判定部16−P(m)(第1判定部)に入力される。さらに判定部16−P(m)には、記憶部12−P(m)から読み出されたインデックスiについての署名付き意見値X’imが入力される。署名付き意見値X’im=(x’im,e’im)は前述のステップS4で合意装置10−P(i)から合意装置10−P(m)に送信され、記憶部12−P(m)に格納されたものである。判定部16−P(m)は、以下の(1−1)および(1−2)の少なく一方に該当するかを判定する。
(1−1)署名付き意見値X”ijのうち、少なくとも何れかの2個の署名付き意見値X”iy=(x”iy,e”iy)および署名付き意見値X”iz=(x”iz,e”iz)(ただし、y,z∈{0,…,i−1,i+1,…,n−1}かつy≠z)に対する署名検証の結果が合格(V(X”iy)=V(X”iz)=OK)であり、かつ、署名付き意見値X”iyに含まれた意見値x”iyと、署名付き意見値X”izに含まれた意見値x”izと、が互いに相違する(x”iy≠x”iz)。
(1−2)署名付き意見値X”iy=(x”iy,e”iy)に対する署名検証の結果が合格(V(X”iy)=OK)であり、かつ、署名付き意見値X”iyに含まれた意見値x”iyと、署名付き意見値X’im=(x’im,e’im)に含まれた意見値x’imと、が互いに相違する(x”iy≠x’im)。
【0022】
ステップS13で(1−1)および(1−2)の少なく一方に該当すると判定された場合、判定部16−P(m)は、合意装置10−P(i)に不正があったと判定し、その旨を出力する。すなわち、(1−1)に該当するのは、X”iy=XiyかつX”iz=Xizであり、これらが合意装置10−P(i)で生成されたものである場合である。しかし、本来x”iy=x”iz=xであるはずがx”iy≠x”izとなっている。このような不正を行うことが可能なのは、署名を生成した合意装置10−P(i)のみである。よって、合意装置10−P(i)に不正があったと判定できる。また、(1−2)に該当するのは、署名付き意見値X”iy=Xiyであり、この署名が合意装置10−P(i)で生成されたものである場合である。しかし、本来x”iy=x’im=xであるはずがx”iy≠x’imとなっている。このような不正は合意装置10−P(i)が署名付き意見値X’iyを生成するときに行ったか、または、前述のステップS4で合意装置10−P(i)が合意装置10−P(m)に署名付き意見値X’imを送る際に行ったものである。よって、合意装置10−P(i)に不正があったと判定できる。合意装置10−P(i)に不正があった旨が出力された場合、検証処理が終了となる(ステップS15)。
【0023】
≪ステップS14≫
一方、ステップS13で(1−1)および(1−2)のいずれにも該当しないと判定された場合、インデックスiについての署名付き意見値X”ijおよび合意装置10−P(m)から出力されたインデックスiについての署名検証の結果V(X”ij)(ただし、j=0,…,n−1、j≠i)が判定部17−P(m)(第2判定部)に入力される。判定部17−P(m)は、以下の(2−1)に該当するかを判定する。
(2−1)署名付き意見値X”ijのうち、少なくとも何れかの2個の署名付き意見値X”iy=(x”iy,e”iy)および署名付き意見値X”iz=(x”iz,e”iz)(ただし、y,z∈{0,…,i−1,i+1,…,n−1}かつy≠z)に対する署名検証の結果が不合格(V(X”iy)=V(X”iz)=NG)である。
【0024】
ステップS14で(2−1)に該当すると判定された場合、判定部16−P(m)は、合意装置10−P(i)に不正があったと判定し、その旨を出力する。すなわち、(2−1)に該当するのは、合意装置10−P(i)がステップS3で不正な署名付き意見値X’iy≠(x,sig_i(x))および署名付き意見値X’iz≠(x,sig_i(x))を出力していたか、または、少なくとも二つの合意装置10−P(y)および10−P(z)がステップS5で不正な署名付き意見値X”iy≠X’iy=(x,sig_i(x))および署名付き意見値X”iz≠X’iz=(x,sig_i(x))を出力していた場合である。しかし、不正を行う合意装置の個数が1個以下であるとの前提のもとでは、後者は除外され、合意装置10−P(i)に不正があったと判定できる。合意装置10−P(i)に不正があった旨が出力された場合、検証処理が終了となる(ステップS15)。
【0025】
≪ステップS16≫
ステップS14で(2−1)に該当しないと判定された場合、意見値出力部18−P(m)は、記憶部12−P(m)から何れかの署名付き意見値X”ij=(x”ij,e”ij)を抽出し、それが含む意見値x”ijを合意装置10−P(i)の正当な意見値xとして出力する(ステップS16)。
【0026】
≪ステップS17≫
次に、制御部19−P(m)はmを除くすべてのi∈{0,…,n−1}について判定(ステップS12〜S16)を終了したかを判定する(ステップS17)。mを除くすべてのi∈{0,…,n−1}について判定が終了した場合には検証処理を終了する。一方、mを除くすべてのi∈{0,…,n−1}について判定が終了していない場合、制御部19−P(m)はインデックスiをまだ選択されていない値に更新して処理をステップS12に戻す(ステップS18)。
【0027】
[変形例等]
なお、本発明は上述の実施形態に限定されるものではない。例えば、上述の検証処理は不正を行う合意装置の個数が1個以下であることを前提としたが、この前提がなくても本発明を適用することは可能である。この場合には、ステップS13で(1−1)および(1−2)の少なく一方に該当すると判定されたときには合意装置10−P(i)に不正があったと判定することはできるが、ステップS14で(2−1)に該当すると判定された場合でも、直ちに合意装置10−P(i)に不正があったと判定することはできない。しかし、この場合でも少なくとも不正があったことを検知することができ、不正を行った装置をある程度特定することはできる。また、ステップS13およびS14の何れか一方のみが実行されてもよい。
【0028】
また、判定部16−P(m)または17−P(m)が、さらに、ステップS4において通信部11−P(m)で署名付き意見値X’imが受け付けられなかった場合(入力されなかった場合)、または、受け付けられたX’imの形式が規定のものではなかった場合に、合意装置10−P(i)に不正があったと判定し、その旨を出力してもよい。また、上述の実施形態では公開鍵暗号方式を用いて署名を生成したが、共通鍵暗号方式を用いて署名を生成してもよい。
【0029】
また、上述の実施形態では合意システム1が自律分散システムであったが、集中管理システムであってもよい。上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0030】
上記の各装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)およびRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
【0031】
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【0032】
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0033】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
【0034】
コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されるのではなく、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
【産業上の利用可能性】
【0035】
本発明は、例えば、秘密計算システムなどに利用できる。
【符号の説明】
【0036】
1 合意システム
10−P(0),…,10−P(n−1) 合意装置
図1
図2
図3
図4
図5