密码大作业小结

cryptopals

题目描述:

(1) Implement PKCS#7 padding

(2) Implement CBC mode

(3) An ECB/CBC detection oracle

(4) Byte-at-a-time ECB decryption (Simple)

(5) ECB cut-and-paste

(6) Byte-at-a-time ECB decryption (Harder)

(7) PKCS#7 padding validation

(8) CBC bit flipping attacks

过程:

其中(8)的字节翻转攻击:

请添加图片描述

现在如果要将b变成明文c,则可以通过修改密文a,将a修改为abb’即可,不过这个时候会导致原先a处对应的明文产生变化。

MTC3 AES key -encoded in the machine readable zone of a European ePassport

题目描述:

题目给出了护照的一部分内容,以及一份密文。密文的加密密钥根据对应的规则生成,尝试根据提供的信息以及密钥生成规则解密密文。

过程:

1、根据护照的校验规则得到?处代表的字符为7
2、根据ka,kb生成规则,生成ka,kb之后再根据ka,kb的奇偶校验对ka,kb进行更改
3、得到key,进行分组密码解密

PA2 option

题目描述:

AES decrypt a challengecipher text generated usingAES in CBC-mode with PKCS#5 padding.

题目提供发送的密文解密后结果是否符合padding规则的反馈,要求解出给的密文

过程:

请添加图片描述

解密原理大致是:通过能够反馈解密后的明文是否符合padding规则,也就是说我们可以通过改变ciphertext的值,等到出现一个符合要求的padding出现时,就相当于我们同时知道了一部分ciphertext与plaintext,这样通过异或就可以求得红色的部分,在于题目提供的ciphertext异或就可以得到plaintext

RSA加密体制破译题目

题目描述:

题目给出了一些截获的帧,其中包含参数n,e,c。使用数学方法尽可能的进行破解得到明文。

过程:

1、针对frame0, frame4的共模攻击,可以在不分解n的情况下解得密文。
Frame0与frame4两者的模数n相同,假设gcd(e1,e2)=1此时则有e1s1+e2s2 = 1式中,s1、s2皆为整数通过扩展欧几里德算法,得到该式子的一组解(s1,s2),假设s1为正数,s2为负数.因为
c1 = m^e1%n c2 = m^e2%n所以
(c1s1*c2s2)%n = ((me1%n)s1*(me2%n)s2)%n
根据模运算性质,可以化简为
(c1s1*c2s2)%n = ((me1)s1*(me2)s2)%n
即(c1s1*c2s2)%n = (m(e1s1+e2^s2))%n
又前面提到e1s1+e2s2 = 1,所以
(c1s1*c2s2)%n = (m^(1))%n
(c1s1*c2s2)%n = m^%n
即c1s1*c2s2 = m

2、两个不同的模数n存在公因数,而导致n的分解(求解两个数的公因数算法时间复杂度较低)
Frame1与frame18这两个帧所对应的n存在公因数,公因数也就是n的一个因子,通过除法可以得到另外一个因子,也就是能够得到加密算法的私钥,从而解得明文。

3、frame3,8,12,16,20广播攻击
这些帧的加密指数均为5,可以构造一个同余方程组,通过求解同余方程后可以得到一个之后对Cx开5次方根。而对于e=3的情况,同样尝试使用广播攻击,但是最后没有破解成功,可能是因为所提供的帧的数量不够,最后通过中国剩余定理所得到的式子中的Cx还是模n’意义上的值,并不能直接通过开3次方根来求解出m。查找博客说可以通过Coppersmith attack来进行破解,这部分需要有关格的知识,不太会就略过了。

4、通过p-1的方法来分解模数n,破解frame2,6,19
当 p、q 相差很大的时候,即(p-1)或者(q-1)有一个很小,不妨设 p-1 很小,此时选择 一个整数 k,使其满足 (p-1)|k!,由费马小定理得 ,即n与-1存在公因数p,此时分解出 n。

5、通过fermat定理分解模数n,破解frame10,14

当p,q相差不大时,p-q相对于n和(p+q)来说可以忽略不计,所以有。通过不断尝试得到p, q

上述两种方法对于p和q之间的差值的大小有着不同的效果,但是实际破解过程中只知道n不知道关于p和q的任何信息。所以在破解的时候需要同时使用两种方法进行破解的尝试,可以开多进程进行并行计算。

猜你喜欢

转载自blog.csdn.net/weixin_46287316/article/details/122395682