理解HTTPS

理解HTTPS

 

HTTPS是HTTP + TLS(SSLv3)

HTTP是明文传送服务器与客户端之间的通讯内容。TLS是加密协议,

TLS=Transport Layer Security(传输层安全协议)

有了TLS的加入,就使客户端和服务器之间的通讯变成保密的了。关于TLS的详细的内容,请参看国际工程任务组的官网,

http://www.ietf.org/rfc/rfc2246.txt   ———– TLSv1.0

http://www.ietf.org/rfc/rfc5246.txt   ———– TLSv1.2

TLS之前是SSL,SSL是netscape公司研发,之前的2个版本v1, v2是保密的,v3是公开的,TLS是兼容SSL的,并且比SSL更加安全,所以现在网络中HTTPS几乎都是用TLS协议。

HTTPS通讯的过程涉及了下面3方面的内容:
1. 证书验证
2. 密钥的交换 – 采用非对称加密
3. 数据的加密解密 – 数据采用对称加密

1. 证书的验证
   证书的验证是为了证明你正在链接到的服务器是你所希望的服务器,而不是一个钓鱼网站,例如你要访问支付宝的页面去做交易,但是怎么来保证你所访问的网站是真正的支付宝页面呢?就是通过证书的验证来完成。那么是证书又是什么呢?这个和我们生活中的身份证和护照是类似的,但是不同的是身份证和护照是纸质的,但是HTTPS的证书是电子的。身份证和护照是由公安局来颁发,那么HTTPS的电子证书由谁来颁发呢?答案是数字证书认证机构(CA=Certificate Authority)是负责发放和管理数字证书的权威机构。


2. 密钥的交换
   因为互联网的通讯的主体是全世界的任何一台可以通讯的设备,因此加密的协议就要公开,比如通常所用的是RC4,DES,AES(AES是1.1之后才加入的,在1.0版本是没有的)既然加密算法公开了,那就存在一个问题,别人就可以破解网络中被加密过的数据了,因此这些加密算法引入了密钥的概念,每次通讯,通讯双方都事先交换一个共同用来加密解密的密钥,虽然加密的算法都是那几种,但是因为采用的密钥不同,那么就不能被破解(但不是不可能,也许将来有了量子计算机就可能)。那么密钥就是关键了,因此传输这个密钥,而不被第三方知道就显得非常之关键了。因此另外一种算法被引入,那就是RSA和Diffie Hellman Merkel算法(离散对数加密)被引入。RSA是利用2个大素数,计算出一个大数,这个大数作为public key,而2个大素数是私钥,用公钥加密数据,私钥解密数据。所以RSA用来交换后面加密解密数据的key,这个key一般是256, 512, 1024, 2048比特位,然后用公钥加密,私钥解密,这样通讯双方就知道了这个key。

3. 数据的加密解密

   密钥交换完成后,就使用双方协定的密钥和之前协商好的加密算法RC4, DES 或者AES的其中一种进行通讯。

 

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章转载自:IT夜班车,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *