Open
Description
Related to password-protected cabals, it should be possible to create a cabal that has:
- Protected entry (admin must approve or pre-approve peers, or challenge peers to provide a password, or both)
- Protected reads (messages must be encrypted using a shared key issued by admin)
Such a cabal must have at least one or more admins to be protected in this way. It is important to protect entry as obscurity is not privacy, and important to protect reads in case the multifeed falls into hostile hands.
For example, consider this hypothetical scenario:
- Peer creates a cabal and designates themselves as an admin. They enter or generate a challenge key -- a password -- and an encryption key. A sync-only key is also generated that can be used in place of the challenge key.
- Additional peer joins. They present the correct challenge key, and the admin passes them the encryption key as part of the handshake. (If the peer presented the sync-only key, the admin would NOT pass them the encryption key, but would begin sharing the multifeed. This enables sync-only peers, such as relays, without compromising the integrity of the cabal.)
- Admin publishes the message "hello friendo", which is written to the multifeed as:
{
"type": "chat/encrypted",
"content": "..."
}
The value of the content
field can then be decrypted into a normal message:
{
type: 'chat/text',
content: {
text: 'default',
channel: 'hello friendo'
}
}
In this way the encryption key is never written to the log itself.
- Peer loses control of their machine and a hostile entity recovers the multifeed, but they are unable to read it because the encryption key is only shared during the handshake.
- Attacker, undaunted, cracks the discovery key and the challenge key. They connect to the swarm and retrieve a list of peers, but are unable to access the multifeed because the admin manually rejects them during the handshake. All other peers, recognizing the admin, also reject the attacker peer.
The end result is a private, encrypted cabal using public hyperswarm infrastructure.
Metadata
Metadata
Assignees
Labels
No labels