2024全国密码数学挑战赛 第一题123N1=0xa4d80845630d3b332f74f667ec8a0e49aba15b6f0c4f4006161d62c91b78cf6811421cc76609d2d9dba2c43be9d8ecdc6a0dff64a8041dcde52c7f92820b0a38fc91419e8ec9a5c69d47edc6e347934b4d87f97c5759886dac6c1143ff55b 2024-09-09 WP #WP
DLP学习 离散对数问题 DLP(Discrete Logarithm Problem)做题时又被打爆了,记录一下DLP就是离散对数问题,离散对数是基于群之上的概念,先简单说下群 群定义假设有一个非空集合 $ G $ ,以及一个二元运算 $ \times $ 所构成的集合 $ (G, \times) $ ,如果满足以下条件就是一个群: 封闭性:$\forall a,b \in G , a \times b 2024-04-06 DLP #DLP
Babai算法 Babai 算法Babai’s nearest plane algorithmBabai 算法常用来解决CVP问题,近似因子 $\gamma = 2^{n/2}$ 在密码学中,CVP(Closest Vector Problem)是一个基于格的问题,其中要求找到给定格中离目标点最近的点。然而,在实际应用中,我们通常关心的是近似 CVP 问题,也就是找到一个距离目标点不超过最近格 2024-03-30 格密码 #格密码
格密码学习 LLL算法 Lattice Learning概念格是几何空间中按照一定规则排列的无穷点的集合 定义:设 $b_1,b_2,…,b_m$ 是 $m$ 个线性无关的 $n$ 维向量($n \geq m$),我们取 $c_i \in \mathbb{Z}$,则称以 $c_i$ 为组合系数的 $b_i$ 的线性组合所构成的集合称为 $n$ 维格,即: $$A = L(b_1, b_2, \ldots, b_ 2024-03-26 格密码 #格密码
AES Padding Oracle Attack AES Padding Oracle Attack先回顾一下AES的CBC模式 加密:Ci = Ek(Pi ⊕ Ci-1)C0 = IV解密:Pi = Dk(Ci ⊕ Ci-1)C0 = IV CBC字节翻转攻击对于CBC模式的解密算法,每一组明文进行分组算法解密之后,需要和前一组的密文异或才能得到明文。第一组则是和初始向量IV进行异或。 CBC字节翻转攻击 2024-03-02 AES #AES
LCG学习 LCG学习LCG属于PRNG(伪随机数生成器)和stream cipher(流密码)的一种,是一种产生伪随机数的方法。Xn+1 = (a*Xn + b) mod m其中,Xn代表第n个生成的随机数,X0被称为种子值。这里还定义了三个整数:a乘数、b增量、m模数,是产生器设定的常数。 参数LCG的性质与参数的选择密切相关,不同的参数可能导致不同的随机序列。一般按照如下要求选择参数: m是 2024-02-28 LCG #LCG
维纳攻击 维纳攻击攻击条件e过大或过小,可从算法中快速推断出d的值。模数N=pq,其中q<p<2q若d < (1/3)N1/4,且ed ≡ 1 mod L(N)L(N) = lcm(p-1,q-1) = (p-1)(q-1)/G = φ(N)/G,其中G = gcd(p-1,q-1) 使用原理因为ed 2024-02-23 RSA算法 #RSA算法
Coppersmith算法 (有待更新,这篇很旧以前写的,当时学的不太懂) Coppersmith算法 需要关注题目给的数据需不需要再去补0,二进制就需要2,十进制就10 如果题目给的p>>100 = 2101051…这种就需要在后面补零*2**100或者p<<100 以已知p高位或者低位的题型来说,不考虑episilon参数(就是small_roots()里的beta参数),coppers 2024-02-21 RSA算法 #RSA算法