HTTP协议是如何实现“秘密交互”的?
你知道HTTP访问的交互过程吗?
如题,可能有很多并不了解,本文将简单地介绍一下当你访问某网站时你的电脑与网站之间的数据交互过程。
大家都知道去访问网站都是使用浏览器,在地址栏中输入你想访问的链接,按个回车就能打开相应的网站。然后就可以尽情得浏览网页内容了。
那你知道WEB页面如何呈现的吗?
网页内容肯定不会凭空出现,当你在浏览器地址栏中输入URL(链接)时,WEB浏览器会发送相应的WEB请求信息到目标网站(服务器),当目标网站服务器接收到请求时服务器回应相应的内容给你的浏览器(客户端),这样你就看到了网页内容。
不过这只是基本的访问过程。这也是HTTP或HTTPS协议的数据交互的过程,但这个看似非常简单的交互过程中隐藏着很多小交互过程,下面就来一个一个研究一下。
HTTP和HTTPS的区别
首先,先来扫个盲,平常我们在浏览网页的时候可有很少关注这个网站是使用什么协议进行交互的,网页数据交互分为两种方式,一种就叫HTTP,别一种叫HTTPS。这两种方式我们都统称是HTTP协议,但却各有技术上的不同点。
一般情况下,如果你访问的网页不需要你登陆或者并没有登陆入口的这种网站通常情况下都会使用HTTP,但这不是绝对的,有些网站可能并不是这样的。那怎么样的网站才叫使用HTTP协议的呢?
这是一个典型的HTTP协议交互的网站,看图中标识的位置,在地址栏中的最开始位置,有个“不安全”提示,在URL的最前端也没有任何标识。除了这种HTTP协议交互的网站以外呢就是HTTPS交互的网站的,这一类的网站是比较多的。
一般情况下,当这个网站需要登陆或者有登陆入口的,又或者这个网站提供了用户数据的这一类网站通常都是HTTPS的,这类的网站非常多,比如网银,比如邮箱等
看地址栏当中,明显与HTTP协议交互的网站不一样,地址栏位置没有标识不安全,而且在URL的最前面标识了HTTPS://协议,这就是典型的HTTPS。我刚才说只要有登陆入口或者需要登陆网站基本都是用HTTPS,请注意,这不是绝对,你去看看上面4399小游戏那个网站,也是可以登陆的,这个网站可没有使用HTTPS协议哦。
上面介绍了两个协议,那这两个协议仅仅只是URL不一样这么简单吗?答案肯定不是的,我刚才有提到登陆,有登陆一般是HTTPS,没有则一般是HTTP。既然关系到登陆,那就一定跟用户数据有关系,那就需要有安全的保证,从上图HTTP协议的URL中也看到不安全提示,意思也就是没有安全的保证,用户的数据有可能会被窃取,因此,HTTPS是安全的,HTTP则是不安全的。
它们的安全性主要体现在你的电脑(客户端)与目标网站服务器之间,当你去访问网站时,你的登陆信息,你的个人信息是被加密传送的,如果在传送数据中间,有黑客获取了你的数据也不担心,黑客一般无法破解你的信息,这个过程是安全的。而HTTP则不同了,黑客可以不费任何力气地得到你的信息,看下图:
从上图看,黑客在网络中窃取了用户与Web服务器交互的数据,但拿到的信息只是乱码,并不能正常显示,也没办法破解。因此即使用户发送的是用户名密码这样的重要信息也不怕被窃取。
从上图来看,使用HTTP协议来进行传递用户名密码,黑客在网络中获取了交互信息,可以轻松地查看到用户发送的用户名信息,这是一个非常危险的动作,如果你发送的是银行卡账号密码的话后果将会很严重……
从上面两张图的对比不难得出结论,HTTPS是加密的,而HTTP是没有加密的,因此黑客能够直接查看到用户名密码。在实际生活中我们常用的网站基本都是基于HTTPS协议的,大家也不必感到惊慌,日常使用其实还是很安全的。
关于加密的问题
01 非对称密钥算法
在HTTPS协议中使用RSA加密算法,这种加密算法是一种非对称加密算法,广泛用于网页加密。
非对称密钥算法会产生公钥和私钥两种密钥,一种用于加密,另一种就用于解密,而且两个密钥是完全不一样完全不可相互推导。公钥是发送给所有人的,而私钥是拥有者自己妥善保管的。
它的工作过程是:用户要把重要的东西加密会用接收者的公钥对数据进行加密,然后将加密后的文件发送到接收端,接收者接收到加密的文件后用自己的私钥对其进行解密就能够得到明文。如下图所示:
明文使用接收方的公钥对其加密就得到密文了,这个过程就是加密的过程,密文在互联网中传递时不用担心被窃取的问题。当密文被传递到接收端,接收方再使用自己的私钥对其解密,这个过程就是解密的过程。
这个方法看似很好用,但实际上并不是这样的,因为像这样的非对称密钥算法只有够加密很小小的数据,超过几百KB的文件都无法加密或加密需要非常长的时间,实际的应用中数据传递可不止区区几百KB这么点,因此非对称密钥算法只能加密密钥等数据非常小的东西,没错,你没看错,就是加密密钥。那实际应用中这么大的数据又是怎么加密的?下面就再来讲讲对称密钥算法。
02 对称密钥算法
对称密钥算法常见的有AES,DES,3DES等,对称密钥算法与非对称密钥算法不同的是对数据进行加密和解密时用同一个密码,这个密码是同计算机随机生成的。对称密钥算法的特点是加密速度很快且加密后的密文数据与原始的明文数据大小相差不会很大,比如加密1K的数据,加密后的密文可能只有1.1K,因此这种加密算法比较适合加密比较大的文件。
客户端在发送数据到服务器端的时候会使用AES等对称密钥算法对需要加密的数据进行加密,加密会产生一个对称密钥的密码,然后再将这个密码用RSA非对称密钥来加密密钥。
为什么要用RSA来加密密钥?很显然嘛,我把数据用一把钥匙加密了,对方想要打开数据就必须要用我这把钥匙才能打开,那我该怎么样把这把钥匙安全的送到对方手上?就是通过RSA来传递。
HTTPS是如何完整地并且安全地传递用户数据的
下面就来看看它的加密与解密过程:
1.用户发送请求到服务器,服务器接收到以后回应相应的请求信息(在这个回应信息里面服务器会带上证书和一个服务器的公钥)。
2.客户端拿到证书后会先判断一下这个证书的有效性(其实证书的作用是服务器向你表明身份,让你知道现在回应你WEB信息的正是你要访问的那个服务器)。
3.客户端将要发送的数据先用对称密钥算法对其先加密,产生的密文先放一边。
4.拿刚才加密产生的密文用刚才服务器发送过来的公钥对这个密文加密,产生加密后的密码。
5.把这个加过密的密码与刚才使用对称密钥算法加密后的密文一起打包发给服务器。
6.服务器接收到这些东西以后首先拿出加过密的密码,用自己的私钥对其解密,得出密文,再对这个密文使用对称密钥算法进行解密,这样,服务器就收到了客户端发送的数据了。
过程如下图:
如上加密过程可以保证数据的安全性,这是一个经典的数据加密通信的过程,这种解决方案在很多地方都有用到,不同的仅仅是加密算法的差异。
HTTP协议是如何实现“秘密交互”的?相关推荐
- HTTPS协议是如何实现“秘密交互”的?
你知道HTTP访问的交互过程吗? 如题,可能有很多人并不了解,本文将简单地介绍一下当你访问某网站时你的电脑与网站之间的数据交互过程. 大家都知道去访问网站都是使用浏览器,在地址栏中输入你想访问的链接, ...
- Linux下通过CCID协议与USB设备进行交互经验总结
Linux下通过CCID协议与USB设备进行交互经验总结 1.目标 2. 实现方法 2.1 安装libudev 2.1.1 编译安装 2.1.2 安装提示错误 2.2 编译安装libusb 2.2.1 ...
- 利用MQTT协议与阿里云数据交互的python程序
利用MQTT协议与阿里云数据交互的python程序 设计目的 功能要求和关键问题 环境配置问题 本地程序如何连接云上设备 云上的数据交互问题 界面设计问题 阿里云相关操作 本地程序 设计目的 设计开发 ...
- java基于http协议客户端与服务器端的交互,通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分...
经 常看到HTTP客户端与服务器端交互原理的各种版本的文章,但是专业术语太多,且流程过于复杂,不容易消化.于是就按照在 Servlet 里面的内容大致做了一些穿插.本来 连 Tomcat 容器 和 S ...
- 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门
转自: http://www.cnblogs.com/littlehann/p/3700357.html Linux黑客大曝光: 第8章 无线网络 无线网络安全攻防实战进阶 无线网络安全 黑客大曝光 ...
- Android前端通过Http协议与J2EE后端数据交互。工具eclipse、MySQL、Tomcat。通过JoSn获取数据。Android端实现对MySQL增删改查功能。
Android:目录 HttpThread.java package com.example.saads; import java.io.BufferedReader; import java.io. ...
- 网络编程:使用tcp协议实现服务器与客户端交互
服务器 ************************************************************************************************ ...
- 0710 mux协议的作用(ppp拨号时如何和gprs进行at指令交互)
ppp拨号使gprs上网的同时如何和gprs模块进行at指令的交互,这是一个问题. 在linux中,ppp拨号上网是内核中支持的,只需要在内核配置中选上. ppp拨号的方式使gprs进行上网与at指令 ...
- 国标流媒体服务器GB28181协议和海康设备的交互过程记录
国标GB28181协议从2016年更新后,变得比之前更火了,到今年已经4年了,国标视频流媒体服务器基础的功能都已经发展起来,而更深层次的功能还需要进一步的研发. 在日常运用中,海康的摄像头运用较为广泛 ...
最新文章
- UA MATH567 高维统计II 随机向量3 常见的高维随机向量的分布
- 学业水平测试计算机模拟,高二计算机学业水平测试 模拟试题(附答案)
- python基础-文件操作(10)
- Filter(过滤器) 和 interceptor(拦截器)的区别
- python查看系统句柄数量_linux下查看系统进程占用的句柄数方法
- 求1-100的所有数的和
- javax.imageio.IIOException: Unsupported Image Type
- android系统框架()
- Python快速教程 尾声
- python django mysql_python测试开发django-10.django连接mysql
- Pop3_解决PKIX:unable to find valid certification path to requested target 的问题
- 1.4_12 Axure RP 9 for mac 高保真原型图 - 案例11 【动态面板-滚动条1】
- geektool 天气_如何使用Geektool自定义Mac桌面
- 科研小白如何有效下载英文文献和英文书籍?
- redis配置信息解读
- 「亚马逊先生」的出世与入世
- 对比:空洞卷积与转置卷积(吉米王)
- flyme最新7基于android,终于来了,魅族开始基于Android 7.0版本的Flyme内测
- 删除链接文件 linux,rm 删除链接文件的问题
- Python爬取B站耗子尾汁、不讲武德出处的视频弹幕!
热门文章
- 计算机组成原理第三章视频,计算机组成原理 第3章 3.4 十进制转换二进制
- 交通安全与智能控制专业学计算机吗,交通安全与智能控制专业排名好不好_主要课程及就业前景分析...
- 人们常说的微型计算机简称为 机,(精华版)国家开放大学电大专科《计算机文化基础》网络课单项选择题题库及答案...
- mysql无法打开和锁定权限表_MySQL在连续查询后丢弃连接
- 开了gomod不识别gopath_笔记本电脑开不了机原因 笔记本电脑开不了机解决方法【图文】...
- python可视化神器_详解Python可视化神器Yellowbrick使用
- oracle数据库怎么删除数据库,oracle数据库如何删除 oracle数据库删除方法
- 三创比赛关于软件设计的策划书_关于大学生创业和电商创业大赛
- centos 删除crontab_centos7 定时任务crontab命令详解
- c++ list 修改_C/C++编程笔记:数据结构系列——顺序表的实现,内含源码