文章目录
一、加密
1.1、概述
1.1.1、什么是加密?
加密是一种将原始信息(明文)通过特定算法转换为不可读形式(密文)的过程,目的是保护数据的机密性,防止未授权访问。只有掌握正确密钥或解密方法的接收方才能将密文还原为明文。
1.1.2、什么是密钥?
密钥是加密和解密过程中使用的关键参数,它控制着加密算法如何将明文转换为密文以及如何还原数据。不同的加密方法依赖不同类型的密钥。
1.1.3、什么是算法?
在密码学中,算法是指一组明确的数学规则或计算步骤,用于执行加密、解密、签名、验证等安全操作。它定义了如何将明文转换为密文(加密过程),以及如何从密文恢复明文(解密过程),通常依赖于密钥的参与。
1.2、对称加密算法
1.2.1、定义
对称加密是指加密和解密使用相同密钥 的加密方式。
该类算法分为两类:
- 分组密码(Block Cipher):将数据分成固定长度块加密,如AES、SM4
- 流密码(Stream Cipher):逐位或逐字节加密,如RC4
安全性依赖于密钥保密性,而非算法本身。
1.2.2、关于"数据加密标准"(DES)
DES 是一种对称加密算法,于1977年被美国采纳为联邦信息处理标准。
- 分组长度:64位
- 密钥长度:56位(有效)
- 现已不安全,因密钥过短易被暴力破解
其改进版为3DES(三重DES),通过三次加密提升安全性,但仍效率低下。
1.2.3、高级加密标准(AES)
AES 是目前最广泛使用的对称加密算法,由NIST于2001年确立,取代DES。
- 支持密钥长度:128、192、256位
- 分组大小:128位
- 安全性强,性能高,适用于软硬件实现
AES基于Rijndael算法,采用多轮置换-代换网络(SubBytes, ShiftRows, MixColumns, AddRoundKey)。
1.2.4、中国国家商用密码算法(SM系列)
中国国家密码管理局发布的商用密码标准,其中:
-
SM4 是对称加密算法,原名SMS4,用于无线局域网标准。
- 分组长度:128位
- 密钥长度:128位
- 结构类似Feistel,但为非平衡结构,共32轮变换
- 已成为ISO/IEC国际标准
-
SM2:基于椭圆曲线的非对称加密算法,用于数字签名、密钥交换
-
SM9:基于标识的密码体制(IBC)
1.2.5、对称加密算法的优缺点
| 特性 | 优点 | 缺点 |
|---|---|---|
| 加密速度 | 快,适合大量数据加密 | ------ |
| 资源消耗 | 低,适合嵌入式设备 | ------ |
| 密钥管理 | ------ | 密钥分发困难,需安全通道 |
| 安全性 | AES、SM4安全性高 | 若密钥泄露则全部失效 |
1.3、非对称加密算法
1.3.1、定义
非对称加密(又称公钥加密)使用一对数学相关的密钥:公钥 和私钥。其中:
- 公钥可公开,用于加密或验证签名;
- 私钥保密,用于解密或生成签名。
典型算法包括:RSA、ECC(椭圆曲线密码)、DSA、SM2等。
1.3.2、公开密钥密码体制------RSA
RSA 是最早实用的非对称加密算法之一,由Rivest、Shamir 和 Adleman 于1977年提出,基于大整数分解难题。
RSA 广泛用于数字签名、SSL/TLS 握手、密钥交换等场景。
1.3.3、非对称加密算法的优缺点
| 类别 | 优点 | 缺点 |
|---|---|---|
| 解决密钥分发问题 | 公钥可公开传播,无需预先共享秘密信道 | ------ |
| 支持数字签名 | 可实现身份认证、不可否认性(如用私钥签名) | ------ |
| 易于密钥管理 | 每个用户仅需保管自己的私钥,系统扩展性强 | ------ |
| 加解密速度慢 | ------ | 运算复杂(模幂运算),不适合加密大量数据 |
| 资源消耗高 | ------ | 对CPU和内存要求较高,尤其在嵌入式设备中受限 |
| 密钥长度大 | ------ | RSA 需要2048位以上才安全,而AES-128即可达到同等安全强度 |
1.3.4、非对称加密与对称加密结合使用
由于非对称加密效率低,实际应用中通常采用混合加密系统(Hybrid Cryptosystem):
工作流程如下:
- 通信开始时,双方通过非对称加密(如
RSA或ECC)协商一个临时的会话密钥 - 使用该会话密钥进行后续的对称加密通信 (如
AES) - 会话结束后销毁密钥
例如在 HTTPS 中:
- 客户端生成随机的预主密钥,用服务器的公钥(
RSA)加密后发送 - 服务器用自己的私钥解密获得预主密钥
- 双方基于该密钥派生出对称密钥用于
AES加密通信
这种方式兼顾了安全性与效率。
1.3.5、非对称加密算法存在的安全风险
| 风险类型 | 说明 |
|---|---|
| 数学攻击进步 | 若大数分解(RSA)或离散对数(ECC)被高效算法破解(如量子计算Shor算法),则整个体系崩溃 |
| 密钥泄露 | 私钥一旦被窃取或导出,攻击者可完全冒充身份或解密历史通信 |
| 中间人攻击(MITM) | 攻击者伪造公钥欺骗通信双方,需依赖数字证书和PKI体系防范 |
| 侧信道攻击 | 通过功耗、时间、电磁辐射等物理信息推断私钥,尤其影响智能卡设备 |
| 弱参数生成 | 使用过小的素数、弱随机数生成器会导致密钥易被预测或分解 |
此外,随着量子计算发展,传统RSA和ECC面临威胁,推动后量子密码(PQC) 的研究与标准化。
二、完整性
2.1.1、定义
数据完整性是指数据在传输或存储过程中未被篡改、删除或伪造 的性质。
通过使用单向散列函数生成固定长度的"指纹"(即摘要),可验证数据是否保持原始状态。
2.1.2、什么是单向散列函数?
单向散列函数(One-way Hash Function)是一种将任意长度输入映射为固定长度输出的函数,具有以下核心特性:
- 单向性:从输出无法反推输入
- 抗碰撞性:难以找到两个不同输入产生相同输出
- 确定性:相同输入始终生成相同输出
- 雪崩效应:输入微小变化导致输出巨大差异
常用于数字签名、消息认证、密码存储等场景。
2.1.3、信息摘要算法(MD5)
**MD5(Message Digest Algorithm 5)**由Ronald Rivest于1992年设计,输出长度为 128位(16字节) 的摘要。
基本流程:
- 填充消息使其长度 ≡ 448 mod 512
- 添加64位原始长度
- 使用4个32位初始变量进行四轮非线性变换(每轮16步)
- 输出128位摘要(通常以32位十六进制字符串表示)
示例:
MD5("hello") = 5d41402abc4b2a76b9719d911017c592
⚠️ 安全性问题:
- 已被证实存在严重碰撞漏洞(如王小云教授2004年攻破)
- 可构造两个不同文件具有相同MD5值
- 不再适用于安全场景(如数字签名、证书),仅可用于校验非恶意错误
2.1.4、安全散列算法(SHA)
**SHA(Secure Hash Algorithm)**是由美国国家安全局(NSA)设计、NIST发布的系列散列算法,主要包括:
| 算法 | 输出长度 | 状态变量 | 安全性 | 备注 |
|---|---|---|---|---|
SHA-1 |
160位 | 5×32位 | ❌ 已被破解(SHAttered攻击) |
不推荐使用 |
SHA-256 |
256位 | 8×32位 | ✅ 安全 | 属于SHA-2家族,广泛用于SSL/TLS、比特币 |
SHA-512 |
512位 | 8×64位 | ✅ 安全 | 适合64位系统 |
SHA-3 |
可变(224~512位) | 1600位海绵结构 | ✅ 安全 | 基于Keccak算法,结构不同于SHA-2 |
注:SHA-3 虽与SHA-2命名相似,但内部结构完全不同,采用"海绵结构"(sponge construction)。
应用举例:
Bitcoin使用SHA-256进行挖矿和地址生成TLS协议使用SHA-256验证证书完整性
2.1.5、单向散列函数的特点
| 特点 | 说明 |
|---|---|
| 正向快速 | 给定明文和Hash算法,在有限时间和有限资源内计算Hash值 |
| 不可逆性 | 给定任意的Hash值,在有限时间内很难逆推出明文 |
| 输入敏感 | 如果输入的数据信息被轻微修改,输出的Hash值也会有很明显的变化 |
| 抗碰撞性 | 任意输入不同的数据,其输出的Hash值不可能相同 |
三、认证
3.1.1、定义
在密码学中,认证(Authentication)是指验证通信对方身份或数据来源真实性的过程。主要包括:
- 实体认证:确认通信方是合法用户(如登录验证)
- 消息认证:确认收到的消息来自可信发送者且未被篡改
认证可防止伪装、重放、篡改等攻击,常与完整性结合实现。
注意:认证 ≠ 授权。认证解决"你是谁",授权解决"你能做什么"。
3.1.2、消息认证码(MAC)
消息认证码 (Message Authentication Code,简称 MAC)是一种使用共享密钥 生成的小段数据,用于验证消息的完整性 和真实性。
数学表示:
设消息为M,密钥为K,则 MAC 值为:
T = MAC K ( M ) T = \text{MAC}_K(M) T=MACK(M)
接收方用相同密钥重新计算T并与接收到的T 比较,若T = T则认为消息合法。
特点:
- 使用对称密钥(双方共享)
- 不能提供不可否认性(因双方都能生成相同MAC)
- 常见类型:
CBC-MAC、CMAC、HMAC
3.1.3、哈希运算消息认证码(HMAC)
HMAC (Hash-based Message Authentication Code)是一种基于单向散列函数的MAC实现方式,广泛应用于TLS、IPsec、JWT等协议中。
结构定义为:
HMAC K ( M ) = H ( ( K ′ ⊕ opad ) ∥ H ( ( K ′ ⊕ ipad ) ∥ M ) ) \text{HMAC}_K(M) = H\left((K' \oplus \text{opad}) \parallel H\left((K' \oplus \text{ipad}) \parallel M\right)\right) HMACK(M)=H((K′⊕opad)∥H((K′⊕ipad)∥M))
其中:
H:底层哈希函数(如SHA-256)K:扩展后的密钥opac:外填充常量(0x5c重复)ipad:内填充常量(0x36重复)||:拼接操作
优点:
- 安全性强,依赖于哈希函数的抗碰撞性
- 易于实现,兼容现有哈希算法
- 被标准广泛采纳(
RFC 2104、FIPS PUB 198)
示例:HMAC-SHA256 是当前推荐的安全选择。
3.1.4、消息认证码的工作流程
