在信息安全领域,防窃听、防篡改、防伪造是三大核心目标,它们共同构成了数据保护的基石。以下从技术原理、实现方案、典型场景三个维度展开详解:
一、防窃听(Confidentiality)
目标
确保数据在传输或存储时仅允许授权方访问内容,防止未授权方(如黑客、中间人)获取敏感信息。
技术实现
- 加密算法
- 对称加密(AES、ChaCha20)
使用同一密钥加密和解密,速度快,适合大数据量场景。
- 对称加密(AES、ChaCha20)
# AES-256加密示例
cipher = AES.new(key, AES.MODE_GCM)
ciphertext, tag = cipher.encrypt_and_digest(plaintext)
- 非对称加密(RSA、ECC)
公钥加密、私钥解密,解决密钥分发问题,但性能较低。
# RSA加密示例(通常用于加密对称密钥)
ciphertext = rsa.encrypt(plaintext, public_key)
- 协议与模式
- 混合加密(如TLS):
非对称加密交换对称密钥,后续通信使用对称加密(如AES-GCM)。 - 存储加密(如LUKS):
对磁盘分区全盘加密,密钥由密码或TPM芯片保护。
- 混合加密(如TLS):
典型场景
- HTTPS通信(加密网页内容)
- 数据库字段加密(如用户密码、信用卡号)
- 加密消息应用(如Signal、WhatsApp端到端加密)
攻击防御案例
- 中间人攻击(MITM):
通过TLS证书验证和加密通道,防止攻击者窃听HTTP明文数据。 - 数据库泄露:
即使数据库被拖库,加密字段无法直接读取(如用户密码哈希加盐存储)。
二、防篡改(Integrity)
目标
确保数据在传输或存储过程中未被非法修改,任何篡改均可被检测。
技术实现
- 哈希函数(SHA-256、BLAKE3)
生成数据唯一指纹,用于快速校验完整性。
hash_value = hashlib.sha256(data).digest()
- 消息认证码(HMAC)
结合密钥的哈希,防止攻击者同时篡改数据和哈希值。
hmac_value = hmac.new(key, data, hashlib.sha256).digest()
- 数字签名(RSA、ECDSA)
用私钥对数据哈希签名,公钥验证签名,同时提供完整性和身份认证。
# 签名
signature = private_key.sign(data, ec.ECDSA(hashes.SHA256()))
# 验证
public_key.verify(signature, data, ec.ECDSA(hashes.SHA256()))
运行
典型场景
- 软件包签名(如Linux apt仓库的GPG签名)
- 区块链交易验证(确保交易数据不可篡改)
- API请求防篡改(如阿里云API的签名机制)
攻击防御案例
- 数据篡改:
攻击者修改下载的软件安装包,但签名验证失败阻止安装。 - DNS劫持:
DNSSEC通过签名确保DNS响应未被篡改。
三、防伪造(Authenticity)
目标
确保数据或身份来源可信,防止攻击者伪造合法实体(如用户、服务器、设备)。
技术实现
- 数字证书(X.509)
由CA(证书颁发机构)签发,绑定公钥与身份信息,用于验证服务器或客户端身份。
# 证书内容
Issuer: Let's Encrypt
Subject: *.example.com
Public Key: RSA 2048-bit
Signature: SHA256-RSA
-
多因素认证(MFA)
结合密码(知识因素)、硬件令牌(持有因素)、生物特征(生物因素)增强身份真实性。 -
挑战-响应机制
服务端生成随机数(Nonce),客户端用私钥签名响应,防止重放攻击。
1. 客户端请求登录 → 服务端返回Nonce
2. 客户端用私钥签名Nonce → 服务端用公钥验证
典型场景
- HTTPS服务端身份验证(防止钓鱼网站)
- 硬件安全密钥(如YubiKey登录GitHub)
- OAuth2身份令牌(如Google登录第三方应用)
攻击防御案例
- 钓鱼攻击:
合法网站使用EV证书,浏览器显示公司名称,伪造网站无法获得可信证书。 - 重放攻击:
API请求包含时间戳和Nonce,服务端拒绝重复请求。
四、三者的差异
核心区别
维度 | 防窃听 | 防篡改 | 防伪造 |
---|---|---|---|
核心目标 | 数据保密 | 数据完整性 | 身份/数据来源真实 |
技术侧重 | 加密算法 | 哈希/签名 | 证书/认证协议 |
攻击类型 | 窃听、侧信道攻击 | 数据篡改、注入 | 钓鱼、身份冒充 |