Cifrela Privacy Policy
DRAFT — to be reviewed by a lawyer before public launch.
Draft of 18 October 2026 (supplemented on 20 October 2026, 23 October 2026, 27 October 2026 and 28 October 2026); document version:2026-10-28.
1. Who we are
The Cifrela service (an app for Android and iOS and a message delivery server) is provided by SOFTSOLEDGE IT LLC (ТОВ «СОФТСОЛЕДЖ АЙТІ»; EDRPOU code 45418214; vul. Zelena 109, office 444, Lviv 79035, Ukraine; "we", "us"). We are the personal data controller within the meaning of Regulation (EU) 2016/679 (General Data Protection Regulation, GDPR) and the personal data owner (володілець персональних даних) within the meaning of the Law of Ukraine "On Personal Data Protection".
Contact for personal data matters: office@softsoledgeit.com.
The service is in testing: its features and this Policy may change (see section 11).
2. Key points
- We cannot see the content of your messages. Messages are encrypted on your device (end-to-end encryption using the MLS standard, RFC 9420, with post-quantum protection by default) and decrypted only on your contacts' devices. We do not hold the keys to decrypt them. Attachments (photos and documents), your profile (name, job title, profile photo) and the audio and video of calls are end-to-end encrypted in the same way: the server stores and forwards only ciphertext. The exception is the employee card in a company account (name and job title for the colleague directory, section 3).
- We store the minimum data needed to deliver messages and protect the service against abuse. Timestamps on the server are rounded (to the day or the minute); the message server's logs contain no usernames, group identifiers or IP addresses (for the technical logs of calls, see section 3).
- No ads, no sale of data, no trackers, no analytics. The app does not use Google services (Firebase) or any other third party for notifications or statistics; the website and download pages do not use cookies.
- Your phone's address book does not leave the phone. If you open "Invite from contacts" yourself and grant permission, the app shows your contacts only on the phone — the list is not sent to the server or stored. Only someone who already knows your exact username or email address can find you in the service, and only if you have not turned this off (section 3).
- You can delete your account in the app at any time: "Settings → Data → Wipe all data".
- Bots and the AI assistant — only where people added them. A bot is a chat participant with its own keys: it sees only the chats it was added to and cannot be the first to write to someone who did not add it. Messages addressed to the AI assistant (an “@assistant” mention or a reply to its message), together with up to the last 30 messages of that chat, are sent to the AI provider — Anthropic (USA); such a chat always shows a banner, and a company can prohibit the assistant.
3. What data we process
| Data | Source | Purpose |
|---|---|---|
| Username (Latin characters, chosen by you) | you | identification in the service; your contacts see it |
| Public encryption keys (MLS key packages) and the key certificate: username, public signature key, cipher suite, month of issue, company | the app | so that your contacts can verify they are writing to you |
| Hash (SHA-256) of the access token | the app | sign-in without a password; we do not store the token itself, and the app changes it periodically |
| Email address — only if you register by email | you | sending the verification code and service emails; stored on the server encrypted and as a keyed hash (HMAC) used to check whether the address is already registered; never shown to other users, and our administrators see it only in masked form (a***@gmail.com) |
| Registration method, "confirmed / not confirmed" status, who invited you (if you joined by invitation) | the server | spam prevention, "via invitation" contacts |
| Invitations you have created: code, expiry, status, note, usernames of those who used them | you and the server | registration of invitees, "via invitation" contacts; the note is erased as soon as the invitation is used, revoked or expires |
| Email address of a person you invite by email | you | sending a single invitation email; not stored in readable form: the invitation note keeps only a mask (a***@gmail.com), and for the email limit a keyed hash (HMAC) of the address is kept only in memory for up to a day |
| Search visibility: "by name" and "by email" (both on by default) | you | exact search: someone who already knows your username or address can find you |
| Company and role (for company accounts) | the owner of the company account | operation of the company's closed network |
| Acceptance of the documents: document version and time of consent (as per the device clock, without the IP address); when you accept a new version of the documents, the new record replaces the previous one | the app | proof of consent |
| Date of registration and of last activity — to the day; blocking flag | the server | technical support, protection against abuse |
| Encrypted messages, group service records (membership changes, key updates) and group invitations (Welcome): sender's username, group epoch number, record type and size, time of receipt to the minute | the apps | message delivery; we have no access to the content; message sizes are padded so as not to reveal the length of the text |
| Group membership (list of members), date of creation and of last activity of the group (to the day) | the apps | technically necessary to deliver messages to members |
| Attachments (photos, documents) and profile photos | the apps | delivering files to chat members; the server holds only ciphertext, and the key exists only inside the encrypted message on the members' phones. The server sees the group, the sender, the size (padded, accurate to about 12 %) and the upload time to the minute |
| Profile: first and last name, job title, profile photo (all optional) | you | shown to your contacts; sent to your chats as an end-to-end encrypted service message — the server cannot see it |
| Company employee card: first and last name, job title (company accounts only) | you, or the company owner (in the invitation) | colleague directory — so that colleagues can tell who is who even before they share a chat; stored on the server without end-to-end encryption (in the encrypted server state) and visible to colleagues (in the colleague directory, if the company owner has enabled it) and to the company owner |
| Company channels: channel name, its admins, who asked to join (company accounts only) | the company owner or a channel admin (name, admins) and you (request to join) | the list of company channels, so that colleagues can join, and the check that only admins post in a channel; part of the company card — stored on the server without end-to-end encryption (in the encrypted server state); company employees see the name and the admins, channel admins see join requests; posts in a channel are end-to-end encrypted, as in any chat |
| Delivery receipts (✓✓) | the apps | showing the sender that a message has been delivered; a receipt is an ordinary encrypted service message: the server sees only that such a record exists, not which messages it confirms; can be turned off in "Settings → Privacy and security → Delivery receipts" |
| One-to-one calls | the apps | connecting the call: the server sees that a call takes place and when (a service flag that wakes the other person's phone, and the end of ringing) and issues a temporary password for the TURN relay — under a pseudonym, without your username; the relay sees IP addresses, time and traffic volume. Audio and video are encrypted on the phones — neither the server nor the relay can hear or see them |
| Group calls | the apps | connecting through the group call server (the LiveKit SFU, on our own server): the Cifrela server sees that a call is taking place in a group and to whom and when access to the room was granted; the SFU receives only pseudonyms of the room and participants (no usernames; a person's pseudonym differs in each group, and only the Cifrela server that issues it can link it to a username), IP addresses, technical data that the app sends when connecting (phone model, Android or iOS version, network type — Wi-Fi or mobile, LiveKit library version), time, media type (audio or video), and the volume and rate of encrypted frames (from which it may be possible to guess who is speaking); the SFU runs on our server, and this data is not passed to third parties. Audio and video are encrypted by the phone with a key derived from the group's keys — the SFU cannot decrypt them |
| IP address | the connection | only in the server's memory for the duration of the rate-limiting window (up to 1 hour; up to a day for the limits on search, invitation emails and registration checks, which protect against username enumeration), to protect against brute-force attacks and spam; never written to disk or to the message server's logs. During calls, IP addresses are seen by the TURN relay and the SFU — a connection is impossible without them; their technical logs may contain IP addresses and are limited to a single file of up to 1 MB, with new entries replacing old ones |
| Bots: the bot's username and title, its owner (a company or us), which people added the bot to a chat | from the company owner, the administrator and the apps | delivering messages to and from bots; spam protection: a bot may write first only to people who added it themselves |
Data on your device (encryption keys, message history, contacts verified by QR code, PIN, settings) is stored only on the device and is not sent to us. The data file is encrypted with a key kept in the system's protected storage (Android Keystore, iOS Keychain). Cloud backup (Google, iCloud) is disabled for this data, so it is not transferred to a new device. Unlocking with a fingerprint or face (if you turned it on in "Settings → Privacy and security") is checked by the phone's system: the app receives no biometric data, and the unlock key is kept in the system's protected storage and stops working as soon as a new fingerprint or face is added to the phone.
Notifications without Google. On Android, notifications work without Google services (Firebase): a service of the app runs on your phone and keeps a connection to our server using a separate token that can only be used to wait for new events (the server keeps only its hash). The service has no encryption keys and cannot see messages: the server only says "there is something new", and the notification shows the generic text "New message". The sender's name and the text appear only if you have turned this on in "Settings → Notifications" and the phone is unlocked — they are decrypted by the app itself on the phone. Modes: "Instant" (a permanent connection), "Battery saver" (a check roughly every 15 minutes) and "Off". While the app is open, it likewise waits for new events with one long request instead of polling the server every few seconds. The server sees that the device is online and when a new event wakes it up, but records this neither on disk nor in logs (such a connection does not update the last-activity date).
Search by exact username or email. There is no global user directory and no search by part of a username. Someone who already knows your exact username (case-insensitive) or your email address can find you in "Contacts" and receives in reply only your username and the "confirmed / not confirmed" status — no address, no dates, no information about your activity. The address is compared using a keyed hash (HMAC): the server does not use readable addresses for search. Both options are on by default; you can turn each off at any time in "Settings → Privacy and security → Who can find me". Turning them off only hides you from search: people can still add you by QR code, by invitation or to a group by your exact username. Search queries are written neither to disk nor to logs; for rate limiting, the server keeps in memory for up to a day what was searched for (a username or a keyed hash of an address).
Invitations by email. If you invite someone you know by email, you enter their address yourself (or pick it from your phone's contacts, see below). The server uses the address once — to send, through our email processor (Brevo), an email with fixed text containing your username and an invitation link — and does not store it in readable form: until the email is sent, the address is held only in memory; the invitation note keeps a mask (a***@gmail.com), and for the limits a keyed hash of the address is kept in memory for up to a day. Limits: no more than one email to the same mailbox per day from all users together, plus limits per sender, per IP address and for the whole server. If an account already exists for that address, the email only says that someone is inviting you, without a link. Send invitations only to people you know; the recipient can simply ignore the email and will receive no further emails without a new invitation.
Contacts on your phone. The "Pick from contacts" button opens the system contact list (Android or iOS) without permission to access contacts: the app receives only the one phone number or email address you picked. The "Invite from contacts" button — only if you tap it and grant permission (Android: "Contacts"; iOS: full or limited access to the contacts you choose) — shows in the app a list of your contacts with names, phone numbers and email addresses so you can choose whom to invite. This list is processed only on the phone: the app does not send it to the server, does not store it (it exists only in memory while the screen is open) and does not share it with anyone; you can withdraw the permission in the phone settings. The phone number stays on the phone: you send the SMS or the message with the invitation link in another app yourself. An email address goes to the server only if you confirm sending an invitation email (as described above).
Attachments, profile and profile photo. Your phone encrypts each file with a new random key; only the ciphertext goes to the server, and the key travels inside an end-to-end encrypted message, so only the chat members can read the file. The server keeps the ciphertext for up to 30 days (in a chat with a message timer, no longer than the timer) and then deletes it automatically; "Delete for everyone" deletes the file as well. The app sends the name, job title and photo of your profile to your chats end-to-end encrypted in the same way (the photo as an attachment). The exception is company accounts: so that colleagues can see each other in "Contacts" and "Company" even before they share a chat, the name and job title from the profile are stored on the server in an employee card, visible to colleagues (if the company owner has enabled the colleague directory) and to the company owner; the profile photo is not included in the card. Personal accounts have no card.
Calls. By default, a one-to-one call goes only through our server's TURN relay, so the other person does not see your IP address; if you turn off "Settings → Privacy and security → Hide my IP address in calls", the phones connect directly and see each other's IP addresses. If the relay on the server is unavailable, the app warns you and offers to call directly: once you agree, the phones also connect directly and the other person sees your IP address. In a group call, the phones connect to the group call server rather than to each other, so participants do not see each other's IP addresses. Audio and video are encrypted on the phones; the keys are agreed through the end-to-end encrypted chat, and neither the server nor the relay has them. We do not record conversations — it is technically impossible.
We do not collect phone numbers, address book contacts (they do not leave the phone), biometric data, location data, advertising identifiers, or the content of messages, files and calls (except messages you yourself address to bots or the AI assistant — see “Bots and the AI assistant”).
Bots and the AI assistant. A bot is a chat participant just like a person: it has its own encryption keys and a certificate marked “bot”, and it sees only the chats people added it to, and only messages from the moment it was added. The app labels bots as “bot” everywhere. There are three kinds of bots: system bots (notifications from our systems — WiTime CRM and ClinicKey), company bots (created by the owner of a company account for the company's own systems) and the AI assistant. Messages you write to a bot are decrypted by the bot environment and passed to the system the bot belongs to: a system bot's — to WiTime CRM or ClinicKey, a company bot's — to that company's system. To link your account in such a system with Cifrela, you yourself send the bot a one-time code from that system (“Connect Cifrela”); the system receives the code and your Cifrela username. The server remembers which people added a bot to a chat — only they can receive a first message from that bot. The AI assistant replies only when addressed: with an “@assistant” mention or a reply to its message. Only then are your request, the authors' usernames and up to the last 30 messages of that chat since the assistant was added sent to the AI provider, Anthropic, PBC — nothing else (no keys, no other chats, no email). Only a person can add the assistant to a chat, after a warning; such a chat permanently shows the banner “This chat has an AI assistant”; the assistant can be removed from the chat like any other participant. As soon as the assistant is added, its first message warns all chat participants (including those on older app versions without the banner) that messages addressed to it are sent to Anthropic. The assistant's replies are generated by an artificial intelligence model and may be inaccurate; we do not take decisions about you based on them.
4. Legal bases
- Entering into and performing a contract (the Public Offer Agreement) — data without which the service cannot work: username, keys, token hash, group membership, delivery of messages and attachments, the profile and the company employee card, delivery receipts, calls, invitations, notifications, exact search; Art. 6(1)(b) GDPR; Art. 11 of the Law of Ukraine.
- Your consent — your email address and registration by email; Art. 6(1)(a) GDPR; Art. 11 of the Law of Ukraine. You can withdraw consent by deleting your account or writing to us; this does not affect the lawfulness of processing before withdrawal.
- Legitimate interests — security of the service and protection against abuse: rate limiting, blocking violators, reserving the usernames of deleted accounts; and a single invitation email to an address given by a user (the user's interest in inviting someone they know; the processing is limited: fixed text, the address is not stored in readable form, no more than one email per mailbox per day); Art. 6(1)(f) GDPR; Art. 11 of the Law of Ukraine. You can turn off search by your username or email in the settings at any time.
- Compliance with a legal obligation — where required by law; Art. 6(1)(c) GDPR. We cannot hand over message content because we have no access to it.
- Bots and the AI assistant — the contract (delivering messages to bots that you or your colleagues added to a chat yourselves) and your consent to the transfer to the AI provider: you yourself address the assistant in a chat it was added to after a warning and where the banner is shown; Art. 11 of the Law, Art. 6(1)(a) and (b) GDPR. Spam protection (who added a bot) — legitimate interests.
5. Who has access to data and to whom it is disclosed
- Hetzner Online GmbH (Gunzenhausen, Germany) — server hosting in a data centre in Germany (EU); a processor acting on our instructions.
- Brevo (Sendinblue SAS, France, EU) — a processor that only sends emails with verification codes, service emails and invitation emails to addresses given by users. Brevo receives the recipient's address and the text of the email and keeps delivery logs in accordance with its data processing terms.
- Anthropic, PBC (San Francisco, USA) — a processor, the model provider for the AI assistant (Messages API): it receives only messages addressed to the assistant and up to the last 30 messages of that chat (with the authors' usernames), processes them to generate a reply and keeps them only within the period and for the purpose set by its commercial API terms, without using them to train models. The transfer to the USA is based on a data processing agreement with the standard contractual clauses approved by the European Commission. Company bots pass messages addressed to them to the systems of the companies that created them; for that data the company is a separate controller.
- Other users see only the following:
- your contacts in chats and groups — your username, public key with certificate, and the "confirmed / not confirmed" status, as well as your profile (first and last name, job title, profile photo) if you have filled it in, and delivery receipts unless you have turned them off;
- the other person in a one-to-one call — your IP address, only if you have turned off "Hide my IP address in calls" or if the relay on the server was unavailable and you agreed to the direct call offered by the app;
- someone who knows your exact username or email address — your username and the "confirmed / not confirmed" status in the search result (unless you have turned search off); we do not show them your address;
- a person you invited by email — your username in the email;
- the person who invited you and the people you invited — each other in contacts, with the date of registration (to the day);
- colleagues in your company — your username, the first and last name and job title from your employee card, and your role in the colleague directory, if the company owner has enabled it; the company owner also sees your employee card, date of registration and approximate recency of activity ("in the past day", "this week", "long ago").
- Our authorised staff (service administrators) see the service data listed in section 3 without message content, and your email address only in masked form. The administration panel is not reachable from the internet; it can be accessed only through a secure channel. Administrators' actions (sign-ins, blocking and deleting accounts, settings changes and so on) are recorded in a log: who, what, when and to which account — without content or settings values; only the head administrator can see the log.
- Public authorities — only on the grounds and in the manner established by law.
- We do not sell or disclose data to advertisers, data brokers or for analytics.
The server and the data are located in the EU (Germany). The transfer of personal data from Ukraine to EU Member States complies with Art. 29 of the Law of Ukraine, as these states ensure an adequate level of personal data protection. We are a Ukrainian company: you provide your data directly to us, and our authorised staff administer the server remotely.
6. How long we keep data
- Account data (username, keys, certificate, token hash, email address, status, company and role, consent record) — until you delete your account, or until it is deleted by the company owner (for company accounts) or by us in the cases provided for in the Public Offer Agreement. Inactive accounts are currently not deleted automatically, and uninstalling the app does not delete the account on the server: if you no longer use the service, delete your account in the app or write to us.
- Encrypted messages, group service records and group invitations — 30 days from receipt by the server, after which they are deleted automatically. The server does not track who has already received a message, so it keeps messages for 30 days regardless of delivery. A group with no records for more than 30 days is deleted together with its member list.
- Encrypted attachments and profile photos — up to 30 days from upload (in a chat with a message timer, no longer than the timer), after which they are deleted automatically; earlier if the author deletes the message for everyone or the group or the author's account is deleted.
- Company employee card — until you change or remove the name and job title, or until the account is deleted.
- Company channels — until the channel is deleted (by the company owner or its creator) or the company is deleted; a request to join — until an admin adds you, but no longer than 7 days.
- Calls: the service flag of an incoming call — in the server's memory for up to 60 seconds; call signals in the chat — as encrypted messages (up to 30 days); the server does not store temporary relay passwords or group call room access (they are valid for up to 2 hours; for rate limiting, counters are kept in memory for up to an hour); the technical logs of the relay and the SFU (they may contain IP addresses, and the SFU logs also the phone model, OS version, network type and LiveKit library version) — a single file of up to 1 MB, with new entries replacing old ones.
- After an account is deleted:
- the account record, keys, certificate, token hash, email address, group memberships and consent record are deleted immediately, and your active invitations are revoked;
- messages you have already sent to groups remain available to other members in encrypted form until the 30-day period expires, but your username in them, in invitations and in group data is replaced with an anonymous placeholder;
- for one year we keep only a keyed hash (HMAC) of the username with the date of deletion, so that nobody can take your username and impersonate you; at your request we can release the username earlier;
- if the account was deleted together with a company or by the company owner, a hash of the access token with the reason for deletion is kept for 30 days, so that the app on your device learns of the deletion and destroys the local data.
- Invitations — up to 30 days after they expire.
- Email verification code — 15 minutes; technical counters used to limit the number of emails — up to 1 hour.
- The address you sent an invitation to — only in memory until the email is sent; counters for invitation emails and search (including keyed hashes of addresses) — in memory for up to a day.
- Encrypted backups of the server state — up to 14 days.
- Administrators' action log — no longer than a year (at most the last 5,000 entries).
- Bots: a bot's state in the bot environment (its keys and the messages of the chats it was added to) — encrypted, until the bot is deleted; who added a bot to a chat — until the bot or your account is deleted; counters of requests to the AI assistant — until the end of the day (UTC), without content. What the system a bot belongs to (WiTime CRM, ClinicKey, a company's system) keeps — under its own rules; Anthropic — under its commercial API terms.
7. Your rights
Under Articles 15–22 GDPR and Article 8 of the Law of Ukraine "On Personal Data Protection", you have the right to:
- know what data we process, why, where it comes from and where it is stored, and to access it;
- have inaccurate data rectified;
- have your data erased: "Settings → Data → Wipe all data" deletes the account on the server and all data on the device. If you no longer have the device or the account is blocked, write to us: since we cannot reliably identify the account holder without the device, we may ask you to confirm the request (for example, by email from the address given at registration);
- restrict processing or object to it;
- receive the data you provided in a structured, machine-readable format (data portability);
- withdraw your consent;
- lodge a complaint with the Ukrainian Parliament Commissioner for Human Rights, with the data protection supervisory authority of the EU Member State where you live or work or where the infringement took place, or with a court.
Please send requests to office@softsoledgeit.com; we respond within one month (no later than 30 calendar days). We cannot provide message content because we do not have it.
We do not make decisions based solely on automated processing and do not carry out profiling.
8. Security
End-to-end MLS encryption, with a post-quantum hybrid (ML-KEM-768 + X25519) by default; regular automatic key updates in groups; padding of message and attachment sizes; encryption of attachments on the phone (XChaCha20-Poly1305) and of call media (DTLS-SRTP, and in group calls also frame encryption with the group's key); secure TLS connections (the app uses TLS 1.3 and trusts only Let's Encrypt certificates); encryption of data on the device (key in the system keystore) and on the server (the server state and backups are encrypted); message server logs without usernames, group identifiers, IP addresses or content; administrative access only through a secure channel. No system offers absolute protection. We will notify you and the competent data protection authority of incidents affecting your data in the cases and within the time limits set by law (under the GDPR, the supervisory authority within 72 hours).
9. Children
The service is intended for persons aged 16 and over. If you are younger, use it only with the consent of your parents or other legal guardians.
10. Company accounts
For company accounts, the owner of the company account creates invitations for employees, sees the list of employees (username, employee card — first and last name and job title, role, date of registration, approximate recency of activity), can specify an employee's name and job title in the invitation, turns the colleague directory on or off, can remove an employee (the employee's account is deleted) and can delete the company together with all its accounts. The company owner, like us, cannot see the content of employees' conversations. Separate terms may apply to companies, including an agreement on the processing of employees' personal data.
Company channels. The company owner and the channel admins they appoint can create announcement channels within the company: only a channel's admins can post, employees read, react and vote in polls. The server stores the channel name, its admins and join requests without end-to-end encryption (like the employee card), and company employees can see them; the content of posts, files and polls is end-to-end encrypted, and neither we nor the company owner can see it. Poll votes are visible to chat members (a secret ballot isn't possible in an end-to-end encrypted chat); the server can't see the votes.
Company bots and the AI assistant. The company owner can create company bots (to integrate the company's systems), disable and delete them, and prohibit the AI assistant in the company's chats — then it cannot be added to the company's chats, and in chats where it already is, it does not reply to the company's people.
11. Changes to this Policy
We will notify you in the app in advance of any material changes; a new version takes effect from the date stated at the top. When the documents change, the app shows the new version and asks you to accept it; the server records the version and time of the new consent (as per the device clock, without the IP address), and this record replaces the previous one. Until you accept, the service keeps working as before, and the app reminds you of the new version when it starts. If you do not accept the new version, you can delete your account.