Secure communication between multiple peers on a public channel I am wondering how can I secure communications between multiple peers over a public channel, like an IRC channel.

With two peers it is easy - they exchange their encryption keys and decrypt the secret messages using their private keys, but how would this work with multiple peers without creating excessive duplication of messages?

Is there some way to encrypt a message that would be readable by multiple peers not sharing the same secret key?
Generate a symmetric key
Encrypt symmetric key using public keys of all recipients, and broadcast (or provide on request from a client)
Transmit all user messages encrypted under the symmetric key


This means you only have one copy of the message (but you do have lots of copies of the encrypted symmetric key).

Of course you need to solve the key distribution problem first, to ensure you're only encrypting the symmetric key using authenticated public keys.