密码学大作业

Github账号:
个人博客关于密码学大作业的链接:
题目:RSA大礼包
摘要:
在密码学中,rsa是当今使用最广泛的公开密钥密码体制。它是利用大数分解的困难性而设计的 一种公钥密码算法,凭借其安全性高、体制成熟完善、计算可行性高等优势在公钥密码体制中独树一帜,并在计算机通信、企业身份认证等商业领域得到了广泛的应用。但是不规范的使用rsa会导致很多的安全问题,本次实验就是通过分析一些不规范使用的rsa,编写攻击程序进行破解,从而锻炼我们分析算法能力于程序编写能力,并加深对rsa的理解。
题目描述
题目给出了21个rsa加密后的密文帧于对应的公钥,需要我们通过分析公钥的缺陷来恢复明文。采用 Fermat 分解法和 p - 1 分解法 成功分解了 Frame2、Frame6、Frame10 和 Frame19 的模数并由此得到了正确的明文消 息;使用公共模数攻击法和低加密指数攻击法找到了存在某些安全缺陷的消息片段,成功破 译了 Frame0、Frame3、Frame4、Frame8、Frame12、Frame16 和 Frame20 的明文消 息;借鉴因数碰撞的思想,用欧几里德算法遍历所有模数,求出 Frame1 和 Frame18 的模 数的公因数,进而成功分解了 Frame1 和 Frame18 的模数得到正确的加解密参数,破译了 明文消息;利用已经得到的若干明文片段,通过查阅资料、语义分析等方法,采用猜测明文 攻击,得到了其余分片的所有明文,并验证了其正确性;利用已得到的若干个素数参数,找到了随机数生成的规律,从而破解了所有分片的加解密参数,并对其正确性进行了验证。
过程
理论基础:
费马分解法

费马分解法用于p与q相近的n, 注意到,因此(p+q)/2与根号n相近,通过爆破这个差值能够容易地计算出p+q,从而分解n

Pollard p-1 分解法

如果p-1为k-smooth,则p-1|k!,则通过gcd就能够将n分解

因数碰撞法
对每一个n计算公因数,若能够计算出非0公因数则能够直接将两个n进行分解

共模攻击:
对于使用了相同的n相同m,不同e所对应的两个密文,我们可以通过共模攻击在不分解n的前提下求解出m。由裴蜀定理,对于互素的e有且仅有一对a1,a2,能够满足, 则
def same_module_attack(N , e1 , e2 , c1 , c2):
    d1 = invert(e1 , e2)
    d2 = (d1 * e1 - 1) // e2
    true_c2 = invert(c2 , N)
    return (powmod(c1 , d1 , N) * powmod(true_c2 , d2 , N)) % N

小指数广播攻击
对于e=3与5的几个密文,如果他们所对应的明文相同,则可以通过小指数广播攻击来求解出m,用这种方法只求解出了e-=5的5个密文对应的明文,求不出e=3对应的明文,原因是e=3的三个明文不同,而e=5时五个明文相同,使用中国剩余定理,我们可以解出一个C = ci (mod ni),而这个C = m^5 (mod n1n2…n5),又因为m<ni ,所以C < n1n2…n5,所以该式在ZZ上成立,直接对C开5次方根即可求出m
def CRT(mi, ai):
    M = reduce(lambda x, y: x * y, mi)
    ai_ti_Mi = [a * (M // m) * invert(M // m, m) for (m, a) in zip(mi, ai)]
    return reduce(lambda x, y: x + y, ai_ti_Mi) % M
def small_e_boardcast_attack(nlist , e , clist):
    m = CRT(nlist , clist)
    tmp = iroot(m , e)
    if tmp[1] == 1:
        return tmp[0]
    else:
        return 0

Coppersmith partical m方法

攻击过程
通过对所截获加密帧数据的观察,我们发现:在 21 个片段中,有些片段中的加密密钥是相 同的,具体如下:Frame7、Frame11 和 Frame15 这 3 个分片均使 16 用“3”作为加密密 钥;Frame3、Frame8、Frame12、Frame16 和Frame20 这 5 个分片均使用“5”作为加密 密钥,通过验证,这两组消息分片中的模数各自互素。如果这两组数据是由相同的明文片段 加密得到的,那么它们就完全符合低加密指数攻击条件。所以,我们假设这两组数据均符合 条件,尝试低加密指数攻击法进行破译。下面,分别对两组消息片段进行破译并验证: (1)对Frame7、Frame11 和Frame15 的攻击 ①初次尝试 假设 Frame7、Frame11 和 Frame15 三个片段存在相同的明文,基于该攻击方法的原理, 可以对其进行有效攻击,得到有意义的明文消息。然而在攻击过程中,最终得到的结果并不 符合题目中对明文消息格式的要求,且毫无语义。因此,本次攻击没有成功。说明这三组消 息的明文可能并不完全相同,才导致攻击失败。 ②算法改进 仔细研究该攻击方法的原理,我们发现:其所需的消息个数并非一定要等于公钥值的大小, 即不要求模数 N的个数与公钥 e 的值相同;起决定作用的是m^e 与 N_1,…,N k 的大小关 系(N_1 ,… , N_k为加密时所用消息的模数)。当m^e小于N_1,…,N_k时,可以对其进行 有效攻击。观察题目中明文格式和模数格式的要求:明文长度固定为 512bit,模数长度固定 为 1024bit,针对 e = 3 的攻击情形, | m^3 |=1536 远小于任意两个模数的乘积,因此针对 Frame7、Frame11 和Frame15 的攻击,只要其中任意两个消息存在相同明文,即可进行有 效攻击。 通过改进后的攻击算法,依然未能获得正确的明文消息,因此可得出结论: 这三个消息的明文片段均不相同。 (2)对Frame3、Frame8、Frame12、Frame16 和Frame20 的攻击 借鉴上述改进后的算法思想,先对m^e与N_1,…,N k的大小关系做出判断。通过计算可得 知:当 e = 5 时,只需存在3 个消息拥有相同的加密明文即可实施有效攻击。通过编程实现,对任意 3 个消息片段进行计算均可得到有效的明文消息,且得到的这些明文均相同。由此,破解得到 Frame3、Frame8、Frame12、Frame16 和 Frame20 这 5 个消息 的明文片段,并证明这 5个消息由同一明文片段加密所得。 4) 公共模数攻击 当系统中不同的消息共用一个模数 N,只有 e 和 d 不同,系统将是危险的,此时,攻击者 可能无需分解N就能够恢复明文。通过观察加密帧数据,我们已经知道 Frame0 与 Frame4 中的模数 N是相同的,若这两个消息存在相同的明文,则可以使用共模攻击的方法进行有 效攻击。根据共模攻击的原理,通过编程实现对 Frame0 和 Frame4 进行攻击测试,最终得 到了符合明文格式要求,且具有语言意义的明文消息。在实现过程中,我们采用欧几里得算法,对 21 个模数N两两求最大公因数,需要计算 210 次,其中,Frame0 与 Frame4 中的模数 N 是相同的,不予考虑,计算余下的 209 组模数 N,可得到结果:Frame1 与 Frame18 中的两个模数 N存在不为 1 的最大公因数,进而成 功地对 Frame1 的模数与 Frame18 的模数进行分解,得到重要参数 p 和 q ,并依此计算出 phi( N ) ,再由公钥 e 计算得到私钥 d 。最终,使用私钥 d,根据解密算法得到明文消息, 即可最终实现对密文的完全破解。对得到的明文消息进行加密验证,与所截获密文消息完全 相同。至此,完成了对 Frame1 与 Frame18 的完全破解,得到了有意义的明文消息与 RSA 体制参数p和q。
仔细阅读题目,我们发现,题目中提到“素数p由某一随机数发生器生成”和“素数q可以 随机选择,也可以由随机数发生器产生”这两条重要信息。这意味着,在我们现已分解得 到的 Frame1、Frame2、Frame6、Frame10、Frame18 和 Frame19 这六个分片中的 12 个 素数中,至少有 6 个素数是由同一个随机数发生器生成的。于是我们考虑,能否通过已有的素数,找出随机数的生成规律,进而破解所有的素数参数。
总结
掌握了rsa加密的基础知识和基础攻击方式,提高了自己的编程能力。
参考文献
1.RSA大礼包 - Tr0y’s Blog
2.RSA大礼包-CSDN博客
3.密码学RSA解密之Pollard_rho分解_落雪wink的博客-CSDN博客
4.[BUUCTF]Dangerous RSA ->低加密指数攻击_buuctf dangerous rsa_#_##的博客-CSDN博客
5.陈少真,密码学基础,科学出版社, 2008-05-30.
6.任伟, 现代密码学, 北京邮电大学出版社, 2011 年 4 月
7.冯登国等译,密码学原理与实践(第三版),电子工业出版社
8.谢建全,阳春华,RSA 算法中几种可能泄密的参数选择, 《计算机工程》 2006 年 16 期
9.Don Coppersmith: Finding a Small Root of a Univariate Modular Equation. EUROCRYPT 1996 (LNCS 1070, Springer): 155-165.
10.GMP package, GNU Multiple Precision Arithmetic Library, https://gmplib.org/
11.Magma Computational Algebra System, http://magma.maths.usyd.edu.au/magma/
12.Pari, http://pari.math.u-bordeaux.fr/
13.NTL: A Library for doing Number Theory, http://www.shoup.net/ntl/
14.Whitfield Diffie, Martin Hellman. New Directions in Cryptography[J]. IEEETransactions on Information Theory, 1976, 22(6): 644-654.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hitsz现代密码学作业主要包括以下几个方面的内容。首先,作业会涉及对于对称加密算法和公钥加密算法的理解和应用。对于对称加密算法,作业可能会要求我们理解其工作原理和常用的对称加密算法,如AES、DES等,并能够进行加密和解密的实践操作。同时,还可能需要我们能够了解对称加密算法的优缺点和安全性。 其次,作业可能会要求我们学习和理解公钥加密算法的原理与应用。作业可能会要求我们学习RSA算法,理解其加密和解密的过程,并能够实践操作。同时,我们还需要了解公钥加密算法的安全性和应用场景,以及与对称加密算法的比较。 此外,作业可能会要求我们学习和应用密码学中的哈希函数和消息认证码。我们需要学习哈希函数的原理和常用的哈希算法,如MD5、SHA-1等,并能够进行哈希函数的实践运用。同时,我们还需要了解消息认证码的概念和应用,以及其在保障数据完整性和身份认证方面的作用。 最后,作业还可能会要求我们学习和理解密码学中的数字签名和密钥交换协议。我们需要了解数字签名的原理和应用,以及其在保证消息的真实性和不可抵赖性方面的作用。同时,我们还需要学习密钥交换协议的原理和常见的协议,如Diffie-Hellman密钥交换协议等,并能够进行实践操作。 综上所述,Hitsz现代密码学作业涉及对对称加密算法、公钥加密算法、哈希函数、消息认证码、数字签名以及密钥交换协议的学习和应用。我们需要理解它们的原理与应用场景,并能够进行实践操作。这些作业将帮助我们全面了解和掌握现代密码学的基本概念和技术,为今后的密码学研究和应用奠定基础。 ### 回答2: hitsz现代密码学作业是哈尔滨信息科技大学计算机学院中的一门课程作业。该课程主要介绍现代密码学的基本理论和应用,通过学习和掌握密码学的基本概念、加密算法和安全协议等,培养学生在信息安全领域的专业知识和能力。 在这门作业中,学生需要完成一系列与现代密码学相关的任务。这些任务可能包括选择适当的加密算法来实现安全的数据传输、设计密码学方案来保护敏感数据的机密性、进行密码攻击与防御的实验等。学生需要运用所学的知识和技能,结合实际情境和问题,提出解决方案并完成相应的实验和报告。 通过这门作业,学生可以加深对现代密码学基本原理的理解,提高密码学算法的设计和应用能力。同时,这门作业也能帮助学生培养解决实际安全问题的思维和能力,增强对信息安全的认识和重视程度。 总之,hitsz现代密码学作业是一门具有实践性和综合性的课程作业,通过完成这些作业任务,学生将能够在实际应用中熟练运用密码学的知识和技术,为信息安全提供有效的保护。 ### 回答3: HITSZ现代密码学作业涉及到现代密码学领域的一些基本概念和技术。在作业中,我们需要掌握对称加密算法和公钥密码学的基本原理和应用。对称加密算法包括DES、AES等,公钥密码学包括RSA、椭圆曲线密码学等。作业内容主要包括以下几个方面: 1. 对称加密算法的原理和应用:需要了解DES和AES算法的工作原理,以及它们在实际应用中的使用场景和安全性评估。 2. 公钥密码学的基本原理和应用:需要掌握RSA算法的原理,了解数字签名、密钥交换和身份认证等应用。同时,需要理解椭圆曲线密码学的基本概念和应用场景。 3. 密码学中的安全性分析:需要了解密码学中的攻击模型和常见的攻击手段,如密码分析、密钥泄露等。同时,需要学习密码学的安全性分析方法,如信息论和计算复杂性理论。 4. 实际应用案例研究:通过学习现代密码学的实际应用案例,如SSL/TLS安全协议,可理解密码学在互联网传输安全中的重要性和应用场景。 在完成作业的过程中,我们可以通过查阅相关教材、参考文献以及互联网上的学术资源来加深理解和掌握这些知识。同时,还可以尝试编写一些简单的代码实现,如DES算法的加解密过程,以提升对密码算法的认识。 总之,HITSZ现代密码学作业要求我们深入了解现代密码学的基本知识和技术,以及其在实际应用中的运用。通过完成作业,我们可以加深对密码学的理解,并将其应用于实际场景中,提高信息安全的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值