(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-19
(45)【発行日】2024-09-30
(54)【発明の名称】分散追跡型グループ署名処理方法、および、プログラム
(51)【国際特許分類】
H04L 9/32 20060101AFI20240920BHJP
【FI】
H04L9/32 200C
H04L9/32 200E
H04L9/32 200B
(21)【出願番号】P 2021003219
(22)【出願日】2021-01-13
【審査請求日】2023-12-13
(73)【特許権者】
【識別番号】393031586
【氏名又は名称】株式会社国際電気通信基礎技術研究所
(74)【代理人】
【識別番号】100143498
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【氏名又は名称】北原 宏修
(74)【代理人】
【識別番号】100148275
【氏名又は名称】山内 聡
(74)【代理人】
【識別番号】100142745
【氏名又は名称】伊藤 世子
(72)【発明者】
【氏名】ペレーラ マハラゲ ニサンサラ セウワンディ
(72)【発明者】
【氏名】中村 徹
(72)【発明者】
【氏名】橋本 真幸
(72)【発明者】
【氏名】横山 浩之
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2012-032952(JP,A)
【文献】国際公開第2020/053994(WO,A1)
【文献】江村 恵太, 他,公開鍵長が定数である完全匿名な検証者ローカル失効グループ署名,2020年 暗号と情報セキュリティシンポジウム(SCIS2020),2020年01月,2A2-3,pp. 1-8
【文献】LING, San et al.,Group Signatures from Lattices: Simpler, Tighter, Shorter, Ring-based,Cryptology ePrint Archive,2015年,Paper 2015/014,pp.1-26,[2024年5月31日検索], インターネット<URL: https://eprint.iacr.org/2015/014>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
鍵生成装置と、グループユーザー用装置と、検証装置と、追跡装置と、を備える分散追跡型グループ署名処理システムを用いて実行され、複数のグループユーザーを含むグループを対象とするIDベースグループ署名処理を行うとともに、複数の追跡機関による追跡処理を分散して行う分散追跡型グループ署名処理方法であって、
前記鍵生成装置が、公開鍵暗号方式により鍵を生成するステップであって、(1)ゼロ知識証明用共通ステートメントcrsと、(2)グループ管理用公開鍵およびグループ管理用秘密鍵のペアであるグループ管理用鍵ペアと、(3)前記複数の追跡機関のそれぞれの追跡用公開鍵および追跡用秘密鍵の鍵ペアである追跡用鍵ペアと、(4)前記複数のグループユーザーのそれぞれのグループユーザー用公開鍵およびグループユーザー用秘密鍵の鍵ペアであるグループユーザー用鍵ペアとを生成する鍵生成ステップと、
前記グループユーザー用装置が、前記グループユーザー用秘密鍵により、メッセージMに対して署名処理を実行することでグループユーザー署名sを取得し、
少なくとも前記グループユーザーを特定するためのデータであるグループユーザー識別子と、当該グループユーザー識別子に対応するグループユーザーのグループユーザー用公開鍵と、前記グループユーザー署名sとを含むセットデータに対して、前記グループユーザーにより選択された前記追跡機関の追跡用公開鍵である選択追跡用公開鍵による暗号化処理を行うことで、署名データの暗号化データCを取得する署名データ暗号化ステップと、
前記グループユーザー用装置が、前記共通ステートメントcrsを用いてゼロ知識証明データΠを生成するステップであって、(1)少なくとも前記選択追跡用公開鍵と、前記メッセージMと、前記署名データの暗号化データCとを含むセットデータをゼロ知識証明のためのステートメントとし、(2)少なくとも、前記グループユーザー識別子と、前記グループユーザー用公開鍵と、前記グループユーザー署名sとを含むセットデータをゼロ知識証明のためのウィットネスとすることで、前記ゼロ知識証明データΠを生成するゼロ知識証明生成ステップと、
前記検証装置が、前記ゼロ知識証明生成ステップにより生成された前記ゼロ知識証明データΠの検証を行う検証処理ステップと、
前記追跡装置が、前記選択追跡用公開鍵のペアである追跡用秘密鍵により、前記署名データの暗号化データCを復号することで、前記署名データの暗号化データCを生成したグループユーザーのグループユーザー識別子を特定する追跡処理ステップと、
を備える分散追跡型グループ署名処理方法。
【請求項2】
鍵生成装置と、グループユーザー用装置と、検証装置と、追跡装置と、を備える分散追跡型グループ署名処理システムを用いて実行され、複数のグループユーザーを含むグループを対象とするIDベースグループ署名処理を行うとともに、複数の追跡機関による追跡処理を分散して行う分散追跡型グループ署名処理方法であって、
前記鍵生成装置が、公開鍵暗号方式である格子暗号方式により鍵を生成するステップであって、格子を規定する行列Aと、当該行列Aから導出されるグループ管理用トラップドアーT
Aと、検証用行列A
0,...,A
L(L:自然数)と、追跡機関を特定するための行列F
iと、当該行列F
iから導出される追跡処理用トラップドアーT
Fiとを取得し、
グループユーザーを特定するグループユーザー識別子dと、前記行列Aと、前記検証用行列A
0,...,A
Lとにより、グループユーザー識別子d用行列A
dを算出し、当該行列A
dからグループユーザー識別子d用のトラップドアーT
Adを取得し、
前記グループユーザー識別子d用のトラップドアーT
Adと、行列A
dとに基づいて、前記グループユーザー識別子d用の秘密鍵データzを取得する鍵生成ステップと、
前記グループユーザー用装置が、前記グループユーザーにより選択された追跡機関を示す行列F
iを行列Fとし、グループユーザー識別子dを暗号化するための行列G、ベクトルs、ベクトルe
1、ベクトルe
2を取得し、
ベクトルs、ベクトルe
1を用いて、行列Fを暗号化することで第1暗号化データc
1を取得し、
前記行列G、ベクトルs、ベクトルe
2を用いて、前記グループユーザー識別子dを暗号化することで第2暗号化データc
2を取得する署名データ暗号化ステップと、
前記グループユーザー用装置が、グループユーザー識別子dと、前記グループユーザー識別子d用の秘密鍵データzと、ベクトルs、ベクトルe
1およびベクトルe
2を含むベクトルeとをウィットネスとすることで、前記第1暗号化データc
1および第2暗号化データc
2についてのゼロ知識証明データΠを生成するゼロ知識証明生成ステップと、
前記検証装置が、前記ゼロ知識証明生成ステップにより生成された前記ゼロ知識証明データΠの検証を行う検証処理ステップと、
前記追跡装置が、前記グループユーザー識別子dを暗号化するための行列Gと、選択された追跡機関を示す行列Fと、当該行列FのトラップドアーT
Fとに基づいて、比較用行列Yを取得し、
当該行列Yと、前記第1暗号化データc
1および前記第2暗号化データc
2とを用いて復号データd’を取得し、
当該復号データd’を構成する各ビットの値を、格子を規定する剰余系の法とする素数qの半分の値と比較することで特定することで、前記第1暗号化データc
1および前記第2暗号化データc
2を生成したグループユーザーのグループユーザー識別子dを特定する追跡処理ステップと、
を備える分散追跡型グループ署名処理方法。
【請求項3】
鍵生成装置と、グループユーザー用装置と、検証装置と、追跡装置と、を備える分散追跡型グループ署名処理システムを用いて実行され、複数のグループユーザーを含むグループを対象とする属性ベースグループ署名処理を行うとともに、複数の追跡機関による追跡処理を分散して行う分散追跡型グループ署名処理方法であって、
前記鍵生成装置が、公開鍵暗号方式により鍵を生成するステップであって、(1)ゼロ知識証明用共通ステートメントcrsと、(2)グループ管理用公開鍵およびグループ管理用秘密鍵のペアであるグループ管理用鍵ペアと、(3)前記複数のグループユーザーのそれぞれのグループユーザー用公開鍵およびグループユーザー用秘密鍵の鍵ペアであるグループユーザー用鍵ペアとを生成するとともに、前記追跡機関の備えうる属性Attを設定する鍵生成ステップと、
前記グループユーザー用装置が、前記グループユーザー用秘密鍵により、メッセージMに対して署名処理を実行することでグループユーザー署名sを取得し、
少なくとも前記グループユーザーを特定するためのデータであるグループユーザー識別子と、当該グループユーザー識別子に対応するグループユーザーのグループユーザー用公開鍵と、前記グループユーザー署名sとを含むセットデータに対して、前記グループ管理用公開鍵と前記グループユーザーにより選択された前記追跡機関の属性である選択属性Aωとを用いて、暗号化処理を行うことで、署名データの暗号化データCを取得する署名データ暗号化ステップと、
前記グループユーザー用装置が、前記共通ステートメントcrsを用いてゼロ知識証明データΠを生成するステップであって、(1)少なくとも前記選択属性Aωと、前記メッセージMと、前記署名データの暗号化データCとを含むセットデータをゼロ知識証明のためのステートメントとし、(2)少なくとも、前記グループユーザー識別子と、前記グループユーザー用公開鍵と、前記グループユーザー署名sとを含むセットデータをゼロ知識証明のためのウィットネスとすることで、前記ゼロ知識証明データΠを生成するゼロ知識証明生成ステップと、
前記検証装置が、前記ゼロ知識証明生成ステップにより生成された前記ゼロ知識証明データΠの検証を行う検証処理ステップと、
前記鍵生成装置が、前記グループ管理用公開鍵と、前記グループ管理用秘密鍵と、追跡処理を許可する属性Aτとから、追跡用秘密鍵sk
eを生成する復号鍵生成ステップと、
前記追跡装置が、前記追跡用秘密鍵sk
eにより、前記署名データの暗号化データCを復号することで、前記署名データの暗号化データCを生成したグループユーザーのグループユーザー識別子を特定する追跡処理ステップと、
を備える分散追跡型グループ署名処理方法。
【請求項4】
鍵生成装置と、グループユーザー用装置と、検証装置と、追跡装置と、を備える分散追跡型グループ署名処理システムを用いて実行され、複数のグループユーザーを含むグループを対象とする属性ベースグループ署名処理を行うとともに、複数の追跡機関による追跡処理を分散して行う分散追跡型グループ署名処理方法であって、
前記鍵生成装置が、公開鍵暗号方式である格子暗号方式により鍵を生成するステップであって、格子を規定する行列Aと、当該行列Aから導出されるグループ管理用トラップドアーT
Aと、検証用行列A
0,...,A
L(L:自然数)と、ランダムに取得されるランダム行列Bとを取得し、
グループユーザーを特定するグループユーザー識別子dと、前記行列Aと、前記検証用行列A
0,...,A
Lとにより、グループユーザー識別子d用行列A
dを算出し、当該行列A
dからグループユーザー識別子d用のトラップドアーT
Adを取得し、
前記グループユーザー識別子d用のトラップドアーT
Adと、行列A
dとに基づいて、前記グループユーザー識別子d用の秘密鍵データzを取得する鍵生成ステップと、
前記グループユーザー用装置が、前記グループユーザーにより選択された追跡機関についての属性である選択属性Aωと、前記行列Aと、前記検証用行列A
0,...,A
Lと、ランダム行列Bとから導出される行列F
ωを取得し、
グループユーザー識別子dを暗号化するための行列G、ベクトルs、ベクトルe
1、ベクトルe
2を取得し、
ベクトルs、ベクトルe
1を用いて、行列F
ωを暗号化することで第1暗号化データc
1を取得し、
前記行列G、ベクトルs、ベクトルe
2を用いて、前記グループユーザー識別子dを暗号化することで第2暗号化データc
2を取得する署名データ暗号化ステップと、
前記グループユーザー用装置が、グループユーザー識別子dと、前記グループユーザー識別子d用の秘密鍵データzと、ベクトルs、ベクトルe
1およびベクトルe
2を含むベクトルeとをウィットネスとすることで、前記第1暗号化データc
1および第2暗号化データc
2についてのゼロ知識証明データΠを生成するゼロ知識証明生成ステップと、
前記検証装置が、前記ゼロ知識証明生成ステップにより生成された前記ゼロ知識証明データΠの検証を行う検証処理ステップと、
前記鍵生成装置が、前記行列Aと、前記検証用行列A
0,...,A
Lと、ランダム行列Bと、追跡処理を許可する属性Aτとから行列Fを取得し、当該行列Fと前記グループ管理用トラップドアーT
Aとから、追跡用トラップドアーT
Fを生成する復号鍵生成ステップと、
前記追跡装置が、前記グループユーザー識別子dを暗号化するための行列Gと、前記行列Fと、当該行列FのトラップドアーT
Fとに基づいて、比較用行列Yを取得し、
当該行列Yと、前記第1暗号化データc
1および前記第2暗号化データc
2とを用いて復号データd’を取得し、
当該復号データd’を構成する各ビットの値を、格子を規定する剰余系の法とする素数qの半分の値と比較することで特定することで、前記第1暗号化データc
1および前記第2暗号化データc
2を生成したグループユーザーのグループユーザー識別子dを特定する追跡処理ステップと、
を備える分散追跡型グループ署名処理方法。
【請求項5】
請求項1から4のいずれかに記載の分散追跡型グループ署名処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、匿名検証技術に関し、特に、グループ署名を利用する匿名検証技術に関する。
【背景技術】
【0002】
所定のグループに所属するユーザー(グループユーザー)が匿名での検証を可能にする技術として、グループ署名(GS:Group Signature)が知られている(例えば、非特許文献1を参照)。グループ署名では、グループユーザーの匿名性を確保するとともに、グループユーザーが不正をした場合(例えば、所定のグループユーザーにより作成されたグループ署名により、不正な行為が実行された場合等)にどのグループユーザーが不正をしたか追跡することができるように追跡可能性を実現する必要がある。つまり、グループ署名では、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現する必要がある。
【先行技術文献】
【非特許文献】
【0003】
【文献】D. Chaum and E. Van Heyst, "Group signatures," in EUROCRYPT 1991, LNCS, vol. 547. Springer, 1991, pp. 257-265.
【発明の概要】
【発明が解決しようとする課題】
【0004】
グループ署名では、グループユーザーの匿名性、および、グループユーザーの追跡可能性の両方を実現するために、例えば、以下の処理が実行される。なお、グループ署名では、所定のグループに所属する複数のグループユーザー、検証者(Verifier)(例えば、検証装置)、追跡者(Trace Authority)(例えば、追跡装置)により処理が実行される。
(1)鍵生成処理(KeyGen):
鍵生成処理により、以下の鍵ペアが生成される。
・グループ鍵ペア(グループ公開鍵gpk、グループ秘密鍵gsk)
・追跡用鍵ペア(追跡用公開鍵tpk、追跡用秘密鍵tsk)
・グループユーザー署名用鍵ペア(グループユーザー用公開鍵pki、グループユーザー用秘密鍵ski)(なお、グループユーザーのIDをi(i:自然数、1≦i≦N、N:自然数)とする。)
(2)署名処理(Sign):
下記(2A)~(2C)を実行することで、署名処理が実行される。
(2A)署名データの暗号化処理(追跡用公開鍵tpkで暗号化):
ID=iのグループユーザーが署名したデータ(署名データ)を、追跡用公開鍵tpkで暗号化することで、上記署名データの暗号化データCを取得する。
(2B)署名データのゼロ知識証明Πの生成処理:
メッセージM、署名データの暗号化データCのゼロ知識証明Πを生成する。
(2C)グループ署名Σの生成処理:
共通ステートメントcrs、ステートメントx、ウィットネスwを用いてゼロ知識証明Πを生成する。
Π=ZK.Prv(crs,x,w)
ステートメントx=<gpk,tpk,M,C>
ウィットネスw=<i,pki,certi,s,r>
i:グループユーザーID
certi:グループユーザーID=iのグループユーザー用証明
s:グループユーザーID=iのグループユーザー用の署名データ(グループユーザーの秘密鍵skiを用いた、メッセージMについての署名)
r:署名データの暗号化処理に用いたデータ({0,1}λ→r)(λ:セキュリティパラメータ)
(3)検証処理(Verify):
検証者(例えば、検証装置)が、グループ公開鍵gpk、メッセージM、グループ署名Σを用いて、検証処理を行う。
(4)追跡処理(Open):
追跡者(例えば、追跡装置)が、署名データの暗号化データCの復号処理(署名データの暗号化データCを追跡用秘密鍵tskにより復号する処理)を行い、グループ署名をしたグループユーザーを特定することで、追跡処理を行う。
【0005】
グループ署名では、上記のように処理されることで、グループユーザーの匿名性が確保されつつ、検証者により、ゼロ知識証明技術により、署名したグループユーザーを特定することなく、グループ署名Σが真正であるか否かを判定できる(検証できる)。
【0006】
さらに、グループ署名では、グループユーザーが不正をした場合(例えば、所定のグループユーザーにより作成されたグループ署名により、不正な行為が実行された場合等)、追跡者により上記追跡処理が実行されることで、当該グループ署名を行ったグループユーザーを特定することができる。
【0007】
すなわち、グループ署名では、上記のように処理することで、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0008】
しかしながら、上記のグループ署名では、追跡者が一人(追跡機関が1つ)であるので、追跡者に強大な権限(単独の追跡者(追跡機関)が全てのグループユーザーの追跡処理ができるという強大な権限)が集中してしまうという問題がある。また、上記のグループ署名では、複数のグループユーザーを追跡する場合、単独の追跡者(単独の追跡機関)が、全ての追跡処理を行わなければならず、負荷が過大となってしまい、その結果、効率の良い追跡処理ができないという問題がある。
【0009】
そこで、本発明は、上記課題に鑑み、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関への処理負荷を軽減し、かつ、処理効率を向上させる技術を実現することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するために、第1の発明は、複数のグループユーザーを含むグループを対象とするIDベースグループ署名処理を行うとともに、複数の追跡機関による追跡処理を分散して行う分散追跡型グループ署名処理方法であって、鍵生成ステップと、署名データ暗号化ステップと、ゼロ知識証明生成ステップと、検証処理ステップと、追跡処理ステップと、を備える。
【0011】
鍵生成ステップは、公開鍵暗号方式により鍵を生成するステップである。鍵生成ステップは、(1)ゼロ知識証明用共通ステートメントcrsと、(2)グループ管理用公開鍵およびグループ管理用秘密鍵のペアであるグループ管理用鍵ペアと、(3)複数の追跡機関のそれぞれの追跡用公開鍵および追跡用秘密鍵の鍵ペアである追跡用鍵ペアと、(4)複数のグループユーザーのそれぞれのグループユーザー用公開鍵およびグループユーザー用秘密鍵の鍵ペアであるグループユーザー用鍵ペアとを生成する。
【0012】
署名データ暗号化ステップは、グループユーザー用秘密鍵により、メッセージMに対して署名処理を実行することでグループユーザー署名sを取得する。
【0013】
また、署名データ暗号化ステップは、少なくともグループユーザーを特定するためのデータであるグループユーザー識別子と、当該グループユーザー識別子に対応するグループユーザーのグループユーザー用公開鍵と、グループユーザー署名sとを含むセットデータに対して、グループユーザーにより選択された追跡機関の追跡用公開鍵である選択追跡用公開鍵による暗号化処理を行うことで、署名データの暗号化データCを取得する。
【0014】
ゼロ知識証明生成ステップは、共通ステートメントcrsを用いてゼロ知識証明データΠを生成するステップである。
【0015】
ゼロ知識証明生成ステップは、(1)少なくとも選択追跡用公開鍵と、メッセージMと、署名データの暗号化データCとを含むセットデータをゼロ知識証明のためのステートメントとし、(2)少なくとも、グループユーザー識別子と、グループユーザー用公開鍵と、グループユーザー署名sとを含むセットデータをゼロ知識証明のためのウィットネスとすることで、ゼロ知識証明データΠを生成する。
【0016】
検証処理ステップは、ゼロ知識証明生成ステップにより生成されたゼロ知識証明データΠの検証を行う。
【0017】
追跡処理ステップは、選択追跡用公開鍵のペアである追跡用秘密鍵により、署名データの暗号化データCを復号することで、署名データの暗号化データCを生成したグループユーザーのグループユーザー識別子を特定する。
【0018】
この分散追跡型グループ署名処理方法では、グループユーザーが、複数ある追跡機関の中から所望の追跡装置を選択し、グループユーザーに選択された追跡装置のみが、当該グループユーザーが作成したグループ署名についての追跡処理を実行できる。つまり、この分散追跡型グループ署名処理方法において、グループユーザーが選択する追跡機関を分散させることで、複数の追跡機関が分散して追跡処理を行うことができる。その結果、分散追跡型グループ署名処理方法では、追跡処理を分散させることができ、追跡処理の処理負荷を軽減させることができる。
【0019】
また、この分散追跡型グループ署名処理方法では、IDベースグループ署名技術を使用しているので、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0020】
このように、この分散追跡型グループ署名処理方法では、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関(追跡装置)への処理負荷を軽減し、かつ、処理効率を向上させることができる。
【0021】
第2の発明は、複数のグループユーザーを含むグループを対象とするIDベースグループ署名処理を行うとともに、複数の追跡機関による追跡処理を分散して行う分散追跡型グループ署名処理方法であって、鍵生成ステップと、署名データ暗号化ステップと、ゼロ知識証明生成ステップと、検証処理ステップと、追跡処理ステップと、を備える。
【0022】
鍵生成ステップは、公開鍵暗号方式である格子暗号方式により鍵を生成するステップである。鍵生成ステップは、格子を規定する行列Aと、当該行列Aから導出されるグループ管理用トラップドアーTAと、検証用行列A0,...,AL(L:自然数)と、追跡機関を特定するための行列Fiと、当該行列Fiから導出される追跡処理用トラップドアーTFiとを取得する。
【0023】
また、鍵生成ステップは、グループユーザーを特定するグループユーザー識別子dと、行列Aと、検証用行列A0,...,ALとにより、グループユーザー識別子d用行列Adを算出し、当該行列Adからグループユーザー識別子d用のトラップドアーTAdを取得する。
【0024】
また、鍵生成ステップは、グループユーザー識別子d用のトラップドアーTAdと、行列Adとに基づいて、グループユーザー識別子d用の秘密鍵データzを取得する。
【0025】
署名データ暗号化ステップは、グループユーザーにより選択された追跡機関を示す行列Fiを行列Fとし、グループユーザー識別子dを暗号化するための行列G、ベクトルs、ベクトルe1、ベクトルe2を取得し、ベクトルs、ベクトルe1を用いて、行列Fを暗号化することで第1暗号化データc1を取得する。
【0026】
また、署名データ暗号化ステップは、行列G、ベクトルs、ベクトルe2を用いて、グループユーザー識別子dを暗号化することで第2暗号化データc2を取得する。
【0027】
ゼロ知識証明生成ステップは、グループユーザー識別子dと、グループユーザー識別子d用の秘密鍵データzと、ベクトルs、ベクトルe1およびベクトルe2を含むベクトルeとをウィットネスとすることで、第1暗号化データc1および第2暗号化データc2についてのゼロ知識証明データΠを生成する。
【0028】
検証処理ステップは、ゼロ知識証明生成ステップにより生成されたゼロ知識証明データΠの検証を行う。
【0029】
追跡処理ステップは、グループユーザー識別子dを暗号化するための行列Gと、選択された追跡機関を示す行列Fと、当該行列FのトラップドアーTFとに基づいて、比較用行列Yを取得する。
【0030】
また、追跡処理ステップは、当該行列Yと、第1暗号化データc1および第2暗号化データc2とを用いて復号データd’を取得する。
【0031】
また、追跡処理ステップは、当該復号データd’を構成する各ビットの値を、格子を規定する剰余系の法とする素数qの半分の値と比較することで特定することで、第1暗号化データc1および第2暗号化データc2を生成したグループユーザーのグループユーザー識別子dを特定する。
【0032】
この分散追跡型グループ署名処理方法では、グループユーザーが、複数ある追跡機関の中から所望の追跡装置を選択し、グループユーザーに選択された追跡装置のみが、当該グループユーザーが作成したグループ署名についての追跡処理を実行できる。つまり、この分散追跡型グループ署名処理方法において、グループユーザーが選択する追跡装置を分散させることで、複数の追跡装置が分散して追跡処理を行うことができる。その結果、この分散追跡型グループ署名処理方法では、追跡処理を分散させることができ、追跡処理の処理負荷を軽減させることができる。
【0033】
また、この分散追跡型グループ署名処理方法では、IDベースグループ署名技術(暗号方式として格子暗号を使用)を使用しているので、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0034】
このように、この分散追跡型グループ署名処理方法では、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関(追跡装置)への処理負荷を軽減し、かつ、処理効率を向上させることができる。
【0035】
第3の発明は、複数のグループユーザーを含むグループを対象とする属性ベースグループ署名処理を行うとともに、複数の追跡機関による追跡処理を分散して行う分散追跡型グループ署名処理方法であって、鍵生成ステップと、署名データ暗号化ステップと、ゼロ知識証明生成ステップと、検証処理ステップと、復号鍵生成ステップと、
公開鍵暗号方式により鍵を生成するステップであって、(1)ゼロ知識証明用共通ステートメントcrsと、(2)グループ管理用公開鍵およびグループ管理用秘密鍵のペアであるグループ管理用鍵ペアと、(3)複数のグループユーザーのそれぞれのグループユーザー用公開鍵およびグループユーザー用秘密鍵の鍵ペアであるグループユーザー用鍵ペアとを生成するとともに、追跡機関の備えうる属性Attを設定する鍵生成ステップと、追跡処理ステップと、を備える。
【0036】
署名データ暗号化ステップは、グループユーザー用秘密鍵により、メッセージMに対して署名処理を実行することでグループユーザー署名sを取得する。
【0037】
また、署名データ暗号化ステップは、少なくともグループユーザーを特定するためのデータであるグループユーザー識別子と、当該グループユーザー識別子に対応するグループユーザーのグループユーザー用公開鍵と、グループユーザー署名sとを含むセットデータに対して、グループ管理用公開鍵とグループユーザーにより選択された追跡機関の属性である選択属性Aωとを用いて、暗号化処理を行うことで、署名データの暗号化データCを取得する。
【0038】
ゼロ知識証明生成ステップは、共通ステートメントcrsを用いてゼロ知識証明データΠを生成するステップである。ゼロ知識証明生成ステップは、(1)少なくとも選択属性Aωと、メッセージMと、署名データの暗号化データCとを含むセットデータをゼロ知識証明のためのステートメントとし、(2)少なくとも、グループユーザー識別子と、グループユーザー用公開鍵と、グループユーザー署名sとを含むセットデータをゼロ知識証明のためのウィットネスとすることで、ゼロ知識証明データΠを生成する。
【0039】
検証処理ステップは、ゼロ知識証明生成ステップにより生成されたゼロ知識証明データΠの検証を行う。
【0040】
復号鍵生成ステップは、グループ管理用公開鍵と、グループ管理用秘密鍵と、追跡処理を許可する属性Aτとから、追跡用秘密鍵skeを生成する。
【0041】
追跡処理ステップは、追跡用秘密鍵skeにより、署名データの暗号化データCを復号することで、署名データの暗号化データCを生成したグループユーザーのグループユーザー識別子を特定する。
【0042】
この分散追跡型グループ署名処理方法では、グループユーザーが、追跡装置が満たすべき属性を選択し、グループユーザーにより選択された属性を有する追跡装置のみが、当該グループユーザーが作成したグループ署名についての追跡処理を実行できる。つまり、この分散追跡型グループ署名処理方法において、グループユーザーが選択する追跡機関を分散させることで、複数の追跡機関が分散して追跡処理を行うことができる。その結果、分散追跡型グループ署名処理方法では、追跡処理を分散させることができ、追跡処理の処理負荷を軽減させることができる。
【0043】
また、この分散追跡型グループ署名処理方法では、属性ベースグループ署名技術を使用しているので、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0044】
このように、この分散追跡型グループ署名処理方法では、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関(追跡装置)への処理負荷を軽減し、かつ、処理効率を向上させることができる。
【0045】
第4の発明は、複数のグループユーザーを含むグループを対象とする属性ベースグループ署名処理を行うとともに、複数の追跡機関による追跡処理を分散して行う分散追跡型グループ署名処理方法であって、鍵生成ステップと、署名データ暗号化ステップと、ゼロ知識証明生成ステップと、検証処理ステップと、復号鍵生成ステップと、追跡処理ステップと、を備える。
【0046】
鍵生成ステップは、公開鍵暗号方式である格子暗号方式により鍵を生成するステップである。鍵生成ステップは、格子を規定する行列Aと、当該行列Aから導出されるグループ管理用トラップドアーTAと、検証用行列A0,...,AL(L:自然数)と、ランダムに取得されるランダム行列Bとを取得する。
【0047】
また、鍵生成ステップは、グループユーザーを特定するグループユーザー識別子dと、行列Aと、検証用行列A0,...,ALとにより、グループユーザー識別子d用行列Adを算出し、当該行列Adからグループユーザー識別子d用のトラップドアーTAdを取得する。
【0048】
また、鍵生成ステップは、グループユーザー識別子d用のトラップドアーTAdと、行列Adとに基づいて、グループユーザー識別子d用の秘密鍵データzを取得する。
【0049】
署名データ暗号化ステップは、グループユーザーにより選択された追跡機関についての属性である選択属性Aωと、行列Aと、検証用行列A0,...,ALと、ランダム行列Bとから導出される行列Fωを取得する。
【0050】
また、署名データ暗号化ステップは、グループユーザー識別子dを暗号化するための行列G、ベクトルs、ベクトルe1、ベクトルe2を取得する。
【0051】
また、署名データ暗号化ステップは、ベクトルs、ベクトルe1を用いて、行列Fωを暗号化することで第1暗号化データc1を取得する。
【0052】
また、署名データ暗号化ステップは、行列G、ベクトルs、ベクトルe2を用いて、グループユーザー識別子dを暗号化することで第2暗号化データc2を取得する。
【0053】
ゼロ知識証明生成ステップは、グループユーザー識別子dと、グループユーザー識別子d用の秘密鍵データzと、ベクトルs、ベクトルe1およびベクトルe2を含むベクトルeとをウィットネスとすることで、第1暗号化データc1および第2暗号化データc2についてのゼロ知識証明データΠを生成する。
【0054】
検証処理ステップは、ゼロ知識証明生成ステップにより生成されたゼロ知識証明データΠの検証を行う。
【0055】
復号鍵生成ステップは、行列Aと、検証用行列A0,...,ALと、ランダム行列Bと、追跡処理を許可する属性Aτとから行列Fを取得し、当該行列Fとグループ管理用トラップドアーTAとから、追跡用トラップドアーTFを生成する。
【0056】
追跡処理ステップは、グループユーザー識別子dを暗号化するための行列Gと、行列Fと、当該行列FのトラップドアーTFとに基づいて、比較用行列Yを取得する。
【0057】
また、追跡処理ステップは、当該行列Yと、第1暗号化データc1および第2暗号化データc2とを用いて復号データd’を取得する。
【0058】
また、追跡処理ステップは、当該復号データd’を構成する各ビットの値を、格子を規定する剰余系の法とする素数qの半分の値と比較することで特定することで、第1暗号化データc1および第2暗号化データc2を生成したグループユーザーのグループユーザー識別子dを特定する。
【0059】
この分散追跡型グループ署名処理方法(暗号方式として格子暗号を使用)では、グループユーザーが、追跡装置が満たすべき属性を選択し、グループユーザーにより選択された属性を有する追跡装置のみが、当該グループユーザーが作成したグループ署名についての追跡処理を実行できる。つまり、この分散追跡型グループ署名処理方法において、グループユーザーが選択する追跡装置を分散させることで、複数の追跡装置が分散して追跡処理を行うことができる。その結果、この分散追跡型グループ署名処理方法では、追跡処理を分散させることができ、追跡処理の処理負荷を軽減させることができる。
【0060】
また、この分散追跡型グループ署名処理方法では、属性ベースグループ署名技術を使用しているので、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0061】
このように、この分散追跡型グループ署名処理システムでは、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関(追跡装置)への処理負荷を軽減し、かつ、処理効率を向上させることができる。
【0062】
第5の発明は、第1から第4のいずれかに発明である分散追跡型グループ署名処理方法をコンピュータに実行させるためのプログラムである。
【0063】
これにより、第1から第4のいずれかに発明である分散追跡型グループ署名処理方法をコンピュータに実行させるためのプログラムを実現できる。
【発明の効果】
【0064】
本発明によれば、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関への処理負荷を軽減し、かつ、処理効率を向上させる技術を実現することができる。
【図面の簡単な説明】
【0065】
【
図1】第1実施形態に係る分散追跡型グループ署名処理システム1000の概略構成図。
【
図2】分散追跡型グループ署名処理システム1000で実行される処理のシーケンス図。
【
図3】分散追跡型グループ署名処理システム1000で実行される処理のシーケンス図。
【
図4】分散追跡型グループ署名処理システム1000で実行される処理のフローチャート。
【
図5】分散追跡型グループ署名処理システム1000で実行される鍵生成処理のフローチャート。
【
図6】分散追跡型グループ署名処理システム1000で実行される署名処理のフローチャート。
【
図7】分散追跡型グループ署名処理システム1000で実行される検証処理のフローチャート。
【
図8】分散追跡型グループ署名処理システム1000で実行される追跡処理のフローチャート。
【
図9】第2実施形態に係る分散追跡型グループ署名処理システム2000の概略構成図。
【
図10】分散追跡型グループ署名処理システム2000で実行される処理のシーケンス図。
【
図11】分散追跡型グループ署名処理システム2000で実行される処理のシーケンス図。
【
図12】分散追跡型グループ署名処理システム2000で実行される処理のフローチャート。
【
図13】分散追跡型グループ署名処理システム2000で実行される鍵生成処理のフローチャート。
【
図14】分散追跡型グループ署名処理システム2000で実行される鍵生成処理のフローチャート。
【
図15】分散追跡型グループ署名処理システム2000で実行される署名処理のフローチャートである。
【
図16】分散追跡型グループ署名処理システム2000で実行される検証処理のフローチャートである。
【
図17】分散追跡型グループ署名処理システム2000で実行される追跡処理のフローチャートである。
【
図18】第3実施形態に係る分散追跡型グループ署名処理システム3000の概略構成図。
【
図19】分散追跡型グループ署名処理システム3000で実行される処理のシーケンス図。
【
図20】分散追跡型グループ署名処理システム3000で実行される処理のシーケンス図。
【
図21】分散追跡型グループ署名処理システム3000で実行される処理のフローチャート。
【
図22】分散追跡型グループ署名処理システム3000で実行される鍵生成処理のフローチャート。
【
図23】分散追跡型グループ署名処理システム3000で実行される署名処理のフローチャート。
【
図24】分散追跡型グループ署名処理システム3000で実行される検証処理のフローチャート。
【
図25】分散追跡型グループ署名処理システム3000で実行される復号鍵生成処理のフローチャート。
【
図26】分散追跡型グループ署名処理システム1000で実行される追跡処理のフローチャート。
【
図27】第4実施形態に係る分散追跡型グループ署名処理システム4000の概略構成図。
【
図28】分散追跡型グループ署名処理システム4000で実行される処理のシーケンス図。
【
図29】分散追跡型グループ署名処理システム4000で実行される処理のシーケンス図。
【
図30】分散追跡型グループ署名処理システム4000で実行される処理のフローチャート。
【
図31】分散追跡型グループ署名処理システム4000で実行される鍵生成処理のフローチャート。
【
図32】分散追跡型グループ署名処理システム4000で実行される鍵生成処理のフローチャート。
【
図33】分散追跡型グループ署名処理システム4000で実行される署名処理のフローチャート。
【
図34】分散追跡型グループ署名処理システム4000で実行される検証処理のフローチャート。
【
図35】分散追跡型グループ署名処理システム4000で実行される復号鍵生成処理のフローチャート。
【
図36】分散追跡型グループ署名処理システム2000で実行される追跡処理のフローチャート。
【発明を実施するための形態】
【0066】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0067】
<1.1:分散追跡型グループ署名処理システムの構成>
図1は、第1実施形態に係る分散追跡型グループ署名処理システム1000の概略構成図である。
【0068】
分散追跡型グループ署名処理システム1000は、
図1に示すように、鍵生成装置1と、N個(N:自然数)のグループユーザー用装置UE(d
1)~UE(d
N)と、検証装置2と、T個(T;自然数)の追跡装置3-1~3-Tとを備える。グループユーザー用装置UE(d
1)~UE(d
n)と検証装置2とは、例えば、ネットワークにより接続されており、各装置間において、データ通信が可能である。また、鍵生成装置1および追跡装置3-1~3-Tも上記ネットワークに接続し、検証装置2と、グループユーザー用装置UE(d
1)~UE(d
n)とデータ通信可能としてもよい。
【0069】
なお、説明便宜のため、グループユーザーは、N人(N:自然数)であり、グループユーザー識別子di(i:自然数、1≦i≦N)により、各グループユーザーは識別されるものとする。また、グループユーザー識別子diのグループユーザーが使用する装置がグループユーザー用装置UE(di)であるものとする。なお、この形態に限定されることはなく、例えば、1つのグループユーザー用装置を複数のグループユーザーが使用するようにしてもよい。また、グループユーザー識別子diのグループユーザーを「グループユーザーi」と表記する。
【0070】
鍵生成装置1は、コンピュータや、サーバーを用いて実現される装置であり、セットアップ処理(Setup)、鍵生成処理(KeyGen)、鍵配布処理を行う。具体的には、鍵生成装置1は、鍵生成処理により、以下の鍵ペア(公開鍵暗号方式による鍵ペア)を生成する。
(1)グループ管理用鍵ペア(pks、sks)
mpks:グループ管理用公開鍵
msks:グループ管理用秘密鍵
(2)T個の追跡用鍵ペア(pkei、skei)(i:自然数、1≦i≦T)
pkei:i番目の追跡用公開鍵(追跡装置3-iの追跡用公開鍵)
skei:i番目の追跡用秘密鍵(追跡装置3-iの追跡用公開鍵)
(3)N個のグループユーザー用鍵ペア(pki、ski)(i:自然数、1≦i≦N)
pki:グループユーザーiの公開鍵
ski:グループユーザーiの秘密鍵
また、鍵生成装置1は、ゼロ知識証明処理用の共通ステートメントcrsを生成する。
【0071】
鍵生成装置1は、上記により生成した公開鍵(pks、pkei、pki)、および、ゼロ知識証明処理用の共通ステートメントcrsを公開する。
【0072】
また、鍵生成装置1は、グループ管理用秘密鍵sksを、秘密裏に管理する。
【0073】
また、鍵生成装置1は、i番目の追跡用秘密鍵skeiを追跡装置3-iに秘密裏に送付し、追跡装置3-iは、i番目の追跡用秘密鍵skeiを秘密裏に保持する。
【0074】
また、鍵生成装置1は、グループユーザーiの秘密鍵skiを、グループユーザー用装置UE(di)に秘密裏に送付し、グループユーザー用装置UE(di)は、グループユーザーiの秘密鍵skiを秘密裏に保持する。
【0075】
また、鍵生成装置1は、グループ管理用秘密鍵sksを用いて、グループユーザーiのIDと公開鍵pkiのセットデータ<i,pki>に対して署名処理(DS.Sign)を行い、グループユーザーiのセットデータ<i,pki>の証明certi(これを「グループユーザー用証明」という)を生成する。そして、鍵生成装置1は、生成したグループユーザー用証明certiをグループユーザー用装置UE(di)に送付する。
【0076】
なお、鍵生成装置1は、信頼できる外部機関(Trusted Authority)により実現(提供)されるものであってもよい。
【0077】
グループユーザー用装置UE(di)(i:自然数、1≦i≦N)は、コンピュータや、サーバーを用いて実現される装置である。グループユーザー用装置UE(di)は、グループユーザー識別子がdiであるグループユーザーiに割り当てられた秘密鍵(ski)を保持し、当該グループユーザー用秘密鍵を用いて、メッセージM(署名対象のデータ)に対する署名処理(DS.Sign(ski,M))を実行することで、メッセージMについての署名データsを取得する。そして、グループユーザー用装置UE(di)は、上記署名処理により取得した署名データsに対して、T個の追跡用公開鍵{pkei}i∈{1,...,T}(T個の追跡用公開鍵pkei(i:自然数、1≦i≦T)を「{pkei}i∈{1,...,T}」と表記する。以下、他の変数についても同様の表記法を用いる。)の中から選択した追跡用公開鍵(選択した追跡用公開鍵を「選択追跡用公開鍵pke’」と表記する)を用いて暗号化処理を行うことで、暗号化署名データCを取得する。
【0078】
さらに、グループユーザー用装置UE(di)は、ワンタイム署名用の鍵ペア(ovk,osk)(ovk:ワンタイム署名用公開鍵、osk:ワンタイム署名用秘密鍵)を生成する処理を行う。そして、グループユーザー用装置UE(di)は、ワンタイム署名用公開鍵ovkを用いて、セットデータ<C,Π>(C:暗号化署名データC、Π:ゼロ知識証明)の署名処理(OTS.Sign(osk,<C,Π>)→σ)を行うことで、ワンタイム署名σを取得する。
【0079】
グループユーザー用装置UE(di)は、ワンタイム署名用公開鍵ovk、暗号化署名データC、ゼロ知識証明Π、選択追跡用公開鍵pke’を含めたグループ署名Σを生成し、生成したグループ署名Σ(=(ovk,C,Π,pke’))を、メッセージMとともに、検証装置2に出力する。また、グループユーザー用装置UE(di)は、ワンタイム署名σを検証装置2に出力する。
【0080】
検証装置2は、コンピュータや、サーバーを用いて実現される装置であり、グループユーザーi(グループユーザー用装置UE(di))から出力されるメッセージM(グループ署名対象のドキュメント)、グループ署名Σ(=(ovk,C,Π,pke’))、および、ワンタイム署名σを入力し、グループ署名Σについての検証処理(Verify)を実行する。
【0081】
追跡装置3-i(i:自然数、1≦i≦T)は、コンピュータや、サーバーを用いて実現される装置であり、メッセージM、および、グループ署名Σ(=(ovk,C,Π,pke’))を取得し、追跡装置3-iの追跡用秘密鍵ske’(=skei)を用いて、暗号化署名データCを復号する。追跡装置3-iが、グループユーザーにより選択された追跡装置である場合、追跡用秘密鍵ske’(=skei)を用いて復号処理を行うことで、暗号化署名データCを正常に復号することができる。そして、復号されたデータから、グループ署名を行ったグループユーザーのIDを取得することができる。
【0082】
<1.2:分散追跡型グループ署名処理システムの動作>
以上のように構成された分散追跡型グループ署名処理システム1000の動作について、以下、説明する。
【0083】
図2~
図3は、分散追跡型グループ署名処理システム1000で実行される処理のシーケンス図である。
【0084】
図4は、分散追跡型グループ署名処理システム1000で実行される処理のフローチャートである。
【0085】
図5は、分散追跡型グループ署名処理システム1000で実行される鍵生成処理のフローチャートである。
【0086】
図6は、分散追跡型グループ署名処理システム1000で実行される署名処理のフローチャートである。
【0087】
図7は、分散追跡型グループ署名処理システム1000で実行される検証処理のフローチャートである。
【0088】
図8は、分散追跡型グループ署名処理システム1000で実行される追跡処理のフローチャートである。
【0089】
以下では、分散追跡型グループ署名処理システム1000の動作を、シーケンス図とフローチャートとを参照しながら、説明する。
【0090】
なお、分散追跡型グループ署名処理システム1000では、(1)デジタル署名技術(Digital signature sheme)、(2)公開鍵暗号技術(Public key encryption scheme)、および、(3)非対話ゼロ知識証明技術(Non-interactive zero-knowledge proof)を使用して処理を行う。
(1)デジタル署名技術(Digital signature sheme)DSは、DS.Gen、DS.Sign、および、DS.Verifyを含む。処理DS.Genは、1λが入力されると、鍵ペア(公開鍵pkおよび秘密鍵sk)を生成する処理である。処理DS.Signは、秘密鍵skとメッセージmを入力とし、署名σを出力する処理である。処理DS.Verifyは、署名σがメッセージmについて有効であるとき、「1」を出力し、署名σがメッセージmについて有効ではないとき、「0」を出力する。
(2)公開鍵暗号技術PKEは、PKE.Gen、PKE.Enc、および、PKE.Decを含む。処理PKE.Genは、1λが入力されると、鍵ペア(公開鍵pkおよび秘密鍵sk)を生成する処理である。処理PKE.Encは、公開鍵pkとメッセージmと、乱数rとを入力とし、暗号文cを出力する処理である。処理PKE.Decは、秘密鍵skおよび暗号文cを入力とし、平文mを出力する。
(3)非対話ゼロ知識証明技術(Non-interactive zero-knowledge proof)NIZKにおいて、Rを効率的に計算可能な関係とし、LをRにおけるステートメントを有する言語であるとし、ステートメントをxとし、(x,w)∈Rでであるウィットネス(witness)をwとする。このとき、非対話ゼロ知識証明技術NIZKは、ZK.Gen、ZK.Prv、および、ZK.Verifyを含む。処理ZK.Genは、1λが入力されると、共通ステートメントcrsを出力する。処理ZK.Prvは、共通ステートメントcrs、ステートメントx、および、ウィットネスwを入力とし、証明πを出力する。処理ZK.Verifyは、共通ステートメントcrs、ステートメントx、および、証明πを入力し、証明πが有効であるとき、「1」を出力し、証明πが有効はないとき、「0」を出力する。
【0091】
なお、説明便宜のため、グループユーザー数N=2とし、追跡機関(追跡装置)の数T=2とし、分散追跡型グループ署名処理システム1000に、グループユーザー用装置UE(d1)、および、グループユーザー用装置UE(d2)が含まれており、追跡装置3-1、および、追跡装置3-2が含まれている場合について、以下説明する。
【0092】
また、説明便宜のため、以下では、グループユーザー用装置UE(d1)(グループユーザーi=1)が、追跡装置3-1を選択して、グループ署名を行う場合について説明する。
【0093】
(1.2.1:セットアップ処理(ステップS11(
図4)、シーケンス図のSS1(
図2)))
ステップS11において、鍵生成装置1は、セットアップ処理(Setup(1
λ))を実行する。具体的には、鍵生成装置1は、セキュリティパラメータλ(λ:自然数)を設定する。また、鍵生成装置1は、グループユーザーの最大数N(本実施形態では、N=2)、および、追跡装置の数T(本実施形態では、T=2)を設定する。
【0094】
(1.2.2:鍵生成処理(ステップS12(
図5)、シーケンス図のSS2(
図2)))
ステップS12において、鍵生成装置1は、鍵生成処理(KeyGen(1
λ,1
N,1
T))を実行する。
【0095】
(ステップS1201~S1202):
ステップS1201において、鍵生成装置1は、セキュリティパラメータλに基づいて、ゼロ知識証明処理用の共通ステートメントcrsを生成する(ZK.Gen(1λ)→crsに相当する処理を実行する)。
【0096】
ステップS1202において、鍵生成装置1は、セキュリティパラメータλに基づいて、グループ管理用鍵ベア、すなわち、グループ管理用公開鍵pksおよびグループ管理用秘密鍵sksを生成する(DS.Gen(1λ)→pks,sksに相当する処理を実行する)。
【0097】
(ステップS1203~S1205):
ステップS1203~S1205(ループ処理(ループ1))において、鍵生成装置1は、セキュリティパラメータλに基づいて、T個の追跡装置用の追跡用鍵ベア、すなわち、追跡用公開鍵pkeiおよび追跡用秘密鍵skeiを生成する(PKE.Gen(1λ)→pkei,skeiに相当する処理を実行する)。
【0098】
(ステップS1206~S1209):
ステップS1206~S1209(ループ処理(ループ2))において、鍵生成装置1は、セキュリティパラメータλに基づいて、グループユーザーi用の鍵ペアを生成する処理、すなわち、グループユーザーi用公開鍵pkiおよび秘密鍵skiを生成する(DS.Gen(1λ)→pki,skiに相当する処理を実行する)処理を行う(ステップS1207)。
【0099】
また、鍵生成装置1は、グループ管理用秘密鍵sksを用いて、グループユーザーiのグループユーザーiと公開鍵pkiのセットデータ<i,pki>に対して署名処理(DS.Sign(sks,<i,pki>→certi))を行うことで、グループユーザーi用の証明certiを生成する(ステップS1208)。
【0100】
鍵生成装置1は、上記ステップS1207、S1208の処理を、グループユーザー数に相当する回数だけ繰り返し実行することで、全てのグループユーザーの鍵ペア(pki,ski)、証明(certi)を取得する。
【0101】
(ステップS1210):
ステップS1210において、鍵生成装置1は、生成した鍵を出力する処理を行う。具体的には、鍵生成装置1は、共通ステートメントcrs、グループ管理用公開鍵pks,追跡用公開鍵{pkei}i∈{1,...,T}を、グループ公開鍵gpk(=(crs,pks,{pkei}i∈{1,...,T}))として公開する。
【0102】
また、鍵生成装置1は、追跡用秘密鍵{skei}i∈{1,...,T}を追跡装置3-iに秘密裏に送付し、追跡装置3-iは、追跡用秘密鍵skeiを秘密裏に保持する。本実施形態では、追跡用秘密鍵ske1が追跡装置3-1に送付され、追跡用秘密鍵ske2が追跡装置3-2に送付される。なお、追跡用秘密鍵(の集合){skei}i∈{1,...,T}をtsk(={skei}i∈{1,...,T})と表記する。
【0103】
また、鍵生成装置1は、グループユーザーi(グループユーザー用装置UE(di))に、グループユーザーi用の秘密鍵skiと、証明certiとを秘密裏に送付し、グループユーザーi(グループユーザー用装置UE(di))は、秘密鍵skiと、証明certiとを保持する。なお、グループユーザーi用のデータ(の集合)(i,pki,ski,certi)をssk(={(i,pki,ski,certi)}i∈{1,...,N})と表記する。
【0104】
(1.2.3:署名処理(ステップS13(
図6)、シーケンス図のSS4(
図2)))
ステップS13において、グループユーザー用装置UE(d
i)は、署名処理(Sign(gpk,ssk[i],M))を実行する。
【0105】
(ステップS1301):
ステップS1301において、グループユーザー用装置UE(di)は、メッセージM(グループ署名の対象データ)に対して、グループユーザーiの秘密鍵skiを用いて署名処理(DS.Sign(ski,M)→s)を行い、署名sを生成する。
【0106】
(ステップS1302):
ステップS1302において、グループユーザー用装置UE(di)は、乱数r({0,1}→r)を設定する。また、グループユーザー用装置UE(di)は、追跡装置3-iを選択し、選択した追跡装置3-iの公開鍵pkeiを選択追跡用公開鍵pke’とする。本実施形態では、選択追跡用公開鍵pke’=pkei(i=1)である。
【0107】
そして、グループユーザー用装置UE(di)は、乱数rと、選択追跡用公開鍵pke’とを用いて、セットデータ<i,pki,certi,s>を暗号化し、暗号化署名データCを取得する(PKE.Enc(pke’,<i,pki,certi,s>;r>→C))。
【0108】
(ステップS1303):
ステップS1303において、グループユーザー用装置UE(di)は、署名データのゼロ知識証明処理を行う。具体的には、グループユーザー用装置UE(di)は、共通ステートメントcrsを用いて、
ステートメントx=<pks,pke’,M,C>、
ウィットネスw=<i,pki,certi,s,r>
として、処理ZK.Prv(crs,x,w)を実行し、ゼロ知識証明Πを取得する。
【0109】
(ステップS1304):
ステップS1304において、グループユーザー用装置UE(di)は、セキュリティパラメータλを用いて、ワンタイム署名用の鍵生成処理(OTS.Gen(1λ)→(ovk,osk))を実行し、ワンタイム署名用公開鍵ovk、ワンタイム署名用秘密鍵oskを生成する。
【0110】
(ステップS1305):
ステップS1305において、グループユーザー用装置UE(di)は、ワンタイム署名処理を行う。具体的には、グループユーザー用装置UE(di)は、ワンタイム署名用秘密鍵oskを用いて、セットデータ<C,Π>についての署名処理(OTS.Sign(osk,<C,Π>)→σ)を行い、ワンタイム署名σを生成する。
【0111】
(1.2.4:検証処理(ステップS14(
図7)、シーケンス図のSS5(
図3)))
ステップS14において、検証装置2は、検証処理を実行する。
図3のステップSS5に示すように、グループユーザー用装置UE(d
i)は、検証装置2に、メッセージM、グループ署名Σ(=(ovk,C,Π,pke’))、および、ワンタイム署名σを送信する。
【0112】
(ステップS1401):
ステップS1401において、検証装置2は、グループユーザー用装置UE(di)からグループ署名Σ(=(ovk,C,Π,pke’))を受信する。
【0113】
(ステップS1402):
ステップS1402において、検証装置2は、ワンタイム公開鍵ovkを用いて、セットデータ<C,Π>がワンタイム署名σについて有効か否かを判定する検証処理OTS.Verify(ovk,<C,Π>,σ)を実行する。なお、検証処理OTS.Verifyは、ワンタイム署名がメッセージについて有効であるとき、「1」を出力し、ワンタイム署名がメッセージについて有効ではないとき、「0」を出力する。
【0114】
そして、検証装置2は、検証処理OTS.Verify(ovk,<C,Π>,σ)による判定結果が「0」である場合、処理をステップS1405に進め、判定結果が「1」である場合(「0」ではない場合)、処理をステップS1403に進める。
【0115】
(ステップS1403):
ステップS1403において、検証装置2は、セットデータ<pks,pke’,M,C>のゼロ知識検証処理を行う。具体的には、検証装置2は、共通ステートメントcrsを用いて、処理ZK.Verify(crs,<pks,pke’,M,C,Π)を実行する。
【0116】
そして、検証装置2は、処理ZK.Verify(crs,<pks,pke’,M,C,Π)による判定結果が「0」である場合、処理をステップS1405に進め、判定結果が「1」である場合(「0」ではない場合)、処理をステップS1404に進める。
【0117】
(ステップS1404):
ステップS1404において、検証装置2は、グループ署名Σ(=(ovk,C,Π,pke’))が「無効」であると判定する。
【0118】
(ステップS1405):
ステップS1405において、検証装置2は、グループ署名Σ(=(ovk,C,Π,pke’))が「有効」であると判定する。
【0119】
(1.2.5:追跡処理(ステップS15(
図8)、シーケンス図のSS6(
図3)))
ステップS15において、追跡装置3-iは、追跡処理を実行する。
【0120】
(ステップS1501):
ステップS1501において、追跡装置3-iは、追跡用秘密鍵skeiを用いて、暗号化署名データCを復号する。このとき、追跡装置3-iが、グループユーザーiから選択された追跡装置である場合、追跡装置3-iの追跡用秘密鍵skeiは、選択追跡用公開鍵pke’のペアである追跡用秘密鍵(選択追跡用公開鍵pke’のペアである追跡用秘密鍵を「選択追跡用秘密鍵ske’」という)であるので、追跡用秘密鍵skei(=ske’)を用いて、暗号化署名データCを正常に復号することができる。一方、追跡装置3-iが、グループユーザーiから選択された追跡装置ではない場合、追跡装置3-iの保持している追跡用秘密鍵skeiでは、暗号化署名データCを正常に復号することができない。これにより、グループユーザーiが選択した以外の追跡装置3-iにおいて、グループユーザーiにより作成されたグループ署名Σが追跡されることがなく、グループユーザーの匿名性が確保される。
【0121】
(ステップS1502):
ステップS1502において、追跡装置3-iは、ステップS1501で復号されたデータからグループユーザーiのID(=i)を特定する。これにより、グループユーザーiが選択した追跡装置3-iのみが、グループ署名Σに対して追跡処理を行い、当該グループ署名Σを作成したグループユーザーi(本実施形態では、グループユーザーID=1(i=1)のグループユーザー)を特定することができる。
【0122】
なお、上記では、i=1のグループユーザー(グループユーザーi)が、追跡装置3-1を選択した場合について、説明したが、これに限定されることはなく、例えば、(1)i=1のグループユーザー(グループユーザー1)が、追跡装置3-1を選択し、かつ、(2)i=2のグループユーザー(グループユーザー2)が、追跡装置3-2を選択するようにしてもよい。この場合、分散追跡型グループ署名処理システム1000では、(1)グループユーザーi(i=1)が作成したグループ署名Σについては、追跡装置3-1が追跡処理を実行し、(2)グループユーザーi(i=2)が作成したグループ署名Σについては、追跡装置3-2が追跡処理を実行することになるので、追跡処理を分散させることができる。
【0123】
また、例えば、分散追跡型グループ署名処理システム1000において、(1)第1の部署(例えば、営業部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-1)のみが追跡処理を実行できるようにし、(2)第2の部署(例えば、技術部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-2)のみが追跡処理を実行できるようにし、(3)第3の部署(例えば、人事部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-3)のみが追跡処理を実行できるようにしてもよい。
【0124】
上記で例示したケースを分散追跡型グループ署名処理システム1000にて実現する場合、選択追跡用公開鍵pke’を上記条件に合うように、グループユーザーが選択するようにすればよい。
【0125】
以上のように、分散追跡型グループ署名処理システム1000では、グループユーザーが、複数ある追跡装置の中から所望の追跡装置を選択し、グループユーザーに選択された追跡装置のみが、当該グループユーザーが作成したグループ署名についての追跡処理を実行できる。つまり、分散追跡型グループ署名処理システム1000において、グループユーザーが選択する追跡装置を分散させることで、複数の追跡装置が分散して追跡処理を行うことができる。その結果、分散追跡型グループ署名処理システム1000では、追跡処理を分散させることができ、追跡処理の処理負荷を軽減させることができる。
【0126】
また、分散追跡型グループ署名処理システム1000では、IDベースグループ署名技術を使用しているので、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0127】
このように、分散追跡型グループ署名処理システム1000では、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関(追跡装置)への処理負荷を軽減し、かつ、処理効率を向上させることができる。
【0128】
[第2実施形態]
次に、第2実施形態について、図面を参照しながら、以下、説明する。なお、上述の実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0129】
<2.1:分散追跡型グループ署名処理システムの構成>
図9は、第2実施形態に係る分散追跡型グループ署名処理システム2000の概略構成図である。
【0130】
第2実施形態に係る分散追跡型グループ署名処理システム2000の構成は、第1実施形態の分散追跡型グループ署名処理システム1000と同様である。第1実施形態では、分散追跡型グループ署名処理システム1000において、IDベース暗号(IBE:ID-based Encryption)を用いる場合の一般的な構成(汎用的な構成)、機能について説明した。第2実施形態では、分散追跡型グループ署名処理システム2000において、IDベース暗号として、格子暗号(Lattice cryptography)を用いる場合の具体的な処理について説明する。
【0131】
<2.2:分散追跡型グループ署名処理システムの動作>
第2実施形態の分散追跡型グループ署名処理システム2000の動作について、以下説明する。
【0132】
図10~
図11は、分散追跡型グループ署名処理システム2000で実行される処理のシーケンス図である。
【0133】
図12は、分散追跡型グループ署名処理システム2000で実行される処理のフローチャートである。
【0134】
図13、
図14は、分散追跡型グループ署名処理システム2000で実行される鍵生成処理のフローチャートである。
【0135】
図15は、分散追跡型グループ署名処理システム2000で実行される署名処理のフローチャートである。
【0136】
図16は、分散追跡型グループ署名処理システム2000で実行される検証処理のフローチャートである。
【0137】
図17は、分散追跡型グループ署名処理システム2000で実行される追跡処理のフローチャートである。
【0138】
以下では、分散追跡型グループ署名処理システム2000の動作を、シーケンス図とフローチャートとを参照しながら、説明する。
【0139】
なお、説明便宜のため、グループユーザー数N=2とし、追跡機関(追跡装置)の数T=2とし、分散追跡型グループ署名処理システム2000に、グループユーザー用装置UE(d1)、および、グループユーザー用装置UE(d2)が含まれており、追跡装置3-1、および、追跡装置3-2が含まれている場合について、以下説明する。
【0140】
また、説明便宜のため、以下では、グループユーザー用装置UE(d1)(グループユーザーi=1)が、追跡装置3-1を選択して、グループ署名を行う場合について説明する。
【0141】
(2.2.1:セットアップ処理(ステップSA11(
図12)、シーケンス図のSSA1(
図10)))
ステップSA11において、鍵生成装置1は、セットアップ処理(Setup(1
λ))を実行する。具体的には、鍵生成装置1は、セキュリティパラメータλ(λ:自然数)を設定する。
【0142】
そして、鍵生成装置1は、例えば、下記の先行技術文献Aに開示されているのと同様に、下記の通り、多項式時間で処理が可能となるように、セキュリティパラメータλに基づいて、各パラメータを設定する。
(先行技術文献A):
Y. Zhang, Y. Gan, Y. Yin, and H. Jia, Attribute-Based VLR Group Signature Scheme from Lattices: 18th International Conference, ICA3PP 2018, Guangzhou, China, November 15-17, 2018, Proceedings, Part IV, 11 2018, pp. 600-610.
N=2L=poly(λ)
n=poly(λ)
m=ceil(2n×log(q))
q=O(Ln2)
σ=ω(log(m))
β=O(sqrt(Ln))
ceil(x):天井関数(x以上の最小整数を取得する関数)
sqrt(x):xの平方根を取得する関数
なお、O(),ω()は、ランダウの記号である。
【0143】
(2.2.2:鍵生成処理(ステップSA12(
図13、
図14)、シーケンス図のSSA2(
図10)))
ステップSA12において、鍵生成装置1は、鍵生成処理(KeyGen(1
λ,1
N,1
T))を実行する。
【0144】
(ステップSA1201):
ステップSA1201において、鍵生成装置1は、例えば、下記先行技術文献(先行技術文献B)に開示されている方法と同様にして、modified Boyen's signature schemeのための行列A∈Z
n×m
q(Z:整数全体の集合)と、そのトラップドアーT
A∈Z
q
m×mとを生成する。
(先行技術文献B):
D. Micciancio and C. Peikert, “ Trapdoors for lattices: Simpler, tighter, faster, smaller. ” in EUROCRYPT 2012, LNCS, vol. 7237. Springer Berlin Heidelberg, 2012, pp. 700 - 718.
なお、分散追跡型グループ署名処理システム2000では、格子暗号を用いることを前提としており、格子は、整数n、m、素数q、A∈Z
n×m
q、u∈Z
n
qとすると、格子Λは、以下のように定義される。
【数1】
なお、上記数式の上側の格子を「Λ
q
(zero)(A)」と表記することがある。
【0145】
(ステップSA1202):
ステップSA1202において、鍵生成装置1は、例えば、先行技術文献Bに開示されている方法と同様にして、modified Boyen's signature schemeのための検証キー(検証用行列)A0,A1,...,AL∈Zq
n×m(Z:整数全体の集合)と、ベクトルuとを生成する。
【0146】
(ステップSA1203):
ステップSA1203において、鍵生成装置1は、トラップドアー取得処理(GenTrap(n,m,q))を実行し、行列Fi∈Zq
n×mと、そのトラップドアーTFi∈Zq
m×m(i∈{1,...,T})とを取得する。なお、トラップドアー取得処理GenTrap(n,m,q)は、ランダム化アルゴリズムを実現する関数であり、n≧1、q≧2、m=2n×log(q)(十分大きな値のm)が与えられたとき、行列A∈Zq
n×mと、そのトラップドアー行列Rを出力する関数である。
【0147】
(ステップSA1204~SA1209):
ステップSA1204~SA1209(ループ処理(ループ1))において、鍵生成装置1は、全てのグループユーザー(全てのグループユーザー用装置)について、ステップSA1205~ステップSA1208の処理を行う。
【0148】
(ステップSA1205):
ステップSA1205において、鍵生成装置1は、Lビットの文字列dを選択(生成)する。すなわち、鍵生成装置1は、d=d[1]・・・d[L]∈{0,1}Lである文字列dを生成する。なお、Lビットの文字列dが、グループユーザー(グループユーザー用装置)を特定するための文字列(グループユーザーID)となる。
【0149】
(ステップSA1206):
ステップSA1206において、鍵生成装置1は、グループユーザーIDに相当する文字列dを用いて、下記数式に相当する処理を行うことで、行列A
dを算出する。
【数2】
d
i=d[i]
d=d[1]・・・d[L]∈{0,1}
L
(ステップSA1207):
ステップSA1207において、鍵生成装置1は、トラップドアーT
Aと、行列A
dとを用いて、トラップドアーT
Ad取得処理(ExtBasis(T
A,A
d)→T
Ad)を実行することで、トラップドアーT
Adを取得する。
【0150】
なお、ExtBasisは、PPTアルゴリズム(PPT:Probabilistic polynomial time algorithm)を実現する関数であり、入力を、行列B∈Zq
n×m’(最初のm列は、Zq
nの範囲である)、および、格子Λq
(zero)(A)の基底TAとすると、Norm(TB)≦Norm(TA)(Norm(x)は、xのノルムを取得する関数である)を満たす格子Λq
(zero)(B)の基底TBを出力する関数である。
【0151】
(ステップSA1208):
ステップSA1208において、鍵生成装置1は、ssk用データzの取得処理を行う。具体的には、鍵生成装置1は、SamplePre(TAd,Ad,u,σ)→zに相当する処理により、ssk用データzを取得する。なお、Adz=u mod q、NormA(z)≦β(NormA(x)は、xの無限大ノルムを取得する関数)となるようにzを取得する。
【0152】
また、SamplePreは、入力を、行列A∈Zq
n×m、トラップドアーの基底R、ターゲット画像(target image)u∈Zq
n、標準偏差σ=ω(sqrt(log(m)))(sqrt(x)は、xの平方根を取得する関数)とすると、格子Λq
u(A)、標準偏差σで基底される分布において、統計的に無視できる距離内となる分布の中からサンプルされるe∈Zmを出力する関数である。
【0153】
(ステップSA1210):
ステップSA1210において、鍵生成装置1は、上記により取得(生成)した鍵を出力する処理を行う。具体的には、グループ公開鍵gpkを、gpk=(A,A0,A1,...,AL,u)として公開し、追跡用鍵セットtsk=TFiを追跡装置に秘密裏に送付し、グループユーザー署名用鍵ssk=(d,z)を対応するグループユーザー用装置に秘密裏に送付する。なお、本実施形態では、追跡用鍵tsk=TF1が追跡装置3-1に、追跡用鍵tsk=TF2が追跡装置3-2に、送付される。
【0154】
(2.2.3:署名処理(ステップSA13(
図15)、シーケンス図のSSA4(
図10)))
ステップSA13において、グループユーザー用装置UE(d
i)は、署名処理Sign(gpk,ssk[i],M)を実行する。
【0155】
(ステップSA1301):
ステップSA1301において、グループユーザー用装置UE(di)は、セキュリティパラメータλを用いて、ワンタイム署名用の鍵生成処理(OTS.Gen(1λ)→(ovk,osk))を実行し、ワンタイム署名用公開鍵ovk、ワンタイム署名用秘密鍵oskを生成する。
【0156】
(ステップSA1302):
ステップSA1302において、グループユーザー用装置UE(di)は、ユーザーID(=d)の暗号化処理を行う。具体的には、グループユーザー用装置UE(di)は、ワンタイム署名用公開鍵ovkを用いて、ハッシュ関数H1により、暗号化用行列Gを生成する(G=H1(ovk)∈Zq
n×L)。また、グループユーザー用装置UE(di)は、χを整数の集合Z上の確率分布とすると、データsをχnからサンプルすることで取得し、データe1をχmからサンプルすることで取得し、データe2をχLからサンプルすることで取得する。
【0157】
そして、グループユーザー用装置UE(di)は、下記数式に相当する処理により、ユーザーID(=d)の暗号化データを取得する。
c1=FTs+e1
c2=GTs+e2+floor(q/2)d
floor(x):床関数(x以下の最大の整数を取得する関数)
FT:Fの転置行列
GT:Gの転置行列
なお、行列Fは、グループユーザーにより選択された追跡装置3-iを特定する行列である。つまり、F=Fiであり、本実施形態の場合、グループユーザーにより選択された追跡装置が追跡装置3-1であるので、F=Fi=F1である。
【0158】
(ステップSA1303):
ステップSA1303において、グループユーザー用装置UE(d
i)は、ゼロ知識証明Πの生成処理を行う。具体的には、グループユーザー用装置UE(d
i)は、(1)グループ署名をしたグループユーザーが有効なメッセージ-署名ペア(d,z)(Boyen’s署名の有効なメッセージ-署名ペア)を有していること、および、(2)暗号化データc
1,c
2がワンタイム署名用公開鍵ovkによりグループユーザーID(=d)を正しく暗号化したデータであることを証明するためのゼロ知識証明Πを生成する。このために、グループユーザー用装置UE(d
i)は、以下の行列P、ベクトルc、eを取得する。
【数3】
そして、グループユーザー用装置UE(d
i)は、公開データ(A,A
0,...,A
L,u,P,c)、ウィットネス(d,z,e)を用いて、下記先行技術文献Dに記載されている方法(プロトコル)を実行する。
(先行技術文献D):
S. Ling, K. Nguyen, and H. Wang, “ Group signatures from lattices: simpler, tighter, shorter, ring-based,” in PKC 2015, LNCS, vol. 9020. Springer Berlin Heidelberg, 2015, pp. 427 -449.
グループユーザー用装置UE(d
i)は、上記方法(プロトコル)をt(=ω(log(n)))回繰り返し、誤差が無視できる程度になるようにする。
【0159】
そして、上記処理をFiat-Shamirヒューリスティック方式により実行することで、ゼロ知識証明Π=({CMTj}t
j=1,CH,{RSPj}t
j=1)として取得する。
【0160】
なお、チャレンジCHは、
CH=({Chj}t
j=1)=H2(M,{CMTj}t
j=1,c1,c2)
である。なお、H2()は、ハッシュ関数である。
【0161】
(ステップSA1304):
ステップSA1304において、グループユーザー用装置UE(di)は、ワンタイム署名処理を行う。具体的には、グループユーザー用装置UE(di)は、ワンタイム署名用秘密鍵oskを用いて、暗号化データc1,c2,ゼロ知識証明Πについての署名処理(OSign(osk,(c1,c2),Π)→sig)を行い、ワンタイム署名sigを生成する。
【0162】
(ステップSA1305):
ステップSA1305において、グループユーザー用装置UE(di)は、グループ署名Σを(ovk,(c1,c2),Π,sig,F)として、当該グループ署名Σの出力処理を行う。
【0163】
(2.2.4:検証処理(ステップSA14(
図16)、シーケンス図のSSA5(
図11)))
ステップSA14において、検証装置2は、検証処理を実行する。
図11のステップSSA5に示すように、グループユーザー用装置UE(d
i)は、検証装置2に、メッセージM、グループ署名Σ(=(ovk,(c
1,c
2),Π,sig,F))を送信する。
【0164】
(ステップSA1401):
ステップSA1401において、検証装置2は、グループユーザー用装置UE(di)からグループ署名Σ(=(ovk,(c1,c2),Π,sig,F))を受信する。
【0165】
(ステップSA1402):
ステップSA1402において、検証装置2は、ゼロ知識証明Πを解析する処理を行う。具体的には、検証装置2は、ゼロ知識証明Πを({CMTj}t
j=1,CH,{RSPj}t
j=1)として解析し、(Ch1,...,Cht)がH2(M,{CMTj}t
j=1,c1,c2)と等しくない場合、値「0」を返す。
【0166】
(ステップSA1403):
ステップSA1403において、検証装置2は、ゼロ知識証明Πによる検証処理を行う。具体的には、検証装置2は、暗号化用行列Gを、G=H1(ovk)により算出し、さらに、上記(数式3)により、データP,cを算出する。そして、検証装置2は、j={1,...,t}において、公開データ(A,A0,...,AL,u,P,c)を用いて、先行技術文献Dに記載されている方法(プロトコル)の検証処理(CMTj、Chjについて、RSPjが有効かを判断する検証処理)を実行する。そして、いずれかの条件(Condition)が失敗した場合、検証装置2は、値「0」を返す。
【0167】
そして、ステップSA1402、ステップSA1403において、値「0」が返されることがなかった場合、検証装置2は、値「1」(検証が有効であることを示す値)を返す。
【0168】
(2.2.5:追跡処理(ステップSA15(
図17)、シーケンス図のSSA6(
図11)))
ステップSA15において、追跡装置3-iは、追跡処理を実行する。
【0169】
(ステップSA1501):
ステップSA1501において、追跡装置3-iは、暗号化用行列Gの分解処理を行う。具体的には、追跡装置3-iは、
G=[g1|...|gL]=H1(ovk)
として、暗号化用行列Gの要素データg1,...,gLを取得する。
【0170】
(ステップSA1502):
ステップSA1502において、追跡装置3-iは、比較用行列Yの取得処理を行う。具体的には、追跡装置3-iは、i∈{1,...,L}について、SamplePre(tsk=TF,F,g,σ)により、yiをサンプルする。そして、追跡装置3-iは、
Y=[y1|...|yL]
とするとことで、比較用行列Yを取得する。
【0171】
なお、追跡用秘密鍵tsk=TF(TFは、グループユーザーにより選択された追跡装置3-iの追跡用秘密鍵(トラップドアー)である)であり、本実施形態の場合、グループユーザーにより選択された追跡装置は、追跡装置3-1であるので、tsk=TF1である。
【0172】
(ステップSA1503):
ステップSA1503において、追跡装置3-iは、データd’の算出処理を行う。具体的には、追跡装置3-iは、
d’=(d’1,...,d’L)=c2-YTc1
YT:Yの転置行列
に相当する処理を実行することで、データd’を算出する。
【0173】
(ステップSA1504):
ステップSA1504において、追跡装置3-iは、データd’の要素データd’iの判定処理を行う。具体的には、追跡装置3-iは、i∈{1,...,L}において、データd’の要素データd’iがfloor(q/2) mod qよりも「0」に近いならば、di=0とし、データd’の要素データd’iがfloor(q/2) mod qよりも「0」に近くないならば、di=1とする。
【0174】
そして、追跡装置3-iは、上記処理により、グループユーザーのID(=d=(d1,...,dL))を取得する。
【0175】
なお、本実施形態では、グループユーザーにより選択された追跡装置が追跡装置3-1であるので、追跡装置3-1により、上記処理が実行された場合のみ、正しく、グループユーザーのID(=d=(d1,...,dL))を取得することができる。
【0176】
なお、上記では、i=1のグループユーザー(グループユーザーi)が、追跡装置3-1を選択した場合について、説明したが、これに限定されることはなく、例えば、(1)i=1のグループユーザー(グループユーザー1)が、追跡装置3-1を選択し、かつ、(2)i=2のグループユーザー(グループユーザー2)が、追跡装置3-2を選択するようにしてもよい。この場合、分散追跡型グループ署名処理システム2000では、(1)グループユーザーi(i=1)が作成したグループ署名Σについては、追跡装置3-1が追跡処理を実行し、(2)グループユーザーi(i=2)が作成したグループ署名Σについては、追跡装置3-2が追跡処理を実行することになるので、追跡処理を分散させることができる。
【0177】
また、例えば、分散追跡型グループ署名処理システム2000において、(1)第1の部署(例えば、営業部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-1)のみが追跡処理を実行できるようにし、(2)第2の部署(例えば、技術部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-2)のみが追跡処理を実行できるようにし、(3)第3の部署(例えば、人事部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-3)のみが追跡処理を実行できるようにしてもよい。
【0178】
上記で例示したケースを分散追跡型グループ署名処理システム2000にて実現する場合、選択された追跡装置を特定する行列F=Fi(選択された追跡装置のトラップドアーは、トラップドアーTFi)を上記条件に合うように、グループユーザーが選択するようにすればよい。
【0179】
以上のように、暗号方式として格子暗号を使用する分散追跡型グループ署名処理システム2000では、グループユーザーが、複数ある追跡装置の中から所望の追跡装置を選択し、グループユーザーに選択された追跡装置のみが、当該グループユーザーが作成したグループ署名についての追跡処理を実行できる。つまり、分散追跡型グループ署名処理システム2000において、グループユーザーが選択する追跡装置を分散させることで、複数の追跡装置が分散して追跡処理を行うことができる。その結果、分散追跡型グループ署名処理システム1000では、追跡処理を分散させることができ、追跡処理の処理負荷を軽減させることができる。
【0180】
また、分散追跡型グループ署名処理システム2000では、IDベースグループ署名技術(暗号方式として格子暗号を使用)を使用しているので、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0181】
このように、分散追跡型グループ署名処理システム2000では、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関(追跡装置)への処理負荷を軽減し、かつ、処理効率を向上させることができる。
【0182】
[第3実施形態]
次に、第3実施形態について、図面を参照しながら、以下、説明する。なお、上述の実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0183】
<3.1:分散追跡型グループ署名処理システムの構成>
図18は、第3実施形態に係る分散追跡型グループ署名処理システム3000の概略構成図である。
【0184】
第2実施形態に係る分散追跡型グループ署名処理システム3000の構成は、第1実施形態の分散追跡型グループ署名処理システム1000と同様である。第3実施形態では、分散追跡型グループ署名処理システム3000において、属性ベース暗号(ABE:Attribute-based Encryption)を用いて分散追跡型グループ署名処理を行う。
【0185】
<3.2:分散追跡型グループ署名処理システムの動作>
分散追跡型グループ署名処理システム3000の動作について、以下、説明する。
【0186】
図19~
図20は、分散追跡型グループ署名処理システム3000で実行される処理のシーケンス図である。
【0187】
図21は、分散追跡型グループ署名処理システム3000で実行される処理のフローチャートである。
【0188】
図22は、分散追跡型グループ署名処理システム3000で実行される鍵生成処理のフローチャートである。
【0189】
図23は、分散追跡型グループ署名処理システム3000で実行される署名処理のフローチャートである。
【0190】
図24は、分散追跡型グループ署名処理システム3000で実行される検証処理のフローチャートである。
【0191】
図25は、分散追跡型グループ署名処理システム3000で実行される復号鍵生成処理のフローチャートである。
【0192】
図26は、分散追跡型グループ署名処理システム3000で実行される追跡処理のフローチャートである。
【0193】
以下では、分散追跡型グループ署名処理システム3000の動作を、シーケンス図とフローチャートとを参照しながら、説明する。
【0194】
なお、説明便宜のため、グループユーザー数N=2とし、追跡機関(追跡装置)の数T=2とし、分散追跡型グループ署名処理システム3000に、グループユーザー用装置UE(d1)、および、グループユーザー用装置UE(d2)が含まれており、追跡装置3-1、および、追跡装置3-2が含まれている場合について、以下説明する。
【0195】
また、説明便宜のため、以下では、グループユーザー用装置UE(d1)(グループユーザーi=1)が、追跡装置についての属性として、属性Aωを選択して、グループ署名を行う場合について説明する。そして、属性Aωを満たす(有している)追跡装置が追跡装置3-1であるとして説明する。
【0196】
(3.2.1:セットアップ処理(ステップSB11(
図21)、シーケンス図のSSB1(
図19)))
ステップSA11において、鍵生成装置1は、セットアップ処理(Setup(1
λ))を実行する。具体的には、鍵生成装置1は、セキュリティパラメータλ(λ:自然数)を設定する。
【0197】
また、鍵生成装置1は、グループユーザーの最大数N(本実施形態では、N=2)、および、追跡装置の属性Att(追跡装置が備えうる全ての属性の集合Att)を設定する。
【0198】
(3.2.2:鍵生成処理(ステップSB12(
図22)、シーケンス図のSSB2(
図19)))
ステップSB12において、鍵生成装置1は、鍵生成処理(KeyGen(1
λ,1
N,1
T))を実行する。
【0199】
(ステップSB1201~SB1202):
ステップSB1201において、鍵生成装置1は、セキュリティパラメータλに基づいて、ゼロ知識証明処理用の共通ステートメントcrsを生成する(ZK.Gen(1λ)→crsに相当する処理を実行する)。
【0200】
ステップS1202Bにおいて、鍵生成装置1は、セキュリティパラメータλに基づいて、グループ管理用鍵ベア、すなわち、グループ管理用公開鍵pksおよびグループ管理用秘密鍵sksを生成する(DS.Gen(1λ)→pks,sksに相当する処理を実行する)。
【0201】
(ステップSB1203~SB1206):
ステップSB1203~SB1206(ループ処理(ループ1))において、鍵生成装置1は、セキュリティパラメータλに基づいて、グループユーザーi用の鍵ペアを生成する処理、すなわち、グループユーザーi用公開鍵pkiおよび秘密鍵skiを生成する(DS.Gen(1λ)→pki,skiに相当する処理を実行する)処理を行う(ステップSB1204)。
【0202】
また、鍵生成装置1は、グループ管理用秘密鍵sksを用いて、グループユーザーiのグループユーザーiと公開鍵pkiのセットデータ<i,pki>に対して署名処理(DS.Sign(sks,<i,pki>→certi))を行うことで、グループユーザーi用の証明certiを生成する(ステップSB1205)。
【0203】
鍵生成装置1は、上記ステップSB1204、SB1205の処理を、グループユーザー数に相当する回数だけ繰り返し実行することで、全てのグループユーザーの鍵ペア(pki,ski)、証明(certi)を取得する。
【0204】
(ステップSB1207):
ステップSB1207において、鍵生成装置1は、生成した鍵を出力する処理を行う。具体的には、鍵生成装置1は、共通ステートメントcrs、グループ管理用公開鍵pks,追跡装置の属性Attを、グループ公開鍵gpk(=(crs,pks,Att))として公開する。
【0205】
また、鍵生成装置1は、マスター秘密鍵mskを、msk=sksとして秘密裏に保持する。また、鍵生成装置1は、グループユーザーi(グループユーザー用装置UE(di))に、グループユーザーi用の秘密鍵skiと、証明certiとを秘密裏に送付し、グループユーザーi(グループユーザー用装置UE(di))は、秘密鍵skiと、証明certiとを保持する。なお、グループユーザーi用のデータ(の集合)(i,pki,ski,certi)をssk(={(i,pki,ski,certi)}i∈{1,...,N})と表記する。
【0206】
(3.2.3:署名処理(ステップSB13(
図23)、シーケンス図のSSB4(
図19)))
ステップSB13において、グループユーザー用装置UE(d
i)は、署名処理(Sign(gpk,ssk[i],M,Aω))を実行する。
【0207】
(ステップSB1301):
ステップSB1301において、グループユーザー用装置UE(di)は、メッセージM(グループ署名の対象データ)に対して、グループユーザーiの秘密鍵skiを用いて署名処理(DS.Sign(ski,M)→s)を行い、署名sを生成する。
【0208】
(ステップSB1302):
ステップSB1302において、グループユーザー用装置UE(di)は、乱数r({0,1}→r)を設定する。
【0209】
また、グループユーザー用装置UE(di)は、追跡装置について選択した属性を選択属性Aω(Aω∈Att)として設定する。
【0210】
そして、グループユーザー用装置UE(di)は、乱数rと、選択属性Aωとを用いて、セットデータ<i,pki,certi,s>を暗号化し、暗号化署名データCを取得する(CP-ABE.Enc(gpk,Aω,<i,pki,certi,s>;r>→C))。
【0211】
なお、CP-ABEは、パラメータparam、メッセージM、アクセス属性Wを入力とし、暗号化データCを出力する関数である。
【0212】
(ステップSB1303):
ステップSB1303において、グループユーザー用装置UE(di)は、署名データのゼロ知識証明処理を行う。具体的には、グループユーザー用装置UE(di)は、共通ステートメントcrsを用いて、
ステートメントx=<pks,Aω,M,C>、
ウィットネスw=<i,pki,certi,s,r>
として、処理ZK.Prv(crs,x,w)を実行し、ゼロ知識証明Πを取得する。
【0213】
(ステップSB1304):
ステップSB1304において、グループユーザー用装置UE(di)は、セキュリティパラメータλを用いて、ワンタイム署名用の鍵生成処理(OTS.Gen(1λ)→(ovk,osk))を実行し、ワンタイム署名用公開鍵ovk、ワンタイム署名用秘密鍵oskを生成する。
【0214】
(ステップSB1305):
ステップSB1305において、グループユーザー用装置UE(di)は、ワンタイム署名処理を行う。具体的には、グループユーザー用装置UE(di)は、ワンタイム署名用秘密鍵oskを用いて、セットデータ<C,Π>についての署名処理(OTS.Sign(osk,<C,Π>)→σ)を行い、ワンタイム署名σを生成する。
【0215】
(3.2.4:検証処理(ステップSB14(
図24)、シーケンス図のSSB5(
図20)))
ステップSB14において、検証装置2は、検証処理を実行する。
図20のステップSSB5に示すように、グループユーザー用装置UE(d
i)は、検証装置2に、メッセージM、グループ署名Σ(=(ovk,C,Π,Aω))、および、ワンタイム署名σを送信する。
【0216】
(ステップSB1401):
ステップSB1401において、検証装置2は、グループユーザー用装置UE(di)からグループ署名Σ(=(ovk,C,Π,Aω))を受信する。
【0217】
(ステップSB1402):
ステップSB1402において、検証装置2は、ワンタイム公開鍵ovkを用いて、セットデータ<C,Π>がワンタイム署名σについて有効か否かを判定する検証処理OTS.Verify(ovk,<C,Π>,σ)を実行する。なお、検証処理OTS.Verifyは、ワンタイム署名がメッセージについて有効であるとき、「1」を出力し、ワンタイム署名がメッセージについて有効ではないとき、「0」を出力する。
【0218】
そして、検証装置2は、検証処理OTS.Verify(ovk,<C,Π>,σ)による判定結果が「0」である場合、処理をステップSB1405に進め、判定結果が「1」である場合(「0」ではない場合)、処理をステップSB1403に進める。
【0219】
(ステップSB1403):
ステップSB1403において、検証装置2は、セットデータ<pks,Aω,M,C>のゼロ知識検証処理を行う。具体的には、検証装置2は、共通ステートメントcrsを用いて、処理ZK.Verify(crs,<pks,Aω,M,C,Π)を実行する。
【0220】
そして、検証装置2は、処理ZK.Verify(crs,<pks,Aω,M,C,Π)による判定結果が「0」である場合、処理をステップSB1405に進め、判定結果が「1」である場合(「0」ではない場合)、処理をステップSB1404に進める。
【0221】
(ステップSB1404):
ステップSB1404において、検証装置2は、グループ署名Σ(=(ovk,C,Π,Aω))が「無効」であると判定する。
【0222】
(ステップSB1405):
ステップSB1405において、検証装置2は、グループ署名Σ(=(ovk,C,Π,Aω))が「有効」であると判定する。
【0223】
(3.2.5:復号鍵生成処理(ステップSB15(
図25)、シーケンス図のSSB6(
図20)))
ステップSB15において、鍵生成装置1は、復号鍵生成処理を実行する。
【0224】
(ステップSB1501):
ステップSB1501において、鍵生成装置1は、セキュリティパラメータλに基づいて、グループ公開鍵gpk、マスター秘密鍵msk、および、追跡用属性Aτから、追跡用秘密鍵を生成する処理(CP-ABE.Gen(gpk,msk,Aτ)→ske)を実行し、追跡用秘密鍵skeを取得する。なお、追跡用属性Aτは、追跡処理を許可するための属性であり、属性Aωが、追跡用属性Aτを満たす場合(属性Aωに含まれる属性データが、全て追跡用属性Aτに含まれる属性データに存在する場合)、追跡処理が許可される(適切に復号できる)。
【0225】
また、CP-ABEは、パラメータparam、マスター秘密鍵msk、属性Attを入力として、秘密鍵skを出力する関数である。
【0226】
(ステップSB1502):
ステップSB1502において、鍵生成装置1は、追跡用秘密鍵tskを、上記で取得した追跡用秘密鍵skeとする出力処理を行う。つまり、鍵生成装置1は、追跡用秘密鍵tsk(=ske)を、追跡用属性Aτを満たす追跡装置に秘密裏に送付する。
【0227】
(3.2.5:追跡処理(ステップSB16(
図26)、シーケンス図のSSB8(
図20)))
ステップSB16において、追跡装置3-iは、追跡処理を実行する。
【0228】
(ステップSB1601):
ステップSB1601において、追跡装置3-iは、追跡用秘密鍵ske’を用いて、暗号化署名データCを復号する。
【0229】
このとき、追跡装置3-iが、グループユーザーiが選択した追跡装置の属性を満たす属性を有している場合(すなわち、選択属性Aωが属性Aτを満たす場合)、追跡装置3-i(本実施形態では、追跡装置3-1)の追跡用秘密鍵ske’は、追跡用属性Aτを満たす場合に復号可能な追跡用秘密鍵tsk(=ske)であるため、暗号化署名データCを正しく復号できる。つまり、追跡装置3-iは、復号処理(CP-ABE.Dec(ske’,C))により、セットデータ<i,pki,certi,s>を取得できる(CP-ABE.Dec(ske’,C)→<i,pki,certi,s>)。
【0230】
一方、追跡装置3-iが、グループユーザーiが選択した追跡装置の属性を満たす属性を有していない場合(すなわち、選択属性Aωが属性Aτを満たさない場合)、追跡装置3-iの追跡用秘密鍵ske’は、追跡用属性Aτを満たす場合に復号可能な追跡用秘密鍵tsk(=ske)ではないため、暗号化署名データCを正しく復号することはできない。
【0231】
(ステップSB1602):
ステップSB1602において、グループユーザーiが選択した追跡装置の属性を満たす属性を有している追跡装置3-i(本実施形態では、追跡装置3-1)は、ステップS1501で復号されたデータからグループユーザーiのID(=i)を特定する。これにより、グループユーザーiが選択した追跡装置の属性を満たす属性を有する追跡装置のみが、グループ署名Σに対して追跡処理を行い、当該グループ署名Σを作成したグループユーザーi(本実施形態では、グループユーザーID=1(i=1)のグループユーザー)を特定することができる。
【0232】
なお、上記では、i=1のグループユーザー(グループユーザーi)が選択した追跡装置の属性を満たす属性(選択属性Aω)を有している追跡装置を追跡装置3-1とした場合について、説明したが、これに限定されることはなく、例えば、(1)i=1のグループユーザー(グループユーザー1)が選択した追跡装置の属性を満たす属性(選択属性Aω)を有している追跡装置が、追跡装置3-1であり、かつ、(2)i=2のグループユーザー(グループユーザー2)が選択した追跡装置の属性を満たす属性(選択属性Aω’)を有している追跡装置が追跡装置3-2であってもよい。この場合、分散追跡型グループ署名処理システム3000では、(1)グループユーザーi(i=1)が作成したグループ署名Σについては、追跡装置3-1が追跡処理を実行し、(2)グループユーザーi(i=2)が作成したグループ署名Σについては、追跡装置3-2が追跡処理を実行することになるので、追跡処理を分散させることができる。
【0233】
また、例えば、分散追跡型グループ署名処理システム1000において、グループユーザーの所属部署により選択属性Aω(追跡処理を可能とする属性Aω)を決定し、(1)第1の部署(例えば、営業部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-1)のみが追跡処理を実行できるようにし、(2)第2の部署(例えば、技術部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-2)のみが追跡処理を実行できるようにし、(3)第3の部署(例えば、人事部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-3)のみが追跡処理を実行できるようにしてもよい。
【0234】
上記で例示したケースを分散追跡型グループ署名処理システム3000にて実現する場合、選択属性Aωを上記条件に合うように、グループユーザーが選択するようにすればよい。
【0235】
以上のように、分散追跡型グループ署名処理システム3000では、グループユーザーが、追跡装置が満たすべき属性を選択し、グループユーザーにより選択された属性を有する追跡装置のみが、当該グループユーザーが作成したグループ署名についての追跡処理を実行できる。つまり、分散追跡型グループ署名処理システム3000において、グループユーザーが選択する追跡装置を分散させることで、複数の追跡装置が分散して追跡処理を行うことができる。その結果、分散追跡型グループ署名処理システム3000では、追跡処理を分散させることができ、追跡処理の処理負荷を軽減させることができる。
【0236】
また、分散追跡型グループ署名処理システム3000では、属性ベースグループ署名技術を使用しているので、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0237】
このように、分散追跡型グループ署名処理システム3000では、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関(追跡装置)への処理負荷を軽減し、かつ、処理効率を向上させることができる。
【0238】
[第4実施形態]
次に、第4実施形態について、図面を参照しながら、以下、説明する。なお、上述の実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0239】
<4.1:分散追跡型グループ署名処理システムの構成>
図27は、第4実施形態に係る分散追跡型グループ署名処理システム4000の概略構成図である。
【0240】
第4実施形態に係る分散追跡型グループ署名処理システム2000の構成は、第3実施形態の分散追跡型グループ署名処理システム1000と同様である。第3実施形態では、分散追跡型グループ署名処理システム3000において、属性ベース暗号(ABE:Attribute-based Encryption)を用いる場合の一般的な構成(汎用的な構成)、機能について説明した。第4実施形態では、分散追跡型グループ署名処理システム4000において、属性ベース暗号として、格子暗号(Lattice cryptography)を用いる場合の具体的な処理について説明する。
【0241】
<4.2:分散追跡型グループ署名処理システムの動作>
第4実施形態の分散追跡型グループ署名処理システム4000の動作について、以下説明する。
【0242】
図28~
図29は、分散追跡型グループ署名処理システム4000で実行される処理のシーケンス図である。
【0243】
図30は、分散追跡型グループ署名処理システム4000で実行される処理のフローチャートである。
【0244】
図31、
図32は、分散追跡型グループ署名処理システム4000で実行される鍵生成処理のフローチャートである。
【0245】
図33は、分散追跡型グループ署名処理システム4000で実行される署名処理のフローチャートである。
【0246】
図34は、分散追跡型グループ署名処理システム4000で実行される検証処理のフローチャートである。
【0247】
図35は、分散追跡型グループ署名処理システム4000で実行される復号鍵生成処理のフローチャートである。
【0248】
図36は、分散追跡型グループ署名処理システム2000で実行される追跡処理のフローチャートである。
【0249】
以下では、分散追跡型グループ署名処理システム4000の動作を、シーケンス図とフローチャートとを参照しながら、説明する。
【0250】
なお、説明便宜のため、グループユーザー数N=2とし、追跡機関(追跡装置)の数T=2とし、分散追跡型グループ署名処理システム2000に、グループユーザー用装置UE(d1)、および、グループユーザー用装置UE(d2)が含まれており、追跡装置3-1、および、追跡装置3-2が含まれている場合について、以下説明する。
【0251】
また、説明便宜のため、以下では、グループユーザー用装置UE(d1)(グループユーザーi=1)が、追跡装置についての属性として、属性Aωを選択して、グループ署名を行う場合について説明する。そして、属性Aωを満たす(有している)追跡装置が追跡装置3-1であるとして説明する。
【0252】
(4.2.1:セットアップ処理(ステップSC11(
図30)、シーケンス図のSSC1(
図28)))
ステップSC11において、鍵生成装置1は、セットアップ処理(Setup(1
λ))を実行する。具体的には、鍵生成装置1は、セキュリティパラメータλ(λ:自然数)を設定する。
【0253】
そして、鍵生成装置1は、例えば、先行技術文献Aに開示されているのと同様に、下記の通り、多項式時間で処理が可能となるように、セキュリティパラメータλに基づいて、各パラメータを設定する。
N=2L=poly(λ)
n=poly(λ)
m=ceil(2n×log(q))
q=O(Ln2)
σ=ω(log(m))
β=O(sqrt(Ln))
ceil(x):天井関数(x以上の最小整数を取得する関数)
sqrt(x):xの平方根を取得する関数
なお、O(),ω()は、ランダウの記号である。
【0254】
(4.2.2:鍵生成処理(ステップSC12(
図31、
図32)、シーケンス図のSSC2(
図28)))
ステップSC12において、鍵生成装置1は、鍵生成処理(KeyGen(1
λ,1
N,Att))を実行する。
【0255】
(ステップSC1201):
ステップSC1201において、鍵生成装置1は、例えば、先行技術文献Bに開示されている方法と同様にして、modified Boyen's signature schemeのための行列A∈Zn×m
q(Z:整数全体の集合)と、そのトラップドアーTA∈Zq
m×mとを生成する。
【0256】
なお、分散追跡型グループ署名処理システム4000では、格子暗号を用いることを前提としており、格子は、整数n、m、素数q、A∈Z
n×m
q、u∈Z
n
qとすると、格子Λは、以下のように定義される。
【数4】
なお、上記数式の上側の格子を「Λ
q
(zero)(A)」と表記することがある。
【0257】
(ステップSC1202):
ステップSC1202において、鍵生成装置1は、例えば、先行技術文献Bに開示されている方法と同様にして、modified Boyen's signature schemeのための検証キー(検証用行列)A0,A1,...,AL∈Zq
n×m(Z:整数全体の集合)と、ベクトルu∈Zq
nとを生成する。
【0258】
(ステップSC1203):
ステップSC1203において、鍵生成装置1は、ランダム行列B∈Zq
n×mを取得する。
【0259】
(ステップSC1204~SC1209):
ステップSC1204~SC1209(ループ処理(ループ1))において、鍵生成装置1は、全てのグループユーザー(全てのグループユーザー用装置)について、ステップSC1205~ステップSC1208の処理を行う。
【0260】
(ステップSC1205):
ステップSC1205において、鍵生成装置1は、Lビットの文字列dを選択(生成)する。すなわち、鍵生成装置1は、d=d[1]・・・d[L]∈{0,1}Lである文字列dを生成する。なお、Lビットの文字列dが、グループユーザー(グループユーザー用装置)を特定するための文字列(グループユーザーID)となる。
【0261】
(ステップSC1206):
ステップSC1206において、鍵生成装置1は、グループユーザーIDに相当する文字列dを用いて、下記数式に相当する処理を行うことで、行列A
dを算出する。
【数5】
d
i=d[i]
d=d[1]・・・d[L]∈{0,1}
L
(ステップSC1207):
ステップSC1207において、鍵生成装置1は、トラップドアーT
Aと、行列A
dとを用いて、トラップドアーT
Ad取得処理(ExtBasis(T
A,A
d)→T
Ad)を実行することで、トラップドアーT
Adを取得する。
【0262】
なお、ExtBasisは、PPTアルゴリズム(PPT:Probabilistic polynomial time algorithm)を実現する関数であり、入力を、行列B∈Zq
n×m’(最初のm列は、Zq
nの範囲である)、および、格子Λq
(zero)(A)の基底TAとすると、Norm(TB)≦Norm(TA)(Norm(x)は、xのノルムを取得する関数である)を満たす格子Λq
(zero)(B)の基底TBを出力する関数である。
【0263】
(ステップSC1208):
ステップSC1208において、鍵生成装置1は、ssk用データzの取得処理を行う。具体的には、鍵生成装置1は、SamplePre(TAd,Ad,u,σ)→zに相当する処理により、ssk用データzを取得する。なお、Adz=u mod q、NormA(z)≦β(NormA(x)は、xの無限大ノルムを取得する関数)となるようにzを取得する。
【0264】
また、SamplePreは、入力を、行列A∈Zq
n×m、トラップドアーの基底R、ターゲット画像(target image)u∈Zq
n、標準偏差σ=ω(sqrt(log(m)))(sqrt(x)は、xの平方根を取得する関数)とすると、格子Λq
u(A)、標準偏差σで基底される分布において、統計的に無視できる距離内となる分布の中からサンプルされるe∈Zmを出力する関数である。
【0265】
(ステップSC1210):
ステップSC1210において、鍵生成装置1は、上記により取得(生成)した鍵を出力する処理を行う。具体的には、グループ公開鍵gpkを、gpk=((A,A0,A1,...,AL,u),B)として公開する。
【0266】
また、鍵生成装置1は、マスター秘密鍵mskを、msk=sksとして秘密裏に保持する。
【0267】
また、鍵生成装置1は、グループユーザー署名用鍵ssk=(d,z)を対応するグループユーザー用装置に秘密裏に送付する。
【0268】
(4.2.3:署名処理(ステップSC13(
図33)、シーケンス図のSSC4(
図28)))
ステップSC13において、グループユーザー用装置UE(d
i)は、署名処理Sign(gpk,ssk[i],M,Aω)を実行する。
【0269】
(ステップSC1301):
ステップSC1301において、グループユーザー用装置UE(di)は、セキュリティパラメータλを用いて、ワンタイム署名用の鍵生成処理(OTS.Gen(1λ)→(ovk,osk))を実行し、ワンタイム署名用公開鍵ovk、ワンタイム署名用秘密鍵oskを生成する。
【0270】
(ステップSC1302):
ステップSC1302において、グループユーザー用装置UE(di)は、ユーザーID(=d)の暗号化処理を行う。具体的には、グループユーザー用装置UE(di)は、ワンタイム署名用公開鍵ovkを用いて、ハッシュ関数H1により、暗号化用行列Gを生成する(G=H1(ovk)∈Zq
n×L)。
【0271】
また、グループユーザー用装置UE(d
i)は、属性Aω=u
i,j(u
i,jは、属性(の集合)Aωに含まれる属性(個別の属性)を示すデータである)について、下記数式に相当する処理を実行することで、行列F
ωを取得する。
【数6】
なお、v
i,jは、属性Aωに含まれる属性(個別の属性)を示すデータである。
【0272】
また、グループユーザー用装置UE(di)は、χを整数の集合Z上の確率分布とすると、データsをχnからサンプルすることで取得し、データe1をχmからサンプルすることで取得し、データe2をχLからサンプルすることで取得する。
【0273】
そして、グループユーザー用装置UE(di)は、下記数式に相当する処理により、ユーザーID(=d)の暗号化データを取得する。
c1=Fω
Ts+e1
c2=GTs+e2+floor(q/2)d
floor(x):床関数(x以下の最大の整数を取得する関数)
Fω
T:Fωの転置行列
GT:Gの転置行列
なお、行列Fωは、グループユーザーにより選択された追跡装置の属性を有する追跡装置を特定するための行列である。
【0274】
(ステップSC1303):
ステップSC1303において、グループユーザー用装置UE(d
i)は、ゼロ知識証明Πの生成処理を行う。具体的には、グループユーザー用装置UE(d
i)は、(1)グループ署名をしたグループユーザーが有効なメッセージ-署名ペア(d,z)(Boyen’s署名の有効なメッセージ-署名ペア)を有していること、および、(2)暗号化データc
1,c
2がワンタイム署名用公開鍵ovkによりグループユーザーID(=d)を正しく暗号化したデータであることを証明するためのゼロ知識証明Πを生成する。このために、グループユーザー用装置UE(d
i)は、以下の行列P、ベクトルc、eを取得する。
【数7】
そして、グループユーザー用装置UE(d
i)は、公開データ(A,A
0,...,A
L,u,B,P,c)、ウィットネス(d,z,e)を用いて、下記先行技術文献Dに記載されている方法(プロトコル)を実行する。
(先行技術文献D):
S. Ling, K. Nguyen, and H. Wang, “ Group signatures from lattices: simpler, tighter, shorter, ring-based,” in PKC 2015, LNCS, vol. 9020. Springer Berlin Heidelberg, 2015, pp. 427 -449.
グループユーザー用装置UE(d
i)は、上記方法(プロトコル)をt(=ω(log(n)))回繰り返し、誤差が無視できる程度になるようにする。
【0275】
そして、上記処理をFiat-Shamirヒューリスティック方式により実行することで、ゼロ知識証明Π=({CMTj}t
j=1,CH,{RSPj}t
j=1)として取得する。
【0276】
なお、チャレンジCHは、
CH=({Chj}t
j=1)=H2(M,{CMTj}t
j=1,c1,c2)
である。なお、H2()は、ハッシュ関数である。
【0277】
(ステップSC1304):
ステップSC1304において、グループユーザー用装置UE(di)は、ワンタイム署名処理を行う。具体的には、グループユーザー用装置UE(di)は、ワンタイム署名用秘密鍵oskを用いて、暗号化データc1,c2,ゼロ知識証明Πについての署名処理(OSign(osk,(c1,c2),Π)→sig)を行い、ワンタイム署名sigを生成する。
【0278】
(ステップSC1305):
ステップSC1305において、グループユーザー用装置UE(di)は、グループ署名Σを(ovk,(c1,c2),Π,sig,Aω)として、当該グループ署名Σの出力処理を行う。
【0279】
(4.2.4:検証処理(ステップSC14(
図34)、シーケンス図のSSC5(
図29)))
ステップSC14において、検証装置2は、検証処理を実行する。
図29のステップSSA5に示すように、グループユーザー用装置UE(d
i)は、検証装置2に、メッセージM、グループ署名Σ(=(ovk,(c
1,c
2),Π,sig,Aω))を送信する。
【0280】
(ステップSC1401):
ステップSC1401において、検証装置2は、グループユーザー用装置UE(di)から受信したグループ署名Σ(=(ovk,(c1,c2),Π,sig,Aω))に含まれる属性Aωを解析する処理を行う。そして、検証装置2は、解析の結果、Aω∈Attを満たさないと判定した場合、検証処理が失敗したと判定する。一方、検証処理は、解析の結果、Aω∈Attを満たすと判定した場合、処理をステップSC1402に進める。
【0281】
(ステップSC1402):
ステップSC1402において、検証装置2は、グループユーザー用装置UE(di)からグループ署名Σ(=(ovk,(c1,c2),Π,sig,Aω))を受信する。
【0282】
(ステップSC1403):
ステップSC1403において、検証装置2は、ゼロ知識証明Πを解析する処理を行う。具体的には、検証装置2は、ゼロ知識証明Πを({CMTj}t
j=1,CH,{RSPj}t
j=1)として解析し、(Ch1,...,Cht)がH2(M,{CMTj}t
j=1,c1,c2)と等しくない場合、値「0」を返す。
【0283】
(ステップSC1404):
ステップSC1404において、検証装置2は、ゼロ知識証明Πによる検証処理を行う。具体的には、検証装置2は、暗号化用行列Gを、G=H1(ovk)により算出し、さらに、上記(数式3)により、データP,cを算出する。そして、検証装置2は、j={1,...,t}において、公開データ(A,A0,...,AL,u,B,P,c)を用いて、先行技術文献Dに記載されている方法(プロトコル)の検証処理(CMTj、Chjについて、RSPjが有効かを判断する検証処理)を実行する。そして、いずれかの条件(Condition)が失敗した場合、検証装置2は、値「0」を返す。
【0284】
そして、ステップSC1403、ステップSC1404において、値「0」が返されることがなかった場合、検証装置2は、値「1」(検証が有効であることを示す値)を返す。
【0285】
(4.2.5:復号鍵生成処理(ステップSC15(
図35)、シーケンス図のSSC6(
図29)))
ステップSC15において、鍵生成装置1は、復号鍵生成処理を実行する。
【0286】
(ステップSC1501):
ステップSC1501において、鍵生成装置1は、下記数式に相当する処理を実行し、行列Fを取得する。
【数8】
(ステップSC1502):
ステップSC1502において、鍵生成装置1は、追跡用トラップドアーの取得処理を行う。具体的には、鍵生成装置1は、トラップドアーT
Aと、行列F
iとを用いて、トラップドアーT
F取得処理(ExtBasis(T
A,F
i)→T
F)を実行することで、トラップドアーT
Fを取得する。
【0287】
なお、ExtBasisは、PPTアルゴリズム(PPT:Probabilistic polynomial time algorithm)を実現する関数であり、入力を、行列B∈Zq
n×m’(最初のm列は、Zq
nの範囲である)、および、格子Λq
(zero)(A)の基底TAとすると、Norm(TB)≦Norm(TA)(Norm(x)は、xのノルムを取得する関数である)を満たす格子Λq
(zero)(B)の基底TBを出力する関数である。
【0288】
上記により取得されたトラップドアーTFは、グループユーザーが選択した追跡装置についての属性を満たす場合に、グループ署名Σを正常に復号できる秘密鍵となる。
【0289】
(ステップSC1503):
ステップSC1503において、鍵生成装置1は、上記により取得(生成)した鍵を出力する処理を行う。つまり、鍵生成装置1は、追跡用トラップドアーTFを、追跡用属性Aτを満たす追跡装置に秘密裏に送付する。
【0290】
(4.2.6:追跡処理(ステップSC16(
図36)、シーケンス図のSSC8(
図29)))
ステップSC16において、追跡装置3-iは、追跡処理を実行する。なお、追跡装置3-iは、属性Aωが追跡用属性Aτを満たすか否かを判定する。属性Aωが追跡用属性Aτを満たさない場合、追跡装置3-iは、追跡処理を終了する(この場合、正常に追跡処理ができないので、追跡処理を終了する)。一方、属性Aωが追跡用属性Aτを満たす場合、追跡装置3-iは、ステップSC1601以下の処理を行う。
【0291】
(ステップSC1601):
ステップSC1601において、追跡装置3-iは、暗号化用行列Gの分解処理を行う。具体的には、追跡装置3-iは、
G=[g1|...|gL]=H1(ovk)
として、暗号化用行列Gの要素データg1,...,gLを取得する。
【0292】
(ステップSC1602):
ステップSC1602において、追跡装置3-iは、比較用行列Yの取得処理を行う。具体的には、追跡装置3-iは、i∈{1,...,L}について、SamplePre(tsk=TF,F,g,σ)により、yiをサンプルする。そして、追跡装置3-iは、
Y=[y1|...|yL]
とするとことで、比較用行列Yを取得する。
【0293】
なお、行列Fは、グループユーザーにより選択された属性を有する追跡装置(本実施形態の場合、追跡装置3-1)を特定するための行列である。
【0294】
(ステップSC1503):
ステップSC1503において、追跡装置3-iは、データd’の算出処理を行う。具体的には、追跡装置3-iは、
d’=(d’1,...,d’L)=c2-YTc1
YT:Yの転置行列
に相当する処理を実行することで、データd’を算出する。
【0295】
(ステップSC1504):
ステップSC1504において、追跡装置3-iは、データd’の要素データd’iの判定処理を行う。具体的には、追跡装置3-iは、i∈{1,...,L}において、データd’の要素データd’iがfloor(q/2) mod qよりも「0」に近いならば、di=0とし、データd’の要素データd’iがfloor(q/2) mod qよりも「0」に近くないならば、di=1とする。
【0296】
そして、追跡装置3-iは、上記処理により、グループユーザーのID(=d=(d1,...,dL))を取得する。
【0297】
なお、本実施形態では、グループユーザーにより選択された属性を有する追跡装置が追跡装置3-1であるので、追跡装置3-1により、上記処理が実行された場合のみ、正しく、グループユーザーのID(=d=(d1,...,dL))を取得することができる。
【0298】
なお、上記では、i=1のグループユーザー(グループユーザーi)が選択した追跡装置の属性を満たす属性(選択属性Aω)を有している追跡装置を追跡装置3-1とした場合について、説明したが、これに限定されることはなく、例えば、(1)i=1のグループユーザー(グループユーザー1)が選択した追跡装置の属性を満たす属性(選択属性Aω)を有している追跡装置が、追跡装置3-1であり、かつ、(2)i=2のグループユーザー(グループユーザー2)が選択した追跡装置の属性を満たす属性(選択属性Aω’)を有している追跡装置が追跡装置3-2であってもよい。この場合、分散追跡型グループ署名処理システム4000では、(1)グループユーザーi(i=1)が作成したグループ署名Σについては、追跡装置3-1が追跡処理を実行し、(2)グループユーザーi(i=2)が作成したグループ署名Σについては、追跡装置3-2が追跡処理を実行することになるので、追跡処理を分散させることができる。
【0299】
また、例えば、分散追跡型グループ署名処理システム1000において、グループユーザーの所属部署により選択属性Aω(追跡処理を可能とする属性Aω)を決定し、(1)第1の部署(例えば、営業部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-1)のみが追跡処理を実行できるようにし、(2)第2の部署(例えば、技術部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-2)のみが追跡処理を実行できるようにし、(3)第3の部署(例えば、人事部)に所属するグループユーザーによるグループ署名は、当該部署用の追跡装置(例えば、追跡装置3-3)のみが追跡処理を実行できるようにしてもよい。
【0300】
上記で例示したケースを分散追跡型グループ署名処理システム4000にて実現する場合、選択属性Aωを上記条件に合うように、グループユーザーが選択するようにすればよい。
【0301】
以上のように、分散追跡型グループ署名処理システム4000(暗号方式として格子暗号を使用)では、グループユーザーが、追跡装置が満たすべき属性を選択し、グループユーザーにより選択された属性を有する追跡装置のみが、当該グループユーザーが作成したグループ署名についての追跡処理を実行できる。つまり、分散追跡型グループ署名処理システム4000において、グループユーザーが選択する追跡装置を分散させることで、複数の追跡装置が分散して追跡処理を行うことができる。その結果、分散追跡型グループ署名処理システム4000では、追跡処理を分散させることができ、追跡処理の処理負荷を軽減させることができる。
【0302】
また、分散追跡型グループ署名処理システム4000では、属性ベースグループ署名技術を使用しているので、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現することができる。
【0303】
このように、分散追跡型グループ署名処理システム4000では、(1)グループユーザーの匿名性(User Anonymity)、および、(2)グループユーザーの追跡可能性(User Traceability)の両方を実現しつつ、追跡処理における追跡機関(追跡装置)への処理負荷を軽減し、かつ、処理効率を向上させることができる。
【0304】
[他の実施形態]
また、上記実施形態で説明した分散追跡型グループ署名処理システム1000,2000、3000、4000、鍵生成装置1、グループユーザー用装置UE(di)、検証装置2、および、追跡装置3-1~3-Tにおいて、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。
【0305】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0306】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0307】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0308】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0309】
例えば、上記実施形態の各機能部を、ソフトウェアにより実現する場合、
図37に示したハードウェア構成(例えば、CPU(GPUを含む)、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0310】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【0311】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0312】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0313】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【0314】
1000、2000、3000、4000 分散追跡型グループ署名処理システム
1 鍵生成装置
2 検証装置
3-1~3-T 追跡装置
UE(d1)~UE(dn) グループユーザー用装置