深度网络安全视角:哈希、加密与编码
Source: Dev.to
编码:仅改变格式
编码只改变数据的格式。它 不提供 安全性。
示例
- Base64
- URL 编码
- ASCII
- UTF‑8
编码用于传输或兼容性,而不是保护。
哈希:单向保护
哈希会生成一个固定大小的输出,称为 消息摘要。
哈希重要术语
- Message digest – 哈希函数的结果
- Collision – 两个不同的输入产生相同的哈希值
- Collision resistance – 产生冲突的难易程度
哈希算法
- MD5 – 已被破解,冲突容易产生
- SHA‑1 – 老旧,弱
- SHA‑2(SHA‑256、SHA‑512)– 强
- SHA‑3 – 新设计,安全
SHA‑256 就像一扇坚固的金属门。
SHA‑512 是同样的门,只是更厚。
Salt 与 Pepper
- Salt – 在哈希前加入的随机值,用于防止彩虹表攻击
- Pepper – 存放在数据库外部的秘密值
彩虹表
预先计算的大量哈希列表。加盐可以完全抵御此类攻击。
密钥派生函数 (KDF)
- KDF2 – 从弱密码生成强密钥
- PBKDF2 – 故意放慢哈希速度;使用 HMAC 对密码 + 盐进行多次哈希,使暴力破解更困难
- bcrypt – 带自动加盐的慢哈希算法;至今仍非常强大
- Argon2 – 下一代 KDF;慢且对内存要求高,对 GPU/ASIC 破解极其困难
哈希的用途
- 密码存储
- 完整性校验
- 数字签名
加密:双向保护
加密把可读数据转换为不可读的密文。使用正确的密钥可以逆转。
A. 对称加密
加锁和解锁使用同一把钥匙。
示例
- AES – 现代且非常强大
- DES – 已被破解
- 3DES – 过时且弱
应用于
- Wi‑Fi
- VPN
- 磁盘加密
- TLS 会话
B. 非对称加密
两把钥匙:公钥加密,私钥解密。
示例
- RSA – 较老,密钥较大
- ECC – 密钥更小,速度更快,安全性相当
应用于
- HTTPS
- 数字签名
- 身份验证
- 安全邮件
密码模式(块加密的工作方式)
块密码(如 AES)需要一种工作模式。
- CBC (Cipher Block Chaining) – 每个块依赖前一个块;较旧且存在弱点
- GCM (Galois Counter Mode) – 优于 CBC;提供加密、完整性和认证;在现代 TLS 中使用
TLS、证书、密钥、信任
TLS
客户端与服务器之间的安全加密连接。结合使用 AES、RSA 和证书。
- SSL – TLS 的旧版本;已不安全
TLS 握手
- 客户端和服务器协商加密方式
- 交换公钥
- 验证证书
- 创建临时对称密钥
密码套件
指定“配方”,包括:
- 使用哪种 AES 模式
- 使用哪种 RSA/ECC 类型
- 使用哪种哈希算法
- 握手的工作方式
示例套件组件
- ECDHE 用于密钥交换
- AES‑GCM 用于加密
- SHA‑256 用于完整性
Diffie‑Hellman (DH) 与椭圆曲线 DH (ECDH)
在公共网络上生成共享密钥的方法。ECDH 更快,且每比特提供更强的安全性。
PKI(公钥基础设施)
让浏览器信任网站的完整系统。包括:
- 证书
- 证书颁发机构 (CAs)
- 信任链
- OCSP(在线证书状态协议)
- 吊销列表
根信任
设备内置受信任 CA 列表。只要 CA 被信任,其颁发的所有证书也被信任。
证书颁发机构 (CA)
受信任的组织,负责签发证书。
CRL(证书吊销列表)
列出已不再有效的证书。
OCSP
实时检查证书是否有效。
证书链
服务器证书 → 中间证书 → 根证书。
EV 证书
扩展验证 – 更严格的身份检查,但安全级别相同。
证书固定 (Pinning)
应用只信任特定的证书或密钥,防止伪造证书。
密钥生命周期
密钥必须经历:
- 生成
- 安全存储
- 轮换
- 过期
- 销毁
代码签名
软件使用私钥签名;系统在执行前验证签名,防止恶意软件冒充合法软件。
身份验证与身份安全
- Kerberos – Windows 网络使用的身份验证协议
- WPA3 – 现代安全 Wi‑Fi 协议
- PB (Password Based) – 密码基系统的统称
- SAML – 较老的企业身份协议
- OAuth 2 – 现代应用使用的授权系统
- OIDC – 基于 OAuth 2 的身份层
- Identity Provider (IdP) – 确认用户身份的服务
- SSO (Single Sign‑On) – 用户一次登录即可访问多个应用
- JWT – Web 系统使用的令牌格式
- Access Tokens – 短期 API 访问令牌
- Federation – 系统之间的身份共享
威胁建模与风险术语
STRIDE
- Spoofing(欺骗)
- Tampering(篡改)
- Repudiation(否认)
- Information disclosure(信息泄露)
- Denial of service(拒绝服务)
- Elevation of privilege(权限提升)
DREAD
较早的威胁评分模型。
Attack Trees
攻击者实现目标的可视化模型。
Kill Chain
攻击的各个阶段。
MITRE ATT&CK
攻击者技术的数据库。
Attack Surface
攻击者可能尝试进入的所有点。
漏洞与风险度量
- CVE – 漏洞的公开标识符
- CVSS – 表示漏洞危险程度的分数
- NVD – 官方漏洞记录数据库
- Threat Agents – 可能攻击你的主体
- Risk Scoring – 情境危险程度的评估
基础设施与访问控制
- IAM – 身份与访问管理
- ACLs – 访问控制列表
- DMZ – 位于公共互联网与内部网络之间的网络区
灾难恢复术语
- RTO – 最大可接受停机时间
- RPO – 最大可接受数据丢失量
- DR Site – 灾难备份地点
- Backup Testing – 验证备份实际可用性
最终总结
本文涵盖了哈希、加密、编码以及众多依赖它们的网络安全组件。
- Hashing 保护密码并确保数据完整性。
- Encryption 保护传输中和静止的数据。
- Encoding 仅为传输或兼容性改变数据格式。
TLS、证书、RSA、AES、盐、KDF、密码套件以及身份系统都将这些概念结合起来,保障现代系统的安全。掌握这些基础为成为网络安全工程师奠定坚实基础。