Digital Signatures in ChatterBox
All messages (including images & commands) sent in ChatterBox are digitally signed using ECDSA, very similar to Ethereum transactions.
Digital signatures are automatically added to messages, it is impossible to send a message in ChatterBox that is not digitally signed.
Digital Signatures Vastly Improve Security
The signed data includes the sender, recipient, message payload, time it was sent, and any other metadata (location, etc) that is part of the message or header.
The addition of a signature to every message makes it impossible for other devices to alter the message or change any of the metadata (location, expiry, etc).
Whether in a private mesh cluster or open / secure channel, any device is easily able to validate the signature of any message, even asymmetrically encrypted messages. This means if a fake or altered message arrives, all devices that receive it will know to ignore it, and the fake message will die immediately.
Private Mesh Cluster
Within a private cluster, all messages are signed using the sender’s private key. Since all on-cluster devices have (or can get) this sender’s public key, the signature is easily verified at every hop.
Even though devices assisting in deliver can’t decrypt a direct message between other devices, they can validate the signature.
Signed Delivery Confirmations
In a private cluster, as soon as a device receives and validates a DM intended for it, the recipient device will create a delivery confirmation message, sign it, and send it to the original sender. The sender will display a checkmark, indicating it has received signed proof that the message was delivered all the way to the end recipient.
A green checkmark means the message was delivered directly with no meshing. A blue checkmark means the message traveled at least two hops on its way to the recipient.
Open Channels
Despite the word “open”, channels employ unpredictable frequency hopping, encryption, and digital signatures. They are only open in the sense that there’s no constant pinging going on, there’s no limit to the number of devices in a channel, and anyone who knows the series of 4 passwords can join the channel, rather than having to be onboarded be a root device.
Within an open (unlimited) channel, all broadcasts are signed and encrypted using the channel’s secret keys (there are 4 distinct secret/symmetric keys). This means any device in the channel is able to verify the signature.
In an open channel, all messages are signed using part of a combination of these 4 secret/symmetric keys.
Any device in the channel can easily validate the signature automatically, and will do so before considering it valid, and before forwarding the message along if it chooses to do so.