Основен принцип
Solo2 създава частен тунел между двама души. Директен. Без посредници.
Нашият сървър прави само едно нещо: представя двата края на тунела, за да се намерят. За целта му трябва минимумът — идентификаторите на двойката — които държи в RAM паметта само за милисекундите на представянето. В мига, в който двете устройства са се намерили, данните се изтриват от паметта. Никога, в нито един момент, не се записват на диск.
Веднъж свързани, сървърът изчезва. Не участва в разговора. Не го вижда. Не го съхранява. Не знае колко продължава, нито колко често говорите, нито за какво говорите.
Не ви молим да ни вярвате. Молим ви да проверите сами:
Тест 1 — Сървърът е излишен.
Когато директният тунел е установен, нашият сървър вече не участва. Ако падне в този момент, разговорът ви ще продължи без прекъсване. Докато устройствата ви са включени и свързани с интернет, тунелът е ваш. Ние вече не сме там.
Тест 2 — Изпратете файл от 10 гигабайта.
Не само ще бъде бързо — нашият сървър дори няма да забележи. Опитайте да изпращате файлове от 10 гигабайта или повече непрекъснато в продължение на 24 часа. Сървърът ни дори не го усеща, защото не се намесва. Опитайте това с която и да е друга услуга за съобщения.
Тест 3 — Говорете за телескопи.
Прекарайте един следобед, говорейки с някого за телескопи, или въдици, или каквото и да е, което никога не сте търсили в интернет. Изчакайте няколко дни. Няма да се появи реклама за телескопи никъде. Думите ви не са напуснали тунела.
Вашите данни, ваша отговорност.
Това е най-голямото ни достойнство и, честно казано, нещото, на което най-трудно ще свикнете. Вашите съобщения, файлове и контакти живеят в криптиран сейф на вашето устройство. Няма копие на никой сървър. Защитени са с 24 думи — същото ниво на сигурност като Bitcoin. Но са на едно единствено място, освен ако не инсталирате Solo2 на второ устройство — и двата сейфа ще се синхронизират автоматично, когато са свързани едновременно. Можете също да експортирате криптиран бекъп. Тук няма облак, който да ви спаси, ако загубите единственото си устройство. Данните ви са ваши, с всички произтичащи последици.
В детайли
Сървърът на Solo2 е напълно сляп. Не знае с кого говориш, какво казваш, нито какви файлове споделяш. Дори техническите сигнали, които установяват връзката между устройствата, не могат да бъдат прочетени от сървъра — те пътуват криптирани от край до край.
Твоите съобщения пътуват директно между устройствата, криптирани от край до край. Твоята история на разговорите живее криптирана в твоя браузър, никога на нашия сървър.
Ключовете за криптиране се ротират автоматично с всяко съобщение. Всяко съобщение се криптира с уникален ключ, който се изхвърля незабавно след употреба. Технически това се нарича Double Ratchet и означава, че дори ако някой получи ключ, ще може да прочете само едно съобщение — не цялата комуникация. Освен това сигурността се възстановява автоматично след всеки кръг на комуникация: компрометиран ключ става безполезен веднага след размяната на следващото съобщение.
Когато директната връзка между устройствата не е възможна (например заради мрежови ограничения), се използва огледален сървър (технически наречен TURN): данните се отразяват от едно устройство към друго, но огледалото не осъзнава какво отразява — всичко пътува криптирано от край до край и сървърът не може да го прочете. Освен това всички пакети се допълват до еднакъв размер, за да се предотврати възможността наблюдател да извлече информация чрез анализ на размера или честотата на трафика.
Винаги можеш да видиш в приложението какъв тип връзка използваш — директна или през огледалния сървър — и да действаш съответно.
Главният ти ключ се генерира случайно с 256 бита реална ентропия — същото ниво като Bitcoin. При създаване на акаунта ти Solo2 генерира уникален ключ, представен като 24 думи. Паролата ти защитава достъпа до услугата. Твоите 24 думи са ключът към данните ти. Това са два различни ключа за две различни врати.
Дори сървърът ни да изчезне, данните ти оцеляват. С 24-те ти думи можеш да достъпиш локалния си сейф без връзка със сървъра. Данните ти са твои — наистина.
1. Данни, които ИМАМЕ на сървъра
1.1 Твоят потребителски акаунт
Това са всички полета, които съществуват в твоя запис. Няма никакви други.
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| Потребителско име | За да можеш да влезеш в акаунта си | Обикновен текст (публично е по дизайн) | Докато не изтриеш акаунта си |
| Парола | Удостоверяване | Защитена с Argon2id (препоръчван от OWASP, устойчив на атаки със специализиран хардуер). Никога не съхраняваме истинската ти парола | Докато не изтриеш акаунта си |
| Публично име | За да те разпознаят контактите ти | Обикновен текст (ти го избираш) | Докато не го промениш или изтриеш акаунта си |
| Код за свързване | Твоят адрес в Solo2 — като телефонен номер. Това е, което споделяш с някого, за да те намери и да ти изпрати заявка за свързване | Обикновен текст, уникален (~10 символа) | Докато не изтриеш акаунта си |
| Финансово салдо | Пари, които си добавил към акаунта си | Число (в стотинки) | Докато не изтриеш акаунта си |
| Бонусно салдо | Получени бонуси (промоции). Изразходват се преди паричното салдо | Число (в стотинки) | Докато не изтриеш акаунта си |
| Тип акаунт | Твоят текущ план (пробен, стандартен, златен, платинен) | 1 байт (цяло число: 0=пробен, 1=стандартен, 2=златен, 3=платинен, 4=поставен на пауза, 5=спрян) | Докато не се промени или изтриеш акаунта си |
| Дата и час на регистрация | Кога си създал акаунта си | Пълна дата и час (timestamp) | Постоянно |
| Вътрешни идентификатори | Системата се нуждае от два вътрешни кода, за да се обръща към вас без да използва потребителското ви име. Единият е основният ви идентификатор, а другият — референтен код. И двата са непрозрачни — нямат значение извън системата | Два случайни кода от по 24 символа (напр.: u_7kX9mP2...). Не съдържат вашето име, дата или лични данни — те са напълно случайни | Докато не изтриеш акаунта си |
| Версия на сигурността | Коя версия на алгоритъма за защита на паролата е използвана | Вътрешен номер | Докато не изтриеш акаунта си |
| Флагове за състояние | Технически флагове (дали салдото ти се е променило, дали имаш активиран режим на максимална сигурност) | 1 байт — еквивалентът на една буква. Нищо повече не се побира | Докато не изтриеш акаунта си |
За да ти дадем представа за обема: пълният ти запис заема около 400 байта — по-малко от този параграф. Това са имената ти (измислени, ако желаеш), отпечатък на паролата ти (фиксиран размер, 60 байта), твоят главен ключ в криптиран вид (непрозрачен блоб от ~128 байта, който не можем да прочетем), две числа за баланса ти, няколко дати и един байт за настройки. Това е всичко, с което съществуваш на нашия сървър.
1.2 Активни сесии
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| Хеш на токена на сесията | Поддържане на активен вход | Необратим отпечатък (SHA-256). Оригиналният токен никога не се съхранява на сървъра | 24 часа — след това се изтрива напълно |
| Дата на създаване | За да знае системата кога е създадена — полезно за автоматично почистване | Числова времева марка (unix секунди) | Изтрива се заедно със сесията |
| Дата на изтичане | Сесията изтича 24 часа след създаването си. Не се подновява при използване — има фиксирана дата на изтичане | Числова времева марка (създаване + 24 часа) | 24 часа — след това се изтрива напълно |
При излизане или изтичане на сесията, редът се изтрива напълно от базата данни. Не остава следа, че сесията е съществувала.
1.3 Заявки за свързване
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| ID на подателя | За да знаем кой е изпратил заявката | Вътрешен код от 24 произволни символа | 3 дни — след това се изтрива автоматично |
| ID на получателя | За да знаем за кого е предназначена | Вътрешен код от 24 произволни символа | 3 дни — след това се изтрива автоматично |
| Статус | В изчакване / приета / отхвърлена | 1 байт (цяло число: 0=чакащо, 1=прието, 2=отхвърлено) | Изтрива се при разрешаване или при изтичане (3 дни) |
| Дата на създаване | Да се знае кога е създадена заявката, за да може да бъде автоматично изтрита | Числов времеви печат (unix секунди) — 4 до 8 байта | 3 дни — след това се изтрива автоматично |
Важна забележка: Докато заявката е в изчакване (максимум 3 дни), сървърът знае, че потребител А е поискал да се свърже с потребител Б. След изтичане на 3-те дни заявката се изтрива автоматично. След като връзката бъде приета, сървърът не съхранява връзката. Списъкът ти с контакти съществува само в твоя браузър, криптиран.
1.4 Код за свързване
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| Код за свързване (alias) | Кратък идентификатор, за да ви намери друг потребител и да поиска създаване на тунел | Случаен 8-символен код, получен от вашия вътрешен ID | Постоянен (това е вашият публичен идентификатор за връзка) |
1.5 Push абонаменти (известия)
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| Адрес за известия | Изпращане на известия до твоя браузър | URL на доставчика на браузъра (Google, Mozilla или Apple) | Докато не деактивираш известията или изтриеш акаунта си |
| Ключове за push криптиране | Криптиране на известието, за да може само твоят браузър да го прочете | Стандарт Web Push | Същото като адреса |
1.6 Обратна връзка (поддръжка)
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| Твоето съобщение | За да можем да ти помогнем | Обикновен текст | Докато не го обработим |
| Твоят потребителски ID | За да знаем кой се нуждае от помощ | Вътрешен ID | Същото като съобщението |
1.7 Сигнализация на връзката (ефимерна)
За да могат две устройства да се свържат директно, трябва да разменят технически сигнали за установяване на връзка (протокол WebRTC). Единственият момент, в който нашият сървър държи в паметта твоя потребителски код и този на контакта ти, е по време на милисекундите, в които обработва заявката за връзка. Трае миг, съществува само в оперативната памет и никога не се записва на диск. Самите сигнали са криптирани от край до край
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| Сигнали за връзка | Установяване на директна връзка между устройствата | Криптирани от край до край с публичния ключ на получателя. Сървърът не може да ги прочете нито да ги промени | 60 секунди |
1.8 Огледален сървър (реле TURN)
Ако директната връзка не е възможна, се използва огледален сървър: данните преминават през него като светлина през огледало — отразяват се от едната страна на другата, но огледалото не осъзнава какво отразява. Всички пакети се допълват до еднакъв размер, за да не може наблюдател да различи съобщение от обикновен пулс на връзката.
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| Удостоверение за достъп | Удостоверяване пред огледалния сървър | Твоята самоличност се трансформира в необратим отпечатък — огледалният сървър не знае кой си | 24 часа |
1.9 Обработени плащания
Плащанията са единствената точка, където съществува реално напрежение с анонимността. Нека бъдем честни по този въпрос.
Когато се регистрираш в Solo2, избираш потребителско име (може да е измислено), парола и публично име (също измислено, ако желаеш). Никакви данни не те свързват с реално лице. Но ако извършиш плащане с карта, финансовата ти институция знае кой си.
Това, което получаваме от платежната система, е единствено потвърждение и сума. Не получаваме и не съхраняваме името на притежателя, номера на картата, номера на документа за самоличност, нито каквито и да е лични данни на платеца. Това са малки суми — правно еквивалентни на касов бон, като покупка на близалка на павилион: продавачът не записва документа за самоличност на купувача.
Освен това записът за плащане е умишлено отделен
| Данни | Защо | Защита | Продължителност |
|---|---|---|---|
| Запис за плащане | Счетоводство и данъчни задължения | Потвърждение + сума. Без лични данни на платеца. Без връзка с какъвто и да е потребителски акаунт | Постоянно (законово задължение) |
За най-лошия възможен сценарий:
Всички наши приходи са легални и постъпват осчетоводени чрез платежната система. Плащаме съответните данъци. Но анонимността на клиента от наша страна е пълна.
2. Данни, които НЯМАМЕ на сървъра
Това ни определя. Сървърът на Solo2 не съхранява и няма достъп до
- Твоите съобщения
- Твоите файлове
- Твоят списък с контакти
- Твоята история на чата
- Твоето местоположение
- Аналитика на използването
- Данни за устройството
- Метаданни за комуникацията
За твоя IP адрес
Твоят IP адрес не се съхранява в никоя база данни. В техническите логове на сървъра IP адресите се трансформират в необратими отпечатъци (хеш) — полезни за засичане на модели на злоупотреба, но невъзможни за обратно възстановяване до оригиналния IP. Тези логове се изтриват автоматично на всеки 7 дни. Сигналите за връзка, които биха могли да съдържат твоя IP, са криптирани от край до край — сървърът не може да ги прочете.
3. Данни в твоя браузър (Сейфът)
Всичко, което следва, живее изключително в твоя браузър
Твоите данни са криптирани в покой — дори ако някой получи достъп до хранилището на твоя браузър, би намерил само нечетими криптирани блокове без твоята парола.
Когато експортираш резервно копие, то се криптира със същата защита (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 работи вътре в твоя уеб браузър. Криптираните ти данни са защитени в покой, но когато приложението е отворено и ти показва декриптирани съобщения на екрана, сигурността зависи и от твоята среда:
- Разширения на браузъра:
- Чист браузър:
- Нативно приложение:
4. Мрежови връзки
Приложението Solo2
| Домейн | Причина | Изпратени данни |
|---|---|---|
| solo2.net | API на приложението | Удостоверяване, сигнализация, присъствие |
| pay.menzuri.com | Платежна система | Само ако извършваш плащане |
Никакъв друг домейн.
Дори за откриване на публичния IP адрес на твоето устройство (необходим за установяване на директни връзки между потребители) използваме собствен сървър (технически наречен STUN). Не делегираме на външни услуги. Управляваме го сами.
Презентационната страница
Презентационната страница (solo2.net) — която е независима от приложението — използва анонимна система за измерване, хоствана на наши собствени сървъри в Германия:
| Домейн | Причина | Изпратени данни |
|---|---|---|
| stats.menzuri.com | Анонимно измерване на посещенията | Посетена страница (без бисквитки, без IP, без идентификация) |
Тази система не инсталира бисквитки, не записва твоя IP адрес, не те идентифицира, не те проследява между посещения и не споделя данни с трети страни. Приложението Solo2 няма тази система, нито какъвто и да е друг вид аналитика.
5. Изтриване на твоите данни
Съществуват две различни действия и е важно да знаеш разликата:
Изтриване на локални данни
В настройките на приложението имаш две опции за локално изтриване:
- Изтрий моите данни
- Аварийно нулиране
И в двата случая акаунтът ти на сървъра продължава да съществува.
Автоматично възстановяване между устройства
Ако загубиш данните си на едно устройство и имаш друго свързано, Solo2 открива ситуацията и ти предлага автоматично възстановяване на самоличността и сейфа ти. Възстановяването пътува криптирано (Argon2id) по директна връзка между твоите устройства — без преминаване през сървъра.
Изтриване на акаунта от сървъра
- Изтриват се всички
- Изтриването е атомично
- Записите за плащания умишлено остават отделени
- Идентификаторите в логовете на сървъра са необратими отпечатъци: не може да се свърже лог с твоя акаунт след изтриването му.
- Сейфът в твоя браузър не се изтрива автоматично с това действие (нямаме достъп до твоя браузър). За да го изтриеш, първо извърши аварийно нулиране или изчисти данните на сайта в браузъра си.
5б. Главният ти ключ и 24-те ти думи
При създаването на акаунт в Solo2 се генерира главен ключ с 256 бита реална ентропия (същата, която използва Bitcoin). Този ключ е представен като 24 думи, които само ти знаеш. Паролата ти обвива този ключ, за да бъде съхранен криптиран на сървъра — сървърът не може да го прочете.
Това означава, че имаш два независими ключа
Точни алгоритми (проверимо)
Генериране: CSPRNG
Как се защитава главният ти ключ
| Слой | Какво е | Къде се намира |
|---|---|---|
| Парола | Достъп до сървъра. Обвива главния ти ключ | В паметта ти + хеш на сървъра |
| Тайна на устройството | Невидим втори фактор, генериран автоматично при инсталиране | На вашето устройство (неизвличаем) |
| Главен ключ (24 думи) | 256 бита реална ентропия, генерирана случайно. Ниво Bitcoin (BIP39) | На хартия, която ти пазиш + обвит на сървъра |
| Ротация на ключовете | Всяко съобщение използва уникален ключ, който се унищожава след това (Double Ratchet) | Автоматично, прозрачно |
Ако промените паролата си
Смяната на паролата е мигновена. Главният ти ключ просто се обвива отново с новата парола — идентичността ти не се променя, сейфът не се криптира отново, контактите ти не са засегнати и 24-те ти думи остават същите. Това е операция от милисекунди.
Възстановяване
Ако загубиш паролата, можеш да достъпиш сейфа си с 24-те думи — без сървър. Ако загубиш 24-те думи, можеш да влезеш с паролата и сървърът ти връща обвития ключ. Ако загубиш и двете, данните ти са невъзстановими. Както в Bitcoin — това е сигурност по дизайн.
6. Какво се случва, ако някой получи неоторизиран достъп до сървъра
Ако нападател получи пълен достъп до сървъра на Solo2, би получил:
- Потребителски имена и публични имена
- Кодове за свързване
- Публични ключове (безполезни без частния ключ, който е в твоя браузър)
- Отпечатъци на пароли (безполезни без изключително скъпа атака с груба сила благодарение на Argon2id)
- Отпечатъци на токени на сесии (безполезни без оригиналния токен)
- Чакащи заявки за свързване (вътрешни ID-та, изтичат след 3 дни)
- Тип акаунт, салда и дати на регистрация
- Записи за плащания (без възможност да ги свързват с конкретен потребител)
Какво НЕ би получил:
- Нито едно съобщение (никога не са били на сървъра)
- Нито един файл (никога не са били на сървъра)
- Нито един списък с контакти (никога не е бил на сървъра)
- Нито една история на чат (никога не е била на сървъра)
- Нито един частен ключ за криптиране (живеят в твоя браузър)
- Нито един IP адрес (не се записват)
7. Нашият ангажимент
Този манифест ще се актуализира при всяка релевантна промяна в управлението на данните. Ако добавим ново поле в базата данни, ще се появи тук. Ако премахнем нещо, също.
Действащата версия винаги е тази страница.