xPulse
πŸ‡¬πŸ‡§ EN

Security

End-to-End Encryption

Messages are end-to-end encrypted (ECDH P-256 + AES-GCM 256-bit) – in addition to the DTLS transport layer. The key is only computed on the devices of the conversation participants and never leaves them.

Each session uses a fresh, ephemeral key pair – forward secrecy is guaranteed.

Local Data Encryption

All sensitive data in the browser (peer list, chat history) is stored encrypted with AES-GCM 256-bit. The key is derived at login from your client ID and your personal hash using PBKDF2 (200,000 iterations, SHA-256) – it never leaves your device.

Older unencrypted data is transparently detected on read and automatically encrypted on the next write.

Encrypted Backup Export

When exporting you can optionally choose encrypted export. This produces an .enc.json file that can only be opened on a device that has the same client ID and hash.

An unencrypted export remains available and is the recommended way for device transfers.

WebRTC & IP Address

WebRTC uses encrypted connections (DTLS) by default.

However:

"No Server" – What Does That Actually Mean?

There is a signaling/presence server for:

Chat content does not go through this server – it goes directly from device to device.

TURN Server

For connections behind restrictive NAT/firewall configurations a TURN server (coturn) is integrated. It is used automatically when a direct P2P connection is not possible. TURN credentials are provided securely via the signaling server – not hardcoded in the client.

Server Logging

The signaling server can log connection events. The current logging status is shown as a notice in the app.

Logging Active (Normal Operation)

Connection events are logged:

IP addresses are anonymised – the last octet is set to 0 (e.g. 88.12.34.0 instead of 88.12.34.56). Logs are automatically rotated (max. 10 MB Γ— 5 files) and not permanently archived.

Logging Disabled

No connection data is stored.

Debug Mode

Used exclusively for diagnostics by the operator. IP addresses are logged in full in this mode. Legal basis: legitimate interest pursuant to GDPR Art. 6(1)(f). An active debug mode is explicitly shown in the app.

en/security.md 2026-03-13