加密要讲清楚:AES、ChaCha20 与 Argon2id 到底怎么配合
来源:dev.to — 2026-10-22
📋 概述
「直接用 AES-256」是安全领域被重复最多、也最没用的一句话。作者指出密码算法本身几乎不会破,破的都是周围的东西:可猜的密码、重复的 nonce、没有认证的密文、用错函数派生的密钥。文章把整套栈拆成五个职责:机密性(AES、ChaCha20)、完整性与真实性(GCM 标签、Poly1305、HMAC、Ed25519)、密钥派生(Argon2id、HKDF)、密钥协商(X25519)与密钥恢复(Shamir 分片),逐个讲原理、为什么存在、什么时候该选它。判断的起点是先定威胁模型:攻击者手里有你的密文、无限时间和一堆显卡,暴力破解 256 位密钥在物理上不可能,所以聪明人会去打那个生成密钥的密码。文章还用一份打包成单个 .exe 的纯 Python 安全套件做实例,把设计决策落到真能发出去的代码里。
🔑 核心要点
- 一个词盖住三件事:机密性、完整性与真实性、密钥从哪来,是三个不同的问题。
- AEAD 不是可选项:加密而不认证,就是一个等着被利用的 bug。
- 强度取决于密码熵与 nonce 纪律:不是密钥长度,而是攻击者最便宜能猜到的东西。
- AES 与 ChaCha20 都好:按有没有 AES-NI 硬件加速、以及能否管好 nonce 来选。
- 密码必须过 KDF:用 Argon2id 把口令变成密钥,绝不能用普通哈希。
💡 金句
Encryption is only as strong as the cheapest thing an attacker can guess.
译:加密的强度,只等于攻击者最容易猜到的那个东西的强度。
👍 0
👎 0
← 返回 dev.to 首页