Unit 8. Security
安全
终于讲到安全问题了...差点忘了还有这茬了
本单元主要是介绍一下安全网络的几种方式...如何才能保护自己,避免攻击,
扮演中间人,监听重要信息
劫持整个主机,伪装终端主机
组织通信
我们要学习三个原则,保证你在互联网中是安全的
保密性。例如加密编码
完整性。保证数据不会被串改
真实性。
涉及:密码学,数学工具,加密工具
认证码、对称签名
Network Security
网络安全
身边的
垃圾邮件
蠕虫病毒
Main Point
Attacks
Eavesdropping, tampering, suppression
Spoofing, main-in-the-middle
Redirection/hijacking at layers 2, 3, and 4
Denial of service
Principles
Confidentiality
Integrity
Authenticity
Tools
Block ciphers (EBC mode, CBC mode)
Cryptographic hashes: collision resistence
Message authentication codes
Public key encryption/decryption
1. How can communication be compromised
1.1. Eavesdrop
监听
除了监听网络,还能监听一些未被加密的数据包
1.2. Modify, delete, insert
对数据包进行删改
1.3. Routing redirection
直接对路由进行破坏,将双终端都连接到攻击者...
1.4. 解决方案
Secercy/confidentiality
Integrity
Authentication 指纹
Uninterrupted communication 不希望通信中断
2. Attacks
Evaesdropping with and interface in promiscuous mode.
Force packets to be broadcast
Masquerade as DHCP or APR server
2.1. 攻击共享线路的网络
非常容易
2.2. MAC Overflow Attack
攻击路由器的转发表
通过驱逐条目来迫使路由器重新广播学习
借机截获
2.3. DHCP and DNS Masquerade
DHCP和DNS伪装
使得用户机被重新配置
将用户未缓存的新DNS引向攻击者指定的网路
2.4. ARP Masquerade
ARP(地址解析协议)伪装是一种技术,用于在网络中隐藏设备的真实MAC地址,或者在设备故障转移时保持MAC地址不变。简单来说,它就像是给设备的网络身份“戴了个面具”。
2.5. SSH Man in the Middle Attack
SSH中间人攻击是一种攻击手段,攻击者在客户端和服务器之间插入自己,截获并可能修改通信内容。简单来说,攻击者就像是一个“中间人”,在你和服务器之间传递信息,但同时偷偷查看或篡改这些信息。
2.6. TCP Hijacking
TCP劫持是一种攻击手段,攻击者通过篡改或伪造TCP数据包,接管一个已经建立的TCP连接。简单来说,攻击者就像是一个“劫匪”,在你和服务器之间插入自己,然后接管你的会话。
3. Layer 3 Attacks
3.1. Common types of attack at Layer 3
Use ICMP to tell source end-host to redirect traffic
BGP hijacking
More specific prefix
3.2. ICMP Redirect
ICMP(Internet Control Message Protocol,互联网控制消息协议)重定向攻击是一种网络攻击手段,攻击者通过发送伪造的ICMP重定向消息,欺骗目标主机改变其路由表,从而将流量重定向到攻击者指定的路径。
原理
ICMP重定向是网络中的一种正常机制,用于优化网络路径。例如,当一个路由器发现数据包可以通过更短的路径到达目的地时,它会发送一个ICMP重定向消息给发送方,建议其使用新的路径。然而,攻击者可以利用这一机制,发送伪造的ICMP重定向消息,将流量重定向到恶意路径。
过程
伪造ICMP重定向消息:攻击者伪造一个ICMP重定向消息,将目标主机的流量重定向到攻击者控制的设备。2
改变路由表:目标主机收到伪造的ICMP重定向消息后,会更新其路由表,将流量发送到攻击者指定的路径。
中间人攻击:攻击者可以利用重定向的流量进行中间人攻击,截获、篡改或删除数据。
3.3. BGP Attacks
BGP(Border Gateway Protocol,边界网关协议)劫持是一种网络攻击手段,攻击者通过篡改或伪造BGP路由信息,将网络流量重定向到攻击者控制的路径。BGP是互联网中用于自治系统(AS)之间路由信息交换的协议。
原理
利用BGP协议的开放性和信任机制
过程
伪造BGP公告:攻击者伪造一个BGP公告,声称自己是某个IP地址块的所有者。
传播虚假路由:将伪造的BGP公告传播到其他自治系统(AS),使这些系统相信攻击者是目标IP地址块的合法所有者。
重定向流量:其他自治系统根据虚假的BGP公告,将流量重定向到攻击者控制的路径。
中间人攻击:攻击者可以利用重定向的流量进行中间人攻击,截获、篡改或删除数据。
4. Security V - Denial of Service
拒绝服务攻击(Denial of Service,DoS)和分布式拒绝服务攻击(Distributed Denial of Service,DDoS)
4.1. Denial of Service
拒绝服务攻击是一种网络攻击手段,攻击者通过向目标服务器发送大量的虚假请求,让服务器忙得不可开交,无法处理正常的请求。
4.2. Distributed Denial of Service,DDoS
分布式拒绝服务攻击是DoS攻击的一种更高级形式。攻击者不是从一个地方发起攻击,而是从很多不同的地方同时发起攻击,这样更难防御。
4.3. EDNS attack
EDNS是一种扩展DNS协议的技术,它允许DNS消息携带更多的信息,比如更大的响应包、额外的标志位等。EDNS的一个重要功能是支持DNS安全扩展(DNSSEC),它通过数字签名来验证DNS响应的真实性,防止DNS欺骗。
Attack
EDNS攻击是一种利用EDNS机制的漏洞来发起的恶意攻击。攻击者可以利用EDNS的一些特性,比如支持更大的响应包,来进行反射攻击或放大攻击,从而对目标服务器造成拒绝服务(DoS)或分布式拒绝服务(DDoS)攻击。
4.4. SMURF attack
SMURF攻击是一种分布式拒绝服务攻击(DDoS攻击),攻击者通过发送大量的ICMP回显请求(ping包)来淹没目标网络或服务器。这种攻击利用了网络协议的漏洞,让目标设备收到大量的回复,导致网络瘫痪。
4.5. The SYN-bomb attack
SYN炸弹攻击是一种拒绝服务攻击(DoS攻击),攻击者通过发送大量的SYN请求来淹没目标服务器,让服务器无法处理正常的连接请求。这种攻击利用了TCP协议的三步握手过程。
5. Security Principles
Confidentiality、Integrity、Authenticity
5.1. Cryptography
Confidentiality: we can communicate privately (encryption)
Integrity: protect from tampering (hashes signatures, MACs)
Authenticity: you are whom you say you are (certiicates, MACs, signatures)
5.2. Confidentiality
加密:把明文(你能看懂的内容)变成密文(你看不懂的内容),只有知道密钥的人才能解密。
解密:把密文变回明文,需要密钥。
对称加密:密码
非对称加密:公钥、密钥
5.3. Integrity
完整性就是确保信息在传输过程中没有被篡改。想象一下,你寄了一封信,你希望信的内容在到达收信人手里时没有被改过。在网络中,我们用哈希(Hashes)、数字签名(Signatures)和消息认证码(MACs)来保护完整性。
Hashes
把任意长度的数据变成固定长度的摘要(哈希值)。哈希值是唯一的,如果数据被改了,哈希值也会变。
Signatures
用私钥对数据进行签名,别人可以用公钥验证签名。如果数据被改了,签名就不匹配。
MAC
用密钥和数据生成一个认证码,只有知道密钥的人才能生成和验证这个码。
5.4. Authenticity
认证性就是确保信息的来源是真实的。想象一下,你收到一封信,你想确认这封信真的是你朋友写的。在网络中,我们用证书(Certificates)、MACs和数字签名(Signatures)来实现认证性。
6. Confidentiality
just between you and me
6.1. Symmetric Encryption
对称加密
Encrypt: E(K, M) -> C
Decrypt: D(K, C) -> M
6.2. One-Time Pad
一次性密码本是一种加密方法,它使用一个随机生成的密钥(key)来加密信息。这个密钥和要加密的信息(明文)长度相同,并且每个密钥只能使用一次,用完就扔掉,不能重复使用。这就是为什么叫“一次性密码本”。
异或运算
6.3. Two Time Pad
一次性密码本是一种非常安全的加密方法,它使用一个随机生成的密钥(key)来加密信息。这个密钥和要加密的信息(明文)长度相同,并且每个密钥只能使用一次,用完就扔掉,不能重复使用。只要密钥是随机的,并且每个密钥只使用一次,OTP是理论上无法破解的。
Two-Time Pad就是违反了OTP的“一次性”原则,同一个密钥被用来加密两条或更多的信息。这听起来可能没什么大不了的,但实际上,这会导致严重的安全问题。
只需要同时听到了密文 1 2,就能重构...
6.4. Computational Security
计算安全是密码学中的一个重要概念,它关注的是在实际计算能力有限的情况下,密码学方案是否足够安全。
6.5. Ciphers
流加密 Stream ciphers
流加密是一种对称加密方法,它将明文数据和密钥流逐位或逐字节地进行加密。密钥流是一个随机生成的序列,和明文数据一样长。流加密通常使用异或运算(XOR)来加密和解密数据。
Block Cipher: Blowfish
Blowfish是一种对称加密算法,由密码学专家Bruce Schneier在1993年设计。它是一种64位块加密算法,支持可变长度的密钥(从32位到448位)。Blowfish的设计目标是提供一种快速、免费且安全的加密方案,可以替代当时已经过时的DES(数据加密标准)。
Cipher Blcok Chaining (CBC) Mode
是一种块加密的工作模式,它通过将每个明文块与前一个密文块进行XOR操作,然后加密,从而增加加密的安全性。CBC模式使用一个初始化向量(IV),用于加密第一个明文块。
7. Integrity
I'd swear my life on it
7.1. Secrecy Is Not Enough
完整性指的是确保数据在传输或存储过程中没有被篡改或损坏。简单来说,就是确保信息的内容保持原样,没有被偷偷改过。
7.2. Cryptographic Hashes
密码学哈希是一种单向函数,它可以把任意长度的数据变成固定长度的摘要(哈希值)。这个哈希值是唯一的,如果数据被改了,哈希值也会变。简单来说,哈希函数就像一个“数据指纹”,可以用来检测数据是否被篡改。
检测数据完整性:通过比较哈希值,可以检测数据是否被篡改。
存储密码:网站不会直接存储你的密码,而是存储密码的哈希值。即使数据库被泄露,攻击者也很难反推出原始密码。
MD5:曾经非常流行的哈希函数,但现在已经不安全了,因为容易找到碰撞。
SHA-1:比MD5更安全,但也有被破解的风险,现在也不太推荐使用。
SHA-256:非常安全的哈希函数,广泛用于各种安全应用,比如比特币。
7.3. Message Authenticaton Codes (MACs)
消息认证码是一种加密技术,用密钥和数据生成一个认证码,只有知道密钥的人才能生成和验证这个码。简单来说,MAC就像一个“带锁的数据指纹”,可以用来验证数据的完整性和来源的真实性。
生成MAC:发送方用密钥和数据生成一个MAC,然后把数据和MAC一起发送给接收方。
验证MAC:接收方收到数据和MAC后,用同样的密钥和数据生成一个MAC,然后比较两个MAC是否一致。如果一致,说明数据没有被篡改,且来源是真实的。
HMAC(基于哈希函数的MAC):使用哈希函数(如SHA-256)和密钥生成MAC,非常安全。
CMAC(基于块加密的MAC):使用块加密算法(如AES)生成MAC,也很好用。
7.4. 区别
哈希函数无密钥,主要用于检测完整性
MAC需要密钥,可以验证完整性和来源。
8. Public Key Cryptography
公钥密码学
8.1. Confidentiality
公钥公开:公钥可以公开分发,任何人都可以用它来加密数据。
私钥保密:私钥必须保密,只有接收方才有。即使攻击者拿到了加密的数据,没有私钥也无法解密。
8.2. Integrity: Signatures
8.3. Popular Public Key Algorithm
RSA(Rivest-Shamir-Adleman):最常用的公钥密码学算法之一,广泛用于互联网安全。
ECC(Elliptic Curve Cryptography):基于椭圆曲线数学的加密算法,比RSA更高效,适合移动设备。
8.4. RSA Example
概念上非常简单。
选择两个质数,计算出 K 和 K逆
...
8.5. The Catch
8.6. Hybrid Schemes
9. Certificates
Establishing a chain of trust
数字证书(Certificates)和信任链(Chain of Trust)
9.1. Certificates
数字证书就像是网络世界中的“身份证”。它由一个可信的第三方机构(证书颁发机构,CA)颁发,用来证明某个网站、组织或个人的身份。数字证书包含以下信息:
颁发者:证书颁发机构(CA)的名字。
持有者:证书所有者的身份信息,比如网站的域名或公司的名称。
公钥:用于加密和验证数据的公钥。
有效期:证书的有效时间范围。
数字签名:CA对证书内容的签名,确保证书内容未被篡改。
9.2. CA 证书颁发机构
负责颁发和管理数字证书。CA的作用是验证申请者的身份,并为其颁发数字证书。CA的可信度决定了证书的可信度。
9.3. Chain of Trust
信任链是一个层次结构,用来确保数字证书的可信度。它从根证书(Root Certificate)开始,通过中间证书(Intermediate Certificates)连接到最终的服务器证书(Server Certificate)。
原理
根证书(Root Certificate):根证书是信任链的最顶层,由CA自己签发。根证书通常预装在浏览器和操作系统的证书存储中,被认为是可信的。
中间证书(Intermediate Certificates):中间证书由根证书签发,用于签发更多的证书。中间证书的作用是分发信任,减少根证书的直接使用,提高安全性。
服务器证书(Server Certificate):服务器证书是最终的证书,用于保护网站或服务器的安全通信。
步骤
当你的浏览器访问一个使用HTTPS的网站时,浏览器会检查网站的数字证书,确保其可信度。具体步骤如下:
验证证书:浏览器检查网站的数字证书是否被中间证书签发,中间证书是否被根证书签发。
检查根证书:浏览器检查根证书是否预装在自己的证书存储中,确保根证书是可信的。
检查证书的有效性:浏览器检查证书是否在有效期内,是否被吊销。
建立信任:如果所有检查都通过,浏览器认为证书是可信的,建立安全连接。
9.4. Booststrapping Trust
10. Transport Layer Security (TLS)
传输层安全协议
10.1. TLS Cipher Negotiation
在互联网上,当你访问一个网站(比如用浏览器打开一个网页)时,你的电脑和网站的服务器也需要先商量好用什么“密码”来保护你们之间传输的信息。这个过程就叫“密码套件协商”
10.2. TLS Message Format
记录层(Record Layer)
内容类型(Content Type)
协议版本(Protocol Version)
长度(Length)
负载(Payload)
负载内容(Payload)
握手消息(Handshake Messages)
应用数据(Application Data)
警报消息(Alert Messages)
10.3. Establishing Session Keys
建立会话密钥
保护隐私:每次通信都用新的密钥,即使有人截获了数据,也很难破解。
提高效率:对称加密(用同一个密钥加密和解密)速度很快,适合大量数据的加密。
10.4. Session Key Details
会话密钥就好比是一次性密码,每次通信都会生成一个新的密钥,用来加密和解密数据。它就像你和朋友聊天时用的“秘密暗号”,只有你们俩知道。
生成过程
客户端和服务器打招呼(Hello)
交换“原材料”(密钥交换)
生成会话密钥
生命周期
生成:在 TLS 握手过程中生成。
使用:在整个会话期间用于加密和解密数据。
销毁:会话结束后,会话密钥会被丢弃,下次通信时会重新生成新的会话密钥。
10.5. The Costs of Layering
分层带来的成本
计算成本
时间成本
管理成本
Last updated