⚠️ Сторінка відкрита як документ — кнопки не працюватимуть

iPhone / iPad: Apple не дозволяє запускати локальні HTML-файли. Потрібне посилання: попроси того, хто надіслав файл, дати адресу https://… і відкрий її в Safari.
Якщо файл уже в «Файлах»: Поділитися → «Скопіювати в Safari» (працює не в усіх версіях iOS).

Компʼютер / Android: відкрий цей файл у Chrome, Safari або Firefox — тоді все запрацює.

🔒 ParanoicCrypt P2P

Приватна розмова напряму між браузерами — без сервера, без реєстрації.

ℹ️ Як це працює і на що чесно розраховувати

Оберіть режим нижче: «один на один» — найпростіше й найанонімніше (лише два пристрої, ніякого реле) — або «колективний дзвінок» — голос/відео й текст для кількох людей одразу (mesh: кожен з'єднується з кожним напряму, нові учасники «знайомляться» з рештою через вже встановлені зашифровані канали — сервера немає в жодному режимі). Код запрошення передаєте вручну — будь-яким каналом (голосом, іншим месенджером). Нічого не зберігається, доки ви самі не натиснете «Зберегти чат» — після закриття вкладки розмова і ключі шифрування зникають назавжди.

Шифрування: подвійний каскад незалежних алгоритмів на кожен канал — ECDH P-256 → HKDF → AES-256-GCM, а поверх нього ChaCha20-Poly1305 з окремим ключем (той самий звірений з OpenSSL код, що й у файловому шифраторі ParanoicCrypt). Кожне повідомлення додатково доповнюється до найближчого «кошика» розміру (як у Signal), щоб довжина тексту не була видна навіть тому, хто лише перехоплює зашифровані пакети. У режимі «один на один» чат заблоковано, поки ви не підтвердите код звірки (SAS) вголос — це ловить підміну з'єднання (MITM) до того, як ви скажете щось важливе.

Чесно про «офлайн»: саме з'єднання й код запрошення не йдуть через жоден сервер. Але щоб пробити NAT, браузер за замовчуванням запитує у Google/Cloudflare (STUN) ваш публічний IP — це бачить лише сервер STUN, не зміст розмови. Якщо всі учасники на одному Wi-Fi/точці доступу — увімкніть нижче «лише локальна мережа», тоді жоден зовнішній сервер не задіюється взагалі. При прямому P2P-з'єднанні співрозмовник завжди бачить ваш IP — так працює будь-яке пряме з'єднання, це не рішення застосунку, обійти це неможливо без стороннього сервера-посередника (а такого тут навмисно немає). Якщо потрібно, щоб IP не бачив ніхто — ні STUN, ні співрозмовник — увімкніть VPN на своєму пристрої до того, як відкриєте цю сторінку: тоді всі побачать лише IP VPN, а не ваш. Симетричний NAT (коли пряме з'єднання взагалі неможливе без ретранслятора) тут поки не підтримано — безкоштовний TURN, який тут був, перестав приймати підключення.

Чесно про груповий дзвінок: мій мікрофон/камера додаються до з'єднання одразу при вході — зміну мікрофона/камери під час дзвінка не підтримано (це вимагало б повторного узгодження SDP, а тут усе узгодження — ручне, копіюванням коду). Вимкнути мікрофон на льоту — можна. При великій кількості учасників (mesh) кожен пристрій тримає з'єднання з кожним — на слабких телефонах і повільних мережах на 6+ людей очікуйте гальм.

Чесно про антискрін: надійно ловиться лише клавіша PrintScreen на Windows. Win+Shift+S, Cmd+Shift+3/4/5 на macOS та скріншоти/запис на телефоні браузер у принципі не бачить — від них захищає лише розмиття тексту й водяний знак, а не виявлення.

📂 Відкрити збережений чат

Оберіть файл .pcxchat, який ви самі зберегли кнопкою «Зберегти чат», і введіть той самий пароль.