署名方式

通常のディジタル署名方式以外の各種署名方式を紹介します.

ブラインド署名

フェアブラインド署名

グループ署名・多重署名

リング署名

リング署名は,グループ署名と違い管理者の存在を仮定せず,匿名性を保証しながらグループの代表による署名が可能な方式である.署名から署名者を特定することは署名者本人でも不可能である.

リング署名といわれる所以は,リング状(円形)にメンバが並んでいるとして,署名者から始まって順番に隣のメンバの公開鍵を使って演算していき,最後に署名者へ戻ったときに署名者の秘密鍵を使って署名演算を終了するような形式になっているからである.

以下に,離散対数問題に基づくリング署名の手順を示す.

  1. 鍵生成
    グループのメンバ($n$ 人)は,$q|p-1$ を満たす大きな素数 $p$,$q$ と 乗法群 ${Z_p}^*$ での位数が $q$ となる生成元 $g$ を求め公開する.
    グループのメンバ $i$ は,$x_i \in Z_q$ を秘密鍵,$y_i = g^{x_i} \bmod p$ を公開鍵として生成する.
  2. 署名生成
  3. 文書 $m$ に対する署名を次の手順で生成する.
    ここで,$\mathrm{H}$ はハッシュ関数であり,グループのメンバ $i$ が署名者とする.
    • Step 1
      $i$ は以下を計算する. \[ T_i = g^\alpha \bmod p, \quad \alpha \in_U Z_q \] \[ c_{i+1} = \mathrm{H}(m || T_i) \]
    • Step 2
      $j = i+1, \ldots , n, 1, \ldots, i-1$ に対して以下を計算する. \[ T_j = g^{s_j} y_j^{c_j} \bmod p,\quad s_j \in_U Z_q \] \[ c_{j+1} = \mathrm{H}(m || T_j) \]
    • Step 3
      \[ s_i = \alpha - x_i c_i \bmod q \] $(c_1, s_1, s_2 ,\ldots, s_n)$ を $m$ に対する署名とする.
  4. 署名検証
    $j = 1, \ldots, n$ に対して,以下を計算する. \[ T_j = g^{s_j} y_j^{c_j} \bmod p \] \[ c_{j+1} = \mathrm{H}(m || T_j) \] $c_1 = c_{n+1}$ ならば検証成功,さもなくば検証失敗とする.
inserted by FC2 system