公钥密码学

概述

公钥密码学(Public-Key Cryptography)是一种使用公钥(public key)加密、私钥(private key)解密的密码体系,解决了传统对称加密中密钥分发困难的核心问题。

定义

形式化定义

一个公钥密码系统由三个算法组成:

  • 密钥生成 :输入安全参数 ,输出公钥 和私钥
  • 加密 :用公钥 加密消息 ,输出密文
  • 解密 :用私钥 解密密文 ,恢复消息

安全性要求:在不知道 的情况下,从 计算 是计算不可行的。

核心思想

公钥密码学的安全性基于计算困难性假设(computational hardness assumption):

密码系统困难问题安全性基础
RSA大整数分解给定 为大素数),难以恢复
Diffie-Hellman离散对数给定 ,难以计算
ElGamal离散对数同 Diffie-Hellman
椭圆曲线密码椭圆曲线离散对数比传统离散对数更短密钥达到同等安全

RSA 密码系统

密钥生成

  1. 选择两个大素数 (通常各 1024 位以上)
  2. 计算 (模数)和 (Euler 函数)
  3. 选择 使得 通常取 65537)
  4. 计算 (模逆元)
  5. 公钥 ,私钥

加密与解密

  • 加密
  • 解密

正确性由 Euler 定理保证:

Diffie-Hellman 密钥交换

两个通信方在不安全信道上协商共享密钥:

  1. 公开参数:大素数 和生成元
  2. Alice 选择随机 ,发送
  3. Bob 选择随机 ,发送
  4. 共享密钥:

窃听者只知道 ,无法计算 (离散对数困难性)。

核心性质

  • 单向性:公钥到私钥的推导在计算上不可行
  • 陷门性(trapdoor):拥有私钥(陷门信息)可以高效解密
  • 非对称性:加密和解密使用不同的密钥,解决了密钥分发问题
  • 数字签名:私钥签名、公钥验证,提供不可否认性

应用场景

  • RSA 加密/签名:HTTPS、电子邮件加密(S/MIME、PGP)
  • SSL/TLS 协议:使用 RSA 或 ECDHE 进行密钥交换,建立安全通道
  • 数字证书:CA 用私钥签名证书,浏览器用 CA 公钥验证
  • SSH:基于 RSA 或 ECDSA 的身份认证

参见