期末公钥密码复习笔记--个人杂记

本文深入探讨了密码学中的关键概念,包括密钥交换协议如DH,公钥密码体制如RSA及其安全性分析,以及数字签名如RSA和EIGamal的工作原理。内容涵盖有限域上的离散对数问题、中间人攻击、选择明文攻击以及ECC和杂凑函数的应用。此外,还讨论了数字签名在消息完整性和身份验证中的重要性。

这篇是密码学考试复习的个人笔记,我写的目的也是想记录一下学习生活,如果有什么错误也请大家指正

问题一

公钥密码的思想:密钥协商协议的提出的背景,单向可交换函数,DH密钥交换协议及中间人攻击,有限域上的离散对数问题;公钥密码提出的背景,单向陷门函数,利用单向陷门函数设计公钥密码的方法,安全性要求。

密钥协商协议的提出的背景

关于研究如何利用公开信道共享保密的密钥的问题

单向可交换函数

单向函数

任给定义域中的xxx,计算y=F(x)y=F(x)y=F(x)容易,而给定yyy求相应的xxx使y=F(x)y=F(x)y=F(x)​​​困难 的函数

可交换性

Ea(Eb(g))=Eb(Ea(g))E_a(E_b(g))=E_b(E_a(g))Ea(Eb(g))=Eb(Ea(g))​​,主要保证加解密的正确性

  • 有限域上的离散对数问题
  • (ga)bmodp=(gb)amodp(g^a)^b mod p=(g^b)^a mod p(ga)bmodp=(gb)amodp
  • gamodp,gbmodp→困难a,bg^a mod p,g^b mod p\xrightarrow{困难}a,bgamodp,gbmodpa,b
  • g,a,b→容易gamodp,gbmodpg,a,b\xrightarrow{容易}g^a mod p,g^b mod pg,a,bgamodp,gbmodp
DH密钥交换协议及中间人攻击
  • DH密钥交换协议

​ 公开参数:p(素数模数),g(生成元)p(素数模数),g(生成元)p(),g()

x1x_1x1为A的私钥,x2x_2x2为B的私钥

​ A:随机选取x1∈Zp∗x_1\in Z^*_px1Zp计算y1=gx1modpy_1=g^{x_1} mod py1=gx1modp

​ B:随机选取x2∈Zp∗x_2\in Z_p^*x2Zp,计算y2=gx2modpy_2=g^{x_2} mod py2=gx2modp

​ 两人交换y1y_1y1y2y_2y2的值

​ 公钥k=gx1x2modpk=g^{x_1x_2}mod pk=gx1x2modp

​ A计算y2x1=gx1x2y_2^{x_1}=g^{x_1x_2}y2x1=gx1x2​,B计算y1x2=gx1x2y_1^{x_2}=g^{x_1x_2}y1x2=gx1x2​​

DH密钥交换协议实现的目标:A,B之间共享了一个只有他们知道的密钥K.

  • 中间人攻击:(主动攻击)

    α\alphaα冒充B和A共享了一个密钥k1k_1k1

    α\alphaα冒充A和B共享了一个密钥k2k_2k2

根本原因:缺乏消息源的认证

公钥密码提出的背景

对称密码的密钥的分配、存储与管理是非常棘手的问题

单向陷门函数

一个函数如果满足如下两个特性:

  • 任给定义域中的xxx,计算y=F(x)y=F(x)y=F(x)​容易

  • 如果不知道函数F的构造特性,则对于值域中的y,求相应的xxx,使y=F(x)y=F(x)y=F(x)是计算困难;若知道F的构造特性,则求满足y=F(x)y=F(x)y=F(x)成立的xxx容易。

则称为单向陷门函数,构造特性叫作陷门.

利用单向陷门函数设计公钥密码的方法&&安全性要求

设计公钥密码的方法

①将做为加密变换公开

②任何人均可将明文xxxFFF加密得到密文y=F(x)y=F(x)y=F(x)

③合法用户利用陷门信息容易由yyyxxx,实现脱密

④不掌握陷门信息者无法由密文求得明文。

安全性要求

①由公开密钥无法解出保密密钥。

②无解密密钥的用户无法由密文求得明文

问题二

RSA算法:RSA基于的单项陷门函数是什么?基于的数学困难问题是什么?算法原理(密钥生成,加密和解密算法);安全性分析,包括选择明文攻击,选择密文攻击,攻击成功的原因是什么?对RSA的共模攻击。如何对RSA算法进行改进,使得其能够抵抗选择明文攻击。

RSA基于的单项陷门函数是什么?

nnn​​是一个大合数,若(e,φ(n))=1,f(x)=xe mod n\big(e,\varphi(n)\big)=1,f(x)=x^e\:mod\:n(e,φ(n))=1,f(x)=xemodn​​​是一个单向陷门函数

y=f(x)=xe mod ny=f(x)=x^e\:mod\:ny=f(x)=xemodn​其中(e,φ(n))=1\big(e,\varphi(n)\big)=1(e,φ(n))=1

x=f−1(y)=yd mod nx=f^{-1}(y)=y^d\:mod\:nx=f1(y)=ydmodn​​​​其中ed≡1(mod p)ed\equiv1(mod\:p)ed1(modp)

解密过程:(me)d≡m mod n,ed≡1 mod(φ(n))(m^e)^d\equiv m\:mod\:n,ed\equiv1\:mod\big(\varphi(n)\big)(me)dmmodn,ed1mod(φ(n))​​​(mmm为明文,n,en,en,e为公开参数,ddd​为私钥)​​​​

基于的数学困难问题是什么?

大整数分解问题的困难性,φ(n)\varphi(n)φ(n)​​的求解是困难的

若已知的整数nnn​分解形式,则容易求出ddd,若的整数nnn分解形式是未知的,则求解ddd​是困难的。

n=pqn=pqn=pq​(p,q均为大素数)φ(n)=(p−1)(q−1)\varphi(n)=(p-1)(q-1)φ(n)=(p1)(q1)

*知道公钥eee​求出ddd​必须有φ(n)\varphi(n)φ(n)*​

算法原理(密钥生成,加密和解密算法)

密钥生成

首先选取两个大素数 pppqqq​,计算出N=pq,φ(pq)=(p−1)(q−1)N=pq,\varphi(pq)=(p-1)(q-1)N=pq,φ(pq)=(p1)(q1)

选取加密密钥eee​​​满足1<e<φ(N)1<e<\varphi(N)1<e<φ(N)​​​且(e,φ(N))=1\big(e,\varphi(N)\big)=1(e,φ(N))=1​​​**(加密密钥eee​​​的取值最多有φ(φ(N))\varphi\big(\varphi(N)\big)φ(φ(N))​​​个,对于RSARSARSA​​​变形算法,eee​​​的取值最多有φ(λ(N))\varphi\big(\lambda(N)\big)φ(λ(N))​​​个),λ(N)=lcm(p−1,q−1))\lambda(N)=lcm(p-1,q-1))λ(N)=lcm(p1,q1))​​**

ed≡1 mod(φ(N))ed\equiv1\:mod\big(\varphi(N)\big)ed1mod(φ(N))​​​求出eee​​的唯一逆元ddd​​,作为脱密密钥​​

加密

使用公钥eee加密明文mmm​,计算E(m)≡me≡c mod NE(m)\equiv m^{e}\equiv c\:mod\:NE(m)mecmodN​,得到密文ccc

解密

使用私钥ddd脱密计算$D©\equiv c^d\equiv m:mod:N ​,得到明文​,得到明文,m$

安全性分析:选择明文攻击,选择密文攻击,攻击成功的原因是什么?对RSA的共模攻击。

选择明文攻击(小明提前获取考试成绩)

攻击者建立一个字典,字典包含各个明文对应的密文

成功原因:在一个RSA中密文和明文一一对应

选择密文攻击

成功原因:RSA的乘法同态性

c=E(m)=me mod Nc=E(m)=m^e\:mod\:Nc=E(m)=memodN

(m1m2)e mod N=((m1e mod N)(m2e mod N)) mod N(m_1m_2)^e\:mod\:N=\big((m_1^e\:mod\:N)(m_2^e\:mod\:N)\big)\:mod\:N(m1m2)emodN=((m1emodN)(m2emodN))modN

E(m1m2)=E(m1)E(m2)E(m_1m_2)=E(m_1)E(m_2)E(m1m2)=E(m1)E(m2)

攻击者能够查询A的解密机!则攻击者可以得到特定密文对应的明文

对RSA的共模攻击

共模RSARSARSA体制:系统中用户使用相同的NNN

  • 共模RSA系统中任一用户均可破译系统中其他用户的加密消息。

    (eA,dA)→分解N(e_A,d_A)\xrightarrow{}分解N(eA,dA)N​(此处证明复杂,略我也不会)​​

    (N,eB)→dB(N,e_B)\xrightarrow{}d_B(N,eB)dB

  • 共模RSA系统中广播信息是不安全的

    c1=me1,c2=me2c_1=m^{e_1},c_2=m^{e_2}c1=me1,c2=me2

    gcd(ei,ej)=1gcd(e_i,e_j)=1gcd(ei,ej)=1,存在s,ts,ts,t使得sei+tej=1se_i+te_j=1sei+tej=1

    m=msei+tej mod N=meismejt mod N=ciscjt mod Nm=m^{se_i+te_j}\:mod\:N=m^{e_is}m^{e_jt}\:mod\:N=c_i^sc^t_j\:mod\:Nm=msei+tejmodN=meismejtmodN=ciscjtmodN

    已知(c1,c2,e1,e2,N)(c_1,c_2,e_1,e_2,N)(c1,c2,e1,e2,N)可求出mmm

对小加密指数e的攻击

主要是利用孙子定理求解明文mmm先鸽了

问题三

EIGamalEIGamalEIGamal算法:算法的设计思想的来源是什么?算法原理(密钥生成,加密和解密算法)。在实际应用中,若需要加密的消息是全0比特,该怎么处理?对EIGamalEIGamalEIGamal​​的选择密文攻击过程是什么?借鉴SM2加密算法的设计思想,如何将其改成一个选择密文安全的算法。

算法的设计思想的来源是什么?

Diffie−HellmanDiffie-HellmanDiffieHellman密钥交换协议+有限域上的离散对数问题

算法原理(密钥生成,加密和解密算法)

公开参数p(大素数),g(生成元)p(大素数),g(生成元)p(),g()​​,AAA​​和BBB​​​​通信:

B→A:Y=gy mod pB\xrightarrow{}A:Y=g^y\:mod\:pBA:Y=gymodp​​

A→B:X=gx mod p,c=mYx mod pA\xrightarrow{}B:X=g^x\:mod\:p,c=mY^x\:mod\:pAB:X=gxmodp,c=mYxmodp​​

密钥生成

会话密钥:sk=xy=gxy mod psk=x^y=g^{xy}\:mod\:psk=xy=gxymodp

加密算法

c=mYx mod pc=mY^x\:mod\:pc=mYxmodp​,传输(X,c)(X,c)(X,c)

解密算法

m=c ˙(sk)−1m=c\:\dot{}(sk)^{-1}m=c˙(sk)1

???在实际应用中,若需要加密的消息是全0比特,该怎么处理?
  • 选取的私钥取值范围改为[1,p−1]→[0,p−2][1,p-1]\xrightarrow{}[0,p-2][1,p1][0,p2]
  • 使用哈希避免明文全为0的情况
  • 未知
EIGamalEIGamalEIGamal​的选择密文攻击过程是什么?

攻击者已知c=(c1,c2)c=(c_1,c_2)c=(c1,c2)​求明文mmm​​​

c1=gk mod p,c2=hk⋅(mod p)c_1=g^k\:mod\:p,c_2=h^k\cdot(mod\:p)c1=gkmodp,c2=hk(modp)

攻击者查询c=(c1,c2m‘)c=(c_1,c_2m`)c=(c1,c2m)​​得到m‾\overline{m}m

m=m‾⋅m‘−1m=\overline{m}\cdot{}{m`}^{-1}m=mm1

成功的原因:密文的可延展性:给定一份密文ccc,可以得到
与该密文相关的新密文。

???借鉴SM2加密算法的设计思想,如何将其改成一个选择密文安全的算法。
**问题四

ECC:有限域上的椭圆曲线上的特殊加法运算;基于椭圆曲线的DH密钥交换协议;MV算法原理;对MV算法的选择密文攻击过程。

问题五

**杂凑函数:杂凑函数的安全性要求,重要应用领域;**自由碰撞攻击的成功率和数据复杂度之间的关系;利用分组密码算法设计消息认证码的方法

杂凑函数的安全性要求
  1. 单向性(求第一原像不可行).

给出一个杂凑值zzz,求出一个mmm ,使H(m)=zH(m)=zH(m)=z 成立,在计算上不可行的。

  1. 弱无碰撞性(求第二原像不可行)

任意给定一个报文$ m_1​,找出另一个不同的报文​ ,找出另一个不同的报文 m_2​,使得​ ,使得使 H(m_2) = H(m_1)$​ 在计算上不可行。

  1. 强无碰撞性

找出具有相同杂凑值$ H(m_1) = H(m_2)​的两份不同的报文​ 的两份不同的报文 m_1​和​ 和 m_2$​​ ,在计算上是不可行的。

重要应用领域
  1. 数据完整性检验
  2. 伪随机数生成
  3. 数字签名
  4. 密钥推导(??)
???利用分组密码算法设计消息认证码的方法

。。。这是对称密码的部分

问题六

**数字签名: 具有什么特点的公钥加密可转换为数字签名?RSA数字签名原理,针对RSA数字签名方案,分析为什么不能直接对消息进行签名,而必须对消息的杂凑值进行签名?**DSA数字签名的原理。基于对称密码算法、公钥加密算法、数字签名、杂凑函数的保密通信模式。

具有什么特点的公钥加密可转换为数字签名?

并非所有的公钥加密算法都能实现数字签名,只有当加密变换和脱密变换可交换时才可以。

因为数字签名需要签名人使用自己的私钥对自己的消息进行加密得到签名,然后验证者使用公钥验证签名,相当于是对公钥加密的逆运算。

RSA数字签名原理

发送方AAA的参数:NA,eA,dAN_A,e_A,d_ANA,eA,dA

AAA使用私钥dAd_AdA签名消息mmm,计算y≡mdAmod NAy\equiv m^{d_A}mod\:N_AymdAmodNA,发送(y,m)(y,m)(y,m)发给BBB

B使用公钥(NA,eA)(N_A,e_A)(NA,eA)验证,计算m1≡yeAmod NAm_1\equiv y^{e_A}mod\:N_Am1yeAmodNA

m1=m⇔y是A对m的签名m_1=m\Leftrightarrow y是A对m的签名m1=myAm

针对RSA数字签名方案,分析为什么不能直接对消息进行签名,而必须对消息的杂凑值进行签名?

RSA数字签名方案的签名密钥是(d,N)(d,N)(d,N)​, 对消息m1m_1m1​的签名是s1s_1s1​,对消息m2m_2m2​的签名是s2s_2s2​,则对消息m1m2mod Nm_1m_2mod\:Nm1m2modN​的签名值是s1s2s_1s_2s1s2​,无法抵抗伪造攻击

根本原因:RSA的乘法同态性

???基于对称密码算法、公钥加密算法、数字签名、杂凑函数的保密通信模式。
问题七

身份加密方案与传统公钥加密相比,最大的不同是什么?双线性性质是什么,双线性性质的灵活运用。

身份加密方案与传统公钥加密相比,最大的不同是什么?

不需要CA(CA:证书颁发、撤销、更新等)

证书的目的:将Bob的公钥与Bob的身份进行绑定。

???双线性性质是什么,双线性性质的灵活运用。

双线性对:双线性对是定义在代数曲线上的一个可有效计算的双线性映射。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值