IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络安全基础 -> 正文阅读

[网络协议]网络安全基础


一、网络安全概述

1. 基本概念

网络安全通信所需要的基本属性:

  1. 机密性;
  2. 消息完整性;
  3. 可访问与可用性;
  4. 身份认证。

2. 网络安全威胁

  1. 窃听;
  2. 插入;
  3. 假冒;
  4. 劫持;
  5. 拒绝服务Dos和分布式拒绝服务DDos;
  6. 映射;
  7. 嗅探;
  8. IP欺骗。

二、数据加密

1. 基本概念

明文:未加密的消息。

密文:被加密的消息。

加密:伪装消息以隐藏消息的过程,即明文转变为密文的过程。

解密:密文转变为明文的过程。

2. 传统加密方式

  1. 替代密码

    用密文字母代替明文字母。

    image-20220127112437412

  2. 换位密码

    根据一定的规则重新排列明文。

3. 对称密钥加密

现代密码分类:

  • 对称密钥密码:加密密钥和解密密钥相同(密钥保密)。
  • 非对称密钥密码:加密密钥和解密密钥不同。

对称密钥密码分类:

  • 分组密码

    在加密前,先对整个明文进行分组。然后对每一组二进制数据进行加密处理,产生一组密文数据。最后将各组密文串接起来,即得出整个的密文。

    例如:DES、AES、IDEA等都属于分组密码。

    1. DES:56位密钥,64位分组。
    2. 三重DES:使用两个密钥(共112位),执行三次DES算法。
    3. AES:分组128位,密钥128/192/256位。
    4. IDEA:分组64位,密钥128位。
  • 流密码

    每次处理一位二进制数,挨个进行处理。

4. 非对称/公开密钥加密

密钥成对使用,其中一个用于加密,另一个用于解密,且加密密钥可以公开,也称公开密钥加密。

典型的公钥算法:Diffie-hellman算法、RSA算法。

image-20220127115349316

三、消息完整性与数字签名

1. 消息完整性检测方法

密码散列函数:

  1. 特性:

    定长输出(当输入一组数据时,不管该组数据的长度是多少,都能输出固定长度结果,即固定长度的散列值);

    单向性(无法根据散列值逆推报文);

    抗碰撞性(无法找到具有相同散列值的两个报文)。

  2. 典型散列函数

    MD5:128位散列值

    SHA-1:160位散列值

2. 报文认证

报文认证是使消息的接收者能够检验收到的消息是否是真实(即来源真实、未被篡改)的认证方法。

报文认证的两种方法:

简单报文验证:仅使用报文摘要(即密码散列散列函数),可以防篡改,但不能防伪造,不能真正实现报文鉴别。

  • 散列函数问题

    image-20220127182756903

报文认证码:使用共享认证密码(即收发双方协商好一固定密钥),但无法防止接受防篡改。

3. 数字签名

数字签名的三个功能:

  1. 实体鉴别:证明来源。

  2. 报文鉴别:防篡改,保证完整性。

  3. 不可否认:防抵赖。

有两种签名方法:

  1. 简单数字签名:直接对报文签名

    通常使用公钥加密,但是直接加密报文所使用的计算量过大。

  2. 签名报文摘要

    image-20220127183903046

    上图展示了签名报文摘要的工作流程,Bob对报文m应用散列函数H生成报文摘要H(m),然后Bob通过其私钥KB+对报文摘要进行加密生成加密的报文摘要KB-(H(m)),将扩展报文(m,KB-(H(m))))发送给Alice。假设Alice收到报文以及加密的报文摘要(m,KB-(H(m)))),Alice利用Bob的公钥解密KB+解密KB-(H(m)),并检验KB+(KB-(H(m)))来证实报文是否是Bob签名的。如果KB+(KB-(H(m)))=H(m)成立,则签名报文的一定是Bob的私钥。

四、身份认证

常用的认证方法:

  1. 口令:会被窃听;

  2. 加密口令:可能遭受回放(重放)攻击;

    重放:攻击者截获加密口令,之后再把它重新发给认证服务器,这样即使攻击者不知道正确口令,也能通过认证。

  3. 加密一次性随机数:可能遭受中间人攻击。

    使用一次随机数的基本过程:

    image-20220127185809943

    1. Alice向Bob发送报文“我是Alice”
    2. Bob选择一个一次性随机数然后把这个值发送给Alice。
    3. Alice使用她与Bob共享的对称秘密密钥KA-B来加密这个一次性随机数,然后把加密的一次性随机数KA-B?发回给Bob。由于Alice知道KA-B并用它加密了R,就使得Bob知道收到的报文是由Alice产生的,于是,这个一次性随机数便可用于确定Alice是活跃的。
    4. Bob解密接收到的报文。如果解密得到的一次性随机数等于他发送给Alice的那个一次性随机数,则可确认Alice的身份。

    该方法的缺点是需要通信双方共享密钥,一个改进的方法是,在使用一次性随机数的基础上,再利用公钥加密技术:

    image-20220127190844695

    1. Alice向Bob发送报文“我是Alice”。
    2. Bob选择一个一次性随机数,然后把这个值发送给Alice。
    3. Alice使用她的私钥来加密R,然后把加密结果发回给Bob。
    4. Bob向Alice索要她的公钥。
    5. Alice向Bob发送自己的公钥。
    6. Bob用Alice的公钥解密收到的报文。如果解密得到的一次性随机数等于他发送给Alice的那个一次性随机数R则可确认Alice的身份。

    加密一次性随机数和公钥加密技术进行身份认证会遭受中间人攻击:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EnCyXzJq-1643292760594)(D:/llf/Snipaste/202201271901806.png)]

    Alice向Bob发送消息,但是发送的消息被中间人Trudy劫持;Trudy劫持消息后将其转发给Bob;Bob收到消息后向他认为的“Alice”发送一次性随机数同样被Trudy动持;Trudy将一次性随机数转发给Alice;Alice收到后,向她认为的“Bob”发送用自己私钥加密的一次性随机数;与此同时,Trudy也向Bob发送用自己私钥加密的一次性随机数,并向Alice索要Alice的公钥;Bob收到加密后的一次性随机数后,向“Alice”索要公钥;然后,Trudy成功获取了Alice发来的公钥KA,并将自己的公钥碍发送给Bob。至此,Trudy己经完全成为了“中间人”,Bob与Alice可以收到彼此发送的所有信息,但同时Trudy也收到了所有信息。再之后,Bob会用Trudy的公钥加密消息,而此时Trudy只需要使用自己的私钥解密,就可以获取信息。

    这中间最主要的问题是,公钥被替换,也就是无法确认一个公钥到底是谁的。

五、密钥分发中心与证书认证

1. 密钥分发中心

基于KDC的密钥生成和分发:

image-20220127205809406

2. 证书认证机构

认证中心CA:将公钥与特定的实体绑定,为实体颁发数字证书。

数字证书是对公钥与其对应的实体 (人或机器) 进行绑定的一个证明。每个证书中写有公钥及其拥有者的标识信息(例如:人名、地址、电子邮件地址或IP地址等)。

注意:

  1. 证书中有A使用自己私钥的数字签名。

  2. 把CA的数字签名和未签名的B的证书放在一起,就最后构成了已签名的B的数字证书。

  3. 证书被CA进行了数字签名,是不可伪造的。

  4. 任何用户都可从可信任的地方(如代表政府的报纸)获得认证中心CA的公钥,以验证证书的真伪。数字证书是公开的,不需要加密。

分发数字证书的过程如下:

image-20220127210230588

已签名的B的数字证书的生产过程:

image-20220127211256283

核实数字证书的过程:

A拿到B的数字证书后,使用数字证书上给出的CA的公钥,对数字证书中CA的数字签名进行E运算(解密),得出一个数值。再对B的数字证书(CA数字签名除外的部分)进行散列运算,又得出一个数值。比较这两个数值。若一致,则数字证书是真的。

六、防火墙入侵检测系统

1. 防火墙基本概念

防火墙:能够隔离组织内部网络与公共互联网,允许某些分组通过,而阻止其他分组进入或离开内部网络的软件、硬件或者软件硬件结合的一种设施。只有符合安全规则的信息才能通过防火墙(从外部到内部或从内部到外部)。

前提:从外部到内部和从内部到外部的所有流量都经过防火墙。

2. 防火墙的分类

  1. 无状态分组过滤器

    基于特定的规则(不考虑通信状态,仅仅是通过IP地址或端口号来判断)对分组是通过还是丢弃进行决策。

    使用访问控制列表(ACL)实现防火墙规则。

  2. 有状态分组过滤器

    跟踪每个TCP连接建立、拆除,根据状态确定是否允许分组通过。

  3. 应用网关

    鉴别用户身份或针对授权用户开放特定服务。

3. 入侵检测系统IDS

入侵检测系统(IDS)是当观察到潜在的恶意流量时,能够产生警告的设备或系统。

七、网络安全协议

1. 安全电子邮件

电子邮件安全需求

  1. 机密性;
  2. 完整性;
  3. 身份认证性;
  4. 抗抵赖性。

安全电子邮件标准:PGP

2. 安全套接字层SSL(TLS)

  • SSL是介于应用层和传输层之间的安全协议。

  • SSL作用在TCP之上建立起一个安全通道,为通过TCP传输的应用层数据提供安全保障。

  • 1999年,IETF在SSL 3.0基础上设计了TLS 1.0,为所有基于TCP的网络应用提供安全数据传输服务。

  • TLS的位置

    image-20220127215203313

    在发送方,TLS接收应用层的数据,对数据进行加密孬然后把加密后的数据送往TCP套接字。

    在接收方,TSL从TCP套接字读取数据,解密后把数据交给应用层。

  • TLS建立安全会话的工作原理

    image-20220127215516155

    TLS的握手阶段:验证服务器,生成会话阶段所需的共享密钥

    1. 协商加密算法。①浏览器A向服务器B发送浏览器的TLS版本号和一些可 选的加密算法。②B从中选定自己所支持的算法(如RSA),告知A, 同时把自己的CA数字证书发送给A。
    2. 服务器鉴别。③客户A用数字证书中CA的公钥对数字证书进行验证鉴别。
    3. 生成主密钥。④客户A按照双方确定的密钥交换算法生成主密钥MS。⑤客户A用B的公钥PKB对主密钥MS加密,得出加密的主密钥PKB(MS),发送给服务器B。
    4. 服务器B用自己的私钥把主密钥解密出来。⑥:SKB(PKB(MS))=MS。这 样,客户A和服务器B都有了为后面数据传输使用的共同的主密钥MS。
    5. 生成会话密钥⑦和⑧。为了使双方的通信更加安全,客户A和服务器B最好使用不同的密钥。主密钥被分割成4个不同的密钥。每一方都拥有这样4个密钥(注意:这些都是对称密钥):
      • 客户A发送数据时使用的会话密钥KA
      • 客户A发送数据时使用的MAC密钥MA
      • 服务器B发送数据时使用的会话密钥KB
      • 服务器B发送数据时使用的MAC密钥MB

3. 虚拟专用网VPN和IP安全协议IPSec

  1. VPN

    建立在公共网络上的安全通道,实现远程用户、分支机构、业务伙伴等与机构总部网络的安全连接,从而构建针对特定组织机构的专用网络。

    关键技术:隧道技术,如IPSec。

  2. 典型的网络层安全协议一IPSec

    提供机密性、身份鉴别、数据完整性验证和防重放攻击服务。

    体系结构:认证头AH协议、封装安全载荷ESP协议。

    运行模式:传输模式(AH传输模式、ESP传输模式)、隧道模式(AH隧道模式、ESP隧道模式)。


参考视频:https://www.bilibili.com/video/BV1xJ41137Q3?p=45

参考资料:《计算机网络(第8版)》—— 谢希仁

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 23:25:33  更:2022-01-29 23:27:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:57:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码