网络安全笔记

网络各层安全协议

链路层:链路隧道协议、加密技术

网络层:包过滤机制、NAT、IPsec协议、 VPN

传输层/会话层 :SSL/TLS 协议

应用层:SHTTP、HTTPS、PGP、S/MIME等

网络安全技术

第二代安全技术

  • 保护

  • 响应

  • 检测

  • 恢复

包括

  • 防火墙

  • 入侵检测

  • 虚拟专用网

  • 公钥基础设施

密码学

发展进程

  • **古典密码**: 基于字符替换的密码,现在已很少使用了,但是 它代表了密码的起源

  • **对称密钥体制( Symmetric System** ):加密密钥和解密密钥 相同,这些算法也叫作单钥密码体制(one-key system)

  • **非对称密钥体制(Asymmetric System)** :加密密钥和解密密 钥不同,也叫**公钥密码体制(public key system)或双钥密码体制(two-key system)**

加密模式

  • **序列密码(stream cipher)**: 序列密码**按位或字节加密**,也 可以称为流密码,序列密码是手工和机械密码时代的主流。

  • **分组密码(block cipher)**: 分组密码**将明文分成固定长度的组**,用同一密钥和算法对每一块加密,**输出也是固定长度的密文**。

对称密码

DES(数据加密标准,Data Encryption Standard )

DES是一种对二元数据进行加密的算法,数据分组长度为 **64位**,密文分组长度也是**64位**,使用的密钥为**64位**,有效密钥长度为**56位**,**有8位用于奇偶校验**,解密时的过程和加密时相似,但密钥的顺序正好相反,DES的整个体制是公开的,系统的安全性**完全靠密钥的保密**。

对加密系统的攻击

  • 唯密文攻击:根据加解密算法和密文进行破译

  • 已知明文攻击:攻击者拥有部分密文和对应的明文,根据算法寻找密钥

  • 选择明文攻击:有选择地使用任意明文和与之对应的密文信息,根据算法寻找密钥

  • 选择密文攻击:有选择地使用密文和与之对应的明文信息,根据算法寻找密钥

分组密码

分组密码一次处理一个数据分组

对于较长的明文,在分解成若干个分组之 后,采用相同的密钥进行加密,NIST定义 了5种工作模式

  • **电码本ECB(Electronic Codebook)**

  • **密码分组反馈CBC(Cipher-block chaining)**

  • **密码反馈CFB(Cipher feedback)**

  • **输出反馈OFB(Output Feedback)**

  • **计数器CRT(Counter)**

公钥密码

RSA

过程

密钥生成
  1. **选择两个互异的素数p和q**

  2. **计算n=p*q**

  3. **计算φ(n)=(p-1)(q-1)**

  4. **选择与φ(n)互素的e,且1<e<φ(n)**

  5. **计算d*e mod φ(n)= 1 **

**公钥为Pk为{e,n},私钥为{d,n}**

**加密**

C=M\^e\\,(mod\\,n)

**解密**

M=C\^d\\,(mod\\,n)

ELGamal密码

  • todo

消息认证与身份认证

数字签名-消息的不可否认性

消息认证-消息的完整性

数字签名

基本概念

① 签名者事后不能抵赖自己的签名;

② 任何其他人不能伪造签名;

③ 如果当事的双方关于签名的真伪发生争执,能够在公正的仲裁者面前通过验证确认其真伪。

与加解密的区别

数字签名的加密/解密过程和信息(报文)的加密/解密 过程都可适用公开秘钥算法,但实现**过程正好相反**,适用的密钥对也不同。数字签名使用的是发送方的密钥对, 发送方用自己的私钥进行加密(签名),接收方用发送方的公开秘钥进行解密(验证)

这是一个一对多的关系:任何拥有发送方公开秘钥的人都可以验证数字签名的正确性

签名

设施加签名的算法为 SIG,产生签名的密钥为K,被签 名的数据为M,产生的签名信息为S

S = SIG (M,K)

验证签名的算法为VER ,用VER对签名S进行验证,可鉴别S的真假

VER(S, K)= \\begin{cases} true \\quad当S=SIG(M, K)\\\\ false \\enspace当S\\neq SIG(M, K) \\end{cases}

公钥实现数字签名

  1. **A用自己的解密钥K~dA~对数据M进行签名:S~A~=D(M,K~dA~)**

  2. **如果不需要保密,则A直接将S~A~发送给用户B**

  3. **如果需要保密,则A用B的公开的加密钥K~eB~对S~A~ 加密, 得到密文C,其中C=E(S~A~,k~eB~)**

  4. **最后,A把C发送给B,并将S~A~或C 留底**

  5. **B收到后,若是不保密通信,则用 A的公开加密钥K~eA~对签名进行验证**

E(S_A,K_{eA})=E(D(M,K_{dA}),K_{eA})=M

  1. **若是保密通信,则 B先用自己的保密的解密钥K~dB~对C解密, 然后再用A的公开加密钥K~eA~对签名进行验证**

D(C,K_{dB})=D(E(S_A,K_{eB}),K_{dB})= S_A \\\\ E(S_A,K_{eA})=E(D(M,K_{dA}),K_{eA})= M

  1. **M如果能够恢复出正确的 M,则说明S~A~是A的签名,否则SA不是A的签名**

  2. **B对收到的 C或S~A~留底**

分析

因为只有 A才拥有K~dA~ ,而且由公开的K~eA~在计算上不 能求出保密的解密钥K~dA~ 。因此签名的操作只有A才能进行,任何其他人都不能进行。所以,K~dA~就相当于A的印章或指纹,而SA就是A对M的签名。对此A不能抵赖,任何其他人不能伪造

合理设计明文的数据格式

![image-20230618184645954](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618184645954.png)

![image-20230618184712103](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618184712103.png)

![image-20230618184724145](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618184724145.png)

RSA签名

设 M 为明文 , K~eA~= 是 A 的公开加密钥 , K~dA~=是A的保密的解密钥,则A对M的签名过程是

S_A=D(M,K_{dA})=M\^d(mod\\;n)

S~A~便是签名

验证

M=E(S_A,K_{eA})=(M\^d)\^emod\\;n

盲签名

**需要 某个人对某数据签名,而又不能让他知道数据的内容。称这种签名为盲签名( Blind Signature)**

![image-20230618183034976](C:\Users\WenTe\AppData\Roaming\Typora\typora-user-images\image-20230618183034976.png)

双联签名

双联签名是实现盲签名的一种变通方法。它利用协议和 密码将消息与人关联起来而并不需要知道消息的内容。从 而实现盲签名

双联签名采用单向HASH函数和数字签名技术相结合, 实现盲签名的两个特性

作业

1.为什么数字签名能够确保数据真实性?

因为只有 A才拥有K~dA~,而且由公开的K~eA~在计算上不能求出保密的解密钥K~dA~ 。因此签名的操作只有A才能进行,任何其他人都不能进行。所以,K~dA~就相当于A的印章或指纹,而S~A~就是A对M的签名。对此A不能抵赖,任何其他人不能伪造

2.说明对于RSA的数字签名,为什么先加密后签名不安全?

  1. 容易受到重放攻击。攻击者可以截获密文并重复发送,因为签名是对加密数据的签名,而不是对明文的签名。

  2. 容易受到中间人攻击。攻击者可以截获密文,然后用自己的密钥对密文重新签名,然后将签名后的密文发送给接收者。接收者无法检查签名是否来自合法的发送者,因为签名是对整个消息(包括加密的数据和签名)进行的。

3.说明HASH函数在数字签名中的作用。

​ Hash函数在数字签名中应用的意义是为了增加可识别信息。在数字签名中,对消息进行Hash的作用是将**任意长度的消息压缩成固定长度的消息指纹**。同时提供完整性

4. 盲签名与普通签名有何不同?举出一个盲签名的实例。

盲签名是一种数字签名技术,可以让一个签名者在不知道签名信息内容的情况下,对这个信息进行签名,从而保护用户的隐私

实例:电子商务和电子政务

5. 举出一个双联盲签名的实例

```

双联盲签名是一种密码学协议,用于在保护用户隐私的同时进行数字签名。这里给出一个基于椭圆曲线加密算法(Elliptic Curve Cryptography)实现的双联盲签名示例:

假设有两个参与者Alice和Bob,他们想要对某条消息m进行双联盲签名。

  1. Alice选择一个随机数r1,并计算R = r1 * G,其中G为预定义的生成点。

  2. Bob也选择一个随机数r2,并计算S = r2 * G。

  3. Alice将R发送给Bob,而Bob则将S发送给Alice。

  4. Alice使用自己持有的私钥a来计算T = R + a*H(m),其中H()表示哈希函数应用到消息m上得到结果h。然后她将T返回给Bob。

  5. Bob同样使用自己持有的私钥b来计算U = S + b*H(m)并返回给Alice。

至此,在不泄露彼此信息以及原始消息内容情况下完成了"双"、"联"、"盲"的过程。

最后, 通过以下方式验证该签名:

  • 验证步骤:检查 T ?= U

如果相等,则说明该数字签名有效且匿 名性质满足条件。

```

  • 签名算法利用私钥生成签名,称消息m的签名为sig(m),然后将(m,sig(m))发给接收方

  • 验证算法利用签名者的公钥对sig(m)进行解密,如果解密输出与m一致,则为合法数据。

由于无法识别数字签名与其拷贝之间的差异,所以, 在数字签名前应加上时间戳

消息认证

  • 加密函数

  • 消息认证码MAC

  • 散列函数

散列函数

  • **抗原像攻击(单项):给任意的h,找到H(x)=h在计算上不可行**

  • **抗弱碰撞:给任意的x,找到y!=x 满足H(x)=H(y)在计算上不可行**

  • **抗强碰撞:找到任意的满足H(x)=H(y)的偶对(x,y)在计算上不可行**

应用

  • 消息认证 确保消息没有被修改、插入、删除或重放确保消息发送方声称的身份真实有效

  • 文件完整性校验

  • 数字签名保护消息完整性,验证消息发送方身份

  • 单向口令

  • 入侵检测与病毒检测

  • 区块链

**保障多种安全的方案**

![image-20230618152256779](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618152256779.png)

**只保证完整性的方案**

![image-20230618152515784](https://image-bed-1313520634.cos.ap-beijing.myqcloud.com/image-20230618152515784.png)

MAC

消息认证码(Message Authentication Code, MAC):通信双方需要**共享一个密钥,以K来表示**。同时,需要用于生成消息认证码的函数F。对于消息M,其消息认证码 MAC~M~与M和K相关,可以表示为:

MAC_M=F(M,K)

不管消息的长短,都生成固定大小的数据块

相关推荐
Hacker_LaoYi20 分钟前
网络协议栈学习(一)socket通信实例
网络·网络协议·学习
山兔120 分钟前
16.1、网络安全风险评估过程
网络·安全·web安全
cosgum2 小时前
远程医疗:科技助力健康触手可及
服务器·网络·科技
衣舞晨风2 小时前
内网IP段介绍与汇总
网络·tcp/ip·ipv4·内网·网段
蟾宫曲2 小时前
网络编程 03:端口的定义、分类,端口映射,通过 Java 实现了 IP 和端口的信息获取
java·网络·网络编程·ip·端口
xxjkkjjkj3 小时前
Reactor
服务器·网络
ZachOn1y5 小时前
计算机网络:运输层 —— TCP 的选择确认(SACK)
网络·tcp/ip·计算机网络·可靠传输·sack·选择确认
天天进步20155 小时前
Web应用中的CSRF防护机制
前端·网络·csrf
小林熬夜学编程5 小时前
【Linux网络编程】第十三弹---构建HTTP响应与请求处理系统:从HttpResponse到HttpServer的实战
linux·运维·服务器·c语言·网络·c++·http