RSA两种特殊攻击情况
P和q的不当分解
|p-q|很大时,一定存在某个参数ip较小,这里我们假设p较小我们可以通过穷举法分解模数,但是很少遇到
举例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import gmpy2 from Crypto.Util.number import getPrime import random
p = getPrime(1024) q = gmpy2.next_prime(p, p + 10000) n = p * q
print("p=",p) print("q=",q) print("n=",n) def factor(n): a = gmpy2.iroot(n, 2)[0] while True: a+=1 b2 = a * a - n
if gmpy2.is_square(b2): b2 = gmpy2.mpz(b2) b, xflag = gmpy2.iroot(b2, 2) assert xflag return (a - b, a + b)
print(factor(n))
|
一个变式题目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| from Crypto.Util.number import * import gmpy2 from flag import flag assert flag[:5]==b'flag{' m1 = bytes_to_long(flag[:20]) p = getPrime(512) p1 = gmpy2.next_prime(p) q = getPrime(512) q1 = gmpy2.next_prime(q) n1 = p*q*p1*q1 print('n1 =',n1) e = 0x10001 c1 = pow(m1,e,n1) print('c1 =',c1)
|
这里有n=四个素数因子乘积
阅读此文
AES加密回顾以及代码实现
Rijndael_Animation_v4_eng-html5
这里放了一个动态演示AES加密过程的网站,有兴趣的可以观看,建议挂代理食用
Rcon是轮常量:
前言
接触密码学也两个月了,之前是学过AES的但是都是简单看了下大概,打CTF的时候喜欢python库脚本一把梭,对AES涉及的一些数学原理不理解,希望尝试用python实现AES加密。
重要的前置知识,有限域多项式乘法运算。
1.GF(28)中的多项式
伽罗瓦域之前以及了解过,大家有兴趣可以自己搜一下
阅读此文
DH 密钥交换协议
在基于对称加密进行安全通信的过程中,通信双方需要持有一个共享的密钥。只有这样,由任何一方加密的信息才能由另一方使用相同的密钥解密。但是在能够安全的通信之前,通信双方应该如何约定一个共享的密钥呢?这就是安全中的经典问题:密钥配送问题(Key Distribution Problem[1])。
Diffe-Hellman密钥交换协议只是其中一种约定功能共享密钥的方式,
DHKE协议简介
DHKE是一种通过公共通道安全地交换加密密钥的数学方法,以Whitfield Diffie和Martin Hellman的名字命名。
数学原理
$c=G^e mod P(0<=c<P)$
G是P的原根,满足条件
{g1modp,g2modp,g3modp,…,gp−1modp}={1,2,3,…,p−1}
DHKE协议的过程

阅读此文
LLL算法
- 简介:LLL算法用于解决最短向量问题的多项式时间复杂度算法。
LLL算法解释
对格的认识

不同的基也可以生成同一个格。
例如一个基向量是(1,0)和(0,1)构成的格。该格用数学符号表示。


阅读此文
伪随机数生成器(PRNG)
前言
随机数生成分为伪随机,真随机。真随机是利用现实中的电子元件噪音来生产的。
伪随机数:用真随机数生成种子,用伪随机数生成器生成伪随机数位流
PRNG算法大致分为两类:
专用算法
LCG(线性同余生成器)
$x_{n+1}=(aX_n+b)mod m$
阅读此文
MD5算法
MD5(单向散列算法) 的全称是Message-Digest Algorithm 5(信息-摘要算法)
MD5的功能:
输入任意长度的信息,经过处理,输出位128位的信息;不同的输入可以得到不同的结果(唯一性)
根据128位输出结果反推出输入信息是及其困难的(不可逆)
散列函数是一种将输入数据映射到固定大小的散列值的函数。它通过对输入数据进行计算,生成一个唯一的散列值,用于快速查找或验证数据的完整性。
散列函数的特点和要求
- 均匀分布:散列函数将输入数据均匀地分布在散列值的范围内,以避免碰撞(即多个不同的数据得到相同散列值)的发生--不过无法完全避免
- 碰撞概率最小化
阅读此文
Weil paIring
编者对群的了解比较基础,可能一些证明不太会
借鉴crypt03-15.tex.dvi
双线性映射
x,x'∈V,y'∈W,以及标量a,b为整数,双线性映射$f:V×W→K$
必须满足:
$f(ax+bx',y)=af(x,y)+bf(x',y)$
$f(x,ay+by')=af(x,y)+bf(x,y')$
阅读此文