🛡️ 第二章 针对网络的攻击
📄 一句话概括

窃听是成本最低的攻击——它什么都不改,只是在一旁听;它之所以还成立,是因为网络天生是"广播"式的,而加密只是最近十几年才普及到位。

📝 本节和前面几节的关系

第一章讲的是"安全是什么"——资产、威胁、风险,以及机密性/完整性/可用性这三要素。从这一节开始,视角从概念转到动作:这一章要一件件看清,攻击者到底是怎么落到网络上的。

这一节对应三要素里的机密性:不该看的人看到了。它也直接承接 信息安全的三要素 里那句话——机密性出事的时候你这边一切正常,因为它先发生在别人那里(这里就是"别人的线路上")。

一、窃听在网络上到底意味着什么

在物理世界里,窃听要贴近目标——趴在门外听、在电话线上搭一根线。在网络上,这件事的性质变了:

所以教材把"数据的偷窥"放在网络攻击的第一条,是很合理的顺序:它是后面所有攻击的地基——先能看到,才谈得上篡改、冒充、重放。

二、明文与密文,差在哪

同一个动作(比如提交一个登录表单),在没加密和有加密的情况下,旁听者能拿到的信息完全不同。关键是分清两类东西:

类别 包含什么 加密能不能挡住
内容 网址路径、表单字段、Cookie、正文 能挡住
元数据 谁在跟谁说话、什么时候、多久、多大 挡不住

这张表是这一节的核心。很多人对加密有一个误解——以为"开了 HTTPS 就没人知道我在干什么"。实际上,加密保护内容,不保护元数据:旁听者依然能画出你的完整通信画像:几点上班、访问了哪些服务器、停留多久、传了多少数据。

元数据本身就很有价值。 谁能看到全网的"谁连了谁",谁就能推断出很多事情——哪些公司有业务往来、哪个人在半夜联系哪里。这也解释了为什么"元数据不敏感"这个说法在安全领域是站不住的。

三、窃听会发生在哪些位置

从离你最近的往外数:

  1. 同一局域网内(公共 WiFi、酒店、咖啡馆)——这是最经典的场景,也最容易得手,因为无线信号本来就是向空气中广播的。
  2. 你自己的设备上——如果设备已经中招(比如装了恶意扩展、被装了抓包工具),那不管通信多安全,在加密之前就被读走了。这一层加密是无效的。
  3. 中间节点(运营商、机房、代理)——数据必须经过它们,它们天然具备旁听条件。
  4. 中间人位置——攻击者把自己插在通信双方的中间,两边都以为在跟对方说话,其实都在跟攻击者说话。这一条的解法在 2-3(冒充)里会再讲。

四、加密普及之后,窃听变成了什么

过去十年发生了两件大事,把窃听的门槛整体抬高了一档:

第一件:全站加密成为常态。 现在浏览器会把纯 HTTP 的站点标成"不安全",免费证书申请只要几秒钟。结果是加密已经不是加分项,而是基线。

第二件:握手也换掉了。 老版本握手在前向保密上是"可选"的,新版本把它做成"强制"——这意味着即使日后服务器的私钥泄露,也解不开之前录下来的那段密文。

于是窃听这件事的形态变了:

五、动手 Demo:明文与加密的可见度对照

下面这段脚本列出一份"旁听者想拿到的东西"清单,逐项标出在明文和加密两种情况下各能否拿到。

# 对同一段通信,比对旁听者在两种传输方式下能拿到什么
rows = [
    ("谁在和谁说话(源 IP / 目的 IP)", "看得见", "看得见"),
    ("用的是哪个网站(域名 / SNI)", "看得见", "看得见"),
    ("什么时间连的、连了多久", "看得见", "看得见"),
    ("一共传了多少字节", "看得见", "看得见"),
    ("请求了哪个页面(URL 路径)", "看得见", "看不见"),
    ("表单里填了什么(账号、口令)", "看得见", "看不见"),
    ("Cookie 与会话令牌", "看得见", "看不见"),
    ("正文内容(聊天、邮件、文件)", "看得见", "看不见"),
]

实跑输出:

  旁听者想拿到的东西                         明文 HTTP     加密 HTTPS    
  ----------------------------------------------------------
  谁在和谁说话(源 IP / 目的 IP)              看得见           看得见         
  用的是哪个网站(域名 / SNI)                 看得见           看得见         
  什么时间连的、连了多久                       看得见           看得见         
  一共传了多少字节                          看得见           看得见         
  请求了哪个页面(URL 路径)                   看得见           看不见         
  表单里填了什么(账号、口令)                    看得见           看不见         
  Cookie 与会话令牌                      看得见           看不见         
  正文内容(聊天、邮件、文件)                    看得见           看不见         

  合计:明文暴露 8 项;加密之后仍然暴露 4 项。

  ① 加密把 8 项里的 4 项挡住了,但没挡住【你在跟谁通信】这件事。
     所以【用了 HTTPS 就没人知道我在干嘛】是错的——
     加密保护内容,不保护元数据(谁、何时、多频繁、多大)。

  ② 2026 全网民流量(人产生的)约 98.9% 已加密;
     TLS 1.0/1.1 已降到 0.01%,TLS 1.2 一年里从 4.43% 减半到 2.68%。
     加密已经是基线,不是加分项。现在的窃听难点变成【抓得到但看不懂】。

  ③ 新问题:先偷走、等以后再解密。
     2026 年过半请求已在用抗量子的密钥交换(54.15%),
     但支持它的源站只有 9.58% —— 今天的密文,将来可能被解开。

读这个输出:最关键的一行是"合计"——8 项里加密只挡掉 4 项。这 4 项恰好是最敏感的(口令、Cookie、正文),所以加密确实极其重要;但剩下那 4 项元数据依然暴露,这提醒我们"加密到位"和"隐私到位"是两件事。

六、⚠️ 2026 现状

30 秒实验

拿起手机,做两件事:

  1. 看地址栏:随便打开一个网站,点开地址栏左边那个小图标,看有没有"连接是安全的"这类提示。再找找有没有哪个常用网站还是 http:// 开头——浏览器会明确标出"不安全"。
  2. 看一个明文的东西:在同一个 WiFi 下,如果你家里有路由器管理页面(一般是 192.168.1.1),注意它是 http 还是 https。如果你能登录它,那么同网段的人理论上也能看到你输的密码。 这就是为什么路由器后台的密码不能和别处重复。

这一节要带走的一句是:加密解决的是"内容被看见",不解决"你在跟谁说话被看见"——而"跟谁说话"这件事,本身就是信息。

常见误区

  1. 错误:用了 HTTPS 就安全了,没人知道我在干什么。——纠正:HTTPS 保护内容,不保护元数据。谁在跟谁通信、什么时候、传了多少,这些在加密之后依然可被观察。加密是必要条件,不是充分条件。

  2. 错误:公共 WiFi 只要不输入密码就没风险。——纠正:风险有两层。一层是内容(现在基本被 HTTPS 挡住);另一层是假冒热点——你连的那台设备本身可能是攻击者的,那样你访问的所有内容都要经过他。判断热点真伪比"要不要输密码"更重要。

  3. 错误:只要传输加密了,数据就安全了。——纠正:加密只覆盖路上这一段。数据到了服务器之后是明文存放还是加密存放、谁能看到、留存多久,是另一回事(这属于第一章讲的"信息资产"如何被保管)。传输加密解决的是线路问题,不是保管问题。

  4. 错误:我没什么可看的,被听到也无所谓。——纠正:单条信息确实可能没价值,但长期积累的通信记录能拼出很多东西:你的作息、常联系的人、工作节奏、常访问的系统。攻击者要的往往不是那一条内容,而是那幅图。

自测三问(点开对答案) 1. 为什么"发射广播式"的局域网结构,会让窃听变得容易? —— 因为同一网段里每一帧数据本来就是发给所有人的,网卡只是**自己判断要不要收**。把网卡调成"全部接收"就成了一台旁听机——**数据帧本身并没有被限制只能送给你**。这也是为什么现代无线网络必须靠加密来补这一层(无线信号的广播范围根本不受建筑控制)。 2. 加密之后,窃听者还能拿到什么?为什么这些还有意义? —— 还能拿到**元数据**:通信双方是谁、时间、频率、持续时间、数据量大小。有意义是因为**这些信息能拼出行为画像**——谁和谁有业务往来、某人几点在做什么、哪个组织在半夜大量传输数据。在很多场景下,元数据比内容更容易分析、也更难隐藏。 3. 为什么"先存下来以后解密"值得现在处理? —— 因为**解密能力的门槛会下降**。今天的加密算法在面对未来的计算能力时可能不再安全(尤其是量子计算对现行公钥体系的威胁)。所以对**需要长期保密的数据**(比如要保密二十年以上的档案),"今天被录下来"意味着"将来可能被读懂"。应对办法是在密钥交换环节就采用抗量子的方案,而不是等到出事再换。

相关笔记