目录
低层协议安全性
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在不同的局域网中进行运行的时候:
-
主机A先把自己的IP地址与目的主机的IP地址相与,发现不在同一个子网中。
-
主机A便运行ARP缓存表获取默认网关的MAC地址,与默认网关进行数据帧的传送。
-
当运行到路由器时,路由器查询转发表,看是否转发表中有目的IP 地址,如果有的话便可以进行直接交付;没有则运行ARP协议获取下一跳路由器接口的Mac地址。
-
路由器接到分组后,查询转发表,将分组进行转发。
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
)发送一个数据包):
-
向NAT路由器发送数据包,源地址为
192.168.10.1
,目的地址为210.10.20.20
。 -
NAT路由器在转换表中增添一个条目,内部地址
192.168.10.1
,外部地址210.10.20.20
。 -
NAT路由器用自己的地址(即
201.26.7.9
)替换数据包中的源地址,并利用路由机制,将此数据包发送给Internet上的目标主机。此时源地址就变为了201.26.7.9
。 -
目的地址收到信息并返回响应数据包,响应数据包的源地址为
210.10.20.20
,而目的地址为201.26.7.9
。 -
该响应数据包到达NAT路由器。因为响应数据包中的目的地址与NAT路由器的地址匹配,所以NAT路由器查询转换表,以确认此转换表中是否含有外部地址为
210.10.20.20
的条目。于是就找到了内部主机192.168.10.1
。 -
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结构及证明
如图可见,只要密钥倒置就可以解密密文。数学证明如下:
加密过程是:明文,进行n轮迭代。
按下列规则计算,1≤i≤n,轮函数为F
进行n轮迭代运算后,得LE_n和RE_n,输出密文
解密过程与加密过程采用相同的算法:密文分组。
按下述规则计算,1≤i≤n,轮函数为F
进行n轮迭代运算后,得,输出明文
下面即需要证明 ,显然:
当i=0可得,所以Feistel结构是可逆的。
课后习题
根据对明文处理方式的不同,对称加密可以分为哪两种?
流密码和分组密码。
DES算法中IP置换的作用?
IP置换其作用是通过将明文的每个比特位移到不同的位置上,实现对明文的置换和重排。这 个过程实际上是扩散,让明文中的每一位影响密文中的许多位
DES算法中16轮迭代运算的作用?
增强密码算法的安全性,由于DES算法的密钥长度较短,因此进行多轮迭代能够增强算法的复杂度和安全性,使其更难被攻击者破解;实现分组加密:DES算法采用了分组加密的方式,将 明文数据分成左右两个部分并进行迭代加密,这种方式既方便了数据的处理,又增强了算法的安全性。
本质上讲,数据的保密性是密钥的保密性还是算法的保密性?
当然是密钥的保密性!
双钥加密体制
🐇怎么说
没找着公钥加密在哪,所以🐇就接着写了。
公钥加密,也叫非对称(密钥)加密,属于通信科技下的网络安全二级学科,指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。它解决了密钥的发布和管理问题,是商业密码的核心。在公钥加密体制中,没有公开的是私钥,公开的是公钥。
下面,三只🐇和一只🐼将为您展示公钥加密过程。如下图所示。
非对称加、解密过程:
-
消息接收方准备好公钥和私钥
-
私钥接收方自己留存、公钥发布给消息发送方
-
消息发送方使用接收方公钥对消息进行加密
-
消息接收方用自己的私钥对消息解密
欧几里得算法求逆
算数
例题,求17在模26下的逆元。
算式
求 在 下的逆元
首先需要证明 和 的最大公约数为1,否则不存在这个逆元。
倒推下来:
在 下的逆元为
RSA算法
加解密过程
-
选择一对不相等的大质数,记作p、q
-
计算
-
计算
-
选择一个与互质的整数e
-
计算出e对于φ(N)的模反元素d
-
公钥 KU = (e,N) ,私钥KR = (d,N) 注意这括号不是最大公约数,而是表达形式,具体见例题!
如果两个正整数e和φ(n)互质,那么⼀定可以找到⼀个整数d,使得ed-1被φ(n)整除,或者说ed除以φ(n)所得余数为1。 此时,d就叫做e的模反元素。
加密
解密
例题
-
取p=3、q=11;
-
选择一个与\phi(N)互素的数,我们选择e=3
-
找到一个d使得,解得
-
公钥KU = (e,n) = (3,33) ,私钥KR = (d,n) = (7,33)
假如明文M=20,加密即为 ,解密即为
椭圆曲线加密
推导出生成秘钥k和加法公式,已知
注意,公式中不论P、Q两点是不是横坐标相同,只区分两点是否重合。
例题_基础
利用椭圆曲线实现ElGamal
密码体制,设椭圆曲线是,生成元 G=(2,7)
求
已知椭圆曲线方程为
所以
例题_复杂
Diffie- Hellman 密钥交换算法
基本原理
例题
设a=3,q=17
Alice: X_A = 15;Bob: X_B = 13
;
把6传给Bob;把12传给Alice
这样他们就有了共同的密钥“10”s
如上图,Alice和Bob以为自己和对方交换了秘钥,但实质上都是和Darth交换秘钥,所以Darth可以获得Alice和Bob的所有明文,这样就寄了!
ElGamal签名机制
加解密过程
已知p是大素数,g是的本原根,x为用户私钥,为公钥,选择随机数 。m为签名的消息。
计算Hash(m)。
计算
计算
签名即将消息m,(r,s)送给对方。
验证时需要计算:
而计算s时不难看出,
所以拿到m后,先计算 ,再计算,如果两者相等则消息m被发送者用私钥x签名过。
例题
,对消息m进行签名
发送消息m和数字签名(r,s)
验证计算,
,签名验证正确。
Schnorr签名机制
p、q为选取的大素数,g 满足,x为私钥, 为公钥。
计算
计算
计算
数字签名为(e,s),将m和数字签名发送给检验方。
检验时计算 ,再计算,如果结果为e则签名有效。
DSS签名算法——DSA
先前条件和之前相同。
计算
计算
数字签名为(r,s),将消息m和签名(r,s)发给检测方。
收到m后计算Hash(m),再计算
计算,
,如果 则签名有效。