密钥封装和公钥加密的联系和区别?
密钥封装和公钥加密的联系和区别?
先理解下面这句话:
密钥封装机制是面向的互联网应用,最大的用处是网络连接时建立双方的临时会话密钥。既然是应用就要考虑到网络传输的协议,协议支持的包大小是有限制的,如果公钥加密方案的密文较大,不便于网络传输,就不能应用于实际的协议中。
可以看出密钥封装:
- 密文较小
- 应用广泛
简易理解#
问题1:是不是一个公钥加密方案就可以实现一个密钥封装机制?
回答1:是的,可以用任何一个公钥加密方案构建一个密钥封装机制,且可以保证相同的安全性。
问题2:既然如此,为何还要单独提出所谓密钥封装机制的概念?
回答2:因为专门构建得到的密钥封装机制
问题3:是不是一个密钥封装机制就可以实现一个公钥加密方案?
回答3:是的,可以用任何一个密钥封装机制构建一个公钥加密方案,但在一定条件下可以保证相同的安全性。
常见的安全性定义:
-
CPA安全性(Chosen-Plaintext Security,选择明文攻击),简单来说就是,攻击者可以访问加密预言机,获得任意消息(包括挑战消息)所对应的密文。
-
CCA安全性(Chosen-Ciphertext Security),即考虑多个密文的不可取分性(indistinguishable multiple encryptions),简单来说就是,攻击者可以访问解密预言机,获得除挑战密文外任意密文所对应的明文。
- CCA1:选择密文攻击,有攻击时间要求【午餐攻击】
- CCA2:自适应选择密文攻击,任意时间攻击
深入探究#
效率#
下面内容来自:Jonathan Katz和Yehuda Lindell著作《Introduction to Modern Cryptography, Second Edition》的第11.3节:混合加密与KEM/DEM范式(Hybrid Encryption and the KEM/DEM Paradigm):
其中:PKE(公钥加密)、SKE(对称加密)、KEM(密钥封装)、DEM(数据封装,可以看成私钥加密方案)
以上两种混合方法的共性都是首先生成对称密钥, 再利用对称密钥加密明文, 因此效率的区别体现在第一部分。
第一种方法先选择一个随机的密钥k, 再使用PKE对其加密得到c, 而第二种方法是两步并做一步完成. 好处在哪里呢?
如果使用PKE的方法, 第一部分密文c一定会存在密文扩张, 这是由概率加密的本质决定的, 而如果使用KEM的方法, 第一部分密文c相比k可能不存在扩张, 原因是此时c是对k的封装, 而非加密。
综上, 使用KEM代替PKE, 不仅能够缩减整体密文尺寸, 也能够提升效率(通常封装算法要比加密算法简单很多, 为什么会简单呢? KEM是功能受限的PKE,即KEM只允许加密随机的消息)。
关于封装算法(KEM)通常要比加密算法(PKE)要简单,下面举例分析:

安全性#
KEM+DEM范式极大简化了PKE的可证明安全
对比安全模型即可发现, 对于PKE有CPA/CCA1/CCA三个依次增强的安全性, 而KEM只有CPA/CCA两个依次增强的安全性。
最关键的是:在PKE中敌手A对挑战密文c有一定的控制能力, 而KEM中c完全由挑战者控制, 这一区别使得KEM安全证明中的归约算法更容易设计。
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/17068924.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)