文章目录
- [1. 编码和解码](#1. 编码和解码)
-
- [1.1 数据都是数字](#1.1 数据都是数字)
- [1.2 Base64 编码](#1.2 Base64 编码)
- [2. 公钥管理所面对的挑战](#2. 公钥管理所面对的挑战)
-
- [2.1 PGP](#2.1 PGP)
-
- [2.1.1 WOT(Web of Trust)](#2.1.1 WOT(Web of Trust))
- [2.1.2 PGP(Pretty Good Privacy)](#2.1.2 PGP(Pretty Good Privacy))
- [2.1.3 信任级别(Trust Level)](#2.1.3 信任级别(Trust Level))
- [2.1.4 加密电子邮件](#2.1.4 加密电子邮件)
- [2.2 证书授权机构(Certificate Authority, CA)](#2.2 证书授权机构(Certificate Authority, CA))
- [2.3 SSL/TLS](#2.3 SSL/TLS)
-
- [2.3.1 数字证书](#2.3.1 数字证书)
-
- [2.3.1.1 X.509 格式证书](#2.3.1.1 X.509 格式证书)
- [2.3.2 浏览器中的主要证书颁发机构(CA)](#2.3.2 浏览器中的主要证书颁发机构(CA))
- [2.3.3 证书链(Certificate Chain)](#2.3.3 证书链(Certificate Chain))
- [2.3.4 SSL/TLS 加密通信的基本流程](#2.3.4 SSL/TLS 加密通信的基本流程)
- [2.3.5 SSL/TLS 的历史和它们的演进过程](#2.3.5 SSL/TLS 的历史和它们的演进过程)
- [2.3.6 PKCS(Public-Key Cryptography Standards,公钥密码学标准)](#2.3.6 PKCS(Public-Key Cryptography Standards,公钥密码学标准))
- [2.3.7 Cipher Suites(密码套件)](#2.3.7 Cipher Suites(密码套件))
- [2.3.8 SSL/TLS 握手过程](#2.3.8 SSL/TLS 握手过程)
- [2.3.9 HTTP Cookie 和 Session](#2.3.9 HTTP Cookie 和 Session)
-
- [2.3.9.1 Cookie](#2.3.9.1 Cookie)
- [2.3.9.2 Session](#2.3.9.2 Session)
- [2.3.10 消息认证码(MAC, Message Authentication Code)](#2.3.10 消息认证码(MAC, Message Authentication Code))
- [2.3.11 私钥泄露](#2.3.11 私钥泄露)
- [2.3.12 潜在风险](#2.3.12 潜在风险)
- [2.3.13 Diffie-Hellman 算法的 SSL/TLS 握手](#2.3.13 Diffie-Hellman 算法的 SSL/TLS 握手)
- [2.3.14 TLS 1.2 到 TLS 1.3 的改进](#2.3.14 TLS 1.2 到 TLS 1.3 的改进)
- [2.3.15 SSL/TLS 小结](#2.3.15 SSL/TLS 小结)
- [3. 更多危险](#3. 更多危险)
-
- [3.1 网络攻击的类型](#3.1 网络攻击的类型)
- [3.2 常见攻击方式](#3.2 常见攻击方式)
-
- [3.2.1 永远不要以明文存储密码](#3.2.1 永远不要以明文存储密码)
- [3.2.2 关于密码/凭证的一些建议](#3.2.2 关于密码/凭证的一些建议)
- [3.2.3 Rainbow Table(彩虹表)](#3.2.3 Rainbow Table(彩虹表))
- [3.2.4 使用盐值(salt)来防止彩虹表攻击](#3.2.4 使用盐值(salt)来防止彩虹表攻击)
- [3.2.5 哈希碰撞(Hash collision)](#3.2.5 哈希碰撞(Hash collision))
- [3.2.6 多因素认证(MFA, Multi-Factor Authentication)](#3.2.6 多因素认证(MFA, Multi-Factor Authentication))
- [3.2.7 公钥基础设施(PKI)](#3.2.7 公钥基础设施(PKI))
- [3.2.8 腾讯的Soter系统](#3.2.8 腾讯的Soter系统)
- [3.3 未授权的访问者](#3.3 未授权的访问者)
- [3.4 勒索病毒](#3.4 勒索病毒)
- [3.5 钓鱼攻击(Phishing)](#3.5 钓鱼攻击(Phishing))
- [3.6 人的行为](#3.6 人的行为)
- [3.7 DDoS(分布式拒绝服务攻击)](#3.7 DDoS(分布式拒绝服务攻击))
-
- [3.7.1 Mirai恶意软件](#3.7.1 Mirai恶意软件)
- [3.8 假装置](#3.8 假装置)
-
- [3.8.1 银行卡](#3.8.1 银行卡)
- [3.8.2 NFC卡](#3.8.2 NFC卡)
- [3.8.3 Tesla汽车](#3.8.3 Tesla汽车)
- [4. 信息安全](#4. 信息安全)
-
- [4.1 风险(Risk)](#4.1 风险(Risk))
- [4.2 威胁(Threat)](#4.2 威胁(Threat))
- [4.3 漏洞(Vulnerability)](#4.3 漏洞(Vulnerability))
- [4.4 与人有关](#4.4 与人有关)
- [4.5 CIA三原则(Confidentiality、Integrity、Availability)](#4.5 CIA三原则(Confidentiality、Integrity、Availability))
- [4.6 可靠基础设施](#4.6 可靠基础设施)
-
- [4.6.1 数据中心的层级(Data Center Tiers)](#4.6.1 数据中心的层级(Data Center Tiers))
- [4.6.2 DDoS(分布式拒绝服务)攻击过滤](#4.6.2 DDoS(分布式拒绝服务)攻击过滤)
- [4.7 应用层安全防护](#4.7 应用层安全防护)
- [4.8 网络安全等级保护](#4.8 网络安全等级保护)
- [4.9 信息安全管理](#4.9 信息安全管理)
-
- [4.9.1 漏洞评估扫描](#4.9.1 漏洞评估扫描)
- [4.9.2 使用合适的产品与规章](#4.9.2 使用合适的产品与规章)
- [4.9.3 渗透测试(Penetration Testing)](#4.9.3 渗透测试(Penetration Testing))
- [5. 其他风险](#5. 其他风险)
-
- [5.1 量子技术](#5.1 量子技术)
1. 编码和解码
编码是把数据从一种形式转换成另一种形式。
计算机不能直接理解人类看到的文字、图片、视频,它最终处理的是 0 和 1。所以需要把文字、图片等内容转换成二进制数据,这个过程叫编码。
解码是编码的反向过程,也就是把编码后的数据还原成人能理解的形式。
1.1 数据都是数字
计算机在内部处理所有数据时,最终都转化为二进制形式。
因此数据其实都是数字,存储和处理在计算机中。
1.2 Base64 编码
这是一种常用于将数据从二进制转换为文本格式的编码方法,通常用于在互联网中传输二进制数据,如图片、文件等。它使用64个字符来表示数据,包括大小写字母、数字以及"+"和"/"字符。
Base64 编码不是加密。它只是对数据的一种编码方式,目的是为了数据传输的便利性,而不是为了保护数据的安全性。Base64 编码后的数据可以轻松地被解码回原始数据。
因此为了数据安全我们还是需要对数据进行加密。
2. 公钥管理所面对的挑战
我们上一章讲解了密码学的基础知识。
密码学基础介绍
我们前面介绍了对称加密以及非对称加密。
还介绍了数字签名可以验证数据的完整性和发送者的身份。然而,它本身并不足以完全防止中间人攻击(Man-in-the-Middle Attack,MITM),除非配合其他技术使用。
这些都是公钥管理所面对的挑战

如果某个公钥是假的或被篡改,那么使用该公钥加密的数据将会被错误地解密,甚至导致安全问题。如何确保公钥确实是属于 Alice、Bob 等人的关键问题。
这就是刚刚提到的中间人攻击。
随着越来越多的人使用公钥加密技术,如何有效管理这些公钥成为了一个问题。维护、更新和分发大量公钥的方式是一个技术挑战。
2.1 PGP
PGP 是一种加密标准,广泛用于加密电子邮件和文件。它使用公钥加 技术,其中每个用户有一个公钥和私钥。
任何人都可以将他们的公钥上传到 公钥服务器,这也意味着,公钥可能是假的,可能是中间人伪造的。所以,确保公钥的真实性非常重要。
因此这里有一个 Web of Trust(信任网),用于帮助扩展信任链。

它是一种 间接信任,即你可以信任一个人验证的公钥,从而信任其他通过他验证过的公钥。
如果你能够验证一个公钥确实属于某个人,那么你可以签署该公钥,表示你已验证了其所有权。
这样,信任链会逐渐扩展,越来越多的人会信任你的签名和公钥。
2.1.1 WOT(Web of Trust)

WOT 是一种间接信任机制,它允许用户基于他们与其他人的信任关系来扩展信任。简而言之,用户可以通过信任自己直接认识的人(直接信任)来间接信任其他人(间接信任)。
2.1.2 PGP(Pretty Good Privacy)

PGP 是由 Philip Zimmermann 开发的加密软件,它提供了加密电子邮件和文件的功能,广泛应用于数据隐私保护。
PGP 在 1991 年通过互联网免费发布,目的是让更多人能够使用强加密技术保护自己的数据。

由于 PGP 的广泛传播,Zimmermann 成为了美国政府的目标,经历了长达三年的刑事调查。
政府认为,PGP 的发布违反了美国对加密软件的出口管制规定,特别是这些加密技术被认为是涉及国家安全的敏感技术。
作为反击,美国政府无法直接阻止 PGP 的传播,因此 Zimmermann 将 PGP 的源代码以书籍的形式出版,进一步扩展了其影响力。这本书详细介绍了 PGP 的内部实现原理。
2.1.3 信任级别(Trust Level)
PGP(Pretty Good Privacy) 中信任级别有不同类型:
- Unknown(未知):
这是默认的信任级别,表示无法判断公钥的信任度,因为没有足够的信息来做出决定。 - Never(永不信任):
你明确标记了这个公钥,以至于从该公钥得到的任何签名都永远不可信。这种情况通常用于你知道公钥持有者已经被攻击,或者该公钥没有经过验证就被签名。 - Marginal(边际信任):
边际信任表示该公钥是可信的,但可信度不高。要将公钥标记为"信任",它需要来自三个你已经给予边际信任的其他公钥的签名。 - Full(完全信任):
完全信任应当用于你完全信任的公钥。与边际信任不同,完全信任只需要一个公钥签名,就能将该公钥标记为可信。 - Ultimate(终极信任):
只有在你自己使用的公钥上才能使用终极信任!这是信任级别中最高的级别,应该仅用于你自己的公钥。如果其他公钥经过良好的验证,可以授予完全信任,如果不确定,可以使用边际信任。
2.1.4 加密电子邮件

- Alice 生成会话密钥(Session Key):
Alice 首先生成一个 会话密钥,这是一个对称加密密钥,通常用于加密邮件内容。 - 使用 Alice 的会话密钥加密数据:
Alice 使用这个会话密钥对邮件内容进行加密。 - 用 Bob 的公钥加密会话密钥:
为了确保只有 Bob 能解密会话密钥,Alice 用 Bob 的公钥 将 会话密钥 加密。由于公钥是公开的,任何人都可以使用 Bob 的公钥 加密数据,但只有 Bob 能使用他的 私钥 解密。 - 发送加密的邮件和会话密钥:
加密后的数据和加密的会话密钥被一起发送给 Bob。邮件内容被加密保护,而会话密钥也得到了加密。 - Bob 使用自己的私钥解密会话密钥:
收到邮件后,Bob 使用自己的 私钥 解密会话密钥。 - Bob 使用会话密钥解密邮件内容:
通过解密得到会话密钥后,Bob 使用该会话密钥解密邮件内容,恢复原始的明文数据。
2.2 证书授权机构(Certificate Authority, CA)

CA 是一个中心化的信任机构,它负责为用户或组织颁发 数字证书。这些证书包含公钥以及其他身份信息,并由 CA 的私钥进行签名,以确保公钥的合法性和真实性。
上图展示了这一过程,Bob 和 Alice 通过 CA 交换公钥,并且 CA 通过签发证书来确认这些公钥的身份。

信任链指的是一个公钥如何通过一系列的证书进行验证,从而确认其有效性和可靠性。
该链从 根证书(Root Certificate) 开始,通过 中间证书(Intermediate Certificate) 验证,最终到达 最终用户证书(End User Certificate)。
上图展示了这个信任链的过程:根证书签发中间证书,中间证书再签发给最终用户证书。
2.3 SSL/TLS

HTTPS(HyperText Transfer Protocol Secure)是 HTTP 与 SSL/TLS 的组合。HTTP 是一个明文协议,而 SSL/TLS 则为它提供了加密和认证功能,确保数据传输的安全性。
SSL/TLS 在传输层协议 TCP 上工作,确保数据在网络上传输时的安全性。
2.3.1 数字证书


- Webmaster 创建密钥对并生成 CSR(证书签名请求):
网站管理员(Webmaster)首先创建一对密钥:公钥和私钥。
然后,管理员生成一个 CSR,该请求包含公钥,并将其发送给证书授权机构(CA)进行注册。 - 证书授权机构(CA)验证申请人的身份:
CA 需要验证申请人(Webmaster)的身份。这通常可以通过面对面验证或通过电子邮件等方式进行确认。
例如,CA 可能会通过电话、邮件或与申请人直接面谈来确认其身份,确保他们有权申请该证书。 - 服务器收到签名的证书:
一旦身份验证通过,CA 会使用其 私钥 签署该证书,生成一个有效的 服务器证书。这个证书会包含公钥,并通过 CA 的数字签名进行认证。
服务器使用该签名证书来建立安全的连接,确保客户端可以信任该服务器。
2.3.1.1 X.509 格式证书

上图展示了一个 X.509 证书 的原始编码(通常是 PEM 格式),显示了证书的内容被编码成了 Base64 格式。这是数字证书的典型表示方式之一,证书包含了各种信息,包括公钥、签名、颁发机构等。

上图展示了 X.509 证书的结构。X.509 证书是用来验证身份的标准格式,通常用于 SSL/TLS 等加密协议中。它包含以下几个主要部分:
- To Be Certificate(待签名部分):
版本(version):X.509 证书的版本(如 v1, v2, v3)。
序列号(serial number):由证书颁发机构(CA)生成的唯一标识符。
签名算法(signature algorithm OID):指定证书使用的签名算法(如 RSA、SHA)。
颁发者(issuer name):证书的颁发机构(CA)的信息。
主题(subject name):证书持有者的名称(如组织、国家、域名等)。
公钥信息(subjectPublicKeyInfo):持有者的公钥。 - v1、v2 和 v3:证书的版本,不同版本支持不同的扩展和功能。
- 扩展部分(extensions):X.509 v3 证书支持扩展字段,可以包含更多的信息,如密钥用法、证书策略等。
2.3.2 浏览器中的主要证书颁发机构(CA)

上图展示了 Mac 系统中 证书管理器(Keychain Access)中的 证书颁发机构(CA) 列表。
主要 CA(如美国和欧洲的公司)主导了全球的数字证书市场。证书颁发机构通过签发和管理证书,确保网站和用户之间的安全通信。
主流浏览器都预先安装了多个受信任的 CA 证书,确保用户能够安全地访问互联网上的加密网站。
上海的 CA 也得到了大多数浏览器的支持,说明中国的证书颁发机构在全球网络安全中也占有重要地位。
2.3.3 证书链(Certificate Chain)

证书也有层级结构:
根证书(Root CA):这是证书链的顶层,是信任链的起点。根证书由根 CA(Level 1)颁发,并且用于签发下一级证书。根证书通常是自签名的,也就是说它自己签名自己的证书。
子级证书(Subordinate CA):根证书可以签发子级证书(Level 2),这些子级证书有两种主要用途:
一些子级证书的主要任务是签发其他 CA 的证书,这些称为中级 CA。
另一些子级证书则签发最终实体证书(End-Entity Certificates),这些证书是用于具体的用户或服务。
证书链的传递:每个证书(从根证书到子级证书)都会通过其上级 CA 的签名来建立信任链。

上图展示了如何通过证书链进行证书验证:
- 获取证书:首先,验证者需要获取持有者的证书,并查看其公钥、证书所有者的名称(Subject DN)等信息。
- 验证签名:然后,使用证书颁发机构(CA)的 公钥 验证签名。每一级的证书都会被前一级证书的私钥签署,最终在根证书的签名下得到验证。
- 从根证书开始:最终,验证会通过 根证书(Level 1)完成,根证书签名的证书提供了完整的信任链。
证书链是一种通过多个级别的证书(从根证书到子级证书)验证身份和信任的方式。
证书颁发机构(CA) 通常有多个层级,通过这种层级结构的证书链来保证 最终用户证书 的安全性和有效性。
根证书是所有信任的起点,而中级证书和最终用户证书则依赖于它们签发者的证书来确保信任关系。
2.3.4 SSL/TLS 加密通信的基本流程

- 请求 HTTPS 连接:
客户端向服务器请求 HTTPS 网站(https://www.domain.com/)。 - 服务器响应并发送证书:
服务器返回其 公钥证书(crt public)给客户端,用于后续的加密操作。 - 客户端验证证书:
客户端检查服务器证书的有效性,验证证书是否由受信任的 根证书颁发机构(CA) 签发。
如果证书无效,客户端会显示 HTTPS 警告。 - 生成随机密钥:
如果证书有效,客户端生成一个 随机密钥,用于后续的加密通信。 - 用证书加密随机密钥并发送:
客户端使用服务器的公钥(crt public)对生成的随机密钥进行加密,并将其发送给服务器。 - 服务器使用私钥解密随机密钥:
服务器使用其 私钥(crt private)解密客户端传输的随机密钥。 - 服务器使用客户端的密钥加密数据:
服务器使用随机密钥加密实际的通信内容,然后将加密后的内容发送回客户端。 - 客户端解密并接收数据:
客户端使用 随机密钥 解密服务器传输的加密数据,完成加密通信。
这整个过程确保了数据传输的加密,并且通过数字证书验证 身份,提高了网络通信的安全性。
2.3.5 SSL/TLS 的历史和它们的演进过程
如何将密钥交换、数字签名和对称算法结合起来?
SSL/TLS 协议需要通过 密钥交换(交换加密密钥)、数字签名(验证身份)和 对称加密算法(用于实际数据加密)来保证通信的安全性。
为了实现这些操作,SSL/TLS 协议依赖于行业标准,尤其是 X.509 证书(用于身份验证和公钥分发)和 RSA 或 Diffie-Hellman 密钥交换算法。
加密协议的设计需要一定的标准化,例如 TLS 1.2 和 TLS 1.3 定义了如何有效地集成这些安全机制。
SSL(安全套接字层,Secure Sockets Layer)是 TLS(传输层安全协议,Transport Layer Security)的前身。
SSL 是由 Netscape 最早发布的,用于加密互联网连接,后来发现它存在一些安全漏洞。
TLS 是由 IETF(互联网工程任务组)制定的,基于 SSL 的基础进行改进,成为更为安全的协议。尽管 SSL 和 TLS 在功能上很相似,但它们在设计和实现上有差异,因此被认为是不同的协议。

SSL 2.0(1995年发布):由 Netscape 发布,最初用于安全的网络通信。
SSL 3.0(1996年发布):在 SSL 2.0 基础上改进,增加了更多的安全功能,逐渐被 TLS 所替代。
TLS 1.0(1999年发布):由 IETF(互联网工程任务组)制定,作为 SSL 的继任者,TLS 1.0 是更为安全的协议,并在 RFC 2246 中定义。
TLS 1.1(2006年发布):对 TLS 1.0 进行了增强,主要改进了加密算法的处理。
TLS 1.2(2008年发布):进一步增强了安全性,并加入了更多加密算法的支持,成为目前最常用的 TLS 版本。
TLS 1.3(2018年发布):最新的版本,简化了握手过程,并提高了安全性,移除了过时的加密算法。
SSL/TLS 协议也存在安全漏洞,一个常见的漏洞是 POODLE 攻击(Padding Oracle On Downgraded Legacy Encryption)。
POODLE 攻击 利用 SSL3.0 中的缺陷,能够绕过加密保护,窃取数据。
SSL 3.0 不再被认为安全,因此现代通信协议不再使用它,推荐使用更安全的版本,如 TLS 1.2 和 TLS 1.3。
2.3.6 PKCS(Public-Key Cryptography Standards,公钥密码学标准)
PKCS 是由 RSA 数据安全公司 和其他组织制定的一系列标准,旨在提供一致的公钥密码学实现规范。
PKCS #1 特别关注 RSA 加密,并定义了其公钥和私钥的结构。
其他标准则涉及到密钥交换、密码消息格式、证书请求等内容。

2.3.7 Cipher Suites(密码套件)
密码套件定义了加密通信过程中所使用的算法和密钥交换机制。
每个 Cipher Suite 由四个部分组成:
- 密钥交换算法(Key Exchange):确定如何交换密钥来建立加密连接(如 RSA、ECDHE)。
- 证书密钥算法(Certificate Key):用于签名和验证证书(如 RSA、ECDSA)。
- 传输加密算法(Transport Cipher):用于加密通信数据的算法(如 AES256、AES128)。
- 完整性算法(Integrity):用于数据完整性检查的哈希算法(如 SHA384、SHA256)。
每个部分有多个算法选项。
2.3.8 SSL/TLS 握手过程
我们现在说 SSL/TLS 是怎么握手的,这一部分又跟之前 CAN302 的知识很接近。
这个握手过程是建立安全连接的关键,确保通信的机密性和完整性。它通过RSA 加密,客户端和服务器可以安全地交换密钥并建立加密通道,从而保护数据传输过程免受中间人攻击。

- 客户端发送问候信息(Client Hello):
客户端向服务器发送一个包含:
客户端随机数(Client Random)
支持的密码套件(Cipher Suites)
以及其他信息的问候消息。 - 服务器返回证书和服务器随机数:
服务器发送:
服务器随机数(Server Random)
公钥证书(Public Key Certificate),该证书用于验证服务器身份并用于加密通信。
服务器还会发送会话 ID,用于会话恢复。 - 客户端加密预主密钥(Pre-Master Secret):
客户端使用服务器的公钥加密预主密钥(Pre-Master Secret)。
预主密钥是由客户端和服务器共同生成的,用于生成会话密钥。 - 服务器解密预主密钥:
服务器使用自己的私钥解密客户端发送的预主密钥。 - 生成会话密钥:
客户端和服务器使用客户端随机数、服务器随机数、预主密钥生成会话密钥(Session Key),该密钥用于加密实际的数据传输。 - 安全数据传输:
通过生成的会话密钥,客户端和服务器可以进行加密通信,确保数据的保密性和完整性。
2.3.9 HTTP Cookie 和 Session
HTTP 协议设计为无状态的,意味着每次请求之间服务器不保留任何状态数据。
这使得 HTTP 协议变得简洁、可扩展且可靠,但也带来了需要跟踪状态的问题。
由于 HTTP 本身是无状态的,Cookie 和 Session 被用来在客户端和服务器之间保持会话状态。
2.3.9.1 Cookie
Cookie 是存储在用户计算机上的小文本文件。浏览器只允许与 cookie 文件交互,出于安全考虑,其他文件不能与 Cookie 一起共享。
每当用户登录时,服务器会生成一个唯一的 Session ID,并通过 HTTP 头部将其作为 Cookie 发送到客户端。此 Session ID 以后会在每个请求中发送回服务器,确保用户的身份和会话信息被追踪。
服务器通过 Session ID 来检查用户是否仍然有效,是否匹配一个有效的用户名。
2.3.9.2 Session
Session 是一个存储在服务器端的全局变量。每个用户会话都被分配一个唯一的 Session ID,用于检索存储的值(如用户名、会话开始时间等)。
Session ID 作为 Cookie 存储在用户的计算机上,允许客户端和服务器进行数据交互。
虽然 Session ID 被存储为 Cookie,但 Cookie 本身并不安全,因为它是以文本格式存储在客户端的,这意味着恶意代码可以读取和篡改它。
那为什么 RSA 不能保护 Cookie 呢?
因为 RSA 加密 可以保护传输过程中的安全性,但当 Cookie 存储在用户设备上时,恶意软件或者脚本(例如 JavaScript)仍然有机会访问这些存储在本地的 Cookie 数据。
2.3.10 消息认证码(MAC, Message Authentication Code)
MAC 算法是 对称加密算法 的一部分,通常用来验证消息的完整性。
在 TLS 中,MAC 算法作为密码套件的一部分,起到了 数据完整性保护 的作用,通常与 对称加密算法 和 哈希函数(如 HMAC) 一起使用。

- 消息加密:
发送方:首先,发送方(客户端或服务器)对消息进行处理。它使用一个 MAC 算法,结合一个共享的 密钥(K) 来生成一个 MAC(消息认证码)。
这意味着消息和密钥会一起被输入到 MAC 算法中,生成一个消息认证码,作为消息的完整性校验。 - 发送消息:
完整的消息和它的 MAC 一起被发送到接收方。这保证了接收方可以验证接收到的消息的完整性和真实性。 - 接收方验证:
接收方:接收方收到消息后,会提取消息和 MAC,然后使用相同的 密钥(K) 和 MAC 算法 对收到的消息计算 MAC 值。
如果计算出的 MAC 与接收到的 MAC 匹配,表示消息在传输过程中没有被篡改,消息的完整性得到了验证。 - 比较 MAC:
接收方将自己计算出的 MAC 与接收到的 MAC 进行比较。如果它们匹配,接收方就确认消息是完整且未被篡改的。
MAC 是通过将消息与密钥结合,生成一个消息认证码,并用它来验证消息的完整性和真实性。
TLS 协议 采用对称加密的 MAC 算法,确保通信过程中消息没有被篡改。
2.3.11 私钥泄露
如果服务器上的私钥被黑客获取,就相当于破坏了整个加密通信的安全性。攻击者能够对系统进行 篡改、监听 或 伪造 信息。
例如黑客可以通过私钥泄露来操控加密的文件或数据,要求受害者支付赎金以解锁文件。
为了防止私钥泄露,必须采取严格的安全措施,例如加密存储、访问控制、私钥管理系统等手段,以确保私钥不被非法访问和窃取。
2.3.12 潜在风险
加密通信虽然是保护隐私的重要手段,但如果加密密钥泄露或加密技术被破解,就有可能导致过去所有加密通信内容的解密。
数据加密的长期安全性需要依赖于强健的密钥管理和不断更新的加密技术。
2.3.13 Diffie-Hellman 算法的 SSL/TLS 握手
下面介绍 SSL 握手过程 中的 Diffie-Hellman (DH) 密钥交换协议,用于 加强 Pre-master 密钥的安全性。

- 客户端与服务器建立连接:
客户端(Visitor)和 服务器(CloudFlare)之间开始 SSL 握手。首先,客户端发送一个 client random 和 支持的加密套件 信息。
服务器响应时,发送 server random、公钥证书(包含服务器的公钥)和 DH 参数。
服务器还会将其 签名 返回给客户端,这样客户端可以验证服务器身份。 - Diffie-Hellman 密钥交换:
Diffie-Hellman(DH)算法用于 共享密钥 的安全交换。服务器和客户端通过 DH 参数 来生成共享的 预主密钥(pre-master secret)。
在 DH 密钥交换中,双方通过自己的 私钥 和对方发送的 公钥 来进行加密操作,最终协商出一个共享密钥。 - 加密会话密钥:
客户端和服务器使用生成的 预主密钥 以及双方的 random 数值,最终生成一个 会话密钥(session key)。
这个会话密钥用于后续的加密通信,确保数据在传输过程中被保护,不被中途窃取或篡改。 - SSL 握手中 DH 的作用:
DH 算法增强了 Pre-master 密钥的安全性,通过确保在传输过程中即使第三方截获了公钥和参数,也无法直接计算出预主密钥,因为 私钥 永远不会被直接传输。
这种密钥交换方法防止了中间人攻击,同时确保了 安全性 和 私密性。
2.3.14 TLS 1.2 到 TLS 1.3 的改进

改进有3点:
- TLS 1.3 移除了 RSA 算法:
RSA 算法在 TLS 1.3 中被移除,旨在提高握手的效率并加速加密过程。RSA 通常用于密钥交换,但其在 TLS 1.3 中不再使用,改为更现代、更高效的加密算法。 - 握手过程的减少:
相比于 TLS 1.2,TLS 1.3 在握手流程中减少了步骤,使得连接速度更快,延迟更低。 - TLS 1.3 支持的加密套件:
TLS 1.3 引入了一些新的加密套件选项,例如:
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
TLS_AES_128_CCM_8_SHA256
TLS_AES_128_CCM_SHA256
这些加密套件确保了更强的加密保护和更好的性能。
简而言之,TLS 1.3 相比于 TLS 1.2 提供了更加安全、高效的加密方式,尤其是通过去除 RSA 和优化握手过程提高了加密通信的速度。
2.3.15 SSL/TLS 小结
- TLS 不仅仅限于 HTTP:
TLS 是一个通用的加密协议,可以为多种协议提供加密保护,不仅限于 Web 流量。
因此TLS 不仅用于 HTTP 协议,还可以应用于 FTP、SMTP 等其他协议。 - TLS 必须结合对称加密和非对称加密算法:
TLS 不仅使用对称加密算法(如 AES)来加密数据,还结合了非对称加密算法(如 RSA 或 DH)进行密钥交换和身份验证。因此,TLS 需要同时使用这两种算法来确保通信的安全性。
3. 更多危险
我们前面说了这么多信息交流的安全措施,那我们现在真的安全了吗?
最大的危险在于过于自信地认为自己是安全的。即使 Alice 和 Bob 认为通信安全,也不能忽视潜在的中间人攻击或密钥泄露等风险。
比如CA(证书授权机构)DigiNotar 被攻击事件。
DigiNotar 是一家曾经提供数字证书的 CA,但在 2011 年被黑客入侵,导致它伪造了如 "google" 等多个域名的证书,从而破坏了它的可信度。

DigiNotar 证书被黑客攻击后伪造了许多证书,其中就包括伪造了 "google" 的证书,这使得它的根证书在很多浏览器和系统中被删除或标记为不信任。
该事件凸显了 CA 的信任机制问题,一旦 CA 被攻击,整个信任链可能会遭到破坏。
下图展示了更多数据泄露的示例。

因此数据保护非常重要,尤其是涉及敏感信息(如健康数据、账户信息、密码等)。
3.1 网络攻击的类型
正如我们上一章所示,网络攻击的类型有很多。

上图展示了网络攻击的类型:
- Malware:恶意软件
指病毒、木马、勒索软件、间谍软件等,会破坏系统、窃取数据或加密文件勒索。 - Phishing:网络钓鱼
攻击者伪装成银行、学校、公司或平台,诱导用户点击链接、输入账号密码或下载恶意文件。 - Man in the Middle Attack:中间人攻击
攻击者偷偷夹在用户和网站、服务器之间,拦截或篡改通信内容。 - DoS/DDoS:拒绝服务攻击/分布式拒绝服务攻击
通过大量请求挤占服务器资源,让网站或系统变慢、崩溃、无法访问。 - SQL Injection:SQL 注入
利用网站数据库查询漏洞,向输入框或链接中插入恶意 SQL 语句,从而读取、修改或删除数据库内容。 - Zero Day Exploit:零日漏洞利用
利用尚未被官方修复或公开发现的安全漏洞进行攻击。 - Cross Site Scripting:跨站脚本攻击,XSS
攻击者把恶意脚本注入网页,当用户访问页面时脚本会运行,可能窃取 Cookie、登录状态或用户信息。 - Business Email Compromise:商务邮件入侵,BEC
攻击者伪装成老板、客户或合作方,通过邮件诱导转账、泄露合同或敏感信息。
3.2 常见攻击方式
密码作为身份验证的广泛应用,其的保护相当关键。
攻击者可能会尝试暴力破解(Brute Force Attack)。
这是一种离线攻击方法,攻击者通过尝试大量密码组合进行猜解。
假设大多数密码都能在破解字典中找到,因此攻击者依赖于大量的尝试来获取密码。
这种攻击通过"密码 API"进行。
除此之外还会尝试凭证填充(Credential Stuffing)。
这是一种在线攻击方法,攻击者利用泄露的数据进行攻击。
假设许多人在多个站点上重复使用相同的凭证,因此攻击者会依赖被泄露的凭证进行攻击。
这种攻击通过"凭证 API"进行。
因此我们的密码不能常见或者容易被破解。
例如下面的密码都是错误示例:
- password
- 123456
- 12345678
- abc123
- qwerty
- monkey
- letmein
- dragon
- 111111
- baseball
3.2.1 永远不要以明文存储密码
密码应仅用于验证或比较用户输入的密码与存储的密码是否匹配。
在系统设计时,即使是管理员也不应能够查看用户的明文密码,这样可以避免被滥用或泄露。
哈希是一种单向加密方式,它将密码转换为一个固定长度的字符串,无法通过哈希值恢复出原密码,因此提供了一定的安全性。
例如,如果存储明文密码 "123456",那么任何人都可以轻松读取这个密码。但通过哈希算法,例如使用SHA256加密,存储的将是一个无法轻易读取的哈希值:"8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"。
这是 SHA256 对 "123456" 字符串的哈希值。
因此不要存储明文密码,哈希值比明文密码更安全,确保即使数据库被泄露,密码也不会被轻易破解。
3.2.2 关于密码/凭证的一些建议
我们前面提到了一些弱密码很容易被破解。
下面我们将列出不同类型的密码,以及它们被暴力破解(brute force)所需的时间:
- 123456:
所需时间:0.20毫秒
强度:不安全(Unsafe) - qwerty123456:
所需时间:13小时
强度:不安全(Unsafe) - ITFunSom3times:
所需时间:48,000年
强度:有风险(Risky) - ITiFun0m3times!:
所需时间:13万亿年
强度:好(Good) - imusingalongpasswordtoday:
所需时间:913万亿年
强度:更好(Better) - imuinga10ngpa$word+today!:
所需时间:2兆年(2 ocillion years)
强度:最佳(Best)
因此这里给出一些建议:
- 弱密码是最主要的风险因素:使用弱密码如"123456"极易被破解,必须避免。
- 避免安装"危险"的应用/软件:某些软件可能存在安全漏洞,易受攻击。
- 如果需要使用这些"危险"的软件,建议在虚拟机中使用:这样可以隔离潜在风险。
- 不要在不同网站/APP上使用相同的密码:如果需要使用相同的密码,至少要增加"盐值"(Salt),通过混淆密码来增加安全性。
- 不要在"不安全"网站上注册账户:不可信的网站可能会导致账户泄露。
- 不要分享任何密码:共享密码存在泄露风险。
3.2.3 Rainbow Table(彩虹表)
Rainbow Table 是一种利用预计算的哈希值来快速破解密码的方法。
如下图所示,这是一张 Rainbow Table(彩虹表)的示例,显示了原始文本(Plaintext)与其对应的MD5哈希值(MD5 Checksum)。其中包含一些常见的密码,及其对应的哈希值

哈希值的长度越大,彩虹表的存储空间需求就越大,因此,增加密码长度和复杂度可以增加破解的难度。
彩虹表的工作原理利用了哈希函数的特性,存储了大量常见密码的哈希值,可以大大加速密码破解过程。
3.2.4 使用盐值(salt)来防止彩虹表攻击
我们前面提到了盐值(salt),这里进行解释。
假设用户的密码是 123456,我们生成一个盐值 randomSalt123。
组合后的密码是:randomSalt123456(盐值与密码结合)
然后我们对这个字符串进行哈希计算(例如使用SHA256、MD5等),生成一个哈希值。
最后,存储的是:randomSalt123(盐值)和hashed(randomSalt123456)(哈希值)。
当用户下次登录时,服务器会使用同样的盐值与输入的密码一起计算哈希值,然后与存储的哈希值进行比较。如果匹配,则认为密码正确。
盐值是随机生成的,因此每次生成的哈希值都是不同的。
盐值是存储在数据库中的,但哈希值是根据盐值和密码生成的。
盐值的使用增加了破解密码的复杂性,因为即使密码相同,每个用户的哈希值也会不同,黑客不能直接使用彩虹表来破解。
如下图所示。

3.2.5 哈希碰撞(Hash collision)
哈希碰撞是指两个不同的输入数据通过哈希算法得到相同的哈希值。该攻击利用了哈希算法的不完美性,允许攻击者制造不同的输入数据却得到相同的哈希结果,这对于安全性是一个重大威胁。
由于不同数据可以产生相同的哈希值,攻击者可能利用这一点在数字签名、证书等安全领域进行伪造或篡改,危及系统的安全性。
王小云博士证明了在MD5和SHA-1算法中存在碰撞,并且她主导了SM-3算法的设计。SM-3是中国自主研发的加密哈希算法,设计时特别关注抵抗碰撞攻击的能力。
3.2.6 多因素认证(MFA, Multi-Factor Authentication)
MFA(多因素认证):是一种安全系统,要求用户提供多种认证方法来验证其身份。通常,MFA包含两种或更多的验证方式,比如密码、手机验证码、生物识别等。
2FA(双因素认证):是MFA的一个子集,通常涉及两个因素的认证。常见的方式包括:
第一因素:密码或PIN码
第二因素:如手机短信中的验证码、手机App生成的代码、生物识别(如面部识别、指纹识别)等
3.2.7 公钥基础设施(PKI)
PKI(Public Key Infrastructure,公钥基础设施)是一个框架,用于管理公钥加密系统的密钥对和数字证书。

PKI(公钥基础设施)不仅用于服务器端的安全通信,也可以在客户端设备上使用,尤其是涉及到敏感操作时。
例如USB设备通常包含私钥并通过硬件进行保护,这样即使设备被盗,攻击者也无法轻易提取私钥。
在USB设备和PC应用中,证书颁发机构(CA) 扮演着重要的角色。它帮助确保传输的证书和数据的合法性,并提供签名验证。
因此用途如下:
- 身份认证:如双因素认证(2FA)和单点登录(SSO)。
- 内容保护:如UHD/4K加密保护,防止数据丢失。
- 企业:提供安全的通信和防止数据丢失。
3.2.8 腾讯的Soter系统
Soter是腾讯的一个安全认证方案。它是通过移动设备的硬件安全模块(TEE)来保护和验证信息。


图中显示了系统在客户端和服务器端的部署情况:
客户端部分包括指纹识别和密钥存储(KeyStore)。
服务器端包括腾讯的TAM服务器,负责管理密钥和证书。
微信开放平台接口也在系统中起到连接作用。
ASK、Auth Key、ATTK:这些是密钥或认证方法的简称,具体的生成方式使用RSA-2048加密。
客户端、第三方应用和服务器的交互:
- 客户端:通过硬件安全模块(例如指纹认证)进行身份验证。
- 服务器:提供认证服务,管理密钥并进行RSA加密操作。
要成功实施此方案,腾讯需要得到所有移动设备厂商的支持,以便它们可以将根证书发送给腾讯。这是一个正确但困难的过程。
3.3 未授权的访问者
未授权访问者指那些没有授权访问设备或网络的人,可能通过黑客攻击或漏洞进入系统。
如果家庭摄像头没有适当的安全防护措施(如强密码、加密、固件更新等),它们就可能被黑客控制,用于非法监控。
3.4 勒索病毒
WannaCry 是一种勒索软件。它会感染电脑后,把用户的文件加密,然后要求用户支付比特币赎金,才声称可以解密文件。

EternalBlue 是一个 Windows 漏洞利用工具,最初与 NSA 有关。WannaCry 利用了这个漏洞在大量电脑之间快速传播。

WannaCry 是2017年最具破坏力的勒索病毒之一,波及150个国家,造成超过80亿美元的损失。
NotPetya 影响了65个国家,损失达到8.92亿美元。
Bad Rabbit 主要攻击了关键基础设施。
这几种勒索病毒都利用了 EternalBlue 漏洞,攻击了全球大量计算机系统。
3.5 钓鱼攻击(Phishing)
"钓鱼"(Phishing)一词源自"Phone"(电话)和"Fishing"(钓鱼),它说明攻击者可能通过电话社交工程手段窃取信息,或者使用假冒网站(如钓鱼攻击)来进行欺骗。
著名的钓鱼攻击有:
2011年PSN黑客攻击(PlayStation Network黑客事件),黑客盗取了数百万用户的个人信息。
2014年索尼影业黑客攻击,黑客入侵索尼系统,窃取了大量重要数据。
例如我们有时候看到别人伪造朋友的身份对我们发信息从而诱使受害者点击钓鱼链接或提供敏感信息,这就是钓鱼攻击。
3.6 人的行为
虽然加密工具和技术可以提供保护,但最终的安全性还依赖于人的行为和相关的规则。
也就是说操作不当或规则执行不到位,安全性依然会受到威胁。
例如历史上PS3使用了一个固定的"随机"数字,并用它来生成密钥。这导致如果黑客知道了这个固定的数字,PS3的加密机制就会被破解,导致安全性问题。

再比如网络问题对用户造成的影响,特别是当大规模用户遇到服务中断或功能异常时,往往会导致大量的讨论和媒体关注。
3.7 DDoS(分布式拒绝服务攻击)

DDoS攻击通常使用成千上万的计算机,通过发送大量的流量或请求,目的是让目标服务器或服务无法正常工作。
这种攻击是通过利用受感染的计算机(通常是僵尸网络)发起的。
3.7.1 Mirai恶意软件
Mirai是一个广为人知的恶意软件,专门利用物联网(IoT)设备(如路由器、摄像头等)来建立僵尸网络(botnet)。这些设备通常没有足够的安全防护,因此容易受到感染。
Mirai恶意软件利用全球范围内数以万计的物联网设备,发起了历史上最大规模的DDoS攻击之一,流量达到了1Tbps以上。它的存在和攻击提醒我们,在网络安全中不仅要关注个人设备的安全,也需要关注物联网设备的安全防护。
DDoS(分布式拒绝服务)攻击确实每天都可能发生,且它们的流量规模可以非常庞大。许多网站和在线服务都可能成为攻击目标。
虽然有些DDoS攻击的流量非常大(如超过1Tbps),但大部分DDoS攻击的流量较小,可能只有几Gbps或几十Gbps。这些较小规模的攻击仍然能够让受害者的服务暂时瘫痪,尤其是当攻击目标没有足够的防御措施时。
3.8 假装置
3.8.1 银行卡
有些不法分子会将卡片扫描器放置在ATM机器的读卡槽上,这样当你插卡时,卡片信息就会被盗取。
也有一些犯罪分子会将隐藏摄像头安置在ATM机上,以捕捉你的PIN码。

上图这些标记可能是诈骗者放置的工具或装置的迹象,用于伪装和隐蔽他们的设备。
所以请小心保护您的银行卡,特别是在使用ATM时,要留意这些可能的可疑标志。
3.8.2 NFC卡
NFC卡也可以很容易地被伪造。

所以NFC技术虽然方便,但如果没有适当的安全措施,容易受到复制和滥用的威胁。
3.8.3 Tesla汽车
通过Relay Station Attack (RSA)(中继站攻击)使得攻击者能够在远距离"欺骗"车辆,以为车主已经解锁了车辆,从而实现非法开锁。

攻击者通过设备能够捕获车辆与车主之间的无线通信信号。车主的钥匙卡和车载系统之间的信号会被攻击者用中继设备(如图中所示)截取。
无线通信技术虽然方便,但也可能成为攻击者的漏洞来源。
4. 信息安全
4.1 风险(Risk)
风险的公式为:
Risk=Threat Probability×Vulnerability Impact
也就是说,风险是威胁发生的概率与漏洞影响的结合。
风险的本质就是一个威胁源成功利用漏洞的概率。
4.2 威胁(Threat)
威胁是任何类型的危险,可能会造成数据损坏、数据盗窃、系统中断或一般性的损害。
常见的威胁示例包括:恶意软件、钓鱼攻击、数据泄露,甚至是恶意员工。
或者,威胁可以被定义为一组潜在的事件,其中一个威胁代理(Threat Agent)通过一个特定的入口点(Entry Point)对资产(Asset)造成威胁事件。
4.3 漏洞(Vulnerability)
漏洞是指硬件、软件、人员或程序中的弱点,攻击者可以利用这些弱点来实现他们的目标。
许多著名的漏洞,如2020年的Log4j漏洞。
漏洞可以通过公共漏洞评分系统(CVSS)来进行标记。
漏洞不仅仅是硬件和软件上的,人类也可能是漏洞的一部分。
如果漏洞没有修复方法,它就被称为零日漏洞(Zero-Day Vulnerability)。
4.4 与人有关

风险是威胁代理(Threat Agent)通过攻击漏洞(Vulnerability)并利用入口点(Entry point)对系统造成影响的可能性。
威胁代理(Threat Agent)可以是外部的或内部的。无论是外部攻击者还是内部员工,都是潜在的威胁来源。
这个过程包括了攻击(Attack)、漏洞、入口点以及防御(Defender)等。
风险的大小与威胁代理的行为及其访问系统的路径、以及漏洞的存在密切相关。
风险不仅仅是技术问题,还与人为的行为和漏洞的管理有关。
4.5 CIA三原则(Confidentiality、Integrity、Availability)

信息安全的基本目标如下:
- Confidentiality(保密性):
定义:确保只有授权的人员可以访问信息。
举例:我给你发送一条消息,只有你知道这条消息的内容,其他人无法得知。
目的:数据不被泄露。
实现方式:加密等手段。
对立概念:泄露。 - Integrity(完整性):
定义:确保信息在传输过程中不被篡改,接收方接收到的是完整的原始信息。
举例:我给你发送一条消息,确保你收到的与我发送的完全相同。
目的:数据不被篡改。
实现方式:哈希、数字签名等技术。
对立概念:篡改。 - Availability(可用性):
定义:确保信息在需要时可以访问。
举例:我给你发送一条消息,并且你能及时收到。
目的:数据随时可用。
实现方式:备份、冗余系统等。
对立概念:数据无法访问。
4.6 可靠基础设施
可靠基础设施用于保障数据中心等重要设施的持续运行。每个组件都有其作用:

- Utility Power(市政电力):
这是正常运行时使用的主电源,提供日常的电力供应。 - Transfer Switch(切换开关):
该装置在市政电力出现故障时,将电源切换到备用电源,确保不断电。 - Generator(发电机:长时间电力中断):
在长时间的电力中断时,发电机提供电力支持。它可以为系统提供额外的电力,直到主电源恢复。 - UPS(不间断电源:短时间电力中断和电力调节):
UPS 系统在短时间的电力中断时发挥作用,同时也调节电力质量,确保设备获得稳定的电力供应,防止由于电压不稳定或中断造成的数据损失。 - Fire Suppression System(灭火系统):
在数据中心等重要基础设施中,火灾是一大风险。灭火系统通过气体灭火等技术来保障设施的安全,防止火灾引发设备损坏或其他灾难。
4.6.1 数据中心的层级(Data Center Tiers)
数据中心根据其可靠性和冗余设计,通常分为四个层级:
- Tier 1:
可靠性:99.671% 的正常运行时间。
缺乏冗余配置,通常是最便宜的选择,适合不需要高可用性的场景。 - Tier 2:
可靠性:99.741% 的正常运行时间。
提供电力和冷却冗余,增强了可靠性,但依然不具备高可用性。 - Tier 3:
可靠性:99.982% 的正常运行时间。
提供多个电源、上行链路等冗余配置,适合需要较高可靠性的系统。 - Tier 4:
可靠性:99.99% 的正常运行时间。
提供完全冗余,并且具备故障容忍能力,是最高级别,确保了数据中心能抵抗大部分的故障。
下面展示一个多层次的分布式应用架构:

- DNS: 负责将用户请求分配到不同的应用实例。
- F5: 用于负载均衡和流量调度,确保应用实例之间的流量分配合理。
- Main Cluster:
这是主集群,其中包含多个数据中心节点(如Seattle AZ1、Seattle AZ2、San Francisco AZ3),每个节点提供数据库引擎(如TiDB、TiKV)和调度器(如PD Cluster Scheduler),这些是数据库系统的一部分,用于高效管理和分布式存储。
4.6.2 DDoS(分布式拒绝服务)攻击过滤

攻击者通过僵尸网络(由大量被攻击感染的设备组成)发起DDoS攻击,僵尸机器人不断向目标服务器发送流量。
在进入网络之前,流量首先会被传送到入侵检测系统(IDS)进行检测。IDS用于识别恶意流量或异常流量,这些流量来自僵尸机器人。
一旦IDS检测到攻击流量,它会将这些流量丢弃,并通过DDoS缓解系统进一步分析。DDoS缓解系统用于过滤这些恶意流量。
经由DDoS缓解后,合法的流量会通过防火墙被传送到目标服务器,确保恶意流量无法进入。
合法流量通过高性能代理设备进一步处理,然后流量被传送到客户服务器。
最终,只有合法流量(来自正常用户的请求)才能到达客户的服务器,确保服务不受DDoS攻击的影响。
4.7 应用层安全防护
常见的Web应用威胁:
- SQL注入:攻击者通过篡改SQL查询来修改或破坏数据库中的数据。
- 跨站脚本(XSS):攻击者在网站中注入恶意脚本,窃取用户信息或篡改页面。
- 拒绝服务攻击(DoS):通过大量流量攻击应用程序,导致其无法正常使用。
- 跨站请求伪造(CSRF):诱使用户执行不正常的操作。
- 会话劫持:修改用户的cookie,获取未授权的访问。
- 参数篡改:篡改URL参数或表单数据,未经用户授权获取信息。
- 代码注入:在服务器端注入恶意脚本,利用漏洞进行攻击。
- 缓冲区溢出:攻击者发送特殊数据,导致服务器崩溃或信息泄露。
我们前面提到了 IDS, IDS(入侵检测系统) 是一种用于监测和分析网络流量的安全设备。
IDS用于检测来自互联网的攻击者,并通过防火墙转发流量。当发现可疑流量时,IDS会生成警报并传送到管理系统。
需要注意的是IDS仅提供检测功能,不主动阻止攻击。
而与IDS不同,IPS(入侵防御系统)不仅检测攻击,还会直接阻止攻击。例如,当发现恶意流量时,IPS会通过防火墙和交换机主动拦截,确保攻击不会进入内部网络。

蜜罐介绍
这里会有蜜罐(Honeypot)部署,蜜罐是故意设置的易受攻击的系统,用于引诱攻击者。通过监控蜜罐的活动,可以分析攻击者的行为和攻击手法。
WAF(Web应用防火墙)用于过滤恶意流量,确保只有合法的请求可以进入Web服务器,阻止SQL注入等攻击。
DS/IPS 和 WAF通过网络流量分析和协议监控,与应用层安全密切相关,并能有效应对应用层的攻击。
4.8 网络安全等级保护
没有绝对的安全,任何系统都可能受到攻击,因此需要保持警惕和不断更新防护。
在进行网络安全保护时,进行适当的评估和投入非常重要。
对网络资产进行适当的保护,确保安全措施与资产的价值相匹配。
最大的安全风险之一就是过度自信,认为自己是安全的,从而忽视了潜在的威胁。
中国网络安全等级保护制度要求不同级别的系统根据其重要性和风险,采取相应的安全措施。
网络安全等级保护中常见的五个等级(L1-L5)的解释如下:
- L1(等级1):
一旦发生损害,会对相关公民、法人及其他组织的合法权益造成损害,但不会危及国家安全、社会秩序及公共利益。 - L2(等级2):
一旦发生损害,会对相关公民、法人及其他组织的合法权益造成严重损害,或对社会秩序和公共利益构成威胁,但不会危及国家安全的整体网络。 - L3(等级3):
一旦发生损害,会对相关公民、法人及其他组织的合法权益造成特别严重的损害,或对社会秩序和公共利益造成严重伤害,或通过重要网络对国家安全构成威胁。 - L4(等级4):
一旦发生破坏,会对社会秩序和公共利益造成特别严重的损害,或通过特别重要的网络对国家安全构成严重威胁。 - L5(等级5):
这是最重要的网络,一旦发生破坏,将会对国家安全造成特别严重的损害。
等级越高(L4、L5),意味着网络对国家安全、社会秩序等方面的影响越大,因此采取的保护措施会越严格。
4.9 信息安全管理
在实施网络安全时,不仅要依赖防火墙、杀毒软件等技术工具,还需要注意人员和相关法规的作用。

例如 ISO 27000 是一套全球认可的标准,用于管理和保护信息资产的安全。
图中展示了 信息安全管理 的周期流程,关键步骤包括:
- 风险分析:识别潜在的风险。
- 措施选择:根据分析结果选择相应的安全措施。
- 控制和效果评估:实施后定期评估控制措施的有效性。
它还将安全细分到了不同领域:
- 物理和环境安全:确保物理设施的安全。
- 人力资源安全:确保人员和人力资源管理方面的安全性。
- 访问控制:确保只有授权人员可以访问敏感信息。
4.9.1 漏洞评估扫描
我们可以通过工具来检查和评估系统中存在的安全漏洞,帮助识别并修复可能被攻击者利用的漏洞。

4.9.2 使用合适的产品与规章
我们可以使用网络安全软件如 McAfee, Bitdefender, Avast, Sophos, Trend Micro, Norton 等。这些是用于病毒防护、防火墙、恶意软件检测等安全措施的工具。都可以提高我们的网络安全防护。

而防火墙也可以保护内部网络免受外部威胁。
4.9.3 渗透测试(Penetration Testing)
我们可以定期测试以确保防御系统的有效性。
下面展示了几种用于 渗透测试(Penetration Testing) 和漏洞扫描的工具:
- EeEF、Metasploit:这些是渗透测试工具,用于模拟攻击并识别系统弱点。
- Nmap:网络扫描工具,常用于发现开放端口和进行网络映射。
- Nessus:用于漏洞扫描,评估系统的安全性。
- Wireshark:网络流量分析工具,用于捕获和分析数据包。
- SQLMap:一个专门用于 SQL 注入攻击测试的工具。
- John the Ripper:密码破解工具,用于检查密码的强度。
- Backtrack:基于 Linux 的渗透测试工具。
5. 其他风险
尽管我们有各种网络安全防护措施,但还是要持续关注安全问题,不能掉以轻心。
例如黑客通过电信运营商获取会话密钥而对系统进行侵害。
例如针对国家安全和大规模监控的网络攻击。
再比如ECHELON计划的大规模的全球通信监控以及PRISM计划对全球知名的互联网公司进行数据收集。
Crypto AG 公司
5.1 量子技术
量子技术可能被用于 CNE(Computer Network Exploitation)、CNA(Computer Network Attack) 和 CND(Computer Network Defense),即通过量子计算和量子通讯来执行网络入侵、攻击和防御。
量子技术的发展可能对当前的加密方式产生巨大影响,并为网络安全带来新的挑战。
