公钥密码学与椭圆曲线密码学详解
1. 公钥密码学基础
公钥密码学是现代密码学的重要组成部分,其中数字签名算法(DSA)是常用的签名方案。
1.1 DSA签名生成
DSA签名生成算法(Algorithm 1.10)的输入包括DL域参数 (p, q, g)、私钥 x 和消息 m,输出为签名 (r, s)。具体步骤如下:
1. 随机选择 k ∈ [1, q - 1]。
2. 计算 T = g^k mod p。
3. 计算 r = T mod q。若 r = 0,则返回步骤1。
4. 计算消息 m 的哈希值 h = H(m)。
5. 计算 s = k^(-1)(h + xr) mod q。若 s = 0,则返回步骤1。
6. 返回签名 (r, s)。
Algorithm 1.10 DSA signature generation
INPUT: DL domain parameters (p,q,g), private key x, message m.
OUTPUT: Signature (r,s).
1. Select k ∈R [1,q −1].
2. Compute T = gk mod p.
3. Compute r = T mod q. If r = 0 then go to step 1.
4. Compute h = H(m).
5. Compute s = k−1(h + xr) mod q. If s = 0 then go to step 1.
6. Return(r,s).