Загрузка...

"Anonio" -nonymous e2e-chat and vote/video without registration

Thread in Your sites created by Buybuy Oct 5, 2025. 484 views

  1. Buybuy
    Демо: https://devcody.guru/. Домен временный - позже перенесу на постоянный. Хочу собрать фидбек по UX/стабильности.

    ·Что это? В чем заключается анонимность?
    -Анонимные комнаты по ссылке - без аккаунтов и номеров.
    -E2E-шифрование сообщений (AES-GCM 256).
    -Голосовые и видеозвонки в браузере (WebRTC).
    -Markdown, эмодзи, индикатор «печатает…», ответы/цитаты.
    -Очистка комнаты в один клик. Сервер видит только шифротекст.

    ·Зачем сделал??
    Хотел найти простой способ обсудить что-то там, где точно не будет лишних глаз и ушей. Все просто - «скинул ссылку - и сразу поговорили приватно». Без регистрации, без ***** в открытом виде, без трекинга!!

    ·Как устроено (коротко)
    -Ключ генерируется на клиенте и лежит в URL-hash (не уходит на сервер).
    -Сервер ретранслирует зашифрованные сообщения и минимум метаданных.
    -Звонки - WebRTC; медиа шифруется между браузерами. Сигналинг - только служебные сообщения.

    ·Ограничения/честно о рисках
    -Нет аккаунтов → мало анти-абьюза (план: лимиты, TTL комнат, PIN).
    -История эфемерная: потеряли ключ - восстановить нельзя.
    -Мобильный Safari бывает капризным с WebRTC - присылайте кейсы.
    -Домен сейчас временный, позже перееду.

    ·Кому проект может оказаться полезным ?
    -Тем, кто ищет временные приватные разговоры, быстрые созвоны «по ссылке».
    -Админы/модераторы, которым нужно обсуждение без *****.
    -Команды, где важна приватность без онбординга.

    ·Планы на ближайшее будущее:
    -TTL/одноразовые комнаты, опциональный PIN.
    -Улучшение мобильного UX, PWA.
    -Self-hosted инструкция (если есть запрос).
    -Больше языков.
    -Разработка полноценного приложения.
    -AI транслейты в разговоры для удобства

    ·В планах по мимо этих очень много реализаций, которые не расписать тут.
    -Нужен фидбек
    -UX: вход по ссылке, копирование ключа, переключение языка.
    -Безопасность: угроз-модель, что мог упустить.
    -Стабильность звонков (особенно iOS). Напишите в комментарии, что бы вы добавили/убрали.


    Проект чисто технический, без политической повестки. Открыт к критике и любым PR-замечаниям.

    Буду рад услышать ваши отзывы,вопросы,предложения!! При обнаружении багов,недоработок - сообщите мне, буду рад вашей помощи!!!
    Всем хорошего настроения!!!!
     
  2. Патруль
    Патруль Oct 5, 2025 saint peter and hail mary
    [IMG]
    Только этот прикол заметил, остальное все окей
     
    1. Buybuy Topic starter
      avatarПатруль , Приветствую! Спасибо, будет исправлено
  3. хэшкот
    хэшкот Oct 5, 2025 Феромоны слились с перегаром. Два тела лежат в одеяле 2,188 Apr 4, 2022
    async function importKeyFromHash(){
    const b64 = location.hash.slice(1);
    const keyBytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
    return crypto.subtle.importKey("raw", keyBytes, { name:"AES-GCM" }, false, ["encrypt","decrypt"]);
    }
    async function encryptText(plainText){
    const key = await importKeyFromHash();
    const iv = crypto.getRandomValues(new Uint8Array(12));
    const encoded = new TextEncoder().encode(plainText);
    const cipher = await crypto.subtle.encrypt({ name:"AES-GCM", iv }, key, encoded);
    const full = new Uint8Array(iv.byteLength + cipher.byteLength);
    full.set(iv,0); full.set(new Uint8Array(cipher), iv.byteLength);
    return btoa(String.fromCharCode(...full));
    }
    async function decryptText(cipherTextB64){
    try{
    const key = await importKeyFromHash();
    const bytes = Uint8Array.from(atob(cipherTextB64), c => c.charCodeAt(0));
    const iv = bytes.slice(0,12);
    const data = bytes.slice(12);
    const plain = await crypto.subtle.decrypt({ name:"AES-GCM", iv }, key, data);
    return new TextDecoder().decode(plain);
    }catch(e){ retu это чуть чуть не e2e, e2e это когда у обоих пользователей свои ключи и они ими обмениваются, а тут только общий секрет для всех
     
    1. View previous comments (4)
    2. хэшкот
      avatarBuybuy, ну если анализировать то в данный момент переписка будет доступна из историии браузера юзера, провайдеру (ссылки даже с ссл передаются открыто), и всем вышестоящим. И логированию запросов твоего сервера
    3. Stepashka20
      avatarхэшкот, а с каких пор браузер стал в запросе отправлять часть, идущую после # ?) Ну и также, как провайдер узнает ссылку, если путь шифруется в https :thinking:
    4. хэшкот
      avatarStepashka20, про # может и ошибся, а заголовок для провайдера виден
    5. View the next comments (1)
  4. mitishield
    mitishield Oct 6, 2025 Banned 0 Oct 5, 2025
    васпом жску накрой или чем то похожим и переделай ее как выше написано тогда норм будет
     
Loading...