跳转到主要内容

加密

本文约需 2 分钟阅读

加密是指利用特定的算法和密钥,将数据转换为第三方无法读取的格式的技术。加密后的数据只有持有正确密钥的人才能解密还原。它是支撑互联网通信、文件存储、密码管理等现代数字安全根基的技术。

历史背景

密码学的历史可追溯到公元前的凯撒密码,但现代密码技术的转折点是 1970 年代。 1976 年 Diffie 和 Hellman 提出了公钥密码学的概念, 1977 年 RSA 密码被设计出来。 2001 年美国国家标准与技术研究院 (NIST) 将 AES 采纳为标准密码,此后一直作为互联网通信的基础使用。为应对量子计算机的发展,抗量子密码 (后量子密码) 的标准化也在推进,2024 年 NIST 正式将 ML-KEM 、 ML-DSA 、 SLH-DSA 三种后量子密码算法标准化。

加密的种类

对称密钥加密 (对称密码) 是加密和解密使用相同密钥的方式。 AES (Advanced Encryption Standard) 为代表,特点是处理速度快。公钥加密 (非对称密码) 使用加密用的公钥和解密用的私钥这一对密钥。 RSA 和椭圆曲线密码为代表,优点是无需安全配送密钥。在实际通信中,结合两者的混合加密被广泛使用。

加密与哈希的区别

加密和哈希是容易混淆的概念,但二者根本不同。加密是可解密的双向变换,只要有正确的密钥就能取回原始数据。而哈希是无法还原为原始数据的单向变换。密码的保存使用哈希。服务方仅保存密码的哈希值,登录时与输入密码的哈希值进行比较。这样即使数据库泄露,原始密码也不会被直接暴露。推荐使用 bcrypt 和 Argon2 等密码专用哈希函数。

现场使用案例

例如,在云迁移的设计中,通常会采取将存储数据的加密方式统一为 AES-256-GCM 这类带认证的加密算法的方针。若将密钥管理集中到云的密钥管理服务 (如 AWS KMS),就能在一处统一管控密钥的生成、保管与访问权限,并可将按固定周期的密钥轮换自动化。让应用程序本身不持有密钥的架构,对防止密钥外泄很有效。

加密流程

明文数据
加密密钥 + 算法
密文 (无法读取)
用正确的密钥解密
原始明文

实务中的注意事项

实现加密时常见的陷阱是试图自行设计加密算法。在密码学领域,“不要自制密码”是铁则,应使用 AES 或 ChaCha20 等久经验证的算法。此外,加密的密钥管理也是重要课题。将密钥保存在与加密数据相同的地方,就像把钥匙放在保险箱旁边一样。 HTTPS 通信、 Wi-Fi 的 WPA3 、智能手机的存储加密等,加密被用于日常的各种场景。另外,若密码的生成完全在浏览器内完成,生成的字符串本身就不会经过网络。

相关术语

这篇文章对您有帮助吗?