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 安全目标(信息和网络安全的核心)—— CIA 三元组

  • 保密性
    数据保密性——确保隐私或秘密信息不向非授权者泄露,也不悲非授权者使用。
    隐私性——确保个人能够控制或确定与其自身相关的那些信息是可以被收集的、被保存的,以及这些信息可以由谁来公开及想谁公开。
  • 完整性
    数据完整性——确保信息(包括存储的信息和传输的数据包)和程序只能以特定和授权的方式进行改变;一个数据对象确实是所声称的或被声称的对象(数据真实性);保证向信息的发送方提供交付证明并向接收方提供发送发身份的证明,一边以后无论是发送方还是接收方都不能否仍其已经处理了该信息(不可否认性)。
    系统完整性——保证系统以一种正常的方式执行预定的功能,免于有意或无意的非授权操作。
  • 可用性
    确保系统能够及时运行,对授权用户不能拒绝服务。

2 传统加密技术

2.1 代替技术

2.1.1 Caesar密码

加密规则: 将字母表中的每个字母,有它之后的第 3 个字母来代替。
破解手段: 穷举攻击

2.1.2 单表代替密码

加密规则: 每条信息用一个字母表(给出从明文字母到密文字母的映射)加密。
解决手段: 字母频率分析

2.1 3 Playfair密码

加密规则: 把明文中的双字母作为一个单元转换成密文的“双字母音节”。该算法基于一个由密钥词构成的 5 × 5 字母矩阵。

① 首先将密钥词(去掉重复字母)从左至右、从上至下填在矩阵格子里,再将剩余的字母按字母表的顺序从左到右、从上至下填在矩阵剩下的格子中。

② 字母 I 和 J 暂且当成一个字母,如果该字母对的两个字母是相同的,那么在它们之间加一个填充字母。对明文按如下规则一次加密两个字母:

  • 落在矩阵同一行的明文字母对中的字母由其右边的字母代替。
  • 落在矩阵同一列的明文字母对中的字母由其下面的字母代替
  • 其他的每组明文字母对文中的字母则:该字母所在行为密文所在行,另一字母所在列为密文所在列

解决手段: 字母频率分析

2.1.4 Hill密码

加密规则:

  1. 将明文的每一个字母转化为数字(A-0)
  2. 将明文转化为一个 1 × n 1 × n 1×n 的矩阵 P P P
  3. C = P K ? m o d ? 26 C=PK\ mod\ 26 C=PK?mod?26
  4. 将这个 C C C 转化为密文

解密规则 P = C K ? 1 ? m o d ? 26 P=CK^{-1}\ mod\ 26 P=CK?1?mod?26

2.1.5 多表代替加密—— Vignerere 密码

加密规则:

  1. 已知密钥有 N N N 个字符, K = ( k 1 , k 2 , … , k N ) K=(k_1,k_2,…,k_N) K=(k1?,k2?,kN?)
  2. 将明文 M M M 按照 N N N 个字符为一组,分为 L L L 段, M = ( M 1 , M 2 , … , M L ) M=(M_1,M_2,…,M_L) M=(M1?,M2?,,ML?)
  3. 求密文 C C C C i j = ( k j + m i j ) m o d ? 26 C_{ij}=(k_j+m_{ij})mod\ 26 Cij?=(kj?+mij?)mod?26
    在这里插入图片描述

2.1.6 一次一密

加密规则:使用与消息一样长度且无重复的随机密钥来加密信息

2.2 置换技术

特点: 保持明文的所有字符不变,只是打乱了位置和次序。

2.2.1 列置换密码

加密规则: 将明文按照固定宽度 n n n 按行写出,而后按照密钥的规则按列换位。
在这里插入图片描述

2.2.2 周期置换密码

加密规则: 将明文 m m m 按照固定长度分组,对每组的字串按照某个置换重新排列从而得到密文。
在这里插入图片描述

3 对称密码与非对称密码

对称密码非对称密码
基本概念加密算法是公开的,靠的是秘钥来加密数据,使用一个秘钥加密,必须使用相同的秘钥才解密。加密和解密使用不同的秘钥,一把公开的公钥,一把私有的私钥。公钥加密的信息只有私钥才能解密,私钥加密的信息只有公钥才能解密。
组成部分明文、密钥、加密算法、密文、解密算法明文、公钥和私钥、加密算法、密文、解密算法
常用算法AES、DES、3DES、BlowfishRSA、DSA、ECDSA(椭圆曲线签名算法)
优点算法公开、计算量小、加密速度快、加密效率高安全,即使密文被拦截、公钥被获取,但是无法获取到私钥,也就无法破译密文。作为接收方,务必要保管好自己的密钥。
缺点在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥加密算法及其复杂,安全性依赖算法与密钥,而且加密和解密效率很低。

4 分组加密工作模式(ECB)

4.1 电码本模式

在这里插入图片描述
用途:适合加密密钥、随机数等短数据。例如,安全地传递DES密钥,ECB是最合适的模式。

4.2 密文分组链接模式(CBC)

在这里插入图片描述
用途: 面向分组的通用传输;认证

4.3 密码反馈模式(CFB)

在这里插入图片描述
用途:面向数据流的通用传输;认证

4.4 输出反馈模式(OFB)

在这里插入图片描述
用途:噪声信道上的数据流传输,适用于加密冗余性较大的数据,比如语音和图像数据。

4.5 计数器模式(CTR)

在这里插入图片描述
用途:面向分组的通用传输;用于高速需求

5 DES基本结构

输入:明文(64位)、密钥(56位
(实际上该密码函数希望采用 64 位的密钥,然而却仅仅采用了 56 位,其余 8 位可以用作奇偶校验或随意设置)

在这里插入图片描述

明文的处理:

  1. 初始置换
  2. 进行 16 轮相同函数,最后一轮左半部分和右半部分互换产生预输出。
  3. 预输出逆初始置换。

密文产生过程:

  1. 置换选择 1 —— 将 64 位密钥去掉 8 个校验位,用密钥置换 PC 1 _1 1? 置换剩下的 56 位密钥,将 56 位分成前 28 位 C 0 _0 0? 和后 28 位 D 0 _0 0?
  2. 循环左移 —— 根据轮数,这两部分分别循环左移 1 位或 2 位;
  3. 置换选择 2 —— 移动后,将两部分合并成 56 位后通过压缩置换 PC 2 _2 2? 后得到 48 位子密钥
    在这里插入图片描述

参考:DES加密算法

6 AES基本结构

  • 明文分组的长度:16 字节(128 bit)
  • 密钥长度:16(128 bit),24(192 bit)或者32字节(256 bit)
  • 密钥长度会改变算法循环次数,分别对应 10 / 12 / 14 轮循环
  • 根据密钥的长度,算法被称为 AES-128,AES-192或者AE-256。

7 传统密码攻击手段

  1. 密码分析学:唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击、选择文本攻击

  2. 穷举攻击

8 通过字母频率破解对单表代替密码最有效

9 PKI 的基本概念和构成

概念:公钥基础设施(KPI)为一组用于管理证书和公私钥对的策略、流程、服务器平台、软件和工作站,功能包括转发、维护和撤销公钥证书。

构成

  1. 认证机构(CA)
  2. 证书库
  3. PKI 应用接口系统
  4. 密钥备份及恢复系统
  5. 证书作废系统

10 访问控制策略

  1. 自主访问控制
  2. 强制访问控制
  3. 基于角色的访问控制、

11 MD5算法的基本概念

MD5(消息摘要算法)散列算法是一种单向加密函数,它接受任意长度的消息作为输入,并返回一个固定长度的摘要值作为输出,用于验证原始消息。

12 HASH算法的概念和特征

概念:Hash算法,简称散列算法,也成哈希算法(英译),是将一个大文件映射成一个小串字符。与指纹一样,就是以较短的信息来保证文件的唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。

特点

  • 正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。

  • 逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。

  • 输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。

  • 冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。即对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数据块,找到和它hash值相同的数据块极为困难。

13 RSA 计算

参考:吴师兄学算法.图解|什么是RSA算法

13.1 密钥的生成

RSA 算法的密钥是成对的,公钥加密私钥解密,来看下这对密钥是如何被计算出来的。

  • step1: 随机选择两个质数 P P P Q Q Q
    我们选择 P = 61 , Q = 53 P=61,Q=53 P=61Q=53
    计算 P P P Q Q Q 的乘积 N = P Q = 61 × 53 = 3233 N=PQ=61×53=3233 N=PQ=61×53=3233
    将N转换为二进制: 110010100001 110010100001 110010100001
    N的二进制长度是 12,也就是密钥长度为 12。
  • step2: N N N的欧拉函数值 M M M
    前提知识:
    欧拉函数 φ ( n ) \varphi(n) φ(n) 的定义:任意给定正整数 n,请问在小于等于 n 的正整数之中,有多少个与 n 构成互质关系。
    如果 n 是质数,则 φ ( n ) = n ? 1 \varphi(n)=n-1 φ(n)=n?1

    M = φ ( n ) = φ ( P × Q ) = φ ( P ) φ ( Q ) = ( P ? 1 ) ( Q ? 1 ) = 60 × 52 = 3120 M=\varphi(n)=\varphi(P×Q)=\varphi(P)\varphi(Q)=(P-1)(Q-1)=60×52=3120 M=φ(n)=φ(P×Q)=φ(P)φ(Q)=(P?1)(Q?1)=60×52=3120
  • step3: 找一个与 M M M 互素的整数 E E E
    M M M E E E 之间除了 1 以外没有公约数(互质)且 E < M E<M E<M,我们随机选择 E E E 为 17。
  • step4: 找一个整数 D D D
    满足: ( E × D ) m o d M = 1 (E×D) mod M = 1 (E×D)modM=1 (模逆元)
    E = 17 , M = 3120 , K = 1 , 2 , 3... E=17,M=3120,K=1,2,3... E=17M=3120K=123... 时, 17 × D ? K × M = 1 17×D - K×M = 1 17×D?K×M=1,求解这个方程找到一组满足关系的 D D D K K K 即可,
    可证其中一组为 ( D , K ) = ( 2753 , 15 ) (D,K)=(2753,15) (D,K)=(2753,15)

综上所述,我们找到了通过随机选择的互质的 P P P Q Q Q 计算得到 N 、 M 、 E 、 D N、M、E、D NMED ( E , N ) (E,N) (E,N) ( D , N ) (D,N) (D,N) 分别为公钥组私钥组

在这里插入图片描述
在本例中公钥组为 ( E , N ) = ( 17 , 3233 ) (E,N)=(17,3233) (E,N)=(17,3233),私钥组 ( D , N ) = ( 2753 , 3233 ) (D,N)=(2753,3233) (D,N)=(2753,3233),接下来我们将使用这对密钥进行加解密。

13.2 加密过程

X E m o d N = Y X^E mod N = Y XEmodN=Y
其中 X X X 为明文, E E E 为公钥, N N N 为大整数, Y Y Y 为密文

13.3 解密过程

我们获得密文 Y Y Y 后,开始解密:
Y D m o d N = X Y^D mod N = X YDmodN=X
其中 Y Y Y 为密文, D D D 为私钥, N N N 为大整数, X X X 为明文

13.4 实战做题

采用RSA算法,其中 e=7, p=11, q=13, 求出公钥和私钥,并求出明文85进行加密后的密文

n = p × q = 143 n = p × q =143 n=p×q=143
m = φ ( n ) = ( p ? 1 ) ( q ? 1 ) = 120 m = \varphi(n) = (p-1)(q-1)=120 m=φ(n)=(p?1)(q?1)=120
d d d 要满足 ( e × d ) (e×d) (e×d) mod m = 1 m=1 m=1,解得一个解 d = 103 d=103 d=103
则公钥为 ( n , e ) = ( 143 , 7 ) (n,e)=(143,7) (n,e)=(143,7),私钥为 ( n , d ) = ( 143 , 103 ) (n,d)=(143,103) (n,d)=(143,103)
对 85 进行加密: 8 5 7 85^7 857 mod 143 = 123 143=123 143=123

14 hash函数概念及应用

概念哈希函数 H H H 使用变长数据分组 M M M 作为输入,生成定长结果 h = H ( M ) h=H(M) h=H(M),这一结果也称为哈希值哈希码

哈希函数的主要目标是保证数据的完整性
M M M 的任何一位或几位的改变都会极大地改变其哈希码。
哈希函数经常被用于判断数据是否已经被篡改

在这里插入图片描述
应用:

  • 消息认证
  • 数字签名
  • 生成单向口令文件
  • 入侵检测
  • 病毒检测

15 生日攻击

生日悖论是指在不少于 23 个人中至少有两人生日相同的概率大于 50%,这个概率比我们想象的要大许多。
在这里插入图片描述
生日悖论的数学理论被应用于设计密码学攻击方法——生日攻击。
生日悖论普遍的应用于检测哈希函数: N N N 位长度的哈希表可能发生碰撞测试次数不是 2 N 2^N 2N 次而是只有 2 N / 2 2^{N/2} 2N/2次.

16 分组密码和流密码的差别

分组密码将明文首先进行分组,然后每次对一个分组进行加密,其中分组长度取决于分组加密算法。
流密码一次加密1bit或1Byte的明文

17 哈希和加密之间的区别

最?的区别:哈希是真正不可逆的,加密是可逆的
?途不同:如果被保护数据仅仅?作?较验证,在以后不需要还原成明?形式,则使?哈希;如果被保护数据在以后需要被还原成明?,则需要使?加密。

18 数字证书的基本概念

数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。因此数字证书又称为数字标识。数字证书保证了信息和数据的完整性和安全性。

19 重放攻击

概念
重放攻击(Replay Attacks)又称为重播攻击、回放攻击,一般是攻击者截获数据包后,无法解密数据,但可以把数据包和业务间的关系进行猜测,重新发送相同数据包,来达到欺骗系统的目的,主要用于身份认证过程、破坏认证的正确性。

重放攻击可以由发起者、或拦截方进行。拦截方进行的重放攻击又称为中间人攻击。

重放攻击基于网络嗅探。很多时候嗅探到的数据是加密过的,但攻击者虽然无法解密,但如果攻击者知道数据的意义,就可以发送这些数据来攻击接收端。

类型

  • 直接重放,即重放原来的验证端,直接重放的发送方和接收方均不变
  • 反向重放,将原本发给接收方的消息反向重放给发送方
  • 第三方重放,将消息重放给域内的其它验证端。

19 消息摘要如何产生

对一份数据,进行一个单向的 Hash 函数,生成一个固定长度的 Hash 值,这个值就是这份数据的摘要,也称为指纹。

常见的摘要算法有: MD5、SHA-1、SHA-256 等

20 对加密信息的攻击类型

20.1 唯密文攻击

定义:知道密文的情况下进行分析,求解明文或密钥的密码分析方法。
简单理解:只知道密文,推出明文或密钥,一般用穷举攻击。

20.2 已知明文攻击

定义:指攻击者掌握了部分的明文M和对应的密文C,从而求解或破解出对应的密钥和加密算法。
简单理解:知道部分的明文和密文对,推出密钥和加密算法。

20.3 选择明文攻击

定义:指攻击者除了知道加密算法外,还可以选定明文消息,从而得到加密后的密文,即知道选择的明文和加密的密文,但是不能直接攻破密钥。
简单理解:知道明文就知道密文,目标为推出密钥。

20.4 选择密文攻击

定义:指攻击者可以选择密文进行解密,除了知道已知明文攻击的基础上,攻击者可以任意制造或选择一些密文,并得到解密的明文,是一种比已知明文攻击更强的攻击方式。
若一个密码系统能抵抗选择密文攻击,那必然能够抵抗COA和KPA攻击。密码分析者的目标是推出密钥,CCA主要应用于分析公钥密钥体制。
简单理解:知道密文就知道明文,目标为推出密钥。

21 加密中混淆和扩散的区别

扩散尽可能地使明文密文间的统计关系变得复杂,
混淆则是尽可能使密文加密密钥间的统计关系更加复杂,以阻止攻击者发现密钥。

22 迪菲-赫尔曼(Diffie-Hellman)密钥交换相关计算

参考DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换
在这里插入图片描述

实战:密钥交换中所使用的素数 q = 353 q=353 q=353,它的一个本原根 α = 3 \alpha=3 α=3,A 和 B 分别选择密钥 X A = 97 X_A=97 XA?=97 X B = 233 X_B=233 XB?=233,计算公共的秘密钥。

答:
A 给出的公钥: Y A = α X A Y_A=\alpha^{X_A} YA?=αXA? mod q = 3 97 q=3^{97} q=397 mod 353 = 40 353=40 353=40
B 给出的公钥: Y B = α X B Y_B=\alpha^{X_B} YB?=αXB? mod q = 3 233 q=3^{233} q=3233 mod 353 = 248 353=248 353=248
A 和 B 交换公钥后,双方均可计算出公共的秘密钥:
A 计算秘密钥: K = ( Y B ) X A K=({Y_B})^{X_A} K=(YB?)XA? mod q = 24 8 97 q=248^{97} q=24897 mod 353 = 160 353=160 353=160
B 计算秘密钥: K = ( Y A ) X B K=({Y_A})^{X_B} K=(YA?)XB? mod q = 4 0 233 q=40^{233} q=40233 mod 353 = 160 353=160 353=160
因此秘密钥 K = 160 K=160 K=160

23 链路加密和端到端加密的区别

链路加密:链路加密是传输数据仅在数据链路层进行加密。接收方是传送路径上的各台节点机,信息在每台节点机内都要被解密和再加密,依次进行直至到达目的地。

端到端加密:端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在。采用端到端加密 (又称脱线加密或包加密)消息在被传输时到达终点之前不进行解密,因为消息在整个传输过程中均受到保护,所以即使有节点被损坏也不会使消息泄露。

区别

  1. 端到端加密系统的价格便宜些,并且与链路加密相比更可靠,更容易设计、实现和维护。

  2. 端到端加密还避免了其它加密系统所固有的同步问题,因为每个报文包均是独立被加密的,所以一个报文包所发生的传输错误不会影响后续的报文包。

  3. 此外,从用户对安全需求的直觉上讲端到端加密更自然些。单个用户可能会选用这种加密方法,以便不影响网络上的其他用户,此方法只需要源和目的节点是保密的即可。端到端加密系统通常不允许对消息的目的地址进行加密,这是因为每一个消息所经过的节点都要用此地址来确定如何传输消息。由于这种加密方法不能掩盖被传输消息的源点与终点,因此它对于防止攻击者分析通信业务是脆弱的。

24 公钥密码实现数据保密性、认证

在这里插入图片描述
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:33:03  更:2022-06-18 23:33:48 
 
开发: 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年12日历 -2024/12/28 21:42:04-

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