互联网计算复习---t老师部分
理解的要求>了解,掌握=需要会计算/推导
传输层
比如说传输层,大家回顾一下的话,首先要知道它的应用层,在TCP/IP协议里也好,OSI模型里面也好,要有个基本的认知,还有它们之间的关系。在这里面其实传输层很关键的一点就是它是一个端到端的协议,核心内容不仅是主机之间的通讯,而是应用之间的问题。一台机器里可能有多个应用在运行,依据什么来区分,这很关键。就是要考虑五元组,源地址和目地址这四个元素,怎么来做多路分解,怎么来做多路复用。
另外,要能够理解一些用词,理解的要求比较高一些,了解的可能就比较浅一些,掌握的话就是要会算、会推。什么是有状态?什么是无状态?这在传输层而言是需要明确的。还有我们现在介绍的TCP协议和UDP协议,哪个是有状态的协议,以及它们有什么优缺点,这些也要有一些认知。
接着最简单的协议是UDP协议,可以把它考虑成一个简单的协议,所以它的整个字段也非常简单。但基本上要了解这个协议基本的一些流程和概念,它依照哪些字段实现,其实就是前面参考的多路分解和复用的过程。需要理解的是它有什么优缺点,如果它都是缺点的话,就没必要用了,它必然是有优点的,在对效率追求比较高,但是对于传输可靠性要求没那么高的时候可以用UDP协议。理解它优缺点的时候,要找一个方法去对比,可以把它和TCP协议放在一起对比理解。
然后传输层里面,我们花了很多时间去讲可靠传输是怎么样的。可靠数据传输虽然前面是以抽象的方式讲的协议,但是里面用到的技术其实基本都在TCP协议里用到了。比如TCP协议里丢了一个包,怎么进行重传。可能会有丢包、错误的数据产生,比如网络传输过程中有些比特翻转,校验不通过。还有数据报丢失,有可能是传的包丢了,也可能是ACK丢了,在这种情况下,会分别出现什么样的问题,怎么进行重传。更进一步的,如果你能够对可靠传输里面状态的变换以及是什么原因导致的有更深刻的理解,当然是最好的。基本的比如传的时候丢了包,或者ACK丢了,下面会有什么样的操作,应该重发什么,ACK发的是什么,这些基本都要掌握。
然后在这里面,和TCP协议比较相关的三次握手过程,大家应该着重去理解。因为三次握手分别的作用是什么,三次握手里面传了SYN、ACK、Sequence number之类的这些东西,每一次握手,它们之间的数据包的Sequence number编号的关系是怎么样的,要能够去推导。各个字段在第一个包、第二个包之间是什么关系。比如第一次握手的包丢了,或者ACK丢了,该怎么办。这里面大家可以自己去模拟一些情景,然后去试试推导。
接着我们在可靠传输里面虽然讲的是数据编号的第0个数据包、第一个数据包这样传来传去,但是在实际的传输过程中,数据包编号可能不是简单的0和1,可能是一个比较大的数,在这种情况下编码,和前面讲的没区别,只不过是当前的包和下一个包的偏移,需要知道编码偏移。这里面需要大家掌握的是结合可靠数据传输理解这种关系,最简单的一个数据传输方式就是发一个数据报过去,只有等到它的ACK再传下一个,这是前面说的比较低效的一种方式。在这部分要能够掌握分析相关的形成的一些分析能力,比如序号传输的一些处理方式。
初步了解网络流量控制的概念,因为这个在往年是没讲,今年新加进来的内容,难度上也会比较难,所以这一块大家有一些基本的认知就行。比如至少知道滑动窗口为什么就比停止等待协议好。但是具体的滑动窗口相关的策略,比如Selective repeat这些策略,有一个基本的了解就行。另外关于流量控制、拥塞控制的这些概念,其实我们没有特别展开去讲,所以能够掌握一些基本概念性的问题就可以,对这一块不做特别高的要求。
前面讲的这些一定要多去掌握它的规律,只去背这些概念就白学了,没什么意义。未来如果想考研或者去面试,说学过计算机网络,别人一问操作系统传输的一些内容都不会,也挺丢人的。还是要有一些基本的掌握,这里其实在讲UDP协议的时候也讲过UDP和TCP协议之间的区别,比如有状态与否,以及它们适用的场景。我们讲的场景都比较局限,大家完全可以扩展出去,了解一下它们适用的协议场景是什么。就我讲的这几块内容而言,传输层是最核心的一块。
基本认知:在第几层?和其他层的关系是什么?
作为端到端的一层,(源地址,源端口,目的地址,目的端口)
应用层
应用层主要是先定位一下它在整个OSI模型里面的位置。然后是HTTP里面一些基本概念,比如什么是URL,这是必须要会的。还有HTTP里面request和response谁发给谁的,具体协议怎么实现我们没讲,所以不需要掌握。大家可以看到,这里基本上都是一些了解层面的内容,了解它的概念、一些基本作用、定位是什么、应用场景是什么就足够了。应用层在整个Web应用里面是很关键的一个要素,虽然它很简单,就是一段数据,但是它还有很关键的作用,提供了很多功能上的支持,大家也去基本了解一下,对于后面无论做Web开发,还是作为背景知识的支撑都有帮助。不一定说这个肯定会考,但是从学习目标上来说,应用层还要去了解相关知识。越往上的层,涉及到的协议越多样,功能越分散,比如email、video streaming都不会作为重点。这里面有一个比较关键的是DNS,因为它是Web或HTTP应用,或者很多其他应用的一个比较基础性的系统,所以DNS的概念,包括它的一些技术需要了解。
了解应用层在OSI、TCP/IP模型中的位置
OSI:会话层、表示层、应用层
TCP/IP:应用层
了解Web和HTTP中的基本概念
URL:统一资源定位符
- URL 相当于一个文件名在网络范围的扩展。因此 URL 是与因特网相连的机器上的任何可访问对象的一个指针。
<URL 的访问方式>://<主机>:<端口>/<路径>,如https://www.example.com:8080/docs/index.html
HTTP
- HTTP 是面向事务的客户服务器协议。
- HTTP 1.0 协议是无状态的(stateless)。
- 每一次请求是独立的,不记录上一次请求信息。
- Cookie 是征求同意的存储(维持登录状态),可以保证在多个应用之间维持登录状态。
- HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务(80端口)。
- 万维网浏览器就是一个 HTTP 客户,而在万维网服务器等待 HTTP 请求的进程常称为 HTTP daemon, 有的文献将它缩写为 HTTPD。
- HTTP daemon 在收到 HTTP 客户的请求后,把所需的文件返回给 HTTP 客户。
HTTP请求报文:
- 报文由三个部分组成,即开始行、首部行和实体主体。
- 在请求报文中,开始行就是请求行。
- 请求报文和应答报文的应答结构都是一样的
- 应答码:
- 2xx:成功
- 3xx:重定向
- 4xx:错误
- 5xx:服务器内部错误,而不是客户端请求的错误
HTML
- 定义了许多用于排版的命令(标签)。
- HTML 文档是一种可以用任何文本编辑器创建的 ASCII 码文件。
- 仅当 HTML 文档是以.html 或.htm 为后缀时,浏览器才对此文档的各种标签进行解释。
- 当浏览器从服务器读取 HTML 文档,针对 HTML 文档中的各种标签,根据浏览器所使用的显示器的尺寸和分辨率大小,重新进行排版并恢复出所读取的页面。
- HTML 用一对标签(一个开始标签和一个结束标签)或几对标签来标识一个元素。
FTP和TFTP
FTP 服务器的主进程负责监听连接请求,并为每个客户派生一个从进程。每个客户与其对应的从进程建立控制连接,主进程本身不直接参与具体的 FTP 会话。
- FTP 是一种可靠的,面向连接的服务,它使用 TCP 传输文件。
- FTP 首先在客户端和服务器(端口 21)之间建立控制连接
- 然后,建立第二个连接,这是计算机之间通过其传输数据的链接。(端口 20)
- TFTP 是使用 UDP 的无连接服务(简化的 FTP)
- 体积小,易于实施。更加方便
- 例如。 TFTP 在路由器上用于传输配置文件和 Cisco IOS 映像
- 不支持交互,没有目录浏览功能
主进程工作步骤
- 打开熟知端口(端口号为 21),使客户进程能够连接上。(可以修改熟知端口)
- 等待客户进程发出连接请求。
- 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
- 控制连接
- 数据连接:数据通信
- 需要建立上面两个连接才能完成传输
- 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
Telnet协议
Telnet 客户端软件提供了登录到运行 Telnet 服务器应用程序的远程 Internet 主机,然后从命令行执行命令的功能。
SMTP和POP
电子邮件服务器使用 SMTP 发送和 POP 接收邮件相互通信。
- SMTP(Simple Mail Transfer Protocol) SMTP(简单邮件传输协议)邮件发送,登录发送等操作
- POP3(Post Office Protocol version 3) 邮件接收,邮件到达邮件服务端,由客户端和服务端联系接收邮件。
| 应用层协议 | 传输层协议 | 默认端口号 |
|---|---|---|
| SMTP | TCP | 25 |
| POP3 | TCP | 110 |
发送者先登录到服务器,通过服务器根据 SMTP 传输到对应的服务器,然后用户登录后通过 POP3 协议收邮件到本地。
MIME 增加 5 个新的邮件首部
- MIME-Version: 标志 MIME 的版本。现在的版本号是 1.0。若无此行,则为英文文本。
- Content-Description: 这是可读字符串,说明此邮件主体是否是图像、音频或视频。
- Content-Id: 邮件的惟一标识符。
- Content-Transfer-Encoding: 在传送时邮件的主体是如何编码的。
- Content-Type:说明邮件主体的数据类型和子类型。
- MIME 标准扩充了 SMTP 标准
- 很多的文件(附件)并不是 ASCII 码的,我们需要用 MIME 将对应的文件进行转换(扩充)。过程如上图
SNMP 简单网络管理协议
- 简单网络管理协议(SNMP)是一种应用程序层协议,可简化网络设备之间的管理信息交换。
- NMS(Network Management System):网管,通过下发请求对上网的所有的主机关于流量等等信息进行管理(监控)
- 通过管理数据库(MIB)进行信息交流
- 使用 UDP 通过广播进行实现。SNMP 使用 UDP 的 161 端口(管理)和 162 端口(告警)。
了解Cookie的基本作用
为什么需要 Cookie?
HTTP 的根本问题:无状态(stateless)
HTTP 协议的特点之一是:Server 不保存任何关于客户端过去请求的信息;但 Web 应用是“有状态的”,于是矛盾就出现了
核心作用:Cookie 是服务器用来在多个 HTTP 请求之间维持客户端状态的一种机制,即:Cookie 是一小段由服务器创建、保存在浏览器中、并在后续请求中自动发送回服务器的状态信息。
Cookie 的基本工作机制
第一次访问(服务器“发 Cookie”)
1
2
HTTP/1.1 200 OK
Set-Cookie: sessionID=1678
- 服务器:
- 创建一个 唯一标识(session ID)
- 通过
Set-Cookie发送给浏览器 - 第一次发送的是完整的cookie:
Name=Value; Domain=...; Path=...; Expires=...; Secure; HttpOnly
- 浏览器:
- 把 cookie 存起来(cookie jar)
后续访问(浏览器“带 Cookie”)
1
2
GET /index.html HTTP/1.1
Cookie: sessionID=1678
- 浏览器 自动 把 cookie 附在请求里
- 服务器:
- 通过
1678找到服务器端的状态 - “哦,是你,上次那个用户”
- 通过
Cookie 在客户端存值,真正的状态通常存在服务器
通常情况下,客户端只保存并回传 Cookie 的 value(如 session ID),而真正的用户状态信息存储在服务器端,服务器通过该 value 查询并恢复对应的会话状态。
1
2
3
4
5
6
SessionTable:
1678 → {
user: alice,
role: student,
cart: [book, pen]
}
Cookie 通过在客户端和服务器之间反复携带 session 标识,使得无状态的 HTTP 能够支持有状态的 Web 应用。
Cookie ≠ Session
| 对比 | Cookie | Session |
|---|---|---|
| 存储位置 | 客户端(浏览器) | 服务器 |
| 是否自动发送 | ✅ | ❌ |
| 常见关系 | 存 session ID | 存真实状态 |
Cookie 通常用于保存 session 的标识,而 session 本身保存在服务器端。
Cookie 是 HTTP 中用于在客户端与服务器之间维持状态的机制。服务器通过 Set-Cookie 让浏览器保存状态信息,浏览器在后续请求中自动携带 Cookie,使得无状态的 HTTP 能支持有状态的 Web 应用。Cookie 由 name-value 对及 Expires、Domain、Path、Secure、HttpOnly 等属性组成,广泛用于认证、会话管理和个性化服务,但第三方持久 Cookie 也带来了隐私问题。
了解DNS的基本概念和作用
DNS(Domain Name System),域名系统,是网络上的服务,该服务管理域名并响应客户端将域名转换为关联 IP 地址的请求。
本质上是一个命名系统!
早期用IP地址以及Host文件进行访问—太低效!
域名
- 使用圆点
.将字符串进行分隔开,字符串不应该太长 - 越靠后域名级别越高
- www 就是对应到主机群
全球顶级域名TLD Top Level Domain
- nTLD 国家顶级域名
- gTLD 通用顶级域名
- infrastructure domain 基础结构域名:arpa,又称反向域名,用于反向域名解析
我国把二级域名分为类别域名和行政区域名
递归查询:靠别人—本地
迭代查询:靠自己—根
根域名服务器:是最高层次的域名服务器,它知道所有的顶级域名服务器的域名和IP地址—采用任播(anycast)技术
1
2
“我不知道 www.example.com
但我知道 .com 顶级域名服务器在哪”
顶级域名服务器
1
2
“我不知道具体 IP
但我知道 example.com 的权威服务器在哪”
权限域名服务器:
1
www.example.com → 93.184.216.34
本地域名服务器:当一台主机发出DNS查询请求时,这个查询请求报文会发送给本地域名服务器
使用UDP,53号端口
域名服务器广泛地使用高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录
网络安全
第三部分是网络安全这一块。网络安全我们没有讲得特别深入,基本上还是把很多工具抽象出来,从应用的角度去看待问题。这里面最基本的,要知道confidentiality(机密性)、integrity(完整性)、availability(可用性)这三个目标的含义是什么。比如让你去辨析某个情况下要保证的是什么特定属性,要能够分辨出来、分析出来。或者给定场景,要想想这种情况下主要是哪一种特性。比如做安全需求分析,老板让你说需要用什么工具,明确了需要保证完整性和机密性的话,应该怎么去选取一些工具。
还要了解一些常见的攻击行为,或者这些对应的攻击名词和含义是什么,比如什么叫中间人攻击、窃听等。在具体设计上,要基本了解,因为一旦出现这些词,要知道对应的攻击行为是什么。对于加密工具,基本术语总得知道,比如什么叫加密、解密、密钥、对称密钥、非对称密钥、公钥、私钥,以及到底是谁拿公钥,谁拿私钥。
接着我们主要讲的是对于机密性和完整性的保护,从这两个属性出发。建议复习的时候,或者自己梳理这块知识的时候,从这两个目标去出发。比如要去保护完整性,有哪些工具可以用,比如备份加加密的方法。加密方法虽然没去介绍具体的算法,但要知道有些算法比如AES。还有一个小小的扩展,要加密一个特别长的消息的时候,怎么把它分成块,用什么样的模式去做,未来工作或设计里,要知道去选取合适的工具来用。
从完整性的角度出发,有很多相关知识。首先要区分网络传输中的错误和安全中的伪造信息,网络传输中是随机的扰动或错误,而安全里面是有人故意伪造信息,这是一个巨大的区别。要理解哈希以及消息认证码的作用和它们的区别是什么。在哈希里面,不对大家做太高的要求,但要知道什么叫单向性、原像抗性、抗碰撞性这些基本概念。
在消息认证码方面,用它来保护信息的时候,要知道它的作用,以及它是结合哪一种密码学的工具来实现的,是不是用对称加密的方法来实现的。所以在消息验证码里面,有一个前提条件,双方要掌握一个共享的密钥。同时,可以把它和数字签名放在一起对比,了解它们的优劣、使用场景以及在执行过程中的区别是什么。
讲到数字签名,比较容易混淆的是利用公钥、私钥进行加密解密的过程和签名与验证的过程是两个正好相反的过程。这一块要去理解,而不是去记,记很快就会记混。如果不容易理解,就画两张图去推理一下,很容易就能推出来。从作用角度理解,签名的作用是告诉别人这个东西是我发布的,别人不可以伪造,所以自然而然要用私钥来签名,如果用公钥的话,谁都能签,就失去了签名的意义。还有加密和验证的区别,加密需要有一个解密的过程,把原始的东西恢复出来,所以在这个过程中不能够对原始的明文做不可逆的处理。而验证的时候,用哈希处理后再验证也不影响,因为并不需要恢复原来的内容,只要按照流程验证它是否正确就行。
关于网络安全的核心部分,还有安全工具这一块,后面两个基本了解一下就行。尤其我们讲的证书,加一个初步限定词的话,意味着可以更基础地了解一下。对于防火墙的概念,当时做了一个实验,有基本认知即可。今年也没展开太多内容,对于入侵检测系统,对它有个基本了解,知道是什么东西就行。
网络安全的基本概念
理解CIA三种安全目标的含义
confidentiality(机密性):不让无关的人看到信息
主要通过加密实现—对称?非对称?
HTTPS connections
- 网站和浏览器之间的通信通过 TLS/SSL 加密
- 确保用户的登录信息、支付信息等不会被窃听
VPN tunnels(虚拟专用网络)
- 在公共网络上建立“加密隧道”
- 所有通过 VPN 的流量都被加密
- 确保远程办公、访问企业内部系统安全
integrity(完整性):不被篡改,或篡改能被发现
Integrity: data cannot be altered undetectably
Authenticity: data comes from the claimed sender
1. MACs(Message Authentication Codes,消息认证码)
2. Digital Signatures(数字签名)
为什么需要这些工具?
—软件更新:攻击者可能篡改更新包,植入恶意代码
—配置文件:配置文件被改动可能造成严重安全后果
availability(可用性):系统和服务随时可用
可用性攻击本质上是让系统“瘫痪”或者“服务拒绝”,防御方法主要是通过限制、隔离、冗余和清洗流量来保证系统在攻击下仍能正常运作。
无论面对正常负载还是攻击,系统都应该能够继续为合法用户提供服务,不被中断。
几种会破坏可用性的攻击手段:
- Network / link flooding (DoS / DDoS)
- DoS(Denial of Service,拒绝服务攻击):攻击者向目标系统发送大量请求,使其无法处理正常用户请求。
- DDoS(Distributed DoS,分布式拒绝服务攻击):攻击来自多个分布式的计算机/僵尸网络,更难防御。
- 本质:耗尽网络带宽或服务器资源,使系统不可用。
- Resource exhaustion (CPU, memory, connections)
- 攻击直接消耗系统的关键资源,比如:
- CPU 占用 100%,无法处理其他请求
- 内存耗尽导致程序崩溃
- 打开大量连接占满系统的连接数上限
- 效果:系统性能急剧下降甚至宕机。
- 攻击直接消耗系统的关键资源,比如:
- Targeted disruption of key services (DNS, routing)
- 攻击针对关键服务,比如:
- DNS 攻击:篡改或阻塞域名解析,使用户无法访问网站
- Routing 攻击:干扰路由器或路由协议,使网络不可达
- 效果:即使服务器本身可用,用户也无法访问。
- 攻击针对关键服务,比如:
防御措施(Defense)
为了保持可用性,可以采用以下策略:
- Rate limiting(速率限制)
- 控制单个用户或IP单位时间内的请求数,防止洪水攻击。
- Redundancy(冗余)
- 关键系统和服务部署多个实例或数据中心,即使部分节点被攻击或宕机,整体服务仍可用。
- Filtering(过滤)
- 使用防火墙或入侵防御系统,阻挡恶意流量。
- Traffic scrubbing(流量清洗)
- 将进入的流量通过清洗中心,去掉异常/恶意流量,只允许合法流量进入核心网络。
了解常见攻击行为
- Passive: eavesdropping(窃听), traffic analysis(流量分析)
- Active:
- Message modification / injection(消息篡改 / 注入)
- Replay attacks(重放攻击)
- Man-in-the-middle (MITM)(中间人攻击)
- Denial of Service (DoS/DDoS)(拒绝服务攻击 / 分布式拒绝服务攻击)
被动攻击:截获信息的攻击称为被动攻击(并不改变通讯的过程)。在被动攻击中,攻击者只是观察和分析某一个协议数据单元 PDU 而不干扰信息流。
主动攻击:更改信息和拒绝用户使用资源的攻击称为主动攻击(修改了通信的构成),主动攻击是指攻击者对某个连接中通过的 PDU 进行各种处理
Eavesdropping & Packet Sniffing(窃听与数据包嗅探)
窃听与数据包嗅探是攻击者在网络中“偷偷看数据包”的被动攻击, 不加密会泄露内容,加密不当仍可能泄露行为特征, 因此需要 加密通信 + 控制元数据暴露 才能有效防御。
攻击者在共享介质或路由器上捕获数据包
- Credentials sent in clear
- Sensitive message contents
- Metadata (who talks to whom, when, how often)
防御手段:加密 + 减少敏感元数据
Spoofing, Hijacking, and Replay(欺骗、劫持与重放)
Spoofing、Hijacking 和 Replay 都属于主动攻击, 它们要么伪造身份、要么接管会话、要么重复利用合法消息,必须通过 强认证 + 新鲜性保证(Nonce/序列号)+ 完整性保护(MAC/签名) 才能有效防御。
IP 欺骗:在数据包中伪造源地址
- 攻击者伪造数据包的 源 IP 地址
- 接收方误以为数据来自“可信主机”
- 问题本质:
- IP 协议本身不验证源地址真实性
会话劫持:接管已经建立的连接
- 攻击者获取合法用户的:
- Session ID
- Cookie
- TCP 序列号
- 然后冒充该用户继续通信
重放攻击:捕获合法消息并在之后再次发送
- 攻击者:
- 监听并保存一条合法、正确的消息
- 在合适的时间原封不动重新发送
- 消息本身是合法的,但发送时间和语境是非法的
密码学防御手段:
Strong authentication 强身份认证
Nonces / sequence numbers 随机数/ 序列号
MACs or signatures over data 对数据计算 MAC 或数字签名
加密工具
了解基本密码学术语
明文(Plaintext):原始消息
- 加密前的数据
- 人或程序可以直接理解的内容
密文(Ciphertext):加密后的消息
- 对明文进行加密后得到的数据
- 对攻击者来说应当是不可读、无意义的
特点:
- 看起来像随机比特串
- 无法直接还原出原始内容
密钥(Key):控制加密算法的秘密参数
- 加密算法本身通常是公开的
- 安全性依赖于密钥的保密
关键思想(Kerckhoffs 原则):
系统的安全性不应依赖算法的保密,而应依赖密钥的保密
加密(Encryption):明文 → 密文
- 使用:
- 加密算法
- 密钥
- 将可读的明文转换为不可读的密文
解密(Decryption):密文 → 明文
- 使用:
- 正确的密钥
- 相应的解密算法
- 将密文恢复为原始明文
明文通过加密算法和密钥变成密文, 密文只有在拥有正确密钥的情况下才能被解密还原成明文。
掌握如何利用加密工具保护数据机密性
理解对称加密和公钥加密的区别
一、对称加密(Symmetric Encryption)
- 加密密钥 = 解密密钥
- 通信双方共享同一个秘密密钥
1
2
明文 + 密钥 ——加密——> 密文
密文 + 同一密钥 ——解密——> 明文
优点
速度快
- 计算开销小
- 适合加密大量数据(文件、视频、网络流量)
实现高效
- 硬件 / 软件都易优化
缺点
密钥分发问题
- 通信前必须安全地共享密钥
- 如果被窃取,通信完全失效
扩展性差
- N 个用户需要约 N² 个密钥
二、非对称加密(Asymmetric / Public-Key Encryption)
- 使用 一对密钥:
- 公钥(Public Key):公开
- 私钥(Private Key):保密
- 公钥加密,私钥解密
1
2
明文 + 公钥 ——加密——> 密文
密文 + 私钥 ——解密——> 明文
优点:
解决密钥分发问题
- 不需要提前共享秘密
- 公钥可以公开发布
支持身份认证与签名
- 非对称体系是数字签名的基础
缺点:
速度慢
- 计算成本高
- 不适合加密大量数据
依赖基础设施
- 需要 PKI / 证书体系
- 否则容易被 MITM 攻击
| 维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1 个共享密钥 | 1 对公私钥 |
| 加密速度 | 非常快 | 慢 |
| 密钥分发 | 困难 | 容易 |
| 扩展性 | 差 | 好 |
| 是否用于签名 | ❌ | ✅ |
| 是否用于大数据 | ✅ | ❌ |
对称加密速度快但密钥分发困难, 非对称加密解决分发问题但计算开销大, 实际系统中通常先用非对称安全地交换密钥,再用对称加密传输数据。
掌握如何利用加密工具保护数据完整性
理解哈希函数与消息认证码(MAC)的作用
哈希函数本身不能提供消息完整性(在不可信信道上)。
MAC 提供完整性和认证,而数字签名额外提供不可否认性。
哈希函数的基本作用:将任意长度的输入映射为固定长度的摘要(digest);目标是安全性(而不是计算快)
三大安全性质:
原像抗性(Preimage Resistance)
- 已知 ℎ,难以找到任意 m,使 H(m) = ℎ
第二原像抗性(Second-preimage Resistance)
- 已知 m,难以找到 m′ ≠ m,使 H(m′) = H(m)
抗碰撞性(Collision Resistance)
- 难以找到任意 m₁ ≠ m₂,使 H(m₁) = H(m₂)
哈希函数 ≠ 加密
Hash 是单向函数,没有“解密”这一说法。
| 对比点 | 哈希 | 加密 |
|---|---|---|
| 是否可逆 | 不可逆 | 可逆 |
| 是否需要密钥 | 不需要 | 需要 |
| 相同输入 | 相同输出 | 通常不同输出 |
哈希函数在“完整性”中的作用与局限
能做什么
- 检测意外修改
- 检测可信发布源中的篡改
例子:
- 软件厂商发布程序 + 哈希值
- 用户验证下载文件是否被修改
不能做什么
不安全场景:
- 攻击者可以同时修改 消息 + 哈希值
结论:
在不安全信道上,哈希函数不能单独提供完整性保护。
原因:
- 哈希函数是无密钥的
- 攻击者可以计算任何消息的哈希
MAC
为什么要引入 MAC
问题:
- 哈希没有密钥
- 攻击者可以伪造
解决方案:
引入共享秘密密钥
MAC的基本工作方式:
1
2
3
T = MAC(K, M)
发送方发送 (M, T)
接收方计算 MAC(K, M),验证是否相等
MAC同时提供:
- 完整性(Integrity)
- 身份认证(Authentication)
也就是:
- 只有知道密钥 K 的实体才能生成合法 MAC
MAC 的局限性
- 对称机制(双方共享同一密钥)
- 多人共享密钥时:
- 无法区分是谁生成的 MAC
- 不能提供不可否认性
结论:
MAC 适合点对点、客户端–服务器系统 不适合需要法律或责任追踪的场景
理解数字签名的作用
定义:使用公钥密码学提供数据的完整性与真实性的机制
基本操作:
1
2
sig = Sign(K⁻, m)
Verify(K⁺, m, sig)
数字签名提供:
- 完整性(Integrity)
- 身份认证(Authentication)
- 不可否认性(Non-repudiation)
为什么数字签名要先 Hash
原因:
- 直接对大消息签名效率低
- 先 Hash,再签名摘要
流程:
1
2
h = H(m)
σ = Sign(K⁻, h)
验证:
- 重新计算 H(m)
- 验证签名
- 数字签名必须保证以下三点:
- 报文鉴别:接收者能够核实发送者对报文的签名
- 报文的完整性:发送者事后不能抵赖对报文的签名
- 不可否认:接收者不能伪造对报文的签名
- 现在已有多种实现各种数字签名的方法。但采用公钥算法更容易实现
- 因为除 A 外没有别人能具有 A 的私钥,所以除 A 外没有别人能产生这个密文。因此 B 相信报文 X 是 A 签名发送的。
- 若 A 要抵赖曾发送报文给 B,B 可将明文和对应的密文出示给第三者。第三者很容易用 A 的公钥去证实 A 确实发送 X 给 B。
- 反之,若 B 将 X 伪造成 X’,则 B 不能在第三者前出示对应的密文。这样就证明了 B 伪造了报文。
具有保密性的数字签名
- 首先用自己的私钥进行签名,然后对密文用 B 的公钥加密
- 收到密文的,如果没有 B 的私钥,不能进行解密
- 然后用 B 的私钥解密,之后用 A 的公钥检验是 A 发送的,一般只用来传送对称密码,比较耗时。
- 保障获取公钥的过程
| 对比点 | MAC | 数字签名 |
|---|---|---|
| 密钥类型 | 对称 | 非对称 |
| 身份认证 | 是 | 是 |
| 不可否认性 | 否 | 是 |
| 多方验证 | 不适合 | 适合 |
初步了解证书的概念、认证协议
为什么需要证书:公钥密码学本身 无法防止中间人攻击(MITM)
- Alice 请求 Bob 的公钥
- 攻击者替换为自己的公钥
- Alice 使用“假公钥”加密
- 攻击者成功解密
问题不在加密算法,在“公钥分发”。
证书(Certificate):一份由可信第三方签名的、将“实体身份”与“公钥”绑定的数据结构。
证书包含:
- 实体身份(人 / 网站 / 路由器)
- 实体公钥
- CA 的数字签名
认证机构(CA, Certification Authority)
- CA 负责:
- 验证实体身份
- 为其公钥签名
证书本质:
1
Entity, K⁺, Sig_CA(Hash(Entity, K⁺))
关键思想:将“信任很多公钥”简化为“信任一个 CA 公钥”。
PKI(公钥基础设施)
PKI 包含:
- CA
- 证书
- 证书验证机制
- 证书吊销机制
目标:
- 安全分发公钥
认证协议(Authentication Protocol)
问题:
如何证明“你是你声称的那个人”?
目标:
- 双向身份认证
- 建立会话密钥
威胁模型
攻击者可以:
- 注入消息
- 修改消息
- 删除消息
- 重放消息
网络默认不可信
Nonce 的引入
Nonce 的定义:
- 新鲜性(不重复)
- 不可预测
作用:
- 防止重放攻击
认证协议的演化
错误做法:
- 仅声明身份
- 仅加密
- 没有 nonce
- 没有身份绑定
典型漏洞:
- 重放攻击
- MITM 攻击
- 会话密钥泄露
- 单向认证
正确协议的核心要素
一个安全认证协议必须:
- 使用 nonce 保证新鲜性
- 使用签名 / 加密绑定身份
- 建立会话密钥
- 实现双向认证
- 明确消息顺序
TLS 本质上是一个 工业级、标准化的认证协议 + 安全信道协议。
初步了解TLS的作用
TLS 是一个利用公钥密码进行身份认证和密钥协商、再使用对称密码和 MAC 来保护数据传输安全的协议。
一种广泛部署在传输层之上的安全协议 — Transport-Layer Security
几乎所有浏览器和 Web 服务器都支持:https(端口 443)
提供以下安全属性:
- 保密性(Confidentiality):通过对称加密实现
- 完整性(Integrity):通过密码学哈希实现
- 身份认证(Authentication):通过公钥密码学实现
了解防火墙的概念
- 防火墙是由软件、硬件构成的系统,是一种特殊编程(ACL)的路由器,用来在两个网络之间实施接入控制策略。接入控制策略是由使用防火墙的单位自行制订的,为的是可以最适合本单位的需要。
- 防火墙内的网络称为可信赖的网络(trusted network),而将外部的因特网称为不可信赖的网络(untrusted network)。
- 防火墙可用来解决内联网和外联网的安全问题。
防火墙在互连网络中的位置
- 其实只用一个路由器就可以完成防火墙的划分。
- 例子中:应用网关,可以内部外部进行访问过滤。
- 优点:在防火墙中的外局域网和内局域网都可以放置一些服务器,由左侧过滤的路由器控制访问,而右侧的路由控制内部网络的访问,从而达成一个访问权限控制
- 内网络安全也是一个问题
防火墙的功能
- 防火墙的功能有两个:阻止和允许。
- 阻止就是阻止某种类型的通信量通过防火墙(从外部网络到内部网络,或反过来):比如阻止内部的对迅雷的请求向外发送
- 允许的功能与阻止恰好相反。
- 防火墙必须能够识别通信量的各种类型。不过在大多数情况下防火墙的主要功能是阻止。
防火墙技术一般分为两类
- 网络级防火墙:用来防止整个网络出现外来非法的入侵。属于这类的有分组过滤和授权服务器
- 前者检查所有流入本网络的信息,然后拒绝不符合事先制订好的一套准则的数据
- 后者则检查用户的登录是否合法
- 应用级防火墙:从应用程序来进行接入控制。通常使用应用网关或代理服务器来区分各种应用,例如,可以只允许通过访问万维网的应用,而阻止 FTP 应用通过
理解ACL的含义与作用
ACL(Access Control Lists)是指令列表,它告诉路由器允许或拒绝什么类型的数据包。
- 如果要让路由器拒绝某些数据包,则必须配置 ACL。否则,只要链路打开,路由器将接受并转发所有数据包
- 可以根据以下情况允许或拒绝数据包:
- 源地址
- 目的地址
- 上层的协议,比如 TCP 或 UDP 端口
1
2
3
Permit packets from 192.168.100.1 to pass
Permit packets from 192.168.100.2 to pass
Deny packets from 192.168.100.3
192.168.100.4会被拒绝—ACL 末尾有一个隐含的 deny any 语句:如果数据包与 ACL 中的任何语句都不匹配,则将其丢弃。
ACL是在“接口”上生效的,所以必须知道走哪个接口
标准ACL只能判断源地址:
被deny后不一定发ICMP
了解IDS的含义
入侵检测系统(Intrusion Detection System, IDS),是一种 监控网络或主机活动,并检测是否存在入侵行为或安全策略违规行为的系统。
核心目标:
- 发现攻击
- 报警(而不是直接阻止)
| 对比项 | 防火墙 | IDS |
|---|---|---|
| 功能 | 阻止 / 放行 | 监测 / 报警 |
| 位置 | 网络边界 | 网络内部或主机 |
| 是否主动拦截 | 是 | 否 |
| 是否分析内容 | 通常不深入 | 是 |
IDS 的分类
(1)按部署位置
网络型 IDS(NIDS)
- 监控网络流量
- 部署在交换机镜像口
- 适合检测:
- 扫描
- DDoS
- 网络攻击特征
主机型 IDS(HIDS)
- 运行在主机上
- 监控:
- 系统调用
- 日志
- 文件完整性
(2)按检测方法
特征检测(Signature-based)
- 类似杀毒软件
- 根据已知攻击特征匹配
优点:
- 误报低
缺点:
- 无法检测未知攻击
异常检测(Anomaly-based)
- 建立“正常行为模型”
- 偏离即报警
优点:
- 能检测未知攻击
缺点:
- 误报率高
广域网WAN
关于广域网这一块,都是基本的东西。要知道它和LAN的区别是什么,以及它的基本作用是什么,包括它在OSI模型里面的位置是什么地方。可能更进一步的,前面提到的电路交换和分组交换的区别要有一些基本印象。
基本了解WAN的作用
定义:WAN 是通过 WAN 服务提供商连接 LAN 的通信网络。一般不是一个单位来做,而是由运营商完成,而在运营商之间沟通好相互的接入问题。
基本了解WAN与LAN的区别
WAN 在 OSI 的前三层运行,但主要集中在物理层和数据链路层。广域网和局域网相比相对低效。
WAN与OSI模型
WAN 标准主要描述 OSI 模型的物理层和数据链路层,物理层提供电器标准,数据链路层封装到远程的部分:帧标准。
物理层
- 描述如何为 WAN 服务提供电气,机械,操作和功能连接的协议
- 这些服务通常是从 WAN 服务提供商,备用运营商,电话后和电报(PTT)机构获得的。
- 描述数据终端设备(DTE,Data Terminal Equipment)和数据电路终端设备(DCE,Data Circuit-terminating Equipment)之间的接口。
- 通常,DCE 是服务提供商,而 DTE 是连接的设备。
- 在此模型中,通过调制解调器或 CSU/DSU 提供给 DTE 的服务。
数据链路层
- WAN 数据链路协议描述了如何在单个数据链路上的系统之间承载帧。
- 它们包括旨在在专用(dedicated)点对点,多点和多址交换服务上运行的协议。
- WAN 标准由许多公认的机构定义和管理,包括以下机构:ITU-T,ISO,IETF 和 EIA
- 不是那么可靠,帧结构和以太网帧不同,协议是点对点,点对多点,多链路交换机切换
- 为了确保正确:需要为每一个串口指定一个方式组成帧
电路交换、分组交换























