在使用本博客提供的学习笔记及相关内容时,请注意以下免责声明:
信息准确性: 本博客的内容是基于作者的个人理解和经验,尽力确保信息的准确性和时效性,但不保证所有信息都完全正确或最新。
非专业建议: 博客中的内容仅供参考,不能替代专业人士的意见和建议。在做出任何重要决定之前,请咨询相关领域的专业人士。
个人责任: 使用本博客内容的风险由用户自行承担。作者不对因使用本博客内容而导致的任何直接或间接损失承担责任。
版权声明: 本博客中的所有内容均为作者原创,如需转载,请注明出处。同时,若有引用他人作品,也将尽力标明出处,如有侵权请及时联系作者。
链接免责: 博客中可能包含外部链接,作者对这些链接所指向的内容不负责任,访问此类链接需谨慎。
感谢您的理解与支持!希望本博客能够为您的学习提供帮助。
对称加密算法总结*
DES加密过程:
110011-->
首位和为行:11-->3
中间内容为列:1001-->9
--->14
---->1110
SM算法*
国产密码算法:是指由国家密码研究相关机构自主研发,具有相关知识产权的商用密码算法,目前已 经公布的国产密码算法如下:
公钥密码分类*
■ 目前公认的比较安全的公钥密码有两类:
. 基于大素数因子分解困难性:RSA
· 基于离散对数问题困难性:DH、Elgamal、ECC (椭圆曲线密码)
RSA算法
■RSA 算法是非对称算法,由Ronald Rivest、Adi Shamir、Leonard Adleman三人发明。RSA 算法中, 公钥和私钥都可以用于加密消息,用于加密消息的密钥与用于解密消息的密钥相反。
■ RSA算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。 ■SSH、OpenPGP、S/MIME和SSL/TLS都依赖于RSA 进行加密和数字签名功能。
■ 公钥密码思想是将传统密码的密钥K一分为二,分为加密钥Ke和解密钥Kd, 用加密钥Ke控制加密,用解 密钥Kd 控制解密。
■ 每个用户都将自己的姓名、地址和公开的加密钥等信息在KMC (密钥管理中心)登记,将公钥记入共享的 公钥数据库PKDB(Public Key Database)。
RSA三种模式-加密模式
■ (1)加密模式(确保数据的秘密性\机密性)
■ 发方:
·①A首先查PKDB,查 到B的公开的公钥KeB
·②A 用KeB加密明文M得到密文C:C=E(M,KeB)
·③A发密文C给B
■ 收方:
·①B接受C
·②B用自己的私钥KdB解密C, 得到明文M=D(C,KdB)
RSA 三种模式-认证模式
■ (2)认证模式(确保数据的真实性)
■ 发方:
·①A用自己的私钥KdA加密M, 得到密文C:C=E(M,KdA)
·②A发密文C给B
■ 收方:
· ①B接受C
·②B查PKDB, 查 到A 的公开的公钥KeA
·③用KeA解密C得到明文M:M=D(C,KeA)
RSA 三种模式-混合模式
■ (3) 加密认证混合模式(同时确保数据的秘密性和真实性)
■ 发方:
·①A 用自己的私钥KdA 加密M, 得到中间密文S:S=E(M,KdA)
·②然后A查PKDB, 查到B的公开的公钥KeB
·③A用KeB加密S得到最终的密文C:C=E(S,KeB) · ④A 发密文C 给B
■ 收方:
·①B接受C
·②B用自己的私KdB 解密C,得到中间密文S=D(C,KdB)
·③B查PKDB, 查 到A的公开的公钥KeA。用 KeA 解密S得到明文M,M=D(S,KeA)
非对称加密算法RSA- 相关数学基础(1)
■欧拉函数:对于一个正整数n,小 于n且与n互素(最大公约数只能是1)的正整数的个数,记为φ(n)。
·对于一个素数n, 可知φ(n)=n-1
·对于两个素数p和q,它们的乘积满足n=p*q,则可知 ·φ(n)=(p-1)*(q-1)
■欧几里得算法:gcd(a,b)表示a和b的最大公约数,gcd(a,b)=1,表示a,b最大公约数为1,说明a和b互质。
■同余:两个整数a,b,若它们除以整数m 所得的余数相等,则称a与b对于模m 同余,或a同余b模m, 记作 a=b(mod m)。
· 例如:40=1(mod 13),26=2 (mod 12)。
■求解乘法逆元
·5×d=1 mod 72,求d ?
·5×d-1=n×72(n=1,2,3,4...)
· 得:当n=2,d=29
非对称加密算法RSA计算
|------------|-----------------------------------------|--------------|
| 步骤 | 操作 | 是否保密 |
| ① | 随机选择两个大素数p和q | p和q保密 |
| ② | 计算n=p×q | n公开 |
| ③ | 计算φ(n)=(p-1)(q-1) | φ(n)保密 |
| ④ | 随机选取一个正整数e,1<e<φ(n)且gcd(e,φ(n))=1(互素) | e公开 |
| ⑤ | 根据e×d=1 mod φ(n),求出d | d保密 |
| ⑥ | 加密运算C=Me mod n,解密运算M=Cd mod n | |
| RSA密码公开密钥(公钥)Ke=<n,e>,保密的解密钥(私钥)Kd=<p,q,d,φ(n)> |||
案例:
设素数p=5,q=17, 并令e=11, 明文M=2, 则RSA 的加密操作如下:(自己换着试一下)
已知:p=5 q=17 e=11 M=2
n=p*q=85
φ(n)=(p-1)(q-1)=4*16=64
e=11
ed=1modφ(n)
11d=64n+1
d=35,n=6
C=M^e mod n = 2^11 mod 6 =
M=C^d mod n = ....
■设在RSA 的公钥密码体制中,公钥为 (e,n)=(7,55),则私钥d=(66)。
.A.8 B.13 C.23 D.37
RSA密码的安全性
■ 因子分解攻击:小合数的因子分解是容易的,然而大合数的因子分解却是十分困难的。
■ 为了确保RSA 密码的安全,必须认真选择RSA 的密码参数,各个参数选择如下:
·应 用RSA 密码,应当采用足够大的整数n,p 和q要足够大并且p和q应为强素数。
·一般加密密钥和认证密钥选n为1024位,而平台根密钥和存储根密钥则选n为2048位。
·为了使加密速度快,e 的二进制表示中应当含有尽量少的1。
·为了使解密速度快,希望选用小的d, 但是d太小也是不好的。当d小于n的1/4时,已有求出d的攻击方法。
·不要许多用户共用一个模数n。