グループ署名方式とは,自分をアイデンティティを隠しながら,自分がその組織に含まれていることを証明する電子署名方式です.
本記事ではグループ署名方式の中で,特に有名な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(Boneh, Boyen, Shacham) 署名法式とは,署名のサイズが小さいグループ署名方式である.BBSでは, ペアリング を用いることで署名サイズを短くしている.
この記事では,BBSの仕組みについて説明するため,以下についてそれぞれ述べる.
※特定の条件を持った値を保持していることを証明する技術
ペアリングは次のように定義される。
(厳密な定義ではないが、本記事を読みすすめるには問題ない。)
$G_1, G_2, G_T$を素数位数 $q$ の巡回群とし,$g_1$は $G_1$の,$g_2$は$G_2$の生成元とする.次の性質を持つ 写像 $e : G_1 \times G_2 \rightarrow G_T$を ペアリング という.
任意の $a\in \mathbb{Z}$ に対し、次の式が成り立つ。
$$e(g_1^a,g_2)= e(g_1, g_2^a) = e(g_1,g_2)^{a}$$
次の式が成り立つ。$1 ^ {G_T}$は $G_T$の単位元である。
$$e(g_1, g_2) \neq 1 ^ {G_T}$$
BBSで用いられる暗号学的仮定について説明する.BBSでは,q-SDH仮定とDLIH仮定といった暗号学的仮定が用いられており,それぞれ以下のように定義する.
準同型写像 $\psi: \mathbb{G}_1 \rightarrow \mathbb{G}_2$を用意し,$g_2 = \psi(g_1)$とする.また$x, \gamma \leftarrow \mathbb{Z}_p$をそれぞれランダムに選ぶ.
その上で,$(g_1, g_2, g_2 ^ \gamma, g_2^{\gamma^2}, \cdots, g_2^{\gamma^q})$が与えられた時,組$(x,g_2 ^\frac{1}{ {\gamma + x}})$を見つけるのが困難とする.このような仮定をq-SDH(q-Strong Diffie-Hellman)仮定 と呼ぶ.
$a, b, c \leftarrow \mathbb{Z}_p$と$u, v, h \leftarrow \mathbb{G}_2$をそれぞれランダムに選ぶ.
$u^a, v^b, h^c \in \mathbb{G}_2$がそれぞれ与えられた時,$a + b = c$が成り立つかを,正しく判別するのが困難とする.
このような仮定をDLDH(Decision Linear Diffie-Hellman)仮定 と呼ぶ.
DLDH仮定に基づいた公開鍵暗号方式である,線形暗号について説明する.
(BBSでは,線形暗号で暗号化されたユーザのIDを復号することで,追跡機能を実現する.)
以下では線形暗号の手続きと,健全性の証明について述べる.
線形暗号とは,DLDH仮定に基づいた公開鍵暗号方式である.
線形暗号の手続きを以下に示す.
以下の手順で鍵ペアを生成する.
以下の手順をもとに,平文$m \in \mathbb{Z}_p$を公開鍵$pk = (u, v, h)$で暗号化する.
以下を計算することで,暗号文$c = (T_1, T_2, T_3)$ を秘密鍵$sk = (x, y)$で復号する.
$$m = \frac{T_3}{T_1^x T_2 ^ y}$$
線形暗号が正しく復号されることを,以下に証明する.
$$ \begin{align} T_1^x &= {(u^a)}^x = {(({g_2^y})^a)}^x = g_2 ^ {xya} = h ^ a \\ T_2^x &= {(v^b)}^y = {(({g_2^x})^b)}^y = g_2 ^ {xyb} = h ^ b \\ \\ \frac{T_3}{T_1^x T_2 ^ y} &= \frac{m h^{a+b}}{h ^ a h ^ b} = \frac{m h^{a+b}}{h^ {a + b}} = m \end{align} $$
秘密の値を隠しながら,その秘密が複数の条件を満たすことを証明する,ゼロ知識証明について説明する.
またゼロ知識証明を含む電子署名である,知識の証明についても紹介する.
これらは特定の条件に当てはまる秘密の保持を証明する技術とも言える.
秘密の値$arguments$を隠しながら,複数の条件$conditions$を満たす$arguments$を持っていることを証明する技術が存在しており,ゼロ知識証明と呼ぶ.ゼロ知識証明は以下のように表記し,次のような要件を持つ.
$PK\{(arguments): conditions\}$
完全性
検証者は正しい証明を1または1に限りなく近い確率で受理する.
健全性
検証者は誤った証明を1に限りなく近い確率で棄却する.
ゼロ知識性
検証者は$arguments$に関する証明以外の知識を知り得ない.
秘密の値$arguments$を隠し,複数の式$conditions$を満たす$arguments$を持っていることをゼロ知識証明しながら,$m$について電子署名することを,知識の証明と呼ぶ.知識の証明は以下のように表記し,ゼロ知識証明と同じく完全性,健全性,ゼロ知識性といった要件を持つ.
$SPK\{(arguments): conditions\}(m)$
知識証明の例として,離散対数の保有を証明した知識の証明を取り上げる.
秘密の値$x$を隠し,$y = g_2 ^ x$を満たす$x$を持っていることを証明しながら,$m$について以下のように電子署名する. 詳しくはこちら.
以下の手順で平文$m$,秘密鍵$x$に対する署名$\sigma$を計算する.
署名$\sigma = (a, b, c, y)$を以下の手順で検証する.
正しい知識の証明$c \stackrel{?}{=} H(m, \hat a, b, y)$が成り立つことを以下に証明する.
まず,$\hat a = a= \frac{{g_2}^c}{y^b}$が成り立つことを証明する.$\frac{{g_2}^c}{y^b}$を変形すると,
\begin{align} \frac{{g_2}^c}{y^b} = \frac{{g_2}^{r + bx}}{(g_2^x)^b} = \frac{{g_2}^{r + bx}}{g_2^{bx}} = {g_2}^{r} = a \end{align}
となる.よって,
\begin{align} c = H(m, a, b, y) = H(m, \hat a, b, y) \end{align}
である.
BBSの手続きについてそれぞれ述べる.次の章で詳細を述べるが,BBSはDLDH仮定のもとに,SDHのペア$(x, A_i)$の保持を証明する知識の証明である.
GMは以下の手順で事前準備を行う.
グループ全体の公開鍵を $gpk = (h, u, v, \gamma,\omega)$とする.
GMは以下の手順で,メンバ$i$の秘密鍵$usk = (x_i, A_i)$を計算する.
メンバの秘密鍵を$usk = (x_i, A_i)$ とし,GMはメンバに$usk$を送信する.
メンバは以下の手順でメッセージ $m \in \mathbb{Z}_p$に対する署名$\sigma$を生成する.
メンバは$A_x$の暗号文$(T_1, T_2, T_3)$ を 以下の手順で計算する.
以下を計算する
署名$\sigma$を生成するために,以下を計算する.
\begin{align}
\sigma = SPK\{(x_i, A_i, \alpha, \beta):
u^{\alpha} = T_1 \land v^{\beta} &= T_2 \land T_1 ^ {x_i} u^{-\delta_1} = 1 \land T_2 ^ {x_i} v^{-\delta_2} = 1 \\
\land e(T_3, g_2) ^ {x_i} e(h, \omega)^{-\alpha - \beta} &e(h, g_2)^{-\delta_1 -\delta_2} = e(g_1, g_2) / e(T_3, \omega) \}(m) &
\end{align}
$m$に対する署名$\sigma = (T_1, T_2, T_3, c, s_{\alpha}, s_{\beta}, s_x, {\delta_1}, {\delta_2})$の知識証明を以下の手順で検証する.
GMは以下の$A_x$を持つメンバを探す.
$$A_x = \frac{T_3}{T_1^{\xi_1} T_2 ^ {\xi_2}}$$
BBSがグループ署名方式の要件を満たすことを証明する.
検証者が必ず正しい証明を受理することを以下に証明する.
具体的には,(1)を証明するため,$(2)$をそれぞれ証明する.
\begin{align} c = H(m, T_1, T_2, T_3, R_1, R_2, R_3, R_4, R_5) &\stackrel{?}{=} H(m, T_1, T_2, T_3, \tilde R_1, \tilde R_2, \tilde R_3, \tilde R_4, \tilde R_5) & (1)\\ R_i &= \tilde R_i (i = 1..5) &(2) \end{align}
$(R_1, R_2) = (\tilde R_1, \tilde R_2)$は次のように証明できる.
\begin{align} \tilde R_1 = u ^ {s_{\alpha}} T_1^{-c} = u^{r_{\alpha} + c \alpha} {(u^{\alpha})}^{-c} &= u^{r_{\alpha} +c \alpha - c\alpha} = u ^ {r_{\alpha}} = R_1 \\ \tilde R_2 = v ^ {s_{\beta}} T_2^{-c} = v^{r_{\beta} + c \beta} {(v^{\beta})}^{-c} &= v^{r_{\beta} +c \beta - c\beta} = v ^ {r_{\beta}} = R_2 \end{align}
$(R_3, R_4) = (\tilde R_3, \tilde R_4)$は次のように証明できる.
\begin{align} \tilde R_3 &= T_1 ^ {s_x} u^{-s_{\delta_1}} \\& = (u^{\alpha})^{s_x} u^{-s_{\delta_1}} \\& = u ^ {\alpha s_x - s_{\delta_1}} \\& = u ^ {\alpha (r_x + cx_i) - r_{\delta_1} - c \delta_1} \\& = u ^ {\alpha (r_x + cx_i) - r_{\delta_1} - c \alpha x_i} \\& = u ^ {\alpha (r_x + cx_i - c x_i) - r_{\delta_1} } \\& = u ^ {\alpha r_x - r_{\delta_1} } \\& = u ^ {\alpha r_x} u^{ - r_{\delta_1}} \\& = T^{r_x} u^{ - r_{\delta_1}} \\& = R_3 \\\\ \tilde R_4 &= T_2 ^ {s_x} v^{-s_{\delta_2}} \\& = (v^{\beta})^{s_x} v^{-s_{\delta_2}} \\& = v ^ {\beta s_x - s_{\delta_2}} \\& = v ^ {\beta (r_x + cx_i) - r_{\delta_2} - c \delta_2} \\& = v ^ {\beta (r_x + cx_i) - r_{\delta_2} - c \beta x_i} \\& = v ^ {\beta (r_x + cx_i - c x_i) - r_{\delta_2} } \\& = v ^ {\beta r_x - r_{\delta_2} } \\& = v ^ {\beta r_x} v^{ - r_{\delta_2}} \\& = T^{r_x} v^{ - r_{\delta_2}} \\& = R_4 \end{align}
$\tilde R_5 = R_5$は次のように証明できる.
$Z = \Bigl(\frac{e(T_3,\omega)}{e(g_1, g_2)}\Bigl) ^c$とおく.
\begin{align} \tilde R_5 &= e(T_3, g_2)^{s_x}e(h,\omega)^{-s_{\alpha} -s_{\beta}} e(h, g_2)^{-s_{\delta_1} -s_{\delta_2}}\Bigl(\frac{e(T_3,\omega)}{e(g_1, g_2)}\Bigl) ^c \\ &= e(T_3, g_2)^{s_x} e(h,\omega)^{-s_{\alpha} - s_{\beta}} e(h, g_2) ^ {-s_{\delta_1} - s_{\delta_2}} Z \\ &= e(T_3, g_2)^{r_x + c \alpha}e(h,\omega)^{-r_{\alpha} - c\alpha -r_{\beta} - c\beta} e(h, g_2) ^ {-r_{\delta_1 } - c \delta_1 - r_{\delta_2} - c \delta_2 } Z \\ &= e(T_3, g_2)^{r_x} e(T_3, g_2)^{c \alpha}e(h,\omega)^{-r_{\alpha} - c\alpha -r_{\beta} - c\beta} e(h, g_2) ^ {-r_{\delta_1 } - r_{\delta_2}} e(h, g_2) ^ {- c \delta_1 - c \delta_2 }Z \\ &= e(T_3, g_2)^{c x_i}e(h,\omega)^{- c\alpha - c\beta}e(h,\omega)^{-r_{\alpha} - } e(h, g_2) ^ {- c \delta_1 - c \delta_2 } \bigl ( e(T_3, g_2)^{r_x} e(h,\omega)^{-r_{\alpha} -r_{\beta} } e(h, g_2) ^ {-r_{\delta_1 } - r_{\delta_2}} \bigl)Z \\ &= e(T_3, g_2)^{c x_i}e(h,\omega)^{- c\alpha - c\beta} e(h, g_2) ^ {- c \delta_1 - c \delta_2 } R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h,\omega)^{- c\alpha - c\beta} e(h, g_2) ^ {- c \delta_1 - c \delta_2 } R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h,g_2)^{\gamma(- c\alpha - c\beta)} e(h, g_2) ^ {- c \delta_1 - c \delta_2 } R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h,g_2)^{c \gamma (- \alpha - \beta)} e(h, g_2) ^ {c(- \delta_1 - \delta_2) } R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h,g_2)^{c \gamma (- \alpha - \beta)} e(h, g_2) ^ {cx(- \alpha - \beta) } R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h,g_2)^{ c (- \alpha - \beta)(\gamma + x)} R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h^{- \alpha - \beta},g_2^ {\gamma + x})^c R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h^{- \alpha - \beta}, \omega g_2 ^ x)^c R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h^{- \alpha - \beta}, \omega g_2 ^ x)^c R_5 Z \\ &= e(T_3, g_2^{x_i})^c e(h^{- \alpha - \beta}, \omega g_2 ^ x)^c e(T_3, \omega)^{c} e(T_3, \omega)^{-c} R_5 Z \\ &= e(T_3, \omega)^{c} e(T_3, g_2^{x_i})^c e(h^{- \alpha - \beta}, \omega g_2 ^ x)^c e(T_3, \omega)^{-c} R_5 Z \\ &= e(T_3, \omega g_2^{x_i})^c e(h^{- \alpha - \beta}, \omega g_2 ^ x)^c e(T_3, \omega)^{-c} R_5 Z \\ &= e(T_3 h^{-\alpha -\beta}, \omega g_2^{x_i})^c e(T_3, \omega)^{-c} R_5 Z \\ &= e(A h^{\alpha + \beta} h^{-\alpha -\beta}, \omega g_2^{x_i})^c e(T_3, \omega)^{-c} R_5 Z \\ &= e(A, \omega g_2^{x_i})^c /e(T_3, \omega)^{c} R_5 Z \\ &= e(g^{\frac{1}{\gamma + x}}, g_2^{\gamma + x_i})^c /e(T_3, \omega)^{c} R_5 Z \\ &= e(g_1, g_2)^c /e(T_3, \omega)^{c} \Bigl(\frac{e(T_3,\omega)}{e(g_1, g_2)}\Bigl) ^c R_5 \\ &= R_5 \end{align}
正しい$A_i$と$x$のペアを持たない敵対者は,有効な署名を作ることができない.
※要追記
以下の理由で,GM以外のエンティティは署名者を追跡できない.
※要追記
以下の理由で,GM以外のエンティティは署名者の署名$\sigma, \sigma'$を紐付けられない.
$\sigma = (T_1, T_2, T_3, c, s_{\alpha}, s_{\beta}, s_x, {\delta_1}, {\delta_2})$
$\sigma' = (T_1', T_2', T_3', c', s_{\alpha}', s_{\beta}', s_x', {\delta_1}', {\delta_2}')$
※要追記
署名$\sigma$の$T_1, T_2, T_3$ は 秘密鍵$\xi_1, \xi_2$による$A_x$の暗号文である.
よってGMは署名$\sigma$から$A_x$を計算することができる.
正当性, 偽造不可能,匿名・リンク不可能, 追跡可能, 失効可能を同時に満たすため,利用されるグループ署名方式について解説した.