密码学基础:配对(Pairings)

本文介绍了加密学中的配对(pairings),首先定义了其概念及其在椭圆曲线中的应用,接着阐述了配对的双线性特性及其在身份基础加密中的重要性。配对不仅是一个数学操作,还因其在加密通信中通过身份生成私钥而显得极为强大。

这是关于密码学的系列文章中的一篇。如果你是第一读到这篇文章,我强烈建议你从本系列的开篇开始阅读。

我们已经探索了_椭圆曲线_的多种应用——一些简单方案和一些更高级的方案。在研究阈值签名时,我们还引入了多项式。即使发挥最大的创造力,我们仍然可以仅基于这些构造设计出许多协议。

但这并不意味着没有其他_工具_存在。还有一个非常重要的工具需要介绍:配对

在本文中,我们将定义什么是配对——但不会讨论如何_计算_它们。原因是目前我们还没有定义配对计算所需的数学机制。这可能会在后续文章中探讨,但如果你感兴趣,这里有一份极好的资源可供参考。此外,如果你想在阅读本文后开始尝试配对计算,市面上也有许多库可用!

配对

配对,也称为双线性映射,本质上是一个函数,通常用字母_e_表示。它接受_两个_参数,并生成_一个_输出,如下所示:

这次我们需要用到集合论中的一些符号,但不会太复杂。

可能最不常见的一个(如果你之前没有接触过太多集合论)是笛卡尔积——用于集合_𝔾× 𝔾_₂。它只是所有形如(G₁, G₂)的元素的集合,其中G₁属于_𝔾_₁,G₂属于_𝔾_₂。

然而,这不是普通的函数。它有一个重要属性:在两个输入上都是_线性_的。这意味着以下所有表达式都是等价的:

如你所见,我们可以进行这种乘积(更准确地说,群操作)的交换。尽管这个属性乍一看并不起眼,但它实际上非常强大

配对就像一种搅拌机,因为我们并不太关心_评估_配对表达式时获得的特定(除非在检查所谓的非退化性时)。相反,我们关心的是某些输入组合产生相同的结果,因为上述的双线性。这正是它们吸引人的地方,我们将在后面看到。

椭圆曲线与配对

注意输入来自笛卡尔积𝔾₁ × 𝔾₂。这是一个相当特殊的集合:𝔾₁和𝔾₂是,更准确地说,是不相交的群——即它们不_共享_任何元素。形式上,我们说它们的交集为空:

此外,𝔾₁和𝔾₂不仅仅是任何群——它们必须_适合_配对计算。事实证明,椭圆曲线群恰好是一个好选择——在计算效率方面非常出色。因此,我们已经对它们有了很好的理解,这真是一个幸运的巧合!

如果你查阅文献,会发现有些实例中使用的是同一个群两次,而不是两个不相交的群。例如𝔾 × 𝔾

这些有时被称为自配对,实际发生的是存在一个将_𝔾_₂映射到_𝔾_的函数f——意味着我们可以将_𝔾_₂的元素转换为_𝔾_的元素,并在配对中使用𝔾

尽管我们不会讨论如何实现这一点,但请记住,配对的正式定义要求群是不相交的。

某些函数f允许在群G₁和G₂之间来回移动。

应用

在我们到达"我为什么要学这个"的阶段之前(假设我们还没到那里!),我认为展示_一个应用_是有益的。

尽管我们还不知道如何计算配对,但我们可以理解它们的实用性,因为我们知道它们的属性

我们不再浪费时间,直接进入正题。

设置

使用椭圆曲线群,甚至是模p整数,可以让你走得很远。但你知道它们都无法为你做的一件事吗?它们不允许你将_身份_用于密码学操作!

砰!麦克风掉落!

身份?你是指我的名字?听起来很疯狂,但可以实现。不过需要一些设置。

要执行这种密码学魔术,我们需要一个受其他方信任的特殊角色——通常称为可信机构。该角色将负责私钥生成,因此也被准确(且非常描述性地)称为私钥生成器(PKG)

PKG做几件事。首先也是最重要的,他们选择一个主密钥,即一个整数s。他们还选择并公开一些公共参数,我们稍后将定义这些参数。最后,他们选择并公开一个哈希函数H,该函数哈希到𝔾₁。

![](https://img.learnblockchain.cn/2025/02...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Frank Mangone
Frank Mangone
Software developer based in Uruguay. Math and Cryptography enthusiast.