HTTPS原理与非对称加密与DNS劫持

一直不明白HTTPS的加密原理。

因为,如果连接是不安全的,那么如果服务器把密匙发送到客户端的过程中,密匙就可能已经泄漏了。所以,这样怎么想也不明白。在多了解了一下以后,原来,HTTPS的基础是非对称加密技术。就是说,加密和解密必须使用不同的两把钥匙进行。


至于原理可以自行百度:非对称加密技术。http://baike.baidu.com/link?url=IRYQN1dmGDV3qzvXN7K2zKnNBBMW2ZBOmbO4-sBMzIJcNVftHaASZqY9b0xqUmhz3c4r5-MFfIKiUtdVAu6qkjXha70YtTNjvat8wwavP4JxF5C16eNwp14Hmyd-ZPQ-h8LLE7hRBtOeZQHL-Ii_EBsioxO1ybZJZWalb56h6Cu


简单的说,以往我们想的加密解密是使用的同一把钥匙,这个是对称加密技术。就好像战争里面的密电码,如果有谁拿到了密码本,那就等于破解了整个密码体系。这个就是对称加密。非对称加密,就是同时产生一对钥匙,一个钥匙加密的,必须用另外一个钥匙才能解密。HTTPS的原理就看下面这个就明白了。

http://blog.csdn.net/clh604/article/details/22179907

现在来分析一下,https是如何借用非对称加密保证安全的

可以参看下面的文章http://blog.csdn.net/abinge317/article/details/51791856


下面来看看https如何保证连接安全的整个的局势是这样的,一个浏览器,一个应用服务器,一个证书颁发机构。浏览器需要是正规途径的发布版本,因为他内置来证书颁发机构的公匙。应用服务器需要先把自己的证书内涵应用服务器的公匙,发送到证书颁发机构。证书颁发机构认证服务器是安全的,就把证书留着。


布局完成,开始运作。用户通过浏览器开始连接应用服务器网站。应用服务器网站会给他一个证书颁发机构的联系,用户就去找证书颁发机构,证书颁发机构通过私匙加密证书然后发给浏览器。浏览器用内置的密匙解开获得证书原文。如果用户的浏览器连接到了一个假的证书机构的服务器,那么浏览器获得的信息根本就无法解密。因为加密的私匙是在证书颁发机构的。于是恶意服务器无法伪装成证书机构,除非浏览器软件是非正规渠道的,里面内置的不是正确的颁发机构的密匙。


恶意服务器如果无法伪装,那么他想监听浏览器与应用服务器之间的会话。能实现吗?


继续,当浏览器拿到安全的证书以后,会解开证书,拿到应用服务器发布的公匙。这个公匙非常有用,通过这个公匙把自己随机生成新的密匙并将这一串字用作对称加密的钥匙,(注意,这时候改了,变长对称加密的了)然后,还有一小段内容,用应用服务器的公匙加密,一并发送给应用服务器。在这个过程中,恶意服务器也能拿到这个被加密的信息。但是,因为他没有私匙,所以无法解读。而只有应用服务器可以解密这个信息。


应用服务器收到这段信息以后,通过独有的私匙解密获得这新的密匙和一小段内容。这时候,我们看到,这段私匙才是应用服务器和浏览器沟通真正的密匙。应用服务器会用这个对称密匙加密浏览器发送过来的一小段信息,然后发送给浏览器。而浏览器就用刚刚自己生成的那串只有应用服务器和自己才知道的密匙解密这段信息。用拿到的信息和自己的信息进行比对。确认没有问题,然后就用这个密匙根应用服务器会话。如果一个恶意服务器,就算拿到了,浏览器用应用服务器公匙加密的信息,他因为没有应用服务器的公匙,因此也无法解密这段信息。而,当服务器发送最后一段确认的信息时,恶意服务器可以拿到,但是他没有办法解开信息,所以,这段信息只能被浏览器解开。于是,就建立了悄悄话沟通的线路。


现在,恶意服务器变得更厉害了,他通过劫持dns,让浏览器的请求,不是直接到应用服务器,而是直接到一个恶意服务器。因为dns把域名地址指向了他。这时候,恶意服务器就将变成浏览器的代理,先从证书颁发机构获得证书,然后把证书拦截,并生成自己的证书发给浏览器,浏览器比对以后如果认为没有问题,就会跟恶意服务器建立https通信,而恶意服务器扮演中间人,再连接到真实的应用服务器。这个时候,浏览器的一切信息都通过恶意服务器被转换,信息自然就暴露了。


所以,我们可以看到,证书其实不一定非的是证书颁发机构出来的,因为没有证书颁发机构,应用服务器直接把密匙发给浏览器是可以的。只是浏览器确实会说证书可能有问题的错误。但是,依旧可以通过这个跟应用服务器建立https连接。

你可能感兴趣的:(杂类)