非对称加密时序图
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
-
对称密钥加密
- 单密钥, 加密和解密是相同的密钥。
- 密钥保存很重要,加密方和解密方任一方泄露密钥,将会使通信存在被窃听、偷换等危险。
- 例:DES(Data Encryption Standard),通用的双钥加密算法为RSA( Rivest-Shamir-Adleman)。
-
非对称密钥加密
- 密钥分为公钥和私钥,公私密钥不相同,但相互对应。
- 公钥加密的信息只能私钥才能解开,反之亦然。
- 公钥加密私钥解密,用于通信信息加密;私钥加密公钥解密,用于加密方数字签名,证明身份有效性。
-
非对称加密时序图
- 通常C/S架构中加密通信必须验证S(Server)端的身份有效性,即证书、数字签名等。
- 中间人攻击(Middle-Man Attack): 中间人使用自己的证书和公钥,对client冒充server,对server冒充client.劫持、篡改双方的通信而不被察觉。
- 针对以上问题,需要server端向第三方的证书权威机构(CA)公证自己的信息、域名和公钥等,CA对其进行私钥加密生成"数字证书"(Digital Certificate)。server端后续通信过程中,只需要再加上这个数字证书,client收到后,根据CA的相关公钥解开证书,获取到server的信息、域名和公钥等,然后公钥解密签名, 比对信息是否被篡改。能用证书中解开的公钥解密签名,则证明发信人的确是想要的client端,比对签名解密后的digest(hash摘要),则能确认信息是否被篡改,这样就保证了加密通信的可靠。
-
ssl 双向验证、单向验证和双方均不验证
- 一般Web应用是SSL单向验证,客户端验证服务端的身份,服务端不验证客服端,如浏览器访问服务端网站。企业内微服务、应用间的双向通行往往需要双向验证。
- 从客户端方面来看,对于服务端的证书可以选择验证或者忽略(即始终信赖),后者虽然不安全,但是对于自己开发部署的企业内部程序而言会比较方便。
<全文完>