密码学期中复习笔记
Chapter 1 古典密码体制的Shannon理论
对称加密体制:
五元组(P,C,K,E,D)(P,C,K,E,D)(P,C,K,E,D):明文空间,密文空间,密钥空间,加密变换,脱密变换
s.t. ∀k,k∈K,x∈P,D(k,E(k,x))=x\forall k,k\in K,x\in P,D(k,E(k,x))=x∀k,k∈K,x∈P,D(k,E(k,x))=x(显然要求dk=D(k,⋅)d_k=D(k,·)dk=D(k,⋅)为满射,ek=E(k,⋅)e_k=E(k,·)ek=E(k,⋅)为单射)
几种经典的古典密码体制:
-
移位密码:P=C=K=Z26P=C=K=Z_{26}P=C=K=Z26,ek(x)=x+k,dk(x)=x−ke_k(x)=x+k,d_k(x)=x-kek(x)=x+k,dk(x)=x−k
-
仿射密码:P=C=Z26,K=Z26××Z26P=C=Z_{26},K=Z_{26}^\times \times Z_{26}P=C=Z26,K=Z26××Z26,ek(x)=ax+be_k(x)=ax+bek(x)=ax+b,dk(x)=a−1(y−b)d_k(x)=a^{-1}(y-b)dk(x)=a−1(y−b)
-
代换密码:P=C=Z26,K=S26P=C=Z_{26},K=S_{26}P=C=Z26,K=S26,eπ(x)=π(x)e_\pi(x)=\pi(x)eπ(x)=π(x),dk(x)=π−1(x)d_k(x)=\pi^{-1}(x)dk(x)=π−1(x)
以上三种密码都是明文密文一对一的密码,因此若明文是文字的话,很容易使用文字的统计规律破译
-
Vignere密码:P=C=K=Z26mP=C=K=Z_{26}^mP=C=K=Z26m,ek(x⃗)=x⃗+k⃗,dk(x⃗)=x⃗−k⃗e_{k}(\vec{x})=\vec{x}+\vec{k},d_{k}(\vec{x})=\vec{x}-\vec{k}ek(x)=x+k,dk(x)=x−k
-
Hill密码:P=C=Z26mP=C=Z_{26}^mP=C=Z26m,K=glm(Z26)K=gl_m(Z_{26})K=glm(Z26)(Z26Z_{26}Z26上的m阶可逆矩阵集)
以上两种密码对明文做m个一组的分组,故称为分组密码
密码的分析(破译):
分类:
(均默认已知加密规则(Kerckhoff假设),在实践中加密规则也确是容易获取的)
- 唯密文分析:仅有密文y
- 已知明文分析:有明文串x和对应的密文串y
- 选择明文分析:有加密机的访问权:可获得任意明文串x对应的密文串y
- 选择密文分析:有解密机的访问权:可获得任意密文串y对应的明文串x
敌手的目标:确定正在使用的密钥是什么
由于古典密码很弱,因此下面均考虑在唯密文分析的条件下进行密码破译
eg1:对仿射/代换密码的密码分析:使用英文单个字母/相邻单词的统计规律进行分析
eg2:对Vignere密码的密码分析:重合指数法
思想:提取恰当m时英文文本串的统计规律:
定义一个含有n个字符的字符串x的重合指数IC(x)I_C(x)IC(x)为x中两个随机元素相同的概率
英文文本的重合指数根据统计为0.065;随机生成的文本的重合指数则为0.038,因此:
若将Vignere密码的密文从左到右,从上到下排布至m列,则当m与分组的组数重合时,每一列都是若干英文文本的平移,从而重合指数应该和英文文本接近;否则则近似于随机文本。这样可以通过枚举的方式破解出m值。
进一步,通过互重合指数可以求出每组文本的平移量:对于给定的英文平移文本x,y,其互重合指数定义为∑ixiyi+k/nm\sum_i x_iy_{i+k}/nm∑ixiyi+k/nm,其中xix_ixi为字母i的出现次数,则当且仅当k等于y的平移量和x的平移量之差时,互重合指数接近0.065.
Shannon信息论与完善保密
对于离散加密,如果引入概率,则可以将其视为离散随机变量X到Y的一个映射。那么,据此可以定义完善保密性,∀x∈P,∀y∈C,P(x∣y)=P(x)\forall x\in P,\forall y\in C, P(x|y)=P(x)∀x∈P,∀y∈C,P(x∣y)=P(x)(知道密文对于了解明文完全没有用)
定理:移位密码当且仅当密钥在Z26Z_{26}Z26中等概率取值时完善保密
推广:一次一密加密体制:P=C=K=(Z2)n,ek(x)=k+x,dk(y)=y+kP=C=K=(Z_2)^n, e_k(x)=k+x,d_k(y)=y+kP=C=K=(Z2)n,ek(x)=k+x,dk(y)=y+k,保证了完善保密(在唯密文分析下不可能破译),但是密钥和明文必须等长,不可复用,效率很低。
引入:Shannon信息熵:−∑ipilogpi-\sum_i p_i\log{p_i}−∑ipilogpi
定理:H(K∣C)=H(P)+H(K)−H(C)H(K|C)=H(P)+H(K)-H(C)H(K∣C)=H(P)+H(K)−H(C)
(自然语言的)伪密钥分析
在对自然语言进行加密和解密时,可能对于同一个密文存在多个有意义的对应明文,例如river和arena的距离为3。我们希望推导伪密钥的期望个数下界。
定义自然语言熵为HL=limn→∞H(Pn)nH_L=\lim_{n\rightarrow \infty} \frac{H(P^n)}{n}HL=limn→∞nH(Pn)(长度为n的语言串的熵平均值)
语言L的冗余度定义为RL=1−HLlog∣P∣R_L=1-\frac{H_L}{\log| P|}RL=1−log∣P∣HL,例如英语的冗余度为0.75
定理:语言L的伪密钥期望个数下界为snˉ≥∣K∣∣P∣nRL−1\bar{s_n}\geq \frac{|K|}{|P|^{nR_L}}-1snˉ≥∣P∣nRL∣K∣−1
定义:唯一解距离:伪密钥期望下界数恰好等于0时n的值,对英文的代换密码来说则为25
安全性的分类:
计算安全性(计算用时++),可证明安全性(归约到计算复杂问题上),无条件安全性(不可能破译)
Chapter2 分组密码与高级加密标准(AES)
分组算法的结构:
K为一给定长度的二元密钥,以某种固定公开算法生成Nr个轮密钥(K1,...,KNr)(K_1,...,K_{Nr})(K1,...,KNr),轮函数g以轮密钥和当前状态作为输入:即:
w0←x,w1←g(w0,K1),...,wNr←g(wNr−1,KNr),y←wNrw_0\leftarrow x, w_1\leftarrow g(w_0,K_1),...,w_{Nr}\leftarrow g(w_{Nr-1},K_{Nr}),y\leftarrow w_{Nr}w0←x,w1←g(w0,K1),...,wNr←g(wNr−1,KNr),y←wNr
为了解密,要求轮函数必须为单射,即存在g−1g^{-1}g−1:g−1(g(w,y),y)=wg^{-1}(g(w,y),y)=wg−1(g(w,y),y)=w
解密过程:wNr←y,wNr−1←g−1(wNr,KNr),...,w0←g−1(w1,K1),x←w0w_{Nr}\leftarrow y, w_{Nr-1}\leftarrow g^{-1}(w_{Nr},K_{Nr}),...,w_{0}\leftarrow g^{-1}(w_{1},K_{1}), x\leftarrow w_0wNr←y,wNr−1←g−1(wNr,KNr),...,w0←g−1(w1,K1),x←w0
分组算法:代换-置换网络(SPN)
l,m∈Z+l,m\in Z^+l,m∈Z+,明文和密文为长为lmlmlm的二元向量。一个SPN的基本构成为两个置换:πS:{0,1}l\pi_S:\{0,1\}^lπS:{0,1}l上的置换(S盒),πP:{1,...,lm}\pi_P:\{1,...,lm\}πP:{1,...,lm}上的置换

如上图所示,SPN加密的一轮会经过三层:第一层是和轮密钥的异或,第二层是对字符串切片为m段,分别用S盒代换,最后一层是对各个数字的所在位置用P盒代换;解密则反过来做即可。
SPN的伪代码为:

注:在最后两轮中没有再用πP\pi_PπP,这是因为前面已经足够了
优点:该算法的实现非常简单高效,而且需要的存储空间较少
对SPN的分析
思想:在密文的输入中找到一些概率关系
1. 线性密码分析
分析方法:已知明文分析:给出大量明密对
SPN为线性密码,从而有性质:SPN(u)=l(u)+A0SPN(u)=l(u)+A_0SPN(u)=l(u)+A0,l(u)=∏(ai1x1⊕...⊕ainxn)l(u)=\prod (a_i^1 x_1\oplus ...\oplus a_i^nx_n)l(u)=∏(ai1x1⊕...⊕ainxn)
定义:一个0/1随机变量的偏差:ϵ=p(x=0)−12\epsilon=p(x=0)-\frac{1}{2}ϵ=p(x=0)−21
堆积引理:若X1,X2,...,XnX_1,X_2,...,X_nX1,X2,...,Xn的偏差为ϵ1,...,ϵn\epsilon_1,...,\epsilon_nϵ1,...,ϵn,则X1⊕...⊕XnX_1\oplus ...\oplus X_nX1⊕...⊕Xn的偏差为2k−1∏j=1kϵij2^{k-1}\prod_{j=1}^k\epsilon_{i_j}2k−1∏j=1kϵij
攻击方法:
- 对S盒πS\pi_SπS构造线性逼近表:求出∀a=(a1,...,al),b=(b1,...,bl)\forall a=( a_1,...,a_l),b=(b_1,...,b_l)∀a=(a1,...,al),b=(b1,...,bl),∀x1,..,xl,y1,...,yl=πs(x1,..,xl)\forall x_1,..,x_l, y_1,...,y_l=\pi_s(x_1,..,x_l)∀x1,..,xl,y1,...,yl=πs(x1,..,xl)中(a1x1⊕...⊕alxl)⊕(b1y1⊕...⊕blyl)(a_1x_1\oplus ...\oplus a_lx_l)\oplus (b_1y_1\oplus ...\oplus b_ly_l)(a1x1⊕...⊕alxl)⊕(b1y1⊕...⊕blyl)的NL(a,b)N_L(a,b)NL(a,b)表(代表所有x1,…,xl中使得结果为0的个数),从而对每个S盒可以取特定的a,ba,ba,b,使得偏差偏离0
- 在代换-置换网络中每一层都寻找恰当的a,ba,ba,b,使得构成一个相互抵消的活动S-盒的路径,并且偏差不大。
- 假设这些路径变量相互独立,则其直和的偏差用堆积引理可以求出(记为ϵ\epsilonϵ)。而这些直和由于相互抵消的关系,最后自变量仅涉及到第一层和最后一层的若干变量。
- 枚举最后一层变量对应的密钥,统计该直和对应的偏差,则在正确的密钥下,该直和应具有偏差ϵ\epsilonϵ,而其他密钥下偏差应为0
- 为了区分正确的密钥和其它密钥,根据大数定律,需要统计的明密对数量应接近cϵ−2c\epsilon^{-2}cϵ−2
2. 差分密码分析
分析方法:选择明文分析:可以获得任意明文对应的密文(比线性密码分析要求更高)
对任意的S盒πS:{0,1}m→{0,1}n\pi_S:\{0,1\}^m\rightarrow \{0,1\}^nπS:{0,1}m→{0,1}n
定义:Δ(x′)={(x,x⊕x′)}\Delta (x')=\{(x,x\oplus x')\}Δ(x′)={(x,x⊕x′)},即:输入异或为x′x'x′的任意对;定义其输出异或为πS(x)⊕πS(x⊕x′)\pi_S(x)\oplus \pi_S(x\oplus x')πS(x)⊕πS(x⊕x′)
则:一共2m2^m2m个可能的输出异或分布在2n2^n2n个值上。同样的,可以对输出异或的分布建立列表:用ND(x,y)N_D(x,y)ND(x,y)表示输入异或为x,输出异或为y的对数,对x,yx,yx,y的所有可能取值,构造差分分布表
注意到,在SPN中,异或对同时异或一个密钥并不会对其异或产生影响,因此和线性密码分析一样,可以通过构造若干假设独立的差分链来得到差分链的一个扩散率rrr,从而同理可以通过枚举密钥的形式来分辨出正确的密钥(扩散率为rrr,即输入为链输入时,输出为链输出的概率为rrr),而其余密钥的概率接近0
加速算法:过滤:预先筛除一些不满足x,y条件的对。在剩下的里面再计数。
DES简介(1973-1996)
每个状态uiu^iui被分为相同长度的两部分Li,RiL^i,R^iLi,Ri,轮函数g:g(Li−1,Ri−1,Ki)=(Li,Ri)g(L^{i-1},R^{i-1},K^i)=(L^i,R^i)g(Li−1,Ri−1,Ki)=(Li,Ri)
其中,Li=Ri−1,Ri=Li−1⊕f(Ri−1,K)L^i=R^{i-1},R^i=L^{i-1}\oplus f(R^{i-1},K)Li=Ri−1,Ri=Li−1⊕f(Ri−1,K)
特性:这样的函数一定可逆:g(Ri,Li,Ki)=g(Ri−1,Li−1)g(R^i,L^i,K^i)=g(R^{i-1},L^{i-1})g(Ri,Li,Ki)=g(Ri−1,Li−1)

E:扩展函数;S_1,…,S_8:S盒(6bit→\rightarrow→ 4bit);P:置换
分析:除了S盒以外均为线性部件,因此S盒的选取至关重要。但是S盒中也可能藏有“陷门”。
AES简介(1997-今)
数学基础:Galois Field GF(28)GF(2^8)GF(28)上的运算:GF(28)∼F2[x]/m(x)=x8+x4+x3+x2+1GF(2^8)\sim F_2[x]/m(x)=x^8+x^4+x^3+x^2+1GF(28)∼F2[x]/m(x)=x8+x4+x3+x2+1
GF(28)GF(2^8)GF(28)中恰有282^828个元素,且按照多项式各位的系数可以表示为b7x7+...+b0b_7x^7+...+b_0b7x7+...+b0,构成一个8元组(b7,...b0)(b_7,...b_0)(b7,...b0),并且按照多项式运算任意非零元素都有逆
AES:三种可选密钥长度128,192,256, Nr分别为10,12,14
伪代码:

SubBytes:对于state中的每个字节(8个bite)先求GF(28)GF(2^8)GF(28)中的逆元素(x7,...,x0)(x_7,...,x_0)(x7,...,x0),再做mod2乘法:

Shiftrows:行移位:将状态矩阵的第i行向左移动i位
MixColumns:列混合:对每一列做GF(28)GF(2^8)GF(28)上的乘法:原来的列为(t0,t1,t2,t3)T(t_0,t_1,t_2,t_3)^T(t0,t1,t2,t3)T,则得到的新列:
u0=x∗t0+(x+1)∗t1+t2+t3u1=x∗t1+(x+1)∗t2+t3+t0u2=x∗t2+(x+1)∗t3+t0+t1u1=x∗t3+(x+1)∗t0+t1+t2
u_0=x*t_0+(x+1)*t_1+t_2+t_3\\
u_1=x*t_1+(x+1)*t_2+t_3+t_0\\
u_2=x*t_2+(x+1)*t_3+t_0+t_1\\
u_1=x*t_3+(x+1)*t_0+t_1+t_2\\
u0=x∗t0+(x+1)∗t1+t2+t3u1=x∗t1+(x+1)∗t2+t3+t0u2=x∗t2+(x+1)∗t3+t0+t1u1=x∗t3+(x+1)∗t0+t1+t2
KeyExpansion:将128bit的种子密钥变为11个轮密钥
AddRoundKey:state⊕Kr\text{state}\oplus K^rstate⊕Kr
AES的分析:从设计上是反攻击的,例如有限域取逆的操作使得线性逼近和差分攻击趋于均匀分布,使得这两种攻击很难奏效。Mixcolumn的设计则使得找到包含较少S盒的攻击是不可能的。
Chapter3 序列密码
反馈移位寄存器序列:在GF(2)上,输入a0,...,an−1a_0,...,a_{n-1}a0,...,an−1,取函数an+i=f(an+i−1,...,ai−1)i=1,2,...a_{n+i}=f(a_{n+i-1},...,a_{i-1}) i=1,2,...an+i=f(an+i−1,...,ai−1)i=1,2,...,则称序列{an}\{a_n\}{an}为以f为反馈多项式的反馈移位寄存器序列。
定理:任意一个GF(2n)→Gf(2)GF(2^n)\rightarrow Gf(2)GF(2n)→Gf(2)的函数均可用多项式表示
序列密码:序列密码是一个七元组 (X,Y,K,S,τ,e,d)(\mathcal{X}, \mathcal{Y}, \mathcal{K}, \mathcal{S}, \tau, e, d)(X,Y,K,S,τ,e,d) 。其中 X、Y、K\mathcal{X} 、 \mathcal{Y} 、 \mathcal{K}X、Y、K 和S\mathcal{S}S 均为有限集合分别称为明文空间、密文空间、密钥空间和状态集。 τ\tauτ 是带参数的状态转移函数, 即对于任意的 k∈Kk \in \mathcal{K}k∈K,τk:X×S→S;\tau_{k}: \mathcal{X} \times \mathcal{S} \rightarrow \mathcal{S} ;τk:X×S→S;eee 是带参数的加密函数, 即对于任意的 k∈Kk \in \mathcal{K}k∈K,ek:X×S→Y;e_{k}: \mathcal{X} \times \mathcal{S} \rightarrow \mathcal{Y} ;ek:X×S→Y; ddd 是带参数的脱密函数, 即对于任意的 k∈Kk \in \mathcal{K}k∈K,dk:Y×S→X,d_{k}: \mathcal{Y} \times \mathcal{S} \rightarrow \mathcal{X} ,dk:Y×S→X,满足 dk(ek(xi,si−1),si−1)=xi,1≤i≤nd_{k}\left(e_{k}\left(x_{i}, s_{i-1}\right), s_{i-1}\right)=x_{i}, \quad 1 \leq i \leq ndk(ek(xi,si−1),si−1)=xi,1≤i≤n.
加密:yi=ek(xi,si−1),si=τk(xi,si−1)y_i=e_k(x_i,s_{i-1}),s_i=\tau_k(x_i,s_{i-1})yi=ek(xi,si−1),si=τk(xi,si−1) 脱密:xi=dk(xi,si−1),si=τk(xi,si−1)x_i=d_k(x_i,s_{i-1}),s_i=\tau_k(x_i,s_{i-1})xi=dk(xi,si−1),si=τk(xi,si−1)
在实际使用中,si=τk(si−1)s_i=\tau_k(s_{i-1})si=τk(si−1),yi=xi⊕σ(si−1)y_i=x_i\oplus \sigma(s_{i-1})yi=xi⊕σ(si−1),称为伪随机数生成器
线性反馈移位寄存器:(LFSR)
an+i=F(ai+n−1ai+n−2⋯ai+1ai)=c1ai+n−1+c2ai+n−2+⋯cn−1ai+1+cnaia_{n+i}=F\left(a_{i+n-1} a_{i+n-2} \cdots a_{i+1} a_{i}\right)=c_{1} a_{i+n-1}+c_{2} a_{i+n-2}+\cdots c_{n-1} a_{i+1}+c_{n} a_{i}an+i=F(ai+n−1ai+n−2⋯ai+1ai)=c1ai+n−1+c2ai+n−2+⋯cn−1ai+1+cnai
其联结多项式为:f(x)=1+c1x+⋯+cn−1xn−1+cnxnf(x)=1+c_{1} x+\cdots+c_{n-1} x^{n-1}+c_{n} x^{n}f(x)=1+c1x+⋯+cn−1xn−1+cnxn;
特征多项式为:fˉ(x)=xn+c1xn−1+⋯+cn−1x+cn\bar{f}(x)=x^{n}+c_{1} x^{n-1}+\cdots+c_{n-1} x+c_{n}fˉ(x)=xn+c1xn−1+⋯+cn−1x+cn
记忆方法:特征多项式就是平时求数列的通项公式时使用的多项式,联结多项式就是它反过来;或者联结多项式可以看做是逆向递推式的参数:a0=an+c1an−1+...+cna1a_0=a_n+c_1a_{n-1}+...+c_na_1a0=an+c1an−1+...+cna1,如果非退化
若cn≠0c_n\neq 0cn=0,则称为非退化的。我们只研究非退化的情形。
注:显然,LFSR是终归周期的,非退化LFSR是周期的(参考下面的定理)
定理:对于一个多项式 f(x)=1+c1x+⋯+cn−1xn−1+cnxnf(x)=1+c_{1} x+\cdots+c_{n-1} x^{n-1}+c_{n} x^{n}f(x)=1+c1x+⋯+cn−1xn−1+cnxn 和一个 半无限序列 α=a0a1a2⋯ ,α\alpha=a_{0} a_{1} a_{2} \cdots, \alphaα=a0a1a2⋯,α 是以 f(x)f(x)f(x) 为联结多项式的 LFSR 序列的充分必要条件是形式幂级数 α(x)=∑i=0∞aixi\alpha(x)=\sum_{i=0}^{\infty} a_{i} x^{i}α(x)=∑i=0∞aixi 满足 f(x)⋅α(x)f(x) \cdot \alpha(x)f(x)⋅α(x) 是多项式, deg[f(x)⋅α(x)]<n\operatorname{deg}[f(x) \cdot \alpha(x)]<ndeg[f(x)⋅α(x)]<n; 而此时 α(x)\alpha(x)α(x) 是周期的 当且仅当 deg[f(x)⋅α(x)]<degf(x)\operatorname{deg}[f(x) \cdot \alpha(x)]<\operatorname{deg} f(x)deg[f(x)⋅α(x)]<degf(x).
特别地,若cn=1c_n=1cn=1,则degf(x)=n>deg[f(x)α(x)]\deg f(x)=n>deg[f(x)\alpha( x)]degf(x)=n>deg[f(x)α(x)]
对给定的序列 α=a0a1a2⋯\alpha=a_{0} a_{1} a_{2} \cdotsα=a0a1a2⋯, 把满足 f(x)⋅α(x)∈F2[x]f(x) \cdot \alpha(x) \in F_{2}[x]f(x)⋅α(x)∈F2[x] 的多项式的集合记为 J(α)J(\alpha)J(α)
则:J(α)J(\alpha)J(α) 是 F2[x]F_{2}[x]F2[x] 的理想
定义:极小多项式
称生成 J(α)J(\alpha)J(α) 的多项式为极小多项式,记为 mα(x)m_{\alpha}(x)mα(x). 显然当 mα(x)≠0m_{\alpha}(x) \neq 0mα(x)=0 时, mα(0)=1m_{\alpha}(0)=1mα(0)=1.
对满足 g(0)=1g(0)=1g(0)=1 的 g(x)∈F2[x]g(x) \in F_{2}[x]g(x)∈F2[x], 称使得 g(x)∣1+xLg(x) \mid 1+x^{L}g(x)∣1+xL 的最小正整数 L\mathrm{L}L 为 g(x)g(x)g(x) 的周期, 记为 p(g)p(g)p(g).
定理:若 α\alphaα 是周期序列, 则 p(α)p(\alpha)p(α)(α\alphaα的周期)=p(mα(x))=p\left(m_{\alpha}(x)\right)=p(mα(x)).
定理:如果 f(x)∈F2[x]f(x) \in F_{2}[x]f(x)∈F2[x] 是不可约的, 且 f(0)=1,α≠0f(0)=1, \alpha \neq 0f(0)=1,α=0 为以 f(x)f(x)f(x) 为联结多项式的任一输出周期序列, 则 mα(x)=f(x)m_{\alpha}(x)=f(x)mα(x)=f(x), 从而 p(α)=p(f(x)).p(\alpha)=p(f(x)) .p(α)=p(f(x)).
定理:如果 f(x)∈F2[x]f(x) \in F_{2}[x]f(x)∈F2[x] 是 nnn 级LFSR 的联结多项式,用 G(f)G(f)G(f) 表示由此多项式产生的全部序列。则 G(f)G(f)G(f) 有一个是周期为 2n−12^{n}-12n−1 的序列当且仅当 f(x)f(x)f(x) 是一个次数为 nnn 的本原多项式。(定义:f(0)=1,ff(0)=1,ff(0)=1,f不可约,p(f)=2n−1p(f)=2^n-1p(f)=2n−1)
意义:用一个很短的序列生成一个极长序列,加密一段极长密文。
定义:由n次本原多项式生成的序列称为n级的m-序列,下面证明m−m-m−序列的一些良好性质
m-序列统计特征:
定义:如果 α=a0a1⋯\alpha=a_{0} a_{1} \cdotsα=a0a1⋯ 是 F2F_{2}F2 上的周期为 p(α)p(\alpha)p(α) 的周期序列, 称
Cα(τ)=1p(α)Σk=0p(α)−1(−1)ak+ak+τ,(0≤τ≤p(a)−1).
C_{\alpha}(\tau)=\frac{1}{p(\alpha)} \Sigma_{k=0}^{p(\alpha)-1}(-1)^{a_{k}+a_{k+\tau}}, \quad(0 \leq \tau \leq p(a)-1) .
Cα(τ)=p(α)1Σk=0p(α)−1(−1)ak+ak+τ,(0≤τ≤p(a)−1).
为 α\alphaα 的自相关函数.
定理:设 α\alphaα 是如果 F2F_{2}F2 上是的 nnn 级 mmm-序列, 则:
(1) α\alphaα 的一个周期中 1 出现的个数是 2n−1,02^{n-1}, 02n−1,0 出现的个数是 2n−1−12^{n-1}-12n−1−1.
(2)定义一个长为k的0-游程为10…0(k个)1;则:
0-游程和1-游程个数均为 N/2=2n−2N / 2=2^{n-2}N/2=2n−2, 游程分布如下:
长度为iii的0 -游程 N/2i+1,1≤i≤n−2N / 2^{i+1}, 1 \leq i \leq n-2N/2i+1,1≤i≤n−2;
长度为iii的1-游程 N/2i+1,1≤i≤n−2N / 2^{i+1}, 1 \leq i \leq n-2N/2i+1,1≤i≤n−2;
长度为n-1的0-游程1个;
长度为n的1-游程1个
(3) α\alphaα 的自相关函数是二值的:
Cα(τ)={1, 当 τ=0;−1p(α), 当 0<τ≤p(α)−1.
C_{\alpha}(\tau)= \begin{cases}1, & \text { 当 } \tau=0 ; \\ -\frac{1}{p(\alpha)}, & \text { 当 } 0<\tau \leq p(\alpha)-1 .\end{cases}
Cα(τ)={1,−p(α)1, 当 τ=0; 当 0<τ≤p(α)−1.
从而:α\alphaα的自相关程度是极低的(p(α)=2n−1p(\alpha)=2^{n}-1p(α)=2n−1)
B-M算法与线性复杂度
给定一个序列 α=a0a1⋯an\alpha=a_{0} a_{1} \cdots a_{n}α=a0a1⋯an, 希望求出一个级数为 III 的线性移位寄存器, 使得 α\alphaα 可以由其生成, 且这样的 III 最小。称 III 为 α\alphaα的线性复杂度。
一致性定理:如果次数分别为 LLL 和 L′L^{\prime}L′ 的两个联结多项式均可生成序列 α=a0a1⋯ar−1\alpha=a_{0} a_{1} \cdots a_{r-1}α=a0a1⋯ar−1, 并且 r≥L+L′r \geq L+L^{\prime}r≥L+L′, 则它们其后生成的序列相一致。
Massey 定理:如果序列 α1=a0a1⋯ar−2\alpha_{1}=a_{0} a_{1} \cdots a_{r-2}α1=a0a1⋯ar−2 的线性复杂度是 LLL, 且产生 α1\alpha_{1}α1 的 LLL 级移位寄存器均不能产生 α2=a0a1⋯ar−2ar−1\alpha_{2}=a_{0} a_{1} \cdots a_{r-2} a_{r-1}α2=a0a1⋯ar−2ar−1, 则 α2\alpha_{2}α2 的线性复杂度至少是 r−Lr-Lr−L 。
B-M算法:给定一个序列片段 α=a0a1⋯aN−1\alpha=a_{0} a_{1} \cdots a_{N-1}α=a0a1⋯aN−1, 求一个多项式多项式 f(x)f(x)f(x) 和级数III, 使得它可由以 f(x)f(x)f(x) 为联结多项式的III级LFSR生成
Berlekamp-Massey 算法
输入: α=a0a1⋯aN−1\alpha=a_{0} a_{1} \cdots a_{N-1}α=a0a1⋯aN−1 ;
1: n←0,(f0(x),l0)=(1,0)\quad n \leftarrow 0,\left(f_{0}(x), l_{0}\right)=(1,0)n←0,(f0(x),l0)=(1,0);
2: 计算 dn=an−an−1c1−⋯−an−lnclnd_{n}=a_{n}-a_{n-1} c_{1}-\cdots-a_{n-l_{n}} c_{l_{n}}dn=an−an−1c1−⋯−an−lncln;
(1) 若 dn=0d_{n}=0dn=0,
(fn+1(x),In+1)←(fn(x),In)\left(f_{n+1}(x), I_{n+1}\right) \leftarrow\left(f_{n}(x), I_{n}\right)(fn+1(x),In+1)←(fn(x),In), 转步骤 3 ;
(2) 若 dn=1d_{n}=1dn=1 且 l0=I1=⋯=In=0l_{0}=I_{1}=\cdots=I_{n}=0l0=I1=⋯=In=0,
(fn+1(x),In+1)←(1+xn,n+1)\left(f_{n+1}(x), I_{n+1}\right) \leftarrow\left(1+x^{n}, n+1\right)(fn+1(x),In+1)←(1+xn,n+1), 转步骤 3 ;
(3) 若 dn=1d_{n}=1dn=1 且 Im<Im+1=Im+2=⋯=In(m<n)I_{m}<I_{m+1}=I_{m+2}=\cdots=I_{n}(m<n)Im<Im+1=Im+2=⋯=In(m<n),
(fn+1(x),In+1)←(fn(x)+xn−mfm(x),max{In,n+1−In})\left(f_{n+1}(x), I_{n+1}\right) \leftarrow\left(f_{n}(x)+x^{n-m} f_{m}(x), \max \left\{I_{n}, n+1-I_{n}\right\}\right)(fn+1(x),In+1)←(fn(x)+xn−mfm(x),max{In,n+1−In});
3: 若 n<N−1,n←n+1n<N-1, n \leftarrow n+1n<N−1,n←n+1, 转步骤 2 ;
输出: (fN(x),IN)\left(f_{N}(x), I_{N}\right)(fN(x),IN).
容易证明该算法输入的是一个以α\alphaα为输出的联结多项式
定理:(1) INI_{N}IN 是产生 α\alphaα 的 LFSR 的最小级数;
(2) 当且仅当 IN≤N/2I_{N} \leq N / 2IN≤N/2 时, 产生 NNN 长序列 α\alphaα 的最短 LFSRL F S RLFSR 是唯 一的;
(3) 当 IN<N/2I_{N}<N / 2IN<N/2 时, 迭代 2IN2 I_{N}2IN 步已经有(f2IN(x),l2IN)=(fN(x),IN). \left(f_{2 I_{N}}(x), l_{2 I_{N}}\right)=\left(f_{N}(x), I_{N}\right) \text {. }(f2IN(x),l2IN)=(fN(x),IN).
Golomb 原则 (1967):称一个序列是安全的(不容易找到规律的),若:
(1) 周期足够大; (2) 一个周期中统计特性好; (3) 自相关函数是一个二值函数;
计算线性复杂度的其他方法:
定理:设 a=a0,a1,⋯ ,an−1a=a_{0}, a_{1}, \cdots, a_{n-1}a=a0,a1,⋯,an−1 是 FqF_{q}Fq 上的一个 nnn 长序列, 则aaa的线性复 杂度是下列矩阵的最小秩:
Aa=(a0a1a2⋯an−3an−2an−1a1a2a3⋯an−2an−1∗a2a3a4⋯an−1∗∗⋮⋮⋮⋮⋮⋮⋮an−1∗∗∗∗∗∗)
A_{a}=\left(\begin{array}{ccccccc}
a_{0} & a_{1} & a_{2} & \cdots & a_{n-3} & a_{n-2} & a_{n-1} \\
a_{1} & a_{2} & a_{3} & \cdots & a_{n-2} & a_{n-1} & * \\
a_{2} & a_{3} & a_{4} & \cdots & a_{n-1} & * & * \\
\vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\
a_{n-1} & * & * & * & * & * & *
\end{array}\right)
Aa=⎝⎜⎜⎜⎜⎜⎛a0a1a2⋮an−1a1a2a3⋮∗a2a3a4⋮∗⋯⋯⋯⋮∗an−3an−2an−1⋮∗an−2an−1∗⋮∗an−1∗∗⋮∗⎠⎟⎟⎟⎟⎟⎞
这里∗*∗代表 FqF_{q}Fq中的任意元素, 最小秩是指对这些 ∗*∗ 的所有可能取值得到的。
定理:设 a=a0,a1,⋯ ,aN−1⋯a=a_{0}, a_{1}, \cdots, a_{N-1} \cdotsa=a0,a1,⋯,aN−1⋯ 是 FqF_{q}Fq 上的一个周期为N的序列, 则 aaa 的线性复杂度是下列矩阵的秩:
Cl(a)=(a0a1⋯aN−1a1a2⋯a0⋮⋮⋯⋮aN−1a0⋯aN−2)
C_{l}(a)=\left(\begin{array}{cccc}
a_{0} & a_{1} & \cdots & a_{N-1} \\
a_{1} & a_{2} & \cdots & a_{0} \\
\vdots & \vdots & \cdots & \vdots \\
a_{N-1} & a_{0} & \cdots & a_{N-2}
\end{array}\right)
Cl(a)=⎝⎜⎜⎜⎛a0a1⋮aN−1a1a2⋮a0⋯⋯⋯⋯aN−1a0⋮aN−2⎠⎟⎟⎟⎞
离散傅里叶变换:
设 (N,q)=1(N, q)=1(N,q)=1, 则 存在 mmm 使得 FqmF_{q^{m}}Fqm 中存在 NNN 阶元。设 aN=a0,a1,⋯ ,aN−1a^{N}=a_{0}, a_{1}, \cdots, a_{N-1}aN=a0,a1,⋯,aN−1 是 FqF_{q}Fq 上的一个长为 NNN 的序列, 它的离散傅立叶变换是 FqmF_{q^{m}}Fqm 上的序 列 AN=A0,A1,…,AN−1A^{N}=A_{0}, A_{1}, \ldots, A_{N-1}AN=A0,A1,…,AN−1 :
(A0,A1,⋯ ,AN−1)=(a0,a1,⋯ ,aN−1)F(α)
\left(A_{0}, A_{1}, \cdots, A_{N-1}\right)=\left(a_{0}, a_{1}, \cdots, a_{N-1}\right) F(\alpha)
(A0,A1,⋯,AN−1)=(a0,a1,⋯,aN−1)F(α)
F(α)=(111⋯11αα2⋯αN−1⋮⋮⋮⋯⋮1αN−1α2(N−1)⋯α(N−1)(N−1))
F(\alpha)=\left(\begin{array}{ccccc}
1 & 1 & 1 & \cdots & 1 \\
1 & \alpha & \alpha^{2} & \cdots & \alpha^{N-1} \\
\vdots & \vdots & \vdots & \cdots & \vdots \\
1 & \alpha^{N-1} & \alpha^{2(N-1)} & \cdots & \alpha^{(N-1)(N-1)}
\end{array}\right)
F(α)=⎝⎜⎜⎜⎛11⋮11α⋮αN−11α2⋮α2(N−1)⋯⋯⋯⋯1αN−1⋮α(N−1)(N−1)⎠⎟⎟⎟⎞
注意到:F(α)−1=N−1F(α−1)F(\alpha)^{-1}=N^{-1} F\left(\alpha^{-1}\right)F(α)−1=N−1F(α−1),令:
Cr(a)=(a0a1⋯aN−1aN−1a0⋯aN−2⋮⋮⋯⋮a1a2⋯a0),DA=(A0A1⋱AN−1)
C_{r}(a)=\left(\begin{array}{cccc}a_{0} & a_{1} & \cdots & a_{N-1} \\ a_{N-1} & a_{0} & \cdots & a_{N-2} \\ \vdots & \vdots & \cdots & \vdots \\ a_{1} & a_{2} & \cdots & a_{0}\end{array}\right), D_{A}=\left(\begin{array}{cccc}A_{0} & & & \\ & A_{1} & & \\ & & \ddots & \\ & & & A_{N-1}\end{array}\right)
Cr(a)=⎝⎜⎜⎜⎛a0aN−1⋮a1a1a0⋮a2⋯⋯⋯⋯aN−1aN−2⋮a0⎠⎟⎟⎟⎞,DA=⎝⎜⎜⎛A0A1⋱AN−1⎠⎟⎟⎞
则:Blahut定理:
设 a∞=a0,a1,⋯ ,aN−1⋯a^{\infty}=a_{0}, a_{1}, \cdots, a_{N-1} \cdotsa∞=a0,a1,⋯,aN−1⋯ 是 FqF_{q}Fq 上的一个周期为 NNN 的序列, 则 L(a∞)=WH(AN),L(A∞)=WH(aN)L\left(a^{\infty}\right)=W_{H}\left(A^{N}\right), L\left(A^{\infty}\right)=W_{H}\left(a^{N}\right)L(a∞)=WH(AN),L(A∞)=WH(aN)(WHW_HWH:非零分量个数)
伪随机数生成器
对于任意的正整数 nnn, 我们设 UnU_{n}Un 是一个取值在 Z2n\mathbb{Z}_{2}^{n}Z2n 上的均匀分布 的随机变量, GGG 是一个确定的多项式时间算法。G称为是一个伪随机数发生器, 如果满足下列两条:
- 扩展性:当输入sss长度为nnn时, 输出 G(s)G(s)G(s) 的长度 I(n)I(n)I(n) 满足 I(n)>nI(n)>nI(n)>n;
- 伪随机性: 当输入随机变量UnU_{n}Un时, 输出随机变量 G(Un)G\left(U_{n}\right)G(Un) 与 UI(n)U_{I(n)}UI(n) 不可区分。
事实上, 任一多项式扩展因子 I(n)I(n)I(n) 的 PRG 可由扩展因子为 n+1n+1n+1 的 PRG 迭代得到。
Chapter4 RSA公钥密码体制
基础:给定大素数p,q,求n=pq/ 已知n为两个大素数p,q的乘积,求p,q的计算难度完全不同
定义:单向函数:正向求解容易,反向求解困难的函数
限门单向函数:单向函数,但在知道某个秘密参数k后,反向求解容易
基础知识:
Euclid算法:
辗转相除法求a和b的公因数:不妨设a>b,则:
a=r0,b=r1,r0=q1r1+r2,r1=q2r2+r3,...,rm−1=qmrm+0a=r_0, b=r_1, r_0=q_1r_1+r_2,r_1=q_2r_2+r_3,...,r_{m-1}=q_mr_m+0a=r0,b=r1,r0=q1r1+r2,r1=q2r2+r3,...,rm−1=qmrm+0,则gcd(a,b)=rmgcd(a,b)=r_mgcd(a,b)=rm
将满足该组关系的(r0,r1,...,rm)(r_0,r_1,...,r_m)(r0,r1,...,rm)的集合看做一个空间,显然其为线性空间,秩为2,一组生成元为:(r0=1,r1=0,ri=qi−1ri−1−ri−2,i=2,...,m)(r_0=1,r_1=0, r_i=q_{i-1}r_{i-1}-r_{i-2},i=2,...,m)(r0=1,r1=0,ri=qi−1ri−1−ri−2,i=2,...,m)和(s0=0,s1=1,si=qi−1si−1−si−2,i=2,...,m)(s_0=0,s_1=1, s_i=q_{i-1}s_{i-1}-s_{i-2},i=2,...,m)(s0=0,s1=1,si=qi−1si−1−si−2,i=2,...,m)
推论:对任意(x0=a,x1=b)(x_0=a,x_1=b)(x0=a,x1=b),其构成的序列(x0,x1,..,xm)(x_0,x_1,..,x_m)(x0,x1,..,xm)满足:x⃗=ar⃗+bs⃗\vec{x}=a\vec{r}+b\vec{s}x=ar+bs
若(a,b)=1(a,b)=1(a,b)=1,则xm=1x_m=1xm=1,则arm+brm=1ar_m+br_m=1arm+brm=1,则rm=a−1(mod b),sm=b−1(mod a)r_m=a^{-1}(\mod b),s_m=b^{-1}(\mod a)rm=a−1(modb),sm=b−1(moda)
记忆:求小的数mod大的数的逆:取r0=0,r1=1r_0=0,r_1=1r0=0,r1=1,和辗转相除法同步进行即可,到xm=1x_m=1xm=1时停止
中国剩余定理:
假设整数 m1,m2,…,mnm_{1}, m_{2}, \ldots, m_{n}m1,m2,…,mn 两两互素, 则对于任意的整数 a1,a2,…,ana_{1}, a_{2}, \ldots, a_{n}a1,a2,…,an, 方程组
{x≡a1( mod m1)x≡a2( mod m2)⋯x≡an( mod mn)
\left\{\begin{array}{l}
x \equiv a_{1}\left(\bmod m_{1}\right) \\
x \equiv a_{2}\left(\bmod m_{2}\right) \\
\cdots \\
x \equiv a_{n}\left(\bmod m_{n}\right)
\end{array}\right.
⎩⎪⎪⎨⎪⎪⎧x≡a1(modm1)x≡a2(modm2)⋯x≡an(modmn)
都存在整数解, 且若 X,YX, YX,Y 都满足该方程组, 则必有 X≡Y( mod N)X \equiv Y(\bmod N)X≡Y(modN), 其中 N=∏i=1nmiN=\prod_{i=1}^{n} m_{i}N=∏i=1nmi 。
具体而言, x≡∑i=1nai×Nmi×[(Nmi)−1]mi( mod N)\quad x \equiv \sum_{i=1}^{n} a_{i} \times \frac{N}{m_{i}} \times\left[\left(\frac{N}{m_{i}}\right)^{-1}\right]_{m_{i}} \quad(\bmod N)x≡∑i=1nai×miN×[(miN)−1]mi(modN)
Lagrange定理:
(b,n)=1(b,n)=1(b,n)=1,则bφ(n)=1(mod n)b^{\varphi(n)}=1(\mod n)bφ(n)=1(modn)
二次剩余:
设p为奇质数,则∣Zp∗∣=p−1|Z_p^*|=p-1∣Zp∗∣=p−1,(Zp∗)2(Z_p^*)^2(Zp∗)2为p−12\frac{p-1}{2}2p−1阶子群,称为mod p的二次剩余(QR§),Zp∗Z_p^*Zp∗中的其余元素则称为mod p的非二次剩余。
定义:Legendre符号:(αp)\left(\frac{\alpha}{p} \right)(pα): =1,若α\alphaα为mod p的二次剩余,=-1,若为非二次剩余,=0,若为0
显然,(αp)\left(\frac{\alpha}{p} \right)(pα)=αp−12(mod p)\alpha^{\frac{p-1}{2}}(\mod p)α2p−1(modp)
扩展:Jacobi符号:定义(αn)=∏(αpi)ai\left(\frac{\alpha}{n} \right)=\prod \left(\frac{\alpha}{p_i}\right)^{a_i }(nα)=∏(piα)ai
二次互反律:
-
n为奇数:(2n)={1n=±1mod8−1else\left(\frac{2}{n} \right)= \left\{ \begin{aligned} 1 & \quad n=±1 mod 8\\-1 &\quad else\end{aligned}\right.(n2)={1−1n=±1mod8else
记忆方法:找规律
-
n为奇数:(m1m2n)=(m1n)(m2n)\left(\frac{m_1m_2}{n} \right)=\left(\frac{m_1}{n} \right)\left(\frac{m_2}{n} \right)(nm1m2)=(nm1)(nm2)
-
m,n为奇数:(mn)=±(nm){−m≡n≡−1mod 4+m or n≡1mod 4\left(\frac{m}{n} \right)=±\left(\frac{n}{m} \right)\left\{ \begin{aligned} - \quad& m\equiv n\equiv -1\mod 4 \\ + \quad&m\text{ or }n \equiv 1 \mod 4\end{aligned} \right .(nm)=±(mn){−+m≡n≡−1mod4m or n≡1mod4
记忆方法:(mn)(nm)=(−1)n−12m−12\left(\frac{m}{n} \right)\left(\frac{n}{m} \right)=(-1)^{\frac{n-1}{2}\frac{m-1}{2}}(nm)(mn)=(−1)2n−12m−1
mod n的平方根:
p为质数,如果a∈QR(p)a\in QR(p)a∈QR(p),则x2≡amod px^2\equiv a\mod px2≡amodp恰有两个根±b±b±b
- 若p≡3mod 4p\equiv 3\mod 4p≡3mod4,则解为x≡±ap+14mod px\equiv \pm a^{\frac{p+1}{4}}\mod px≡±a4p+1modp
- 若n=pen=p^en=pe,则x2≡amod pex^2\equiv a\mod p^ex2≡amodpe恰有两解当且仅当x2≡amod px^2\equiv a\mod px2≡amodp有解
- 若n=∏spiein=\prod_s p_i^{e_i}n=∏spiei,(a,n)=1(a,n)=1(a,n)=1,则x2≡amod nx^2\equiv a\mod nx2≡amodn要么无解,要么有2s2^s2s个解
RSA体制:
参数设置:p,q为两个约有512位的质数, n=pq, φ(n)=(p−1)(q−1)\varphi(n)=(p-1)(q-1)φ(n)=(p−1)(q−1),取(e,φ(n))=1(e,\varphi(n))=1(e,φ(n))=1,求d≡e−1(mod φ(n))d\equiv e^{-1}(\mod \varphi(n))d≡e−1(modφ(n)),则e和n为公钥,d为私钥,φ(n)\varphi(n)φ(n)为限门
如果只有n,则由于大整数分解的困难性,很难求出φ(n)\varphi(n)φ(n),故无法求出ddd;但是若有了φ(n)\varphi(n)φ(n),则进行简单求逆即可求出ddd
加密过程:m→mem\rightarrow m^em→me,解密过程:m→mdm\rightarrow m^dm→md,因为med=mm^{ed}=mmed=m(均为mod n运算)
求解xe(mod n)x^e(\mod n)xe(modn)的算法:平方乘算法
设e的二进制展开为(cmcm−1...c0)2(c_mc_{m-1}...c_0)_2(cmcm−1...c0)2,则xe=xc0(x[cm..c1])2x^e=x^{c_0} (x^{[c_m..c_1]})^2xe=xc0(x[cm..c1])2,递归即可,至多进行2m+1次乘法运算
脱密计算:
- 用平方乘算法直接求出yd(mod n)y^d(\mod n)yd(modn)
- 分别计算出yp≡y(mod p),dp≡d(mod p−1),yq,d1y_p\equiv y(\mod p), d_p\equiv d(\mod p-1),y_q,d_1yp≡y(modp),dp≡d(modp−1),yq,d1,再用中国剩余定理合并两个方程的结果:xp≡ypdp(mod p),xq≡yqdq(mod q)x_p\equiv y_p^{d_p}(\mod p),x_q\equiv y_q^{d_q}(\mod q)xp≡ypdp(modp),xq≡yqdq(modq)
判断一个数是否为质数的算法:
事实:(αp)\left(\frac{\alpha}{p} \right)(pα)=αp−12(mod p)\alpha^{\frac{p-1}{2}}(\mod p)α2p−1(modp)只对奇数成立,对n为合数至少有一般的α\alphaα不成立
S-S算法:
在1~n-1中随机选取一个数a,令x=(an)x=\left(\frac{a}{n} \right)x=(na),若x为0或αn−12\alpha^{\frac{n-1}{2}}α2n−1则返回n为质数,否则返回合数。
这是一个Monte-Carlo算法:如果n为合数则必定返回合数,如果n为质数则有大于1/2的概率为质数
Miller-Rabin算法:
设n−1=2kmn-1=2^k mn−1=2km,其中m为奇数。在1~n-1中随机选取一个数a,令b=ammod nb=a^m \mod nb=ammodn,如果b=1mod nb=1 \mod nb=1modn,则返回n为质数,否则,
对i=0~k-1,若b=−1mod nb=-1 \mod nb=−1modn,则返回n为质数,否则b=b2b=b^2b=b2
否则,返回n为合数
分析:若n为质数,且返回了n为合数,则要求对i=0~k-1,b≢−1mod nb\not \equiv -1\mod nb≡−1modn,但是由于n为质数时完全平方数x2=1mod nx^2=1\mod nx2=1modn必须x=±1mod nx=±1\mod nx=±1modn,因此必须b≡1mod b=nb\equiv 1 \mod b=nb≡1modb=n,这会返回n为质数,矛盾!故n为质数必定返回质数,同时可以证明n为合数则至少有1/2概率返回合
因子分解算法:
Pollard p-1算法:
n为合数,分解n:只需要寻找一个质因子
算法思想:假设这个质因子-1的各个准质因子都很小
假设p−1=∏qieip-1=\prod q_i^{e_i}p−1=∏qiei,且qiei≤Bq_i^{e_i}\leq Bqiei≤B,则p−1∣B!p-1|B!p−1∣B!,aB!≡1mod pa^{B!}\equiv 1\mod paB!≡1modp,从而(aB!−1,n)(a^{B!}-1,n)(aB!−1,n)>1
实际:枚举若干个B即可
Pollard ρ\rhoρ算法:
算法思想:构造mod n的同余碰撞:生日悖论:碰撞概率的增加速度远高于单次概率的增长速度
例如,任取23个人则有两个人生日相同的概率已经达到1/2
在ZnZ_nZn中任取k个元素,求(ai−aj,n)(a_i-a_j,n)(ai−aj,n),则碰撞概率为1/p1/p1/p,只要搜索1.17p\sqrt{p}p个元素即可
但是两两碰撞的存储空间过大,故改进:
构造函数f,使得p∣a−b⇒p∣f(a)−f(b)p|a-b\Rightarrow p|f(a)-f(b)p∣a−b⇒p∣f(a)−f(b),并且依次迭代比较f(x1)f(x_1)f(x1)和f(f(x2))f(f(x_2))f(f(x2)),这样在进入{xn=fn(x0)}\{x_n=f^n(x_0)\}{xn=fn(x0)}mod p的周期之后必定可以在周期中找到碰撞。
好处:存储空间很小,而且时间复杂度在n4\sqrt[4]{n}4n
本文详细介绍了密码学的基础理论,包括古典密码体制、分组密码与高级加密标准(AES)、序列密码以及RSA公钥密码体制。重点讨论了线性密码分析、差分密码分析等密码分析方法,并探讨了序列密码中的线性反馈移位寄存器(LFSR)及其统计特性。此外,还涵盖了计算安全性、伪密钥分析以及RSA体制的原理和安全性。
1212

被折叠的 条评论
为什么被折叠?



