title: 《网络协议》05. 网络通信安全 · 密码技术
date: 2022-09-10 15:16:15
updated: 2023-11-12 07:03:52
categories: 学习记录:网络协议
excerpt: 网络通信安全(ARP 欺骗,DoS & DDoS,SYN 洪水攻击,LAND 攻击,DNS 劫持,HTTP 劫持)、密码技术(单向散列函数,对称加密,非对称加密,混合密码系统)、数字签名、证书。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png
网络协议从入门到底层原理。
网络通信中面临的 4 种安全威胁:
ARP 欺骗(ARP spoofing),又称 ARP 毒化(ARP poisoning)、ARP 病毒、ARP 攻击。
属于网络层攻击。
核心步骤举例:
防护:
静态ARP
DHCP Snooping
网络设备可借由 DHCP 保留网络上各电脑的 MAC 地址,在伪造的 ARP 数据包发出时即可侦测到
利用一些软件监听 ARP 的不正常变动
…
DoS 攻击(拒绝服务攻击,Denial-of-Service attack)
DDoS攻击(分布式拒绝服务攻击,Distributed Denial-of-Service attack)
DoS 攻击可以分为 2 大类:
防御方式通常为:入侵检测、流量过滤、多重验证
防火墙
交换机
路由器
黑洞引导
流量清洗
SYN 洪水攻击(SYN flooding attack),攻击者发送一系列的 SYN 请求到目标,然后让目标因收不到 ACK(第 3 次握手)而进行等待,消耗资源。
属于传输层攻击。
攻击方法:
防护参考:RFC 4987
LAND 攻击(局域网拒绝服务攻击,Local Area Network Denial attack),通过持续发送相同源地址和目标地址的欺骗数据包,使目标试图与自己建立连接,消耗系统资源直至崩溃。
属于传输层攻击。
有些系统存在设计上的缺陷,允许设备接受并响应来自网络、却宣称来自于设备自身的数据包,导致循环应答。
防护:
DNS劫持,又称为域名劫持
属于应用层攻击。
为防止 DNS 劫持,可以考虑使用更靠谱的 DNS 服务器,比如:
114.114.114.114
(https://www.114dns.com/)8.8.8.8
、8.8.4.4
4.2.2.1
、4.2.2.2
180.76.76.76
223.5.5.5
、223.6.6.6
HTTP 劫持:对 HTTP 数据包进行拦截处理,比如插入 JS 代码。
属于应用层攻击。
比如访问某些网站时,在右下角多了个莫名其妙的弹窗广告。
单向散列函数(One-way hash function),可以根据根据消息内容计算出散列值。
单向散列函数,也被称为:
消息摘要函数(message digest function)
哈希函数(hash function)
散列值的长度和消息的长度无关,无论消息是多少,散列函数都会计算出固定长度的散列值。
输出的散列值,也被称为:
消息摘要(message digest)
指纹(fingerprint)
单向散列函数特点
应用单向散列函数来防止数据被篡改:
现在数据库不会直接存储密码明文,存储的都是加密过后的值。
MD5 加密
https://www.cmd5.com/hash.aspx
MD5 解密
https://www.cmd5.com/
其他加密
https://www.sojson.com/encrypt_des.html
https://tool.chinaz.com/tools/md5.aspx
对称加密(Symmetric Cryptography)中,加密、解密使用同一个密钥。
也称为对称密码。
常见的对称加密算法:
DES(Data Encryption Standard)是一种将 64 bit 明文加密成 64 bit 密文的对称加密算法,密钥长度是 56 bit。
3DES(Triple Data Encryption Algorithm),将 DES 重复 3 次所得到的一种密码算法,也叫做 3 重 DES。
Encryption -> Encryption -> Encryption
)Encryption -> Decryption -> Encryption
或 Dncryption -> Eecryption -> Dncryption
目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题。
加解密过程:
如果所有密钥都使用同一个,则结果与普通的 DES 是等价的。
AES(Advanced Encryption Standard),取代 DES 成为对称加密算法的新标准,又称 Rijndeal 加密法。
AES 的密钥长度有 128、192、256 bit 三种。
目前 AES 已经逐步取代 DES、3DES ,成为首选的对称加密算法。
它经过了全世界密码学家进行的高品质验证工作。
一般来说,我们不应该去使用任何自制的密码算法,而是使用 AES。
在使用对称加密时,一定会遇到密钥配送问题。
解决方法:
非对称加密(Asymmetric Cryptography)中,密钥分为公钥、私钥,它们并不相同。
也称为公钥密码(Public-key Cryptography)。
公钥和私钥是对应的,不能单独生成。一对公钥和私钥统称为密钥对(key pair)
非对称加密基于一些数学难题,例如大素数分解或椭圆曲线离散对数问题。
关于非对称加密的原理,这个 up 主的视频讲解的浅显易懂:
《小学生都懂的 RSA 加密算法原理》:
https://www.bilibili.com/video/BV1gf4y1r75B/
目前使用最广泛的非对称加密算法是 RSA。
RSA 的名字由它的 3 位开发者,Ron Rivest、Adi Shamir、Leonard Adleman 的姓氏首字母组成。
非对称加密的加解密速度比对称加密要慢。
对称加密的缺点:
非对称加密的缺点:
混合密码系统(Hybrid Cryptosystem):将对称加密和非对称加密的优势相结合。
会话密钥(session key)
加密步骤(发送消息)
发送出去的内容包括:
解密步骤(收到消息)
假设 Alice 要发消息给 Bob。
发送过程(加密过程):
接收过程(解密过程):
7. Bob 利用自己的私钥解密会话密钥(使用非对称加密)
8. Bob 利用会话密钥解密发送过来的消息(使用对称加密)
Alice 发的内容有可能是被篡改的,或者有人伪装成 Alice 发消息,或者就是 Alice 发的,但她否认发过此消息。
那么,Bob 如何确定这段消息的真实性?如何识别篡改、伪装、否认?
解决方案:数字签名。
在数字签名技术中,有以下 2 种行为:
如何保证这个签名是消息发送者自己签的?
如果有人篡改了消息内容或签名内容,会是什么结果?
数字签名能不能保证机密性?
数字签名的作用?
数字签名,其实就是将非对称加密反过来使用。
如果遭遇了中间人攻击,那么公钥将可能是伪造的。
如何验证公钥的合法性?
说到证书,首先联想到的是驾驶证、毕业证、英语四六级证等等,都是由权威机构认证的。
密码学中的证书(Certificate),全称叫公钥证书(Public-key Certificate,PKC)。
CA 就是能够认定 “公钥确实属于此人” 并能够生成数字签名的个人或者组织
有国际性组织、政府设立的组织。
有通过提供认证服务来盈利的企业。
个人也可以成立认证机构。
各大 CA 的公钥,已经默认内置在浏览器和操作系统中。
但见泪痕湿,不知心恨谁。
——《怨情》(唐)李白