qakcn
学生会会长
学生会会长
  • 注册日期2008-10-31
  • 最后登录2021-01-05
  • 生日1988-8-18
  • 光玉3394颗
阅读:1176回复:9

科普第12篇——为什么HTTPS会更安全?

楼主#
更多 发布于:2011-05-20 16:17
HTTPS大家应该见得不少了,网银、支付宝、在线购物网站都有使用这个来确保数据安全。
但是为什么同样是在网络上传输,HTTPS就安全呢?

要回答这个问题,我们就得先看看为什么HTTP不安全。

HTTP传送数据是不加加密的,而且一般都是和服务器的80端口通信(客户端的端口是随机的),所以如果有人在网络上侦听发送到服务器80端口,或者从服务器80端口返回的数据,就可以获得数据包里的内容。

所以,即使你看着密码输入框里显示的是星号、圆点,浏览器发送给服务器的数据还是明文不加密的,这些东西被别人知道了可不好。
虽然可以在客户端使用JavaScript进行简单的加密,但是别人能截获到一些可以识别的信息,而且也能轻易获得加密的JavaScript代码,这使得加密较容易被破解。

如下图,就是登录新浪微博时的数据包,可以看到虽然密码被加密成了一串十六进制数字,但是仍然可以识别用户名的username和密码部分的password。
 [附件]

所以我们需要更强力的加密,要让别人即使截获了数据也不知道哪部分是代表了用户名,哪部分是代表了密码。

于是SSL应运而生了。
安全套接层(Secure Sockets Layer)是曾经的浏览器霸主Netscape公司搞出来的旨在提高通过网络交换数据的安全性。之后IETF(互联网工程任务组,Internet Engineering Task Force)对其进行了标准化,诞生了TLS(传输层安全,Transport Layer Security)。SSL和TLS本质上没有太大的区别,但是我们一般还是叫SSL。

HTTPS并不是一种新的协议,而是通过SSL协议来传输HTTP协议,相当于把HTTP包装进SSL里了。SSL不光可以用在HTTPS,FTP也有对应的FTPS,还有邮件服务的POP3、SMTP等等,都可以利用SSL来保证数据安全。

那么SSL又是怎样保证安全的呢?当然还是只有对数据进行加密。
在《科普第7篇——加密解密》中我们说过,加密算法有对称加密和非对称加密两种。对称加密要求加密、解密都使用相同的密匙,而客户端和服务器不可能事先就知道要用什么密匙(要不然别人也能“事先”确定你要用什么密匙了,因为网站是一个公开的资源,不可能只对你搞特例),所以要使用对称加密就必须交换密匙,而这个过程中也有可能被截获。
而非对称加密用来加密和解密的密匙是不同的,加密用的公匙是可以公开的,而解密用的私匙只有需要解密的才知道。虽然这样明显更安全,但是服务器可没有那么好心,还先与你交换一下公匙,然后再分别加密解密。

于是,实际情况是,在HTTPS通信中,上面两种加密都有用到。
服务器有一个经由证书认证机构颁发的证书,一个网站必须有一个独立的证书,而认证是为了确保网站的真实性,否则一个钓鱼网站用假证书来欺骗你那可不好。浏览器在检测到没有经过可信任的机构颁发的证书,会有提示,这是就要注意是不是钓鱼网站了(但是认证的证书很贵,有的小网站只是需要加密而不需要认证,就会使用私有证书,所以也不一定就是钓鱼网站)。
证书里面就记录着非对称加密时所用的公匙,任何人都可以利用公匙加密向网站发送数据,只有持有私匙的服务器才能解密。
淘宝的证书:
 [附件]

HTTPS访问的过程是:
浏览器向服务器获取证书,并确认证书的有效(证书还会过期)。
浏览器还要告诉服务器自己支持的加密方式,服务器返回服务器支持的加密方式。
浏览器选用一种双方都支持的加密方式(通常都是对称加密),然后随机生成一个用于这种加密方式的密匙,然后用证书里的公匙将这个密匙加密,然后发送给服务器。
服务器用私匙解密,得到对称加密的密匙,然后向浏览器确认。
随后双方就用选定的加密方式与密匙来进行数据交换了。

可以看到,非对称加密只是在最初协商加密方式和密匙时用到,后面的数据交换使用的是对称加密。对称加密只要密匙不泄露,安全性也是非常高的。
加密后的数据:
 [附件]

HTTP请求的头信息中,会把请求的域名、页面以及参数都放进去,所以截获的HTTP头信息里还能知道你在访问哪个网站的哪个页面。
而HTTPS把所有内容都放到了SSL里,除了主机IP地址与端口之外,截获的信息不会泄漏域名、请求的网址等信息,甚至只能得知你在使用SSL,至于你究竟是HTTPS、FTPS、SSH还是其他什么的都无从获知(不过HTTPS端口一般都是443,从这点倒是可以基本肯定是在使用HTTPS)。


总之,在最后再提醒大家一句:如果你访问网银等,一定要确认网站的证书真是有效,不要被钓鱼网站欺骗了!


==========之前的文章==========
科普第1篇——计算机色彩
科普第1篇补遗——CSS颜色
科普第2篇——光盘
科普第3篇——2、8、10、16
科普第4篇——电池
科普第5篇——浏览器
科普第6篇——字符编码
科普第7篇——加密解密
科普第8篇——移动通信技术
科普第9篇——为什么32位CPU不能支持大于4GB内存?
科普第10篇——智能手机简介
科普第11篇——14.52-14.49=0.0299999?

科普番外篇1——虽然没用但了解一下也很有趣的知识

喜欢0 评分0
游客

返回顶部