Java密码学原型算法实现——第三部分:双线性对

本文详细介绍了如何使用jPBC库进行双线性群的初始化和运算,包括质数阶和合数阶双线性群的创建,以及双线性群的加法、乘法、指数运算和对运算。内容涵盖动态产生和文件读取产生双线性群,以及如何将元素哈希到双线性群中。
摘要由CSDN通过智能技术生成

背景介绍

技术博客已经好久没更新了。倒不是因为没得写,是因为实在是太忙了,而且研究也到了一个瓶颈期,需要大量阅读文献。

本来打算很长一段时间都不更新博客了,甚至打算等我毕业工作后再更新一些有价值的博客,但是最近在CSDN私信上和知乎上经常收到求救帖子,希望我能写一个jPBC使用方法的博客。甚至实验室的硕士生们也在各种咨询我相关的问题。于是,我打算一劳永逸,写一篇有关jPBC使用的博客。希望这个博客出来后,能解决绝大多数人的问题吧…
本篇博客期望解决的问题:

  • 如何使用jPBC库进行双线性群初始化,包括:
    • 质数阶双线性群(Prime-Order Bilinear Groups);
    • 合数阶双线性群(Composite-Order Bilinear Groups);
  • 如何使用jPBC库执行双线性群运算,包括:
    • 指数群 Z 的加法和乘法;
    • 双线性群 G 的乘法和指数幂;
    • 目标群 GT 的乘法和指数幂
    • 双线性群 G 映射到目标群 GT 的对(Pairing)运算;
  • 使用jPBC库的一些注意事项。

本篇博客不会涉及到的问题:

  • 如何配置jPBC库到Eclipse中;这方面的内容请参考我的另一篇博客:jPBC 2.0.0配置与测试(补充版)
  • 有关双线性对的数学知识;这方面我在第二章会稍微介绍一下,但是不会详谈,因为内容太多了。
  • 对偶双线性群向量空间群(Dual Pairing Vector Space,DPVS);这个群在理论上被用于替代合数阶双线性群。其可以在保证同等安全性的条件下,使双线性对运算时间较短,而代价是存储开销会变大。这个工具在2012年得到了广泛的应用。但是这两年普遍认为这个工具的进一步应用场景有限,而且表示并不直观,还不如和合数阶双线性群好用。jPBC 2.0.0实际上提供了DPVS的实现,也是正确的。有兴趣的朋友们可以自己研究一下,我在这里就不详述了。
  • 如何使用jPBC 2.0.0的多线性对(Multilinear Maps)函数库;这方面我自己一直没找时间测试一下多线性对函数库,实际上近期我也不太想测试这个库,主要有两方面的原因。
    • 现在所构造出来的多线性对并非密码学中的理想多线性对(Ideal Multilinear Maps),而是候选多线性对(Candidate Multilinear Maps),后者在使用上有很多的限制。
    • jPBC 2.0.0实现的多线性对是[CLT-14]的方案,但这个方案已经被证明是不安全的了。

双线性群简介

这里我直接引用自己的二篇水文来介绍(都是凑数用的…)选择密文安全的身份及广播加密方案,密码学报Experimental performance comparisons between (H) IBE schemes over composite-order and prime-order bilinear groups,IBCAST 2014

质数阶双线性群(Prime-Order Bilinear Groups)

质数双线性群可以由五元组 (p,G1,G2,GT,e) 来描述。五元组中 p 是一个与给定安全常数 λ 相关的大质数, G1,G2,GT 均是阶为 p 的乘法循环群, e 为双线性映射 e:G1×G2GT ,它满足以下3个条件:

  • 双线性(Bilinearity):对于任意的 gG1 hG2 a,bZp ,有 e(ga,hb)
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值