基于 eval 的表达式计算器(Eval-calculator):Modern JavaScript Tutorial 实战解析
2026/10/6 1:52:44
AEAD(Authenticated Encryption with Associated Data) 是一种同时提供机密性、完整性和认证性的加密技术,能够在单一算法中处理数据加密和验证,解决了传统加密与认证分离方案的安全隐患。其核心特性包括如下几点:
AEAD 加密:
C, T = AEAD.Encrypt(K, N, M, A)AEAD 解密验证:
M = AEAD.Decrypt(K, N, C, A, T)与传统方案对比:
| 方案 | 实现方式 | 安全风险 |
|---|---|---|
| MAC-then-Encrypt | 先计算 MAC 再加密 | 存在填充 oracle 攻击https://ctf-wiki.org/crypto/blockcipher/mode/padding-oracle-attack/ |
| Encrypt-then-MAC | 先加密再计算 MAC | 无法防止重放攻击 |
| AEAD | 一体化加密 + 认证 | 抗自适应选择密文攻击 (IND-CCMA) |
AEAD 优势:
全称:Galois/Counter Mode, 基于 AES 的认证加密模式
核心结构:
数学原理:
C = M XOR AES(K, N || counter)特性:
全称:ChaCha20 流密码 + Poly1305 消息认证码组合
核心结构:
数学原理:
(m × R + S) mod p生成认证标签,其中 R 为密钥派生值,S 为消息哈希特性:
| 特性 | AES-GCM | ChaCha20-Poly1305 |
|---|---|---|
| 基础算法 | AES (分组密码) | ChaCha20 (流密码) |
| 硬件加速 | 支持 (Intel AES-NI) | 不支持 (纯软件实现) |
| 性能优势 | 服务器 / 桌面 (有 AES-NI) | 移动端 / 嵌入式设备 |
| 适用场景 | 高吞吐量服务器应用 | 移动应用、低功耗设备 |
| 安全性 | 128/256 位密钥强度 | 256 位密钥强度 |
| nonce 要求 | 12 字节,严格唯一 | 12 字节 (或 XChaCha20 的 24 字节) |
| 专利状态 | 已进入公共领域 | Google 开发,免费使用 |
TLS 1.3(RFC 8446, 2018 年发布) 是传输层安全协议最新版本,其核心改进包括:
强制使用 AEAD 的意义:
TLS 1.3 支持的 AEAD 套件:
| 套件名称 | AEAD 算法 | 哈希函数 | 推荐场景 |
|---|---|---|---|
| TLS_AES_128_GCM_SHA256 | AES-128-GCM | SHA-256 | 通用场景 (推荐) |
| TLS_AES_256_GCM_SHA384 | AES-256-GCM | SHA-384 | 高安全性需求 |
| TLS_CHACHA20_POLY1305_SHA256 | ChaCha20-Poly1305 | SHA-256 | 移动端 / 无 AES-NI 环境 |
注:TLS 1.3 仅支持这三种 AEAD 套件,移除所有非 AEAD 加密模式
TLS 1.3 配置推荐:
# 推荐加密套件顺序(按安全性排序) ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256';选择建议: