Основний принцип
Сервер Solo2 повністю сліпий. No sabe con quién hablas, qué dices, ni qué archivos compartes. Ni siquiera las señales técnicas que establecen la conexión entre dispositivos son legibles para el servidor — viajan cifradas de extremo a extremo.
Твої повідомлення передаються безпосередньо між пристроями, зашифровані наскрізним шифруванням. Твоя історія розмов зберігається у зашифрованому вигляді у твоєму браузері, ніколи на нашому сервері.
Ключі шифрування автоматично ротуються з кожним повідомленням. Кожне повідомлення шифрується унікальним ключем, який негайно знищується після використання. Технічно це називається Double Ratchet, y significa que incluso si alguien obtuviese una clave, solo podría leer un único mensaje — no la conversación. Además, la seguridad se restaura automáticamente tras cada turno de comunicación: una clave comprometida se vuelve inútil en cuanto se intercambia el siguiente mensaje.
Коли пряме з'єднання між пристроями неможливе (наприклад, через мережеві обмеження), використовується дзеркальний сервер (технічно називається TURN): дані відбиваються від одного пристрою до іншого, але дзеркало не усвідомлює, що відбиває — все передається зашифрованим наскрізним шифруванням, і сервер не може це прочитати. Крім того, всі пакети доповнюються до однакового розміру, щоб спостерігач не зміг витягти інформацію, аналізуючи розмір або частоту трафіку.
Ти завжди можеш побачити в застосунку, який тип з'єднання використовуєш — directa o a través del servidor espejo — y actuar en consecuencia.
Ваш майстер-ключ генерується випадковим чином із 256 бітами реальної ентропії — такий самий рівень, як у Bitcoin. Al crear tu cuenta, Solo2 genera una clave única que se representa como 24 palabras. Tu contraseña protege el acceso al servicio. Tus 24 palabras son la llave de tus datos. Son dos llaves diferentes para dos puertas diferentes.
Навіть якщо наш сервер зникне, ваші дані виживуть. За допомогою ваших 24 слів ви можете отримати доступ до вашого локального сховища без підключення до сервера. Ваші дані — ваші. Справді.
1. Дані, які ми МАЄМО на сервері
1.1 Твій обліковий запис
Ось усі поля, що існують у твоєму записі. Інших немає.
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| Ім'я користувача | Щоб ти міг увійти в систему | Відкритий текст (є публічним за задумом) | До видалення облікового запису |
| Пароль | Автентифікація | Захищений алгоритмом Argon2id (рекомендованим OWASP, стійким до атак зі спеціалізованим обладнанням). Ми ніколи не зберігаємо твій справжній пароль, solo una huella matemática irreversible | До видалення облікового запису |
| Публічне ім'я | Щоб твої контакти могли тебе впізнати | Відкритий текст (обираєш ти сам) | До зміни або видалення облікового запису |
| Код прив'язки | Твоя адреса в Solo2 — як номер телефону. Це те, чим ти ділишся з кимось, щоб він міг тебе знайти і надіслати запит на підключення | Відкритий текст, унікальний (~10 символів) | До видалення облікового запису |
| Публічний ключ | Криптографічний рядок, який застосунок автоматично використовує для шифрування даних, що тобі надсилаються. Ніхто не використовує його безпосередньо — застосунок робить це сам. Код прив'язки потрібен, щоб тебе знайшли; публічний ключ потрібен, щоб шифрували для тебе | Публічний ключ (44 символи). Може бути відомим без ризику — лише твій закритий ключ, що зберігається у твоєму браузері, може розшифрувати дані | До видалення облікового запису |
| Фінансовий баланс | Гроші, які ти додав на рахунок | Число (у копійках) | До видалення облікового запису |
| Бонусний баланс | Отримані бонуси (запрошення, акції, подарунки). Витрачається до фінансового балансу | Число (у копійках) | До видалення облікового запису |
| Тип облікового запису | Твій поточний план (пробний, стандартний, золотий, платиновий) | Текст | До зміни або видалення облікового запису |
| Дата закінчення пробного періоду | Коли закінчується твій безкоштовний пробний період | Дата | До видалення облікового запису |
| Дата і час реєстрації | Коли ти створив обліковий запис | Повні дата і час (timestamp) | Постійно |
| Остання активність | Коли ти востаннє користувався застосунком | Дата і час | Оновлюється при кожному використанні |
| Внутрішні ідентифікатори | Коди, які система внутрішньо використовує для посилання на тебе | Непрозорі ідентифікатори, без значення поза системою | До видалення облікового запису |
| Версія безпеки | Яка версія алгоритму захисту пароля була використана | Внутрішній номер | До видалення облікового запису |
| Прапорці стану | Технічні прапорці (чи змінився твій баланс, чи активний режим максимальної безпеки) | 1 байт — еквівалент однієї літери. Більше нічого не вміщується | До видалення облікового запису |
Для розуміння обсягу: твій запис займає близько 250 фіксованих символів (ідентифікатори, дати, ключі, баланси) плюс довжина обраних тобою імен. Пароль не впливає: він завжди зберігається як відбиток фіксованого розміру. Наприклад, якщо тебе звати «Іван» і твоє публічне ім'я «Іван Іваненко», все, що ти займаєш на нашому сервері — близько 264 символів — менше, ніж цей абзац.
1.2 Активні сесії
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| Токен сесії | Підтримка активного входу | Ми зберігаємо лише незворотний відбиток (хеш), не оригінальний токен | 24 години máximo, luego se borra automáticamente |
| Дата останньої активності | Закінчення терміну неактивних сесій | Дата і час | Видаляється разом із сесією |
1.3 Запити на прив'язку
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| ID відправника | Щоб знати, хто надіслав запит | Внутрішній ID | 3 дні máximo. Si no se responde, se elimina automáticamente |
| ID отримувача | Щоб знати, кому він адресований | Внутрішній ID | Так само, як відправник |
| Статус | Очікує / прийнятий / відхилений | Текст | Видаляється після розгляду або закінчення терміну |
Важливе зауваження: Una vez aceptada la vinculación, el servidor no guarda la relación. Tu lista de contactos existe solo en tu navegador, cifrada.
1.4 Запрошення
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| Код запрошення | Унікальне посилання для запрошення когось | Випадковий токен | До використання або закінчення терміну (30 днів) |
| ID відправника | Щоб знати, хто запросив | Внутрішній ID | Постійно (бухгалтерія) |
| Сума подарунка | Баланс, подарований із запрошенням | Число | Постійно (бухгалтерія) |
1.5 Push-підписки (сповіщення)
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| Адреса сповіщень | Надсилання сповіщень у твій браузер | URL постачальника браузера (Google, Mozilla або Apple) | До вимкнення сповіщень або видалення облікового запису |
| Ключі push-шифрування | Шифрування сповіщення, щоб лише твій браузер міг його прочитати | Стандарт Web Push | Так само, як адреса |
1.6 Зворотний зв'язок (підтримка)
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| Твоє повідомлення | Щоб ми могли тобі допомогти | Відкритий текст | До обробки |
| Твій ID користувача | Щоб знати, хто потребує допомоги | Внутрішній ID | Так само, як повідомлення |
1.7 Сигналізація з'єднання (ефемерна)
Щоб два пристрої могли з'єднатися напряму, їм потрібно обмінятися технічними сигналами встановлення з'єднання (протокол WebRTC). Ці сигнали короткочасно проходять через наш сервер, але зашифровані наскрізним шифруванням — el servidor solo transporta un bloque opaco que no puede descifrar.
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| Сигнали з'єднання | Встановлення прямого з'єднання між пристроями | Зашифровані наскрізним шифруванням публічним ключем отримувача. Сервер не може їх прочитати або змінити | 60 секунд máximo, luego se borran. En memoria, nunca en disco |
1.8 Дзеркальний сервер (реле TURN)
Якщо пряме з'єднання неможливе, використовується дзеркальний сервер: дані проходять через нього, як світло через дзеркало — відбиваються з одного боку на інший, але дзеркало не усвідомлює, що відбиває. Всі пакети доповнюються до однакового розміру, щоб спостерігач не зміг відрізнити повідомлення від звичайного пульсу з'єднання.
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| Облікові дані доступу | Автентифікація на дзеркальному сервері | Твоя особистість перетворюється на незворотний відбиток — дзеркальний сервер не знає, хто ти | 24 години, luego se regenera |
1.9 Оброблені платежі
Платежі — єдина точка, де існує реальне тертя з анонімністю. Будьмо чесними в цьому питанні.
Коли ти реєструєшся в Solo2, ти обираєш ім'я користувача (може бути вигаданим), пароль і публічне ім'я (також вигадане, якщо хочеш). Жодні дані не пов'язують тебе з реальною особою. Але якщо ти здійснюєш платіж карткою, твоя фінансова установа знає, хто ти.
Все, що ми отримуємо від платіжного шлюзу — це виключно підтвердження та сума. Ми не отримуємо і не зберігаємо ім'я власника, номер картки, номер посвідчення особи чи будь-які персональні дані платника. Це невеликі суми — юридично еквівалентні касовому чеку, як купівля льодяника в кіоску: продавець не записує документ покупця.
Крім того, запис про платіж навмисно відв'язаний de tu cuenta de usuario. No existe ningún campo en nuestra base de datos que cruce un ticket de cobro con una cuenta concreta.
| Дані | Навіщо | Захист | Термін зберігання |
|---|---|---|---|
| Запис про платіж | Бухгалтерія та податкові зобов'язання | Підтвердження + сума. Без персональних даних платника. Без прив'язки до будь-якого облікового запису | Постійно (законодавча вимога) |
Про найгірший можливий сценарій: Incluso con una orden judicial, la cadena de rastreo sería: tu tarjeta → tu banco → la pasarela de pago → nuestro ticket de cobro. Pero nuestro ticket no contiene ningún identificador de usuario. No es un descuido: es una decisión de diseño. No existe ningún campo ni índice en nuestra base de datos que relacione un pago con una cuenta. La única vía teórica sería una correlación temporal — si fueses el único pago en un periodo dado — pero incluso en ese caso extremo, la cuenta no contiene información que identifique a la persona real: el nombre de usuario y el nombre público pueden ser totalmente inventados.
Усі наші доходи легальні та надходять проведеними через платіжний шлюз. Ми сплачуємо відповідні податки. Але анонімність клієнта з нашого боку повна.
2. Дані, яких у нас НЕМАЄ на сервері
Це те, що нас визначає. Сервер Solo2 не зберігає і не має доступу до:
- Твоїх повідомлень — Viajan directamente entre dispositivos, cifrados de extremo a extremo. El servidor nunca los ve.
- Твоїх файлів — Igual que los mensajes: directos y cifrados.
- Твого списку контактів — Existe solo en tu navegador, cifrada en La Bóveda.
- Твоєї історії чату — Solo en tu navegador, cifrado.
- Твого місцезнаходження — Los GeoSellos se calculan en tu dispositivo y se envían directamente al destinatario. El servidor nunca los procesa.
- Аналітики використання — La aplicación Solo2 no tiene ningún sistema de analíticas, ni cookies de seguimiento, ni scripts de terceros.
- Даних пристрою — No recogemos modelo, resolución, sistema operativo, ni ninguna característica de tu dispositivo.
- Метаданих комунікації — No sabemos con quién hablas, cuándo, con qué frecuencia, ni durante cuánto tiempo.
Про твою IP-адресу
Ми не реєструємо твою IP-адресу. Ні застосунок, ні веб-сервер не зберігають IP-адреси у своїх журналах. Сигнали з'єднання, які могли б містити твій IP, зашифровані наскрізним шифруванням — сервер не може їх прочитати.
3. Дані у твоєму браузері (Сховище)
Все перелічене нижче знаходиться виключно у твоєму браузері, cifrado con AES-256-GCM (un estándar de cifrado de grado militar utilizado por gobiernos y entidades financieras). La clave se genera a partir de tu contraseña mediante Argon2id (el algoritmo más resistente disponible contra ataques con hardware especializado), y este proceso ocurre enteramente dentro de tu navegador. Tu contraseña nunca se envía al servidor.
Твої дані зашифровані у стані спокою — навіть якщо хтось отримає доступ до сховища твого браузера, він знайде лише нечитабельні зашифровані блоки без твого пароля.
Коли ти експортуєш резервну копію, вона шифрується тим самим захистом (Argon2id + AES-256-GCM). Лише той, хто знає твій пароль, може її розшифрувати.
| Дані | Шифрування | Контроль |
|---|---|---|
| Повідомлення | AES-256-GCM | Ти вирішуєш, коли їх видалити |
| Файли | AES-256-GCM | Ти вирішуєш, коли їх видалити |
| Контакти (пари) | AES-256-GCM | Ти вирішуєш, кого прив'язати |
| Статус верифікації | AES-256-GCM | Ти верифікуєш особу кожного контакту |
| Пошуковий індекс | Зашифрований незворотними токенами (HMAC) | Відновлюється з твоїх повідомлень |
| Статус доставки | AES-256-GCM | Які повідомлення були доставлені |
| Очікуючі повідомлення | AES-256-GCM | Черга надсилання при відсутності з'єднання |
Тимчасове сховище браузера
| Дані | Тип | Термін зберігання | Навіщо |
|---|---|---|---|
| Сесія користувача | Локальна пам'ять браузера (localStorage) | До виходу із системи | Підтримка входу |
| Версія застосунку | Локальна пам'ять браузера (localStorage) | Постійно | Виявлення оновлень |
| Уподобання теми | Локальна пам'ять браузера (localStorage) | Постійно | Запам'ятовування твоєї візуальної теми |
| Уподобання мови | Локальна пам'ять браузера (localStorage) | Постійно | Запам'ятовування твоєї мови |
| Пароль (режим максимальної безпеки) | Пам'ять вкладки (sessionStorage) | Зникає при закритті вкладки | Повторна ін��ціалізація шифрування при перезавантаженні сторінки |
Зауваження щодо безпеки в браузері
Solo2 працює у твоєму веб-браузері. Твої зашифровані дані захищені у стані спокою, але коли застосунок відкритий і показує тобі розшифровані повідомлення на екрані, безпека залежить також від твого оточення:
- Розширення браузера: Una extensión maliciosa con acceso a las páginas que visitas podría, en teoría, leer lo que se muestra en pantalla. Recomendamos utilizar el menor número posible de extensiones y solo de fuentes de confianza.
- Чистий браузер: Un navegador actualizado y sin extensiones innecesarias es tu mejor aliado.
- Нативний застосунок: En el futuro, ofreceremos una aplicación de escritorio (Windows, Mac, Linux) que proporcionará un nivel adicional de aislamiento al no depender del entorno del navegador.
4. Мережеві підключення
Застосунок Solo2
| Домен | Причина | Надіслані дані |
|---|---|---|
| solo2.net | API застосунку | Автентифікація, сигналізація, присутність |
| pay.menzuri.com | Платіжний шлюз | Лише при здійсненні платежу |
Жодний інший домен. Ningún script externo. Ningún CDN de seguimiento. La política de seguridad de contenido (CSP) del servidor lo impone técnicamente: cualquier intento de cargar recursos de otros dominios es bloqueado por el navegador.
Навіть для визначення публічної IP-адреси твого пристрою (необхідної для встановлення прямих з'єднань між користувачами) ми використовуємо власний сервер (технічно називається STUN). Ми не делегуємо це зовнішнім сервісам. Ми керуємо ним самі.
Сторінка презентації
Сторінка презентації (solo2.net/info) — незалежна від застосунку — використовує анонімну систему вимірювання, розміщену на наших власних серверах у Німеччині:
| Домен | Причина | Надіслані дані |
|---|---|---|
| stats.menzuri.com | Анонімне вимірювання відвідувань | Відвідана сторінка (без файлів cookie, без IP, без ідентифікації) |
Ця система не встановлює файли cookie, не реєструє твою IP-адресу, не ідентифікує тебе, не відстежує тебе між відвідуваннями та не передає дані третім сторонам. Застосунок Solo2 не має цієї системи та жодного іншого виду аналітики.
5. Видалення твоїх даних
Існують дві різні дії, і важливо знати різницю:
Видалення локальних даних
У налаштуваннях застосунку є два варіанти локального видалення:
- Видалити мої дані — Elimina solo tus datos (identidad, bóveda, sesión) sin afectar a otros usuarios que usen el mismo navegador.
- Аварійне скидання — Borra absolutamente todo: datos de todos los usuarios, Service Worker, caché y claves criptográficas. Requiere doble confirmación.
В обох випадках твій обліковий запис на сервері продовжує існувати. Puedes volver a iniciar sesión, pero tus datos locales se habrán perdido irreversiblemente. Al hacerlo, se genera una identidad criptográfica completamente nueva: quien tuviese tu clave pública anterior ya no puede cifrar nada para ti. Si un contacto anterior quiere reconectarse, deberá solicitarte vinculación de nuevo, y tú decides si la aceptas o no.
Автоматичне відновлення між пристроями
Якщо ти втратиш дані на одному пристрої та маєш інший підключений, Solo2 виявить ситуацію і запропонує автоматичне відновлення твоєї особистості та сховища. Відновлення передається у зашифрованому вигляді (Argon2id) прямим з'єднанням між твоїми пристроями — без проходження через сервер.
Видалення облікового запису з сервера
- Видаляються усі las filas en la base de datos asociadas a tu ID: cuenta, sesiones, solicitudes, invitaciones, suscripciones push, feedback.
- Видалення атомарне (todo o nada): o se borra todo o no se borra nada.
- Записи про платежі навмисно залишаються відв'язаними de tu identidad — existen por obligación legal, pero no se puede trazar un pago a tu persona.
- Ідентифікатори в журналах сервера є незворотними відбитками: неможливо пов'язати журнал з твоїм обліковим записом після його видалення.
- Сховище у твоєму браузері не видаляється автоматично цією дією (ми не маємо доступу до твого браузера). Щоб його видалити, спершу виконай аварійне скидання або очисти дані сайту в браузері.
5b. Ваш майстер-ключ та ваші 24 слова
При створенні облікового запису в Solo2 генерується майстер-ключ із 256 бітами реальної ентропії (такий самий, що використовує Bitcoin). Цей ключ представлений як 24 слова, які знаєте лише ви. Ваш пароль обгортає цей ключ для зберігання у зашифрованому вигляді на сервері — сервер не може його прочитати.
Це означає, що у вас є два незалежних ключі: tu contraseña (para conectar al servidor y recuperar tu clave envuelta) y tus 24 palabras (para acceder directamente a tus datos sin servidor). Si pierdes una, la otra te protege. Si pierdes ambas, tus datos son irrecuperables — como en Bitcoin.
Точні алгоритми (перевірювано)
Генерація: CSPRNG del sistema operativo (crypto.getRandomValues, 256 bits). Cifrado de la clave maestra: Argon2id (OWASP) para derivar la clave de envoltorio + AES-256-GCM (cifrado autenticado) para protegerla. Identidad: Ed25519 (firma) + X25519 (intercambio). Mensajes: Double Ratchet con ChaCha20-Poly1305. Al cerrar la pestaña del navegador, todos los datos sensibles desaparecen de la memoria.
Як захищений твій майстер-ключ
| Layer | What it is | Where it lives |
|---|---|---|
| Password | Доступ до сервера. Обгортає ваш майстер-ключ | У вашій пам'яті + хеш на сервері |
| Device secret | Invisible second factor, generated automatically on install | On your device (non-extractable) |
| Майстер-ключ (24 слова) | 256 біт реальної ентропії, згенерований випадковим чином. Рівень Bitcoin (BIP39) | На папері, який зберігаєте ви + обгорнутий на сервері |
| Key rotation | Each message uses a unique key that is destroyed after (Double Ratchet) | Automatic, transparent |
If you change your password
Зміна пароля — миттєва. Лише переобгортається ваш майстер-ключ новим паролем — ваша ідентичність не змінюється, ваше сховище не перешифровується, ваші контакти не зачіпаються, а ваші 24 слова залишаються тими самими. Це операція на мілісекунди.
Recovery
Якщо ви втратите пароль, ви можете отримати доступ до свого сховища за допомогою 24 слів — без сервера. Якщо ви втратите 24 слова, ви можете увійти за допомогою пароля, і сервер поверне вам обгорнутий ключ. Якщо ви втратите обидва, ваші дані неможливо відновити. Як у Bitcoin, це безпека за задумом.
6. Що станеться при несанкціонованому доступі до сервера
Якщо зловмисник отримає повний доступ до сервера Solo2, він отримає:
- Імена користувачів та публічні імена
- Коди прив'язки
- Публічні ключі (марні без закритого ключа, який знаходиться у твоєму браузері)
- Відбитки паролів (марні без надзвичайно дорогої атаки перебором завдяки Argon2id)
- Відбитки токенів сесій (марні без оригінального токена)
- Очікуючі запити на прив'язку (внутрішні ID, закінчуються через 3 дні)
- Тип облікового запису, баланси та дати реєстрації
- Записи про платежі (без можливості пов'язати їх з конкретним користувачем)
Чого він НЕ отримає:
- Жодного повідомлення (їх ніколи не було на сервері)
- Жодного файлу (їх ніколи не було на сервері)
- Жодного списку контактів (його ніколи не було на сервері)
- Жодної історії чату (її ніколи не було на сервері)
- Жодного закритого ключа шифрування (вони зберігаються у твоєму браузері)
- Жодної IP-адреси (вони не реєструються)
7. Наше зобов'язання
Цей маніфест оновлюватиметься з кожною значущою зміною в управлінні даними. Якщо ми додамо нове поле в базу даних, воно з'явиться тут. Якщо ми щось видалимо — також.
Чинна версія — завжди ця сторінка.