Перевір за 2 хвилини
Натисни F12 у браузері. Без встановлення чогось. Без навичок програмування.
| Твердження | Як перевірити | Вкладка |
|---|---|---|
| Жодних cookie будь-якого виду | Application → Cookies → порожньо. Solo2 не встановлює жодних cookie. Сесія підтримується в localStorage, а не в cookie. Без _ga |
Application |
| Немає сторонніх сервісів у застосунку | Network → фільтр за доменом → лише запити до solo2.net |
Network |
| Аналітика лише на лендінгу, не в застосунку | Network → у /* |
Network |
| Твоя історія зберігається у браузері | Application → IndexedDB → solo2-vault-{userId}. Усі твої повідомлення та файли там. На сервері нічого немає. |
Application |
| Список контактів лише локально | Application → IndexedDB → store pares. Твої контакти існують лише у твоєму браузері. |
Application |
| Без зовнішніх CDN | Network → усі JS/CSS завантажуються з того самого домену. Немає cdn.jsdelivr.net |
Network |
| Сесії максимум 24 години | Application → localStorage → solo2_session. Check the expiry timestamp. It's never more than 24h from creation. |
Application |
| Ти бачиш тип з'єднання, яке використовуєш | У списку контактів: поруч із кожним контактом, P2P (зелений) або Дзеркало (оранжевий) | UI |
| Umami без cookie | Application → Cookies → відсутні cookie від stats.menzuri.com |
Application |
| Твій майстер-ключ генерується випадковим чином | Application → при реєстрації Solo2 генерує 24 унікальних слова. Вони не виводяться з твого пароля — це незалежний ключ із 256 бітами реальної ентропії | Application |
Якщо ти вмієш працювати з DevTools
Перевірки, що потребують технічних знань. Якщо ти розбираєшся в HTTP, WebRTC та базовій криптографії, ти можеш підтвердити ці твердження.
| Твердження | Як перевірити |
|---|---|
| Повідомлення зашифровані E2E | Network → запити до /cmd |
| Сигнали WebRTC зашифровані E2E | Network → signal-повідомлення передаються як зашифровані бінарні блоби. Це не JSON для читання з offer |
| Майстер-ключ незалежний від пароля | Network → при вході отримується зашифрований wrapped_master_key |
| Рівномірне доповнення у дзеркальному сервері | Network → пакети WebSocket/DataChannel мають фіксований розмір при використанні дзеркала (TURN). Перевір розміри у вкладці Network |
| Пароль захищений (не передається відкритим текстом) | Network → при вході надсилається хеш, а не відкритий текст. Ти не можеш перевірити, який алгоритм використовує сервер (Argon2id), але можеш переконатися, що твій оригінальний пароль ніколи не залишає браузер |
| Запити на прив'язку спливають через 3 дні | Створи запит, не відповідай на нього, перевір через 3 дні, що він зник. Потрібні терпіння і два облікові записи |
| Push-сповіщення зашифровані | Network → push-запити до Service Worker надходять зашифрованими (стандарт Web Push). Зашифрований payload видно у вкладці Network |
| Пряме P2P-з'єднання vs дзеркало (TURN) | chrome://webrtc-internals/ → shows ICE candidates and the active connection type. If both peers are on the same network, you should see host candidates (direct, no relay). |
Це перевірити неможливо
Було б лицемірством стверджувати, що все можна перевірити. Ці твердження потребують довіри до нас — або очікування публікації вихідного коду.
| Твердження | Чому це не можна перевірити |
|---|---|
| Double Ratchet з ротацією ключів | Криптографічні операції виконуються всередині бінарного файлу WASM. Користувач бачить, що він завантажується, але не може прочитати, який алгоритм використовується |
| Майстер-ключ генерується з реальною ентропією (256 біт) | Генерація використовує crypto.getRandomValues всередині браузера. Ти можеш бачити, що генеруються 24 слова, але не можеш перевірити з F12 якість ентропії чи безпеку CSPRNG |
| X25519 + Ed25519 + ChaCha20-Poly1305 | Та сама проблема: криптографічний стек знаходиться всередині WASM. Неможливо підтвердити криві або алгоритми з браузера |
| Сервер не може прочитати вміст твоїх повідомлень | Ти можеш переконатися, що клієнт не надсилає читабельних даних. Що сервер робить з метаданими з'єднання (IP, часові мітки) — потребує довіри або аудиту сервера |
| Сервер не зберігає зв'язки після прив'язки | Потрібен доступ до вихідного коду та бази даних сервера |
| IP-адреси не реєструються | Неможливо перевірити, що саме сервер записує у свої журнали |
| Ключі змінюються з кожним повідомленням | Відбувається всередині WASM. Ти бачиш, що повідомлення надсилаються, але не можеш спостерігати ротацію ключів |
| Видалені дані дійсно зникають | Ти можеш видалити дані з локальної IndexedDB, але не можеш перевірити, що сервер не зберігає копії (хоча Маніфест стверджує, що вони ніколи не надходили) |
Чому WASM є реальним бар'єром
Криптографічний шар Solo2 скомпільований у WebAssembly — бінарний формат, який твій браузер виконує, але який неможливо прочитати як текст. Це означає, що ти не можеш перевірити через F12, який алгоритм ми використовуємо.
Мініфікований JavaScript (який ми використовуємо для інтерфейсу) є оборотним: браузер може його переформатувати, і структура коду читабельна. Це практична перешкода, а не реальний бар'єр. Але WASM, скомпільований із Zig, принципово відрізняється
Ми стверджуємо, що використовуємо Double Ratchet з X25519. Ти можеш повірити нам на слово, або зачекати, поки ми опублікуємо вихідний код криптографічного шару, щоб будь-хто міг його перевірити. Ми працюємо над цим.
Що ми робимо, щоб ти міг довіряти більше
Публікація хешів SHA-256 файлів .wasm
Ми опублікуємо криптографічний хеш кожного WASM-файлу у продакшені. Так будь-який аудитор зможе переконатися, що бінарний файл, який виконується у твоєму браузері, точно відповідає тому, який ми скомпілювали.
Відкрити криптографічний шар як open source
Опублікувати вихідний код криптографічного шару (Zig) як публічний репозиторій. Та сама модель, що у Signal: відкритий криптографічний протокол, решта коду закрита. Будь-хто зможе скомпілювати вихідний код і порівняти хеш результуючого .wasm з тим, що використовується у продакшені.
Безпека не залежить від прихованості
Наша модель безпеки спроєктована так, щоб працювати, навіть якщо вихідний код стане публічним. Якби безпека залежала від того, що ніхто не може прочитати код, це була б не безпека, а надія.
5 задокументованих рівнів безпеки
Пароль (доступ до сервера), 24 слова (справжній майстер-ключ), секрет пристрою (захист локальних даних) та ротація Double Ratchet. Кожен рівень незалежний і перевіряється у нашому Маніфесті прозорості.