• 検索結果がありません。

5.3 匿名性を強化した証明書方式

5.3.2 プロトコル

プロトコルCT+では,id(Oi,G)を検証者に与え,

C(U,Oi)E(U,Oi) ≡gGIxU

hGIs(U,Oi)

dGIid(Oi,G)

fGI (modnGI)

P(U,Oj) ≡gGJxUhGJs(U,Oj) (mod nGJ)

を同時にみたす,C(U,Oi), E(U,Oi), xU, s(U,Oi), s(U,Oj)の知識証明をおこなう ことで,P(U,Oj)に対応するユーザのOiへの登録を示すことができ,プロ トコルCTではid(Oi,G)を検証者に与えず,C(U,Oi), E(U,Oi), xU, s(U,Oi), s(U,Oj) に加えてid(Oi,G)の知識証明をおこなう.

Step 1. 機関管理者MG Gは,pG := 2pG+ 1かつqG := 2qG + 1が素数となる ようなn/2ビットの素数pG, qGを選択し,nG := pGqGを計算する.また,

dG, eG, fG, gG, hG, vGR ZnG2を選択し,XG:= (pG, qG)をグループの秘密鍵,

YG:= (nG, dG, eG, fG, gG, hG, vG)をグループの公開鍵とする.

Step 2. 各組織Oiは,x(Oi,G) RΓに対してy(Oi,G):=gGx(Oi,G)

modnG を計算し,

y(Oi,G)をグループGへの登録鍵とする.

Step 3. ユーザUは,システム内で用いる秘密鍵としてxU Γを選択し,保管し

ておく.

仮名生成プロトコル P G

仮名生成プロトコルP Gは,

P GU(xU), X (YG)[U(s(U,X))](P(U,X))

であらわされる.上記は,P GはUX ∈ {O G, MGG}の対話によっておこ なわれ,これは,Uによる入力xUと共通入力YGから,Us(U,X)をプライベート 出力し,P(U,X)UXへ共通出力することを意味する.また,P Gは出力P(U,X) が正しい型であること,即ちxU Γ, s(U,X) ∆を用いてP(U,X) =gGxUhGs(U,X) に あらわされることを保証する.

プロトコルP Gは以下のように構成される:

Step 1. Ur1 R ∆, r2, r3 R {0,1}2n に対し,c1 :=dGr1eGr2, c2 :=dGxUeGr3 を 計算し,それらをXに送る.

P K2{(α, β, γ, δ) : c1 =dGαeGβ ∧c2 =dGγeGδ} によって,c1, c2が正しく生成されていることを証明する.

Step 2. Xr∈R ∆を選択し,U に送信する.

Step 3. U は,s(U,X) := (r1 +r (mod 2+1 + 1))2 + 1と˜s =

r1+r 2∆+1−1

を 計算し,P(U,X) := gGxUhGs(U,X) を仮名とする.また r4 R {0,1}n に対し

c3 :=dGs˜eGr4P(U,X)Xに送信し,それが正しく生成されたことを以下 のP K2によって証明する:

P K2{(α, β, γ, δ, ε, ζ, ϑ, ξ) : c1 =dGα

eGβ

c2 =dGγeGδ

c3 =dGεeGζ

P(U,X) =gGγhGϑ

(c1dGr−2+1)/(c32∆+1+1) =dGϑeGξ

γ Γ∧ϑ }.

Step 4. Xは仮名リストにP(U,X)を保管する.

Step 5. UP(U,X)の生成に用いた秘密情報s(U,X)P(U,X)Xの登録情報とし て秘密に保管する.

グループ登録証明書発行プロトコル CIG

CIGは,機関管理者MGGがグループ登録証明書を発行するのに用いられ,

CIGU(xU, s(U,G)), MG(XG) (YG, P(U,G)) C(U,G)

であらわされる.CIGU によるプライベート入力xU, s(U,G)と,MGによるプ ライベート入力XG,共通入力YG, P(U,G)に対して,P(U,G) P GU, MG に対す る証明書 C(U,G) を出力する.この証明書C(U,G) は仮名P(U,G) に対して C(U,G) (P(U,G)fG)1/E(U,G) (modnG)をみたす(E(U,G), C(U,G))の組であらわされる.

プロトコルCIGは,以下のように構成される:

Step 1. ユーザUP K2{(α, β) : P(U,G) =gGαhGβ}によってMGのデータベース に登録されているP(U,G)に対応するユーザであることを証明する.

Step 2. 機関管理者MGは素数E(U,G)R Λを選択し,C(U,G):= (P(U,G)fG)1/E(U,G) mod nGを計算する.またUにグループ登録証明書として(E(U,G), C(U,G)) を送る.

機関管理者MGC(U,G) = (E(U,G), C(U,G))をそれに対応する仮名P(U,G)とと もに保管する.

Step 3. UC(U,G)E(U,G) P(U,G)fG (modnG) かつE(U,G) Λであるかどうかを 検証し,正しければC(U,G) = (E(U,G), C(U,G))をグループGの登録証明書とし て保管する.

グループ登録証明プロトコル CSG

CSGは,ユーザU が検証者V にグループGへの登録を証明するのに用いられ る.これは

CSGU(C(U,G), xU, s(U,G)), V (YG) {0,1}

であらわされ,証明者UC(U,G) CIGU, MG を保持するとき圧倒的確率で1 を,そうでないときは0を出力する.

プロトコルCSGは以下のように構成される:

Step 1. Ur1, r2 R {0,1}2nを選択し,c1 := C(U,G)eGr1, c2 := eGr1dGr2 を計算 し,検証者Vc1, c2を送る.

Step 2. U は以下のP K2によって検証者V に登録証明をおこなう:

P K2{(α, β, γ, δ, ε, ζ, ξ) : fG=c1α/gGβhGγeGδ

c2 =eGεdGζ

1 =c2α/eGδdGξ

α∈Λ∧β Γ∧γ }.

検証機関に対するグループ登録証明プロトコル CTG

CTGは,ユーザU がエンティティX ∈ {Oj GJ, MGJ GJ}にグループGI

の登録を示すとともに,XにおけるP(U,X)に対応するユーザであることを証明す るのに用いられる.

CTGU(xU, s(U,GI), s(U,GJ), P(U,GI),C(U,GI)), X (YGI,YGJ, P(U,X)) {0,1} であらわされ,証明者UC(U,GI)∈CIGU, MGI (P(U,GI)), P(U,GI)∈P GU(xU), MGI かつP(U,X) P GU(xU), X をみたすC(U,GI), P(U,GI)を入力したとき,共通入力 P(U,X)に対して圧倒的確率で1を,そうでないときは0を出力する.

プロトコルCTGは以下のように構成される:

Step 1. ユーザUr1, r2 R{0,1}2nを選択し,c1 :=C(U,GI)eGr1c2 :=eGIr1dGIr2 を計算し,c1, c2を検証機関Xに送る.

Step 2. U は以下のP K2によって,検証機関Xに登録証明をおこなう:

P K2{(α, β, γ, δ, ε, ζ, ξ, η) : fGI =c1α/gGIβhGIγeGIδ

c2 =eGIεdGIζ

1 =c2α/eGIδdGIξ

P(U,X) =gGJβhGJη

α∈Λ∧β Γ∧γ }.

仮名保証書生成プロトコル GG

GGによって,ユーザUは仮名を登録した機関Oi Gから,登録済みであるこ とを保証する情報を得ることができる.このプロトコルは,

GGU(xU, s(U,Oi)), Oi(x(Oi,G)) (YG, y(Oi,G), P(U,Oi))[U(σ(U,Oi), r(U,Oi))]

であらわされ,Uのプライベート入力xUに対し,P(U,Oi) ∈P GU(xU), Oi のとき のみU の仮名P(U,Oi)に対する仮名保証書σ(U,Oi) = (˜e,˜s,P ,˜ Q)˜ と乱数r(U,Oi)をプ ライベート出力としてUに与える.

また,Ii Gによって生成された正しい仮名保証書σ(U,Oi) は,公開鍵y(Oi,G)に 対して,

˜

e =H(gG, y(Oi,G),P ,˜ Q, g˜ G˜s

y(U,Oi)˜e,P˜s˜Q˜e˜) をみたす.プロトコルGGは以下のように構成される:

Step 1. UOiに登録済みの仮名P(U,Oi)に対応するユーザであることを P K2{(α, β) : P(U,Oi)=gGαhGβ}

によって証明する.

Step 2. Oi は,r R {0,1}2n に対して t1 := gGr, t2 := P(U,Oi)rQ(U,Oi) :=

P(U,Oi)x(Oi,G) を計算し,それらをU に送る.

Step 3. U は,r1, r2, r(U,Oi) R {0,1}2n を選択し,˜t1 := t1gGr1y(Oi,G)r2, ˜t2 :=

(t2P(U,Oi)r1Q(U,Oi)r2)r(U,Oi), ˜P := P(U,Oi)r(U,Oi)Q˜ := Q(U,Oi)r(U,Oi) を計算す る.次に,˜e := H(gG, y(Oi,G),P ,˜ Q,˜ ˜t1,˜t2), e := ˜e−r2を計算し,eをOiに 送る.

Step 4. Oiは秘密鍵x(Oi,G)を用いてs:=r−ex(Oi,G)を計算し,U に送る.

Step 5. Ut1 =gGsy(Oi,G)eかつt2 =P(U,Oi)sQ(U,Oi)eがなりたつかどうかを検証 し,正しければ˜s:=s+r1を計算し,P(U,Oi)に対する登録証明書が発行され るまでσ(U,Oi) := (˜e,s,˜ P ,˜ Q)˜ とr(U,Oi)を保管する.

機関登録証明書発行プロトコル CIO

CIO は機関管理者MG GがユーザU に機関Oi Gの登録証明書,即ち Oi Gに登録された仮名に対する証明書を発行するのに用いられる.CIOは,

CIOU(xU, s(U,G), s(U,Oi), P(U,Oi), r(U,Oi)), MG(XG) (YG,Y(Oi,G), P(U,G), σ(U,Oi)) [U(C(U,Oi))]

であらわされる.入力σ(U,Oi) GGU, Oi (P(U,Oi))に対し,P(U,Oi) に対する機関 登録証明書C(U,Oi)をプライベート出力としてU に与える.出力されるC(U,Oi)C(U,Oi) (P(U,Oi)dGid(Oi,G)fG)1/E(U,Oi)をみたす(E(U,Oi), C(U,Oi))の組で与えられる.

ユーザUはこの時点で,既にグループGの機関管理者MGに仮名P(U,G),機関 Oi Gに仮名P(U,Oi)を登録している.よって,仮名の関連付けを防ぐため,ユー ザは機関管理者にP(U,Oi)を見せることなく,σ(U,Oi)OiによってUの仮名に対し て生成されていることを証明する.また,σ(U,Oi)U へのプライベート出力であ るため,機関管理者と各機関の結託によるユーザ情報の連結を防ぐことができる.

但し,機関管理者はP(U,G)がどの機関に登録しているかという情報のみを管理で きる.

プロトコルCIOは以下のように構成される:

Step 1. ユーザUはランダムに選択した素数E(U,Oi) R Λとr∈RZnG, id(Oi,G)∆ に対し,c:= rE(U,Oi)P(U,Oi)dGid(Oi,G)fGを計算し,c, E(U,Oi), σ(U,Oi)Gに送

る.さらに,そのσ(U,Oi)に対応するユーザであることを証明する: U はラン ダムに選択したr1 R {0,1}2n に対してc1 :=reGr1 を計算し,Gに登録さ れている仮名P(U,G)に対して以下のP K2を実行する:

P K2{(α, β, γ, δ, ε, ζ, ξ, η) : P(U,G) =gGαhGβ

1 =P(U,G)γ/gGδhGε

P˜ =gGδhGζ

P˜ =cγ(eGE(U,Oi))ξ/(c1E(U,Oi)dGid(Oi,G)fG)γ

α∈Γ, β }.

Step 2. MGt1 :=gG˜sy(Oi,G)e˜,t2 := ˜Ps˜Q˜˜eに対してe˜=H(gG, y(Oi,G),P ,˜ Q, t˜ 1, t2) が成り立つかどうか検証し,正しければc :=c1/E(U,Oi) とし,Uに送る.

Step 3. UC(U,Oi) :=c/rを計算し,C(U,Oi)E(U,Oi) ≡P(U,Oi)dGid(Oi,G)fG (modnG) が成り立つかどうか検証する.正しければ(E(U,Oi), C(U,Oi))を機関Oiの登録 証明書として保管する.

機関登録証明プロトコル CS+

CS+は,ユーザU が検証者V に機関Oi Gへの登録を証明するのに用いら れる.

CS+U(xU, s(U,Oi), P(U,Oi),C(U,Oi)), V (YG, y(Oi,G)) {1,0}

は,P(U,Oi) P GU, Oi かつC(U,Oi) CIOU(P(U,Oi)), MG をみたすP(U,Oi)C(U,Oi) の入力に対して圧倒的確率で1を出力する.

プロトコルCS+は以下のように構築される:

Step 1. Ur1, r2 R {0,1}2nに対し,c1:=C(U,Oi)eGr1c2:=eGr1dGr2

を計算し,

それらをV におくる.

Step 2. U は以下のP K2によって,検証者V に機関Oiの登録証明をおこなう:

P K2{(α, β, γ, δ, ε, ζ, ξ) : fGdGid(Oi,G) =c1α/gGβhGγeGδ

c2 =eGεdGζ

1 = c2α/eGδdGξ

α Λ∧β Γ∧γ }.

機関情報をもたない機関登録証明プロトコル CS

CSは,ユーザUが検証者V にグループG内のある機関に登録していること を証明するのに用いられる.

CSU(xU, s(U,Oi), P(U,Oi),C(U,Oi),Y(Oi,G)), V (YG) {1,0}

は,P(U,Oi) P GU, Oi かつC(U,Oi) CIOU(P(U,Oi)), MG をみたすP(U,Oi)C(U,Oi) の入力に対して圧倒的確率で1を出力する.

プロトコルCSは以下のように構築される:

Step 1. U は,r1, r2 R {0,1}2nに対し,c1:=C(U,Oi)eGr1c2:=eGr1dGr2

を計算 し,それらをV に送る.

Step 2. U は以下のP K2によって,検証者V に機関情報をもたない機関登録証明

をおこなう: 

P K2{(α, β, γ, δ, ε, ζ, ξ, η) : fG =c1α/gGβhGγdGδeGε

c2 =eGζdGξ

1 =c2α/eGεdGη

α∈Λ∧β Γ∧γ }.

検証機関への機関登録認証プロトコル CT+

CT+において,ユーザU はエンティティX ∈ {Oj GJ, MGJ GJ}に機関 Oi GIへの登録を示すとともに,XにおけるP(U,X)に対応するユーザであるこ とを示すことができる.

CT+U(xU, s(U,Oi), s(U,Oj), P(U,Oi),C(U,Oi)), X (YGI,YGJ, y(Oi,GI), P(U,X)) {1,0}

は,C(U,Oi) ∈CIOU(P(U,Oi)), MGJ ,P(U,Oi) ∈P GU(xU), Oi かつP(U,X)∈P GU(xU), X をみたすP(U,Oi), P(U,X)C(U,Oi) に対して圧倒的確率で1を出力する.

プロトコルCT+は以下のように構築される:

Step 1. U は,r1, r2 R {0,1}2nに対して,c1 := C(U,Oi)eGIr1c2 := eGIr1dGIr2 を計算し,それらをX に送る.

Step 2. U は,以下のP K2によって機関登録証明をおこなう:

P K2{(α, β, γ, δ, ε, ζ, ξ, η) : fGIdGIid(Oi,GI) =c1α/gGIβhGIγeGIδ

c2 =eGIεdGIζ

1 =c2α/eGIδdGIξ

P(U,X) =gGJβhGJη

α∈Λ∧β Γ∧γ }.

検証機関への機関登録証明プロトコル CT

CTにおいて,ユーザU はエンティティX ∈ {Oj GJ, MGJ GJ}にグルー プGI内のある機関への登録を示すとともに,XにおけるP(U,X)におけるP(U,X) に対応するユーザであることを示すことができる.

CTU(xU, s(U,Oi), s(U,Oj), P(U,Oi),C(U,Oi), y(Oi,GI)), X (YGI,YGJ, P(U,X)) {1,0}

は,C(U,Oi) ∈CIOU(P(U,Oi)), MGI ,P(U,Oi) ∈P GU(xU), Oi かつP(U,X) ∈P GU(xU), Oj をみたすP(U,Oi), P(U,X)C(U,Oi) に対して圧倒的確率で1を出力する.

プロトコルCTは以下のように構築される:

1. Ur1, r2 R{0,1}2nに対し,c1 :=C(U,Oi)eGIr1, c2 :=eGIr1dGIr2を計算し,c1c2Xに送信する.

2. Uは,以下のP K2によって機関登録証明をおこなう:

P K2{(α, β, γ, δ, ε, ζ, ξ, η, ϕ) : fGI =c1α/gGIβhGIγdGIδeGIε

c2 =eGIζdGIξ

1 = c2α/eGIεdGIη

P(U,X) =gGJβhGJϕ

α Λ∧β Γ∧γ∈}.