信息安全基础
00:00
信息安全基础:密码学原理、对称加密、非对称加密、哈希函数与数字签名
1. 信息安全概述
1.1 CIA 三元组
| 属性 | 说明 | 威胁 |
|---|---|---|
| 机密性(Confidentiality) | 信息不被未授权访问 | 窃听、泄露 |
| 完整性(Integrity) | 信息不被未授权修改 | 篡改、伪造 |
| 可用性(Availability) | 信息可被授权用户访问 | DDoS、破坏 |
1.2 安全服务
- 认证:验证身份
- 访问控制:限制资源访问
- 数据机密性:防止信息泄露
- 数据完整性:检测篡改
- 不可否认:防止抵赖
2. 对称加密
2.1 基本原理
加密和解密使用相同密钥:
2.2 分组密码
AES(Advanced Encryption Standard):
| 参数 | AES-128 | AES-192 | AES-256 |
|---|---|---|---|
| 密钥长度 | 128 位 | 192 位 | 256 位 |
| 轮数 | 10 | 12 | 14 |
| 分组大小 | 128 位 | 128 位 | 128 位 |
AES 操作:
- SubBytes:S盒字节替换
- ShiftRows:行移位
- MixColumns:列混合
- AddRoundKey:轮密钥加
工作模式:
| 模式 | 并行加密 | 并行解密 | 随机访问 | 错误传播 |
|---|---|---|---|---|
| ECB | 是 | 是 | 是 | 1块 |
| CBC | 否 | 是 | 否 | 2块 |
| CTR | 是 | 是 | 是 | 1块 |
| GCM | 是 | 是 | 是 | 1块 |
2.3 流密码
ChaCha20:Google 推荐的流密码,比 AES 在软件实现上更快。
3. 非对称加密
3.1 基本原理
使用一对密钥:公钥加密,私钥解密。
3.2 RSA
密钥生成:
- 选择两个大素数
- 计算 ,
- 选择 ,满足 ,
- 计算 ,满足
- 公钥 ,私钥
加密:
解密:
正确性:由 Euler 定理,
安全性:基于大整数分解困难性。推荐密钥长度 ≥ 2048 位。
3.3 椭圆曲线密码(ECC)
在有限域上的椭圆曲线上定义运算:
ECDSA:椭圆曲线数字签名算法。
ECDH:椭圆曲线 Diffie-Hellman 密钥交换。
优势:256 位 ECC ≈ 3072 位 RSA 的安全强度。
3.4 Diffie-Hellman 密钥交换
允许双方在不安全信道上协商共享密钥:
Alice: 选择私钥 a,计算 A = g^a mod p,发送 A
Bob: 选择私钥 b,计算 B = g^b mod p,发送 B
共享密钥: K = g^{ab} mod p
Alice: K = B^a mod p
Bob: K = A^b mod p
安全性基于离散对数问题。
4. 哈希函数
4.1 性质
- 抗原象性:给定 ,难以找到 使得
- 抗第二原象性:给定 ,难以找到 使得
- 抗碰撞性:难以找到 使得
4.2 常用哈希算法
| 算法 | 输出长度 | 状态 |
|---|---|---|
| MD5 | 128 位 | 已破解 |
| SHA-1 | 160 位 | 已破解 |
| SHA-256 | 256 位 | 安全 |
| SHA-3 | 可变 | 安全 |
| BLAKE3 | 可变 | 安全 |
4.3 SHA-256 结构
基于 Merkle-Damgård 结构:
- 填充消息使其长度
- 附加原始长度(64位)
- 以 512 位块处理
- 每块进行 64 轮压缩
5. 数字签名
5.1 签名流程
签名:Sign(SK, M) = σ
验证:Verify(PK, M, σ) = True/False
通常先对消息哈希再签名:
5.2 RSA 签名
5.3 DSA 签名
- 选择随机
- 签名为
注意: 必须随机且不可重复,否则可推导出私钥。
6. 公钥基础设施(PKI)
6.1 数字证书
X.509 证书结构:
版本 | 序列号 | 签名算法 | 颁发者 | 有效期 | 主体 | 公钥 | 签名
6.2 证书链
根 CA → 中间 CA → 终端证书
验证时沿证书链逐级验证签名,直到信任的根 CA。
6.3 TLS/SSL
TLS 握手流程(简化):
1. ClientHello: 支持的加密套件、随机数
2. ServerHello: 选定加密套件、证书、随机数
3. Client: 验证证书,生成预主密钥,用服务器公钥加密发送
4. 双方: 根据预主密钥和随机数生成会话密钥
5. 切换到对称加密通信
7. 密码分析
7.1 攻击类型
| 攻击类型 | 攻击者已知 |
|---|---|
| 唯密文攻击 | 仅密文 |
| 已知明文攻击 | 部分明文-密文对 |
| 选择明文攻击 | 可选择明文加密 |
| 选择密文攻击 | 可选择密文解密 |
7.2 生日攻击
利用生日悖论寻找哈希碰撞:
其中 为哈希输出位数, 为尝试次数。
找到碰撞所需的尝试次数约为 ,远小于暴力搜索的 。