密码学读书笔记——3

【公钥密码数论知识】——RSA
对称密码学是不安全的,无法防止对方的直接欺骗。比如对方可以直接用相同密钥加密一个数据,并说这是对方承认的数据。所以一般要使用非对称的加密方法。公钥算法需要正向容易,逆向困难。比如:①整数分解——RSA②离散对数——DH,elgamal,DSA③椭圆曲线:ECDH,ECDSA
数论知识:
欧几里得算法:辗转相除法——最大公约数gcd
gcd(r0,r1)=gcd(r0 mod r1,r1)=…gcd(rl,0)计算效率极高,即使是2^1024位的
整数,计算也只需要1024乘上常数的计算时间。
扩展的欧几里得算法(EEA):存在整数对 x,y ,使得 gcd(a,b)=ax+by。x和y的系数算法思
路为,
ri=si·r0+ti·r1_这是一个迭代的过程
最后一轮:rl=gcd(r0,r1)=sl·r0+tl·r1=s·r0+t·r1
【例子】
欧几里得算法
欧几里得算法
【*】重要用途:用来求逆元【包括多项式的逆元】:t就是r1的逆元:t=r1^ mod r0

【欧拉函数】:整数环Zm中与m互素的整数的个数为φ (m)
求解φ(m)在大数下很困难,所以有公式:当m=连乘数 p1e1*p2e2p3^e3 分解唯一
φ(m)=连乘(piei-piei-1)
如:240=16
15=2^4 * 3 5=82*4=64

【费马小定理】a^-1 = a^p-2 (mod p) 用此方法可以很快计算逆元。

欧拉定理 gcd(a,m)=1时,a^φ(m)=1(modp)

【RSA加密算法】
1.随机产生两个大素数数 p ,q
2.计算N = p * q
3.求欧拉数:φ(N) = (p-1)*(q-1)
4.选取与φ(N)互质并1< e < φ(N)的随机数e
5.用欧拉公式求e的逆元d
6.公钥(N,e) 私钥(N,d)
加密过程:
1.加密信息m的ascll m^e ≡ c (mod N) c即为密文
2.解密信息: c^d ≡ m (mod N)
明文=密文^私钥 mod n
密文=明文^公钥 mod n

【加速技术】比如求x的n次方,可以用x2->x4->x^8这样的优化方法,
高效的执行指数运算x^d mod n;短公开指数。
【寻找大素数】
生成素数的方法:由RNG随机数生成器生成,成为素数
候选者,进行素性测试,随着数字变大,素数会变得稀疏,大数随机到素数概率
大概是1/177
测试素数可以基于费马素性测试(a^(p-1))=1,是p是素数的必要条件,但是有可能
卡迈克数也是满足的
还可以基于Miller-Rabin测试,若p-1=r*2^u r是奇数,若是a^r ≠ 1 mod p,且 ar2j
≠p-1modp 对于所有j(0~u-1)都成立。它比费马好在他计算的效率高一些,也不用
遇到这么多卡迈克数
【填充】
现代的RSA需要有填充方案,因为明文到密文有特定对应的关系,且具有延展性,
即使攻击者不直接破解RSA算法,他可能可以修改。同时延展性可以使得,利用修改一些
密文内容,来达到修改部分内容的目的,比如金额。
采用填充方案:加密明文前,将一个随机结构嵌入到明文中进而避免上述问题。现在用OAEP,最优非对称填充。
【攻击】
①协议攻击:利用RSA的延展性。
②数学分析:e·d=mod φ(n)
如果能求出欧拉数φ,就可以求出e的逆元d。欧拉数求解的最佳方法就是找到两个素数
而大数分解很难,1024位的大数分解,至今难以破解。
③旁道攻击:功耗跟踪硬件能耗
【能耗】
乘法能耗很大,对称算法一般比公钥算法高1000倍以上,所以用来加密大量数据时,一般用
对称算法

猜你喜欢

转载自blog.csdn.net/czq5659502/article/details/89293954
今日推荐