SSL验证, 非对称加密时序图

非对称加密时序图

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)端的身份有效性,即证书、数字签名等。
    client server ssl/tls 请求 certificate证书, PubKey公钥 client验证 证书是否在信赖的 证书库里,或直接 信赖未经验证的证 书 公钥加密信息为密文 server私 钥解密得到信息 server发送信息: msg->hash-> digest(hash 摘要)->私钥加密-> Signature(数 字签名) 数字签名+信息 client公钥解密签名 ->digest-0, msg->hash->digest-1, 比对digest-0 和 digest-1 确认信息是否被篡改 client server
    • 中间人攻击(Middle-Man Attack): 中间人使用自己的证书和公钥,对client冒充server,对server冒充client.劫持、篡改双方的通信而不被察觉。
    request
    certificate, PubKey
    certificate, PubKey
    request
    client
    middleman
    server
    • 针对以上问题,需要server端向第三方的证书权威机构(CA)公证自己的信息、域名和公钥等,CA对其进行私钥加密生成"数字证书"(Digital Certificate)。server端后续通信过程中,只需要再加上这个数字证书,client收到后,根据CA的相关公钥解开证书,获取到server的信息、域名和公钥等,然后公钥解密签名, 比对信息是否被篡改。能用证书中解开的公钥解密签名,则证明发信人的确是想要的client端,比对签名解密后的digest(hash摘要),则能确认信息是否被篡改,这样就保证了加密通信的可靠。
  • ssl 双向验证、单向验证和双方均不验证

    • 一般Web应用是SSL单向验证,客户端验证服务端的身份,服务端不验证客服端,如浏览器访问服务端网站。企业内微服务、应用间的双向通行往往需要双向验证。
    • 从客户端方面来看,对于服务端的证书可以选择验证或者忽略(即始终信赖),后者虽然不安全,但是对于自己开发部署的企业内部程序而言会比较方便。

    <全文完>

你可能感兴趣的:(SSL,非对称加密)