多于两个收件人的非对称加密?

夫斯特夫

我想创建一个应用程序,在该应用程序中,多个人应该能够安全地相互通信(想像一下去中心化的群聊)-听起来很简单,但这是我的问题:

据我了解,使用非对称加密,您将拥有一个公共密钥和一个私有密钥。每个想要发送消息给某人的人都必须使用公共密钥对其进行加密,而接收者可以使用私有密钥对其进行解密。
但是,如果有两个以上的人应该能够阅读所有消息,那么我不知道它应该如何工作……要么每个人都有公共密钥和私有密钥(我认为这是一个坏主意),要么每个人都有拥有所有人的公共密钥,并且必须向每个收件人发送单独的消息。
另外,我想100%确定,发送消息的人确实是他假装的人。(因此没有人能够“伪造”消息)

有没有可以解决我问题的加密算法?

理查德·施瓦兹(Richard Schwartz)

我假设您的意思是非对称加密,而不是异步加密。

在大多数情况下,我们实际上并不使用非对称密码来加密消息的内容。这是因为消息可能很大,并且与对称密码相比,非对称密码的速度较慢。这也是由于您要在此处解决的问题:在多方通信中,您希望只发送一次消息,并让每个人都可以阅读。因此,诀窍在于我们将非对称和对称技术结合到了解决该问题的协议中。

首先,我们生成一个随机对称密钥,我们可以称其为“会话密钥”。我们将把该会话密钥分发给所有收件人,但是我们需要安全地进行此操作。这实际上是我们要使用非对称加密的地方。我们使用每个接收者的每个公用密钥和一个非对称密码(例如RSA)对每个接收者加密一次会话密钥,然后将加密的会话密钥发送给每个配方。我们可以将其分别发送给每个收件人,也可以仅构建如下结构:

"recip1|recip1EncryptedSessionKey|recip2|recip2EncryptesSessionKey..." 

并将整个内容发送给所有接收者,每个接收者都可以解析并解密他们自己的会话密钥的加密副本。(这通常是在加密电子邮件中完成的方式:该消息随附所有收件人的所有会话密钥的所有加密版本的列表,并且每个人都获得完全相同的电子邮件。)

一旦将会话密钥安全地分发给所有收件人,我们就可以使用会话密钥对每个消息使用对称密码(例如AES)进行一次加密,然后将相同的加密消息发送给所有收件人。由于他们都已经收到了会话密钥的副本,因此他们都可以读取它并对其执行操作。

请注意,就像所有与加密有关的事情一样,会话密钥实际上是随机的至关重要不要仅仅依靠普通的香草随机数生成器,并且出于天堂的缘故,不要自己动手。确保使用加密安全的伪随机数生成器

真正的聊天系统可能会复杂得多,可能具有定期重新建立新会话密钥的机制,并且安全协议的细节可能非常复杂。即,考虑一下如何防止坏家伙介入并欺骗每个人使用他选择的会话密钥!但是基础如上所述。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何测试发送给两个收件人的电子邮件(Rspec)

来自分类Dev

如何测试发送给两个收件人的电子邮件(Rspec)

来自分类Dev

以非对称方式合并两个Dictionary <string,string>

来自分类Dev

静态非对称加密

来自分类Dev

非对称加密

来自分类Dev

如何使用DocuSign将包含两份文档副本的信封正确发送给两个收件人,每个收件人签名一次?

来自分类Dev

与3个特定收件人的通知

来自分类Dev

在Bash中的两个非对称文件之间生成差异

来自分类Dev

具有多个收件人的端到端加密

来自分类Dev

PGP加密多个收件人的单个邮件

来自分类Dev

解密收件人输入错误的GPG加密文件

来自分类Dev

smtplib:为什么“收件人”字段中的收件人两次收到邮件?

来自分类Dev

Jasypt和非对称加密

来自分类Dev

JWT使用非对称加密

来自分类Dev

HTTPS使用非对称或对称加密?

来自分类Dev

CAN消息可以有两个可靠的收件人吗?

来自分类Dev

使用KeyCzar的Android非对称加密

来自分类Dev

使用KeyCzar的Android非对称加密

来自分类Dev

非对称Android RSA加密-.NET

来自分类Dev

本地模式下的非对称加密?

来自分类Dev

获得收件人而不是user()-> auth()的收件人

来自分类Dev

OpenSharedItem定位收件人

来自分类Dev

ZeroMQ选择收件人

来自分类Dev

多个收件人的字段

来自分类Dev

如何确定OpenPGP加密是对称还是非对称?

来自分类Dev

SSH何时使用非对称和对称加密?

来自分类Dev

使用具有多个收件人的PGP / GPG加密文件

来自分类Dev

是否可以将收件人添加到GPG中已经加密的文件中?

来自分类Dev

如何用收件人的密钥加密电子邮件?