2. 数字签名基础:数字签名原理、公钥与私钥、签名与验签流程、常见签名算法简介
2.1 数字签名核心原理
数字签名是公钥密码学在数据完整性、身份认证和不可否认性方面的核心应用。其本质是:用私钥对消息摘要进行加密,用公钥进行解密验证。数字签名并非对原始消息整体加密,而是对消息的哈希摘要进行签名操作,从而在保证安全性的同时大幅提升效率。
关键特性:
- 身份认证:验证签名者持有的私钥,确认消息来源。
- 数据完整性:任何对原始消息的篡改都会导致验签失败。
- 不可否认性:签名者无法否认自己签署过的消息(私钥唯一持有)。
2.2 公钥与私钥
在非对称密码体系中,每个实体拥有一对密钥:
| 密钥类型 | 持有者 | 保密性 | 主要用途 |
|---|---|---|---|
| 私钥 (Private Key) | 签名者本人 | 保密,不可泄露 | 生成数字签名;解密公钥加密的数据 |
| 公钥 (Public Key) | 公开 | 无需保密 | 验证数字签名;加密发送给私钥持有者的数据 |
重要原则:私钥一旦泄露,攻击者可以伪造该身份的所有签名。在调度器签名证据校验场景中,验证节点必须持有调度器公钥的可靠副本(通常通过证书链或链上注册获取)。
2.3 签名与验签流程
数字签名的完整流程分为两个阶段:签名生成(发送方)和签名验证(接收方)。
2.3.1 签名生成流程(发送方)
- 计算消息摘要:对原始消息
M使用哈希函数(如 SHA-256)生成固定长度的摘要H(M)。 - 私钥签名:使用发送方的私钥
SK对摘要H(M)进行签名运算,生成签名值Sig = Sign(SK, H(M))。 - 发送:将原始消息
M和签名值Sig一起发送给接收方。
2.3.2 签名验证流程(接收方)
- 计算消息摘要:对收到的原始消息
M'使用相同的哈希函数计算摘要H(M')。 - 公钥验签:使用发送方的公钥
PK对签名值Sig和摘要H(M')进行验证运算Verify(PK, Sig, H(M'))。 - 输出结果:若验证通过,则签名有效;否则签名无效,消息可能被篡改或来源不可信。
2.4 常见签名算法简介
不同的签名算法在安全性、性能、签名长度和抗量子能力上存在显著差异。在调度器签名证据校验场景中,算法选择直接影响证据的存储开销和验证效率。
| 算法 | 密钥长度 | 签名长度 | 安全性基础 | 典型应用 |
|---|---|---|---|---|
| RSA | 2048–4096 bit | 256–512 字节 | 大整数分解困难 | HTTPS、代码签名 |
| ECDSA | 256–521 bit | 64–132 字节 | 椭圆曲线离散对数困难 | 区块链交易签名(比特币、以太坊) |
| EdDSA (Ed25519) | 256 bit | 64 字节 | 扭曲爱德华曲线离散对数困难 | 现代密码学协议、调度器签名 |
| BLS | 256–384 bit | 32–96 字节 | 双线性配对 | 签名聚合、共识协议 |
| SM2 | 256 bit | 64 字节 | 椭圆曲线离散对数困难 | 国密标准、政务系统 |
调度器场景选型建议:
- EdDSA (Ed25519) 是目前调度器签名证据校验的推荐选择:签名短(64字节)、生成速度快、抗侧信道攻击能力强。
- BLS 适用于需要批量验证或签名聚合的高吞吐调度场景,但配对运算开销较高。
- RSA 因签名长度大、验签速度慢,在链上证据校验中已逐渐被淘汰。
2.5 签名算法对比:性能与安全维度
下表从实际工程角度对比主流签名算法的关键指标,帮助理解调度器签名证据校验中的算法取舍:
| 指标 | RSA-2048 | ECDSA (secp256k1) | Ed25519 | BLS (BLS12-381) |
|---|---|---|---|---|
| 签名速度 | 慢 | 中 | 快 | 中 |
| 验签速度 | 慢 | 中 | 快 | 慢(配对运算) |
| 签名大小 | 256 字节 | 64–72 字节 | 64 字节 | 48–96 字节 |
| 公钥大小 | 256 字节 | 33–65 字节 | 32 字节 | 48–96 字节 |
| 抗量子安全 | 否 | 否 | 否 | 否 |
| 聚合签名 | 不支持 | 不支持 | 不支持 | 原生支持 |
工程实践提示:在调度器签名证据校验中,签名大小直接影响链上存储 Gas 成本。Ed25519 的 64 字节签名在大多数 EVM 兼容链上仅需约 2 万 Gas 的存储开销,而 RSA-2048 的 256 字节签名则需 8 万 Gas 以上。对于高频调度场景,优先选择短签名算法。
2.6 调度器签名证据校验中的签名应用
在调度器签名证据校验场景中,数字签名用于以下关键环节:
- 调度指令签名:调度器使用私钥对每个调度指令(如任务分配、资源调整)进行签名,确保指令来源可信。
- 执行结果签名:执行节点对任务执行结果进行签名,作为不可篡改的执行证据。
- 证据链构建:多个签名证据按时间顺序链接,形成可追溯的调度证据链。
- 链上验证:智能合约或验证节点使用调度器公钥对签名证据进行批量验证,确保调度过程合规。
核心结论:数字签名是调度器签名证据校验的基石。理解公钥/私钥体系、签名与验签流程以及不同签名算法的特性,是后续章节学习证据格式设计、批量验证优化和安全性分析的前提。在调度器场景中,Ed25519 因其短签名、高性能和强安全性,成为最广泛采用的签名算法。