当前位置: 首页 > news >正文

认证、HTTPS、证书的基本含义

文章目录

  • 前言
  • 认证
  • HTTPS
  • 证书
  • 总结

前言

通过前面的总结 《对称加密、非对称加密、公钥、私钥究竟是个啥?》,我们基本了解了对称加密和非对称加密的概念和特点,考虑到效率和安全性,一般可以使用非对称加密来传递对称加密所需密钥,之后就采取对称加密通信了,这样可以大大提高数据发送的的效率。

其实密码技术除了应用在加密领域外还有很多其他的用途,比如验证数据的完整性、用来做认证、提供一些不可否认的证据等,这些应用也常常出现在我们的日常生活中,比如很多官方网站在提供软件下载链接的同时,还附带一个验证的字符串,实际上很多就是md5码或者hash码,这些就是供下载的人来验证完整性的,防止被其他人篡改。

download

我们下载完软件之后,使用工具来将软件转化成一串字符,听起来很神奇,实际上就是计算一下软件的md5码或hash码,然后和网站上的标注的信息进行对比,如果一致那么软件就是完整的。我曾经就遇到过一次,当时做的游戏发包,同事给我发了测试包,安装之后无法正常使用,检查包的大小与发送端的一样,后来使用检测工具计算发现md5是不同的,原因可能是发送包的时候电脑卡死过,导致最后发来数据包与原始数据产生了差异。

但是你有没有想过,这个软件虽然是完整的,通过md5计算发现也没有被其他人篡改,那么怎么证明你下载的网站真的是官网呢?万一官网也是伪造的呢?如果有人伪造了官网,又将上面的软件进行修改重新计算md5然后上传到自己伪造的界面上,你要怎么来识别呢?

fish

可能有的人会想到看网址啊,taobao.com 就一定是淘宝的网站吗?这个域名是可以伪造的,所以要验证网站上东西是真的,那么首先要验证你看到的网站是真的,这就涉及到了认证身份,接下来可以简单了解下什么是认证。

认证

其实密钥不仅仅可以用来加密,还可以用来认证的,那么什么是认证?认证是一种信用保证形式,表示对一种事物或一个人的信任和认可,比如常见的毕业证书、结婚证书都是对人一段经历或一种关系的证明和认可。最简单的网站登录是基于密码的验证,这实际上就是利用对称加密的认证。

网站保存了你的用户信息和密码,下次再登录的时候输入密码后,网站会用你输入的密码和之前保存的密码进行对比,如果密码相同则认证成功,成功的证明了“你”就是“你”,而非对称加密同样可以用来做认证。

在非对称加密的实现中,私钥是只有自己保存的,而私钥加密的内容可以使用公钥解开,如果一份加密数据可以用 Jerry的公钥解开,那么我们就可以认为这份数据是 Jerry 发出的,因为只有 Jerry 自己有私钥,所以可以通过这种方式来进行认证。

而在网络上想要认证一个网站的身份,确认它不是钓鱼网站,第一个映入脑海中的就是 https,一般提到 https 都会说它是加密的、安全的,是 http 的升级版,但是 https 的安全不仅仅体现在加密上,还有它的认证功能,可以使你免受钓鱼网站的侵害。

HTTPS

简单了解下 HTTPS,一般来说网络模型常说的有OSI七层模型和五层模型,HTTPS 的诞生并没有增加模型的层数,HTTP 是建立在 TCP基础上的应用层协议,而 HTTPS 是在 TCPHTTP 之间的会话层中加了一些特殊操作,使原来明文传输的内容,在会话层这一步进行加密,并且可以对数据来源进行认证。

提到 HTTPS 就不得不说 SSLTSLSSL 是应用在 HTTP上的一个协议加密层,最初是由网络大佬网景公司(Netscape)研发,后来升级为 TSL,简单的理解就是 HTTP + SSL/TSL = HTTPS

safe

随着网络安全逐渐得到大家的认识,一些主流网站基本都都将访问方式改成了 https,支持 https 的网站在浏览器的地址栏中通常有一把小锁,点开会提醒你访问的是安全的连接,如果你访问的连接疑似被人篡改或者仿冒,那么这把小锁会被斜线划掉,提醒你网站危险请谨慎访问。

dangerous

那么 https 是怎么判断出来哪些网站是安全的,哪些网站是仿冒的呢?毕竟有些网址都很像甚至可以做成一模一样的,这就用到了非对称加密的认证功能,当我用 A 的公钥可以解密一段消息,那么就可以证明消息是 A 发来的,https 的认证功能正是利用了这个特点。

当访问一个网站的时候,网站先给我发一个用它的私钥加密的数据,然后我用它的公钥来解密,如果解密成功就说明我访问的网站是正常的,可以继续访问,如果解密失败则很有可能是虚假或者仿冒的网站,应该仔细辨别一下了。

这里会有一个问题,我怎么才能得到网站的公钥呢?之前说过密钥配送问题,直接由网站发给我肯定不行,中间可能被篡改,也有可能一个虚假网站把它自己的公钥发给我了,我用假的公钥验证对应的假的私钥也是成功的,这样就起不到认证的效果了,必须给他找个证明人才行,这就要用到我们下面要说的证书了。

证书

证书是用来证明一件事情或东西的,刚才说网站的公钥不能它自己来发,这样不能证明它的身份,我们可以找一个权威的机构给它认证一下,我每次从权威机构获得网站的证书,从这个证书中取得公钥,如果用这个公钥可以解开网站私钥加密的内容,那么就可以认证它的身份了。

这里提到的证书就是网站所有者找权威机构申请的,权威机构把网站信息、有效时期、对应的公钥、序列号消息等数据存储到证书中,当我们需要能某个网站的公钥时,去证书中取就可以了,这里的证书有点像营业执照了,由权威机构发布,用来证明你的身份。

但是权威机构的证书怎么发给我呢?我们有理由认为网络是不安全的,那证书如果直接通过网络发给我同样是不安全的,还有一个问题就是网站虽然找了一个权威机构,但是我认为它不够权威怎么办?这时这个权威机构可以找一个更权威的机构证明自己,让更权威的机构给自己颁发一个证书,这样就形成了证书链。

capath

就像现实生活中我要找个人来干活,因为工期比较紧所以找的人要求踏实,必须能老老实实把活干完,不能半路撂挑子,张三过来应聘,正在我犹豫时,走过来一个叫李四的人说张三没问题,但是我还是不能确定,因为李四我也不熟悉,然后李四居然把我爸叫来了,我爸和我说李四这个人特别诚实,从来不说谎,这时一条证书链就形成了,李四为张三证明,我爸为李四证明,那谁来证明我爸说的是真的呢?不需要的,我无条件相信他。

这在计算机的证书链中就是根证书,根证书不需要别人来证明,你只能无条件相信它,它是整个信息链的源头,通常内置在操作系统或者浏览器中,关于根证书还要一些好玩的故事和一些变态的应用,下次再说吧,准备睡觉了~

总结

  • 密码技术除了应用在加密领域,还可以用来验证数据的完整性、用来做认证、提供一些不可否认的证据
  • HTTPS 不仅可以用来加密通信内容,还可以用来验证网站的真实性
  • 正规的支持 HTTPS的网站在访问时会地址栏会有一把安全的小锁头,但是有些不出现小锁头的网站并不一定都是非法的
  • HTTP 网站是没有小锁头的,因为有些数据不需要加密,毕竟绝大多数的 HTTPS 证书是要钱的,有很多网站由于经费问题还未投身于 HTTPS 的怀抱
  • 根证书通常内置的操作系统或者浏览器中,是证书链的源头,你必须无条件的信任他。

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

当我们拼劲全力到达自己的终点时,可能会看到同行的人正在你的终点线前伸伸懒腰准备出发,然后一骑绝尘消失在你震惊的目光中,但是这不是我们放弃努力的理由,因为如果你不努力,你甚至连他们的背影也看不到~

相关文章:

  • 码龄10年工作6年的搬砖小哥,最常访问的学习网站都在这里了
  • C++中的std::lower_bound()和std::upper_bound()函数
  • 根证书的应用和信任基础
  • Shell脚本中获取命令运行结果、特殊变量使用、条件判断等常用操作
  • gdb调试解决找不到源代码的问题
  • GDB调试指北大全
  • 小白眼中的docker究竟是个什么东西
  • GDB调试指北-启动GDB并查看说明信息
  • Redis源码-BFS方式浏览main函数
  • GDB调试指北-启动调试或者附加到进程
  • Python中时间戳、时间字符串、时间结构对象之间的相互转化
  • git log根据特定条件查询日志并统计修改的代码行数
  • C++中优先队列priority_queue的基础用法
  • C++求解组合数的具体实现
  • 东拉西扯01世界的沧海桑田
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • centos安装java运行环境jdk+tomcat
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Node 版本管理
  • OSS Web直传 (文件图片)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • webpack+react项目初体验——记录我的webpack环境配置
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 半理解系列--Promise的进化史
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 服务器从安装到部署全过程(二)
  • 构造函数(constructor)与原型链(prototype)关系
  • 学习ES6 变量的解构赋值
  • 主流的CSS水平和垂直居中技术大全
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 数据可视化之下发图实践
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (AngularJS)Angular 控制器之间通信初探
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (SpringBoot)第七章:SpringBoot日志文件
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (四) Graphivz 颜色选择
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .net core 控制台应用程序读取配置文件app.config
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET6 命令行启动及发布单个Exe文件
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • ??在JSP中,java和JavaScript如何交互?
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • []常用AT命令解释()
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯