
数字签名验证什么
数字签名将密钥与特定数据联系起来,使验证者能够检查签名是否与相应公钥及数据匹配。讨论其安全性时,需要同时回答两个问题:谁能够使用密钥,以及哪些内容实际进入了签名范围。签名有效不能直接证明操作者的现实身份,也不能证明其充分理解了授权内容。
以太坊:关注实际授权内容
以太坊交易文档介绍,外部账户使用私钥签署交易,交易涉及接收地址、金额、nonce、输入数据和费用参数。接收方为合约时,输入数据可指定调用的函数及参数;难以理解的十六进制数据会造成盲签风险。

因此,理解授权不能只看地址和金额。合约地址表示调用目标,具体动作还取决于调用数据及合约逻辑。可读摘要有助于理解,但摘要是否准确对应底层数据仍然重要,不能仅凭一个函数名称判断完整效果。

比特币:关注签名覆盖的数据
比特币开发者指南以P2PKH为例,说明支出者通过公钥和签名满足先前输出的锁定条件。验证不仅涉及签名匹配,还需要检查公钥与锁定条件是否对应,并满足交易的其他有效性要求。
这提示我们,签名保护的对象应以具体规则为准。不能把某一种交易示例中的签名范围推广到所有交易格式,也不能认为有了签名就无需检查输入、输出及其约束。
密钥控制与授权意愿要分开理解
密码学验证依赖密钥与签名之间的关系,无法自动识别密钥使用者是否获得了本人同意。密钥被他人控制后,对方也可能生成可通过验证的签名。因此,保护签名能力与检查签署内容同样重要:前者关系到谁能授权,后者关系到授权了什么。
常见问题与适用边界
签名后内容还能修改吗?对签名覆盖的数据作修改,通常会导致原签名无法通过验证;是否覆盖某个字段,必须结合相应协议和签名方式判断,不能笼统理解为所有附带信息都受到保护。
签名有效就代表执行成功吗?签名只是验证的一部分。交易还涉及网络规则、区块收录及执行结果。以太坊的合约调用尤其需要区分授权有效与执行成功,不能仅凭签名或交易哈希判断结果。
不同链能否套用相同检查方法?核对授权主体与内容的思路可以通用,但账户交易与未花费交易输出模型的验证对象不同。具体结论应限定在对应网络、交易类型和脚本或合约条件内。