Перевірте за 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 |
Application |
| Ви бачите тип з'єднання, яке використовуєте | В інтерфейсі чату: індикатор P2P (зелений) vs Mirror/TURN (оранжевий) видно постійно | 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 мають фіксований розмір при використанні реле. Перевірте розміри у вкладці Network |
| Пароль захищений (не передається відкритим текстом) | Network → при вході надсилається хеш, а не відкритий текст. Ви не можете перевірити, який алгоритм використовує сервер (Argon2id), але можете переконатися, що ваш оригінальний пароль ніколи не залишає браузер |
| Запити на прив'язку спливають через 3 дні | Створіть запит, не відповідайте на нього, перевірте через 3 дні, що він зник. Потрібні терпіння і два облікові записи |
| Push-сповіщення зашифровані | Network → push-запити до Service Worker надходять зашифрованими (стандарт Web Push). Зашифрований payload видно у вкладці Network |
| Пряме P2P-з'єднання vs реле | chrome://webrtc-internals/ |
Це перевірити неможливо
Було б лицемірством стверджувати, що все можна перевірити. Ці твердження потребують довіри до нас — або очікування публікації вихідного коду.
| Твердження | Чому це не можна перевірити |
|---|---|
| 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. Кожен рівень незалежний і перевіряється у нашому Маніфесті прозорості.