首先是一些定义。
- 公钥加密方案(PKE)是一种具有公钥和私钥的加密方案,可以使用公钥对消息进行加密,也可以使用私钥对消息进行解密。
- 密钥封装方法(KEM)是一种具有公钥和私钥的方案,我们可以使用公钥创建包含随机选择的对称密钥的密文(封装)。我们可以用私钥解密密文。
- 密钥交换协议(KEX)是允许Alice和Bob就共享对称密钥达成一致的协议。双移动KEX是一种协议,Alice向Bob发送一条消息,Bob用一条消息答复Alice,然后它们都具有相同的对称密钥。
接下来是一些背景。
- 任何具有足够大的明文空间的PKE都可以很小地转化为KEM。
- 通过添加一些对称加密,任何KEM都可以转化为PKE。(这通常被称为混合加密。)
- 任何CPA安全的KEM都可以变成被动安全的KEX.(Alice运行KEX密钥生成,并将公钥发送给Bob。Bob创建一个包含随机选择的对称密钥的密文,并将其发送回Alice。Alice解密密文并获取对称密钥。)
- 一些被动安全的两步KEX可以变成注册会计师安全的KEM.(导致Alice消息的过程是关键生成过程。公钥是爱丽丝的信息。爱丽丝发送消息后的状态是私钥。导致Bob消息和共享对称密钥(响应Alice的消息,即公钥)的过程是密钥封装,Bob的消息是公钥。
- 被动安全的两步KEX可以通过数字签名变成主动安全的三步KEX。(Bob在这两条消息上签名,并将签名作为其消息的一部分发送。Alice在所有东西上签名并将签名作为第三条消息发送。
换句话说,这些概念是紧密相关的。(上面有很多细节和简化,但从道义上讲,它应该大致正确。)
现在是你的实际问题(有些不清楚,但让我们尝试一下答案)。
- 与传统的PKE(如RSA-OAEP )相比,设计KEM并证明它的安全性通常更容易。类似地,与传统的密钥交换方案相比,设计KEM并证明它的安全性通常更容易。然后我们可以用混合加密把KEM转换成PKE,然后用标准的转换定理把它转换成KEX。这就是为什么KEM是设计和研究的有吸引力的对象。
- 您的草图似乎与上述两步KEX => KEM参数基本相似。然而,这并不意味着KEX更容易设计和分析(从头开始)。经验表明情况并非如此。
- 传统的PKE、KEM和KEX定义不允许进程在通常情况下失败。对于传统计划来说,这一直是很容易保证的。对于较新的计划,情况似乎并非如此。通常情况下,事情可能会出错(解密失败)。这使得分析变得更加困难,但并非不可能(如NTRU所示)。尽管如此,我并不认为解密失败的存在会改变KEM设计和分析似乎比KEX设计和分析更容易的事实。