公钥密码学
概述
公钥密码学(Public-Key Cryptography)是一种使用公钥(public key)加密、私钥(private key)解密的密码体系,解决了传统对称加密中密钥分发困难的核心问题。
定义
形式化定义
一个公钥密码系统由三个算法组成:
- 密钥生成 :输入安全参数 ,输出公钥 和私钥
- 加密 :用公钥 加密消息 ,输出密文
- 解密 :用私钥 解密密文 ,恢复消息
安全性要求:在不知道 的情况下,从 和 计算 是计算不可行的。
核心思想
公钥密码学的安全性基于计算困难性假设(computational hardness assumption):
| 密码系统 | 困难问题 | 安全性基础 |
|---|---|---|
| RSA | 大整数分解 | 给定 ( 为大素数),难以恢复 |
| Diffie-Hellman | 离散对数 | 给定 ,难以计算 |
| ElGamal | 离散对数 | 同 Diffie-Hellman |
| 椭圆曲线密码 | 椭圆曲线离散对数 | 比传统离散对数更短密钥达到同等安全 |
RSA 密码系统
密钥生成
- 选择两个大素数 和 (通常各 1024 位以上)
- 计算 (模数)和 (Euler 函数)
- 选择 使得 且 ( 通常取 65537)
- 计算 (模逆元)
- 公钥 ,私钥
加密与解密
- 加密:
- 解密:
正确性由 Euler 定理保证:。
Diffie-Hellman 密钥交换
两个通信方在不安全信道上协商共享密钥:
- 公开参数:大素数 和生成元
- Alice 选择随机 ,发送
- Bob 选择随机 ,发送
- 共享密钥:
窃听者只知道 ,无法计算 (离散对数困难性)。
核心性质
- 单向性:公钥到私钥的推导在计算上不可行
- 陷门性(trapdoor):拥有私钥(陷门信息)可以高效解密
- 非对称性:加密和解密使用不同的密钥,解决了密钥分发问题
- 数字签名:私钥签名、公钥验证,提供不可否认性
应用场景
- RSA 加密/签名:HTTPS、电子邮件加密(S/MIME、PGP)
- SSL/TLS 协议:使用 RSA 或 ECDHE 进行密钥交换,建立安全通道
- 数字证书:CA 用私钥签名证书,浏览器用 CA 公钥验证
- SSH:基于 RSA 或 ECDSA 的身份认证