Политика конфиденциальности Herkos
Последнее обновление: 29 октября 2026 года. Канонический адрес: https://herkos.app/privacy
Перевод. Это перевод, предоставленный для удобства. При расхождениях преимущественную силу имеет английская версия.
Herkos Mail, Herkos Calendar, Herkos Notes и Herkos Local Relay — свободные приложения с открытым исходным кодом для сети Nostr, издаваемые проектом Herkos («мы»). Herkos Calendar, Herkos Notes и Herkos Local Relay ещё находятся в разработке. Этот документ объясняет, какие данные обрабатывают приложения и наши сайты, куда они уходят и кто может их видеть. Мы писали его, чтобы его читали, а не пролистывали: если что-то здесь вас удивит, напишите нам на privacy@herkos.email.
Коротко
- У Herkos нет системы аккаунтов, нет собственного сервера и нет аналитики. Мы не получаем ни ваши сообщения, ни события, ни заметки, ни контакты, ни ключ, ни сведения о том, как вы пользуетесь приложением.
- Ваш открытый ключ Nostr — это ваша личность в сети. Всё, что вы публикуете в Nostr (профиль, списки реле, метки), привязано к нему и видно используемым вами реле.
- Почта между пользователями Nostr зашифрована сквозным шифрованием (NIP-17). Почта на обычные адреса и с них проходит через мост (bridge), который может её прочитать.
- Некоторые необязательные функции отправляют данные третьим лицам (push-уведомления, отложенная отправка). Они выключены, пока вы их не включите, и этот документ называет каждую из них.
- События календаря шифруются на вашем устройстве. Реле видят, что у вас есть события, примерно какого они размера и когда они меняются, но не то, что в них написано. Публичные события, список занятости и ссылки для общего доступа становятся публичными по вашему выбору, каждое по отдельности. Чтобы узнать, где получают почту ваши гости, Calendar спрашивает только ваши реле, никогда — сторонний индекс.
- Заметки шифруются на вашем устройстве для вашего собственного ключа. Реле не могут их прочитать, но видят, сколько у вас заметок и когда вы редактируете каждую из них. Поиск выполняется на вашем устройстве: слова, которые вы ищете, никогда его не покидают. Заметка, которой вы делитесь, уходит в запечатанном виде только выбранному вами аккаунту: реле не видят ни того, кто её отправил, ни того, что в ней.
- Herkos Local Relay хранит ваши события на вашем устройстве, в
зашифрованном виде, и слушает только там (
127.0.0.1). Оно общается только с вашими реле и с входящими реле людей, которым вы пишете; частные события никогда не покидают устройство. Его копии попадают только в выбранную вами папку, никогда — в облако. - Наши сайты (
herkos.appи его поддомены) обслуживает Cloudflare, который, как и любой веб-хостинг, видит ваш IP-адрес. Они не устанавливают cookie и не используют аналитику.
Данные, которые остаются на вашем устройстве
- Ваш закрытый ключ (nsec) при входе с его помощью хранится в защищённом хранилище операционной системы (Android Keystore, связка ключей iOS/macOS, диспетчер учётных данных Windows, libsecret в Linux, зашифрованное локальное хранилище в веб-версии). Если вы входите через удалённое приложение для подписи («bunker» NIP-46), ключ вообще не попадает на устройство.
В браузере такого защищённого хранилища нет. Ключ лежит в локальном хранилище сайта и проходит через JavaScript при каждой подписи, поэтому расширение с доступом ко всем страницам, уязвимость XSS или подменённая сборка могут его прочитать; и, в отличие от установленного приложения, веб-страница отдаёт новый код при каждом посещении. В веб-версии используйте удалённое приложение для подписи или личность, которую не жалко потерять.
- Ваш почтовый ящик: расшифрованные письма, вложения, метки, папки и
контакты кешируются в локальной базе данных, чтобы приложение работало без
сети. Эта база не зашифрована сверх того, что даёт операционная система;
блокировка приложения (PIN или биометрия) — это барьер удобства, а не
шифрование хранимых данных. В Android приложение исключено из облачных
резервных копий и копирования между устройствами.
- PIN блокировки приложения: хранится как хеш с солью и растяжением ключа
(PBKDF2), никогда в открытом виде. У Herkos Calendar и Herkos Notes — у
каждого свой собственный PIN, который хранится так же.
- Ваш календарь (Herkos Calendar): события, списки, ключи просмотра и
напоминания, которые вы можете читать, кешируются на устройстве,
зашифрованные запись за записью ключом, который хранится в защищённом
хранилище операционной системы. В браузере календарь хранится только в памяти
и каждый раз заново загружается с реле. Напоминания подаёт само устройство:
Calendar не использует push-сервер. Если вы решите скрывать названия в
напоминаниях, они сообщают только «Событие» и когда оно начинается. Ваш ключ
Calendar хранится отдельно от ключей Herkos Mail (см. «Ваш аккаунт»
в разделе о Calendar).
- Ваши заметки (Herkos Notes): заметки, их история, блокноты и поисковый
индекс кешируются на устройстве, зашифрованные запись за записью ключом,
который хранится в защищённом хранилище операционной системы. В браузере они
хранятся так же, в хранилище браузера для сайта (IndexedDB), а ключ тоже лежит
в браузере: на компьютере, которым пользуются и другие, это мало защищает.
Если браузер ничего не хранит для сайта (приватное окно, заблокированные
данные сайта), они хранятся только в памяти, и без подключения писать нельзя.
Заметка, которую вы блокируете, получает собственный пароль; без него никто не
может открыть эту заметку, в том числе и мы. Резервная копия ваших заметок —
это файл, который записывается только туда, куда вы его сохраняете, и
шифруется собственным паролем. Автоматическая копия, которая делается каждую
неделю, если вы её не отключите, — это файл в папке на устройстве
(Herkos Notes/backups в ваших Документах), зашифрованный ключом вашего
аккаунта; хранятся последние пять, и она никуда не отправляется (в
браузере её нет). Заметки, которыми с вами делятся другие аккаунты,
ждут в разделе «Полученные от других», на устройстве и в зашифрованном виде,
как и всё остальное, пока вы их не сохраните или не отклоните.
- Ваше реле (Herkos Local Relay): его события, сопряжённые приложения, его настройки и то, куда уходят его копии; см. его собственный раздел ниже.
Всё это можно стереть в Настройки → Ещё → Сбросить приложение или удалив аккаунт.
Данные, которые покидают ваше устройство, и кому они уходят
Эта таблица относится к Herkos Mail. У Herkos Calendar, Herkos Notes и Herkos Local Relay ниже есть свои разделы.
| Получатель | Что он видит | Когда |
|---|---|---|
| Реле Nostr (список по умолчанию в Настройки → Сеть, изменяемый) | Ваш IP-адрес, ваш открытый ключ, публикуемые вами события (профиль, списки реле, список серверов Blossom, метки NIP-32, зашифрованные настройки) и адресованные вам зашифрованные «gift wrap» вместе со временем. Содержимое gift wrap реле прочитать не могут. Реле, требующее аутентификации NIP-42, узнаёт ваш открытый ключ, даже если вы только читаете. | Всегда, пока приложение синхронизируется. В Android — также при закрытом приложении, примерно каждые 15 минут, когда фоновая проверка заменяет push-сервер. |
| Серверы Blossom (изменяемые) | Ваш IP-адрес и открытый ключ, а также зашифрованные блобы писем размером более 32 КБ и их вложений. Ключ для расшифровки блоба передаётся только внутри зашифрованного сообщения. | Когда вы отправляете или открываете большое письмо. |
Мосты (по умолчанию uid.ovh, изменяемые) |
Полное содержимое любого письма, которое вы отправляете на обычный адрес (Gmail, Outlook…) или получаете с него, и псевдоним имя@bridge, который вы регистрируете. Мосты — независимые операторы со своими условиями конфиденциальности; Herkos их не обслуживает. |
Когда вы используете личность @bridge или пишете на адрес вне Nostr. |
| Серверы NIP-05 (домен адреса, который вы вводите) | Что кто-то спросил, является ли имя@домен пользователем Nostr. |
Когда вы добавляете получателя пользователь@домен. |
Push-сервер (api.nmail.li по умолчанию, управляется исходным проектом Nostr Mail; меняется в Настройках → Уведомления, где его можно и полностью отключить) |
Ваш открытый ключ, push-токен устройства (конечная точка UnifiedPush), язык уведомлений и — поскольку он следит за реле вместо вас — когда вы получаете почту (но не что в ней). | Только если вы включите уведомления для аккаунта. Выключение просит сервер удалить подписку. При смене сервера то же самое запрашивается у прежнего сервера. |
DVM планировщика (сервис Nostr, обслуживаемый третьей стороной, см. NostrConfig.schedulerDvm) |
Ваш открытый ключ, уже зашифрованные сообщения для публикации, их реле назначения и запланированное время. | Только если вы пользуетесь функцией «отправить позже». |
Удалённое приложение для подписи / реле для NIP-46 (relay.nsec.app и резервные) |
Ваш открытый ключ и зашифрованные запросы на подпись. | Только если вы входите через bunker или приложение для подписи. |
| Серверы изображений (любой сервер, на который указывает профиль или письмо) | Ваш IP-адрес и момент загрузки изображения. Изображение профиля загружается с адреса, который его владелец указал в своём профиле, только если вы включите Загружать фото профиля (изображения ваших собственных аккаунтов загружаются всегда); в этом случае тот, кто управляет этим сервером, может узнать, когда вы смотрели сообщения или контакт этого человека. Изображения в письмах по умолчанию заблокированы; как только вы их загрузите (Загрузить изображения или настройка Всегда загружать изображения), их серверы, часто сервер отправителя, узнают, что вы открыли письмо, и когда. Фоновое изображение, которое вы добавляете по его адресу, загружается с этого сервера. | Изображения профиля: только если вы их включите (ваши — всегда). Изображения в письмах: только если вы их загрузите. |
Сам Herkos не получает ничего из этого. Нет ни отчётов о сбоях, ни телеметрии.
Herkos Calendar: что видят реле
Calendar общается с реле Nostr: с реле вашего аккаунта (ваши списки NIP-65 и входящих реле), с реле в Настройки → Реле (изменяемыми) и, когда вы кого-то приглашаете или отвечаете на приглашение, с входящими реле этого человека. Больше ни с кем, кроме того, что вы запрашиваете сами (ниже): и с публичными индексами реле тоже нет. «Ваш аккаунт» ниже объясняет, для чего нужно каждое из них. Нет ни сервера Herkos, ни push-сервера, ни телеметрии. Каждое реле видит ваш IP-адрес и время каждого подключения.
| Что | Что видят реле, которые это хранят | Чего они не видят |
|---|---|---|
| Частное событие (kind 32678) | Ваш открытый ключ, то, что это событие календаря (его kind), случайный идентификатор, когда вы его создали или в последний раз изменили, и примерно его размер. Оно хранится только на ваших реле, где его ищут ваши гости; никогда — на их реле. | Название, дату и время, часовой пояс, повторение, место, описание, гостей, напоминания. |
Ваши списки календарей (kind 32123) и настройки напоминаний (kind 30078, d=calendar-alarms) |
Ваш открытый ключ, то, что они существуют, и когда они меняются. | Какие события в них входят, их названия, ключи просмотра, ваши напоминания. |
| Приглашение («gift wrap», kind 1059) | Открытый ключ гостя и тег k=1052, который говорит, что в конверте лежит приглашение в календарь (так календарные приложения, включая Formstr, находят приглашения, не открывая вашу почту). Оно отправляется только на собственные входящие реле гостя, под одноразовым ключом, со своими случайными метками времени, а приглашения на одно и то же событие уходят в случайном порядке, каждое через 5–90 секунд после предыдущего (первое — после самого события). Конверт также несёт дату истечения срока, выбранную случайно между 60 и 90 днями после отправки, чтобы реле могли его удалить: она ничего не говорит о том, когда событие. |
Кто его отправил, о каком событии речь и кого ещё пригласили. |
Личный ответ на приглашение (gift wrap, kind 1059, тег k=1925) |
Открытый ключ получателя (организатора или ваш — в вашей собственной копии) и то, что в конверте лежит ответ календаря. Отправляется только на входящие реле получателя, с одноразовым ключом, случайными датами и сроком действия, как приглашения. | Кто отвечает, на какое событие и что. |
| Удаление (kind 5) | Ваш открытый ключ и идентификатор того, что вы удаляете. | — |
Реле, требующее аутентификации NIP-42, узнаёт ваш открытый ключ; Calendar отвечает на такой запрос только для ваших собственных событий на ваших собственных реле и для чтения ваших собственных входящих. Удаление в Nostr — это просьба: реле может сохранить свою копию, по-прежнему зашифрованную.
Чего не скрыть ничем внутри событий: каждое приглашение уходит с вашего IP-адреса, а каждый гость забирает событие с ваших реле со своего. Реле, на котором лежат входящие нескольких ваших гостей, может понять, что их приглашения пришли с одного и того же адреса. Скрыть это могут только Tor или VPN.
Ваш аккаунт
Calendar не создаёт аккаунтов: вы входите с аккаунтом Nostr, который у вас уже есть, одним из этих способов.
- Через приложение для подписи на вашем телефоне Android (NIP-55, например Amber): ключ остаётся в этом приложении, и Calendar общается с ним напрямую на телефоне, без реле и сети между ними. Устройство хранит только ваш открытый ключ и то, какое приложение подписывает. Calendar просит у него то же, что и у bunker (см. ниже), никогда — конверты приглашений, и проверяет каждое подписанное событие, которое возвращается, прежде чем его использовать.
- С вашим ключом (
nsecили защищённый паролемncryptsec, который открывается на устройстве): он хранится в защищённом хранилище операционной системы под собственным именем Calendar. Herkos Mail хранит свои аккаунты отдельно, и Calendar никогда их не читает, не меняет и не удаляет: выход из одного приложения не выводит вас из другого. - По ссылке
bunker://: ключ остаётся в вашем приложении для подписи. Calendar общается с ним через реле, указанные в ссылке, и просит у него только ваш открытый ключ, шифрование и расшифровку (NIP-44) и подпись собственных kinds событий Calendar; конверты приглашений через него никогда не проходят, потому что в них одноразовые ключи. Устройство хранит только подключение (ключ, созданный для него, открытый ключ приложения для подписи и его реле). Эти реле видят ваш IP-адрес, ключи подключения и когда запрашиваются подписи; сами запросы зашифрованы. - Через Nostr Connect (QR-код): как с bunker, но подключение идёт через реле в Настройки → Реле. Calendar не добавляет ни одного реле — ни своего, ни чьего-либо ещё.
Ваши реле. При входе Calendar ищет ваши списки (NIP-65, kind 10002, и ваш список входящих реле, kind 10050) на реле в Настройки → Реле через отдельное подключение, которое вас не идентифицирует: реле, требующее аутентификации, получает одноразовый ключ, а не ваш. Дальше:
- ваши события, списки и зашифрованные настройки публикуются на ваших реле для записи из списка NIP-65. Без этого списка — на реле из Настроек, и страница аккаунта об этом сообщает;
- ваши приглашения и ответы читаются с ваших реле для чтения и входящих реле. Calendar отвечает на аутентификацию NIP-42 только на ваших собственных реле и только для того, что принадлежит вам;
- после открытия с выполненным входом приложение никуда не подключается, пока что-то не понадобится;
- если в Настройки → Реле есть реле, работающее на этом устройстве (адрес
ws://127.0.0.1илиws://localhost, например приложение Citrine), каждая синхронизация также оставляет на нём копию ваших собственных событий, списков и удалений — в точности такими, какими они были подписаны, и всё ещё зашифрованными. Для этого ничего не покидает устройство, и пока событие есть на другом реле, это реле никогда не будет тем, где вашим гостям говорят его искать. Другие приложения на устройстве, читающие это реле, видят то же, что видит любое реле.
Реле ваших гостей (решение от 21 октября 2026 года). Чтобы кого-то
пригласить, приложению нужно знать, где этот человек получает почту.
Calendar ищет его списки (10002 и 10050) только на реле в Настройки →
Реле, никогда — в публичном индексе третьей стороны (например,
purplepag.es): этот сервис увидел бы адрес, с которого вы спрашиваете, и о
ком вы спрашиваете, то есть кого вы приглашаете. Каждого гостя ищут
отдельно, в случайном порядке, через собственное подключение с одноразовым
ключом, поэтому эти реле не могут понять, кто приглашён вместе с кем. Зато
они видят ваш IP-адрес и открытый ключ каждого человека, которого вы ищете.
Если чьих-то списков на этих реле нет, приложение перед отправкой помечает
этого человека как «входящие неизвестны», и приглашение до него не
доходит. Чтобы его найти, добавьте в Настройки → Реле реле, где он
публикует свои списки.
Что синхронизируется между вашими устройствами, всегда в зашифрованном
для вас виде и на ваших реле для записи: ваши списки календарей (с ключами их
событий), настройки напоминаний (d=calendar-alarms), календари, на которые
вы подписаны (d=calendar-subscriptions), и приглашения, которые вы
игнорируете, или чужие события, которые вы убираете из своего календаря
(kind 30078, d=calendar-declined: только какое событие и когда, никогда —
его название). Реле видят, что они существуют и когда меняются, но не что в
них написано. Напоминания, которые подаёт устройство, принадлежат аккаунту,
с которым вы вошли, никогда — предыдущему.
Копия ваших ключей. Calendar предлагает сохранить копию: файл с вашими списками календарей и ключами их событий, зашифрованный паролем, который вы для него выбираете (шифром NIP-49). Он записывается только туда, куда вы его сохраняете; он не уходит ни на реле, ни на сервер. Его имя содержит дату, никогда — аккаунт. Для напоминания устройство помнит только две даты: последней копии и последнего «Не сейчас».
Выход сначала показывает, что будет потеряно, и предлагает сохранить копию. Затем он удаляет с этого устройства ваш ключ (или подключение к bunker) и сохранённый календарь. То, что было опубликовано, остаётся на реле, зашифрованным. Разрешение, которое вы дали в своём приложении для подписи, отзывается в этом приложении.
Публично по вашему выбору
Эти функции выключены, пока вы их не включите, и приложение до этого показывает, что раскрывает каждая из них:
- Публичные события (kinds 31922/31923): всё, что в них есть, — название, время, место, описание — публично, связано с вашим открытым ключом и остаётся публичным: публичное событие нельзя снова сделать частным.
- Список занятости (kind 31926): время, когда вы заняты в этом месяце и в двух следующих, округлённое до 30 минут (или 15), для выбранных вами календарей. Никогда — что, где или с кем. Выключение просит реле его удалить.
- Ссылки для общего доступа (
herkos.app/e/…): ссылка и есть ключ. Любой, у кого она есть, может читать это событие, пока вы её не отзовёте, а её первая часть показывает ваш открытый ключ. Ключ стоит после#— в той части адреса, которую браузеры никогда не отправляют на сервер, поэтому ни Cloudflare, ни мы его не видим. Страница обращается к реле, указанным в ссылке; если какое-то из них не является широко известным реле, она сообщает посетителю, что это за сервер, и спрашивает перед подключением, потому что этот сервер увидит IP-адрес посетителя. Отзыв перешифровывает событие новым ключом; кто уже его прочитал, сохраняет прочитанное. - Экспорт (
.ics): обычный текстовый файл с вашими названиями и временем. Он не зашифрован; храните его как любой другой личный документ. - Автоматическая копия (
.ics, на странице Экспорт в .ics): раз в день, в который Calendar открыт, — экспорт всех ваших календарей в выбранную вами папку с сохранением 7 последних. Как и экспорт, она не зашифрована, поэтому всё, что может читать эту папку (другое приложение, облачная папка, которая её синхронизирует), может прочитать ваши названия и время. Calendar записывает и удаляет там только свои собственные файлы (herkos-calendar-auto-…ics) и запоминает папку только на этом устройстве. - Отчёты о проблемах (бета): приложение лишь готовит текст, который вы копируете и отправляете сами. В нём есть версия приложения, платформа, язык, часовой пояс и то, могут ли срабатывать напоминания, но никогда — ваши события, ваш ключ или ваш аккаунт.
Herkos Calendar читает публичные ответы на ваши публичные события, написанные другими приложениями (RSVP, kind 31925, и исключения участников, kind 84); сам он не пишет ни то, ни другое.
Что вы запрашиваете сами
Эти подключения происходят, только когда вы о них просите:
- Календари, на которые вы подписаны по адресу (
.icsилиwebcal): устройство запрашивает календарь напрямую у сервера по этому адресу, только по https, каждые несколько часов, без cookie и без каких-либо наших посредников. Сервер видит ваш IP-адрес и время запроса, а любой, у кого есть адрес, может читать календарь. Список адресов хранится на вашем устройстве и на ваших реле, зашифрованным для вас (kind 30078,d=calendar-subscriptions). - Публичные календари Nostr, на которые вы подписаны (ссылка
naddr…): запрашиваются каждые несколько часов у ваших реле и у реле, указанных в ссылке, и ни у каких других. Эти реле видят ваш IP-адрес и какой календарь вы читаете. Они хранятся в том же зашифрованном списке. - Праздники: встроены в приложение; подписка на них ничего не запрашивает ни у одного сервера.
- «Проверить, свободны ли они» (в редакторе, при нажатии): приложение запрашивает публичный список занятости (kind 31926) каждого гостя у реле, на которых этот человек публикует, не называя себя. Эти реле видят ваш IP-адрес и о ком вы спрашиваете.
- Файлы события: хранятся в зашифрованном виде на сервере Blossom. Когда вы открываете файл, приложение скачивает его с этого сервера, который видит ваш IP-адрес и идентификатор файла, но никогда — его содержимое.
Herkos Notes: что видят реле
Notes общается с реле Nostr и больше ни с кем. Нет ни сервера Herkos, ни push-сервера, ни телеметрии. Каждое реле видит ваш IP-адрес и время каждого подключения.
Какие реле. Если у вашего аккаунта есть список личных реле (kind
10013, список, который описывает NIP-37), Notes использует реле из него такими,
как они есть, и никогда его не перезаписывает; этот список он ищет на реле из
своих настроек и на реле, на которых вы публикуете (ваш список NIP-65). В
противном случае он использует реле из своих настроек: по умолчанию
relay.formstr.app, nos.lol и relay.primal.net, не больше восьми, и все их
можно изменить. Настройки также предлагают список известных реле, которые можно
добавить одним касанием; ни к одному из них Notes не обращается, пока вы его не
добавите. Реле может быть ws://, то есть соединением без шифрования, только
если оно находится на устройстве или в домашней сети (localhost, частные
адреса, имена .local): заметки по-прежнему передаются зашифрованными, но
любой в этой сети может видеть то, что видит реле (таблица ниже). Notes не
публикует собственного списка реле, если вы об этом не попросите (Реле →
Сохранить как мой список личных реле). Тогда он публикует эти реле как ваш
список 10013, зашифрованный вашим ключом, на те же реле, на которых ищет списки,
и поддерживает его в актуальном состоянии по тому, что вы меняете в Notes: реле
видят ваш открытый ключ, то, что список существует, и когда он меняется, но не
реле в нём. Список, записанный другим приложением, никогда не перезаписывается:
Notes использует его как есть.
Если одно из этих реле работает на этом устройстве (адрес ws://127.0.0.1 или
ws://localhost, например приложение Citrine), Notes оставляет на нём и копию
ваших заметок, блокнотов и удалений — точно такими, как они были подписаны, и
по-прежнему зашифрованными. Для этого ничто не покидает устройство; Notes
никогда не читает с этого реле, а заметка, которая есть только на нём, не
считается загруженной. Другие приложения на устройстве, читающие это реле,
видят то же, что видит любое реле.
| Что | Что видят реле, которые это хранят | Чего они не видят |
|---|---|---|
| Заметка (kind 31234, NIP-37) | Ваш открытый ключ; случайный идентификатор (d), созданный из случайного числа и никогда — из названия; тег k=30023, одинаковый у всех заметок, поэтому он ничего не говорит о том, что вы пишете; когда вы в последний раз её изменили; и примерно её размер. |
Название, текст, теги, блокнот, закреплена ли она, в избранном ли, в корзине ли, и когда вы её создали. |
| Контрольная точка (kind 1234), история заметки | Ваш открытый ключ, к какой заметке она относится (её тег a указывает на идентификатор заметки) и когда она создана. |
Что было написано в заметке тогда. |
| Ваши блокноты (kind 30078) | Ваш открытый ключ, то, что список существует, и когда он меняется. Его идентификатор выводится из вашего открытого ключа, поэтому он одинаков на всех ваших устройствах. | Названия ваших блокнотов, сколько их и какие заметки в каждом. |
| Удаление (kind 5) | Ваш открытый ключ и идентификаторы того, что вы удаляете: заметки и её контрольных точек. | — |
| Заметка, которой вы делитесь (kind 1059, gift wrap NIP-59) | Открытый ключ аккаунта, которому она адресована (p); тег k=30023; дата, случайно сдвинутая назад не более чем на два дня; и примерно её размер. Она подписана не вашим ключом, а одноразовым ключом, созданным для неё. |
Кто её отправил, когда, её название и текст. Внутри, запечатанные (kind 13) и зашифрованные только для этого аккаунта, лежат ваш открытый ключ и заметка: открыть их может только этот аккаунт, и он узнаёт, кто её отправил. |
Чего не скрыть. d и k заметки и a контрольной точки должны быть
читаемыми: они нужны реле, чтобы заменять заметку её более новой версией и
находить её историю. Поэтому реле может подсчитать, сколько у вас заметок, и
увидеть, когда вы редактируете каждую из них и как часто. Notes делает эту
картину более грубой, но не невидимой: он сохраняет не больше одной контрольной
точки на заметку за каждый час редактирования, одну — когда вы закрываете
изменённую заметку, и по одной для каждой стороны, когда вы разрешаете конфликт,
но никогда — по одной на каждое сохранение, поэтому ритм вашего письма не
публикуется поминутно.
Почему у ваших заметок никогда не истекает срок. Черновики NIP-37 могут
нести тег expiration (в его примере — 90 дней), и реле, которое его соблюдает,
удаляет событие в эту дату. Для блокнота это означало бы потерю заметок, удалить
которые никто не просил, поэтому Notes никогда его не пишет. Обратная сторона:
ваши заметки остаются на реле, зашифрованными, пока вы их не удалите, а
удаление в Nostr — это просьба: реле может сохранить свою копию.
Как делиться заметкой. Notes отправляет копию на реле, с которых, по словам
другого аккаунта, он читает (его реле NIP-17, kind 10050, а если их нет —
реле для чтения из его списка NIP-65), которые Notes ищет на ваших реле, и на ваши
собственные реле, не больше восьми. Передаётся то, что написано в заметке
(название, текст и теги), но не ваш блокнот, отметки или корзина; то, что вы
измените потом, не отправляется. Другой аккаунт сохраняет свою копию:
Notes не может забрать её обратно, и удаление вашей заметки её не удаляет.
Чтобы получать заметки, Notes запрашивает у ваших реле gift wrap, адресованные
вашему ключу с k=30023, и открывает их на устройстве. Если вы отклоните такую
заметку, она удалится только с устройства: gift wrap подписан ключом, который
никто не хранит, поэтому никто из вас двоих не может попросить реле удалить её,
и она остаётся там, но прочитать её не может никто, кроме вас.
Поиск — локальный. Всё зашифровано, поэтому ни одно реле не может искать за вас. Notes загружает и расшифровывает ваши заметки и строит индекс на устройстве; слова, которые вы ищете, никуда не отправляются.
Реле, требующее аутентификации NIP-42, узнаёт ваш открытый ключ; Notes отвечает ему от имени вашего аккаунта. Notes также запрашивает у ваших реле черновики, которые другие приложения написали вашим ключом (kinds 31234 и более старый 30024), чтобы показать их только для чтения, и при этом ничего не публикует. Если вы входите через удалённое приложение для подписи (bunker или Nostr Connect), его реле передают ваши зашифрованные запросы на подпись, и Notes просит его подписывать только перечисленные выше kinds (включая печать заметки, которой вы делитесь, kind 13; её gift wrap подписывается на устройстве одноразовым ключом). С приложением для подписи на вашем телефоне Android (NIP-55, например Amber) Notes общается напрямую на телефоне, без реле посередине, просит у него то же самое и проверяет каждое возвращённое подписанное событие, прежде чем его использовать.
Herkos Local Relay: что оно хранит и с кем общается
Herkos Local Relay — это реле Nostr, которое работает на вашем собственном устройстве, для приложений Herkos и любого другого клиента Nostr. За ним не стоит никакой наш сервер, и оно ничего нам не отправляет.
Что оно хранит на устройстве. События, которые в него записывают ваши
приложения, и те, что оно приносит с ваших реле, — в базе данных, зашифрованной
ключом, который хранится в защищённом хранилище операционной системы. Рядом с
ней: сопряжённые вами приложения и то, что разрешено каждому из них; его
настройки (settings.json: порт, квота, очистка, включён ли журнал сеанса); и
настройки копий (backups.json: как часто, папка, открытый ключ, для которого
шифруются копии, и его соль, когда была сделана последняя). Ничто из этого не
является секретом, а пароль копий никогда не сохраняется. В Windows и Linux,
пока реле работает, relay.json в папке приложения сообщает, какой порт оно
слушает, чтобы приложения Herkos могли его найти. Удаление приложения стирает
базу данных, и её ключ становится бесполезным.
Кто может подключиться. Оно слушает только 127.0.0.1 (порт 4873, если вы
его не измените): ничто за пределами устройства не может до него достучаться.
Любое приложение на устройстве может обратиться по этому адресу, поэтому
приложение или веб-страница должны быть сопряжены — одобрены вами на экране, —
прежде чем смогут что-либо записывать, а несопряжённая веб-страница получает
отказ. Отзыв приложения сразу же его отключает. Частные события (черновики,
частные списки, напоминания, получаемые вами запечатанные конверты) выдаются
только тому, кто докажет по NIP-42, что владеет ключом, которому они
принадлежат. Локальная сеть и Tor пока недоступны; когда они появятся, они
будут выключены, пока вы их не включите, и потребуют TLS или onion-сервиса,
аутентификации и списка разрешённых ключей.
| Кто | Что они видят | Когда |
|---|---|---|
| Ваши реле (из вашего списка NIP-65) | Ваш IP-адрес; ваш открытый ключ, когда реле требует аутентификации NIP-42; публичные события, которые вы публикуете через Herkos Local Relay; и, для синхронизации, о каких из ваших событий оно спрашивает. | Когда вы публикуете и когда оно синхронизируется (с negentropy, NIP-77, если реле это поддерживает). |
| Входящие реле того, кому вы пишете (его список NIP-17, kind 10050, а если его нет — реле для чтения из его списка NIP-65) | Ваш IP-адрес и запечатанный конверт (NIP-59), адресованный этому человеку и отправленный после случайной задержки. На ваши собственные реле он никогда не отправляется. | Когда приложение отправляет через него личное сообщение или приглашение. |
Чтобы узнать, где кто-то получает сообщения, оно спрашивает ваши реле. Ваши частные события (черновики, частные списки, напоминания) никогда не покидают устройство. Оно никогда не объявляет собственный адрес (его нет ни в чьём списке NIP-65), его документ NIP-11 не говорит, кто вы, и нет ни аналитики, ни телеметрии, ни отчётов о сбоях. В Android оно работает как служба с уведомлением и его кнопкой Остановить; оно засыпает после 10 минут без подключений, и приложение Herkos будит его на самом устройстве, без push-сервера.
Журнал сеанса по умолчанию выключен. Если вы его включите, он хранится только в памяти, последние 500 строк, и стирается, когда реле останавливается: подключения, аутентификация NIP-42, принятые или отклонённые события и запрошенные kinds — по kind и началу идентификатора, никогда их содержимое.
Копии. Зашифрованная копия всего хранилища записывается только туда, куда вы выберете: в папку на устройстве или на внешнем диске. Папка облачного клиента (OneDrive, Google Drive, Dropbox, iCloud, Nextcloud, Herkos Drive…) отклоняется. Копия шифруется вашим собственным паролем (scrypt и XChaCha20-Poly1305); запланированные — для открытого ключа, который даёт этот пароль, поэтому они делаются без него. Хранятся последние семь. Без пароля никто не может открыть копию, в том числе и мы, а если вы его потеряете, копия будет потеряна. Экспорт в JSONL не шифруется: в нём ваши частные события в открытом виде, и приложение предупреждает об этом, прежде чем его записать.
Очистка удаляет только события других людей: никогда ваши, конверты для вас или kinds, которые защищают ваши приложения; по квоте — только после копии за последний день. И, как везде в Nostr, удаление — это просьба: то, что уже попало на другие реле, может там остаться.
Наши сайты и Cloudflare
herkos.app (включая herkos.app/e/), app.herkos.app (веб-версия Mail),
calendar.herkos.app и notes.herkos.app (веб-версии Calendar и Notes, когда
они будут опубликованы) и
fdroid.herkos.app (наш репозиторий F-Droid) — это статические файлы, которые
обслуживает Cloudflare (Cloudflare Pages и R2). Как и любой веб-хостинг,
Cloudflare получает ваш IP-адрес, user agent вашего браузера, запрашиваемый
адрес (без части после #) и время и может хранить их в своих журналах согласно
своей политике конфиденциальности.
Мы не устанавливаем cookie и не используем аналитику; страницы и собственные файлы веб-приложений загружаются только с этих доменов (затем веб-приложения подключаются к реле и серверам, описанным выше), и мы не просматриваем журналы по отдельным посетителям. Загрузки из Releases идут с GitHub, который видит данные того же рода согласно своей собственной политике.
Публично по замыслу
Nostr — публичная сеть. Следующее видно любому, кто обратится к используемым вами реле, и связано с вашим открытым ключом:
- ваш профиль (имя, изображение) и списки реле и серверов Blossom;
- события меток NIP-32, которые Herkos Mail публикует, когда вы помечаете письмо прочитанным, отмечаете звёздочкой, архивируете или перемещаете в папку — включая название собственных папок. Поэтому тот, кто отправил вам письмо и знает его идентификатор, может узнать, когда вы его прочли. Мы планируем их шифровать; до тех пор имейте это в виду;
- в Herkos Calendar — только то, что вы делаете публичным (см. выше);
- в Herkos Notes — никакого содержимого, только описанная выше картина: сколько у вас заметок и когда вы их редактируете;
- через Herkos Local Relay — только публичные события, которые публикуют ваши приложения, как и с любым реле.
Ваш выбор и ваши права
- Всё вышеперечисленное под вашим контролем в Настройки → Сеть и серверы (реле, реле личных сообщений, серверы Blossom, мосты) и Настройки → Уведомления; в Herkos Calendar реле, список занятости и каждую ссылку для общего доступа (Поделиться ссылкой → Отозвать ссылку) вы меняете сами; в Herkos Notes — реле (в его настройках или в вашем собственном списке личных реле).
- В Herkos Local Relay сопряжённые приложения и то, что разрешено каждому из них, порт, квота, очистка, журнал сеанса и копии находятся на его собственных экранах.
- Выход из Herkos Notes удаляет заметки на этом устройстве, но сначала приложение отправляет то, что есть только на нём, и сообщает, сколько заметок вы бы потеряли; заметки на реле остаются и возвращаются, когда вы снова входите.
- Вы можете экспортировать свой ключ, удалить аккаунт (это также просит реле стереть ваши данные, NIP-62) или сбросить приложение в любой момент.
- Поскольку мы не храним персональных данных, мы не можем сами отвечать на запросы о доступе, исправлении или удалении; направляйте их оператору соответствующего реле, моста, push-сервера или веб-хостинга. Мы поможем определить, кто это.
- Herkos не предназначен для детей младше 16 лет.
Изменения
Мы изменим этот документ, когда изменится поведение приложения, и запишем дату
сверху. Источником истины является PRIVACY.md в репозитории; опубликованная
страница — его копия.
Контакт: privacy@herkos.email · https://herkos.app
Другие языки
English · Español · Bahasa Indonesia · Català · Čeština · Deutsch · Français · Italiano · Magyar · Nederlands · Polski · Português (Portugal) · Português (Brasil) · Română · Slovenčina · Suomi · Svenska · Türkçe · 中文 · Ελληνικά · हिन्दी · 日本語 · 한국어 · Русский · Українська