引言

备受瞩目的技术升级 Taproot 软分叉将于最近激活,激活高度为 709632,距今已不足 500 个区块。此次升级包括三个改进提案,分别是 BIP - 340、BIP - 341 和 BIP - 342。其中,BIP - 340 引入了 Schnorr 签名,BIP - 342 结合先前的技术,制定了隔离见证 V1 版的花费规则,而 BIP - 342 则对前面脚本更新后的验证方式做了指导。今天,我们就一起来了解下 BIP - 340 中提到的 Schnorr 签名。

Schnorr 签名

Schnorr 签名是由德国著名密码学家 Claus Schnorr 在上世纪八十年代发明的一种数字签名算法。该算法一直受专利保护,直到 2008 年才到期。和其它数字签名算法一样,Schnorr 算法也包括三个步骤:

  • 密钥生成。该步骤的输入是一个安全参数,比如签名长度。它的输出是一个公私钥对,其中私钥用来签名,公钥用来验证签名;

  • 签名。该步骤的输入是消息和私钥,输出是用该私钥对该消息的签名结果

  • 验签。该步骤的输入是消息和公钥,输出是一个比特,用来指示该签名是否通过验证。

*在上面的步骤描述中,我们省略了公开参数的描述。

Schnorr 签名算法也是定义在群上:

假定我们拥有一个素数阶  的群 ,它的生成元是 ,并且该群上离散对数问题是困难的。另外,假定存在一个密码学哈希函数 ,任意比特串经过该哈希函数作用后,输出的哈希摘要在  中。

这里需要指出的是,在 BIP - 340 的实现中,Schnorr 算法的使用方式要比我们下面描述的复杂,但核心就是基于下面这些步骤:

正确性与安全性

可以看到 Schnorr 签名算法非常简单高效。Schorr 签名算法是将密码学中著名的 Fiat-Shamir 转换应用到 Schnorr 身份鉴别协议转换而来。算法的正确性显而易见,它的安全性也在相应的安全模型下得到了证明。

同时,就像 BIP - 340 中指出的一样,Schnorr 签名不存在延展性的问题。

我们在前面的技术视点中讲过,ECDSA 具有延展性,即可以从一个 ECDSA 签名中快速推出另外一个对相同消息的有效签名结果。为了防止延展性,一般区块链系统都对 ECDSA 签名结果进行了限定。而采用 Schnorr 签名不存在这样的隐患。

另外,我们前面的技术视点也对 ECDSA 签名时随机数重用的问题进行了分析,得出了同一个签名者使用 ECDSA 签名算法对不同消息进行签名时,重用随机数将泄漏用户私钥。在 Schnorr 签名中,我们可以看到,重用随机数的安全威胁依然存在。假定 () 和 () 是两个采用相同随机数  的签名,那么有:

从该式中很容易推导出用户私钥 。因此,在使用 Schnorr 签名时,也必须避免随机数重用。

结语

Schnorr 签名算法的引进给区块链系统带来了更多优秀的特性,比如 BIP - 340 中提到的更具隐私性的多签方案等。

我们也将在以后的技术视点中对 Schnorr 签名算法在区块链系统中的应用作进一步了解。


了解最新资讯,参与精彩活动,欢迎加入本体中文电报群!扫描下方二维码或复制链接即可加入:

https://t.me/OntologyNetworkCN

本体技术视点 | 为什么 BIP - 340 选择引入 Schnorr 签名算法?相关推荐

  1. 本体技术视点 | 基于区块链的物联网(IoT)数据管理框架

    本期,我们将介绍于2020年12月3日通过的基于区块链的物联网(IoT)数据管理框架的 IEEE 标准.该标准由本体资深架构专家参与讨论和发布. 标准相关概要描述如下,具体细节,请参考  官方链接:h ...

  2. 本体技术视点 | 聊聊Ontology上三种合约“交相辉映”的故事

    10月29日,Ontology v1.8.0重磅发布!经过数月在测试网上的稳定运行,Wasm 功能也正式登陆了主网.目前为止,Ontology v1.8.0已支持 Native.NeoVM 和 Was ...

  3. 同时多次调用存储规程_本体技术视点 | 神奇的Merkle树是如何实现存储层优化的?...

    一颗小树苗,由树根长出树干,树干长出树枝,树枝又长出叶子,最后就这样长成了参天大树.计算机界也有棵树,名叫 Merkle,由一个根节点.一组中间节点和一组叶子节点组成.根节点表示是最终的那个节点,且只 ...

  4. 本体技术视点 | 数据的去中心化协作和可信流动(一)

    近日,本体首席技术专家 Ning Hu 受邀亮相由 ECUG 社区主办的 2021 ECUG Con 全球技术大会,介绍利用分布式网络为链上和链下数据的融合互通提供可信.安全.高效的集成协议和操作灵活 ...

  5. 本体技术视点 | SocialFi 如何解决 Web3 社交中的声誉问题?

    人作为"社交动物",不可避免地处于大大小小的社交圈之中."如何在 Web3 中提升社交声誉.捕获社交价值?"便成了 SocialFi 兴起的重要原因和最为关注的 ...

  6. c++对象回收string类型成员时coredump_本体技术视点 | 虚拟机中引用性动态语言对象模型思考...

    1 引言 Ontology 的 NeoVM 虚拟机新增加了 DCALL.HAS_KEY.KEYS 以及 VALUES 等几条新的指令.因此,基于 NeoVM 的引用性动态语言对象的设计理论上可行,这可 ...

  7. 什么叫侧面指纹识别_又见侧面指纹,四大指纹识别技术,你会如何选择?

    原标题:又见侧面指纹,四大指纹识别技术,你会如何选择? 1. 正面实体指纹系统 关于最早搭载正面指纹识别技术的手机,估计大家都会说是苹果公司在2013年9月发布的iPhone 5s.其实最早的应该是摩 ...

  8. 写技术博客,如何选择博客平台

    序言 很多技术开发在工作2-3年的时候,都会选择去写一些技术博客.一方面可以总结用到的一些技术,另一方面可以帮助到别人. 开始写技术博客,首要面临的问题是如何选择一个合适的博客平台? 选择标准 选择技 ...

  9. .net oa 用到那些技术_一起来看看选择免费OA办公系统的难点

    当今许多企业都引入了免费OA办公系统作为管理工具,免费OA软件对企业管理的帮助也是有目共睹,但也有很多企业不能挑选到心仪的免费OA办公系统,使得免费OA并没有充分发挥作用,今天跟小晴来一起探讨这个问题 ...

  10. 云编排技术:探索您的选择

    最近 IT 行业有很多围绕云编排的议论,而且许多人想知道云编排到底是怎么回事.本文将探索云编排的概念,以及它将如何融入云计算的大发展趋势中.我将分析各种编排工具并介绍它们之间的区别,使您能够更好地了解 ...

最新文章

  1. Jmeter --- 分布式测试
  2. 修改、读取txt文档
  3. 华中科技大学主校区论文被《SCI》收录的研究
  4. Linux彻底删除mysql
  5. java二级为什么没题库_为什么刷了那么多二级java试题,却依然提高不了分数?...
  6. onload、DOMContentLoaded、$(document).ready(fn)、$(document).load(fn)
  7. Laravel 开发环境搭建
  8. 轻薄于型 强悍于内 拯救者9000X 2021硬核发布
  9. 解决ajax回调函数无返回值得问题
  10. 利用Word2010在博客园发布文章入门
  11. WPF笔记(1.8 资源与映射)——Hello,WPF!
  12. php讲用户输入的值存入数组,如何将表单输入数组转换为PHP数组
  13. 软件工程知识点总结(含各类软件工程各类图的画法)
  14. python抓取微信公众号文章_如何使用python3抓取微信公众号文章,了解一下?
  15. javaweb项目JSP网上书店购物电商系统毕业设计
  16. springboot中格林尼治时间转指定格式时间
  17. 分布式应用之分布式缓存
  18. 月入万元的SEO优化师:分享我几年接私单的经历
  19. Windows浏览器无法联网,提示代理服务器没有响应
  20. dpdk内存管理分析

热门文章

  1. 恢复计算机文件的软件,删除文件恢复大师软件
  2. 笔记本打开计算机,笔记本打开黑屏怎么办_笔记本电脑开机黑屏的解决步骤-win7之家...
  3. Python实现爬取下载百度图片
  4. linux下制作dos启动u盘启动,在Linux系统下创建FreeDOS可启动U盘
  5. 极小极大搜索方法、负值最大算法和Alpha-Beta搜索方法
  6. php判断信用卡,php校验信用卡卡号代码
  7. 面试中单例模式有几种写法
  8. Windows蓝屏代码集合
  9. 计算机硬盘启动设置方法,bios设置硬盘启动,图文介绍两种设置bios硬盘启动方法...
  10. 上传文件到本地操作和上传到Azure云上