BSV 上的双线性配对

基于配对的密码学是椭圆曲线密码学的一种变体。由于配对的特点,新的密码算法和协议可以实现传统密码学无法实现的功能或效率,例如基于身份的加密(IBE)、基于属性的加密(ABE)、认证密钥交换(AKE)和短签名。

在这里插入图片描述

基于配对的密码学的几种应用已在许多区块链中得到实际应用。

  • Zcash 实现了自己的零知识证明算法,名为 zk-SNARKs(零知识简洁非交互式知识论证)
  • 以太坊支持配对检查以执行 zkSNARK 验证
  • DFINITY(现在称为互联网计算机)构建了一个基于 BLS 签名的方案,比 ECDSA 签名更短。

我们将展示配对可以直接在 BSV 上实现,从而使以前认为不可能在 BSV 上实现的各种基于配对的密码学应用成为可能。

双线性配对

配对 e 只是一个函数,它接受两个输入1 并返回一个输出,如下所示。

在这里插入图片描述

配对

双线性配对具有以下性质:

在这里插入图片描述

也就是说,它在每个输入中都是线性的。很容易看到以下成立。

在这里插入图片描述

直观地说,可以在其输入之间交换标量 n 并将其作为指数取出。

示例

让我们看看下面的配对函数。

在这里插入图片描述

它是双线性的,因为它满足上面的两个方程。例如,

在这里插入图片描述

椭圆曲线上的双线性配对

实际上,上述配对对于加密使用来说并不安全。相反,我们使用椭圆曲线上的配对。输入是椭圆曲线上的点,输出是数字2。有多种方法可以在椭圆曲线上构建配对,例如 Weil 配对Tate 配对Ate 配对

米勒算法

米勒算法 (Miller’s algorithm) 用于有效地计算配对。它由两部分组成:

  1. 主循环:第 3 行到第 10 行。在计算标量点乘法时,它在结构上类似于双加算法
  2. 11 行的最终求幂。

pkr 是椭圆曲线所用的参数3

在这里插入图片描述

计算 Tate 配对 e(P, Q) 的米勒算法

实现

我们已经实现了米勒算法来计算下面的Tate配对,基于我们的椭圆曲线算术库

static function millerLoop(Point P, Point Q): int {
    Point T = P;
    int f = 1;

    // main miller loop
    loop (N) : i {
        f = f * f * linefunc(T, T, Q);
        T = EC.doublePoint(T);

        int j = N - 1 - i;
        if (r & (mask << j)) {
            f = f * linefunc(T, P, Q);
            T = EC.addPoints(T, P);
        }
    }
    return f;
}

// compute the pairing e(P, Q)
static function pairing(Point P, Point Q): int {
    int f = millerLoop(P, Q);
    // final exponentiation
    return pow(f, EXP);
}
实现Tate配对 e(P, Q)

linefunc(P, Q, R) 是一个通过 PQ 并在 R 处求值的线性函数。


[1] 因而称为配对。

[2] 严格来说,它是乘法群中的一个元素。由于这是对配对的介绍,因此我们在整篇文章中选择可读性而不是数学严谨性。

[3] 并非所有椭圆曲线都可以用于配对。在实践中只使用那些能够高效计算的配对的曲线。它们被称为配对友好曲线,其中 Barreto-Naehrig (BN) 或 Boneh-Lynn-Shacham (BLS) 曲线是值得注意的例子。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sCrypt Web3应用开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值