- 博客(61)
- 资源 (12)
- 问答 (1)
- 收藏
- 关注
原创 密码学系列7-变幻多端的安全性证明
验证者验证签名合法性的时候,只能确定签名者属于这个用户集合,但是不能确定具体是谁一个人签的。前几篇文章给出的安全性证明基本沿用了系列2中的安全性模型。IBE中用户的公钥是身份ID(比如身份证号,学号,工号等),而私钥需要利用ID进行问询获得。显然不能,用户的公钥是和身份ID捆绑起来的。本章给出两个安全性证明的例子,让读者感受如何定义安全需求并设计安全性证明。的私钥(得到就能解密了),那么他能问询其他ID的私钥吗?2.考虑环签名的匿名性,需要实现签名者的匿名。1.作为签名方案,需要实现签名的不可伪造性。
2024-04-24 09:46:38 139
原创 密码学系列6-随机预言机模型和标准模型
因为哈希函数的输出应该是随机的,而我们却控制了他的输出。并且存在在随机预言机下模型下证明了安全性的方案,现实中却被证明不安全。但是标准模型下的方案更具现实意义,所以读者阅读论文时,会发现有的工作便是将随机预言机模型下安全的方案改为标准模型下安全的方案。随机预言机模型通常是现实中哈希函数的理想化的替身。对相同的输入,有相同的输出。而在现实构造中,我们只能做到伪随机,而无法构造真正的均匀随机的输出。在安全性证明中,挑战者通常会对哈希函数的输出进行设定,从而达到一些目的。次输出,按我们的需求进行了设定。
2024-04-24 09:45:15 299
原创 密码学系列5-BLS短签名和存在不可伪造性(EUF-CMA)
这个方案是很多签名方案的基础方案,学会这一个方案,也就学会了这一系列方案的安全性证明。从这个方案,大家应该能感受到为什么会强调敌手进行多项式有界次数问询了。敌手伪造签名的时候,他也会对要伪造签名的那个消息进行哈希问询。最后,看完系列4和系列5后,大家注意区分两个方案对哈希函数是如何处理的,是不是感觉很神奇。如果存在敌手伪造BLS签名,那么我们可以构造算法求解CDH问题。2.如果敌手对消息m发起签名问询,那他一定先对m进行过哈希问询。BLS签名是一个确定性签名,签名过程没有使用随机数。
2024-04-23 11:03:38 287 1
原创 密码学系列4-选择密文安全,同态加密安全性
本章将介绍Cramer-Shoup加密方案,并证明其安全性。如果存在敌手能攻破Cramer-Shoup加密方案,那么就能构造算法求解DDH问题。同理还有加法同态(如RSA),同时实现乘法和加法的全同态。解密问询,挑战者有对应私钥,它可以按照正常算法进行解密。最后,讨论以下同态加密是否能够实现IND-CCA2安全?思考,具有这种性质的方案能否实现IND-CCA2?提醒IND-CCA1,思考为什么CCA1就可以呢?同阶段一,只是不能对挑战密文进行问询。,挑战者输出1,否则输出0。后,它可以自己生成一个消息。
2024-04-23 11:02:40 159 1
原创 密码学系列0-总述
2.密码学常用困难性问题:CDH,DDH,DLP,BDH等。然后讨论问非对称,对称双线性配对上困难性问题。3.介绍了密码学中常用的安全性模型:IND-CPA,IND-CCA1,(selective,adaptive) IND-CCA2,EUF-CMA。并且在每一篇文章中,给读者一些思考,从浅入深一步步学会可证明安全。4.介绍了Elgamal加密,并证明了其IND-CPA安全。5.介绍了BLS短签名,并分析了方案的EUF-CMA安全。通过这一系列文章,帮助读者能快速入门密码学安全性证明。
2024-04-22 19:45:24 63 1
原创 密码学系列3-Elgamal加密及其IND-CPA安全性证明
但这没有任何影响,敌手本身就只能知道公钥,他并没有能力知道挑战者是否知道对应的私钥。所以上述整个游戏就是一个模拟实验,敌手无法区分挑战者运行的是这个模拟实验,还是真正的按照第一节的算法构造的实验(挑战者知道私钥…为什么合起来的时候有1/2:因为T既可能是随机的也可能是g^{ab},这两种情况概率为1/2。能够攻破Elgamal加密方案,那么挑战者利用敌手的能力构建下面游戏,来求解困难性问题DDH。就是挑战者选的随机数,虽然挑战者自己也不知道。),否则挑战者输出0,作为DDH的回答。
2024-04-22 19:38:59 98
原创 密码学系列2-安全模型(CPA,CCA,selective,adaptive)
本章介绍了安全模型中的CPA,selective/adaptive CCA, EUF-CMA。
2024-04-22 19:36:44 238
原创 密码学系列1-安全规约
本篇介绍了安全性规约的概念,双线性映射,常见困难性问题(离散对数,CDH,DDH,BDH)。一、大家初看密码方案的时候,一定迷惑于为什么论文用大篇幅进行安全性证明。为什么需要证明安全性呢?比如一个加密方案,若定义安全性为敌手得不到完整密文,那么敌手就很有可能有能力得到部分密文。而安全的加密方案应该使得敌手得不到任何有用的消息。利用安全性规约,我们能够很优雅、规范、严谨地证明我们方案能够达到的安全性。二、通常是将我们的方案归约到某一个公认的困难性问题上(如离散对数等).证明思路是如果存在算法攻破我们
2024-04-22 19:35:36 97
原创 格密码教程(六):高斯二维格规约,解决SVP问题
前面文章也看到了好的基对算法结果有很大影响,在2维格中寻找最优基的算法基本上来源于高斯的原因。基本的想法是从一个基向量中交替减去另一个基向量的倍数,直到不可能进一步改进。假设L⊂R2L⊂R^2L⊂R2是一个具有基向量v1v_1v1和v2v_2v2的二维格。我们要求∥v1∥<∥v2∥\left \|v_1\right \|<\left \| v_2\right \|∥v1∥<∥v2∥,当v1,v2v_1,v_2v1,v2长度不满足要求时,交换v1v_1v1和v2v_2v2。
2021-08-28 22:25:35 872
原创 格密码教程(五):Babai‘s algorithm和求解apprCVP算法
一.apprSVP和apprCVP:apprSVP: 设ψ(n)ψ(n)ψ(n)是一个关于nnn的函数。在维数为n的格L中,找到一个不超过最短非零向量长度的ψ(n)ψ(n)ψ(n)倍的非零向量。换句话说,如果vvv是格LLL中最短的非零向量,则找到一个非零向量v∈Lv∈Lv∈L满足:∥v∥≤ψ(n)∥vshortest∥\qquad \left \|v\right \| \leq \psi(n)\left \|v_{shortest}\right \|∥v∥≤ψ(n)∥vshortest∥函数ψ(n
2021-08-27 23:03:16 1001 2
原创 格密码教程(四):SVP和CVP,Hermite定理,Blichfeld定理和Minkowski定理
一.首先对格上的两个基本问题进行描述:1.SVP: 在格L中找到一个最短的非零向量,即找到一个使欧几里得范式∥v∥\left \| v\right \|∥v∥最小化的非零向数v∈Lv∈Lv∈L2.CVP: 给定一个不在格L中的向量w∈Rmw∈R^mw∈Rm,找到一个最接近www的在格上的向量v∈Lv∈Lv∈L,即找到一个使欧几里得范数∥w−v∥\left \| w-v\right \|∥w−v∥最小化的向量v∈Lv∈Lv∈L。注意在一个格中可能有多个最短的非零向量。例如,在Z2Z^2Z2中,四个向量
2021-08-26 22:17:44 1224
原创 格密码教程(三):基础域概念,体积等;阿达马不等式,行列式
格类似于向量空间,只是它是由整数系数的基向量的所有线性组合生成的,而不是使用任意的实系数。可以将格看作是RmR^mRm中点的有序排列,其中我们在每个向量的顶端放置一个点。下图显示了R2R^2R2中一个格的一个例子。上图中F是一个基础区域(fundamentaldomain)( fundamental domain)(fundamentaldomain),设L是维度为n的格,设v1,v2,...,vnv_1,v_2,...,v_nv1,v2,...,vn是L的基。对应的L的基本域是集合F(v1,..
2021-08-25 11:40:25 477
原创 格密码教程(二):格的基本定义,格基转换
大致体验: 什么是格?它是n维空间中的一组具有周期性结构的点,如图所示是在R2R^2R2上的格。一.格定义: 设v1,...,vn∈Rmv_1,...,v_n∈R_mv1,...,vn∈Rm是一组线性无关的向量。由v1,...,vnv_1,...,v_nv1,...,vn生成的格L是v1,...,vnv_1,...,v_nv1,...,vn与在整数群Z上的系数的线性组合的集合:L=a1v1+a2v2+⋅⋅⋅+anvn:a1,a2,...,an∈Z.\qquad L = {a_1v_1 +
2021-08-24 15:27:29 898
原创 格密码教程(试读):向量空间,基等介绍
在开始格密码学习之前,首先复习一下线性代数中重要的定义和概述。本节将向量空间定义在RmR^mRm上(m是正整数)。首先介绍一些重要的定义。(文中考虑在的RmR_mRm(m为正整数)中包含的向量空间。)Vector Space(向量空间)向量空间是RmR^mRm上的子集且满足以下性质:α1v1+α2v2∈V,(所有的α1,α2属于R,所有的v1,v2属于V)\qquad \alpha_1 v_1+\alpha2v_2 \in V,(所有的\alpha_1,\alpha_2属于R,所有的v_1,v_2属
2021-08-24 10:13:22 285
原创 格密码教程(一):向量空间,基,施密特正交化等介绍
在开始格密码学习之前,首先复习一下线性代数中重要的定义和概述。本节将向量空间定义在RmR^mRm上(m是正整数)。首先介绍一些重要的定义。Vector Space(向量空间)向量空间是RmR^mRm上的子集且满足以下性质:α1v1+α2v2∈V,(所有的α1,α2属于R,所有的v1,v2属于V)\alpha_1 v_1+\alpha2v_2 \in V,(所有的\alpha_1,\alpha_2属于R,所有的v_1,v_2属于V)α1v1+α2v2∈V,(所有的α1,α2属于R,所有的v1
2021-08-23 13:06:22 424
原创 JPBC库基于椭圆曲线的Elgamal算法实现(java)
1.算法原理(原理图片直接截的知乎ID徐摆渡)2.代码实现package csdn;import java.math.BigInteger;import it.unisa.dia.gas.jpbc.Element;import it.unisa.dia.gas.jpbc.Field;import it.unisa.dia.gas.jpbc.Pairing;import it.unisa.dia.gas.jpbc.PairingParameters;import it.unisa.dia
2021-05-27 11:14:01 37
原创 不经意传输(oblivious transfer)
定义oblivious transfer(OT)是一个两方协议,输入的一方叫做发送者,产生两个等长的秘密m0,m1m_0,m_1m0,m1,输出的一方叫做接收者。接收者输入一个bit b,返回给他mbm_bmb.发送者没有返回值。(OT12)(OT_{1}^{2})(OT12)发送方有两个秘密,想将其中之一发给接收方,接收方得到了其中一个秘密,但是发送方不知道接收方收到了哪个秘密。(OT1n)(OT_{1}^n)(OT1n)发送方有n个秘密,想将其中之一发给接收方,接收方得到了其中一个秘密,
2021-04-06 22:17:41 966
原创 secret sharing;拉格朗日插值,shamir秘密分享,peterson秘密分享
秘密分享系统中为了将秘密s在参与方p1,p2,...,pn{p_1,p_2,...,p_n}p1,p2,...,pn中进行分享。系统为每个参与者分配子秘密spis_{p_i}spi,只有特定的用户能够恢复出秘密,而其他用户得不到s的任何信息。1.拉格朗日插值法2.Peterson可验证秘密分享假设p1,p2,...,pnp_1,p_2,...,p_np1,p2,...,pn是秘密分享的参与方,令p为大素数,q为p-1的素因子,g为Zp∗Z_p^{*}Zp∗中的一个元素(g就是这个群
2021-04-06 16:10:34 958
原创 LSSS线性秘密共享方案详细构造方法与原理解释试读
关于LSSS1LSSS英文精确定义如下:翻译后:一个关于参与者集合P\RhoP关于秘密分享方案Π\PiΠ在ZpZ_pZp上是线性的,则需要满足以下条件:1.每一个参与者的分享份额(见2点)构成ZpZ_pZp上的一个向量;2.存在一个关于Π\PiΠ的秘密生成矩阵MMM,这个矩阵有mmm行ddd列,对于i=1,2,....mi=1,2,....mi=1,2,....m,MMM的第iii行MiM_iMi被一个参与者ρ(i)\rho(i)ρ(i)标识,ρ\rhoρ是一个从{1,2,...,m}
2021-03-09 16:40:27 4355
原创 Eclipse安装Alibaba Cloud Toolkit并连接阿里云云数据库
一.1.第一种方法。eclipse菜单栏help->Eclipse Marketplace.2.第二种方法。eclipse菜单栏help->install new software输入:http://toolkit.aliyun.com/eclipse/二.安装成功后出现以下图标三。登录阿里云管理控制台,右上角头像如下图获取Accesskey。获取到AccessKey ID和AccessKey Secret四。在eclipse的windows->preferenc
2021-03-05 16:21:33 430
原创 3.eclipse对mysql云数据库编程增删改查
我们在数据库study中创建了student表。package mysqltest;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.List;/*创建测试类*
2021-03-05 15:52:44 243
原创 2.Eclipse上mysql插件配置及远程连接云数据库测试
一.下载jar包直接从网站下载https://dev.mysql.com/downloads/connector/j/或者直接从我的分享下载jar包链接:https://pan.baidu.com/s/1mAJfHwxAFkFzVbfBfS7acg提取码:f4tj复制这段内容后打开百度网盘手机App,操作更方便哦二.将jar包导入1.在Eclipse下创建新项目,我们创建project2.导入jar包选中项目,右键build path->configure build p
2021-03-05 15:40:53 205
原创 1.阿里云RDS配置白名单,实例,外网地址,mysql数据库。
本分栏主要讲解云数据库连接,配置就简要介绍。一.租用阿里云数据库后,我们需要创建一个实例。二.点击进入实例,配置白名单。3.在实例界面里我们创建
2021-03-05 15:15:44 1427
原创 LSSS线性秘密共享方案详细构造方法与原理解释
关于LSSShttps://zhuanlan.zhihu.com/p/216647411LSSS英文精确定义如下:翻译后:一个关于参与者集合P\RhoP关于秘密分享方案Π\PiΠ在ZpZ_pZp上是线性的,则需要满足以下条件:1.每一个参与者的分享份额(见2点)构成ZpZ_pZp上的一个向量;2.存在一个关于Π\PiΠ的秘密生成矩阵MMM,这个矩阵有mmm行ddd列,对于i=1,2,....mi=1,2,....mi=1,2,....m,MMM的第iii行MiM_iMi被一个参与者
2021-02-23 23:04:09 2982
原创 type A1使用
区别我们常使用type A,type A1两种曲线。type A是素数阶的,type A1与其很类似,但其G1,G2,GTG_1,G_2,G_TG1,G2,GT的阶是合数NNN.NNN是一系列素数的乘积N=p1p2...pnN=p_1 p_2...p_nN=p1p2...pn.对双线性映射e:G1×G2→GTe:G_1 \times G_2 \rightarrow G_Te:G1×G2→GT同样满足双线性的性质。合数阶群与素数阶群的区别在于,他有一系列子群:阶为pip_ipi的子群G
2021-02-20 16:23:28 1077 2
原创 密码学二次剩余困难性问题The Quadratic Residuosity Problem
注:需要有密码学基础才能看懂,全文以N=21举例基础推导:假设模数N=p⋅qN=p\cdot qN=p⋅q 。p和q是两个不同的奇素数,N是一个Blum Integer(参考链接)。举例N=21(p=3,q=7).ZN∗Z_N^{*}ZN∗是他的简化剩余系。则ZN∗Z_N^{*}ZN∗含有(p−1)⋅(q−1)(p-1)\cdot (q-1)(p−1)⋅(q−1)个元素(原理:欧拉函数).N=21,ϕ(N)=2∗6=12,ZN∗={1,2,4,5,8,10,11,13,16,17,19,20}.N
2021-02-08 17:46:10 2039
原创 Blum Integer的定义及举例
定义:Blum Integer是一个半素数(半素数是指两个素数的乘积),设N是Blum Integer,N=P⋅QN=P\cdot QN=P⋅Q。且P和Q都是满足3=x(mod4)3=x(mod4)3=x(mod4)的,即P和Q均可表示为4t+3(t为整数)的形式4t+3(t为整数)的形式4t+3(t为整数)的形式注意:由于这两个因子都是半素数的条件,偶数不能是Blum整数,20以下的数也不能是Blum整数,当需要找Blum Integer时,我们只需要检查大于20的奇数整数是否是Blum整数。下面举
2021-02-06 11:12:31 1047 1
原创 CP-ABE公式推导笔记
推导公式M=C0⋅e(C2,D2)∖e(C1,D1)M=C0 \cdot e(C2,D2) \setminus e(C1,D1) M=C0⋅e(C2,D2)∖e(C1,D1)C0=M⋅ZsC0=M \cdot Z^{s} C0=M⋅ZsC1=gsC1=g^{s}C1=gsC2=(h0∏j∈S⋃Ωhj)sC2=(h0 \prod_{j \in S \bigcup \Omega}^{}h_j)^{s}C2=(h0j∈S⋃Ω∏hj)sD1=∏i∈A′⋃Ω(ai∏i∈S⋃Ω,j≠i(ci,j))Δi,
2021-01-27 18:33:13 1403
原创 KP-ABE基于属性的加密加解密算法及Access Tree构建
注:本文加解密算法构建完全参考经典ABE paper:Attribute-Based Encryption for Fine-Grained Access Control of Encrypted Data。一.ABE介绍ABE算法有两种类型,KP-ABE(Key-Policy Attribute-based encryption)和CP-ABE(Ciphertext-policy Attribute-based encryption)。从名字就可以看出CP-ABE 密文与AccessTreeAcc
2021-01-25 13:48:15 1471 2
原创 TLS配置和流量分析实验
TLS配置和流量分析实验1)理解 TLS 协议原理;2)掌握 apache 服务器的 HTTPS 配置方法;3)掌握 TLS 流量分析方法。https://download.csdn.net/download/qq_41359358/14028251
2021-01-05 19:31:11 2670
原创 JPBC库只使用椭圆曲线群,不使用双线性性质。找单位元,逆元等
JPBC库是一个功能很强大的数学库,用于生成椭圆曲线,双线性等,但网上参考资料很少,重复度极高,该分栏用于安装,JPBC参数解释,生成椭圆曲线群,整数群(不用双线性性质),双线性映射教学。内容原创,禁止任何形式转载!下面代码给出了椭圆曲线上找生成元,单位元,逆元,加法,乘法方法:public class csdn {//coder:CSDN USER ID:qq_41359358 最帅小朋友 public static void main(String[] args) { // TODO Au
2020-12-14 13:32:24 1446
原创 JPBC参数介绍Element,Field,Point等
JPBC库是一个功能很强大的数学库,用于生成椭圆曲线,双线性等,但网上参考资料很少,重复度极高,该分栏用于安装,JPBC参数解释,生成椭圆曲线群,整数群(不用双线性性质),双线性映射教学。内容原创,禁止任何形式转载!1.java doc编程时一定要对照着下面的doc文档,遇到不会的就去查,里卖弄包括了JPBC实现的函数及类型等。Java doc2.生成椭圆曲线和群JPBC有两种方式生成第一种官方文档给出了自定义生成椭圆曲线方式,rbits,qbits表示参数长度,和安全性有关。下面代码是官
2020-12-14 13:03:02 3215 5
原创 Eclipse JPBC library安装及测试
Eclipse JPBC library安装及测试资源下载路径:安装配置:JPBC库是一个功能很强大的数学库,用于生成椭圆曲线,双线性等,但网上参考资料很少,重复度极高,该分栏用于安装,JPBC参数解释,生成椭圆曲线群,整数群(不用双线性性质),双线性映射教学。内容原创,禁止任何形式转载!资源下载路径:Eclipse及Java配置自行进行JPBC: JPBCJDK: JDKEclipse:Eclipse 安装配置:1.在Eclipse下创建新项目,我们创建一个叫JPBC的project
2020-12-14 11:29:39 1079
原创 postgresql,pgadmin4安装后出错,界面只有文字
问题描述安装后界面如下图所示,安装过程完全没错,但是启动后界面就这样解决办法初步可能是端口被占用,我排查解决过各种问题都没办法解决目前我知道的唯一解决方法是重装系统,先安装数据库就不会有问题(亲测有效)或者嫌麻烦的使用云数据库吧。...
2020-11-30 21:11:31 455
原创 win10下VMware虚拟机打开黑屏死机
问题描述很久没打开虚拟机,最近打开虚拟机发现打开后黑屏,点关闭虚拟机后虚拟机无反应,而且关不掉VMware,弹出说虚拟机繁忙。解决办法我尝试了网上各种解决办法,全部没有p用。尝试重装新的虚拟机发现可以打开,但关机后再多开两次出现同样问题。最终解决方法(血泪)发现是VMware版本太低,15都太低了。下载了最新的VMware安装后,打开原来有问题的虚拟机,全部都没有问题了。哭死,呜呜呜~(可能不能解决所有人问题,但可以试试,万一有效呢。如果有效能否要个打赏呢,我从来没收到过嘤嘤嘤,好想找人要一个呀
2020-11-30 21:00:11 2093
原创 运行初始化过程代码笔记
package java_learn;import static out.Print.*;//学习多态,覆盖,动态静态绑定,向上向下转型class M{ M(){ println("A"); }}class topclass{ public topclass() { println("topclass constructor"); //out2(); println(b); } static int m=printInit(); M n=new M();//!!!
2020-08-17 18:06:38 85
原创 IEEE754阶码真值范围问题
以32为浮点数为例为什么阶码真值范围为-126-127.比如有人会觉得阶码真值加上偏置量127可以为255(11111111),那做个减法真值可以为128呀。其实提出这个问题只是因为你没注意到IEEE754的一些规定:阶码E全为1且尾数各位非全0时,为无效浮点数。阶码全为1尾数全为0时,浮点数表示正负无穷。所以当阶码真值超过127即可表示最大正数时,这种情况是阶码发生上溢,认为是无穷。同理对于为什么真值不能为-127(加上127为0):阶码E各位为0且尾数M各位为0,浮点数为F=0;阶码E
2020-06-20 17:26:26 6316
原创 详细解释基址寻址和变址寻址区别
基址寻址定义:指令中给出一个寄存器号和一个形式地址,寄存器的内容为基准地址,形式地址是作为偏移量。基准地址加上偏移量作为操作数的有效地址。变址寻址定义:指令给出一个寄存器号和形式地址,寄存器的内容作为偏移量,形式地址作为基准地址。基准地址加上偏移量得到有效地址。思考从两者定义来看,感觉没有多大区别。只是寄存器中存放基准地址还是偏移地址。为什么不看成一种呢?我们来详细解释。基址寻址基址寻址中的基址寄存器内容通常由操作系统或管理程序确定,程序执行过程中值不可变。其偏移量可变。主要是面向系统的。
2020-06-16 21:49:16 23384 3
原创 Java(六)字符串,StringBuilder,String操作,格式化输出
不可变stringstring对象是不可变的,string类中每一个看起来会修改string值的方法,实际上是创建一个全新的string对象,以包含修改后的字符串内容。最初的string对象并没有发生变化。当把q传给upcase时,实际传递的是引用的一个拷贝。string对象不可变,可以给string对象添加任意个别名。因为其只读特性,所以任何指向它的引用都不可能改变它的值。重载为string对象重载的“+”操作符。重载的意思是一个操作符在应用于特定的类时,被赋予了特殊的意义(用于string的"
2020-06-15 20:14:43 1080 1
电子科技大学网络安全协议实验报告TLS配置和流量分析实验.docx
2021-01-05
电子科技大学网络安全协议实验报告WPA-PSK口令实验.docx
2021-01-05
电子科大操作系统实验课Linux通过管道实现进程间通信
2021-01-05
电子科大操作系统课程报告信号量哲学家就餐,生产者消费者实验_信号量生产者消费者pv完整代码
2021-01-05
计算机网络交换机Vlan实验.doc
2021-01-05
电子科技大学软件安全搜索API实验
2021-01-05
电子科技大学软件安全逆向实验.docx
2021-01-05
多进程多线程时间服务.zip
2020-05-20
postgresql运行界面出错如何解决
2019-03-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人