第五十个知识点:什么是BLS基于对的签名方案?

BLS签名方案使用了椭圆曲线上了Weil对,本质上是一个在曲线上除n划分的双线性形式,使用 \(n^{th}\) 个单位根。

假设我们有一个椭圆曲线\(E/F_{3^l}\),根据原始论文中的记号,方案如下描述:

密钥生成:让\(E/F_{3^l}\)是一个椭圆曲线,\(q\)是这个曲线阶数的最大因数。让\(P\)是其中的一个阶数是\(q\)的点,然后随机的选择\(x \in Z_q^*\)。最后让\(R = x \cdot P\)。那么输出\((l,q,P,R)\)作为公钥,\(x\)作为私钥。

签名:为了签名消息\(M \in \{ 0,1 \}^*\)。我们将\(M\)映射到一个在椭圆曲线群子群\(<P>\)中的一个点\(P_M\)。这可以通过一个\(hash\)函数来进行这样的签名。然后让\(S_M= x \cdot P_M\)。签名\(\sigma\)就是点\(S_M\)的\(x\)轴坐标,同时满足了\(\sigma \in F_3^{l}\)。

验证:给定一个公钥\((l,q,P,R)\),一个消息\(M\)和一个签名\(\sigma\),做下面的算法:

  • 找到椭圆曲线上的一个阶数为\(q\)的点\(S\),它的横坐标是\(\sigma\),纵坐标在\(F_{3^l}\)中,如果不存在这样的点,那么拒绝这个签名。

  • 令\(u = e(P,\phi(S))\),同时\(v = e(R,\phi(h(M)))\),其中\(e\)是Weil对中的映射,\(\phi\)是一个\(E \leftarrow E\)的同态,\(h\)就是之前提到的函数。

  • 如果\(u = v\)或者\(u = v^{-1}\),那么就接受这个签名,否则拒绝这个签名。

最新文章

  1. 新功能发布!Markdown写博客!
  2. sqllite
  3. C++设计模式-策略模式(2)
  4. 歐洲國家拓展其移動和IT服務業務
  5. html的转码玉反转码
  6. 博客标题栏增加一个&quot;闪存“按钮
  7. 关键字 extern
  8. [google面试CTCI] 1-6.图像旋转问题
  9. Swift和Javascript的神奇魔法
  10. 三种Join方法
  11. ThreadLocal 原理和使用场景分析
  12. 最优秀的网络框架retrofit
  13. Vue API(directives) 自定义指令
  14. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK问题解决
  15. 7 Serial Configuration 理解 (一)
  16. HDU 3407.Zjnu Stadium 加权并查集
  17. 在局域网内部实现远程web终端服务
  18. 配置私有仓库(使用registry镜像搭建一个私有仓库)
  19. Python:基础知识(二)
  20. 【BZOJ】【3668】【NOI2014】起床困难综合症

热门文章

  1. 7 — 简单了解springboot中的thymeleaf
  2. A Child&#39;s History of England.39
  3. 容器之分类与各种测试(三)——stack
  4. Oracle中建表及表操作
  5. 基于DataX将数据从Sqlserver同步到Oracle
  6. SpringBoot让测试类飞起来的方法
  7. SpringBoot 项目不加载 application.properties 配置文件
  8. matplotlib画3d图
  9. 【Matlab】CFAR/phased.CFARDetector2D
  10. MySQL安装详细教程(数据库免安装版)