网络安全。

news/2024/9/19 9:21:49 标签: web安全, 安全

文章目录

目录

文章目录

一. 网络安全概述

二. 密码学原理

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

密码散列函数

报文鉴别码

数字签名

公钥认证

四. 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.niftyadmin.cn/n/5665333.html

相关文章

[Golang] Context

[Golang] Context 文章目录 [Golang] Context什么是context创建context创建根context创建context context的作用并发控制context.WithCancelcontext.WithDeadlinecontext.WithTimeoutcontext.WithValue 什么是context Golang在1.7版本中引入了一个标准库的接口context&#xf…

Java服务端数据库连接:连接池的故障恢复策略

Java服务端数据库连接:连接池的故障恢复策略 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在Java服务端应用中,数据库连接池是核心组件之一,它管理着数据库…

【Python】探索Magenta:音乐与艺术的机器智能创作

下班了,今天的苦就先吃到这里。 在人工智能的浪潮中,机器学习技术正逐渐渗透到艺术创作的各个领域。今天,我们来探索一个特别的项目——Magenta,它是由Google Brain团队发起的,旨在使用机器智能生成音乐和艺术。这个项…

MySQL|MySQL 中 `DATE_FORMAT()` 函数的使用

文章目录 概述方法签名格式化字符基本用法实际应用案例示例1:显示日期和星期几示例2:仅显示日期示例3:按周统计订单数量 注意事项结论 概述 DATE_FORMAT() 是 MySQL 中的一个内置函数,用于格式化日期和时间数据。它可以根据指定的…

【无人机设计与控制】基于粒子群算法的三维无人机航迹规划

摘要 本文研究了基于粒子群算法(PSO)的三维无人机航迹规划问题。通过粒子群优化算法,无人机能够在复杂三维环境中进行路径规划,以避开障碍并实现最优路径飞行。该方法有效结合了无人机的飞行动力学特性与环境约束,能够…

模型验证 — 交叉验证Cross Validation的方法

目录 简单交叉验证 K折交叉验证 留一法交叉验证 留P法交叉验证 ShuffleSplit StratifiedShuffleSplit StratifiedKFold 交叉验证(Cross Validation)是验证模型性能的一种统计分析方法,其基本思想是在某种意义下将原始数据进行分组,一部分作为模型的训练数据集…

[PyVista] 介绍

一,介绍 PyVista是一个用于3D可视化和网格处理的Python库,它提供了一种简单而强大的方式来创建、渲染和分析复杂的三维数据集和网格。PyVista建立在VTK(Visualization Toolkit)和NumPy之上,为用户提供了许多方便的工具和功能&…

Linux 使用 tar 命令

1 使用 gzip 压缩,将 dir 目录压缩 tar -zcvf archive.tar.gz dir/ 2 解压 tar.gz 文件 tar -zxvf archive.tar.gz 3 解压 tar.gz 文件,到指定 dir 目录 tar -zxvf archive.tar.gz -C dir 参数说明: -z 支持gzip解压文件 -x 从压缩的…