来自Movement Aptos Core存储库的拉取请求(PR #330)为`aptos_experimental::confidential_asset`模块引入了两个重要的安全加固修复,解决了加密余额操作和公钥验证中的漏洞。
余额减法错误修复
第一个修复纠正了`confidential_balance::sub_balances_mut`中的关键逻辑错误。该函数错误地调用`twisted_elgamal::ciphertext_add_assign`而非`ciphertext_sub_assign`,导致余额扣减执行加法操作。尽管当前没有树内调用者,但该公开函数的任何未来调用者若试图通过`sub_balances_mut`进行账户扣减,将被静默地计为贷方。该函数已被删除以防止误用。综合测试确认将余额从自身减去现在能正确解密为零。
恒等点公钥拒绝
第二个修复防止`ristretto255_twisted_elgamal::new_pubkey_from_bytes`接受恒等点作为有效的公钥。恒等点没有对应的密钥对,接受它会产生两种危险的退化状态:注册sigma证明变得可伪造(允许不配对的账户),审计员通道可以通过代入恒等点密钥而被静默禁用。修复在反序列化器级别添加了验证以拒绝恒等编码密钥(32个零字节),涵盖了所有入口路径,包括`register`、`set_asset_auditor`、`set_chain_auditor`和`deserialize_auditor_eks`。新的公开辅助函数`is_identity_pubkey`为通过其他方式获得压缩公钥的调用者提供额外验证。
测试与验证
PR包含了一个新的测试模块,其中包含六个全面的测试以验证两项修复:余额减法正确性、恒等点密钥拒绝、非规范编码拒绝和下游兼容性。机密资产套件中所有64个测试(58个现有 + 6个新增)均已通过。修复保持向后兼容性——没有状态模式或证明格式更改会影响现有账户或密文。

