对称加密和非对称加密
加密分两种,对称加密和非对称加密。对称加密是指加密的双方使用同一个密钥加密和解密数据。非对称加密会生成两个密钥,公钥和私钥。公钥加密的数据使用私钥解密,私钥加密的数据使用公钥解密。
对称加密,优点:算法简单,计算速度快;缺点:密钥安全交换困难
非对称加密:优点:安全,密钥不会包含在任何传输过程中;缺点:算法耗费CPU资源
数字证书
非对称加密虽然可以将公钥在网上传播,但是如何验证这个公钥是真实的,需要第三方机构(CA)的认证。而第三方机构又需要另外一个第三方验证,这就是平常所说的证书链。
CA证书包含的内容,公钥、证书所有者、证书发布机构和有效期。CA证书将上面这些信息做个签名,签名过程一般就是做一个Hash计算,将Hash后的值用CA机构的私钥加密后和证书内的其他数据一起放进证书。hash加密的方式叫签名算法。
验证证书,我从网站上得到一个证书,证书里可以看到是哪个CA机构签发,只要拿到这个CA的公钥(公开的)解密签名。解密成功后得到一个证书里的内容和一个Hash,将证书中其他信息Hash后和这个Hash值对一下,对的上,说明证书里包含的公钥是对的。这里面有一个问题,我怎么知道我拿到的CA的公钥是对的呢?这就需要上一级的CA机构再给签名的CA的公钥做个证书。这样一级级验证后直到到了root CA,能做root的全球就只有几个,他们的公钥都打包到操作系统里了,所以不需要再验证了。所以如果使用盗版的系统...
HTTPS工作模式
https是将非对称和对称结合起来用的,在建立连接的阶段,验证证书后双方确认一个对称加密的密钥,这个过程是非对称加密。这个过程结束后,就用大家协商好后的对称加密密钥交换数据。双方会维护一个session,在session有效期内这个密钥是有效的,过了有效期以上步骤重走一遍。
https flow.jpg
https加密后还存在一个问题就是重放,别人可以截获加密后的请求不断重发。这个可以通过签名来解决。使用Timestamp和一个随机数做一个签名,随机数保证唯一,服务端对同一个随机数只接收一次。同时timstamp用来保证请求的时限。
参考文章:
[极客时间] 趣谈网络协议 --刘超
网友评论