目录
计算机加密算法是密码学的核心实现,是保障现代数字世界安全的技术基础。它们可以分为三大类:对称加密、非对称加密 和 密码散列函数。
以下是这些算法的详细分类、介绍和典型应用。
一、 对称加密算法(Symmetric Encryption)
又称私钥加密或共享密钥加密。加密和解密使用同一个密钥。
- 核心特点:速度快,效率高,适合加密大量数据。
- 主要问题:密钥分发。如何在通信双方安全地共享同一把密钥?
- 主要模式:
- 分组密码(Block Cipher):将明文分成固定长度的块(如64位、128位),然后对每一块分别加密。常见模式有ECB, CBC, CFB, OFB, CTR等。
- 流密码(Stream Cipher):将密钥和初始向量通过算法生成一个密钥流,然后将其与明文位进行异或操作得到密文。适合实时通信。
常见算法:
-
AES (Advanced Encryption Standard) - 高级加密标准
- 地位:当前全球最主流、最安全的对称加密标准,被美国政府选为国家标准。
- 密钥长度:128位、192位、256位。AES-256被用于最高级别的安全场景。
- 特点:速度快,安全性极高,硬件实现友好。
- 应用:Wi-Fi加密 (WPA2/WPA3), SSL/TLS, 文件加密 (如Veracrypt, BitLocker), VPN, 等等。几乎无处不在。
-
DES (Data Encryption Standard) - 数据加密标准
- 地位:1977年的老标准,现已被彻底破解,不再安全。
- 密钥长度:56位(有效密钥长度),太短易受暴力破解。
- 替代:3DES (Triple DES) 作为过渡方案,对数据执行三次DES加密,速度慢但比DES安全,目前也已逐渐被淘汰。
-
Blowfish & Twofish
- Blowfish:由Bruce Schneier设计,速度快,密钥长度可变(32位到448位),曾广泛应用。但其块大小(64位)现在被认为太小。
- Twofish:Blowfish的继承者,是AES决赛的候选算法之一。非常安全高效,但最终未被选为标准,因此应用没有AES广泛。
-
ChaCha20
- 类型:流密码。
- 特点:由Google大力推广,在移动设备和没有 AES 硬件加速的CPU上,性能通常比AES更快,能有效对抗某些旁路攻击。
- 应用:与Poly1305认证算法组合成ChaCha20-Poly1305,成为现代TLS协议中广泛使用的加密套件,是AES的一个重要补充和替代。
二、 非对称加密算法(Asymmetric Encryption)
又称公钥加密。使用一对 mathematically related 的密钥:公钥和私钥。
- 核心特点:解决了密钥分发问题。公钥可以公开给任何人,私钥必须严格保密。
- 工作原理:
- 加密:用接收方的公钥加密数据,只有拥有对应私钥的接收方才能解密。
- 数字签名:用发送方的私钥对数据进行签名,任何人可以用发送方的公钥验证签名来源和完整性。
- 主要问题:速度非常慢(比对称加密慢1000倍以上),不适合加密大量数据。
常见算法:
-
RSA (Rivest–Shamir–Adleman)
- 地位:最著名、应用最广泛的非对称加密算法。
- 基础:基于大整数质因数分解的难度。密钥越长越安全,常见长度为2048位和4096位。
- 应用:SSL/TLS证书、数字签名、软件授权、安全地交换对称密钥(会话密钥)。
-
ECC (Elliptic Curve Cryptography) - 椭圆曲线密码学
- 地位:现代的非对称加密标准,是RSA的强大替代者。
- 优点:提供与RSA同等甚至更高的安全性,但密钥尺寸更小(256位ECC密钥 ≈ 3072位RSA密钥)、计算速度更快、能耗更低。
- 应用:广泛应用于移动设备、区块链(比特币、以太坊)、现代TLS证书、资源受限的物联网设备。
-
Diffie-Hellman Key Exchange - DH密钥交换
- 注意:它本身不是加密算法,而是一种安全协议。
- 作用:允许双方在一个不安全的通道上,共同协商出一个对称密钥(会话密钥),而这个密钥从未在通道上直接传输过。这个协商出的密钥再用于对称加密。
- 变体:基于椭圆曲线的ECDH(Elliptic-Curve Diffie-Hellman)更为常用。
三、 密码散列函数(Cryptographic Hash Functions)
它不是加密算法(因为无法解密),但却是密码学中不可或缺的一部分。
- 核心特点:将任意长度的输入(消息)映射为固定长度的、看似随机的输出(哈希值,或称“摘要”)。
- 核心属性:
- 确定性:相同输入永远产生相同输出。
- 快速计算:能快速计算出任意输入的哈希值。
- 抗碰撞性:极难找到两个不同的输入产生相同的哈希值。
- 雪崩效应:输入的微小改变会导致输出哈希值发生巨大且不可预测的变化。
- 单向性:从哈希值极难反向推导出原始输入。
常见算法:
-
SHA-2 家族 (Secure Hash Algorithm 2)
- 地位:当前最主流的散列函数标准,由美国国家安全局设计。
- 输出长度:常见的有SHA-256(输出256位)和SHA-512(输出512位)。
- 应用:区块链(比特币使用SHA-256)、TLS证书、软件完整性校验、密码存储(需加盐)。
-
SHA-3 (Keccak)
- 地位:最新的SHA标准,与SHA-2基于完全不同的设计结构(海绵结构)。
- 特点:作为SHA-2的备份和补充,提供另一种选择,以防SHA-2未来被发现漏洞。
-
MD5 (Message-Digest Algorithm 5) 和 SHA-1
- 地位:已被正式破解,严重不安全,绝对不能再用于任何安全目的。
- 现状:现在仅用于简单的数据完整性校验(非防篡改)或校验文件是否完全下载(因为碰撞攻击已实用化)。
四、加密算法对比一览表
1.对称加密算法对比
特性 | AES (高级加密标准) | ChaCha20 | DES (数据加密标准) | 3DES (三重DES) |
---|---|---|---|---|
类型 | 分组密码 | 流密码 | 分组密码 | 分组密码 |
密钥长度 | 128, 192, 256 位 | 256 位 | 56 位 | 112 或 168 位 (有效) |
块大小 | 128 位 | (流密码,无块) | 64 位 | 64 位 |
安全性 | ⭐⭐⭐⭐⭐ 极高 (当前标准) | ⭐⭐⭐⭐⭐ 极高 | ❌ 已破解,不安全 | ⚠️ 脆弱,已弃用 |
速度 | 非常快 (有硬件加速时极快) | 非常快 (在软件中尤其快) | 慢 | 非常慢 |
主要应用 | TLS, WiFi (WPA2), 磁盘加密, VPN | TLS (移动设备), VPN, 实时通信 | 遗留系统 | 遗留金融系统 |
状态 | 推荐使用 | 推荐使用 (AES的补充) | 禁止使用 | 避免使用 |
2. 非对称加密算法对比
特性 | RSA | ECC (椭圆曲线密码学) | Diffie-Hellman / ECDH |
---|---|---|---|
核心功能 | 加密, 数字签名, 密钥交换 | 加密, 数字签名, 密钥交换 | 仅密钥交换 |
安全性基础 | 大整数质因数分解难题 | 椭圆曲线离散对数难题 | (离散对数 / 椭圆曲线离散对数) |
密钥长度 (同等安全) | 2048 - 4096 位 | 224 - 521 位 | 类似 |
优点 | 应用广泛,兼容性好 | 密钥短、效率高、性能好 | 完美前向保密 |
缺点 | 计算慢,密钥长 | 实现复杂,专利历史 | 本身不用于加密/签名 |
主要应用 | SSL/TLS 证书, 数字签名, 加密小数据 | 现代SSL/TLS, 区块链, 移动设备 | TLS 密钥交换 (实现前向保密) |
状态 | 广泛使用 (但正被ECC取代) | 推荐使用 (新标准) | 推荐使用 |
3. 密码散列函数对比
特性 | SHA-256 / SHA-512 (属SHA-2家族) | SHA-3 (Keccak) | MD5 | SHA-1 |
---|---|---|---|---|
输出长度 | 256 bit / 512 bit | 224, 256, 384, 512 bit (可定制) | 128 bit | 160 bit |
安全性 | ⭐⭐⭐⭐⭐ 极高 (当前标准) | ⭐⭐⭐⭐⭐ 极高 (新标准) | ❌ 已彻底破解 | ❌ 已正式破解 |
性能 | 非常快 | 较慢 (硬件实现性好) | 很快 | 快 |
主要应用 | 区块链, TLS, 密码存储, 数据完整性 | 密码学新协议, SHA-2的备份 | 非安全 校验 (如文件下载) | 非安全 校验 |
状态 | 推荐使用 | 推荐使用 | 禁止用于安全目的 | 禁止用于安全目的 |
五、总结指南
- 加密大量数据:首选 AES (256位),资源受限或无AES硬件加速时考虑 ChaCha20。
- 数字证书/密钥交换:首选 ECC (更高效),兼容性要求高时用 RSA (2048位以上)。追求前向保密必须使用 ECDH 或 DHE。
- 数据完整性/密码存储:首选 SHA-256 或 SHA-512。绝对避免使用 MD5 和 SHA-1。
- 总体趋势:ECC 正在取代 RSA,SHA-3 作为 SHA-2 的下一代补充,AES 在对称加密领域保持统治地位。
总结与典型应用场景(SSL/TLS为例)
一个安全的通信过程(如访问HTTPS网站)会综合运用以上所有类型的算法:
-
身份认证与密钥交换:
- 网站服务器将其RSA或ECC证书(包含公钥)发送给浏览器。
- 浏览器验证证书真实性。
- 浏览器生成一个随机的对称会话密钥(例如用于AES),并用服务器的公钥(来自证书)加密它,然后发送给服务器。
- 服务器用自己的私钥解密,得到会话密钥。
-
批量数据加密:
- 双方现在拥有相同的对称会话密钥。
- 后续所有通信数据都使用AES或ChaCha20等对称加密算法进行高速加密和解密。
-
完整性校验:
- 发送方使用SHA-256等散列函数计算消息的摘要,并附加在消息上。
- 接收方重新计算摘要并进行比对,以确保数据在传输中未被篡改。
希望这份详细的分类和介绍能帮助你全面了解计算机加密算法。
何曾参静谧的博客(✅关注、👍点赞、⭐收藏、🎠转发)