wordpress 小说主题/网络推广优化方案
文章目录
- Pre
- 发展历史
- Http VS Https
- HTTPS 解决了 HTTP 的哪些问题
- HTTPS是如何解决上述三个风险的
- 混合加密
- 摘要算法 + 数字签名
- 数字证书
Pre
PKI - 数字签名与数字证书
PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证
发展历史
- HTTP(超文本传输协议)的发展历史:
- HTTP的起源可以追溯到1990年代早期,由蒂姆·伯纳斯-李(Tim Berners-Lee)在CERN(欧洲核子研究组织)开发出来,最初被用于在客户端和服务器之间传输HTML文档。
- HTTP/0.9是最早的版本,只支持简单的GET请求,并且没有头部信息。
- 随着互联网的发展,HTTP逐渐演进为HTTP/1.0和HTTP/1.1,引入了更多的请求方法、状态码、头部字段等功能,提高了性能和可靠性。
- 近年来,HTTP/2和HTTP/3相继发布,引入了新的特性如多路复用、头部压缩、服务器推送等,进一步优化了网络性能。
- HTTPS(安全超文本传输协议)的发展历史:
- 随着互联网的普及,人们开始意识到HTTP传输的数据存在安全隐患,容易被窃听和篡改。
- HTTPS的发展是为了解决HTTP的安全性问题。最早的HTTPS版本是在1994年由网景公司推出的,称为SSL(安全套接层)协议。
- SSL协议通过加密传输数据,保护了信息的机密性和完整性。后来,SSL逐渐演进为TLS(传输层安全)协议。
- 目前,TLS协议的版本包括TLS 1.0、TLS 1.1、TLS 1.2和TLS 1.3,不断提升加密算法的安全性和性能,并修复协议本身的安全漏洞。
- HTTPS在保障网站安全、防止信息泄露和劫持等方面发挥了重要作用,逐渐成为互联网传输数据的标准协议。
Http VS Https
HTTP与HTTPS之间存在几个关键区别:
- 安全性:
- HTTP传输的数据是明文的,容易被窃听和篡改,而HTTPS通过SSL/TLS加密传输数据,更安全可靠。
- 加密方式:
- HTTP不提供数据加密机制,而HTTPS使用SSL/TLS协议对传输的数据进行加密,保护数据的隐私性。
- 连接方式:
- HTTP连接建立相对简单,只需要进行TCP三次握手即可,而HTTPS除了TCP三次握手外,还需要进行SSL/TLS握手过程,增加了连接建立的复杂度和时间。
- 默认端口:
- HTTP的默认端口号是80,HTTPS的默认端口号是443,这样的设定方便了浏览器和服务器识别和处理不同协议的请求。
- 证书:
- HTTPS需要服务器方使用数字证书来验证身份,确保数据传输的安全性,通常由CA(证书颁发机构)颁发的证书来确认服务器的身份,而HTTP不需要证书验证。
综上所述,HTTPS相比于HTTP在安全性方面更可靠,但在性能方面可能稍有损耗,因为加密解密过程需要消耗额外的计算资源。
HTTPS 解决了 HTTP 的哪些问题
HTTPS解决了HTTP的三个主要安全问题:
- 窃听风险:
- HTTP传输的数据是明文的,容易被窃听者截获和查看通信内容。HTTPS通过SSL/TLS协议对通信内容进行加密,使得窃听者无法直接获取敏感信息。
- 篡改风险:
- 在HTTP通信过程中,攻击者可以篡改传输的数据,插入恶意内容或修改原始数据,造成信息被篡改的风险。HTTPS通过SSL/TLS协议保证数据的完整性,一旦数据被篡改,通信双方会立即发现,从而确保数据的可靠性。
- 冒充风险:
- HTTP无法验证通信方的真实身份,攻击者可以轻易冒充合法网站,引诱用户输入敏感信息或进行欺诈行为。HTTPS利用SSL/TLS协议的身份验证机制,使用数字证书来证明服务器的身份,确保通信双方的身份是可信的,从而防止了冒充风险。
综上所述,HTTPS通过在HTTP与TCP层之间加入SSL/TLS协议,解决了HTTP在信息加密、数据完整性和身份认证方面存在的安全问题,提高了网络通信的安全性和可信度。
HTTPS是如何解决上述三个风险的
- 信息机密性: (混合加密)
- HTTPS利用混合加密的方式实现信息的机密性,通过使用公钥加密和私钥解密的方式,确保通信内容只能被预期的接收方解密,从而解决了窃听的风险。
- 数据完整性:(摘要算法)
- HTTPS利用摘要算法来实现数据的完整性验证。在通信过程中,发送方会对数据进行哈希运算生成唯一的摘要,然后将该摘要与数据一起传输给接收方。接收方接收到数据后,会重新计算数据的摘要,并与发送方传输的摘要进行比较,从而验证数据是否被篡改,解决了篡改的风险。
- 身份认证:(数字证书)
- HTTPS使用数字证书来解决冒充的风险。服务器在数字证书中包含了其公钥,并由可信的证书颁发机构(CA)签名,客户端可以使用CA的公钥来验证证书的真实性。这样,客户端就可以确信与服务器通信的确是预期的服务器,而不是攻击者的冒充,从而解决了冒充的风险。
综上所述,HTTPS通过混合加密、摘要算法和数字证书等技术手段,有效地解决了HTTP通信过程中的窃听、篡改和冒充等安全风险,提高了通信的安全性和可信度。
混合加密
通过混合加密的方式可以保证信息的机密性,解决了窃听的风险。
- 对称加密的快速性和密钥保密性:
- 对称加密算法速度快,因为它只使用一个密钥进行加密和解密操作。然而,由于对称加密需要双方共享同一个密钥,而密钥的传输容易受到窃听者的攻击,无法安全地进行密钥交换。
- 非对称加密的密钥交换能力:
- 非对称加密算法使用一对密钥:公钥和私钥。公钥可以自由分发,而私钥必须保密。这种机制解决了密钥交换的问题,但由于非对称加密算法的运算速度较慢,因此不适合对大量数据进行加密。
因此,HTTPS采用混合加密的方式,利用对称加密算法和非对称加密算法的优势。在通信建立阶段,双方使用非对称加密的方式交换会话密钥(对称密钥),之后通信过程中使用对称加密的方式加密和解密数据,既保证了加密效率,又解决了密钥交换的安全性问题。
摘要算法 + 数字签名
摘要算法,也称为哈希函数,用于计算内容的哈希值或“指纹”。这个哈希值是根据内容计算出来的固定长度的唯一字符串,即使内容稍微有所改动,其哈希值也会完全不同。因此,通过比较接收到的哈希值和发送方发送的哈希值,可以判断内容是否被篡改。
常用的摘要算法包括MD5、SHA-1、SHA-256等,它们都是单向函数,即从内容计算出哈希值很容易,但从哈希值反推内容几乎是不可能的。这使得摘要算法在保证数据完整性方面非常有用,同时也被广泛应用于密码学、数字签名等领域。
数字签名是非对称加密的一种应用,它用于验证消息的完整性和身份认证。数字签名使用私钥对消息的哈希值进行加密,生成签名。接收方使用公钥解密签名,然后再对接收到的消息进行哈希计算,如果哈希值与解密出来的签名匹配,则可以确认消息的完整性和发送方的身份。
数字签名的工作原理如下:
- 发送方对消息进行哈希计算,得到消息的哈希值。
- 发送方使用私钥对哈希值进行加密,生成数字签名。
- 发送方将消息和数字签名一起发送给接收方。
- 接收方使用公钥解密数字签名,得到消息的哈希值。
- 接收方对接收到的消息进行哈希计算,得到一个新的哈希值。
- 接收方将计算得到的哈希值与解密出来的哈希值进行比较,如果两者一致,则确认消息的完整性和发送方的身份。
通过哈希算法可以确保内容不会被篡改,但是并不能保证「内容 + 哈希值」不会被中间人替换,因为这里缺少对客户端收到的消息是否来源于服务端的证明
举个例子,你想向老师请假,一般来说是要求由家长写一份请假理由并签名,老师才能允许你请假。
但是你有模仿你爸爸字迹的能力,你用你爸爸的字迹写了一份请假理由然后签上你爸爸的名字,老师一看到这个请假条,查看字迹和签名,就误以为是你爸爸写的,就会允许你请假。
那作为老师,要如何避免这种情况发生呢?现实生活中的,可以通过电话或视频来确认是否是由父母发出的请假,但是计算机里可没有这种操作。
那为了避免这种情况,计算机里会用非对称加密算法来解决,共有两个密钥:
- 一个是公钥,这个是可以公开给所有人的;
- 一个是私钥,这个必须由本人管理,不可泄露。
这两个密钥可以双向加解密的,比如可以用公钥加密内容,然后用私钥解密,也可以用私钥加密内容,公钥解密内容。
- 公钥加密、私钥解密:
- 目的:保证内容传输的安全。
- 流程:发送者使用接收者的公钥加密数据,只有接收者持有相应的私钥才能解密数据,因此确保了只有接收者能够读取原始内容,而其他人无法解密。
- 示例应用:安全地传输敏感信息,如密码、银行信息等。
- 私钥加密、公钥解密:
- 目的:保证消息的身份验证和完整性。
- 流程:发送者使用自己的私钥对数据进行加密,接收者使用发送者的公钥解密数据。只有发送者持有私钥,因此只有发送者能够对数据进行加密,这样接收者就能够确认数据确实来自发送者。
- 示例应用:数字签名、身份验证等场景。
这种加密方式的使用确保了通信的安全性和可信度,对于网络通信和数据传输至关重要。
私钥是由服务端保管,然后服务端会向客户端颁发对应的公钥。如果客户端收到的信息,能被公钥解密,就说明该消息是由服务器发送的。
数字签名算法的确提供了一种可靠的方法来确认消息的来源和完整性。通过使用发送者的私钥对消息进行加密(签名),接收者可以使用发送者的公钥来解密(验证签名),从而确认消息确实来自于发送者,并且在传输过程中未被篡改。
在这个例子中,如果你想请假,你的父亲(服务器)持有着私钥,而你的老师持有着公钥。你可以使用你父亲的私钥对请假条进行签名,然后将签名的请假条发送给老师。老师收到请假条后,使用你父亲的公钥来验证签名。如果验证成功并且确认内容完整,老师就可以确定请假条确实是由你父亲发起的,从而批准你的请假。
这种方式有效地防止了身份伪造和消息篡改,提高了通信的安全性和可信度。
数字证书
通过数字证书的方式保证服务器公钥的身份,解决冒充的风险。
前面我们知道:
- 可以通过哈希算法来保证消息的完整性;
- 可以通过数字签名来保证消息的来源可靠性(能确认消息是由持有私钥的一方发送的);
但是这还远远不够,还缺少身份验证的环节,万一公钥是被伪造的呢?
还是拿请假的例子,虽然你爸爸持有私钥,老师通过是否能用公钥解密来确认这个请假条是不是来源你父亲的。
但是我们还可以自己伪造出一对公私钥 (中间人攻击)!
在这种攻击中,攻击者截取了通信双方(你父亲和老师)之间的通信,并试图篡改或伪造通信内容。
攻击者替换了老师的公钥,使得老师无法确认通信是否来自于真正的发送者。因此,老师使用攻击者提供的公钥来解密攻击者的私钥的数字签名,从而误认为通信来自于你的父亲。这种情况下,即使你使用了数字签名,也无法保证通信的安全性和身份验证。
你找了个夜晚,偷偷把老师桌面上和你爸爸配对的公钥,换成了你的公钥,那么下次你在请假的时候,你继续模仿你爸爸的字迹写了个请假条,然后用你的私钥做个了「数字签名」
既然伪造公私钥那么随意,所以你爸把他的公钥注册到警察局,警察局用他们自己的私钥对你父亲的公钥做了个数字签名,然后把你爸爸的「个人信息 + 公钥 + 数字签名」打包成一个数字证书,也就是说这个数字证书包含你爸爸的公钥。
这样,你爸爸如果因为家里确实有事要向老师帮你请假的时候,不仅会用自己的私钥对内容进行签名,还会把数字证书给到老师。
老师拿到了数字证书后,首先会去警察局验证这个数字证书是否合法,因为数字证书里有警察局的数字签名,警察局要验证证书合法性的时候,用自己的公钥解密,如果能解密成功,就说明这个数字证书是在警察局注册过的,就认为该数字证书是合法的,然后就会把数字证书里头的公钥(你爸爸的)给到老师。
由于通过警察局验证了数字证书是合法的,那么就能证明这个公钥就是你父亲的,于是老师就可以安心的用这个公钥解密出请假条,如果能解密出,就证明是你爸爸写的请假条。
正是通过了一个权威的机构来证明你爸爸的身份,所以你的伪造公私钥这个小伎俩就没用了。
在计算机里,这个权威的机构就是 CA (数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构颁发)中,只要证书是可信的,公钥就是可信的。
相关文章:

计网 - 深入理解HTTPS:加密技术的背后
文章目录 Pre发展历史Http VS HttpsHTTPS 解决了 HTTP 的哪些问题HTTPS是如何解决上述三个风险的混合加密摘要算法 数字签名数字证书 Pre PKI - 数字签名与数字证书 PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证 发展历史 HTTP(超文本传输协…...

Jmeter之单接口的性能测试
前言: 服务端的整体性能测试是一个非常复杂的概念,包含生成虚拟用户,模拟并发,分析性能结果等各种技术,期间可能还要解决设计场景、缓存影响、第三方接口mock、IP限制等问题。如何用有限的测试机器,在测试环…...

成像光谱遥感技术中的AI革命:ChatGPT应用指南
“成像光谱遥感技术中的人工智能革命:ChatGPT应用指南”,这是一门旨在改变您使用人工智能处理遥感数据的方式。将最新的人工智能技术与实际的遥感应用相结合,提供不仅是理论上的,而且是适用和可靠的工具和方法。无论你是经验丰富的…...

掌握BeautifulSoup4:爬虫解析器的基础与实战【第91篇—BeautifulSoup4】
掌握BeautifulSoup4:爬虫解析器的基础与实战 网络上的信息浩如烟海,而爬虫技术正是帮助我们从中获取有用信息的重要工具。在爬虫过程中,解析HTML页面是一个关键步骤,而BeautifulSoup4正是一款功能强大的解析器,能够轻…...

从源码解析Kruise(K8S)原地升级原理
从源码解析Kruise原地升级原理 本文从源码的角度分析 Kruise 原地升级相关功能的实现。 本篇Kruise版本为v1.5.2。 Kruise项目地址: https://github.com/openkruise/kruise 更多云原生、K8S相关文章请点击【专栏】查看! 原地升级的概念 当我们使用deployment等Wor…...

2024年【广东省安全员C证第四批(专职安全生产管理人员)】复审考试及广东省安全员C证第四批(专职安全生产管理人员)模拟考试题
题库来源:安全生产模拟考试一点通公众号小程序 广东省安全员C证第四批(专职安全生产管理人员)复审考试是安全生产模拟考试一点通总题库中生成的一套广东省安全员C证第四批(专职安全生产管理人员)模拟考试题࿰…...

udp服务器【Linux网络编程】
目录 一、UDP服务器 1、创建套接字 2、绑定套接字 3、运行 1)读取数据 2)发送数据 二、UDP客户端 创建套接字: 客户端不用手动bind 收发数据 处理消息和网络通信解耦 三、应用场景 1、服务端执行命令 2、Windows上的客户端 3…...

【k8s资源调度-Deployment】
1、标签和选择器 1.1 标签Label 配置文件:在各类资源的sepc.metadata.label 中进行配置通过kubectl 命令行创建修改标签,语法如下 创建临时label:kubectl label po <资源名称> apphello -n <命令空间(可不加࿰…...

【Oracle】玩转Oracle数据库(五):PL/SQL编程
前言 嗨,各位数据库达人!准备好迎接数据库编程的新挑战了吗?今天我们要探索的是Oracle数据库中的神秘魔法——PL/SQL编程!🔮💻 在这篇博文【Oracle】玩转Oracle数据库(五)࿱…...

JavaScript流程控制
文章目录 1. 顺序结构2. 分支结构2.1 if 语句2.2 if else 双分支语句2.3 if else if 多分支语句三元表达式 2.4 switch 语句switch 语句和 if else if语句区别 3. 循环结构3.1 for 循环断点调试 3.2 双重 for 循环3.3 while 循环3.4 do while 循环3.5 contiue break 关键字 4. …...

五个使用Delphi语言进行开发的案例
案例一:学生信息管理系统 某学校需要开发一个学生信息管理系统,用于记录学生的基本信息、成绩和考勤情况等。开发者使用Delphi语言进行开发,设计了一个包含多个窗体的应用程序。主窗体用于展示学生的列表和基本信息,其他窗体则用…...

蓝桥杯第1374题——锻造兵器
题目描述 小明一共有n块锻造石,第块锻造石的属性值为ai. 现在小明决定从这n块锻造石中任取两块来锻造兵器 通过周密计算,小明得出,只有当两块锻造石的属性值的差值等于C,兵器才能锻造成功 请你帮小明算算,他有多少种选…...

坚鹏:政府数字化转型数字机关、数据共享及电子政务类案例研究
政府数字化转型数字机关、数据共享及电子政务类案例研究 课程背景: 很多地方政府存在以下问题: 不清楚政府数字化转型的数字机关类成功案例 不清楚政府数字化转型的数据共享类成功案例 不清楚政府数字化转型的电子政务类成功案例 课程特色&…...

【架构】面向人工智能 (AI) 的硬件的可靠性(2021)
由于激进的技术扩展,现代系统越来越容易受到可靠性威胁的影响,例如软错误、老化和工艺变化。这些威胁在硬件级别表现为位翻转,并且根据位置,可能会损坏输出,从而导致不准确或潜在的灾难性结果。 传统的缓解技术基于冗…...

Unity3D MVC开发模式与开发流程详解
前言 MVC(Model-View-Controller)是一种常用的软件架构模式。将MVC应用于Unity3D开发可以提高项目的可维护性和可扩展性,使代码更加清晰和易于理解。本文将详细介绍Unity3D中MVC开发模式的应用以及开发流程,并给出技术详解和代码…...

简单介绍一下Android里面的IntentFirewall
源码链接 https://android.googlesource.com/platform/frameworks/base//633dc9b/services/java/com/android/server/firewall/IntentFirewall.java 源码如下: package com.android.server.firewall; import android.content.Intent; import android.content.Inte…...

Stable Diffusion 3 发布及其重大改进
1. 引言 就在 OpenAI 发布可以生成令人瞠目的视频的 Sora 和谷歌披露支持多达 150 万个Token上下文的 Gemini 1.5 的几天后,Stability AI 最近展示了 Stable Diffusion 3 的预览版。 闲话少说,我们快来看看吧! 2. 什么是Stable Diffusion…...

【后端】springboot项目
文章目录 1. 2.3.7.RELEASE版本搭建1.1 pom文件1.1.1 方式一1.1.2 方式二 1.2 启动类1.3 测试类 2. 引入Value乱码问题解决 【后端目录贴】 1. 2.3.7.RELEASE版本搭建 1.1 pom文件 1.1.1 方式一 <parent><groupId>org.springframework.boot</groupId><…...

React Native调用摄像头画面及拍照和保存图片到相册全流程
今天主要做了一个demo,功能很简单,就是调用手机摄像头画面,并且可以通过按钮控制拍照以及将图片保存到手机相册的功能,接下来我将从创建项目开始一步一步完成这个demo,各位只需要复制粘贴即可 创建React Native项目 npx react-native init yx_rnDemo --version 0.70.6 // 这里…...

Kubernetes基本部署概念
文章目录 命名空间(Namespaecs)查看命名空间查看带有命名空间对象下资源 文件存储持久卷(pv,Persistent Volumes)卷容量卷模式(volumeMode)访问模式(accessModes)回收策略…...

QT c++ 海康红外热像仪
//本文描述2通道海康通道红外热像仪预览和抓图 #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); userID-1; …...

OpenAI 的 GPTs 提示词泄露攻击与防护实战:防御卷(一)
前面的OpenAI DevDay活动上,GPTs技术的亮相引起了广泛关注。随着GPTs的创建权限开放给Plus用户,社区里迅速涌现了各种有趣的GPT应用,这些都是利用了Prompt提示词的灵活性。这不仅展示了技术的创新潜力,也让人们开始思考如何获取他…...

中科大计网学习记录笔记(十五):可靠数据传输的原理
前前言:看过本节的朋友应该都知道本节长度长的吓人,但其实内容含量和之前的差不多,老师在本节课举的例子和解释比较多,所以大家坚持看完是一定可以理解透彻的。本节课大部分是在提出问题和解决问题,先明确出现的问题是…...

五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比(提供MATLAB代码)
一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)࿰…...

力扣:93. 复原 IP 地址
回溯: 1.先定义一个接收的集合,之后再定义一个记录小数点的变量。之后编写回溯函数,终止条件为小数点的个数为3时,同时要判断最后一段的组合的值是否属于ip地址的范围。之后再用for循环来遍历ip地址的组合,先判断组合…...

利用序列化和反序列化实现深拷贝
利用序列化和反序列化可以实现对象的深拷贝,具体步骤如下: 将要深拷贝的对象序列化为字节流。从字节流中反序列化出一个新的对象,即完成了深拷贝。下面是一个示例代码: import java.io.*;class MyClass implements Serializable {private static final long serialVersion…...

【AHK】68键键盘键位布局优化/esc改退格键/回车键
本人习惯使用~作为退格键,但是由于keychron 68键的布局只能用esc平替~来修改,然后也将回车键通过alt和大小写锁定键一起触发 esc::bs ;次步骤与下面步骤相对应,如果是用send bs方式则下面的不生效^esc:: ;通过建立 保留esc功能 send {esc} re…...

计算机体系架构初步入门
🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 目录 1 计算机五大…...

常见的序列化数据结构方法及其优缺点汇总
文章目录 1. JSON (JavaScript Object Notation)2. XML (eXtensible Markup Language)3. YAML (YAML Aint Markup Language)4. Protobuf (Protocol Buffers)5. MessagePack6. BSON (Binary JSON)7. Avro8. Thrift9. CBOR (Concise Binary Object Representation) 将常见的序列化…...

华清远见嵌入式学习——驱动开发——作业1
作业要求: 通过字符设备驱动分步注册过程实现LED驱动的编写,编写应用程序测试,发布到CSDN 作业答案: 运行效果: 驱动代码: #include <linux/init.h> #include <linux/module.h> #include &l…...