请参阅这篇文章:公钥密码学。
Alice 向 Bob 发送一条消息。
为了对其进行加密,Alice 获得了 Bob 的公钥。该消息使用 Bob 的公钥加密。
只有 Bob 可以解密消息,因为只有 Bob 拥有私钥。
这被称为非对称加密,因为加密的密钥与解密的密钥不同。
使用对称方法进行群聊的问题在于,您还需要一种让每个人都安全地知道密钥的方法。此外,如果有人离开该组,他们仍然可以解密聊天记录。
您可以将非对称加密与对称加密结合使用。
消息M使用对称密钥K加密。中号被加密发送到该组的所有接收者,沿着ķ通过加密ķ Ñ。
K n是非对称公钥并且因接收者而异。
例如,K 1是鲍勃的公钥。
K 2是Alice 的公钥。
K是一个对称密钥,每条消息都是完全随机的,并且因为这是为每个收件人加密并与消息一起发送的,所以只有当前组成员才能解密。
来自评论:
所以K是由许多其他公钥生成的密钥,用于对消息进行加密。为了解密它,我需要一个链接到 K 的私钥。这允许人们聊天。对于 1to1 消息,应使用公钥(来自接收者)和私钥(来自发送者)对消息进行加密。这将允许发件人和收件人解密消息。这个对吗?
不。
K是由 CSPRNG 生成的密钥。
K用于加密消息M,给出m。即K ( M ) = m,其中括号中的值显示加密的内容,外面的值显示使用了哪个密钥。
以下内容通过线路发送:mK 1 ( K ) K 2 ( K )
ķ 1用于加密ķ,所以Bob可以解密ķ使用自己的私钥ķ 1。
ķ 2用于加密ķ,所以Alice可以解密ķ使用自己的私钥ķ 2。
Alice 和 Bob 可以看到K并使用它将m解密回M。
公钥总是用来加密,私钥用来解密。发件人不需要解密消息,因为他们已经知道消息的明文。