网络安全复习

目录

低层协议安全性

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}\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算法采用了分组加密的方式,将 明文数据分成左右两个部分并进行迭代加密,这种方式既方便了数据的处理,又增强了算法的安全性。

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

当然是密钥的保密性!

双钥加密体制

🐇怎么说

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

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

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

非对称加、解密过程: 

  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

注意,公式中不论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)

例题_复杂

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为公钥,选择随机数 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 则签名有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/24186.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML+CSS实训——Day02——仿一个网易云音乐的登陆界面

仓库链接:https://github.com/MengFanjun020906/HTML_SX 前言 今天要继续完成我们的音乐软件了&#xff0c;昨天写完了封面&#xff0c;今天该完成开屏广告和登陆界面了。 登陆界面代码 <!DOCTYPE html> <html lang"en"> <head><meta charse…

【P35】JMeter 包含控制器(Include Controller)

文章目录 一、包含控制器&#xff08;Include Controller&#xff09;参数说明二、准备工作三、测试计划设计3.1、保存测试片段3.2、使用测试片段 一、包含控制器&#xff08;Include Controller&#xff09;参数说明 可以将测试计划的某一部分提取为公用逻辑&#xff0c;这样…

【十字绣】传统手艺-微信小程序开发流程详解

还记得小时候看过母亲的十字绣吗&#xff0c;易学易懂&#xff0c;就是用专用的绣线和十字格布&#xff0c;通过平面坐标计找出位置&#xff0c;对照专用的图案进行刺绣&#xff0c;可作出心中所想的画&#xff0c;奈何所需材料成本不小&#xff0c;这里用小程序简单模拟十字绣…

使用object.defineProperty来更新数据示例

Object.defineProperty() 方法会直接在一个对象上定义一个新属性&#xff0c;或者修改一个对象的现有属性&#xff0c;并返回此对象。 Object.defineProperty&#xff08;&#xff09;可以为对象的属性添加特性&#xff0c;每一个被添加过的属性&#xff0c;都会拥有属于自己的…

【C++初阶】C++——模板初阶与泛型编程

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C初阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 1. 泛型编程2. 函数模板…

C Primer Plus第四章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 1.编写一个程序&#xff0c;提示用户输…

自学网络安全最细规划(建议收藏)

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

自古以来,反射也是兵家必争之地

成文耗时1小时&#xff0c;阅读5min&#xff0c;有用指数5颗星。 这几天收到一个战术性需求&#xff0c;将一大坨字段序列化为特定格式的字符串。 大概是下表&#xff1a; 序号字段名描述是否必填0logVersion日志版本是1productName产品是2serviceName服务是.........25extend3…

8项seo的日常工作

SEO的日常工作涵盖了一系列任务和活动&#xff0c;旨在优化网站以提高在搜索引擎中的排名和可见性。 以下是SEO的日常工作内容&#xff1a; 关键词研究和优化&#xff1a;定期进行关键词研究&#xff0c;寻找与目标受众和业务相关的热门关键词。优化网站内容、标题、元描述和链…

这些脑洞大开的论文标题,也太有创意了O(∩_∩)O

microRNAs啊microRNAs&#xff0c;谁是世界上最致命的髓母细胞瘤microRNAs&#xff1f; 这个标题很容易让人联想到白雪公主后妈说的那句话&#xff1a;Mirror mirror on the wall, who is the fairest of them all? 02 一氧化碳&#xff1a;勇踏NO未至之境 NO 指 nitric oxide…

合并两个有序链表(java)

leetcode 21题&#xff1a;合并两个有序链表 题目描述解题思路&#xff1a;链表的其它题型。 题目描述 leetcode21题&#xff1a;合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 输入&…

MySQL 数值函数

文章目录 数值函数1. abs(num)2. ceil(num)3. floor(num)4. mod(num1,num2)5. rand()6. round(num,n)7. truncate(num,n)8. sqrt(num) 数值函数 数值函数用来处理数值方面的运算&#xff0c;能够提高用户的工作效率。常用的数值函数如下表所示&#xff0c;函数括号内为输入的参…

四足机器人A1目标跟踪

四足机器人A1目标跟踪 前期准备工作1.安装TeamViewer2.将四足机器人所有线连接好3.将四足机器人调至运动模式 运行流程1.开机阶段2.运行阶段 效果展示代码配置 前期准备工作 1.安装TeamViewer 由于外接屏幕损坏&#xff0c;故四足机器人内部配置了TeamViewer&#xff0c;因此…

【Linux】线程同步

文章目录 条件变量相关函数初始化条件变量-pthread_cond_init销毁条件变量-pthread_cond_destroy等待条件变量-pthread_cond_wait唤醒等待条件变量pthread_cond_broadcastpthread_cond_signal 小例子关于等待函数的补充条件变量使用规范 条件变量相关函数 初始化条件变量-pthr…

如何让自动化测试框架更自动化?

一、引言 ​对于大厂的同学来说&#xff0c;接口自动化是个老生常谈的话题了&#xff0c;毕竟每年的MTSC大会议题都已经能佐证了&#xff0c;不是大数据测试&#xff0c;就是AI测试等等&#xff08;越来越高大上了&#xff09;。不可否认这些专项的方向是质量智能化发展的方向&…

IMX6ULL裸机篇之IIC协议

一. IIC实验简介 I2C 是最常用的通信接口&#xff0c;众多的传感器都会提供 I2C 接口来和主控相连。 比如摄像头、 加速度计、触摸屏等。 I.MX6U-ALPHA开发板 使用 I2C1 接口连接了一个距离传感器 AP3216C &#xff0c;本章我们就来学习如何使用 I.MX6U 的 I2C 接口…

【JavaSE】Java基础语法(十):构造方法

文章目录 ⛄1. 构造方法的格式和执行时机⛄2. 构造方法的作用⛄3. 构造方法的特点⛄4. 构造方法的注意事项⛄5. 构造方法为什么不能被重写 在面向对象编程的思想中&#xff0c;构造方法&#xff08;Constructor&#xff09;是一个特殊的函数&#xff0c;用于创建和初始化类的对…

华为OD机试之模拟商场优惠打折(Java源码)

模拟商场优惠打折 题目描述 模拟商场优惠打折&#xff0c;有三种优惠券可以用&#xff0c;满减券、打折券和无门槛券。 满减券&#xff1a;满100减10&#xff0c;满200减20&#xff0c;满300减30&#xff0c;满400减40&#xff0c;以此类推不限制使用&#xff1b; 打折券&…

GoWeb -- gin框架的入门和使用

认识gin go流行的web框架 go从诞生之初就带有浓重的开源属性&#xff0c;其原生库已经很强大&#xff0c;即使不依赖框架&#xff0c;也能进行高性能开发&#xff0c;又因为其语言并没有一定的设计标准&#xff0c;所以较为灵活&#xff0c;也就诞生了众多的框架&#xff0c;各…

视频怎么加水印?如何录制带水印的视频?

案例&#xff1a;如何给视频添加水印&#xff1f; 【我发布在短视频平台的视频&#xff0c;总是被别人盗用&#xff0c;我想给自己的视频添加水印。有没有视频添加水印的方法&#xff1f;在线等&#xff01;】 很多视频制作者或者爱好者&#xff0c;都希望自己的视频作品得到…