Бесплатно в App Store, Google Play и F-Droid

Записки, которые сгорают после прочтения.

BurnPony запечатывает записку на вашем телефоне с помощью AES-256-GCM, выдаёт одну ссылку и уходит в сторону. Получатель открывает её в любом браузере — без приложения, без аккаунта — и после последнего разрешённого просмотра записка исчезает. Сервер посередине всегда хранит только шифртекст.

AES-256-GCM запечатано на вашем устройстве без аккаунта · приложения для получателей · аналитики 1–100 просмотров, затем пепел
ВЫ СЕРВЕР · ШИФРТЕКСТ ЛЮБОЙ БРАУЗЕР ключ остаётся в #фрагменте

Запечатана на вашем телефоне. Сожжена после прочтения.

// загрузить

Бесплатно в App Store, Google Play и F-Droid.

Ничего не нужно регистрировать и настраивать. Установите, напишите записку, поделитесь ссылкой.

iOS доступно сейчас

BurnPony бесплатен для iPhone. Загрузить в App Store.

Android доступно сейчас

Бесплатно в Google Play и F-Droid. Установить из Google Play или установить из F-Droid.

Desktop доступно сейчас

Сборки для macOS, Linux и Windows, подписанные и с контрольной суммой. Смотреть загрузки.

Любой браузер без установки

Получателям никогда не нужно приложение. Записка — это одна ссылка, которая расшифровывается в любом современном браузере на любой платформе.

// как это работает

Напишите. Свяжите ссылкой. Смотрите, как горит.

Весь продукт — это три шага, и шифрование происходит до второго шага.

01

Напишите и запечатайте

На телефоне вводится записка. До какой-либо загрузки она шифруется на устройстве с помощью AES-256-GCM — ключ выводится из 32 новых случайных байтов, и эти байты никогда не покидают телефон ни в одном запросе.

02

Поделитесь одной ссылкой

Вы получаете одну ссылку с ключом расшифровки, спрятанным в её #фрагменте — части, которую браузеры не передают. Отправьте её любым каналом или дайте получателю отсканировать QR-код лично. Нужен второй фактор? Добавьте парольную фразу и передайте её отдельно.

03

Она сгорает

Получатель нажимает «Показать» в любом современном браузере, и записка расшифровывается прямо там. При последнем разрешённом просмотре сервер удаляет шифртекст в той же транзакции. Всё непрочитанное сгорает всё равно, когда наступит выбранный вами срок.

// что вы получаете

Сделано так, чтобы посредник хранил ничего.

Каждое проектное решение указывает в одну сторону: сервер хранит то, что не может прочитать, как можно меньшее время.

Запечатано на вашем устройстве

AES-256-GCM с ключом, выведенным через HKDF-SHA256 из новых случайных байтов — всё на вашем телефоне, до отправки хотя бы одного байта. Сервер получает шифртекст, и точка.

Ключ никогда не передаётся

Ключ расшифровки едет в #фрагменте ссылки. Браузеры никогда не отправляют фрагменты на серверы — ни на наш, ни на чей-либо. Кто владеет ссылкой, владеет ключом; сервер — никогда.

Сгорает при последнем просмотре

设置 1 到 100 次查看。当最后一次被取走时,密文会在同一个数据库事务中被删除 — 不是按清理计划,也不是过一会儿,而是在同一时刻。

Истекает по расписанию

Выберите от 1 часа до 30 дней. Каждые пять минут проходит очистка и удаляет всё, у чего вышел срок, прочитанное или нет. Ничто не залёживается только потому, что никто не нажал.

Парольная фраза как второй фактор

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

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

Включите уведомление о прочтении — и вы узнаете, когда записка была открыта, а получателю сообщают об этом до того, как он её покажет. BurnPony не ведёт скрытого отслеживания прочтения.

Сожгите заранее

Каждая созданная вами записка появляется на вкладке «Отправленные» с живым статусом — использованные просмотры, время открытия при включённых уведомлениях — и кнопкой «сжечь», удаляющей её с сервера немедленно.

Просмотрщик, который вы можете прочитать

Получатели получают одну самодостаточную страницу: без фреймворков, без cookie, без внешних запросов, запертую строгой Content-Security-Policy. «Просмотр исходного кода» — это и есть аудит.

Никаких аккаунтов

Регистрация не нужна ни для отправки, ни для чтения, нет базы имён пользователей, нет аналитики. Здесь нет ничего о вас, что могло бы утечь.

// посредник

Сервер хранит шифртекст и часы.

Записка должна где-то жить между тем, как вы её написали, и тем, как её прочитали. Это «где-то» хранит запечатанный блоб, который не может открыть, случайный ID, метки времени и счётчик просмотров — и как только записка сожжена, истекла или вообще не создавалась, ссылка во всех трёх случаях возвращает совершенно одинаковый ответ, так что сервер не может даже подтвердить, что записка когда-либо существовала. Предпочитаете держать этот посредник у себя? Настройки приложения принимают свой URL сервера. Полный разбор — на странице безопасности — или копните до самого дна: протокол v1 задаёт каждый байт, и код открыт.

// вопросы

Частые вопросы.

BurnPony уже доступен?
Да. BurnPony бесплатен в App Store для iPhone, а также есть десктопная сборка для macOS, Linux и Windows. Он также бесплатен в Google Play и F-Droid для Android.
Нужно ли приложение получателю?
Нет. Записка — это одна ссылка, открывающаяся в любом современном браузере. Страница просмотрщика получает запечатанную записку и расшифровывает её прямо там встроенным WebCrypto браузера — ключ находится в части ссылки после #, которую браузеры никогда не отправляют ни на один сервер.
Что может прочитать сервер?
Шифртекст, который он не может открыть, плюс минимум учёта: случайный ID записки, метки времени, лимит просмотров и запрашивалось ли уведомление. Ключ расшифровки до него не доходит, как и настройка автоскрытия, которая едет зашифрованной внутри записки.
Что происходит, когда просмотры заканчиваются?
В момент, когда получен последний разрешённый просмотр, сервер удаляет шифртекст в той же транзакции базы данных. С этого момента ссылка возвращает точно такой же ответ, как у истёкшей записки — или у той, что никогда не существовала.
Что даёт парольная фраза?
Второй фактор. Парольная фраза растягивается PBKDF2-HMAC-SHA256 за 600 000 итераций и подмешивается в ключ шифрования, так что одной ссылки уже недостаточно. Передавайте её по каналу, отличному от ссылки. Неверные попытки проваливаются локально в браузере получателя и никогда не расходуют просмотры.
Уведомления о прочтении — это скрытое отслеживание?
Нет. Если вы включите уведомление, получатель увидит предупреждение перед тем, как показать записку. Вы получаете намеренно обобщённый пуш — «Записка была открыта.» — который не несёт содержимого записки через серверы Apple.
Какого размера и на какой срок могут быть записки?
До 50 000 символов на записку. Срок действия — от 1 часа до 30 дней, лимит просмотров — от 1 до 100; какой предел наступит первым, тот и сжигает записку.
Это открытый код?
Да, полностью. Приложение, сервер-ретранслятор и просмотрщик открыты на github.com/norsehorse-dev/BurnPonyiOS под лицензией Apache 2.0 вместе со спецификацией протокола v1 и межреализационными тестовыми векторами. Каждая ссылка на записку — это тоже собственный аудит: просмотрщик — одна самодостаточная страница, поэтому «Просмотр исходного кода» показывает ту самую программу, что работает с вашим ключом, а доставленная страница проверяемо байт в байт совпадает со своим опубликованным исходником.

Некоторым вещам не место в истории чата.

Отправьте их как записку, которая читается один раз и сгорает.

Загрузить в App Store Доступно в Google Play Доступно в F-Droid Скачать для ПК Создать записку в браузере