> To exemplify, we start with a setting (Figure 1a) where each user’s public key is
pre-distributed, and Alice wants to send a deniable message to Bob. First, Alice
chooses a trusted contact, Charlie, to use as a decoy that hides the presence of
Alice’s message. When Alice sends the deniable message, the server immediately
sends a dummy message to Charlie, and then queues Bob’s deniable message.
The deniable message for Bob remains queued in the server until someone, e.g.
Dorothy, sends a regular message to Bob. The server forwards Dorothy’s message
and adds p piggybacking messages that contain Alice’s deniable message.
To protect against an adversary (Section 3.1), DenIM provides deniable
versions of the following actions: key lookups, sending messages, forwarding
messages, and blocking users from sending deniable messages.