Encryption and safety codes
Experimental. Veyragram’s encryption is built from well-reviewed cryptographic building blocks, but the way they are put together is new and has not been independently audited. It also lacks forward secrecy, explained below.
What is protected#
In direct messages and rooms, your browser encrypts each message and file before it is sent, separately for every device of every member. The server stores and forwards scrambled data it cannot read.
| Protected (end-to-end encrypted) | Not protected |
|---|---|
| Message text and replies | Who you talk to, and which rooms you are in |
| File names, types and contents | When messages are sent and how big they are |
| Your wallet address, visible to people you talk to | |
| The official Veyragram group (public, by design) | |
| Telegram chats (Telegram and Veyragram’s server can read them) |
Every message is signed by the device that sent it, so it can’t be altered or attributed to someone else without your app noticing.
Limits you should know#
- No forward secrecy. Each device keeps long-lived keys. If someone later steals a device’s keys, they could decrypt messages that were sent to that device and that they had copied earlier.
- New devices can’t read old messages. Messages are encrypted only to the devices that existed when they were sent.
- Your device is the weak point. Anyone who controls your unlocked browser can use its keys. Malware, or a security bug in the site, could too.
- Removing someone stops new messages from reaching them. It can’t take back what they already received.
Safety codes#
Veyragram’s server tells your app which devices belong to the person you are writing to. A dishonest or compromised server could add a device of its own. Safety codes let you check.
In a direct conversation, open the conversation details to see a 60-digit safety code. It is made from both people’s device fingerprints and is the same on both sides. Compare it in person, or over another channel you trust. If it matches, you are encrypting to the right devices.
The code changes whenever either of you adds or removes a device, so compare again after that. Your own device fingerprints are under Settings → Devices.
Keys on your device#
Your device’s keys are stored in the browser, wrapped by a key the browser won’t export. Decrypted messages are kept in memory only and decrypted again when you come back. Unsent drafts are kept unencrypted in this browser until you send them or sign out; you can turn that off under Settings → On this device.