AlexiaChen.github.io
AlexiaChen.github.io copied to clipboard
简要介绍下双线性映射(bilinear map)
定义
大概介绍下吧,其实就是定义三个素阶群G1,G2和Gt(素阶群就意味着是循环群了,这里设素数为q)。然后双线性配对就是从G1和G2中分别抽取一个群里的元素,然后把这两个群里的元素映射到群Gt里,这个映射关系就是双线性映射,有时候也叫双线性配对(bilinear pairings)。
定义双线性映射e: G1 * G2 -> Gt,并满足以下性质(一般来说,G1和G2为循环加法群,Gt是循环乘法群):
- 双线性: e(g1^a, g2^b) = e(g1,g2)^(ab) 其中a, b ∈ Zq, g1 ∈ G1, g2 ∈ G2
- 非退化性: e(g1,g2) ≠ 1Gt 其中 ∃g1 ∈ G1 ∃g2 ∈ G2
上述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
- 怎么找这个双线性配对函数e ?
nice,有专门的算法的,这个不需要我们关心,好奇可以看相关论文。
- 素阶群的任意一元素为什么都可以作为生成元?
看《抽象代数》,或者这里有解释,所以扯个题外话,椭圆曲线上G点的选取一般没有什么黑科技,无所谓:
- https://crypto.stackexchange.com/questions/35016/is-every-point-on-an-elliptic-curve-of-a-prime-order-group-a-generator
- https://crypto.stackexchange.com/questions/43614/how-to-find-the-generator-of-an-elliptic-curve