// documentation

Как всё работает.

Справочник по подвижным частям BurnPony. Пошаговые разборы — в руководства; точную побайтовую спецификацию — протокол v1.

Записки и конверт

Записка — это до 50 000 символов текста. На вашем устройстве записка и её настройка автоскрытия оборачиваются в небольшой JSON-пакет, затем шифруются AES-256-GCM. Загружается конверт, содержащий только версию формата, флаг необходимости парольной фразы, случайную соль, нонс и шифртекст — менее 512 КиБ и нечитаемый без ключа.

Ссылка и ключ во фрагменте

Создание записки возвращает ссылку вида burnpony.app/n/<22-симв. id>#<43-симв. ключ>. Часть до # идентифицирует записку; часть после — это 32-байтовый ключ фрагмента в кодировке base64url. Браузеры никогда не передают фрагменты, поэтому ключ попадает в браузер получателя только через ссылку и сервер его никогда не видит. Настоящий ключ шифрования выводится из ключа фрагмента и соли с помощью HKDF-SHA256.

Парольные фразы

Необязательная парольная фраза добавляет второй фактор: она нормализуется, растягивается PBKDF2-HMAC-SHA256 за 600 000 итераций и вплетается в вывод ключа. Получателя просят ввести её в просмотрщике; перебор происходит целиком в его браузере и не расходует просмотры. Передавайте фразу по каналу, отличному от ссылки. См. добавление парольной фразы.

Просмотры, срок и автоскрытие

Каждая записка несёт лимит просмотров от 1 до 100 — последний разрешённый просмотр удаляет шифртекст в той же транзакции базы данных — и срок действия от 1 часа до 30 дней, обеспечиваемый очисткой каждые пять минут. Какой предел наступит первым, тот и сжигает записку. Можно также задать обратный отсчёт автоскрытия (от 10 до 120 секунд), который снова прячет раскрытый текст в просмотрщике; эта настройка едет зашифрованной внутри записки, так что даже сервер её не знает. См. выбор просмотров и срока.

Уведомления о прочтении

Уведомления по умолчанию выключены. Включённый просмотрщик сообщает получателю, что отправитель будет уведомлён, прежде чем тот раскроет записку, время открытия записывается, а на ваш телефон приходит обобщённый пуш — «Записка была открыта.» — несущий только ID записки. Для уведомлений одной записки можно зарегистрировать до пяти ваших устройств. См. использование уведомлений о прочтении.

Вкладка «Отправленные» и досрочное сжигание

Каждая созданная вами записка перечислена в «Отправленных» с живым статусом: использованные просмотры, срок, время уведомлений если включены. На вашем устройстве хранятся только ID записки, токен управления и выбранные настройки — никогда текст записки. Сжигание немедленно удаляет шифртекст с сервера; после этого ссылка ведёт себя как любая мёртвая ссылка. См. досрочное сжигание записки.

Просмотрщик

Страница, которую открывают получатели, — это один самодостаточный файл: без фреймворков, без cookie, без внешних запросов, со строгой Content-Security-Policy и политикой no-referrer, чтобы ссылка не утекала дальше. Она предупреждает, что записка самоуничтожается, прежде чем получатель её раскроет, расшифровывает с помощью WebCrypto браузера и локализована на 9 языков. «Просмотр исходного кода» показывает всё целиком.

Сервер

Ретранслятор на burnpony.app хранит запечатанные конверты и минимальный учёт — ID, метки времени, счётчики просмотров, флаги уведомлений, хешированный токен управления — и удаляет шифртекст при последнем просмотре, при истечении срока или при досрочном сжигании. Сожжённые, истёкшие и никогда не существовавшие записки неразличимы снаружи. Создание ограничивается по частоте с помощью недолговечных солёных хешей IP, а не журналов адресов. Полные подробности на странице безопасности.

Самостоятельный хостинг

Настройки принимают свой URL сервера, и каждая записка запоминает, на каком сервере она живёт — так что записки, созданные на вашем ретрансляторе, продолжают работать, если вы переключитесь обратно. Исходный код сервера-ретранслятора планируется опубликовать; пока он не вышел, самостоятельный хостинг — это возможность, которую приложение поддерживает, а не то, что сегодня можно развернуть из публичного репозитория. дорожная карта честно это отслеживает.

Ограничения кратко

Размер записки: 50 000 символов. Размер конверта: 512 КиБ. Просмотры: 1–100. Срок действия: 1 час, 8 часов, 1 день, 3 дня, 7 дней или 30 дней. Автоскрытие: выкл., 10, 30, 60 или 120 секунд. Создание: ограничение частоты в час на (хешированный) адрес.