AlexiaChen / AlexiaChen.github.io

My Blog https://github.com/AlexiaChen/AlexiaChen.github.io/issues
87 stars 11 forks source link

简要介绍下双线性映射(bilinear map) #118

Open AlexiaChen opened 3 years ago

AlexiaChen commented 3 years ago

定义

大概介绍下吧,其实就是定义三个素阶群G1,G2和Gt(素阶群就意味着是循环群了,这里设素数为q)。然后双线性配对就是从G1和G2中分别抽取一个群里的元素,然后把这两个群里的元素映射到群Gt里,这个映射关系就是双线性映射,有时候也叫双线性配对(bilinear pairings)。

定义双线性映射e: G1 * G2 -> Gt,并满足以下性质(一般来说,G1和G2为循环加法群,Gt是循环乘法群):

上述g1,g2分别是群G1,G2的生成元,因为又是素阶群,所以群里的任意元素都可以作为生成元,所以g1,g2可以是群里的任意元素。

上面的非退化性也是在密码学讨论上下文中必需要加上去的性质,纯数学上没有这个性质,并且这里的双线性映射概念,全在密码学的上下文讨论范畴。该性质的意思就是在G1,G2中存在那么些元素使得映射结果不是群Gt中的单位元,用人话来说就是只要我们选择了G1,G2上的非单位元,那么大概率就能够得到Gt的非单位元,也就是我在配对曲线上就不要去选择那个无穷远点O了。

如果G1与G2同构(即G1 = G2),那么e就是对称双线性配对,反之是非对称的。

背后数学原理

不懂,是在下未知的领域,需要点代数几何的基础和椭圆曲线上的有理函数的概念(不过猜测应该不需要学很深),这个暂时不考虑,把它当黑盒用,知道基本性质就可以了。

应用

一般用在基于配对的密码学上,有些椭圆曲线不适合配对,合适配对的有超奇异椭圆曲线(Supersingular curves),MNT曲线,BN曲线等。也即是定义中的群G1,G2一般是椭圆曲线上关于点的加法群,这两个同构或不同构的椭圆曲线就完成了配对,经过一些神奇的魔法运算被映射到了另一个群Gt上。BLS签名就用到了曲线配对,还有零知识证明领域你也会接触到。

FAQ

  1. 怎么找这个双线性配对函数e ?

nice,有专门的算法的,这个不需要我们关心,好奇可以看相关论文。

  1. 素阶群的任意一元素为什么都可以作为生成元?

看《抽象代数》,或者这里有解释,所以扯个题外话,椭圆曲线上G点的选取一般没有什么黑科技,无所谓: