昨天在我的课上,我们学习了如何从 Alice 向 Bob 发送消息,以实现机密性、完整性和真实性的目标。为了获得更好的性能,我们使用具有对称和非对称密钥的混合方法。
Alice 和 Bob 的私钥由证书颁发机构 (CA) ->真实性签名
由于散列,完整性的目标得到保证:
h = hash(M)
由于使用了只有 Alice 和 Bob 知道的对称密钥,因此保密性得到了保证,由于他们的非对称密钥而交换了该对称密钥。
这一切都会导致以下消息 - Alice 发送给 Bob:
# public keys
K_A_E = public_key_Alice
K_B_E = public_key_Bob
K_B_E and K_A_E are signed by a CA.
# private keys
K_A_D = private_key_Alice
M = "our secret message"
h = hash(M)
K_AB = the_symmetric_key
this results in the message:
{K_AB}**K_B_E {{h}**K_A_D, M}**K_AB
我不明白为什么有必要以 . 开头的消息{K_AB}**K_B_E
。
* 为什么必须K_AB
在消息的开头添加对称密钥?
* 这个对称密钥是否添加到 Alice 和 Bob 之间发送的每条消息中?
* 我们的讲师提到OpenPGP中使用了这种加密方式。那么 OpenPGP 会为每条消息创建一个新的对称密钥吗?