一:目前主流的加密密钥分为两大类:对称密钥和非对称密钥
1)对称密钥:数据发送方和接收方使用的是同一个密钥,即加密和解密的密钥是同一个(K)
2)非对称密钥:数据发送方使用接收方的公钥进行加密,接收方使用自己的私钥进行解密(GK,SK)
二: RSA算法原理分析
1.核心:如何生成公钥和私钥?如何确保加密解密后信息前后一致?
2.数学原理:
1)原则:攻击者很难破解私钥——>大质数分解难题
2)step1:选择两个不同的素数p,q(越大越好);
3)step2:N=p*q;φ(N) = (p-1)*(q-1),令φ(N)等于:U,φ(N)为欧拉函数;
4)step3:选取整数E,满足1<E<U且gcd(E,U)=1即E,U互质;
5)step4:计算E对于U的模反元素D,E*D ≡ 1mod(U),即E*D=k*U+1,k为整数;
同余定理: a和b除n所得余数相等,则称“a和b对模n同余”,记为a≡b(mod n)
6)step5:(E,N)为公钥;(D,N)为私钥
3.加密解密:
1)加密过程
① 对M进行加密;
②密文C=M ^ E mod N ;
2)解密过程
①对C进行解密;
②明文M=C ^ D mod N = (M ^ E mod N ])^ D mod N = M^(E*D) mod N = M;
4.实用举例(引用博主“Shell>y”的博文例子):
1)取p=103,q=97;
2)N = 103*97=9991;φ(N) = (102-1)*(97-1)=9792 = U;
3)E = 1213,满足 gcd(U,E) = 1,且1<E<U;
4)1213*D - 9792*k = 1;k = 510,D = 4117;
5)公钥(E,N)=(1213,9991);(D,N)=(4117,9991);
1)明文M=6;密文C=6^1213(mod 9991) = 7863;
2)密文C=7863;明文M=7863^4117 mod 9991 = 6;
3)发送明文=接收明文
三:ECC算法原理分析
1.核心:如何生成公钥和私钥?如何保证加密解密前后信息一致?
2.数学原理:
1)原则: 攻击者很难破解私钥——>离散对数求解
2)step1:接收方选择一条椭圆曲线Ep(a,b),并随机取椭圆曲线上一点,作基点G;
3)step2:接收方随机选择一个私钥k,并生成公钥K=kG;
4)step3:接收方将Ep(a,b),K,G传给发送方;
5)step4:发送方将明文编码到Ep(a,b)上一点M,并产生一个随机整数r;
6)step5:发送方,加密数据:C1=M+rK;C2=rG;
7)step6:接收方,解密数据:C1-kC2 = M+rK-k(rG) = M +rK-r(kG) = M;
3.私密性说明:
1)整个过程,只公开Ep(a,b),K,G,C1,C2;而解密还必须要k(私钥);
2)椭圆曲线上,已知两个点K,G,要反向求满足K=k*G中的k是很难的,即对应数学中的求解离散对数问题。例如,已知p,g,y,求解满足y = g^x mod p的x的值,这个很难;但如果知道x,p,g,求解y = g^x mod p却很快。ECC算法正是利用这点生成了难以破解的密钥。