Hashing to elliptic curve算法改进

news2024/11/19 7:24:35

1. 引言

前序博客有:

  • ECDSA VS Schnorr signature VS BLS signature 第3节“BLS签名”

私钥 p k pk pk,对应的公钥为 P = p k × G P=pk\times G P=pk×G。待签名消息 m m m
BLS signature的签名流程为:

  • 1)通过 H ( m ) H(m) H(m)将消息 m m m映射为point on the curve, G m = H ( m ) G_m=H(m) Gm=H(m)
  • 2)将私钥与 H ( m ) H(m) H(m)相乘, S = p k × H ( m ) S=pk\times H(m) S=pk×H(m) S S S即为相应的签名。

BLS signature is just one single point on the curve that takes only 33bytes in compressed serialization format。
具体如下图示意:
在这里插入图片描述
BLS的验签流程为:

  • 1)通过 H ( m ) H(m) H(m)将消息 m m m映射为point on the curve, G m = H ( m ) G_m=H(m) Gm=H(m)
  • 2)验证 e ( P , H ( m ) ) = e ( G , S ) e(P,H(m))=e(G,S) e(P,H(m))=e(G,S)成立即可。

具有pairing属性,以上验签等式恒成立:
e ( P , H ( m ) ) = e ( p k × G , H ( m ) ) = e ( G , p k × H ( m ) ) = e ( G , S ) e(P,H(m))=e(pk\times G,H(m))=e(G,pk\times H(m))=e(G,S) e(P,H(m))=e(pk×G,H(m))=e(G,pk×H(m))=e(G,S)
具体如下图示意:
在这里插入图片描述
整个BLS signature非常简洁优美。

整个BLS签名算法中,有两个关键点是:

  • 1)Hashing to the curve:
    ECDSA和Schnorr 签名过程中,需要使用hash函数将消息 m m m映射为a number。
    而BLS signature中需要调整hash算法,将消息 m m m hashes directly to the elliptic curve。
    最简单的方式是,仍然将消息 m m m通过hash函数映射为a number,然后将该number作为elliptic curve 上point的x坐标。
    Elliptic curves通常有 2 256 2^{256} 2256个points,采用SHA-256 算法可以生成256-bit result。
    但是对于 y 2 = x 3 + a x + b y^2=x^3+ax+b y2=x3+ax+b形式的eclliptic curve,相同的x坐标,存在 ( x , y ) 和 ( x , − y ) (x,y)和(x,-y) (x,y)(x,y)两个point均在curve上的情况。这就意味着借助SHA-256有约50%的概率能找到two points for some x x x,有50%的概率找到point on the curve。
    在这里插入图片描述
    为了保证对任意的消息 m m m均能hashing to the curve,可以在消息 m m m后面追加数字,依次尝试直到能找到相应的curve point。如若 h a s h ( m ∣ ∣ 0 ) hash(m||0) hash(m0)不能find a point,则依次试 h a s h ( m ∣ ∣ 1 ) , h a s h ( m ∣ ∣ 2 ) hash(m||1),hash(m||2) hash(m1),hash(m2),直到找到point on the curve。【对于 ( x , y ) 和 ( x , − y ) (x,y)和(x,-y) (x,y)(x,y)两个point,实际选择y坐标值更小的那个point。】(如上图所示)

  • 2)curve pairing
    BLS signautre要求能够将(相同或者不同)curve上的P和Q两个点映射a number:
    e ( P , Q ) ↦ n e(P,Q)\mapsto n e(P,Q)n
    同时,应满足如下属性:(使得secret number x x x unreveal。)
    e ( x × P , Q ) = e ( P , x × Q ) e(x\times P,Q)=e(P,x\times Q) e(x×P,Q)=e(P,x×Q)
    更通用的表达为应具有如下属性:
    e ( a × P , b × Q ) = e ( P , a b × Q ) = e ( a b × P , Q ) = e ( P , Q ) ( a b ) e(a\times P,b\times Q)=e(P,ab\times Q)=e(ab\times P,Q)=e(P,Q)^{(ab)} e(a×P,b×Q)=e(P,ab×Q)=e(ab×P,Q)=e(P,Q)(ab)

Hashing to curve函数 H H H需为:

  • indifferentiable from a random oracle
  • 且为constant-time的

F q \mathbb{F}_q Fq为某有限域, E b : y 2 = x 3 + b E_b: y^2=x^3+b Eb:y2=x3+b为某ordinary椭圆曲线(即,non-supersingular椭圆曲线),其 j j j-invariant为0,同时满足 b ∈ F q \sqrt{b}\in\mathbb{F}_q b Fq以及 q ≢ 1 ( m o d    27 ) q\not\equiv 1(\mod 27) q1(mod27)
当前最快的constant-time indifferentiable hashing to E b ( F q ) E_b(\mathbb{F}_q) Eb(Fq)算法需要:

  • 基于 F q \mathbb{F}_q Fq的2次exponentiation运算【以BLS12-377为例,其基于highly 2-adic有限域,相应的indifferentiable Wahby-Boneh hash函数需要应用2次 slow Tonelli-Shanks algorithm算法来提取基域的2个平方根。

在Dmitrii Koshelev 2021年论文 Indifferentiable hashing to ordinary elliptic F q \mathbb{F}_q Fq-curves of j = 0 j = 0 j=0 with the cost of one exponentiation in F q \mathbb{F}_q Fq 论文中,所实现的constant-time indifferentiable hashing to E b ( F q ) E_b(\mathbb{F}_q) Eb(Fq)算法:

  • 仅需要1次exponentiation运算。【仍以BLS12-377为例,仅需要提取1次立方根,可 以有限域内的1次exponentiation运算来表示。

开源实现见:

  • https://github.com/dishport/Indifferentiable-hashing-to-ordinary-elliptic-curves-of-j-0-with-the-cost-of-one-exponentiation(Sage脚本)
  • https://github.com/zhenfeizhang/indifferentiable-hashing(Rust,但非constant-time实现)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业论文java毕业设计选题源代码javaweb企业门户网站官网

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《javaweb企业门户网站》该项目采用技术:jsp servlet mysqljdbccssjsjQuery等相关技术,项目含有源码、文档、配套开发软件…

[hadoop全分布部署]安装Hadoop、配置Hadoop 配置文件②

👨‍🎓👨‍🎓博主:发量不足 个人简介:耐心,自信来源于你强大的思想和知识基础!! 📑📑本期更新内容:安装Hadoop、配置Hadoop 配置文件…

手把手教你SSM整合(包教包会)

SSM整合 步骤&#xff08;七步&#xff09; 新建maven项目&#xff0c;添加依赖 可以选择根据模版创建maven项目 <dependencies><!--spring-webmvc--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc&…

OpenCV入门(C++/Python)- 使用OpenCV调整尺寸大小(三)

使用OpenCV调整图像大小。要调整图像的大小&#xff0c;可以根据每个轴&#xff08;高度和宽度&#xff09;进行缩放&#xff0c;考虑指定的缩放因素&#xff0c;或者只需设置所需的高度和宽度。 调整图像大小时&#xff1a; 如果想在调整后的图像中保持相同的宽高比&#xf…

Redis 7.0 源码调试环境搭建与源码导读技巧

天下武功&#xff0c;无坚不摧&#xff0c;唯快不破&#xff01;我的名字叫 Redis&#xff0c;全称是 Remote Dictionary Server。 有人说&#xff0c;组 CP&#xff0c;除了要了解她外&#xff0c;还要给机会让她了解你。 那么&#xff0c;作为开发工程师的你&#xff0c;是否…

物联网设备带你进入物联网时代,轻松实现数据互联互通

物联网这一词&#xff0c;我们在生活和工作中时常会接触到&#xff0c;但如果要问大家什么是物联网设备&#xff1f;物联网设备有哪些&#xff1f;很多人应该没有一个详细的概念。那么什么是物联网设备呢&#xff1f;物联网设备是指能够连接无线网络&#xff0c;并具有数据传输…

【电力系统经济调度】多元宇宙算法求解电力系统多目标优化问题(Matlab实现)【电气期刊论文复现与算例创新】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f4dd;目前更新&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;电力系统相关知识&#xff0c;期刊论文&…

计算机网络复习笔记——运输层

计算机网络复习笔记——运输层 概述 在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 运输层的不同端口对应不同的进程 根据应用需求不同&#xff0c;运输层为应用层提供两种不同的运输协议&#xff0c;面向连接的TCP和无连接的UDP协议 运输层端口号、复用与…

CSS-盒子模型-内容,边框,内边距,外边距,(合并,塌陷情况)

CSS-盒子模型-内容&#xff0c;边框&#xff0c;内边距&#xff0c;外边距&#xff0c;(合并&#xff0c;塌陷情况) 目标&#xff1a;能够认识 盒子模型的组成 &#xff0c;****能够掌握盒子模型 边框、内边距、外边距 的****设置方法 学习路径&#xff1a; 1. 盒子模型的介绍 …

RK3588开发板的性能参数、功耗及功能特点|飞凌动态讲解

内容来源&#xff1a;飞凌嵌入式官网-www.forlinx.com2021年12月16日第六届瑞芯微开发者大会上&#xff0c;瑞芯微发布了全新一代旗舰处理器——RK3588。 相较前一代产品&#xff0c;RK3588的性能提高20%~30%&#xff01;同时采用新一代8nm制程工艺&#xff0c;也将大幅度降低功…

超级菜鸟怎么学习数据分析?

超级菜鸟如何学习数据分析&#xff0c;如何有效的成长为专业高手。 这个问题跟把大象放进冰箱是一个道理。 菜鸟成为超级高手是只需要四个步骤&#xff0c;直接上干货。 快速上手&#xff1a;可以简单、低门槛的上手学习与使用&#xff0c;快速入门 快速上手数据分析无非就是选…

Logstash:运用 Elasticsearch filter 来丰富地理数据

我们知道丰富数据对于很多的应用来说非常重要。这涉及到访问不同的表格&#xff0c;并进行搜索匹配。找到最为相近的结果并进行丰富数据。针对 Elasticsearh 来说&#xff0c;我们可以通过 enrich processor来进行丰富。你可以阅读我之前的文章来了解更多&#xff1a; Elastics…

git commit -m 撤销操作

1. 撤销本次commit-m操作 返回到add成功状态 git reset --soft HEAD^ 2.撤销本次commitadd 返回本地未提交状态 git reset --hard HEAD^ HEAD^ 表示上一个版本&#xff0c;即上一次的commit&#xff0c;几个^代表几次提交&#xff0c;如果回滚两次就是HEAD^^。 也可以写成HEAD…

代码随想录算法训练营第五十五天| LeetCode392. 判断子序列、LeetCode115. 不同的子序列

一、LeetCode392. 判断子序列 1&#xff1a;题目描述&#xff08;392. 判断子序列&#xff09; 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新…

SSAT Essay 类写作 - 五步法

从去年起&#xff0c; SSAT 写作转向重点考察critical thinking的考察&#xff0c;SSAT middle 由2篇Story 题目转为一篇Story和一篇Essay, SSAT upper 由 1篇Story 和1 篇Essay 转为 2 篇Essay。这就意味着写好Essay 是SSAT 写作的必备能力。 Essay 写作的要求 体现Critica…

uniapp 实现在线签合同/签名/信息认证(无插件依赖)

最近项目接到一个新的需求&#xff0c;需要对接一个可以在线签合同的的功能&#xff0c;知道需要后马上开干&#xff0c;经过一番斗争&#xff0c;终于终于下班啦 开个玩笑&#xff0c;废话不多说&#xff0c;直接上代码&#xff0c;因为代码是直接项目中搬出来的&#xff0c;没…

把苦难的时光删去:从小县城售货员到深圳IT白领的蜕变之路

希望就像石头缝里的花&#xff0c;有种子就会发芽。 初中辍学&#xff0c;家具店打工&#xff0c;原生家庭带给我太多伤 几乎是所有重男轻女家庭共有的悲剧&#xff0c;我的学习生涯在中考之后寥寥收了场&#xff0c;中考失利&#xff0c;母亲本着“女子无才便是德”的观念不同…

CSS基础

文章目录学习CSS的目的引入的三种方式内部样式表行内样式表外部样式表选择器的分类基础选择器标签选择器类选择器id选择器通配符选择器复合选择器后代选择器子选择器并集选择器伪类选择器盒子模型不同浏览器下盒子模型的区别边框内边距外边距去除浏览器默认样式元素的显示模式块…

Bug系列路径规划算法原理介绍(二)——BUG1 BUG2算法

本系列文章主要对Bug类路径规划算法的原理进行介绍&#xff0c;在本系列的第一篇文章中按照时间顺序梳理了自1986年至2018年Bug类路径规划算法的发展&#xff0c;整理了13种BUG系列中的典型算法&#xff0c;从本系列的第二篇文章开始依次详细介绍了其中具有代表性的BUG1、BUG2、…

面试官:高并发场景下,你们是怎么保证数据的一致性的?图文详解

面试的时候&#xff0c;总会遇到这么一个场景。 1. 场景分析 面试官&#xff1a;你们的服务的QPS是多少&#xff1f; 我&#xff1a;我们的服务高峰期访问量还挺大的&#xff0c;大约是3万吧。 面试官&#xff1a;这么大的访问量&#xff0c;你们的服务器能撑住吗&#xff…