前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >本体技术视点 | ECDSA中的随机数重用会导致什么问题?

本体技术视点 | ECDSA中的随机数重用会导致什么问题?

作者头像
本体Ontology
发布2021-07-30 11:34:29
1.3K0
发布2021-07-30 11:34:29
举报
文章被收录于专栏:本体研究院

北京时间7月12日凌晨,跨链协议 Anyswap 遭受攻击,损失将近800万美元。据 Anyswap 官方透露(https://anyswap.medium.com/anyswap-multichain-router-v3-exploit-statement-6833f1b7e6fb),此次攻击是由于 Anyswap 多链路由 V3 曾签出了两笔具有相同 值(签名结果的一个分量)的交易,从而被推导出私钥,遭受了损失。今天,我们就来看看为什么能从两个具有相同 值的签名结果中推导出私钥

ECDSA简介

数字签名是区块链技术人员耳熟能详的一种密码算法,它包含密钥生成、签名和验证三个步骤。

  • 密钥生成:该算法的输入是一个安全参数,比如签名长度。该算法的输出是一个公私钥对,其中私钥用来签名,公钥用来验证签名(这里我们省略了公开参数的描述);
  • 签名:该算法的输入是消息和私钥,输出是用该私钥对该消息的签名结果;
  • 验签:该算法的输入是消息和公钥,输出是一个比特,用来指示该签名是否通过验证。

签名的过程是这样的:

得到签名(r,s)后,签名验证的过程是这样的:

为了提高效率,以太坊等区块链系统中采用从签名结果中恢复出公钥,并进行比对验证算法。当然,为了能从签名结果中恢复出公钥,还需要存储额外的信息,我们在这里就不再叙述。

关于 ECDSA 的形式化描述可以在网站:http://www.secg.org/ 上找到。

图源网络

随机数重用

另外,如果两个用户使用了同样的随机数,那么我们可以看到,其实对于某一个用户来说,也可以得到另一个用户的私钥,因为在上述等式中也只有另外一个用户的私钥这一未知变量。但对于其它用户来说,则无法推导出这两个用户任意一个的私钥。

结语

在 ECDSA 中,随机数是一个十分重要的量。对于同一个用户,同一个随机数在不同签名中使用,会使得用户私钥暴露。此次 Anyswap 被攻击事件便是由此而来。

著名的2010年 Sony PS3 事件也是由于随机数重用的问题。除此之外,在 ECDSA 中,如果随机数泄露,也将导致私钥泄露。随机数在密码算法中占据了一个重要地位,我们在应用中应认真对待随机数。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 本体研究院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
全站加速网络
全站加速网络(Enterprise Content Delivery Network,以下简称 ECDN)为您提供稳定高效的网络加速服务,适用于动静混合、纯动态、跨国、上传等多种加速场景。ECDN 网络资源丰富,同时融合静态缓存、智能路由、协议优化、多路传输、抗抖动等自研技术,加速效果更加显著;接入便捷,功能配置灵活多样,可满足您个性化的业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档