您现在的位置是:首页 >技术交流 >网络安全复习网站首页技术交流

网络安全复习

yhryhryhr- 2024-06-17 10:43:10
简介网络安全复习

目录

低层协议安全性

IP协议

ARP协议

TCP协议

NAT协议

单钥加密体制

DES算法

课后习题

双钥加密体制

?怎么说

欧几里得算法求逆

RSA算法

椭圆曲线加密

Diffie- Hellman 密钥交换算法

ElGamal签名机制

Schnorr签名机制

DSS签名算法——DSA

低层协议安全性

IP协议

对于网络层,IP协议是其中一个非常重要的协议。网络层的IP地址相当于数据链路层的Mac地址。协议字段如下,每行4字节,总共4*5=20字节。

IP协议安全性:IP协议不能保证数据就是从数据包中给定的源地址发出的,你绝对不能靠对源地址的有效性检验来判断数据包的好坏。

ARP协议

接上文,Mac地址是电脑出场自带并不可更改的;而网络环境改变了IP地址也会改变,因此需要寻找设备的IP地址。假设主机A和B在同一个网段:

A的ARP缓存表中如果有B的表项,则对IP数据包进行帧封装,单播发送给B的Mac地址。

如果没有,则如下图形式进行广播,并将得到的信息存入ARP缓存表以便下次使用。所以ARP协议中文为地址解析协议。

当ARP在不同的局域网中进行运行的时候:

  1. 主机A先把自己的IP地址与目的主机的IP地址相与,发现不在同一个子网中。

  2. 主机A便运行ARP缓存表获取默认网关的MAC地址,与默认网关进行数据帧的传送。

  3. 当运行到路由器时,路由器查询转发表,看是否转发表中有目的IP 地址,如果有的话便可以进行直接交付;没有则运行ARP协议获取下一跳路由器接口的Mac地址。

  4. 路由器接到分组后,查询转发表,将分组进行转发。

ARP协议的安全问题:一台不可信赖的主机会发出假冒的ARP查询或应答信息,并将所有流向它的数据流转移。这样,它就可以伪装成某台机器,或修改数据流。这种攻击叫做ARP欺骗攻击。

TCP协议

TCP消息格式:<localhost, localport, remotehost, remoteport>

TCP连接的建立需要3次握手,当服务器收到初始的SYN数据包后,该连接处于半开放状态。此后,服务器返回自己的序号,并等待确认。最后,客户机发送第3个数据包使TCP连接开放,在客户机和服务器之间建立连接。

但处于半开放状态会消耗服务器的大量资源,所以诞生了泛洪攻击,即通过模拟IP或僵尸网络的方式大量发出第一次握手,而不回复第三次握手,大量占用服务资源。

泛洪攻击的防治有如下两种方法:

方法1(SYN Defender):防火墙收到客户端的SYN包时,直接转发给服务器;防火墙收到服务器的SYN/ACK包后,一方面将SYN/ACK包转发给客户端,另一方面以客户端的名义给服务器回送一个ACK包,完成TCP的三次握手,让服务器端由半连接状态进入连接状态。当客户端真正的ACK包到达时,有数据则转发给服务器,否则丢弃该包。由于服务器能承受连接状态要比半连接状态高得多,所以这种方法能有效地减轻对服务器的攻击。

方法2(SYN proxy):防火墙在收到客户端的SYN包后,并不向服务器转发而是记录该状态信息然后主动给客户端回送SYN/ACK包,如果收到客户端的ACK包,表明是正常访问,由防火墙向服务器发送SYN包并完成三次握手。这样由防火墙做为代理来实现客户端和服务器端的连接,可以完全过滤不可用连接发往服务器。

 

NAT协议

NAT协议的诞生主要为了解决IPV4中IP地址不足的问题。NAT协议中文全称为网络地址转换,即将一大批主机由NAT路由器都封装在一个局域网内,并赋予一个内网IP和外网IP。内网通信随意,IP地址足够;当访问外网时步骤如下(内部主机(192.168.10.1)要向外部主机(地址为210.10.20.20)发送一个数据包):

  1. 向NAT路由器发送数据包,源地址为192.168.10.1,目的地址为210.10.20.20

  2. NAT路由器在转换表中增添一个条目,内部地址192.168.10.1,外部地址210.10.20.20

  3. NAT路由器用自己的地址(即201.26.7.9)替换数据包中的源地址,并利用路由机制,将此数据包发送给Internet上的目标主机。此时源地址就变为了201.26.7.9

  4. 目的地址收到信息并返回响应数据包,响应数据包的源地址为210.10.20.20,而目的地址为201.26.7.9

  5. 该响应数据包到达NAT路由器。因为响应数据包中的目的地址与NAT路由器的地址匹配,所以NAT路由器查询转换表,以确认此转换表中是否含有外部地址为210.10.20.20的条目。于是就找到了内部主机192.168.10.1

  6. NAT路由器用内部主机地址(即192.168.10.1)替换数据包的目的地址,并将该分组发给该内部主机。

然而,如果有多个内网主机希望与外网的同一台主机通信怎么办?

那么需要修改NAT转换表,新加几列新的参数。

内部端口外部端口NAT端口
标识内部主机应用程序所使用的端口号标识某一应用程序所使用的端口号一个依次递减的数字,由NAT路由器生成

NAT协议的安全问题:NAT最严重的问题是它不能与加密协调工作。第一,NAT不能对加密的数据流进行检查;第二,IPsec与NAT会产生冲突。

单钥加密体制

DES算法

DES属于对称密码算法中的分组加密(块加密),和流密码相对应。DES算法将明文分为若干个64位块(不足补充),秘钥为56位(8位校验位)。DES算法流程图如下

 接下来,进行DES算法关键步骤的逐步解析:

IP置换

IP置换和IP逆置换,还有后面提到的P置换逻辑都是一样的。例如下图IP置换矩阵的第一行第一列为58,含义即为将第58个元素位置换为第一个。置换完后密文长度不变,仍为64位。

E扩展

64位字段可以分为前32位和后32位,前32位不变,后32位进行E扩展置48位,具体扩展方法如下:

例如图中原本的32位字段为,将32位字段分为8组,每组前后各加两个比特,组成新的 6 × 8 = 48 位字段。新加的两位分别是前一组字段的最后一位和后一组字段的第一位,见下所示。

1101 0001 0011 0100 原文本

011010 100010 100110 101001 E扩展文本

S盒压缩

S盒是精心设计的8个矩阵,是DES算法中混淆的关键部分,他的质量(随机性)很大程度影响DES的加密效果。

之后,我们要再将E扩展后的48位后半字段,通过S盒压缩为32位,具体压缩方法如下:

先将48位分为8组,每组6位。6位取出前两位和中间四位,拼成2进制数,再将2进制转化为十进制,即经过一系列操作,将6位数变为2个十进制数。将这两个十进制数当作横纵坐标,寻找S盒中对应的十进制数,再将这个十进制数用4位2进制表示。至此,我们将48位文本压缩为了32位。

(3,15)在S盒中对应的元素为13(查表得),之后转换为二进制1011,所以通过S盒我们将111111压缩为了1011。

P盒置换

P盒压缩和IP置换思路大致相似,例如第一行第一列元素为16,即将第16位置换到第一位,剩余以此类推。

秘钥生成

秘钥生成思路流程图如下:

如图中的流程,首先需要进行一次PC-1的选择置换,即去掉密钥中的校验位(8,16,...,64)。去掉8位校验位还剩下56位密钥,将56位分为C_0 (前28位)和D_0 (后28位) ,根据下表进行密钥的循环左移(如图中密钥表的计算逻辑)。得到的C_i D_i 进行合并后,再进行一次PC-2的选择置换,将密钥流变为48位。

Feistel结构及证明

如图可见,只要密钥倒置就可以解密密文。数学证明如下:

加密过程是:明文m = LE_0||RE_0,进行n轮迭代。

按下列规则计算LE_n||RE_n,1≤i≤n,轮函数为F

LE_i = RE_{i-1}

RE_i = LE_{i-1}igoplus F(RE_{i-1},K_i)

进行n轮迭代运算后,得LE_n和RE_n,输出密文c = RE_n||LE_n

解密过程与加密过程采用相同的算法:密文分组c = RE_n||LE_n = LD_0||RD_0

按下述规则计算LD_n||RD_n,1≤i≤n,轮函数为F

LD_i = RD_{i-1}

RD_i = LD_{i-1}igoplus F(RD_{i-1},K_{n-i+1})

进行n轮迭代运算后,得LD_n||RD_n,输出明文m = RD_n||LD_n

下面即需要证明 m = LE_0||RE_0= RD_n||LD_n,显然:

LD_i = RD_{i-1} = LE_{n+1-i} = RE_{n-i}

RD_i=LD_{i-1} igoplus F(RD_{i-1},K_{n+1-i}) = RE_{n+1-i}igoplus F(LE_{n+1-i},K_{n+1-i}) = LE_{n-i}

当i=0可得LE_0||RE_0= RD_n||LD_n,所以Feistel结构是可逆的。

课后习题

根据对明文处理方式的不同,对称加密可以分为哪两种?

流密码和分组密码。

DES算法中IP置换的作用?

IP置换其作用是通过将明文的每个比特位移到不同的位置上,实现对明文的置换和重排。这 个过程实际上是扩散,让明文中的每一位影响密文中的许多位

DES算法中16轮迭代运算的作用?

增强密码算法的安全性,由于DES算法的密钥长度较短,因此进行多轮迭代能够增强算法的复杂度和安全性,使其更难被攻击者破解;实现分组加密:DES算法采用了分组加密的方式,将 明文数据分成左右两个部分并进行迭代加密,这种方式既方便了数据的处理,又增强了算法的安全性。

本质上讲,数据的保密性是密钥的保密性还是算法的保密性?

当然是密钥的保密性!

双钥加密体制

?怎么说

没找着公钥加密在哪,所以?就接着写了。

公钥加密,也叫非对称(密钥)加密,属于通信科技下的网络安全二级学科,指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。它解决了密钥的发布和管理问题,是商业密码的核心。在公钥加密体制中,没有公开的是私钥,公开的是公钥。

下面,三只?和一只?将为您展示公钥加密过程。如下图所示。

非对称加、解密过程: 

  1. 消息接收方准备好公钥和私钥

  2. 私钥接收方自己留存、公钥发布给消息发送方

  3. 消息发送方使用接收方公钥对消息进行加密

  4. 消息接收方用自己的私钥对消息解密

欧几里得算法求逆

算数

例题,求17在模26下的逆元。17x equiv 1 mod 26

26 equiv 1 	imes 17+9,17 equiv 9+8,9=8 	imes 1+1

1 equiv 9-8 equiv 2	imes9-17 equiv 2	imes 26 -3 	imes 17

	herefore 17^{-1} mod 26 equiv -3 equiv 23 mod 26

算式

x^2 在 mod x^8+x^4+x^3+x+1 下的逆元

首先需要证明 x^2mod x^8+x^4+x^3+x+1 的最大公约数为1,否则不存在这个逆元。

x^8+x^4+x^3+x+1 = (x^6+x^2+x)x^2+x+1

x^2=x(x+1)-x

x+1 = (-1)(-x)+1

倒推下来:

1 = (x+1)-x

-x = x^2-x(x+1),	herefore 1=(1-x)(1+x)+x^2

(1+x)=x^8+x^4+x^3+x+1-(x^6+x^2+x)x^2

	herefore 1=(1-x)[x^8+x^4+x^3+x+1-(x^6+x^2+x)x^2]+x^2

= (1-x)(x^8+x^4+x^3+x+1)+(x^7-x^6+x^3-x+1)x^2

	herefore x^2在 mod x^8+x^4+x^3+x+1 下的逆元为(x^7-x^6+x^3-x+1)

RSA算法

加解密过程

  1. 选择一对不相等的大质数,记作p、q

  2. 计算N = p 	imes q

  3. 计算phi(N) = (p-1)	imes(q-1)

  4. 选择一个与phi(N)互质的整数e

  5. 计算出e对于φ(N)的模反元素d

  6. 公钥 KU = (e,N) ,私钥KR = (d,N) 注意这括号不是最大公约数,而是表达形式,具体见例题!

如果两个正整数e和φ(n)互质,那么⼀定可以找到⼀个整数d,使得ed-1被φ(n)整除,或者说ed除以φ(n)所得余数为1。 此时,d就叫做e的模反元素。

加密 M^e mod N equiv C

解密 C^d mod N equiv M

例题

  1. 取p=3、q=11;

  2. N=p 	imes q = 33

  3. phi(N) = (p-1)(q-1) = 20

  4. 选择一个与phi(N)互素的数,我们选择e=3

  5. 找到一个d使得ed equiv 1 mod phi(N),解得d equiv 7 mod 20

  6. 公钥KU = (e,n) = (3,33) ,私钥KR = (d,n) = (7,33)

假如明文M=20,加密即为 20^3 mod 33 = 14,解密即为14^7 mod 33 = 20

椭圆曲线加密

推导出生成秘钥k和加法公式,已知y^2 = x^3+ax+b mod P

注意,公式中不论P、Q两点是不是横坐标相同,只区分两点是否重合。

例题_基础

利用椭圆曲线实现ElGamal密码体制,设椭圆曲线是E_{11}(1,6),生成元 G=(2,7)

(5,2)+(2,7)

已知椭圆曲线方程为y^2 = x^3+x+6 mod 11

kequivfrac{7-2}{2-5}mod 11equiv5	imes(-3)^{-1}equiv5	imes7 mod 11 equiv 2 mod 11

x_3 equiv k^2-x_1-x_2equiv2^2-5-2 equiv 8mod 11

y_3 equiv 2	imes(5-8)-2 mod 11equiv 3 mod 11

所以(5,2)+(2,7)=(8,3)

例题_复杂

Diffie- Hellman 密钥交换算法

基本原理

例题

设a=3,q=17

Alice: X_A = 15;Bob: X_B = 13

Y_A = 3^{15} mod 17 equiv6Y_B = 3^{13} mod 17 equiv 12

把6传给Bob;把12传给Alice

12^{15} mod 17 equiv 10 6^{13} mod 17 equiv 10 这样他们就有了共同的密钥“10”s

如上图,Alice和Bob以为自己和对方交换了秘钥,但实质上都是和Darth交换秘钥,所以Darth可以获得Alice和Bob的所有明文,这样就寄了!

ElGamal签名机制

加解密过程

已知p是大素数,g是Z_p^{*}的本原根,x为用户私钥,y equiv g^x mod p为公钥,选择随机数 kin Z_p^{*}。m为签名的消息。

计算Hash(m)。

计算r=g^k mod p

计算s=[Hash(m)-x*r]k^{-1} mod (p-1)

签名即将消息m,(r,s)送给对方。


验证时需要计算:

y^rr^s equiv g^{xr}g^{sk} mod p equiv g^{xr+sk} mod p

而计算s时不难看出,xr+sk equiv Hash(m) mod (p-1)

所以拿到m后,先计算 g^{Hash(m)} mod p,再计算y^rr^s mod p,如果两者相等则消息m被发送者用私钥x签名过。

例题

p=29,g=2,x=2,Hash(m)=19,k=3,对消息m进行签名

r equiv g^k mod p equiv 8 mod 29

s equiv [Hash(m)-x*r]k^{-1} mod (p-1) equiv [19-2*8]3^{-1} mod 28 equiv 1

发送消息m和数字签名(r,s)

验证计算g^{Hash(m)} equiv 2^{19} mod 29

y^rr^s equiv 4^8*8 mod p equiv 2^{19} mod29,签名验证正确。

Schnorr签名机制

p、q为选取的大素数,g 满足g^q equiv 1 mod p,x为私钥,y equiv g^x mod p 为公钥。

计算 r equiv g^k mod p

计算 e=Hash(r||m)

计算 s equiv k+xe mod q

数字签名为(e,s),将m和数字签名发送给检验方。


检验时计算 r^{'} equiv g^sy^{-e} mod p,再计算Hash(r^{'}||m),如果结果为e则签名有效。

DSS签名算法——DSA

先前条件和之前相同。

计算r equiv (g^k mod p) mod q

计算s equiv [k^{-1}(Hash(m)+xr)] mod q

数字签名为(r,s),将消息m和签名(r,s)发给检测方。


收到m后计算Hash(m),再计算w equiv s^{-1} mod q

计算u_1 equiv [Hash(m)*w] mod qu_2 equiv r*w mod q

v equiv [(g^{u_1}y^{u_2}) mod p] mod q,如果 v equiv r 则签名有效。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。