1
応用数学解説
文献あり

グループ署名方式

1283
0

グループ署名方式とは,自分をアイデンティティを隠しながら,自分がその組織に含まれていることを証明する電子署名方式です.
本記事ではグループ署名方式の中で,特に有名なBBS方式について紹介したいと思います.

はじめに

匿名掲示板などのサービスでは, ユーザが不正を行った場合に, 追跡して責任を明らかにできる必要がある.しかし安易に追跡をできることは,プライバシの懸念をもたらす.

この問題の解決のために, 以下で定義する正当性, 偽造不可能,匿名・リンク不可能, 追跡可能, 失効可能を同時に満たしたい.

要求1. 正当性※ 正しいユーザはサービスを必ず利用できる.
要件2. 偽造不可能性※ 正しいユーザ以外は,サービスを利用できない.
要求3. 匿名性 誰もユーザを誰も特定できない.
要求4. リンク不可能性 誰もユーザを追跡(トラッキング)できない.
要求5. 追跡可能 ユーザの不正が発覚した場合, そのユーザを特定できる.

グループ証明方式

これらの要求を実現する手段に,グループ署名方式 が挙げられる.

グループ署名方式とは, 署名者が特定のグループに含まれることを証明するディジタル署名方式である.グループ署名方式の署名者は検証者から見て匿名であるが, 署名者の不正があった際は, GM(Group Manager) が署名から署名者を追跡できる.

グループ署名方式を,以下のエンティティ,手続き,セキュリティ要件から定義する.

エンティティ

GM メンバーを管理するエンティティであり, メンバーの追加, 失効, 追跡を行う.
メンバー 署名を行うエンティティ
検証者 メンバーによる署名を検証するエンティティ

手続き

グループ署名方式は以下の手続きから成り立つ.

GM はグループ署名のために,必要なパラメータと公開鍵と秘密鍵を生成する.
生成したパラメータと,公開鍵は公開する.

手続き1. 登録 メンバーが GM に登録を求める. GM はメンバーを登録し,
メンバーに対して署名に必要なクレデンシャルを送信する.
手続き2. 署名メンバーは署名したいメッセージに対する署名を生成し,
メッセージとともに署名を検証者に送信する.
手続き3. 検証 検証者は公開されているパラメータ,GM の公開鍵,署名, メッセージをもとに, 署名の検証を行う.
手続き4. 追跡 GM は署名をもとに, 署名したメンバーを追跡する.

セキュリティ要件

グループ署名は以下のセキュリティ要件を満たす.

要件1. 正当性 メンバーが作成した署名は必ず検証者に受理される.
要件2. 偽造不可能性 メンバー以外が作成した署名は, 必ず検証者に棄却される.
要件3. 匿名性 GM 以外は, 署名からメンバーを特定できない
**要件4. リンク不可能性. **GM 以外は, 複数の署名が同じメンバーによって署名されているかわからない.
要件5. 追跡可能性 GM は署名からメンバーを特定できる.

BBS

BBS(Boneh, Boyen, Shacham) 署名法式とは,署名のサイズが小さいグループ署名方式である.BBSでは, ペアリング を用いることで署名サイズを短くしている.

この記事では,BBSの仕組みについて説明するため,以下についてそれぞれ述べる.

  1. 数学的な前提知識
  2. BBSで提案されたゼロ知識証明※
  3. BBSの手順

※特定の条件を持った値を保持していることを証明する技術

数学的準備

ペアリング

ペアリングは次のように定義される。
(厳密な定義ではないが、本記事を読みすすめるには問題ない。)

ペアリング

G1,G2,GTを素数位数 q の巡回群とし,g1G1の,g2G2の生成元とする.次の性質を持つ 写像 e:G1×G2GTペアリング という.

双線形性

任意の aZ に対し、次の式が成り立つ。

e(g1a,g2)=e(g1,g2a)=e(g1,g2)a

非退化性

次の式が成り立つ。1GTGTの単位元である。

e(g1,g2)1GT

暗号学的仮定

BBSで用いられる暗号学的仮定について説明する.BBSでは,q-SDH仮定とDLIH仮定といった暗号学的仮定が用いられており,それぞれ以下のように定義する.

q-SDH仮定

準同型写像 ψ:G1G2を用意し,g2=ψ(g1)とする.またx,γZpをそれぞれランダムに選ぶ.

その上で,(g1,g2,g2γ,g2γ2,,g2γq)が与えられた時,組(x,g21γ+x)を見つけるのが困難とする.このような仮定をq-SDH(q-Strong Diffie-Hellman)仮定 と呼ぶ.

DLDH仮定

a,b,cZpu,v,hG2をそれぞれランダムに選ぶ.

ua,vb,hcG2がそれぞれ与えられた時,a+b=cが成り立つかを,正しく判別するのが困難とする.

このような仮定をDLDH(Decision Linear Diffie-Hellman)仮定 と呼ぶ.

暗号学的仮定

DLDH仮定に基づいた公開鍵暗号方式である,線形暗号について説明する.
(BBSでは,線形暗号で暗号化されたユーザのIDを復号することで,追跡機能を実現する.)

以下では線形暗号の手続きと,健全性の証明について述べる.

線形暗号(Liner Encryption)

線形暗号とは,DLDH仮定に基づいた公開鍵暗号方式である.
線形暗号の手続きを以下に示す.

鍵生成

以下の手順で鍵ペアを生成する.

  1. x,yZp をランダムに選ぶ.
  2. u=g2yv=g2xh=vx=uy を計算する.
  3. 秘密鍵をsk=(x,y),公開鍵をpk=(v,u,h) とする.
暗号化

以下の手順をもとに,平文mZpを公開鍵pk=(u,v,h)で暗号化する.

  1. a,bZpをランダムに選ぶ.
  2. 暗号文 c=(T1,T2,T3)=(ua,vb,mha+b) を計算する.
復号

以下を計算することで,暗号文c=(T1,T2,T3) を秘密鍵sk=(x,y)で復号する.

m=T3T1xT2y

健全性の証明

線形暗号が正しく復号されることを,以下に証明する.

T1x=(ua)x=((g2y)a)x=g2xya=haT2x=(vb)y=((g2x)b)y=g2xyb=hbT3T1xT2y=mha+bhahb=mha+bha+b=m

ゼロ知識証明

秘密の値を隠しながら,その秘密が複数の条件を満たすことを証明する,ゼロ知識証明について説明する.
またゼロ知識証明を含む電子署名である,知識の証明についても紹介する.

これらは特定の条件に当てはまる秘密の保持を証明する技術とも言える.

ゼロ知識証明

秘密の値argumentsを隠しながら,複数の条件conditionsを満たすargumentsを持っていることを証明する技術が存在しており,ゼロ知識証明と呼ぶ.ゼロ知識証明は以下のように表記し,次のような要件を持つ.

表記

PK{(arguments):conditions}

要件

完全性
検証者は正しい証明を1または1に限りなく近い確率で受理する.

健全性
検証者は誤った証明を1に限りなく近い確率で棄却する.

ゼロ知識性
検証者はargumentsに関する証明以外の知識を知り得ない.

知識の証明

秘密の値argumentsを隠し,複数の式conditionsを満たすargumentsを持っていることをゼロ知識証明しながら,mについて電子署名することを,知識の証明と呼ぶ.知識の証明は以下のように表記し,ゼロ知識証明と同じく完全性,健全性,ゼロ知識性といった要件を持つ.

SPK{(arguments):conditions}(m)

知識証明の例として,離散対数の保有を証明した知識の証明を取り上げる.

SPK{(y):yg2x}(m)

秘密の値xを隠し,y=g2xを満たすxを持っていることを証明しながら,mについて以下のように電子署名する. 詳しくはこちら.

署名

以下の手順で平文m,秘密鍵xに対する署名σを計算する.

  1. rZpを選ぶ.
  2. 以下を計算する.
    1. a=g2r
    2. b=H(m,a,b,y)
    3. c=r+bx
  3. 署名σ=(b,c,y)とする.
検証

署名σ=(a,b,c,y)を以下の手順で検証する.

  1. a^=g2cyb を計算する.
  2. 以下を検証して,成り立てば1,成り立たなければ0を返す.
    c=?H(m,a^,b,y)
健全性の証明

正しい知識の証明c=?H(m,a^,b,y)が成り立つことを以下に証明する.
まず,a^=a=g2cybが成り立つことを証明する.g2cybを変形すると,

g2cyb=g2r+bx(g2x)b=g2r+bxg2bx=g2r=a

となる.よって,

c=H(m,a,b,y)=H(m,a^,b,y)

である.

手続き

BBSの手続きについてそれぞれ述べる.次の章で詳細を述べるが,BBSはDLDH仮定のもとに,SDHのペア(x,Ai)の保持を証明する知識の証明である.

準備

GMは以下の手順で事前準備を行う.

  1. ξ1,ξ2Zp をランダムに選ぶ.
  2. u=g2ξ2v=g2ξ1h=vξ1=uξ2 を計算する.
  3. γZp をランダムに選ぶ.
  4. ω=g2γ を計算する.

グループ全体の公開鍵を gpk=(h,u,v,γ,ω)とする.

登録

GMは以下の手順で,メンバiの秘密鍵usk=(xi,Ai)を計算する.

  1. xiZp
  2. Ai=g1γ+xi

メンバの秘密鍵をusk=(xi,Ai) とし,GMはメンバにuskを送信する.

署名

メンバは以下の手順でメッセージ mZpに対する署名σを生成する.

  1. メンバはAxの暗号文(T1,T2,T3) を 以下の手順で計算する.

    1. α,βZp
    2. T1=uα,T2=vβ,T3=Aihα+β
  2. 以下を計算する 

    1. δ1=xiα
    2. δ2=xiβ
  3. 署名σを生成するために,以下を計算する.
    σ=SPK{(xi,Ai,α,β):uα=T1vβ=T2T1xiuδ1=1T2xivδ2=1e(T3,g2)xie(h,ω)αβe(h,g2)δ1δ2=e(g1,g2)/e(T3,ω)}(m)

    1. rα,rβ,rx,rδ1,rδ2Zp をランダムに選ぶ.
    2. R1=urα,R2=vrβ,R3=T1rxurδ1,R4=T2rxvrδ2
      R5=e(T3,g2)rxe(h,w)rαrβe(h,g2)rδ1rδ2 をそれぞれ計算する.
    3. c=H(m,T1,T2,T3,R1,R2,R3,R4,R5) を計算する.
    4. sα=rα+cα,sβ=rβ+cβ
      sδ1=rδ1+cδ1,sδ2=rδ2+cδ2
      sx=rx+cx をそれぞれ計算する.
    5. 署名をσ=(T1,T2,T3,c,sα,sβ,sx,δ1,δ2)

検証

mに対する署名σ=(T1,T2,T3,c,sα,sβ,sx,δ1,δ2)の知識証明を以下の手順で検証する.

  1. 以下を計算する
    • R~1=usαT1c
    • R~2=vsβT2c
    • R~3=T1sxusδ1
    • R~4=T2sxvsδ2
    • R~5=e(T3,g2)sxe(h,ω)sαsβe(h,g2)sδ1sδ2(e(T3,ω)e(g1,g2))c
  2. 以下を検証して,成り立てば1,成り立たなければ0を返す.
    c=?H(m,T1,T2,T3,R~1,R~2,R~3,R~4,R~5)

追跡

GMは以下のAxを持つメンバを探す.
Ax=T3T1ξ1T2ξ2

証明

BBSがグループ署名方式の要件を満たすことを証明する.

正当性

検証者が必ず正しい証明を受理することを以下に証明する.

正当性の証明

具体的には,(1)を証明するため,(2)をそれぞれ証明する.

c=H(m,T1,T2,T3,R1,R2,R3,R4,R5)=?H(m,T1,T2,T3,R~1,R~2,R~3,R~4,R~5)(1)Ri=R~i(i=1..5)(2)

1. (R1,R2)=(R~1,R~2)の証明

(R1,R2)=(R~1,R~2)は次のように証明できる.

R~1=usαT1c=urα+cα(uα)c=urα+cαcα=urα=R1R~2=vsβT2c=vrβ+cβ(vβ)c=vrβ+cβcβ=vrβ=R2

2. (R3,R4)=(R~3,R~4)の証明

(R3,R4)=(R~3,R~4)は次のように証明できる.

R~3=T1sxusδ1=(uα)sxusδ1=uαsxsδ1=uα(rx+cxi)rδ1cδ1=uα(rx+cxi)rδ1cαxi=uα(rx+cxicxi)rδ1=uαrxrδ1=uαrxurδ1=Trxurδ1=R3R~4=T2sxvsδ2=(vβ)sxvsδ2=vβsxsδ2=vβ(rx+cxi)rδ2cδ2=vβ(rx+cxi)rδ2cβxi=vβ(rx+cxicxi)rδ2=vβrxrδ2=vβrxvrδ2=Trxvrδ2=R4

3. R~5=R5の証明

R~5=R5は次のように証明できる.

Z=(e(T3,ω)e(g1,g2))cとおく.

R~5=e(T3,g2)sxe(h,ω)sαsβe(h,g2)sδ1sδ2(e(T3,ω)e(g1,g2))c=e(T3,g2)sxe(h,ω)sαsβe(h,g2)sδ1sδ2Z=e(T3,g2)rx+cαe(h,ω)rαcαrβcβe(h,g2)rδ1cδ1rδ2cδ2Z=e(T3,g2)rxe(T3,g2)cαe(h,ω)rαcαrβcβe(h,g2)rδ1rδ2e(h,g2)cδ1cδ2Z=e(T3,g2)cxie(h,ω)cαcβe(h,ω)rαe(h,g2)cδ1cδ2(e(T3,g2)rxe(h,ω)rαrβe(h,g2)rδ1rδ2)Z=e(T3,g2)cxie(h,ω)cαcβe(h,g2)cδ1cδ2R5Z=e(T3,g2xi)ce(h,ω)cαcβe(h,g2)cδ1cδ2R5Z=e(T3,g2xi)ce(h,g2)γ(cαcβ)e(h,g2)cδ1cδ2R5Z=e(T3,g2xi)ce(h,g2)cγ(αβ)e(h,g2)c(δ1δ2)R5Z=e(T3,g2xi)ce(h,g2)cγ(αβ)e(h,g2)cx(αβ)R5Z=e(T3,g2xi)ce(h,g2)c(αβ)(γ+x)R5Z=e(T3,g2xi)ce(hαβ,g2γ+x)cR5Z=e(T3,g2xi)ce(hαβ,ωg2x)cR5Z=e(T3,g2xi)ce(hαβ,ωg2x)cR5Z=e(T3,g2xi)ce(hαβ,ωg2x)ce(T3,ω)ce(T3,ω)cR5Z=e(T3,ω)ce(T3,g2xi)ce(hαβ,ωg2x)ce(T3,ω)cR5Z=e(T3,ωg2xi)ce(hαβ,ωg2x)ce(T3,ω)cR5Z=e(T3hαβ,ωg2xi)ce(T3,ω)cR5Z=e(Ahα+βhαβ,ωg2xi)ce(T3,ω)cR5Z=e(A,ωg2xi)c/e(T3,ω)cR5Z=e(g1γ+x,g2γ+xi)c/e(T3,ω)cR5Z=e(g1,g2)c/e(T3,ω)c(e(T3,ω)e(g1,g2))cR5=R5

偽装不可能性

正しいAixのペアを持たない敵対者は,有効な署名を作ることができない.

※要追記

匿名性

以下の理由で,GM以外のエンティティは署名者を追跡できない.

  • DLDH仮定より,T1,T2,T3から,(Ax,x)を見つけることはできない.
  • 離散対数の保有に関する知識の証明より, (T1,T2,T3,c,sα,sβ,sx,δ1,δ2)から,(Ax,x)を見つけることはできない.

※要追記

リンク不可能性

以下の理由で,GM以外のエンティティは署名者の署名σ,σを紐付けられない.

σ=(T1,T2,T3,c,sα,sβ,sx,δ1,δ2)
σ=(T1,T2,T3,c,sα,sβ,sx,δ1,δ2)

  • DLDH仮定より,T1,T2,T3T1,T2,T3を紐付けることができない.
  • 離散対数の保有に関する知識の証明より, (T1,T2,T3,c,sα,sβ,sx,δ1,δ2)(T1,T2,T3,c,sα,sβ,sx,δ1,δ2)を紐付けることができない.

※要追記

追跡可能性

署名σT1,T2,T3 は 秘密鍵ξ1,ξ2によるAxの暗号文である.
よってGMは署名σからAxを計算することができる.

まとめ

正当性, 偽造不可能,匿名・リンク不可能, 追跡可能, 失効可能を同時に満たすため,利用されるグループ署名方式について解説した.

参考文献

[1]
Boneh, Dan, Xavier Boyen, and Hovav Shacham, Short group signatures, Annual international cryptology conference. Springer, Berlin, Heidelberg, , 2004
投稿日:20211214
更新日:20231211
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

akakou
akakou
16
17743
数学が…わかりません……ダレカタスケテー

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. グループ証明方式
  3. エンティティ
  4. 手続き
  5. セキュリティ要件
  6. BBS
  7. 数学的準備
  8. 手続き
  9. 証明
  10. まとめ
  11. 参考文献