密钥交换的过程
1 对称加密
加密和解密使用同一个秘钥
特性:
- 加密,解密使用同一个秘钥,效率高.
- 将原始数据分割成固定大小的块,逐个进行加密
缺陷:
- 秘钥过多
- 秘钥分发 数
- 据来源无法确认
常见对称加密算法:
- DES: Data Encryption Standard,56bits
- 3DES
- AES: Advanced(128,192,256bits)
- Blowfish, Twofish
- IDEA,RC6, CAST5
2 非对称加密
秘钥是成对出现
- 公钥: Public Key,公开给所有人,主要给别人加密使用
- 私钥: Secret Key,Private Key自己留存,必须保证其私密性,用于自己加密签名
- 特点: 用公钥和加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
- 数据加密:适合加密较小数据,比如:加密对称秘钥
- 数字签名:主要在于让接收方确认发送方身份
缺点:
- 密钥长,算法复杂
- 加密解密效率低下
常见算法:
- RSA: 由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,可实现加密和数字签名.
- DSA(Digital Signature Algorithm): 数字签名算法,是一种标准的DSS(数字签名标准)
- ECC(Eliptic Curves Cryptography): 椭圆曲线密码编码学,比RSA加密算法使用更小的秘钥,提供相当或更高等级的安全.
3 密钥交换
密钥交换: IKE( Internet Key Exchange)
- 公钥机密:用目标的公钥加密对称密钥
- DH(Deffie-Hellman): 生成对话(会话)密钥
DH介绍
- 这个密钥交换方法由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年发表
- 它是一种安全协议,让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥,这个密钥一般作为"对称加密"的密钥而被双方在后续数据传输中使用.
- DH数学原理是base离散对数问题.做类似事情的还有非对称加密类算法,如:RSA
- 其应用非常广泛,在SSH,VPN,Https…都有应用,堪称现代密码基石
DH实现过程:
A: g,p 协商生成公开的整数g,大素数p
B: g,p
A: 生成隐私数据: a (a<p),计算得出 g^a%p,发送给B
B: 生成隐私数据: b (b<p),计算得出 g^b%p,发送给A
A: 计算得出 [(g^ b%p)^a]%p = g ^ab%p,生成秘钥
B:计算得出 [(g^ a%p)^b]%p = g ^ab%p,生成秘钥
DH特点
- 泄密风险:私密数据a,b在生成K后将被丢弃,因此不存在a,b过长时间存在导致增加泄密风险。
- 中间人攻击:由于DH在传输p,g时并无身份验证,所以有机会被实施中间人攻击,替换双方传输时的数据