Проверьте за 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. Каждый уровень независим и проверяем в нашем Манифесте прозрачности.