加密
-
常用算法
AES、DES、RSA
,前两者为对称加密,后者为非对称加密
-
公钥加密,私钥解密
- 公钥和私钥都可以互相加解密
- 数字签名就是用私钥加密
- 但实际上对公钥和私钥的要求就是截然不同的
- 公钥和私钥都可以互相加解密
-
通信过程
- A生成私钥和共钥对(合称密钥),并把公钥传递给B
- B利用公钥使用标准加密算法给原文加密,并传递给A
- A利用私钥使用对应的标准解密算法解密密文,获得原文
-
因为加密和解密时间较长,一般用公开密钥加密对称密钥,然后使用对称密钥通信
- 对称加密的优点是开销小,适合对大量数据进行加密
- 问题在于如何安全地交换秘钥
- 对称加密的优点是开销小,适合对大量数据进行加密
秘钥管理
- 现代密码学的安全基础是秘钥的保密性,而不是像古典密码学那样基于算法的保密性
DH秘钥交换算法
- DH秘钥交换算法是一种在非安全信道中安全地创建共享秘钥的算法
- 最大的问题就是无法避免中间人攻击
- 最大的问题就是无法避免中间人攻击
- 如果攻击者插在用户与远程主机之间(比如在公共的 wifi 区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么安全机制就荡然无存了
- 通过CA证书认证DH算法中server端的公钥可以避免这种风险
- 如果证书采用的是RSA算法,那么需要服务端用RSA的私钥对生成的DH公钥签名
- DH和RSA的区别
- DH只作为密钥交换算法,RSA既可以作为认证算法,也可以作为密钥交换算法
- DH算法可以保证前向安全,RSA算法不保证
- 实际上是DHE(EDH,临时DH)、ECDH(椭圆曲线版DH)能够保证前向安全
- RSA也可以实现前向安全,RSA数字证书只用于认证,认证成功再生成一次性RSA公钥/私钥,这一次性的临时公私钥对只用于密钥分发
- 但是这种方式效率很差,一般不采用
交换过程
- 通信双方商定一个质数p 和另一个底数g(无需保密)
- 同时各自生成只有自己知道的随机数a和b
- 具体交换过程如下图,最终计算得到的s和s’一定相等,这就是共享秘钥