Вайбкод челлендж: сгенерируй мессенджер, если «телега» больше не поедет |
||
|
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ Атаки на ИИ Внедрение ИИИИ теория Компьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Промпты. Генеративные запросы Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2026-02-16 11:51 В интернете нулевых любой школьник мог поднять P2P-хаб на домашнем компьютере. Не было пользовательских соглашений на 50 страниц. Ты сам писал правила, сам модерировал чат и сам решал, кого пускать, а кого банить. Ностальгируя, мне захотелось переизобрести P2P-хабы прошлого прямо в браузере. Без регистрации по SMS. Без возни с сервером. С нормальной безопасностью. Предлагаю вам пятничный вайбкод челлендж, у кого получится самая красивая реализация безопасного одностраничного мессенджера. Доставайте свой ClaudCode, Cursor, Jules, Codex или Clowdbot. Под катом опишу детальнее идею, чтобы задать контекст для вашей AI команды. P2P Хаб в браузере План: Начать с текстового чата, по желанию, можно добавить обмен файлами и видео звонки. Чтобы это работало безопасно “даже на парковке”. Кажется, что трудно придумать что-то проще статического файла index.html.
Это идеальный формат доставки. Но есть проблема: чтобы два браузера начали общаться, они должны найти друг друга. Жаль, что мы не можем крикнуть на всю локальную сеть, но мы можем оставить записку на "общедоступном ресурсе", что мы тут. Используя внешний публичный сервер, который уже работает и доступен. Для WebRTC (браузер-браузер) он тоже нужен для начального рукопожатия. Чтобы не настраивать сервера, в качестве общедоступного ресурса можем использовать публичные демо сервера месседж брокеров. Их можно использовать для тестирования, что в целом подойдет для нашей задачи. Они созданы для IoT, лёгкие и быстрые. Например, есть: HiveMQ (broker.hivemq.com), EMQX (broker.emqx.io), Mosquitto (test.mosquitto.org) или NATS Demo (demo.nats.io). Все они доступны для тестирования и разработки и работают по WSS. Плюс, что не нужно поднимать свой сервер. Работает из коробки. Минус, что нужен интернет для рукопожатия. Для локальной сетипридется поднимать любой из этих брокеров, благо это делается одной командой. Можно сказать, что у нас есть два режима работы: Internet и LAN. Использование брокеров (MQTT или NATS) позволяет нам строить общение вокруг топиков (каналов). Топик — это просто строка-адрес, например my-chat/room-1/messages. Это позволяет строить логику маршрутизации, не написав ни строчки кода. Важно: это не доверенные сервисы. Это транспорт. Без шифрования туда нельзя ничего отправлять. Сообщения и безопасность ![]() Мы подошли к главному: как сделать безопасный чат, если транспорт публичный. Нам нужен E2EE (End-to-End Encryption). Возьмем “золотой стандарт”, на котором держится весь HTTPS и SSH: ECDH (Elliptic Curve Diffie-Hellman) для обмена ключами и AES-GCM для шифрования данных. Приятно, что нам не нужны сторонние библиотеки. В современном браузере есть Web Crypto API — это нативные C++ и аппаратно ускоренные криптофункции. У нас нет удостоверяющего центра (CA), как в HTTPS. Поэтому, нам нужно защититься от атаки “человек посередине” (MITM). В мире SSH это решается моделью TOFU (Trust On First Use). Вспомните, как вы впервые подключаетесь к серверу по SSH:
Клиент запоминает ключ сервера в known_hosts. И если при следующем подключении ключ изменится, то клиент заблокирует соединение с криком WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!. ![]() Давайте спроектируем такую же модель в браузере. Абстракции безопасности:
Для проверки собеседника мы будем использовать SAS (Short Authentication String) — визуальный emoji отпечаток. Его мы можем получить из IdentityKey, по аналогии с Telegram, WhatsApp и другими безопасными мессенджерами, чтобы визуально подтвердить личность собеседника. P2P сессия Но сам по себе “паспорт” не будет шифровать сообщения. Он нужен для двух вещей:
По аналогии с SSH, для шифрования сообщений между пользователями, безопаснее использовать одноразовые сессионные ключи, которые генерируем на каждую сессию общения между пользователями. Схема рукопожатия:
Это даёт практический эффект:
Групповые сообщения ![]() На текущий момент, мы научились отличать доверенных/недоверенных пользователей и можем безопасно взаимодействовать peer-to-peer. Но как быть с чатами? В чатах больше чем один получатель. Мы не можем шифровать каждое сообщение в чате отдельно для каждого получателя — это забьет весь трафик. Вместо этого мы будем использовать SenderKey (ключ отправителя). У каждого участника будет свой SenderKey (симметричный AES ключ). Это его “личный микрофон”. Каждое сообщение в общем чате будет зашифровано своим SenderKey. Чтобы другие могли меня услышать, я должен передать им копию моего SenderKey через защищенный 1-на-1 канал (который мы построили ранее). Как всё будет работать? Сквозной сценарий работы клиента: регистрация ? рукопожатие ? обмен ключами комнаты ? отправка/получение сообщений. Чтобы не перегружать статью протоколом и кодом, я вынес в gist спецификацию и набор общих абстракций для прототипа (классы и структуры данных, на которые можно опереться при реализации): https://gist.github.com/pahaz/0e36887ff6ae003599e2b3d7f148a575 Это удобно, если вы генерируете прототип через LLM, чтобы можно было сравнивать разные реализации участников. Моя реализация: можно посмотреть в комментах. Как участвовать? Для участия в челлендже, отправляйте ссылки на результат в комментах к этому посту, пишите используемые модели и подход (можно ссылку на промт). Все участники получат +1 в карму (и на хабре тоже). Победителя определим по итогам оценок комментов! Участие свободное. Погнали. Update [15.02.2026]
Источник: habr.com Комментарии: |
|