“公钥加密是通用加密方案中把加密能力公开、解密能力保密的分支。它为每个安全参数 $\lambda$ 固定公钥空间 $\mathcal K^{\mathrm{pk}}\lambda$、私钥空间…”
通用接口 ​
加密方案不是某一种密钥分发方式,而是一组可被安全实验调用的算法接口。对每个安全参数
规定消息空间
加密算法以消息和随机币为输入,输出密文;解密算法输出消息或统一失败符号
这个写法有意不规定
正确性 ​
正确性要求合法加密能够被配对密钥恢复。若方案允许极小失败概率,可写成
概率覆盖密钥生成和加密随机币;若解密本身随机,还要包含其随机币。完美正确性取
正确性只回答“诚实生成的密文能否恢复”,不回答旁观者或主动攻击者能知道什么。确定性替换密码可以完全正确却毫无保密性;反过来,一个看似隐藏消息、却偶尔把合法密文解成错误明文的接口也不是合格方案。安全性质必须另由挑战实验和攻击者能力定义。
随机币、nonce 与状态 ​
内部随机币
其中 nonce
认证加密还可带关联数据
私钥与公钥两条分支 ​
在对称加密中,持有
通用语法也不声称两类方案能任意互换。私钥加密依赖预共享秘密,适合高吞吐数据;公钥加密解决开放发送接口,却还需认证公钥并承担更高计算与密文膨胀成本。混合加密通常让公钥 KEM 建立会话密钥,再由对称 DEM 加密正文,其组合安全需要单独定理。
安全目标怎样接入 ​
IND-CPA在这个接口上加入等长挑战消息与加密访问,要求攻击者不能辨认挑战来自哪条消息。IND-CCA继续开放受限制的解密查询,检验相关密文和错误反馈是否泄漏挑战。它们共享
消息长度、密文长度、访问模式和错误时间并不会因“加密”二字自动隐藏。若方案只承诺等长消息不可区分,密文长度仍可泄漏长度;若抽象解密只返回一个
例子与边界 ​
一次一密符合三算法语法并达到单次使用下的完美保密,但密钥长度与消息相同,重复使用会暴露明文异或;正确接口和使用次数都是结论的一部分。Textbook RSA 也能在合适消息集合上正确解密,却是确定且可塑的,不满足一般 IND-CPA。两个例子分别说明:通用语法负责让问题可陈述,不把任何安全等级预装进定义。
哈希、数字签名和密钥交换不是缺少 Dec 名字的加密方案变体。哈希没有配对密钥与可逆正确性,签名验证不恢复消息,密钥交换让双方共同导出秘密而不直接加密任意正文。只有接口和目标都对齐时,才能复用加密安全游戏。
参考资料
- Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, 3rd ed., CRC Press, 2020, Chapters 2–4 and 11–12。
- Dan Boneh and Victor Shoup, A Graduate Course in Applied Cryptography, version 0.6, 2023, Parts I–III。
- Oded Goldreich, Foundations of Cryptography, Vol. 2, Cambridge University Press, 2004, Chapters 5–7。