一、什么样的通信是安全的?
因为HTTP是不安全的, 所以才有了HTTPS的出现, 那么什么样的通信才是安全的呢?
- 机密性: 指对数据保密, 只有通信的人可以访问识别, 其他人不可见
- 完整性: 表示数据在传输过程中没有被篡改(增加或减少)
- 身份认证: 表示通信双方可以确定对方的是自己要通信的对象, 保证消息发送给正确的人
- 不可否认: 表示发送过数据后不能否认自己发送过
同时具备了以上4个特性, 通信双方的利益能保障, 才算是真正的安全
二、HTTP与HTTPS的区别
相同点:
- 两者有都采用请求应答模式
- HTTPS的报文结构,请求方法, 链接管理等都与HTTP相同
不同点:
- 2者的协议名不同, 分别http 和 https 协议
- 默认端口号分别为 80 和 443
- HTTP下层紧挨着TCP层, HTTPS中HTTP下层紧接着SSL/TLS层, 然后才是TCP层
三、SSL/TSL和OpenSSL
SSL即安全套接层(Secure Sockets Layer), 处在OSI中的会话层. 由网景公司1994年发明, 与1999年, 由互联网工程组更名为TSL(传输层安全, Transport Layer Security), 正式标准化
TLS由记录协议, 握手协议, 警告协议, 等几个子协议组成, 综合使用了对称加密, 非对称加密, 身份认证等技术
OpenSSL是开源密码学程序库和工具包, 支持了所有公开的加密算法和协议, 许多软件都会将他作为底层库来实现TLS
四、对称加密和非对称加密
- 对称加密
加密和解密信息使用的秘钥是同一个, 就成为对称加密. 如 DES, AES等加密算法
优点: 加密算法效率高, 通信效率高
缺点: 在通信双方交换秘钥时, 非常容易被其他人获取, 那么传输的数据就可能会被其他人截取. 安全性低
- 非对称加密
加密和解析信息使用的秘钥不是同一个, 成为非对称加密. 如RSA, ECC等加密算法
每个节点都有2个秘钥, 公钥和私钥. 这2个秘钥是不同的, 公钥可以给开给任何人使用, 私钥需要自己秘密保存. 公钥和私钥具有单向性, 虽然都可以用来加密解密, 但是公钥加密后的数据只有对应的私钥可以解密, 私钥加密后的数据只有对应的公钥可以解密, 非对称加密可以解决秘钥交换的问题. 所以非对称加密又被成为"公钥加密算法"
优点: 假设私钥不会被其他人获取到, 非对称加密会非常安全
缺点: 交换公钥等操作让非对称加密效率非常低, 导致通信效率低
- 混合加密
将对称加密和非对称加密结合起来, 取长补短, 既可以高效的加密解密, 也可以安全的进行秘钥交换. 目前的TSL就是使用的这种模式
五、摘要算法
摘要算法也就是通常说的散列函数、哈希函数. 主要作用是通过特殊的压缩算法, 将任意长度的数据压缩成固定长度, 并且独一无二的字符串. 同样, 摘要算法也是单向的, 根据加密后的数据是无法逆推出原文的常见的有, MD5, SHA-1, SHA-2等. 前2个因为生成的长度太短, 安全度比较低已被TSL弃用.
相同的源数据, 不管何时何地, 使用相同的摘要算法得到的值都是一样. 这样只要将源数据以及摘要同时发给对方, 对方使用同样的摘要算法计算源数据后在与摘要进行比对, 就能验证源数据的完整性.
六、数字签名
通过加密算法和摘要算法, 我们保证了机密性和完整性, 通信过程可以说是比较安全了, 但是还是有漏洞, 就是身份认证和不可否认. 黑客可以伪装成目标网站来窃取你的信息, 同时也可以伪装成你与网站进行通信, 网站无法确认你的身份, 这样消息就十分不安全.
七、数字证书和CA
有了加密算法, 摘要算法, 数字签名, 我们可以保证数据通信的足够安全, 但是这个前提是, 我们信任对方给我们的公钥, 如果公钥本身就是黑客给我们的, 那么我们后边的一系列操作就也随之无效. 这就是数字证书的作用, 而CA是数字证书的签发机构
证书签发机构会将公钥, 颁发者,系列号等一系列数据打包成"数字证书", 我们在通信前会进行数字证书的验证, 通过一层层CA机构信任链来验证证书, 信任链的最终是根证书, 我们需要无条件信任根证书, 否则就会进入死循环了.
系列目录
HTTP学习笔记(一)
HTTP学习笔记(二)
HTTP学习笔记(三)
HTTP学习笔记(四)
HTTP学习笔记(五)
HTTP学习笔记(六)
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!