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

计算机网络•自顶向下方法:网络安全、RSA算法

网络安全

网络安全的通用定义

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠地运行,网络服务不中断。

网络中的通信安全

机密性:

  • 报文内容的机密性:仅发送方和希望的接收方能够理解报文的内容

  • 通信活动的机密性:通信活动或其特征不被外界察觉

端点鉴别:

  • 发送方和接收方都能够证实通信过程中涉及的另一方

报文完整性:

  • 报文来自真实的来源,且传输过程中未被修改

运行安全性:

  • 网络系统正常运行,网络服务可用

安全攻击的类型:被动攻击

试图从系统中获取信息,但不对系统产生影响

两种类型:

  • 偷听:监听并记录网络中传输的内容

  • 流量分析:从通信频度、报文长度等流量模式推断通信的性质

安全攻击的类型:主动攻击

试图改变系统资源或影响系统的操作

四种类型:

  • 伪装:一个实体假冒另一个实体
  • 重放:从网络中被动地获取一个数据单元,经过一段时间后重新发送到网络中
  • 报文修改:修改、插入、删除报文或报文部分内容
  • 拒绝服务:阻止通信设施的正常使用或管理

常见的安全机制

  • 加密:使用数学算法对数据进行变换,使其不易理解
  • 鉴别:通过报文交换证实一个实体的身份,以防假冒
  • 报文完整性:验证一个报文是否可信,包括来源和内容
  • 数字签名:附加在一个数据单元后面的数据,用来证明数据单元的来源及完整性,以防伪造及抵赖
  • 流量填充:在数据流间隙中插入比特,以挫败流量分析的企图
  • 访问控制:通过授权机制限制用户对资源的访问,防止越权行为

密码学

密码学术语

  • 明文(plaintext):欲加密的原始数据
  • 密文(ciphertext):明文经加密算法作用后的输出
  • 密钥(key):加密和解密时使用的参数
  • 密码分析(cryptanalysis):破译密文
  • 密码学(cryptology):设计密码和破译密码的技术统称为密码学

在这里插入图片描述

加密算法的分类

按照加密密钥与解密密钥是否相同,加密算法分为:

  • 对称加密算法:加密密钥与解密密钥相同

  • 非对称加密算法:加密密钥与解密密钥不同

按照明文被处理的方式,加密算法分为:

  • 块密码(分组密码) :每次处理一个明文块,生成一个密文块

  • 流密码:处理连续输入的明文流,并生成连续输出的密文流

传统加密方法:替换

替换密码:

  • 用密文字母替换明文字母,但字母位置不变
  • 例子:凯撒密码,单字母表替换,多字母表替换

传统加密方法:换位

换位密码:

  • 保留明文字母不变,但改变字母的位置
  • 例子:列换位密码

密码的安全性

传统加密方法的安全性建立在算法保密的基础上

现代加密方法也使用替换和换位两种基本手段,但现代密码学的基本原则是:加密与解密的算法是公开的,只有密钥是需要隐藏的

一个加密算法被称为是计算安全的,如果由该算法产生的密文满足以下两个条件之一:

  • 破译密文的代价超过信息本身的价值
  • 破译密文所需的时间超过信息的有效生命期

现代密码学中,密码的安全性是通过算法的复杂性和密钥的长度来保证的

现代密码学:非对称加密

非对称加密算法:

发送者和接收者不共享密钥

  • 发送者使用加密密钥

  • 接收者使用解密密钥

不存在密钥传递问题:

  • 加密密钥是公开的

  • 解密密钥是私有的

公开密钥算法的使用

每个用户生成一对加密密钥和解密密钥:

  • 加密密钥放在一个公开的文件中,解密密钥妥善保管

当Alice希望向Bob发送一个加密信息时:

  • Alice从公开的文件中查到Bob的加密密钥,用Bob的加密密钥加密信息,发送给Bob

  • Bob用自己的解密密钥解密信息

公开密钥和私有密钥:

  • 公开密钥:加密密钥,由发送者使用

  • 私有密钥:解密密钥,由接收者使用

在这里插入图片描述

公开密钥算法应满足的条件

  • 生成一对加密密钥和解密密钥是容易的
  • 已知加密密钥,从明文计算出密文是容易的
  • 已知解密密钥,从密文计算出明文是容易的
  • 从加密密钥推出解密密钥是不可能的
  • 从加密密钥和密文计算出原始明文是不可能的

RSA算法

RSA算法的加密和解密过程依赖于 公钥私钥 的配对。加密和解密的密钥不是同一个,公钥用于加密数据,私钥用于解密数据。RSA的安全性基于大整数分解问题:即将一个大数分解成其质因数是非常困难的。

RSA算法步骤

1. 密钥生成

  1. 选择两个大素数p和q(典型值为大于 1 0 100 10^{100} 10100
  2. 计算 n = p × q n=p\times q n=p×q z = ( p − 1 ) × ( q − 1 ) z=(p-1)\times (q-1) z(p1)×(q1)
  3. 选择一个与 z 互质的数,令其为 d
  4. 找到一个 e 使满足 e × d = 1 ( m o d z ) e\times d=1 (mod z) e×d1(modz)
  5. 公开密钥为 ( e , n ) (e, n) (e,n),私有密钥为 ( d , n ) (d, n) (d,n)

2. 加密过程

使用公钥 ( e , n ) (e, n) (e,n) 对明文 M M M 进行加密:

  1. 将明文消息 M M M 转换为整数 m m m ,使得$ ( 0 \leq m < n )$。

  2. 使用公钥加密公式:
    c = m e m o d    n c = m^e \mod n c=memodn

    • c c c是密文。

3. 解密过程

使用私钥 ( d , n ) (d, n) (d,n)对密文 c c c进行解密:

  1. 使用私钥解密公式:
    m = c d m o d    n m = c^d \mod n m=cdmodn

    • m m m是解密后的明文整数。
  2. 将解密后的整数 m m m转换回明文消息 M M M

在这里插入图片描述


http://www.kler.cn/a/468170.html

相关文章:

  • Java实现下载excel模板,并实现自定义下拉框
  • 将本地的 Git 仓库上传到 GitHub 上(github没有该仓库)
  • 前端小案例——520表白信封
  • 在Mac电脑上搭建Gradle
  • 代码随想录算法【Day11】
  • 【大模型】7 天 AI 大模型学习
  • react报错解决
  • 1、pycharm、python下载与安装
  • 服务器信息整理:用途、操作系统安装日期、设备序列化、IP、MAC地址、BIOS时间、系统
  • 什么是Kafka的重平衡机制?
  • 小红书怎么看ip所属地?小红书ip属地为什么可以变
  • 基于Spring Boot的健康饮食管理系统
  • 开发培训:慧集通(DataLinkX)iPaaS集成平台-基于接口的组件开发
  • WebSocket 基础入门:协议原理与实现
  • Appllo学习
  • MySQL 索引分类及区别与特点
  • OkHttp接口自动化之断言
  • 基于Spring Boot的智能笔记的开发与应用
  • 自动化文件监控与分类压缩:实现高效文件管理
  • 第十一章 图论
  • SSH相关
  • Jmeter进阶篇(32)Jmeter 在 MySQL 数据库压测中的应用
  • Electron不支持 jquery ,angularjs解决办法
  • 游戏引擎学习第73天
  • 在AWS Lambda上部署Python应用:从入门到实战
  • 51单片机——共阴数码管实验