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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景介绍

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

本来打算很长一段时间都不更新博客了,甚至打算等我毕业工作后再更新一些有价值的博客,但是最近在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)
Android studio 配置 jPBC 2.0.0 1、在压缩包的jars文件夹下找到下面两个文件:jpbc-api-2.0.0.jar    和   jpbc-plaf-2.0.0.jar 2、将上述两个jar包导入工程依赖包!!不会的百度一下Android studio怎么导入jar包!!! 3、在压缩包的jpbc-android文件夹下的assets文件夹下有4个用于测试的椭圆曲线常数Properties:a.properties、d159.properties、d201.properties,以及d224.properties,应该挪到Android 工程的assets文件夹下(当然也不一定非是这4个,只要是.properties参数文件都可以放进去,以供调用!!!),重点来了,Android studio 中并没有assets文件夹(assets文件夹是基于Eclipse进行android开发时专门存放资源文件的地方),怎么办呢?(android  studio老鸟勿喷)。实际上Android studio 也有存放资源文件的地方,那就是res文件夹!!!所以在Android strudio中我们可以新建一个与res文件夹并列的assets文件夹,具体步骤为:          点击main文件夹,然后右键---->New---->Folder---->Assets Folder---->点击完成      然后就可以发现main文件夹下多了一个assets资源文件夹!!!然后再把上述4个文件放进去就好了!!! 注意在加密中经常用到.properties文件,所以可以采用如下方式调用:                 Pairing pairing = PairingFactory.getPairing("assets/e_181_1024.properties");                 Field G = pairing.getG1();                 Field GT = pairing.getGT();                 Field Zq = pairing.getZr(); 之后就可以在工程里正常调用jpbc相关库函数并进行加密了!!!
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值