本文目录导读:
这是一个非常核心的密码学问题,两者的核心区别在于加密和解密使用的密钥是否相同。
- 对称加密:加密和解密用同一个密钥。
- 非对称加密:加密和解密用不同的密钥(一个公开叫公钥,一个私有叫私钥)。
下面从几个关键维度进行详细对比:
核心原理对比
| 特性 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1个(必须保密) | 2个(公钥公开,私钥保密) |
| 算法复杂度 | 低,计算快 | 高,计算慢(几百到上千倍) |
| 安全性基础 | 密钥的保密性 | 数学难题(如大数分解、离散对数) |
| 典型算法 | AES, DES, 3DES, ChaCha20 | RSA, ECC(椭圆曲线), DSA, DH |
| 主要优点 | 速度快,适合加密大量数据 | 密钥分发安全,支持数字签名 |
| 主要缺点 | 密钥分发困难,无法防抵赖 | 速度慢,加密数据量小 |
工作流程与场景
对称加密(想象一把锁和钥匙)
- 流程:发送方用密钥K加密明文,得到密文;接收方用同一个密钥K解密密文,得到明文。
- 核心问题:如何安全地将密钥K从发送方传递给接收方?(如果通过网络传输,一旦被截获,加密就失效了)
- 典型场景:
- 静态数据加密(如:加密硬盘中的文件、数据库)。
- 通信数据加密(实际应用中,通常是先通过非对称加密协商出对称密钥,再用对称加密传输大量数据)。
- HTTPS、SSH 等协议的底层数据加密部分。
非对称加密(想象一个公共的信箱)
- 流程:
- 接收方生成一对密钥:公钥(Public Key)和私钥(Private Key)。
- 接收方将公钥广泛公开(就像任何人都可以往你公共信箱里投信)。
- 发送方用公钥加密明文,得到密文。
- 接收方用自己独有的私钥解密密文(只有你才能打开你的信箱)。
- 核心优势:公钥可以安全地公开传输,无需担心被拦截(因为只有私钥能解密)。
- 典型场景:
- 密钥交换:如 TLS/SSL 握手,用非对称加密安全地协商对称密钥。
- 数字签名:用私钥签名,用公钥验签,保证消息的完整性、身份认证和不可否认性(谁签的赖不掉)。
- 安全通信初始化:登录、支付等场景下的安全通道建立。
实战中的结合使用
在实际系统中(如HTTPS、SSH、即时加密通信),它们几乎从不单独使用,而是协同工作:
- 非对称加密:负责安全地传输一个临时生成的对称密钥(也叫会话密钥)。
- 对称加密:使用刚才协商好的对称密钥,对后续所有大量通信数据进行加密和解密。
为什么这么设计?
- 如果只用非对称加密加密全部聊天内容或网页内容,计算开销巨大,会导致严重延迟。
- 如果只用对称加密,密钥首次传递时的安全问题无法解决。
典型例子:HTTPS 连接过程
- 握手阶段:浏览器(客户端)和服务器使用非对称加密(RSA或ECC) 来验证身份(通过数字证书)并安全协商出一个临时对称密钥。
- 传输阶段:浏览器和服务器使用这个临时对称密钥(通常用AES等高效算法)来加密传输所有的网页内容、表单数据、图片等。
总结表:如何选择?
| 你的需求 | 推荐方案 |
|---|---|
| 加密大量数据(如文件、视频流、数据库) | 对称加密(速度优势明显) |
| 安全地传递密钥(首次通信) | 非对称加密(解决密钥分发难题) |
| 验证消息来源(防伪造、防抵赖) | 非对称加密(数字签名) |
| 双方已有共同秘密(如WiFi密码) | 可直接用对称加密 |
| 完全不认识的两方首次通信 | 必须先用非对称加密建立信任 |
一句话总结:对称加密快,非对称加密安全但慢,实际应用中,通常用非对称加密来安全传递对称密钥,再用对称加密来高效加密实际数据。
标签: 非对称加密