java密码学原型算法实现——双线性对

Java 密码学原型算法实现——双线性对

1、背景介绍

如何使用jPBC 库进行双线性群初始化,包括:

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

(2)合数阶双线性群(Composite-Order Bilinear Groups);

如何使用jPBC 库执行双线性群运算,包括:

(1)指数群Z 的加法和乘法;

(2)双线性群G 的乘法和指数幂;

(3) 目标群GT 的乘法和指数幂

(4)双线性群G 映射到目标群GT 的对(Pairing)运算;

(5)使用jPBC 库的一些注意事项。

jPBC 2.0.0 实际上提供了DPVS 的实现,也是正确的。有兴趣的朋友们可以自己研究

一下,我在这里就不详述了。 如何使用jPBC 2.0.0 的多线性对(Multilinear Maps)函

数库;这方面我自己一直没找时间测试一下多线性对函数库,实际上近期我也不太想测试

这个库,主要有两方面的原因。

现在所构造出来的多线性对并非密码学中的理想多线性对(Ideal Multilinear

Maps),而是候选多线性对(Candidate Multilinear Maps),后者在使用上有很多的限

制。 jPBC 2.0.0 实现的多线性对是[CLT-14]的方案,但这个方案已经被证明是不安全的

了。

2、双线性群简介

这里我直接引用自己的二篇水文来介绍(都是凑数用的…)选择密文安全的身份及广

播加密方案,密码学报,Experimental performance comparisons between (H) IBE

schemes over composite-order and prime-order bilinear groups,IBCAST 2014。

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

质数双线性群可以由五元组 p ,G ,G ,G ,e 来描述。五元组中 是一个与安全常数

 1 2 T  p

G , G , G e e :G G G

 相关的大质数, 1 2 T 是阶为p 的乘法循环群, 为双线性映射 1 2 T ,

它满足以下3 个条件:

(1)双线性(Bilinear):对任意的g G ,h G ,a,b Z ,有

1 2 p

a b ab

e g , h  e g, h ;

(2)非退化性(Non-degeneracy)至少存在元素g G ,g G ,满足

1 1 2 2

e g , g  1;

1 2

(3)可计算性(Efficiency):对于任意的u G ,v G ,存在一个与给定安全常数

1 2

 相关的多项式时间算法,可以高效地计算e u,v ;

 

现在的密码学相关论文中,习惯将G , G 设置为乘法循环群。但是,基于椭圆曲线的

1 2

双线性群构造中,G , G 是加法群。所以在大约2005 年以前的论文中,双线性群一般写成

1 2

加法群形式。jPBC 中将G , G 表示称为了乘法循环群,因此在实现写成加法群形式的方案

java密码学原型算法_java密码学原型算法实现——双线性对.pdf相关推荐

  1. java gc回收算法_Java GC回收算法-判定一个对象是否可以回收

    开源推荐 推荐一款一站式性能监控工具(开源项目) Pepper-Metrics是跟一位同事一起开发的开源组件,主要功能是通过比较轻量的方式与常用开源组件(jedis/mybatis/motan/dub ...

  2. 6种java垃圾回收算法_Java垃圾回收算法

    主要根据以下3篇博客做的整理 http://blog.csdn.net/zsuguangh/article/details/6429592 http://www.cnblogs.com/ywl925/ ...

  3. 垃圾回收算法_Java 垃圾回收算法与几种垃圾回收器

    一.如何确定某个对象是"垃圾"? 目前主流垃圾回收器都采用的是可达性分析算法来判断对象是否已经存活,不使用引用计数算法判断对象时候存活的原因在于该算法很难解决相互引用的问题.如何确 ...

  4. java 大整数编程_Java编程--RSA算法中的大整数运算

    Java编程–RSA算法中的大整数运算 RSA原理浅析 RSA是利用陷门单向函数实现的,其安全基础依赖于大整数的分解问题的难解性 算法过程 为了加深对RSA算法的了解,接下来通过简单的一个例子来分析一 ...

  5. java常用算法_JAVA编程常用算法——冒泡排序

    一.冒泡排序算法运作的过程 (1)比较相邻的元素.如果第一个比第二个大,就交换他们两个. (2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. (3 ...

  6. java 二维链表_Java数据结构与算法----数组与链表

    数据类型 1 数据类型介绍 数据类型的分类(按照结构划分):线性结构和非线性结构 线性结构:线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序 ...

  7. java快排原理_Java数据结构与算法——快速排序

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中最常用也是面试中最容易考到的排序算法--快排,包括快排的思 ...

  8. java冒泡遍历对象_Java经典排序算法(冒泡、选择、插入)

    排序算法说明 排序说明 对一序列对象根据某个关键字进行排序. 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面: 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b ...

  9. java string逆序_java经典入门算法题,java初学者必备

    java经典入门算法题 开头求关注警告 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资 料的也可以私信我! 祝关注我的人都:身体健康,财源广进,福如东海,寿比 ...

最新文章

  1. 使用Python,机器学习和深度学习的5个很棒的计算机视觉项目创意!
  2. 自动化生成 Openstack 新项目开发框架
  3. java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException
  4. Android开发之旅:HelloWorld项目的目录结构
  5. Hierarchy-Viewer架构
  6. 错误:不能继续进行下一步操作 openfire 设置._如何为MacBook或Mac电脑恢复出厂设置...
  7. line和spline_探索适用于Apache Spark的Spline Data Tracker和可视化工具(第1部分)
  8. C#删除字符串最后一个字符的几种方法
  9. __proto__ 和 prototype 到底有什么区别
  10. 后台管理系统好用的UI框架
  11. 【软件工程】--软工文档总结
  12. 12款Javascript表格控件(DataGrid)
  13. php mysql注册登录失败_php用户注册登录,不使用mysql
  14. 任意波形发生器的主要功能
  15. 2021年全球与中国孕妇防辐射服行业市场规模及发展前景分析
  16. 饿了么-T技术沙龙活动感悟。
  17. CAN总线CSV格式报文转ASC格式报文
  18. Soot 静态分析框架(二)Soot的核心
  19. 2020年新版Java学习路线图最全更新!囊括史上最全面104个知识点
  20. linux内核是用什么语言编写的?

热门文章

  1. 程序猿修仙之路--数据结构之你是否真的懂数组?
  2. .NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发
  3. Followme Devops实践之路
  4. 积极参与开源项目,促进.NET Core生态社区发展
  5. .NET Core 2将Visual Basic带到了Linux和macOS平台
  6. 计算机基础知识的文献,四 计算机文献检索基础知识(原理、结构和功能)
  7. 【WEB API项目实战干货系列】- API访问客户端(WebApiClient适用于MVC/WebForms/WinForm)(四)
  8. 【BIM入门实战】Revit 2018模型设计阶段重点及注意事项总结
  9. Android之网络请求提示Cleartext HTTP traffic to dev*******.com not permitted
  10. Android之解决键盘覆盖编辑框问题