数据签名验签的基本原理如下:
数据签名验签依赖非对称加密体系的数学陷门特性。算法生成一对数学上相关联的密钥:私钥由所有者严格保密,用于生成签名;公钥可以公开分发,用于验证签名。用私钥加密的内容只能由对应的公钥解密,这一特性构成了身份认证的基础。主流算法包括基于大整数分解难题的 RSA、基于椭圆曲线离散对数问题的 ECDSA 和 SM2,以及基于爱德华兹曲线的 Ed25519 等。
哈希函数将任意长度的输入数据转换为固定长度的哈希值(摘要),具备单向性、抗碰撞性和确定性三大核心特性。相同输入永远生成相同输出,微小的输入变化会导致输出巨大变化(雪崩效应),且无法从哈希值反推原始数据。在数字签名中,先对原始数据计算哈希值,再对哈希值进行签名,而非直接对原始数据签名,大幅提升运算效率。
签名与验签是一对互逆的操作。签名过程中,发送方使用私钥对数据哈希值进行密码运算,生成唯一对应的数字签名串。验签过程中,接收方使用发送方公开的公钥对签名进行解密(或验证运算),得到原始哈希值,同时重新计算收到数据的哈希值,两次结果一致则验签通过。只有持有对应私钥的人才能生成可用该公钥验证通过的签名,从而实现身份认证和不可否认性。
数字签名验签同时解决信息安全的三大核心问题:一是数据完整性,通过比对哈希值确认数据在传输过程中未被篡改;二是身份认证,通过私钥签名的不可伪造性确认数据确实来自声称的发送方;三是不可否认性,发送方无法事后否认曾对数据进行了签名,因为其私钥是唯一能生成该签名的密钥。