密码学 Cryptography
密码学是对隐藏或混淆信息的方法的研究,在没有秘密知识的情况下使其不可读。密码学是使用数学运算来保护在各方之间传输或存储在计算机上的消息,它涉及将消息从可读格式转换为不可读格式,这意味着拦截通信的人无法读取它们。
基础定义
- 明文 Plaintext:未加密的数据片段
- 密文 Ciphertext:加密算法的输出
- 密码 Cipher:加密算法
- 密钥 Key:算法用于加密或解密消息的字符或位序列
- 加密 Encryption:将明文更改为密文
- 解密 Decryption:将密文更改为明文
密码分析 Cryptanalysis
这是尝试破解加密系统并将加密消息恢复为其原始形式的过程。密码分析的目标是使用各种数学算法来破译密文。许多密码分析攻击被用于实现此目标, 例如暴力攻击、字典攻击和彩虹表攻击。
加密的类型
主要的区别在于使用的密钥的数量。如果只使用一个私钥那就是对称加密 Symmetric Encryption;如果使用两个公钥那就是非对称加密 Asymmetric Encription;如果不使用密钥那就是哈希加密 Hashing。
加密和解密的过程
用符号来表示就是:
- M 为明文;
- C 为密文;
- E 为加密;
- D 为解密;
- K 为密钥;
对于哈希加密,过程可以表示为:
加密算法
加密算法 cryptographic algorithm(通常称为加密算法 encryption algorithm或密码 cipher)由用于加密和解密信息的数学步骤组成。
常用的类型有
类型 | 原理 | 典型示例 |
---|---|---|
替换密码 Substitution ciphers | 字符/位替换(如A→D,B→E) | 凯撒密码(Caesar Cipher) |
置换密码 Transposition ciphers | 字符位置重排(如”HELLO”→ “OLLEH”) | 栅栏密码(Rail Fence Cipher) |
乘积密码 Product ciphers | 结合替换、置换与模运算的复合算法 | 现代AES/DES算法的基础架构 |
密钥是加密和解密过程中使用的特殊数据。通常加密的时候算法保持不变,但使用不同的密钥。密钥越长,算法越强,整体的安全性就越高。
加密实现方式基础分类
一般分为两种,流密码 bit steam 和分组密码 block cipher。
流密码就是逐比特或字节进行加密,进行实时处理,典型算法为 RC4(但是因 WEP 漏洞而被弃用)。
分组密码就是固定长度分组进行加密。DES(64 位块,已弃用) 和 AES(128 位块,现行标准) 是常用的方式。
加密模型
模式 | 原理 | 安全性 | 典型应用 |
---|---|---|---|
ECB(Electronic Code Book)模式 | 独立加密每个分组(如字典翻译) | 低(相同明文→相同密文) | 已淘汰(仅教学用例) |
CBC(Cipher Block Chaining)模式 | 当前分组加密依赖前一组密文(链式反馈) | 高(需初始化向量IV防重放) | SSL/TLS、磁盘加密 |
密码系统 Cryptosystem
密码系统就是一系列用于加密和解密的流程、算法、协议、指令的集合。
在选择算法的时候,通常有以下策略:
场景 | 推荐算法类型 | 典型应用 | 优势 |
---|---|---|---|
本地文件加密 | 对称加密(AES-256) | 硬盘全盘加密(BitLocker) | 速度快(吞吐量≥500MB/s) |
网络通信加密 | 公钥加密(RSA-2048) | SSL/TLS握手、电子邮件加密 | 无需预先共享密钥 |
实时数据流加密 | 流密码(ChaCha20) | 视频会议(WebRTC) | 低延迟(<10ms) |
密码学的四大核心目标:
- 机密性 Confidentiality:只有有权限的人才能访问;
- 完整性 Integrity:收到的信息一定是发送的信息;
- 认证性 Authentication:保证发送人身份真实性以及传输可信性;
- 不可否认性 Non-repudiation:通过数字签名确保信息发送方无法否认自己发送过内容,以及无法否认内容是原始状态。
私钥加密 Secret-key Cryptography
SKC 就是用单个密钥来进行加密和解密。主要的问题就是需要保证私钥不会被泄露。
SKC 的优势在于其高效率、简单性和大范围使用。适合加密大量数据的同时,更容易用算法实现,并且在许多现实场景都有使用。 SKC 的劣势在于如何安全地共享私钥以及在多用户网络中如何管理每一对私钥。
常用的对称加密算法有:DES、3DES、AES、CAST、RIVEST、Blowfish、IDEA 等。DES 是第一个用于商业应用的对称密钥算法,而 3DES 是替代 DES 的临时解决方案。AES 是当前的黄金标准,广泛用于世界各地的众多商业和政府应用程序。
DES
DES,全称数据加密标准 Data Encryption Standard,采用 64 位块加密,意味着每 64 位明文就加密为一个 64 位的密文。其采用的密钥有效长度为 56 位。在每个 64 位块上根据密钥执行 16 次替换和排列(一种转调形式)从而实现加密和解密。
加密过程由两个排列 (P-box) 组成,称为初始和最终排列,以及 16 轮。
轮密钥生成器是分组密码算法中的核心组件,用于从主密钥(Master Key) 派生出每轮加密/解密所需的子密钥(Round Keys) 。
- 初始密钥处理
- 输入:64位主密钥(含8位奇偶校验位)
- 通过 PC-1置换(Permuted Choice 1)去除校验位,得到56位有效密钥,分为两半(C₀和D₀,各28位)。
- 循环左移生成中间密钥
- 每轮对Cₙ和Dₙ进行循环左移(左移位数由轮次决定,通常为1或2位)。
- 例如:第一轮C₁ = LeftShift(C₀, 1),D₁ = LeftShift(D₀, 1)。
- 压缩置换(PC-2)
- 将合并后的56位(Cₙ + Dₙ)通过PC-2置换表选择性抽取48位,生成子密钥Kₙ。
优劣势
优势:1. 实现简单高效;2. 研究充分,经典案例。劣势:1. 密钥过短,容易被暴力破解;2. 通过使用固定的 S 盒能留有潜在的后门。
2DES
2DES 相当于对明文使用两次 DES,并且两次的密钥也不同。
3DES
3DES 类似,使用三个不同的密钥,进行 3 次 DES 加密。是从 DES 到 AES 的良好过渡。
AES
AES,高级加密标准 Advanced Encryption Standard,是一种 128 位块加密的算法。其密钥长度可以是 128 位、192 位或者 256 位,同样加密轮数也是可变的,10 轮、12 轮或者 14 轮。
AES 不像 DES 那样在每个阶段只使用替换和排列,而是由替换、移位、列混合和 KeyAdd 作的多个循环组成
AES 的优点在于足够的安全性、软硬件高效实现以及灵活性。
公钥加密
虽然对称加密强度足够并且计算速度也快,但是如何安全地交换私钥又成了一个问题。于是出现了非对称加密,也叫公钥加密。非对称加密使用两个不同但是相关的密钥,任何一个密钥都能加密或者解密信息,如果 A 能加密,那只有 B 才能解密。所以其中一个(B)作为私钥,另一个(A)作为公钥。
公钥和私钥在数学上是相关的,一般会采用无法逆运算的算法从私钥中计算出公钥。常见的公钥算法有:DIFFIE-HELLMAN、El-Gamal、RSA 和椭圆曲线 Elliptic Curve。
公钥加密的两个主要用途是:
- 公钥加密:使用收件人的公钥加密的消息不能被任何人解密,除非拥有匹配的私钥。这用于尝试确保机密性。
- 数字签名:使用发件人私钥签名的消息可以由有权访问发件人公钥的任何人进行验证,因此,很可能是与所使用的公钥关联的人。
公钥加密的一个主要问题是证明特定的公钥是正确的并且没有被篡改。解决此问题的通常方法是使用公钥基础设施(PKI),其中有一个或多个第三方——称为证书颁发机构 (CA),证明密钥对的所有权。
[! tip] 素数和模 Prime numbers and Mod 素数的除数只有 1 和自身。注意:1 是素数,但通常不感兴趣 模操作就是取余。
DIFFIE-HELLMAN 密钥交换
它是仅用于密钥交换的公钥算法,不加密或解密消息。该协议是当今最常用的加密协议之一,常用于安全套接字层 (SSL) 协议的电子密钥交换方法和允许在之前未联系过的两个人之间共享密钥。
其安全性基于离散对数问题 Discrete Log Problem,
对于给定的
定义:素数
Diffie-Hellman 算法的核心就是找到这样一个素数
RSA 算法
RSA 的加密过程可以用一个通式表达,
这里的公钥就是
解密密钥
Elgamal 算法
- 背景与设计
- 提出者:Taher Elgamal(1985年)
- 基础理论:基于Diffie-Hellman密钥交换的思想
- 安全性:依赖于离散对数问题(DLP) 的计算困难性
- 核心特点
- 功能:支持加密与数字签名
- 密文扩展:密文长度是明文的两倍(效率较低)
- 性能:计算速度较慢(因涉及模幂运算)
- 应用场景
- 早期用于PGP加密、SSL/TLS协议(现多被ECC替代)
- 学术研究中仍作为离散对数问题的典型实例
[! note] 优良保密协议 Pretty Good Privacy PGP 一种端到端加密技术,用于保护电子邮件、文件、磁盘分区等数据的机密性和完整性。由Philip Zimmermann于1991年开发,现已成为 OpenPGP标准(RFC 4880)。
椭圆曲线加密 ECC
- 发展历程
- 提出者:Neal Koblitz与Victor Miller(1985年)
- 广泛应用:2005年后普及,尤其因加密货币(如比特币)推动
- 核心优势
- 密钥短小:提供与RSA/DH同等安全性,但密钥长度更短
- 示例:256位ECC ≈ 3072位RSA安全性
- 计算高效:适合资源受限设备(如物联网设备、智能卡)
- 密钥短小:提供与RSA/DH同等安全性,但密钥长度更短
- 技术基础
- 椭圆曲线离散对数问题(ECDLP) :比传统DLP更难破解
- 标准化曲线:NIST P-256、secp256k1(比特币使用)
- 应用领域
- 加密货币:比特币(ECDSA签名)、以太坊
- 现代协议:TLS 1.3、Signal协议
- 移动设备:Apple iMessage、Android Keystore
混合加密系统
设计目标:结合公钥加密的密钥管理能力 + 对称加密的高效加解密性能。
工作流程:
- 生成私钥和公钥:服务器端在本地生成非对称的私钥和公钥;
- 分发密钥:服务器接到终端请求,随即将数字证书和公钥分发给终端;
- 加密对称密钥:终端在本地使用公钥对对称密钥进行加密,然后返回给服务器端;
- 解密对称密钥:服务器端用私钥解密对称密钥;
- 对称加密通信:随后服务器和终端使用对称密钥加密通信。
实际上就是用非对称密钥对对称密钥进行加密然后实现了对称密钥的共享,随后的通信就使用对称密钥进行加密。
数字签名
数字签名用于提供信任,即内容来自已声明的来源且未被更改。数字签名的基本功能由两个部分组成:签名算法和验证算法。
数字签名(“数字指纹”)是用于对消息进行加密签名的消息摘要。数字签名依赖于非对称 (公钥) 加密。要创建数字签名,请使用您的私钥对消息进行签名。然后,数字签名将成为消息的一部分。
这有两个影响:由于消息摘要算法,可以检测到对消息的任何更改;不能拒绝对消息进行签名,因为它是使用您的私钥签名的。
消息完整性和不可否认性这两个特性使数字签名成为电子商务应用程序非常有用的组件。数字签名可用于所有电子通信,它是附加到文档上的电子印章或印章。确保文档在传输过程中保持不变
数字签名的特性
其核心特性有两个:
- 私钥独占性:仅有私钥持有者能生成签名;
- 公钥可验性:任何拥有对应公钥的人都能验证签名的真伪。
签名步骤
- 消息摘要生成
- 使用哈希函数(如SHA-256)将原始消息转换为固定长度的摘要(如256位二进制串)。
- 作用:保证消息完整性,防止篡改。
- 签名变换
- 用私钥对摘要进行加密(如RSA-PSS或ECDSA算法),生成数字签名。
反过来就是验证流程,
- 逆向签名变换:用公钥解密签名,还原出原始摘要;
- 对接收到的信息进行重新计算哈希,并与解密得到的摘要进行对比。
哈希算法
哈希算法的输入输出特性:
- 任意长度输入;
- 固定长度输出。
哈希算法的核心安全属性,
属性 | 定义 | 示例攻击难度 |
---|---|---|
单向性 | 无法从哈希值 H(x) 反推原始数据 x | 暴力破解需 2²⁵⁶ 次尝试(SHA-256) |
抗碰撞性 | 难以找到 x ≠ y 且 H(x) = H(y) | MD5已破(可人工制造碰撞) |
抗第二原像攻击 | 给定 x ,难以找到 y ≠ x 满足 H(y) = H(x) | SHA-1已不满足 |
主流的哈希算法对比,
算法 | 输出长度 | 安全性状态 | 典型应用 |
---|---|---|---|
MD5 | 128位 | 已破解(碰撞攻击) | 仅用于校验文件完整性(非安全场景) |
SHA-1 | 160位 | 已破解(谷歌2017年碰撞演示) | 历史系统(已淘汰) |
SHA-2 | 224/256/384/512位 | 安全(NIST推荐) | TLS 1.2/1.3、比特币(SHA-256) |
SHA-3 | 224-512位 | 抗量子计算候选 | 新兴系统(如区块链2.0) |
数字证书
数字签名的验证不能仅依靠发送方提供的公钥,因为可能遭受中间人攻击,导致收到篡改的公钥,从而导致实际来源非法的信息“验证通过”。于是有了数字证书。
数字证书是由可信的证书颁发机构(CA) 签发的电子文件,解决公钥与身份的绑定问题。其包含:
- 持有者信息:名称、组织等。
- 公钥:证书主体的加密公钥。
- CA 的数字签名:用 CA 私钥对证书内容签名,确保证书未被篡改。
验证流程:
- 接收方获取发送方的数字证书。
- 用CA的公钥验证证书签名(确认证书真实性)。
- 从证书中提取发送方的可信公钥,再用此公钥验证消息签名。
一个 X.509 证书字段如下,
字段名 | 说明 | 示例值/格式 | 版本支持 | 安全关联 |
---|---|---|---|---|
版本号 (Version) | 标识X.509标准版本 | Version 3 (0x2) | V1/V2/V3 | V3支持扩展字段,增强灵活性 |
颁发者 (Issuer) | 签发证书的CA名称 | /C=US/O=Let's Encrypt/CN=R3 | V1/V2/V3 | 必须匹配浏览器/系统信任的根CA |
序列号 (Serial) | CA分配的唯一标识符 | 04:6C:9E:... (十六进制) | V1/V2/V3 | 随机性防碰撞攻击,用于吊销追踪 |
主題 (Subject) | 证书持有者身份(域名/组织名) | CN=example.com 或 O=Google LLC | V1/V2/V3 | HTTPS中需严格匹配域名(防止钓鱼) |
公钥 (Public Key) | 持有者的公开密钥 | RSA-2048: MIIBIjAN... ECC: 04:9A:7B:... | V1/V2/V3 | 密钥强度直接影响安全性(如RSA≥2048位) |
公钥算法 | 公钥的加密算法及用途 | sha256WithRSAEncryption id-ecPublicKey | V1/V2/V3 | 算法需符合标准(如禁用SHA1) |
有效期 | 证书生效/过期时间 | Not Before: 2023-01-01 Not After: 2023-04-01 | V1/V2/V3 | 过期证书自动失效 |
扩展字段 | V3新增的可选字段 | Subject Alternative Name (SAN) Key Usage | 仅 V3 | - SAN :多域名支持- Key Usage :限制用途(如仅签名)- CRL/OCSP :吊销检查 |
数字证书验证流程总结
- 数字签名验证
步骤 | 说明 | 技术实现 |
---|---|---|
证书签名来源 | 证书本身包含CA的私钥签名 | 使用CA的公钥解密签名,验证证书完整性 |
验证方法 | 用CA的公钥测试签名有效性 | 若解密后的哈希值与证书内容哈希匹配,则证书可信 |
失败场景 | 签名不匹配(证书可能被篡改或伪造) | 浏览器显示警告(如NET::ERR_CERT_AUTHORITY_INVALID ) |
- 有效期检查
字段 | 说明 | 安全措施 |
---|---|---|
有效期范围 | 证书中明确标注生效(Not Before)和过期时间(Not After) | 系统当前时间必须在有效期内 |
过期后果 | 过期证书自动失效 | 浏览器阻止访问(如ERR_CERT_DATE_INVALID ) |
示例 | Not Before: Jan 1 2023 00:00:00 GMT Not After: Dec 31 2023 23:59:59 GMT | 若当前时间为2024年,证书被拒绝 |
- 吊销状态检查
机制 | 说明 | 技术实现 |
---|---|---|
CRL(证书吊销列表) | CA定期发布的已吊销证书序列号列表 | 客户端下载CRL文件检查(延迟高,逐步淘汰) |
OCSP(在线检查) | 实时查询证书状态 | 浏览器向CA的OCSP服务器发送请求(响应包含good /revoked /unknown ) |
OCSP装订 | 服务器在TLS握手时附带OCSP响应 | 减少客户端直接查询CA的延迟(通过status_request TLS扩展实现) |
失败处理 | 若证书被吊销或检查失败 | 立即终止连接(如ERR_CERT_REVOKED ) |
完整验证流程:1. 签名验证 → 2. 有效期检查 → 3. 吊销检查 (任何一步失败则拒绝证书)
网络安全
目前 web 常用的 http
协议非常不安全,其只是一个运行在 TCP/IP 上简单且无状态的客户端/服务器应用程序。目前面临的威胁包括:完整性,即数据的篡改、插入;机密性,即窃听、服务器盗窃;身份验证,即冒充、数据伪造;拒绝服务,即使用 DDoS 等对服务器进行攻击。
HTTP 和 HTTPs
HTTP 是一种应用层协议,用于客户端(浏览器)和 Web 服务器之间的通信。它遵循请求-响应模型,其中客户端发送请求,服务器返回响应。无状态协议:每个请求都是独立的,这意味着除非单独管理(例如,使用 cookie),否则不会维护任何会话。
HTTP 方法:
GET
:检索数据;POST
:发送数据;PUT
:更新数据;DELETE
:删除数据;HEAD
:仅检索报头。
HTTPs 则是 HTTP 为了安全通信而产生的拓展协议,通过 TLS/SSL 加密。
特性 | HTTP | HTTPs |
---|---|---|
安全性 | 未加密 | 加密 |
身份验证 | 无身份验证 | 已验证服务器身份 |
数据完整性 | 数据可以被修改 | 数据无法更改 |
性能 | 更快 | 稍微慢一点(TLS 握手) |
SSL 安全套接层 Secure Socket Layer
SSL 是一种用于安全网络通信的加密协议。其主要的目的就是实现通信的保密性和完整性以及身份验证。
TLS 传输层安全性协议 Transport Layer Security
IETF 于 1999 年将 SSL 3 更名为传输层安全 (TLS),并于 2015 年使 SSL 过时。SSL 3.0 版被互联网工程任务组 (IETF) 采用为 TLS 1.0 版。
特性 | SSL | TLS |
---|---|---|
最新版本 | SSL 3.0 (已弃用) | TSL 1.3 |
安全性 | 容易受到攻击 | 更安全有效 |
握手 | 开销更大,更慢 | 有优化,更快 |
密码套件 | 过时的算法 | 使用更强的密码 |
SSL/TLS 使用两种不同类型的加密速率,会话密钥和公/私钥。对于公钥/私钥而言,一般需要 2048 位才被认为是安全的。会话密钥会在每次有人连接到网站时,都会在 SSL/TLS 握手过程中生成。它比公钥/私钥大小短,一方面就算密钥被破解也只影响了一次会话的内容,另一方面它会减少服务器的负载。会话密钥会迁就更低的密钥位数支持,例如服务器支持 256,浏览器只支持 128 的时候,会话密钥会使用 128 位。
SSL/TLS 结构
SSL/TLS协议栈分为会话层(Session) 和连接层(Connection) ,两者协同工作以实现安全通信:
层级 | 会话层(Session) | 连接层(Connection) |
---|---|---|
定义 | 客户端与服务器之间的长期安全关联 | 基于会话建立的单次可靠通信通道 |
创建方式 | 由握手协议(Handshake Protocol)协商建立 | 在会话基础上通过记录协议(Record Protocol)传输数据 |
复用性 | 一个会话可被多个连接共享(如HTTP/2多路复用) | 每个连接独立加密,但共享会话的加密参数 |
生命周期 | 长期(可缓存,支持会话恢复) | 短暂(随TCP连接关闭而终止) |
Change Cipher Spec(CCS)协议的作用
- 核心功能:
- 通知对端切换至新协商的加密参数(如AES-256密钥、HMAC-SHA256哈希算法)。
- 将握手阶段生成的”pending state”转为”current state”,此后数据加密生效。
Alert协议
- 核心功能:
- 传递 SSL/TLS 相关的警告或错误消息,信息会被压缩或加密。
- 信息:两个字节,一个定义致命/警告,另一个定义警报代码。
- 意外消息、错误记录 MAC、解压缩失败
- 握手失败(无共同点)、非法参数(不一致或无法识别的参数)
- 无证书、错误证书、不支持的证书、证书已吊销、证书过期、证书未知。
SSL 握手协议,允许服务器和客户端:
- 相互验证
- 协商加密和 MAC 算法
- 协商要使用的加密密钥
一般来说,建立状态,包括一系列分阶段的消息
- 建立安全功能
- 服务器认证和密钥交换
- 客户端认证和密钥交换
- 完成
TLS 密钥交换
TLS 是基于混合加密系统的,在混合密码系统中,公钥加密用于在双方之间安全地交换密钥,然后使用该密钥对交换的数据进行加密/解密。
有两种主要的方式实现公钥交换。
- RSA 密钥交换。在 TLS RSA 密钥交换中,共享密钥由客户端决定,然后客户端使用服务器的公钥(从证书中提取)对其进行加密并将其发送到服务器。
- Diffie-Hellman 密钥协议。客户端和服务器都首先创建一个公钥和一个私钥对。然后,他们将密钥中公共部分发送给另一方。当每一方收到另一方的公钥份额时,他们将其与自己的私钥相结合,最终得到相同的值:预主密钥。然后服务器使用数字签名来确保交换未被篡改。如果客户端和服务器都为每次交换选择一个新的密钥对,则此密钥交换称为“临时”。
RSA 模式有一个严重的缺点:它不是前向安全(前向安全性指即使长期私钥泄露,历史通信仍无法被解密。)的。这意味着,如果有人记录了加密的对话,然后获得了服务器的 RSA 私钥,他们就可以解密对话。如果对话被记录下来,并且密钥是在未来的某个时间获得的,这甚至也适用。为了降低风险,从 TLS 1.3 中删除了 RSA 加密,留下了DiffieHellman 作为唯一的密钥交换机制。
TLS 1.3 握手阶段
TLS 1.3 握手时间明显短于其前身。
- 客户端 Hello 消息开始握手,但是,TLS 1.3 已将支持的密码数量从 37 个减少到 5 个。这意味着客户端可以猜测将使用什么密钥协议/交换协议,然后从它猜测的任何协议发送其密钥共享。
- 服务器将使用自己的 Server Hello 消息进行响应,并将发送证书和自己的密钥共享部分,计算会话密钥,并以 Server finished 消息结束。
- 客户端将对 SSL 证书进行身份验证,并使用两个密钥共享来计算自己的会话密钥副本。完成后,它会发送自己的 Finished 消息。 密钥是使用临时 Diffie-Hellman(EDH 或 DHE)生成/共享的,而 TLS 1.3 中允许的三种主要签名算法是:RSA(仅签名)、椭圆曲线数字签名算法 (ECDSA) 和爱德华兹曲线数字签名算法 (EdDSA)。
SSL/TLS: 总结
版本 | 状态 | 关键特性 | 安全性风险 |
---|---|---|---|
SSL 2.0 | 已淘汰 (1995) | - 弱加密(如40位RC4) - 无完整性校验 | - 易受中间人攻击 - 已被所有现代系统禁用 |
SSL 3.0 | 已弃用 | - 引入完整性校验(MAC) - 支持更多加密套件 | - POODLE攻击(强制降级漏洞) - 2014年被RFC 7568正式禁用 |
TLS 1.0 | 已弃用 | - 标准化协议名称(SSL→TLS) - 支持AES和3DES | - BEAST攻击(CBC模式漏洞) - 易被强制降级到SSL 3.0 |
TLS 1.1 | 已弃用 | - 改进CBC模式防护 - 明确禁止SSL 2.0回退 | - 仍支持弱加密套件(如SHA-1) - 缺乏现代算法支持 |
TLS 1.2 | 安全(广泛使用) | - 支持AEAD加密(如AES-GCM) - 强制SHA-256哈希 - 定义扩展协议(如SNI) | - 需手动禁用弱套件(如RC4) - 握手延迟较高(2-RTT) |
TLS 1.3 | 最安全 | - 仅前向安全算法(如ECDHE) - 1-RTT握手优化 - 移除所有弱加密(如RSA密钥交换) | - 兼容性问题(旧设备可能不支持) - 需更新CA证书(如EdDSA支持) |
TLS 1.3 中的改进:
- 删除了过时的加密算法(RSA 密钥交换、SHA-1)。
- 更快的握手(将往返次数从 2 次减少到 1 次)。
- 完全正向保密 Perfect Forward Secrecy(PFS):确保即使密钥泄露,过去的通信也保持安全。
- 更强的加密(ChaCha20、AES)。
常见的 SSL/TLS 攻击和缓解措施
攻击类型 | 描述 | 缓解措施 |
---|---|---|
中间人攻击Man-in-theMiddle | 攻击者拦截通信 | 使用HTTPS,验证证书 |
降级攻击 Downgrade Attack | 强制使用旧的不安全TLS/SSL版本 | 禁用TLS 1.0/1.1,强制使用TLS 1.2或1.3 |
野兽攻击 BEAST Attack | 利用TLS 1.0的弱点 | 升级到TLS 1.2或1.3 |
贵宾犬攻击 POODLE Attack | SSL 3.0漏洞 | 禁用SSL 3.0,使用TLS 1.2或1.3 |
心脏出血 Heartbleed | OpenSSL漏洞导致内存泄漏 | 更新OpenSSL补丁 |
DROWN 攻击 DROWN Attack | 利用配置错误的服务器上的SSLv2 | 禁用SSLv2和弱密码 |
SSL/TLS 的问题
类别 | 说明 |
---|---|
性能影响 | 会降低服务器性能(加密/解密增加计算开销) |
保护范围 | 仅保护传输中的数据,不保护数据库存储的数据 |
认证限制 | 无法认证: - 计算机操作者身份 - 网店所有者身份 - 消费者身份 - 支付系统其他参与方身份 |
支付安全 | 无法防止盗用信用卡在线交易 |
证书成本 | 证书价格差异大(DV证书免费,EV证书价格较高) |
协议特性 | 是双方协议(不同于三方的SET协议) |
安全电子交易 Secure Electronic Transaction SET
SET 是 Master Card、Visa 和其他公司于 1996 年专门设计的一种消息传递协议,用于保护开放网络上的银行卡支付交易。这不是一个支付系统,而是一套安全协议和格式。未得到广泛部署。 SET 模拟了卡支付中涉及的所有参与者:购买者、(商家、银行),他们之间的信任关系,数字签名的法律含义。 SET 为交易中涉及的每个实体提供加密身份验证(多方安全性)。 SET 使用消息加密,而不是通道加密。使用 SET 向每个持卡人颁发一个数字签名。这与使用 SET 协议的软件一起构成了一个 SET 电子钱包。SET 消息与传统银行网络多年来使用的 SET 消息基本相同。
SET 允许它们在不安全的开放 Internet 上流动。 SET 定义了银行、商家、持卡人之间的所有必要通信,而 SSL 在 2 台计算机之间创建安全连接。SET 向商户保证持卡人不会说“it is not me”; 银行有证据证明我进行了购买。SET 为持卡人提供商家合法的保证。
- 缺点:SET 要求在银行网络、商家位置和消费者的计算机上安装适当的软件。
- 优势:商家无权访问客户的账户信息(财务数据的隐私)。SET 提供完整的卡支付系统(支付传输、确认和查询)。机密性:对称密钥加密;授权:公钥加密 RSA;完整性:哈希。
SSL 与 SET 协议核心差异对比
对比维度 | SSL/TLS协议 | SET 协议 |
---|---|---|
认证能力 | 仅支持服务器端认证 | 支持双向认证(商户+持卡人) |
不可否认性 | ❌ 无法提供 | ✅ 通过数字证书实现交易不可抵赖 |
数据完整性 | 保护传输过程数据 | 额外确保订单内容不可篡改 |
适用场景 | 通用网络通信加密 | 专为电子支付设计 |
当前应用现状 | 全网普及(HTTPS标准) | 技术未消亡但实际使用率为零 |
电商适用性 | 存在缺陷(但无替代方案) | 理论更安全但未推广 |
客户端身份识别 | ❌ 无法验证客户真实身份 | ✅ 可验证持卡人身份 |
网络安全控制
网络安全控制是指为增强网络安全而采用的不同措施,例如访问控制、身份验证、授权、密码学、网络安全、安全策略等。以下是最常见的网络安全保护措施:防火墙 Firewall、入侵检测系统 Intrusion Detection System、蜜罐 Honeypots。
防火墙
防火墙是一种网络安全设备/软件,它根据组织先前建立的安全策略监控和过滤传入和传出的网络流量。从最基本的角度来看,防火墙本质上是位于私有内部网络和公共网络之间的屏障。防火墙的主要目的是允许非威胁性流量进入,并将危险流量拒之门外。
防火墙是硬件或软件(或硬件和软件的组合),用于监视试图通过边界或网络的数字数据包的传输。 硬件防火墙:保护整个网络;在路由器级别实施;通常更昂贵,更难配置。 软件防火墙:保护一台计算机;通常更便宜,更容易配置; 软件防火墙如何工作?在数据到达防火墙任一侧时检查每个单独的数据“数据包”(入站或出站到您的计算机),确定是否应允许它通过或是否应阻止它。
当从网络请求某些内容时,防火墙会假装是它发出了请求,而不是您的计算机。由于互联网甚至看不到您的计算机,因此除了您的防火墙之外,没有其他可供蠕虫或破解者探测或攻击的东西。而你的防火墙只是一个哑盒。
防火墙策略
为了保护专用网络和单个计算机免受更大网络的危险,可以使用防火墙根据一组预定义的规则(称为防火墙策略)来过滤传入或传出的流量。
防火墙策略对内容的过滤是逐步的。如果将 IP 地址视为房屋,将端口号视为房屋内的房间。只允许受信任的人(源地址)进入房屋(目标地址),然后进一步过滤,以便只允许房屋内的人访问某些房间(目标端口),具体取决于他们是房主、孩子还是客人。业主可以进入任何房间(任何端口),而儿童和客人可以进入一组特定的房间(特定端口)。
个人防火墙
个人防火墙又叫作桌面防火墙,是一种用于保护单台连接 Internet 的计算机免受入侵者的攻击的软件。
个人防火墙的功能:阻止黑客访问您的计算机;保护您的个人信息;阻止“弹出式”广告和某些 Cookie;确定哪些程序可以访问网络。个人防火墙不能做什么:无法防止电子邮件病毒,只有具有更新定义的防病毒产品才能防止电子邮件病毒;初始设置后,你可以忘记它,防火墙将需要定期更新规则集和软件本身。
防火墙的优缺点
防火墙的优势:
- 增强的安全性:阻止未经授权的访问和网络攻击。
- 流量过滤:控制允许哪些数据包进入网络。
- 日志记录和警报:为管理员提供可疑活动的日志。
防火墙的缺点:
- 性能影响:由于流量检查,可能会降低网络速度。
- 复杂配置:需要专业知识才能有效地设置和维护。
- 无法抵御内部威胁:防火墙无法阻止来自内部用户的攻击。
- 绕过风险:攻击者可以使用隧道或加密威胁等技术来逃避检测。
- 对高级攻击的有限防御:无法抵御社会工程或零日漏洞。
防火墙的类型
- 数据包过滤防火墙。根据 IP 地址、端口和协议检查单个数据包。快速高效但缺乏深入的检测能力。
- 状态检查防火墙。监控活动连接并跟踪网络流量的状态。比数据包过滤更安全,但需要更多资源。
- 代理防火墙充当用户和互联网之间的中介。提供强大的安全性,但会降低网络性能。
- 下一代防火墙 (NGFW)许多最近发布的防火墙产品被吹捧为“下一代”架构。但是,下一代防火墙没有一个定义。包括传统防火墙功能以及入侵防护、深度数据包检测 (DPI) 和应用程序感知。更先进但也更昂贵。
- 基于云的防火墙托管在云基础设施上,为远程用户提供可扩展的保护。减少对本地硬件的依赖,但依赖于第三方服务。
- Web 应用程序防火墙 (WAF)保护 Web 应用程序免受 SQL 注入和跨站点脚本 (XSS) 等威胁。侧重于应用程序安全,而不是一般的网络保护。
数据包过滤防火墙 Packet Filtering Firewalls
数据包过滤防火墙成本低,对网络性能的影响小。数据包过滤防火墙的三个子集:
- 静态过滤:如果数据包与数据包过滤器的规则集匹配,则数据包过滤器将丢弃或接受它。
- 动态过滤:允许防火墙根据数据包标头中的信息,通过了解协议的运作方式,对紧急事件做出反应,并更新或创建规则来处理事件。
- 状态检查:使用状态表跟踪内部和外部系统之间的每个网络连接的防火墙。
静态包过滤防火墙是最早的防火墙过滤机制。一次单独检查一个数据包。只查看一些网络和传输标头。因此,无法阻止多种类型的攻击。可以阻止带有欺骗性 IP 地址的攻击数据包。不再用作边界防火墙的主要过滤机制。可用作主要边界防火墙的辅助过滤机制。
状态数据包检查防火墙 (SPI):查看相同的数据包信息,但也记录有关 TCP 连接的信息。使用状态表跟踪内部和外部系统之间建立的每个网络连接。通过记录哪个站点发送了什么数据包以及何时发送,跟踪对话中每个数据包的状态和上下文。SPI 防火墙可以判断数据包何时是源自受信任网络的合法会话的一部分。SPI 防火墙维护包含每个活动连接信息的表格,包括 IP 地址、端口和数据包的序列号。使用这些表,SPI 可以只允许响应从内部网络发起的连接的入站 TCP 数据包。主要缺点:根据状态表管理和验证数据包的额外处理要求,这可能会使系统受到 DoS 攻击。
连接具有不同的状态或阶段。不同的状态会受到不同的攻击,SPI 防火墙对不同的状态使用不同的筛选规则。
SPI 防火墙的好处:
- 低成本。大多数数据包不是数据包打开尝试的一部分这些可以非常简单地处理,因此成本低廉连接打开尝试数据包是更昂贵的过程,但很少见;
- 安全性。应用程序级攻击以外的攻击通常无法通过 SPI 防火墙此外,SPI 防火墙可以在需要时使用其他形式的过滤;
- 主导地位。高安全性和低成本的结合使 SPI 防火墙非常流行,当今几乎所有主要的边界防火墙都使用状态数据包检查。
应用程序网关/代理服务器 Application Gateway/Proxy Servers
应用程序网关经常安装在专用计算机上; 也称为代理服务器。由于代理服务器通常放置在网络的不安全区域(例如 DMZ),因此它面临来自不太受信任的网络的更高级别的风险使用此配置,代理服务器(而不是 Web 服务器)暴露在外部世界。可以在代理服务器后面实现额外的过滤路由器。配置为 Web 代理的网关将不允许任何 ftp、gopher、telnet 或其他流量通过对协议具有完全访问权限用户从代理请求服务。代理验证请求是否合法。然后 actions 请求并将结果返回给用户。往往比数据包过滤器更安全只需要仔细检查几个允许的应用程序。易于记录和审计所有传入流量。
防火墙结构
防火墙设备可以在多种网络连接架构中配置,最佳配置取决于三个因素:网络目标;组织开发和实施架构的能力;可用于功能的预算。防火墙的四种常见架构实现:数据包过滤路由器 packet filtering routers、屏蔽主机防火墙 screened host firewalls 、双宿主防火墙 dual-homed firewalls 、屏蔽子网防火墙 screened subnet firewalls。
数据包过滤路由器大多数具有网络连接的组织都有一个路由器用作网络的接口,这些路由器中的许多都可以配置为拒绝那些组织不允许访问网络的数据包。缺点包括缺乏审计和强身份验证。
屏蔽主机架构。将数据包过滤路由器与单独的专用防火墙(如应用程序代理服务器)相结合。允许路由器预先屏蔽数据包,以最大限度地减少内部代理上的流量/负载。单主机架构在内部网络和互联网之间放置一个防火墙。简单,但如果防火墙受到威胁,则容易受到攻击。单独的主机(称为堡垒主机或牺牲主机),可能成为外部攻击的目标,应非常彻底地保护。双宿主主机体系结构具有两个网络接口的防火墙:一个连接到网络,另一个连接到内部网络。比屏蔽主机更安全,但仍然是单点故障。
屏蔽子网防火墙,使用两个防火墙创建一个隔离区 (DMZ),其中放置面向公众的服务(例如 Web 服务器)。通过将内部系统与网络隔离来提供额外的安全层。优点现在有三个级别的防御来阻止入侵者。外部路由器仅向网络通告屏蔽子网的存在; 因此,内部网络对互联网不可见。同样,内部路由器仅向内部网络通告屏蔽子网的存在; 因此,内部网络上的系统无法构建到互联网的直接路由。防火墙对于网络安全至关重要,但必须辅以入侵检测系统 (IDS) 和端点保护等其他安全措施。组织应根据其安全需求、网络规模和预算选择合适的防火墙类型和体系结构。仅靠防火墙无法阻止所有网络威胁; 分层安全方法是必要的。
防火墙安全边界的变化
传统的基于边界 Perimeter的安全模型传统上,防火墙充当网络边界的主要防御,其依据是假设公司网络内部的所有内容都是可信的,而外部的所有内容都是潜在威胁。但是,由于以下几个因素,固定安全边界的概念已经被削弱:
- 云计算组织现在将数据存储在云环境(AWS、Azure、Google Cloud)中,而不是本地服务器中。员工可以绕过传统防火墙,从任何地方访问公司资源。
- 远程工作和 BYOD(自带设备)员工使用个人设备和家庭网络访问公司数据。传统的防火墙无法有效地对远程用户实施安全策略。
- 零信任安全模型“从不信任,始终验证” 取代了旧的基于边界的信任模型。访问权限的授予基于身份、上下文和最低权限,而不是网络位置。
- 加密流量 (TLS/SSL) 的使用增加许多网络攻击现在使用加密,使防火墙更难检查流量。攻击者使用 SSL/TLS 隧道等技术来绕过传统防火墙。
- 复杂威胁的兴起恶意软件和黑客现在通过网络钓鱼、内部威胁和泄露的凭据渗透到网络中。攻击者通常会在网络内部获得访问权限,从而使基于边界的防火墙失效。
现代安全方法
是的,但仅靠防火墙是不够的。现代安全方法包括:
- 下一代防火墙 (NGFW)提供深度数据包检测 (DPI)、入侵防御 (IPS)、应用层过滤和基于机器学习的威胁检测。可以通过检查加密流量和监控用户行为来实施 Zero Trust 原则。
- 基于云的防火墙(防火墙即服务 - FWaaS)保护云工作负载和远程用户,而无需本地防火墙硬件。示例:Zscaler、Palo Alto Prisma、Cloudflare Gateway。
- 网络分段。组织不依赖单个边界防火墙,而是将网络划分为更小的隔离区域。如果攻击者攻破了一个网段,他们就无法在网络中自由移动。
入侵检测系统 Intrusion Detection System (IDS)
入侵检测系统 (IDS) 是一种安全机制,旨在监控网络或系统活动的恶意行为。
- 入侵检测系统的优势
- 早期威胁检测:在可疑活动造成重大损害之前识别它们。
- 实时监控:持续分析系统和网络活动。
- 取证分析:提供攻击尝试的日志和记录。
- 安全策略实施:帮助组织遵守安全管理法规。
- 入侵检测系统的缺点
- 误报:基于异常的 IDS 可能会将正常活动标记为威胁。
- 漏报:基于签名的 IDS 可能会遗漏新的、不断演变的威胁。
- 高资源消耗:处理大量流量需要计算能力。
- 无主动保护:IDS 仅检测和警报; 它不会阻止攻击(IPS 会)。
IDS 的类型
- 基于主机的 IDS (HIDS)
- 基于网络的 IDS (NIDS)
- 按检测方法区分的现代 IDS
- 基于特征码的 IDS。严重依赖于一组预定义的攻击和流量模式,称为特征码。
- 基于异常的(启发式)IDS。监控活动并尝试将其分类为“正常”或“异常”。
基于网络的 IDS
基于网络的 IDS (NIDS) 是解析网络通信量的引擎。除了捕获所有网络流量外,NIDS 还会将流量与一组预先分类的攻击特征进行比较。一旦在网络数据包中找到签名,就会启动保护措施,并停止并记录攻击。NIDS 引擎可以轻松部署,而无需进行重大的网络修改。
NIDS 的优势:
- 提供 IDS 覆盖需要更少的系统。
- 部署、维护和升级成本通常较低。
- NIDS 可以查看所有网络流量,并且可以关联多个系统之间的攻击。 NIDS 的缺点:
- 当流量被加密时,它是无效的。
- 它不知道主机本身的活动。
基于主机的 IDS
仅检查特定主机上的活动,检查日志、审计跟踪和进出主机的网络流量,实时或定期进行检查。 可能导致 HIDS 发出警报的标志
- 登录失败
- 在不规则时间登录
- 权限提升
- 添加新的用户帐户
优点:
- 可以针对一些特定的操作系统
- 可以降低误报率
- 可以在解密后检查数据
- 可以针对特定的应用程序
- 可以确定警报将如何影响系统
缺点:
- 必须处理您想要监视的每个系统上的信息
- 拥有和维护成本可能很高
- 使用本地系统资源
被动 HIDS,监视活动、分析活动、生成活动并发出警报;主动 HIDS,与被动 HIDS 的功能相同,能够通过运行脚本或终止进程来对活动做出反应。
现代 IDS
现代 HIDS,通常称为基于主机的入侵防护系统 (HIPS),使用以下组件来防止攻击
- 集成系统防火墙
- 基于行为和签名的 IDS
- 恶意软件检测和预防
基于签名的 IDS Signature-Based IDS,它也被称为基于知识的 IDS。它检查数据通信量,寻找与特征码匹配的内容,特征码是预先配置、预先确定的攻击模式。问题:随着新攻击策略的发现,特征码必须不断更新。
基于统计异常的 IDS STATISTICAL ANOMALY-BASED IDS,它也被称为基于行为的 IDS。从正常流量中收集数据并建立基线。建立基线后,根据统计方法定期对网络活动进行采样,并将样本与基线进行比较。如果活动超出基线参数(称为剪切级别),IDS 会通知管理员。系统能够在查找任何类型的异常活动时检测新型攻击。此外,可能无法检测到微小的变化,并可能产生许多误报。
入侵防御系统 Intrusion Prevention Systems IPS
入侵防御系统 (IPS) 是一种主动安全技术,可实时检测和阻止恶意活动。与仅检测威胁并生成警报的入侵检测系统 (IDS) 不同,IPS 通过阻止恶意流量来主动阻止攻击。IPS 通常集成到下一代防火墙 (NGFW) 中,以实现高级网络安全。
对比维度 | 入侵检测系统(IDS) | 入侵防御系统(IPS) |
---|---|---|
主要功能 | 检测威胁并生成警报 | 实时检测并主动阻断威胁 |
响应方式 | 被动响应(仅记录和报警) | 主动响应(实时拦截恶意流量) |
部署位置 | 旁路监听(复制流量进行分析) | 串联部署(直接处理流量) |
延迟影响 | 无网络延迟 | 可能引入微秒级延迟 |
典型用途 | 安全监控和取证分析 | 实时安全防护 |
代表产品 | Snort、Zeek、OSSEC | Palo Alto NGFW、Cisco Firepower、Suricata |
蜜罐系统 Honeypot System
它是一个牺牲性的计算机系统,旨在吸引网络攻击,就像诱饵一样。它模仿黑客的目标,并利用他们的入侵尝试来获取有关网络犯罪分子及其作方式的信息,或分散他们对其他目标的注意力。
蜜罐的工作原理如下,蜜罐看起来像一个真实的计算机系统,带有应用程序和数据,欺骗网络犯罪分子认为它是一个合法的目标。例如,蜜罐可以模仿公司的客户计费系统,这是想要查找信用卡号的犯罪分子经常攻击的目标。一旦黑客进入,就可以跟踪他们,并评估他们的行为,以获取有关如何使真实网络更安全的线索。通过构建蓄意的安全漏洞,蜜罐对攻击者具有吸引力。蜜罐安全有其局限性,因为蜜罐无法检测合法系统中的安全漏洞,并且它并不总是能识别攻击者。