qakcn
学生会会长
学生会会长
  • 注册日期2008-10-31
  • 最后登录2021-01-05
  • 生日1988-8-18
  • 光玉3394颗
阅读:1170回复: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
bleen
光坂学士生
光坂学士生
  • 注册日期2010-05-28
  • 最后登录2022-02-21
  • 生日1988-12-9
  • 光玉2111颗
沙发#
发布于:2011-05-20 16:18
Re:科普第11篇——为什么HTTPS会更安全?
咩哈哈哈,密码学是我的专业课,来复习,准备考试了。。。

PS:话说家族的FTP就是不加密的,因为我曾经用wireshark+winPcap做抓包实验的时候,就拿家族的FTP作为实验对象,数据包里能看到账户名和密码。。。

实验报告的一部分。。。仅做研究,切勿模仿,不然老夏要蛋疼了。。。
[附件]  [附件]

回复(0) 喜欢(0)     评分
初音
光坂基金会
光坂基金会
  • 注册日期2010-05-29
  • 最后登录2015-10-10
  • 生日1990-10-3
  • 光玉722颗
2楼#
发布于:2011-05-20 16:43
我只知道https是功夫网的克星。搜索引擎收录的杀手。
回复(0) 喜欢(0)     评分
梦幻的夏
光坂学士生
光坂学士生
  • 注册日期2008-10-29
  • 最后登录2014-08-21
  • 生日1986-4-15
  • 光玉3005颗
3楼#
发布于:2011-05-20 17:51
FTP的密码我记得是设置了MD5加密32位了的,不过后来好像被大扣在升级SQL组件时又改成自动模式了,最近才改回来。
FTP连接上也可以设置为加密连接,不过觉得没必要,就没有这样设置。现在给你们一提醒,后半夜我还是去试试把管理号这些弄成加密连接才是。
回复(0) 喜欢(0)     评分
琥珀
光坂硕士生
光坂硕士生
  • 注册日期2009-06-07
  • 最后登录2020-12-09
  • 生日1989-12-26
  • 光玉6903颗
4楼#
发布于:2011-05-20 18:06
学校只教勒最简单的英文加密= =b   就是china每个词后移5位

嘛~~这么说还是很安全的
回复(0) 喜欢(0)     评分
liurensong12
光坂三年生
光坂三年生
  • 注册日期2011-05-16
  • 最后登录2014-11-26
  • 生日1991-4-3
  • 光玉871颗
5楼#
发布于:2011-05-20 19:30
好深奥的帖子啊
[IMG]http://p.dmdjz.com/uploads/2012/03/cc7971ef35bfe184cf1b3e29%281%29.jpg[/IMG]
回复(0) 喜欢(0)     评分
甜瓜包制作大师
学生会干部
学生会干部
  • 注册日期2009-11-29
  • 最后登录2021-10-09
  • 生日1994-1-6
  • 光玉3410颗
6楼#
发布于:2011-05-20 20:19
嗯,大概了解一下,增长见识
回复(0) 喜欢(0)     评分
ct一剑
光坂博士生
光坂博士生
  • 注册日期2010-10-04
  • 最后登录2014-08-21
  • 生日1991-10-16
  • 光玉13939颗
7楼#
发布于:2011-05-21 00:28
网银都不敢乱开的~~~~一般只在淘宝上用
回复(0) 喜欢(0)     评分
chi015
光坂大学生
光坂大学生
  • 注册日期2010-10-10
  • 最后登录2012-07-13
  • 生日1989-7-29
  • 光玉1364颗
8楼#
发布于:2011-05-21 00:39
算是涨见识的了,有点不懂的虽然!
回复(0) 喜欢(0)     评分
aitushu
光坂学士生
光坂学士生
  • 注册日期2009-08-14
  • 最后登录2013-04-08
  • 生日1950-1-1
  • 光玉3352颗
9楼#
发布于:2011-05-21 04:05
好好学习天天向上
回复(0) 喜欢(0)     评分
游客

返回顶部