现代密码学(七)数字签名算法

介绍数字签名。

RSA

\[ h = H(M) \\ S = h^d\bmod N \\ S^e = (h^e)^d = h\bmod N \]

El Gamal

选择随机数k,满足\(gck(k,\ p-1)=1\),计算密钥 \[ K = a^k\bmod p \]

用Euclidean扩展算法求解S \[ M = x\cdot K + k\cdot S\bmod(p-1) \] 也即 \[ S = k^{-1}(M-x\cdot K)\bmod(p-1) \] 签名就是\((M,K,S)\)$ \[ y^K\cdot K^S = (a^x)^K\cdot (a^k)^{k^{-1}(M-x\cdot K)} = a^M \bmod p \]

DSA

基于离散对数,生成320bit签名。

HMAC

带密钥的HASH。