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

JPBC库(基于配对的密码学)入门和避坑指南 1. JPBC简介 Java Pairing-Based Cryptography Library 对PBC库(C语言)的Java封装 常用于基于配对的密码学算法仿真(身份基加密、属性基加密等) 2. JPBC环境 JPBC: http://gas.dia.unisa.it/projects/jpbc/download.html JDK: https://www.oracle.com/java/technologies/javase-jdk14-downloads.html IntelliJ IDEA: h 阅读详情

背景介绍

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

本来打算很长一段时间都不更新博客了,甚至打算等我毕业工作后再更新一些有价值的博客,但是最近在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×G2→GT ,它满足以下3个条件:

  • 双线性(Bilinearity):对于任意的 g∈G1 , h∈G2 , a,b∈Zp ,有 e(ga,hb)=
Java实现JPBC密码库的实验 前言 由于自己的密码学实验需要,决定先到CSDN上找一些关于使用JAVA语言在Eclipse上通过JPBC密码库对实验中相关的密码运算进行模拟。但是找了很久发现写JPBC的博客少之又少,如果是使用Java语言实现的就几乎没有。于是自己决定在完成试验之后写一篇自己配置实验环境的心得。   注意 1.首先建立一个Java项目,如TestScheme 2.在项目下创建一个jars文件夹,把... 阅读详情

相关推荐

基于JPBC库实现国密SM9标识密码算法:Java工程实践指南

公钥密码学是现代信息安全的核心基础,它通过非对称加密机制解决了密钥分发和身份认证等关键问题。其原理基于复杂的数学难题,如大整数分解和椭圆曲线离散对数,为数字签名、密钥交换等提供了理论支撑。这项技术的核心价值在于能够在不安全信道中建立安全通信,广泛应用于电子商务、物联网、数字身份等领域。标识密码学作为公钥密码学的重要分支,通过将用户身份标识直接作为公钥,简化了传统PKI体系中复杂的证书管理流程。SM9算法是我国商用密码标准中的标识密码算法,基于双线性对实现,而JPBC库则为在Java平台实现此类算法提供了高效

weixin_42539414的博客 319

基于JPBC库从零实现SM9国密算法:Java实战指南与避坑详解

公钥密码学是现代信息安全体系的基石,它通过非对称加密、数字签名等技术,解决了密钥分发与身份认证的核心难题。其原理基于复杂的数学难题,如大整数分解或椭圆曲线离散对数,为数据传输和身份验证提供了理论保障。在物联网、移动通信等海量终端场景下,传统的证书体系面临管理复杂、开销大的挑战。标识密码学应运而生,它允许将用户的身份标识(如邮箱、设备ID)直接作为公钥,从而简化了密钥管理流程。SM9作为我国商用密码标准中的标识密码算法,基于双线性对数学构造,在无证书认证、轻量级加密等场景中具有独特优势。本文以工程实践为导向,

weixin_29326909的博客 250

分层集成加密与签名方案:实现可签名但不可解密的密码学设计

在数据安全领域,加密与签名是保障机密性、完整性和不可否认性的两大核心技术。加密确保信息只能被授权方读取,签名则用于验证数据来源和防止篡改。其原理基于非对称密码学,通过公钥和私钥的配对实现不同安全目标。这项技术的核心价值在于实现职责分离与最小权限原则,尤其在需要严格权限分割的场景中至关重要。应用场景广泛,包括合规审计、云端数据完整性校验、可信执行环境以及数字版权管理。本文聚焦于分层集成加密与签名方案,深入探讨如何通过精密的密钥分离与算法集成,例如利用双线性配对等技术,构建一个允许实体对数据进行签名验证,同时确

circularr9834的博客 358

CPABE Java 实现详解:从双线性对到策略解密

属性基加密(ABE)是一种支持细粒度访问控制的密码学范式,其核心在于将访问策略嵌入密文、用户属性绑定密钥。CPABE(密文策略型ABE)通过双线性对运算实现策略可验证解密,依赖G1/G2/GT群结构与拉格朗日插值完成密钥份额聚合。该技术显著提升云数据共享、微服务鉴权与合规审计场景下的动态授权能力,避免RBAC硬编码缺陷。本文聚焦CPABE在Java生态的落地实践,覆盖JDK 17适配、pairing库集成、策略树解析及Spring Boot嵌入等关键环节,特别解析‘部门经理 AND (财务权限 OR 审计权

weixin_29323493的博客 178

深入解析BGN全同态加密算法

在加密学领域,全同态加密(Fully Homomorphic Encryption,FHE)是一项突破性的技术,它允许在密文上直接进行计算,并得到加密结果,解密后可获得与在明文上直接计算相同的输出。这种特性赋予了数据以“密文”形式处理的能力,保障了数据隐私和安全,尤其是在云计算和个人数据保护方面具有巨大应用潜力。在这一章中,我们将初步了解全同态加密技术的基本概念、历史背景以及它对当今数据处理和存储的影响。

weixin_32836713的博客 1112

BP (Bilinear Pairing):双线性配对库-开源

在循环组G_1,G_2,G_T中封装双线性配对计算和组计算的库。 双线性对是G_1和G_2之间到G_T中元素的双线性非简并映射。 用户可以通过配对库构建复杂的基于配对的软件,而无需对椭圆曲线或配对或数论有足够的了解。 该库小于57 KB,适用于手持设备。 该大小仅为BPC库大小的3.7%。 支持的最大组大小为911位。 可以很容易地为Android,ARM或x86 CPU编译该库。 该库的API与PBC库兼容。 对于PBC库用户来说,只需稍作修改,就可以轻松地将其程序移植到该库中。

在线迭代RLHF实战:从原理到实现,复现超越官方指令模型的工作流

大语言模型(LLM)的对齐技术是提升其与人类意图一致性的关键。其中,基于人类反馈的强化学习(RLHF)通过引入人类偏好信号,指导模型优化生成策略,是实现模型“有用”与“无害”的核心方法。其技术价值在于将抽象的“对齐”目标转化为可优化的奖励信号,从而显著提升模型在对话、推理等任务中的表现。然而,传统的离线RLHF存在数据分布偏移和奖励黑客等瓶颈。在线迭代RLHF通过构建“生成-评估-学习”的动态数据循环,让模型能够利用自身最新生成的数据进行持续优化,有效克服了上述问题,成为当前提升指令模型性能的前沿方向。本文

weixin_28725037的博客 367

UniApp 与 Taro 深度解析:如何根据项目需求选择最佳跨平台框架?

本文深度对比了UniApp和Taro两大主流跨平台开发框架。UniApp基于Vue生态,提供开箱即用的高效开发体验,尤其适合快速覆盖多端小程序;Taro则根植React范式,架构灵活,便于与现有React生态集成,更适合对性能和原生体验有高要求的复杂项目。文章结合团队技术栈、项目类型及性能需求,为开发者提供了清晰的选型指南。

snow3的博客 200

ANPC三电平拓扑:两种调制方式解析

ANPC结构是基于“I”型NPC结构(下面讲NPC如不特殊说明,均指的是“I”型结构NPC)发展出来的一种改进型。我们在讲NPC结构的时候会谈到他的一个缺点就是损耗分布不均匀,会导致温升不均衡,进而限制模块的功率输出能力。而ANPC结构由于多了两个开关管以及相应的两个中性点换流回路(如下图),可以更加灵活任意的配置开关管可以使损耗没有那么的不均衡,从而能一定程度上提高模块的输出功率。ANPC拓扑结构图以及增加的环流回路。

IOTBOT的博客 9420

不用买显示器!用USBMMID虚拟显示器软件在Win10上扩展4个屏幕(保姆级教程)

本文提供了一份详细的保姆级教程,指导用户如何在Windows 10系统上,无需购买额外硬件,通过USBMMID虚拟显示器软件扩展出多达4个虚拟屏幕。文章深入解析了虚拟显示器的核心原理,并基于微软IDD框架,手把手教学从软件获取、环境检查到安装配置的全过程,帮助开发者和多任务用户构建高效、免费的虚拟多屏工作站,实现生产力的飞跃。

backprop5master的博客 653

2025年前端框架全景解析:React、Vue、Angular的生态与未来之争

前端框架的竞争本质是工程哲学的分野:React的灵活、Vue的简洁、Angular的严谨,分别对应不同场景需求。

科技D人生 4840

Python 爬虫教程:企业官网基本信息抓取

本文介绍了使用Python爬虫技术抓取企业官网信息的方法,包括公司名称、简介、联系方式、地址、产品及新闻等数据。通过Requests和BeautifulSoup库实现网页请求与解析,并利用Pandas存储数据为CSV文件。同时提供了应对反爬虫机制(如设置User-Agent、代理IP池、延迟请求等)的解决方案,帮助高效获取企业公开数据。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1856

华为嵌入式面试题及参考答案(持续更新)

异步是指在程序执行过程中,某些任务不需要等待立即完成就可以继续执行其他任务的过程。在计算机编程中,异步通常用于处理长时间运行的操作,如文件读写、网络通信等,以避免阻塞主线程。异步处理通常涉及到回调函数、事件循环、协程或未来的概念。使用宏定义来避免命名冲突。#else#endif堆和栈是计算机程序中用于存储数据的两种不同类型的内存区域。

大模型大数据攻城狮的专栏 2474

ADS基础教程22 - 有限元电磁仿真(FEM)

一、引言二、FEM操作过程1.新建Layout1.新建Layout2.EM设置3.设置Frequency plan4.设置Output plan5.设置Options6.设置网格频率7.仿真结果三、总结介绍了在ADS中如何进行FEM仿真过程。END!}}END!

XZ_ZC的博客 2572

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: Java密码学原型算法实现——第二部分:单钥加密算法
下一篇: Google Java编程风格指南 - 转载及自己的标注
刘巍然(学酥)
博客等级 码龄13年 470粉丝 37原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值