
先明确要核验的主张
“区块链使用了某种签名算法”可能包含多个不同主张:协议规定了哪种算法,密钥和签名采用什么编码,节点如何验证签名,具体软件是否按规范实现,以及该算法在特定系统中的安全性。核验时应先把宽泛结论拆成这些可检查的问题,避免用一份算法标准直接替代对项目实现的审查。
分别看两类规范性证据
FIPS 186-5是美国国家标准与技术研究院发布的数字签名标准,说明数字签名可用于检测数据是否被未经授权地修改、验证签名者身份,并为向第三方证明签名来源提供依据。它适合作为判断签名算法、密钥管理和验证目标的标准层参考,但它本身不证明任何具体区块链已经采用其中某个算法。

RFC 8032描述EdDSA,并具体讨论Ed25519和Ed448等实例。其内容包括密钥、签名、验证、编码、不同变体、安全注意事项以及测试向量。该文档明确属于信息性RFC,因此可以作为算法定义和实现参考,不能仅凭文档性质推导出某个项目已经达到特定安全等级。

检查算法名称是否精确
核验时不能只记录“椭圆曲线签名”或“EdDSA”这样的上位名称。应继续确认具体实例、曲线参数、哈希或预哈希方式、上下文字符串、密钥长度、签名长度和字节编码。RFC 8032区分Ed25519、Ed25519ctx、Ed25519ph、Ed448和Ed448ph等用法;这些变体的输入处理和验证规则并不完全相同。项目文档、源代码和测试数据必须在这些细节上相互对应。
用测试向量验证实现证据
研究证据较强的做法,是使用规范中公开的测试向量,检查给定私钥或种子、消息、公钥和签名之间是否得到预期结果。验证应覆盖签名成功、消息被修改后失败、签名被修改后失败、错误公钥被拒绝,以及不同编码或变体被正确区分。通过测试向量只能说明实现与指定样例或规则一致,不能单独证明实现没有其他漏洞。
还应检查实现是否处理了边界条件和安全注意事项。RFC 8032讨论了侧信道泄露、随机性、签名可塑性、预哈希混用以及公钥验证等问题。研究者应把这些项目转化为可复现的测试或代码审查事项,并记录使用的库版本、编译选项、输入格式和验证结果。
把标准证据与区块链证据连接起来
针对具体区块链,证据链至少应包含协议或技术规范、可定位的实现代码、交易或消息签名格式、节点验证路径和自动化测试。若项目声称使用Ed25519,就应能说明签名产生的位置、验证发生的位置、消息序列化规则,以及采用的是哪一种Ed25519变体。链上样本可以帮助确认格式和行为,但公开样本通常不足以证明私钥保护、随机数处理、侧信道防护或软件更新流程。
不同层次的证据不能互相替代。标准回答“算法应如何定义”,测试向量回答“实现是否匹配已知例子”,代码审查回答“验证逻辑是否按预期执行”,部署审查回答“系统是否实际使用了该逻辑”。只有把这些证据放在同一条可追溯链上,结论才具有较好的复核价值。
常见误区与适用边界
“有官方标准”不等于“项目安全”;“签名验证通过”也不等于“消息来源在所有业务语境下都能被确认”。身份绑定还依赖公钥与账户、证书或其他身份系统之间的关系,签名的法律效力也不能仅由密码学文档决定。
如果研究对象是某个具体区块链,应优先核对该项目公开的协议规范、代码提交记录和测试配置,并将结论限定在已核验的版本与功能范围内。若只有算法名称或宣传材料,而缺少可复现输入、输出和验证路径,就应把结论表述为“算法选择的声明”,而不是已经证实的安全结论。