HTTP协议默认是采取明文传输的,容易被中间人窃听、拦截、篡改,存在安全隐患。

常见提高安全性的方法是对通信内容进行加密,再进行传输,常见的加密方式有

不可逆加密:单向散列函数

可逆加密:对称加密、非对称加密

其它组合加密:混合密码、数字签名、证书

单向散列函数

单向散列函数是一种不可逆的加密方式,加密后不能再解密将数据恢复原样,通过单向散列函数根据根据消息内容计算出散列值,无论消息的长度、大小是多少,最终生成的散列值长度都是固定值。

常见的散列函数有 MD5、SHA,虽然说具备单向性,但仍然有些网站可以暴力破解较为简单的内容。

但加密的原始内容更为复杂的话,破解的可能性就会较为小一些,比如开启大小写+字符的方式。

不可逆的加密方式可用于保存一些不需要还原的敏感信息,比如用户的密码,如果明文存放无论是开发者、网络维护人员看到、或者被黑客攻击都会存在信息泄露的问题,那么加密保存便是一种比较合适的方式。

比如当用户注册时,保存的密码是经过单向散列函数加密存放在数据库的,当用户登录时,将输入的密码加密后和数据库中保存的进行比较。即使用户忘记密码,也无需考虑还原原密码,让用户重新设置新密码即可。

对称加密

在对称加密中,加密、解密时使用的是同一个密钥。

对称加密算法常用 DES、3DES、AES

对称加密密钥如何配送仍然会存在问题,除非私下共享,只要经过网络明文传输,都存在被拦截窃取的可能。

我们换个思路,是否存在一种加密方式,即使配送密钥的被窃取了,也不用担心,因为单单只用一个密钥不会影响数据传递。非对称加密就是这样,加密和解密都需要公钥和私钥两个密钥共同协作。

非对称加密

在非对称加密中,密钥分为加密密钥和解密密钥,两者并不相同,加密密钥一般是公开的,因此也称为公钥,解密密钥由消息接收者自己保管,不能公开,也称为私钥

公钥和私钥是一一对应的,不能单独生成,一堆公钥和私钥统称为密钥对,由公钥加密的密文,必须使用与该公钥对应的私钥才能解密,由私钥加密的密文,必须使用与该私钥对应的公钥才能解密。

这样,使用非对称加密便可以解决密钥配送问题,由接收者生成密钥对,将公钥配送给消息发送者,发送者通过公钥加密消息后,发送密文给接收者,接收者再通过私钥解密消息。

在这个过程中,即使消息、公钥被中间人窃听也没关系,因为公钥加密的消息只可通过对应的私钥解密,而私钥是保存在接收者处的。

非对称加密比较安全,解决了密钥的配送问题,但它的加密速度比对称加密要更慢一些,如果所有内容都采用非对称加密,那网络上通信将变得非常慢。

混合密码

混合密码是将对称加密非对称加密优势相结合的方法,解决了对称加密的密钥配送,非对称加密速度慢的问题。

使用对称加密将消息加密,再通过非对称加密算法加密对称加密的密钥,这样就能保证复杂的内容使用加密较快的对称加密,而重要的信息通过非对称加密。

数字签名

以上方式从接收者的角度,可以保证消息的在传输过程的安全,但如何能保证来源的可靠性呢?如果被窃听,中间人也是可以通过公钥加密伪造消息发送给接收者的。

数字签名 就是一种保障来源的方式,与以上混合加密不同,是由消息发送者的私钥生成签名,由消息接收者通过公钥验证签名。

消息是明文传输不安全,并且使用非对称加密所有的消息会比较耗时,可以改进为使用散列函数将消息加密,再通过私钥对散列函数加密,因为散列函数不可逆可以解决安全问题,并且散列函数处理过的数据长度是一个比较短的固定值,能解决耗时的问题。

证书

公钥的配送仍然可能存在问题,如果存在中间人窃听了公钥,可以自己生成一套密钥对,并将自己的公钥传递给消息发送方。

为了保证公钥的安全性,可以依靠于认证机构来颁发数字签名。

总结

  • 单向散列函数不可逆,加密后长度固定
  • 对称加密解密使用的是相同的密钥,加密速度较快,但密钥的配送存在安全问题
  • 非对称加密存在密钥对,分为加密密钥公钥和解密密钥私钥,加密速度较慢
  • 混合密码结合对称加密和非对称加密,同时做到安全和较快的加密速度
  • 数字签名用于确认消息的完整性,识别消息是否被篡改
  • 证书保证公钥的安全

以上就是各种加密方式,以解决HTTP协议带来的安全问题。更多有关 前端网络协议 的内容可以参考我其它的博文,持续更新中~

加密解决HTTP协议带来的安全问题的更多相关文章

  1. 解决float浮动带来的父元素高度没有的问题---清除浮动

    float的特性 : 1:使元素block块级化: 2:破坏性造成的紧密排列特性. 基于以上的特性,使得我们通常把浮动用来布局,带来的问题是,容易出问题,重用性不行,ie6-的版本下很多问题,因为它是 ...

  2. 浅谈利用同步机制解决Java中的线程安全问题

    我们知道大多数程序都不会是单线程程序,单线程程序的功能非常有限,我们假设一下所有的程序都是单线程程序,那么会带来怎样的结果呢?假如淘宝是单线程程序,一直都只能一个一个用户去访问,你要在网上买东西还得等 ...

  3. 加密传输SSL协议2_传统加密

    原本到了睡觉的时间,但是做完了SSL的笔记还有GCC和Oracle等的好多的笔记,所以刻苦一点. The Priciple of Encryption/Decryption --conventiona ...

  4. android黑科技系列——分析某直播App的协议加密原理以及调用加密方法进行协议参数构造

    一.前言 随着直播技术火爆之后,各家都出了直播app,早期直播app的各种请求协议的参数信息都没有做任何加密措施,但是慢慢的有人开始利用这个后门开始弄刷粉关注工具,可以让一个新生的小花旦分分钟变成网红 ...

  5. load data local带来的安全问题

    load data默认读的是服务器上的文件,但是加上local参数后,就可以将本地具有访问权限的文件加载到数据库中,这在带来方便的同时,也带来了以下安全问题, 可以任意加载本地文件到数据库, 在web ...

  6. C# websocket Server 加密 76号协议

    服务器端源码: 76号协议增加了加密字段 sec-websocket-key1 sec-websocket-key2 以及最后8个字节 服务器必须在握手信息之后发送回解密信息才能握手成功. 解密方式 ...

  7. 加密传输SSL协议7_SSL协议概述

    SSL(Secure Sockets Layer) SSL的功能,可以在通信的双方中建立一个加密的通信通道 同时还可以确认通信的双方是不是就是其声称的人,防止被钓鱼. SSL在网络协议栈中的位置:可以 ...

  8. 加密传输SSL协议6_验证公钥

    如上图所示,我怎么能确定我手里的公钥就是我心中的接收方的公钥呢?怎么防止被钓鱼呢? 解决的办法就是引入一个第三方,一个权威机构,一个我们都相信的机构. 验证公钥,Digital Certificate ...

  9. 加密传输SSL协议5_Hash Function

    怎么对一个大的文件进行签名,因为文件比较大,非对称签名很慢.那么想,我能把这个大的文件通过一种函数变换,变成一个和源文件唯一对应的的小的文件吗?答案是可以的. Hash Function 这里任何的文 ...

  10. 加密传输SSL协议4_综合方案

    隔了那么多天终于有时间继续把这个专题做完了,这次一定连续写完这方面的笔记. 上篇博文说明了非对称加密和对称加密各自的优缺点,那么就很自然的衍生出了一种综合的方案. 两种方案的结合--扬长避短 首先发送 ...

随机推荐

  1. Weblogic11g安装部署-winserver篇

    目录 一.安装weblogic11g 1.1找到下载好的weblogic11g 1.2打开安装程序wls1033_oepe111150_win32.exe,并完成初始化如下图 1.3点击下一步并选择安 ...

  2. STL------sort三种比较算子定义

    sort的三种比较算子的定义方式 例:一道细碎的细节模拟题: http://newoj.acmclub.cn/contests/1258/problem/3 1932: 2018蓝桥杯培训-STL应用 ...

  3. pgadmin数据输出不存在了?

    菜单栏→文件→重置布局.这样数据输出就显示了.

  4. 2021-12-25:给定一个只由0和1组成的字符串S,假设下标从1开始,规定i位置的字符价值V[i]计算方式如下

    2021-12-25:给定一个只由0和1组成的字符串S,假设下标从1开始,规定i位置的字符价值V[i]计算方式如下 : 1 i == 1时,V[i] = 1: 2 i > 1时,如果S[i] ! ...

  5. Node.js卸载与重装

    卸载第一步:打开系统自带的卸载功能,找到node js 进行卸载第二步:删除C:\Users\Administrator\AppData\Roaming文件下的npm.npm-cache或者如果是zi ...

  6. ET介绍——CSharp协程

    什么是协程 说到协程,我们先了解什么是异步,异步简单说来就是,我要发起一个调用,但是这个被调用方(可能是其它线程,也可能是IO)出结果需要一段时间,我不想让这个调用阻塞住调用方的整个线程,因此传给被调 ...

  7. @GrpcServise 注解的作用和使用

    转载请注明出处: 1. @GrpcServise 的作用和优势 在没有使用 @GrpcServise 注解编写服务端时,我们通常需要自定义 Server 以及端口,包括 start,stop ,注册s ...

  8. 【HDU】1312 Red andBlack (DFS&BFS经典好题)

    Red and Black 题目 我是题目链接 题解 找出所能到达的所有黑色的数量,用DFS和BFS均可. BFS: #include <iostream> #include <qu ...

  9. 最通俗易懂的flex讲解

    30分钟彻底弄懂flex布局 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由elson发表于云+社区专栏 目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用fle ...

  10. Intellij IDEA最新激活码,适合2022,2023和所有版本,永久更新

    分享一下 IntelliJ IDEA 2023.1 最新激活注册码,破解教程如下,可免费永久激活,亲测有效,下面是详细文档哦~ 申明:本教程 IntelliJ IDEA 破解补丁.激活码均收集于网络, ...