CL署名の基本スキームは、鍵生成とメッセージ空間、署名アルゴリズム、検証アルゴリズムの4つから成り立つ。まず、それを述べる。
鍵生成
p=2p'+1, q=2q'+1でp, q, p', q'が素数であるものを算出する。そして、n=pqを計算する(長さはl_n)。さらに、乱数a, b, cを生成する。そして、公開鍵PK=(n, a, b, c)、秘密鍵SK=pとする。メッセージ空間
※なお、p, qは安全素数と呼ばれる。 ※a, b, c \in QR_n(平方剰余の集合)に限定。QR_n \subseteq {\mathbb{Z}_n}^*、{\mathbb{Z}_n}^*は、{1, 2, ..., n-1}を意味する。b^2 \equiv a \bmod nを満たす\exists b \in {\mathbb{Z}_n}^*を満たすa \in {\mathbb{Z}_n}^*。
メッセージ空間mは長さl_mのバイナリストリングである。つまり、0以上2^{l_m}未満の値であるということ。署名アルゴリズム
e > 2^{l_m+1}で長さl_e=l_m+2を満たす素数eを算出する。また、長さがl_s=l_n+l_m+lであるランダム数sを生成する。lはセキュリティパラメータである。そして、以下を満たすvを計算する。 \begin{align} v^e \equiv a^mb^sc \bmod n \end{align}検証アルゴリズム
(e, s, v)がメッセージmの署名である。そして、v^e \equiv a^mb^sc \bmod nと2^{l_c} > e > 2^{l_c}-1をチェックする。なぜ、これで検証ができているのか、それを次に説明する。
0 件のコメント:
コメントを投稿