网络安全复习

目录

低层协议安全性

IP协议

ARP协议

TCP协议

NAT协议

单钥加密体制

DES算法

课后习题

双钥加密体制

怎么说

欧几里得算法求逆

RSA算法

椭圆曲线加密

Diffie- Hellman 密钥交换算法

ElGamal签名机制

Schnorr签名机制

DSS签名算法——DSA

低层协议安全性

IP协议

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

网络安全复习_第1张图片

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

ARP协议

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

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

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

网络安全复习_第2张图片

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

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

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

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

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

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

TCP协议

TCP消息格式:

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

网络安全复习_第3张图片

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

网络安全复习_第4张图片

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

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

网络安全复习_第5张图片

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

网络安全复习_第6张图片

 

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)替换数据包的目的地址,并将该分组发给该内部主机。

网络安全复习_第7张图片

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

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

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

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

单钥加密体制

DES算法

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

网络安全复习_第8张图片

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

IP置换

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

网络安全复习_第9张图片

E扩展

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

网络安全复习_第10张图片

例如图中原本的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位。

网络安全复习_第11张图片(3,15)在S盒中对应的元素为13(查表得),之后转换为二进制1011,所以通过S盒我们将111111压缩为了1011。

P盒置换

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

网络安全复习_第12张图片

秘钥生成

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

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

Feistel结构及证明

网络安全复习_第14张图片

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

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

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

LE_i = RE_{i-1}

RE_i = LE_{i-1}\bigoplus 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}\bigoplus 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} \bigoplus F(RD_{i-1},K_{n+1-i}) = RE_{n+1-i}\bigoplus 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算法采用了分组加密的方式,将 明文数据分成左右两个部分并进行迭代加密,这种方式既方便了数据的处理,又增强了算法的安全性。

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

当然是密钥的保密性!

双钥加密体制

怎么说

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

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

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

网络安全复习_第15张图片非对称加、解密过程: 

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

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

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

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

欧几里得算法求逆

算数

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

26 \equiv 1 \times 17+9,17 \equiv 9+8,9=8 \times 1+1

1 \equiv 9-8 \equiv 2\times9-17 \equiv 2\times 26 -3 \times 17

\therefore 17^{-1} \mod 26 \equiv -3 \equiv 23 \mod 26

算式

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

首先需要证明 x^2\mod 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),\therefore 1=(1-x)(1+x)+x^2

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

\therefore 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

\therefore 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 \times q

  3. 计算\phi(N) = (p-1)\times(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 \times 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

网络安全复习_第16张图片

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

例题_基础

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

(5,2)+(2,7)

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

k\equiv\frac{7-2}{2-5}\mod 11\equiv5\times(-3)^{-1}\equiv5\times7 \mod 11 \equiv 2 \mod 11

x_3 \equiv k^2-x_1-x_2\equiv2^2-5-2 \equiv 8\mod 11

y_3 \equiv 2\times(5-8)-2 \mod 11\equiv 3 \mod 11

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

例题_复杂

网络安全复习_第17张图片

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

网络安全复习_第18张图片

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

ElGamal签名机制

加解密过程

已知p是大素数,g是Z_p^{*}的本原根,x为用户私钥,y \equiv g^x \mod p为公钥,选择随机数 k\in 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 则签名有效。

你可能感兴趣的:(网络安全,网络协议,网络,物联网)