网络安全。

devtools/2024/11/15 8:30:16/

文章目录

目录

文章目录

一. 网络安全概述

二. 密码学原理

三. 报文完整性和数字签名

密码散列函数

报文鉴别码

数字签名

公钥认证

四. HTTPS通信

总结


一. 网络安全概述

网络安全是保护计算机网络及其数据免受各种威胁和攻击的实践和技术。随着互联网的普及和数字化转型的加速,网络安全的重要性日益凸显。主要的问题有:

  • 恶意软件:包括病毒、蠕虫、木马和勒索软件,旨在破坏或窃取数据。
  • 网络钓鱼:通过伪装成可信实体来诱骗用户提供敏感信息。
  • 拒绝服务攻击(DDoS):通过大量流量使目标网络或服务瘫痪。
  • 内部威胁:来自组织内部的员工或合作伙伴的恶意行为。

考虑了上述问题后,我们能够指出安全通信(secure communication)具有下列性质。

  • 机密性 仅有发送方和希望的接收方可以理解报文传输的内容。这就要求我们对报文进行一定的加密。

  • 报文完整性:希望确保报文的内容在网络传输的过程中未被改变-或者恶意篡改或者意外改动。
  • 端点鉴别:发送方和接收方都应该能证实通信过程中所涉及的另一方,以确认通信的另一方确实具有其声称的身份。
  • 运行安全:指保护敏感信息和操作过程,以防止潜在的威胁和攻击。它的核心目标是确保在日常操作中,信息不会被敌对方或不当使用者获取,从而导致安全漏洞或损失。

二. 密码学原理

密码技术使得发送方可以伪装数据,使入侵者不能从截取到的数据中获得任何信息。

现在假设小红要向小黄发送一个报文,报文的内容可以是任意的,报文刚开始的形式称为明文(plaintest)。小红使用加密算法对明文进行加密,生成的加密报文成为密文。该密文对任何入侵者(例如: 小黑)来说都是难以理解的。有趣的是,在许多现代系统中,加密技术是公开的,这就代表我们使用加密算法进行加密的内容有可能被入侵者进行截取并解密。显然,如果任何人都知道数据编码的方式,那么就一定有一种秘密信息可以阻止入侵者解密被传输的数据,这些秘密信息就是秘钥

在上图中,小红提供了一个秘钥(key)K,它是一串数字或者字符,作为加密算法的输入。加密算法以秘钥和明文m(message)作为输入,计算得到密文K(m),同样的小黄使用秘钥K对密文进行解密K(m)=m。如果这两个秘钥是同一个秘钥,我们将其称之为对称密钥系统,反之我们将其称之为公开秘钥系统。

特性对称加密非对称加密
密钥数量1(相同密钥)2(公钥和私钥)
加密速度
密钥管理复杂(需要安全共享密钥)简单(公钥可公开)
主要用途数据加密身份验证、密钥交换

假如小红和小黄要进行通信。如上图所示,使用的是非对称加密方式,我们使用K +K-来表示小黄的公钥和私钥,为了和小黄进行通信,小红首先需要得到小黄的公钥,然后使用这个公钥和一个众所周知的加密算法,加密他要传递的报文,我们将其表示为K+(m)。 当小黄收到加密报文之后可以使用私钥和一个解密算法对报文进行解密,我们将其表示为K-K+(m)。公钥和私钥进行交换同样可以得到相同的结果,即K+K-(m)=K-K+(m)=m。

尽管公钥密码很吸引人,但是我们不得不考虑一个问题,既然小黄的加密秘钥是公开的,就表明任何人(可能是小红也可能是小红的假冒者)都可以给小黄发送一个已经加密的报文。这个问题就需要使用数字签名把发送方和报文绑定起来。


三. 报文完整性和数字签名

我们再次使用小红和小黄来定义报文完整性的问题。加入小黄收到了一个报文(加密或者明文),并且小黄认为这个报文是小红发来的。为了鉴别这个报文,小黄需要证实。

1)该报文来自小红

2)报文没有在传输过程中没有被修改。

密码散列函数

密码散列函数(Cryptographic Hash Function)是一种将任意长度的输入数据(消息)转换为固定长度的输出(散列值或哈希值)的函数。它在信息安全中扮演着重要角色,主要用于数据完整性验证和密码存储。

对于找到任意的两个不同的报文x和y使得H(x)和H(y)相等,在计算上是不可能的。

报文鉴别码

现在我们再次回到报文完整性的问题上面。看看报文是如何基于散列函数执行报文完整性的。

1)小红生成报文m并计算得到H(m)

2)  随后小红将H(m)附到报文m上,生成一个扩展报文(m,H(m)),并将扩展报文发送给小黄.

3) 小黄接到扩展报文(m,h)并计算H(m)。如果H(m)=h,则表明一切正常。

这种方法是存在缺陷的,显而易见的是,小黑可以生成虚假的(m`,H(m)`), 并声称他就是小红,并且小黄还无法进行识别。

为了执行报文完整性, 除了使用密码散列函数之外,小红和小黄还需要共享秘密s。这个s只不过是一个比特串,它被称为鉴别秘钥(authentication Key)。使用这个共享秘密s,报文完整性能够执行如下

1)小红生成报文m,用s级联m生成m+s,并计算散列H(m+s),H(m+s)被称为报文鉴别码(Message Authentication Code,MAC)。

2)之后小红将MAC附加在报文m上,生成扩展报文(m,H(m+s)),并将扩展报文发送给小黄。

3)小黄收到扩展报文(m,h),由于知道s,计算得出报文鉴别码H(m+s),如果MAC=m,小黄则表示一切正常。

这里遗留下了一个非常重要的问题。如何向通信双方的实体发送这个共享的鉴别秘钥?

数字签名

数字签名是一种用于验证信息完整性和身份认证的加密技术。它通过使用公钥基础设施(PKI)来确保消息的来源和内容未被篡改。我们可以通过私钥来对报文进行加密,通过公钥对报文进行解密。

使用数字签名对报文进行加密加密的其实并不是报文,因为加密和解密的代价非常昂贵。更有效的方法是将散列函数引入数字签名。使用散列函数代替报文进行加密。虽然数字签名是一种“技术含量更高”的技术,但是接收方还是需要先拿到发送方的公钥才可以进行解密。因此引出了具有认证中心支持的公钥基础设施(PKI)。

公钥认证

数字签名的一个重要应用就是公钥认证(public Key certification),即证实一个公钥属于某个特定的实体。看一下下面的场景

  • 一群朋友决定给其中一个朋友(比如Charlie)开一个玩笑。他们在没有Charlie知道的情况下,大家同时用自己的手机给Charlie的家下单大量的披萨,可能是几百块钱的订单。
  • 当送货员到达时,Charlie会被突然的“披萨派对”吓到,发现他并没有下单,反而有许多朋友在场引发一阵笑声。

这种情况就是charlie的公钥被冒充了。

将公钥与特定实体绑定通常是由认证中心(Certification Authority)CA完成的,CA的职责就是识别和发行证书合法化。一旦CA验证了某个实体的身份,这个CA会生成一个将其身份和实体的公钥绑定起来的证书。这个证书包含了这个公钥和公钥所有者全局唯一的身份标识信息。

四. HTTPS通信


总结

以上就是这篇博客的主要内容了,大家多多理解,下一篇博客见!


http://www.ppmy.cn/devtools/115483.html

相关文章

saas收银系统源码

1. 线下门店多样化收银 ①门店有社区小店、也会有大店,甚至还会有夫妻店,同时还要有Windows版和安卓版,需满足不同门店的收银需求。 ②支持Windows收银、安卓收银、无人自助收银、聚合码收银等,支持ai智能称重、收银称重一体机等…

前端实用工具(二):编程规范化解决方案

目录 本地代码规范化工具 代码检测工具ESLint 代码格式化工具Prettier 远程代码规范化工具 远程提交规范化工具commitizen 提交规范检验工具commitlint husky 什么是git hooks commitlint安装 husky安装 检测代码提交规范 ESLint husky 自动修复格式错误lint-staged…

STM32快速复习(十二)FLASH闪存的读写

文章目录 一、FLASH是什么?FLASH的结构?二、使用步骤1.标准库函数2.示例函数 总结 一、FLASH是什么?FLASH的结构? 1、FLASH简介 (1)STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&…

掌控历史:如何通过Git版本管理工具提升你的开发效率

先一览全局: git目录 一.打开git二.git bash的基础命令三.配置git四.仓库搭建五.文件操作和状态六.忽略文件七.gitee的使用1.添加公钥2.创建仓库 八.vs中使用git九.git分支常用命令十.文件差异比较十一.文件回溯和推进十二.合并冲突和消除十三.合并/压缩提交十四.远程仓库推拉十…

Ubuntu NFS 搭建及配置

在 Ubuntu 上搭建和配置 NFS(Network File System)服务器,可以让其他设备通过网络访问共享的文件夹。以下是步骤指南: 1. 安装 NFS 服务器 首先,安装 NFS 服务器软件包: sudo apt update sudo apt insta…

springbootKPL比赛网上售票系统

基于springbootvue实现的KPL比赛网上售票系统 (源码L文ppt)4-068 4.2 系统结构设计 架构图是系统的体系结构,体系结构是体系结构体系的重要组成部分。KPL比赛网上售票系统的总体结构设计如图4-2所示。 图4-2 系统总体架构图 4.3数据…

链动3+1滑落模式小程序开发

链动31滑落模式是一种在电商、微商或社交电商领域常用的营销模式,通过用户推荐新用户形成团队结构,并依据团队的发展给予相应的奖励或优惠。在小程序平台上开发链动31滑落模式,需要考虑到用户体验、数据安全、奖励机制的实现等多个方面。以下…

Serverless架构

Serverless架构:漂浮在云端的轻盈与自由 类似于 Fn Project 的 Serverless 开源服务有很多,它们都旨在简化函数即服务(FaaS)的开发流程,使得开发者可以更专注于业务逻辑而不是底层基础设施。下面列举了一些知名的 Serverless 开源平台和服务…