一文弄懂HTTP,HTTPS,对称加密,非对称加密,数字证书

HTTP:明文传输(不安全)

要弄清楚HTTPS,先来说说加密传输的演变:

1.首先,对称加密(不安全;一把密钥;密钥明文传输,数据加密传输。):分两步,服务器生成密钥,发给客户端,这样客户端和服务器都有这把密钥了;然后双方数据都用这个密钥加密传输。这种方式中间人虽然看不到明文数据,但是可以截取密钥,从然可以解密数据,不能保证服务器的密钥是否安全传到客户端。主要算法有DES和AES等

2.其次,非对称加密(不安全,客两套密钥:户端和服务器各自拥有一套私钥和公钥,各自的私钥和公钥能彼此解密):分两步,首先要拿到对方的公钥;然后服务器和客户端分别用对方的公钥来加密数据,对方用私钥解密。这样虽然公钥是明文传输,但是各自的私钥不公开,所以相对与对称加密来说较为安全。主要算法有RSA、Elgamal、背包算法、Rabin、Diffie-Hellman、ECC(椭圆曲线加密算法)等。(补充:由于非对称加密加密和解密过程耗费时间长,所以还有一种将对称加密和非对称加密相结合的方式:非对称加密传密钥,对称加密传数据,只用到了服务器端的一套公私钥:客户端在收到服务器的公钥后,用这个公钥生成一个密钥R,然后将密钥R回传给服务器,这样服务器和客户端同时拥有了这个密钥R,然后用这个密钥R加密传数据,相当于对称加密),尽管如此,还是不安全的,理由:问题出在第一步明文传公钥的时候,中间人可以拿到公钥,自己再冒充服务器有一套公私钥,发自己的公钥给客户端,客户端生成秘钥R回来时,又被中间人截取,中间人再用第一步拿到的服务器公钥加密秘钥R回给服务器。这样中间人能拿到秘钥R,数据在中间人这里相当于明文存在。客户端不能确定对方公钥是不是属于服务器,所以也不安全

3.最后,数字证书(为了能确认公钥属于服务器):a.找一个有公信力的认证中心(CA),服务器在给客户端传输公钥的过程中,会把公钥以及服务器的个人信息通过Hash算法生成信息摘要;b.用CA提供的私钥对信息摘要进行加密来形成数字签名;c.把原来没Hash算法之前的个人信息以及公钥 和 数字签名合并在一起,形成数字证书。客户端拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,否则就不是。这样,就可以保证服务器的公钥安全着交给客户端了。至于CA的公私钥,服务器一开始就会申请,客户端也会申请或者是下载。由于有时间差,中间人不可能同时拥有CA给你的这一套公私钥,也就保证了服务器的公钥安全传输。

HTTPS就是在HTTP基础上加了一层加密层(数字证书)。

以上纯属个人理解,如有不当之处,望指正!

你可能感兴趣的:(常识)