Privacy Policy
Last updated: July 27, 2026
This Privacy Policy describes how Gabriel Pincu, trading as sys32.net ("we", "our", "us") collects, uses, and protects your personal data when you use Vocis HD (the "App").
1. Data Controller
Operator (Data Controller): Gabriel Pincu, trading as sys32.net
Contact: vocis@sys32.net
Service hosted at: IONOS SE, Elgendorfer Str. 57, 56410 Montabaur, Germany (EU/EEA)
2. Data We Collect
We collect the following data to provide the App's functionality:
- Account data: username, display name, and password (hashed with bcrypt — we never store passwords in plaintext).
- Profile data: display name and online status (shared with your contacts).
- Communications: text messages sent through the App. All messages are end-to-end encrypted (X3DH + Double Ratchet + AES-256-CTR + HMAC-SHA256) — the server never has access to plaintext content.
- Media files: images, videos, and other files you share through the App. Files are end-to-end encrypted (AES-256-CTR + HMAC-SHA256) before upload. Stored temporarily on our server and deleted immediately after the recipient downloads them (one-time viewing).
- Call data: HD audio calls are relayed through our server in real-time using WebRTC with DTLS-SRTP encryption. Audio is not recorded or stored.
- Local device storage: if you opt in to "Remember Me", your username is stored encrypted on your device (Android EncryptedSharedPreferences with AES-256). The password is never stored — session persistence relies on the JWT token. Missed call history is also stored locally.
- Device information: we do not collect device IDs, IMEI, MAC addresses, or any hardware identifiers.
- Push notification tokens: if you enable push notifications, a device token (FCM token) is stored on our server to deliver incoming call and message alerts.
- Android permissions: The App requires the following permissions solely for core functionality:
- Record Audio — required for HD voice calls (microphone access).
- Notifications — to alert you of incoming calls, messages, and file transfers.
- Foreground Service + Wake Lock — to keep calls running and receive incoming calls when the app is in the background.
- Vibrate + Full Screen Intent — to notify you of incoming calls even when your device is locked.
The App does not request access to your device contacts, camera, location, or phone state.
Downloaded files are saved to your device using Android's scoped storage (MediaStore on Android 10+)
or the app's private external directory — no storage permission is required.
- Server logs: IP addresses and User-Agent strings may be logged for security and operational purposes.
- Local crash diagnostics: In the event of an app crash, a diagnostic log containing only the stack trace (class names, method names, file paths, line numbers), device model, Android version, and app version is saved locally on your device. This data is never sent to us automatically — you must explicitly choose to share it via email or another app. No message content, encryption keys, passwords, tokens, or personal data is included in crash logs. You can review, delete, or share these logs at any time from the app's Crash Logs screen.
- Google Play performance and diagnostic data: If you install Vocis HD through Google Play, the Google Play Store app may collect anonymized crash logs, ANR (Application Not Responding) reports, diagnostic data, and performance metrics (app startup time, frame rendering time, battery usage) to help improve app quality and stability. This data is collected by Google Play Services on our behalf and is accessible to us in aggregated form through Google Play Console. Collection only occurs if you opt in on your device (shown on first launch). You can opt out at any time: device Settings → Google → Privacy → Ads & Analytics → App analytics. This data collection is governed by Google's Privacy Policy.
- Supporter Badge purchase data: If you purchase a Supporter Badge through the App, the following data is stored on our server: the product ID (e.g., supporter_bronze, supporter_silver), purchase token (provided by Google Play), purchase amount in cents, and the timestamp of purchase. This data is linked to your account for the purpose of tracking your cumulative support total and determining your rank. Purchase tokens are stored solely to prevent duplicate processing. No payment card details, billing addresses, or other financial information are collected or stored by us — all payment processing is handled by Google Play.
Note on contacts: Contacts are added manually by searching for another user's exact username within the App. The App does not access or upload your device's address book / contact list.
3. Legal Basis for Processing (GDPR Art. 6)
We process your personal data on the following legal bases:
- Performance of a contract (Art. 6(1)(b)) — processing your account, messages, and calls is necessary to provide the service you signed up for.
- Legitimate interests (Art. 6(1)(f)) — server logs, security monitoring, and fraud prevention are necessary for the security and integrity of our service.
- Legal obligation (Art. 6(1)(c)) — we may retain certain data to comply with applicable laws.
4. How We Use Your Data
Your data is used exclusively to operate the App:
- Authenticate you and maintain your session (JWT access tokens, 24-hour expiry; opaque refresh tokens, 30-day expiry, hashed at rest).
- Display your contacts and their online status.
- Deliver end-to-end encrypted messages and file transfers between you and your contacts.
- Relay HD audio calls between you and your contacts via WebRTC with DTLS-SRTP encryption (real-time only, not stored).
5. End-to-End Encryption
Vocis HD implements end-to-end encryption for messages and files using
the X3DH (Extended Triple Diffie-Hellman) key agreement protocol and the
Double Ratchet algorithm for forward secrecy:
- Key exchange: X3DH mutual authentication via Ed25519 identity keys and signed pre-keys (Ed25519 SPK signatures). One-time pre-keys (OTPKs) provide forward secrecy for the initial handshake.
- Text messages: encrypted with the VocisMsg-v5 protocol — symmetric ratchet + single-step DH ratchet providing forward secrecy. Payload encrypted with AES-256-CTR + HMAC-SHA256 authentication. Server stores only ciphertext.
- Media files: encrypted with AES-256-CTR + HMAC-SHA256 using per-chunk IV increment. Each file derives a unique encryption key from the Double Ratchet session via HKDF. Encrypted files are stored temporarily on the server and deleted immediately after the recipient downloads them. Undownloaded files are cleaned up after 24 hours. Files are never accessible in plaintext.
- Audio calls: use WebRTC with mandatory DTLS-SRTP encryption — the same protocol used by major messaging apps. Each call leg has its own independent DTLS session negotiated between the app and the SFU server. Audio is encoded with Opus (48 kHz, 192 kbps) and transmitted over UDP. Audio is never recorded or stored.
- Local key storage: E2EE private keys (identity key, signed pre-keys, one-time pre-keys, session root keys) are stored in an AES-256 encrypted SQLite database (SQLCipher) on your device. The database passphrase is protected by Android Keystore via EncryptedSharedPreferences. Keys are never written to disk in plaintext.
- No silent plaintext fallback for messages: If E2EE encryption fails for any reason, messages and files are NOT sent — the App shows an error instead. There is no automatic fallback to unencrypted transmission. Audio calls use WebRTC, which mandates encryption at the protocol level — DTLS-SRTP is always active and cannot be disabled.
The server never has access to E2EE encryption keys, message plaintext, or file contents.
Only the intended recipient can decrypt messages and files. All communications are additionally protected in transit by
TLS 1.3 (WebSocket and REST API) with certificate pinning (SPKI hash — protects against compromised Certificate Authorities).
Audio calls are protected by DTLS-SRTP (WebRTC media encryption).
6. Data Storage and Security
- Server: Data is stored on a VPS at IONOS (Germany, EU). The database is SQLite. Passwords are hashed with bcrypt. All API communication is encrypted via HTTPS/TLS 1.3.
- Device: Your JWT token and saved credentials are stored encrypted on your device using AES-256 (Android EncryptedSharedPreferences, backed by Android Keystore). E2EE private keys (identity key, signed pre-keys, one-time pre-keys, session root keys) are stored in an AES-256 encrypted SQLite database (SQLCipher) with a passphrase generated and protected by Android Keystore.
- Encryption keys: Your identity key and session keys are stored locally on your device only, encrypted at rest. The server stores only public keys necessary for the X3DH protocol (identity public key, signed pre-key public key, one-time pre-key public keys).
7. Data Retention
- Account data: retained until you delete your account.
- Messages: deleted from the server immediately after delivery to the recipient. Your local copy remains on your device until you delete your account or clear app data.
- Media files: deleted from the server immediately after the recipient downloads them. Undownloaded files are cleaned up after 24 hours.
- Server / access logs: IP addresses and User-Agent strings may be logged temporarily for security monitoring, subject to server-level log rotation policies.
8. International Data Transfers
All data is stored on servers located in the European Union (Germany).
We do not transfer your personal data outside the EU/EEA. If this changes in the future,
we will ensure appropriate safeguards (Standard Contractual Clauses) are in place and notify you.
9. Data Sharing
We do not sell or rent your personal data to third parties. However, to deliver
core functionality, limited data is shared with the following service providers:
- Google (Firebase Cloud Messaging) — used to deliver push notifications (incoming calls, contact requests,
new messages, file transfers) when the app is in the background. The server transmits a minimal
notification payload containing the notification type, the sender's user ID, and display name.
Firebase processes this data solely to deliver the notification to your device. FCM device tokens
are stored on our server and deleted when you delete your account.
You can disable push notifications at any time through your device settings.
- Google STUN server — used for WebRTC NAT traversal during calls. Your public IP
address is temporarily processed by Google's STUN server to establish a peer-to-peer connection.
No other personal data is shared, and we do not store this data.
- Google Play (Android Vitals & Crash Reporting) — if you opt in to share usage and diagnostic data with Google Play (shown on first launch), Google Play Services automatically collects anonymized crash logs, ANR reports, and performance metrics (startup time, rendering, battery). This data is accessible to us in aggregated form through Google Play Console solely for improving app quality and stability. You can opt out at any time via your device's Google Settings. This data collection is governed by Google's Privacy Policy.
10. Cookies and Tracking
The App does not run its own cookies, tracking pixels, analytics SDKs, or any
form of behavioral tracking. We do not operate our own analytics or usage statistics collection.
If you install via Google Play and opt in to share usage data, Google Play Services may collect
anonymized crash logs, diagnostic data, and performance metrics on our behalf (see Sections 2 and 9).
You can opt out at any time through your device settings.
Crash diagnostics generated by the App itself are stored locally on your device and are never
sent to us directly — you control if and when to share them via the app's Crash Logs screen.
11. Third-Party Services
The App uses the following third-party services to deliver core functionality:
- Google STUN server (stun.l.google.com:19302) — used for WebRTC NAT traversal during calls. The STUN server temporarily processes your public IP address solely to establish a direct peer-to-peer connection. No other personal data is shared, and we do not store this data.
- Firebase Cloud Messaging (Google) — used to deliver push notifications (incoming calls, new messages, file transfers, contact requests) when the app is in the background. A minimal payload (notification type, sender's user ID and display name) is sent through Firebase. FCM device tokens are stored on our server and deleted when you delete your account.
- Google Play — all payment processing for Supporter Badge purchases is handled entirely by Google Play (part of Google LLC). We do not receive or store payment card details, billing addresses, or any financial information. Google may process your payment data in accordance with its own Privacy Policy. Additionally, if you opt in to share usage and diagnostic data, Google Play Services collects anonymized crash logs, ANR reports, and performance metrics (Android Vitals) on our behalf. This aggregated data is accessible to us through Google Play Console for app quality improvement. See Sections 2 and 9 for details.
- Let's Encrypt — TLS certificate authority for HTTPS. No personal data is shared.
12. Your Rights (GDPR)
Under the General Data Protection Regulation (GDPR), you have the following rights:
- Right of access (Art. 15) — request a copy of the personal data we hold about you.
- Right to rectification (Art. 16) — request correction of inaccurate or incomplete data.
- Right to erasure ("Right to be forgotten", Art. 17) — request deletion of your account and associated data. Use the in-app "Delete Account" option, or contact us.
- Right to restriction of processing (Art. 18) — request that we limit processing of your data under certain circumstances.
- Right to data portability (Art. 20) — request a copy of your data in a machine-readable format.
- Right to object (Art. 21) — object to processing based on legitimate interests.
- Right to withdraw consent — uninstalling the App stops all data collection. You may also revoke specific consents via contact.
- Right to lodge a complaint with a supervisory authority (Art. 77) — if you believe we are processing your data unlawfully, you have the right to file a complaint with your local data protection authority or the European Data Protection Board (EDPB):
Rue Wiertz 60, 1047 Brussels, Belgium
Website: www.edpb.europa.eu
To exercise any of these rights, contact us at: vocis@sys32.net. We will respond within the legally required timeframe (usually 30 days).
13. Security Breach Notification
In the event of a data breach that poses a risk to your rights and freedoms, we will notify
the relevant supervisory authority within 72 hours in accordance with GDPR Art. 33,
and, if required, inform affected users without undue delay (Art. 34).
14. Children's Privacy
The App is not intended for users under the age of 13. We do not knowingly collect data from children.
If you believe we have inadvertently collected data from a child, contact us immediately.
15. Automated Decision-Making
We do not engage in automated decision-making or profiling that produces legal
effects concerning you.
16. Changes to This Policy
We may update this policy from time to time. Material changes will be notified through the App.
The "Last updated" date at the top of this page reflects the latest revision.
17. Contact
For privacy-related inquiries or to exercise your rights:
Email: vocis@sys32.net
Operator: Gabriel Pincu, trading as sys32.net
Terms of Service · How It Works