Herkos 隐私政策
最后更新:2026 年 11 月 11 日。规范网址:https://herkos.app/privacy
翻译说明。 这是出于便利提供的译文。如有出入,以英文版为准。
Herkos Mail、Herkos Calendar、Herkos Notes、Herkos Drive 和 Herkos Local Relay 是面向 Nostr 网络的自由开源应用,由 Herkos 项目(“我们”)发布。Herkos Calendar、Herkos Notes、Herkos Drive 和 Herkos Local Relay 仍在开发中。本文说明这些应用和我们的网站处理哪些数据、这些数据流向何处,以及谁能看到它们。我们希望它被认真阅读,而不是一扫而过:如果其中有任何内容让你感到意外,请写信到 privacy@herkos.email 告诉我们。
数据保护基本信息
第一层,用几行说明;本文其余部分是第二层。
- 控制者 — 对于应用保存在你设备上的内容以及发送给中继和服务器的内容:是你,以及你使用的每个中继和服务器的运营者。Herkos 不会收到其中任何内容。对于我们的网站以及你写给我们的内容:是 Herkos 项目,privacy@herkos.email。
- 处理目的 — 应用:保存、发送和接收你的邮件、日程、笔记和文件。我们的网站:提供页面,并在你来信时回复你。
- 法律依据 — 应用在我们这边不处理任何数据。我们的网站:我们在提供网站并保障其安全方面的正当利益;我们对你的回复:你的请求。
- 接收方 — 每个应用使用的中继、Blossom 服务器、桥接服务和其他服务,下文逐一列出,并说明各自能看到什么;我们的网站则是 Cloudflare。部分默认服务器位于欧盟以外(见下文 Herkos Drive)。我们不向任何人出售任何东西。
- 你的权利 — 访问、更正、删除、反对、限制处理和可携带。你设备上的内容,你可以在应用中查看、更改和删除;中继或服务器上的内容,请向其运营者提出。你也可以向你所在地的数据保护机构投诉(在西班牙为 AEPD)。
- 更多信息 — 见下文:哪些内容留在你的设备上,哪些内容离开设备以及去向,按应用逐一说明,以及你的选择。
简要版本
- Herkos 没有账户系统、没有自己的服务器,也没有任何分析统计。我们收不到你的 邮件、日程、笔记、联系人、密钥或使用情况。
- 你的 Nostr 公钥就是你在网络上的身份。你在 Nostr 上发布的一切(个人资料、 中继列表、标签)都与它绑定,并对你使用的中继可见。
- Nostr 用户之间的邮件是端到端加密的(NIP-17)。发往或来自传统电子邮件地址 的邮件会经过桥接服务(bridge),桥接服务可以读取其内容。
- 部分可选功能会向第三方发送数据(推送通知、定时发送)。在你主动开启之前它们 都是关闭的,本文逐一列出了它们。
- 日历日程在你的设备上加密。中继能看到你有日程、它们的大致大小以及何时发生变化, 但看不到其内容。公开日程、忙碌列表和分享链接都是由你选择、逐一公开的。为了查找受邀者 在哪里接收,Calendar 只询问你的中继,从不询问第三方索引。
- 笔记在你的设备上加密,只有你自己的密钥能解开。中继无法读取它们,但能看到你有多少条 笔记,以及你何时编辑每一条。搜索在你的设备上进行:你搜索的词语永远不会离开设备。 你分享的笔记只会密封后发给你选择的账户:中继既看不到是谁发送的,也看不到它的内容。
- Herkos Drive 中的文件在发送到 Blossom 服务器之前,会在你的设备上逐块加密;文件名和文件夹以加密形式发送到中继。
中继和服务器能看到你有多少个文件和文件夹、它们的大致大小以及何时发生变化,但看不到它们叫什么、里面有什么。
分享链接在
#之后带有它自己的密钥:请像对待密码一样保管它。 - Herkos Local Relay 把你的事件保存在你的设备上,并且加密,不向 Herkos 发送任何内容。除非你开启本地网络,
它只在设备本身上监听(
127.0.0.1);开启后也只对你列表中的密钥开放。它只与你的中继以及 你写信对象的收件箱中继通信;私密事件永远不会离开设备。它的副本只会存到你选择的文件夹,绝不存到云端。开启 Tor 时(Windows 和 Linux),也可以通过 Tor 网络访问它,同样只限你列表中的密钥。 - 我们的网站(
herkos.app及其子域名)由 Cloudflare 提供服务,它和任何网站托管商一样 能看到你的 IP 地址。这些网站不设置 Cookie,也不做任何分析统计。
留在你设备上的数据
- 你的私钥(nsec),在你用它登录时,会保存在操作系统的安全存储中(Android Keystore、iOS/macOS 钥匙串、Windows 凭据管理器、Linux 上的 libsecret、网页版 的加密本地存储)。如果你使用远程签名器(NIP-46 “bunker”)登录,密钥根本不会 到达设备。
浏览器里没有这样的安全存储。 密钥保存在站点的本地存储中,每次签名都会经过 JavaScript,因此能访问所有页面的扩展、XSS 漏洞或被篡改的部署都可能读到它;而且与已安装的应用不同,网页每次访问都会下发新的代码。使用网页版时,请使用远程签名器,或使用一个丢了也无所谓的身份。
- 你的邮箱:解密后的邮件、附件、标签、文件夹和联系人会缓存在本地数据库中,
以便应用离线可用。除操作系统提供的保护外,该数据库本身并未加密;应用锁
(PIN 或生物识别)是便利性的屏障,而非静态加密。在 Android 上,本应用已排除在
云备份和设备间备份之外。
- 应用锁的 PIN:以加盐并经过拉伸的哈希形式存储(PBKDF2),绝不以明文保存。
Herkos Calendar 和 Herkos Notes 各有自己的 PIN,以同样的方式存储。
- 你的日历(Herkos Calendar):你能读取的日程、列表、查看密钥和提醒会缓存在设备上,
并用保存在操作系统安全存储中的密钥逐条记录加密。在浏览器中,日历只保存在内存里,
每次都重新从中继获取。提醒由设备自己响起:Calendar 不使用任何推送服务器。如果你选择
在提醒中隐藏标题,提醒只会显示“日程”和开始时间。你的 Calendar 密钥与 Herkos Mail 的
分开保存(见 Calendar 一节中的“你的账户”)。
- 你的笔记(Herkos Notes):笔记、笔记的历史、笔记本和搜索索引会缓存在设备上,并用保存在操作系统安全存储中的密钥逐条记录加密。
在浏览器中,它们以同样的方式保存在浏览器为本网站提供的存储(IndexedDB)里,但密钥也在浏览器中:在别人也会使用的电脑上,这种保护作用有限。
如果浏览器不为本网站保存任何数据(隐私窗口,或网站数据被阻止),它们只保存在内存里,没有网络连接时无法写入。
你锁定的笔记会有自己的密码;没有这个密码,任何人都无法打开那条笔记,包括我们。
你的笔记备份是一个文件,只写入你保存它的位置,并用专属密码加密。
自动备份除非你关闭,否则每天生成一次,是设备上一个文件夹(你的“文档”中的 Herkos Notes/backups)里的文件,用你账户的密钥加密;保留最近七份,不会发送到任何地方(浏览器中没有自动备份)。
其他账户与你分享的笔记会在“收到的笔记”中等待,保存在设备上,与其他内容一样加密,直到你保存或丢弃它们。
- 你的文件(Herkos Drive):你的文件和文件夹列表及其密钥会缓存在设备上,并用保存在操作系统安全存储中的密钥逐条记录加密;尚待发送的内容和等待上传的数据块也同样加密保存。
缩略图只保存在内存中。你下载或打开的文件会像任何文件一样,以明文写入你选择的位置。
你的 Drive 备份(
.hbk,或带有专属密码的索引备份)是一个文件,只写入你保存它的位置。 在 Android 上,系统的文件选择器和“共享”只在 Drive 解锁期间显示 Drive 的文件,其他应用从那里获得的内容是即时解密的,从不写入磁盘。 - 你的中继(Herkos Local Relay):它的事件、已配对的应用、它的设置以及它的副本存放在哪里;见下文它自己的一节。
你可以在设置 → 更多 → 重置应用中清除全部内容,或者通过移除某个账户来清除。
离开你设备的数据,以及去向
此表针对 Herkos Mail。Herkos Calendar、Herkos Notes、Herkos Drive 和 Herkos Local Relay 在下文各有单独的一节。
| 接收方 | 他们能看到什么 | 何时 |
|---|---|---|
| Nostr 中继(默认列表见设置 → 网络,可编辑) | 你的 IP 地址、公钥、你发布的事件(个人资料、中继列表、Blossom 服务器列表、NIP-32 标签、加密的设置),以及发给你的加密“gift wrap”及其时间。中继无法读取 gift wrap 的内容。 要求 NIP-42 认证的中继,即使你只是在读取,也会知道你的公钥。 | 应用同步期间始终如此。 在 Android 上,当后台检查代替推送服务器时,应用关闭时也会大约每 15 分钟询问一次。 |
| Blossom 服务器(可编辑) | 你的 IP 地址和公钥,以及大于 32 KB 的邮件及其附件的加密数据块。解密数据块的密钥只在加密邮件内部传递。 | 当你发送或打开大邮件时。 |
桥接服务(默认为 uid.ovh,可编辑) |
你发送到传统地址(Gmail、Outlook 等)或从中收到的任何邮件的完整内容,以及你注册的别名 name@bridge。桥接服务是独立运营者,有各自的隐私条款;Herkos 不运营它们。 |
当你使用 @bridge 身份或写信到非 Nostr 地址时。 |
| NIP-05 服务器(你输入的地址所属域名) | 有人询问过 name@domain 是否为 Nostr 用户。 |
当你添加 user@domain 收件人时。 |
推送服务器(默认无;可在 设置 → 通知 中选择 api.nmail.li,它只提醒到达中继 relay.nmail.li 的邮件,因此与该中继一起提供,两者都由上游 Nostr Mail 项目运营;也可以选择其他服务器) |
你的公钥、设备推送令牌(UnifiedPush 端点)、通知语言,以及——因为它代你监视中继——你何时收到邮件(而非邮件内容)。 | 仅当你选择了推送服务器并为某个账户开启通知时;没有服务器时,Herkos 会自己检查你的中继。关闭通知会请求服务器删除订阅。 更换服务器时,也会请求旧服务器删除订阅。 |
定时 DVM(由第三方运营的 Nostr 服务,参见 NostrConfig.schedulerDvm) |
你的公钥、待发布的已加密邮件、其目标中继和计划时间。 | 仅当你使用“稍后发送”时。 |
远程签名器 / NIP-46 中继(relay.nsec.app 及备用) |
你的公钥和加密的签名请求。 | 仅当你使用 bunker 或签名应用登录时。 |
| 图片服务器(个人资料或邮件所指向的任何服务器) | 你的 IP 地址以及获取图片的时间。头像仅在你开启加载头像时,才会从其所有者在个人资料中填写的地址下载(你自己账户的头像始终会加载),此时运营该服务器的人可以知道你何时查看了对方的消息或联系人信息。邮件中的图片默认被拦截;一旦你加载它们(加载图片,或始终加载图片设置),它们的服务器(通常是发件人的服务器)就会知道你打开了该邮件以及打开的时间。你通过地址添加的背景图片会从该服务器下载。 | 头像:仅当你开启时(你自己的始终加载)。邮件图片:仅当你加载它们时。 |
你的私人中继。 如果你的账户有私人中继列表(kind 10013,NIP-37;Herkos Notes 和 Calendar 用的是同一份),Mail 会把你的草稿、加密的设置、标签和定时发送保存在该列表的中继上,而不是你的写入中继上;之前留在写入中继上的内容,它仍会读取,也会在那里一并删除。没有这个列表时,这些内容会发到你的写入中继。Mail 只会在你要求时(设置 → 托管 → 私人中继)发布该列表,并用你的密钥加密:中继能看到你的公钥、列表存在以及它何时变更,看不到其中有哪些中继。其他应用写的列表会原样使用,绝不覆盖。
自动转发(设置 → 自动转发,在你开启前一直关闭)。每封新邮件的副本会发到你选定的一个地址:发往 Nostr 账户时,像所有邮件一样端到端加密;发往传统邮箱地址时,经由你账户主地址的桥接服务,桥接服务能看到完整内容(见上文 桥接服务)。转发由这台设备在 Mail 运行时或下次同步时完成;该设置只保存在设备上,从不发布。
你 Android 手机上的签名应用(NIP-55,例如 Amber)。密钥留在该应用里,Mail 直接在手机上与它通信,中间没有中继或网络;设备只保存你的公钥以及由哪个应用签名。Mail 只请它签署 Mail 用你的账户签署的那些 kind,以及加密和解密(NIP-44),从不请它签署使用一次性密钥的邮件信封,并会在使用前检查每个返回的已签名事件。
Herkos Local Relay。 如果同一台设备上有 Herkos Local Relay,Mail 会提出一次连接;在你点 连接 并在 Herkos Local Relay 中批准 Mail 之前,不会发送任何内容。Mail 用自己的密钥与它配对,并在每次连接时确认是同一个中继。它会用你的密钥签名一次,让中继把你的事件当作你自己的来保存;随后把这台设备保存的邮件复制过去,此后 Mail 发送的你账户的每个事件和收到的每个信封,都会按签名时的原样、保持加密地复制过去,并请中继把它们保存在设备上,私人的只交给你的密钥。你发给别人的信封不会复制。Mail 从不从中读取:它只是一份副本。为此不会有任何内容离开设备。
Herkos 本身不会收到上述任何内容。没有崩溃报告,也没有遥测。
Herkos Calendar:中继能看到什么
Calendar 与 Nostr 中继通信:你账户的中继(你的 NIP-65 列表和收件箱列表)、设置 → 中继 中的中继(可编辑),以及在你邀请某人或回复邀请时,对方的收件箱中继。 除了你自己查询的内容(见下文),不与其他任何地方通信:也不与公开的中继索引通信。 下文的“你的账户”说明了每一类中继的用途。 没有 Herkos 服务器,没有推送服务器,也没有遥测。 每个中继都能看到你的 IP 地址和每次连接的时间。
| 内容 | 存储它的中继能看到什么 | 它们看不到什么 |
|---|---|---|
| 私密日程(kind 32678) | 你的公钥、它是一个日历日程(其 kind)、一个随机标识符、你创建或最后修改它的时间,以及它的大致大小。它只存储在你的中继上,受邀者会到那里查找;从不存储在他们的中继上。 | 标题、日期和时间、时区、重复规则、地点、描述、受邀者、提醒。 |
你的日历列表(kind 32123)和提醒设置(kind 30078,d=calendar-alarms) |
你的公钥、它们存在,以及它们何时变化。 | 它们包含哪些日程、它们的名称、查看密钥、你的提醒。 |
| 邀请(一个 gift wrap,kind 1059) | 受邀者的公钥,以及一个表明信封里装的是日历邀请的 k=1052 标签(日历应用——包括 Formstr 的——正是靠它在不打开你邮件的情况下找到邀请)。它只发送到受邀者自己的收件箱中继,使用一次性密钥,带有各自随机化的时间戳;同一日程的各份邀请以随机顺序发出,每一份都比前一份晚 5 到 90 秒(第一份晚于日程本身)。信封还带有一个过期日期,在发送后 60 到 90 天之间随机选定,以便中继可以丢弃它:它不透露该日程的时间。 |
谁发送的、是哪个日程,以及还邀请了哪些人。 |
对邀请的私密回复(礼物包装,kind 1059,标签 k=1925) |
接收者(组织者,或你自己副本中的你)的公钥,以及信封里装的是日历回复。它只发送到接收者的收件箱中继,使用一次性密钥、随机日期和过期日期,与邀请相同。 | 谁回复、回复哪个日程、回复了什么。 |
| 删除(kind 5) | 你的公钥和你所删除内容的标识符。 | — |
要求 NIP-42 认证的中继会知道你的公钥;Calendar 只在涉及你自己中继上你自己的日程,以及读取你 自己的收件箱时,才响应此类请求。在 Nostr 上删除只是一个请求:中继可能保留其副本,仍为加密 状态。
日程里的任何内容都无法隐藏的是:每份邀请都从你的 IP 地址发出,而每位受邀者都从他们自己的 IP 地址到你的中继获取该日程。同时存放你多位受邀者收件箱的中继,可以看出他们的邀请来自同一个 地址。只有 Tor 或 VPN 能隐藏这一点。
你的账户
Calendar 不创建账户:你用已有的 Nostr 身份登录,方式有以下几种。
- 使用你 Android 手机上的签名应用(NIP-55,例如 Amber):密钥留在该应用中,Calendar 在手机上直接与它通信,中间没有中继,也不经过网络。 设备只保存你的公钥以及由哪个应用签名。 Calendar 向它请求的内容与向 bunker 请求的相同(见下文),从不请求邀请信封,并会在使用之前检查每个返回的已签名事件。
- 使用你的密钥(
nsec,或受密码保护的ncryptsec,在设备上打开):它保存在操作系统的安全存储中,使用 Calendar 自己的名称。 Herkos Mail 单独保存它的账户,Calendar 从不读取、修改或删除它们:退出其中一个应用的登录,不会让你退出另一个。 - 使用
bunker://链接:密钥留在你的签名应用中。 Calendar 通过链接中指定的中继与它通信,只向它请求你的公钥、加密和解密(NIP-44),以及为 Calendar 自己那几种 kind 的事件签名;邀请信封从不经过它,因为它们使用一次性密钥。 设备只保存这个连接(为它生成的密钥、签名器的公钥及其中继)。 这些中继能看到你的 IP 地址、连接的密钥以及何时请求签名;请求本身是加密的。 - 使用 Nostr Connect(二维码):与 bunker 相同,但连接经由 设置 → 中继 中的中继。 Calendar 不添加任何自己的或他人的中继。
你的中继。 登录时,Calendar 会在 设置 → 中继 中的中继上查找你的列表(NIP-65,kind 10002,以及你的收件箱列表,kind 10050),使用一个不表明你身份的单独连接:要求认证的中继得到的是一次性密钥,而不是你的密钥。 此后:
- 你的日程、列表和加密的设置会发布到你的 NIP-65 写入中继;没有该列表时,发布到设置中的中继,账户页面会告诉你这一点;
- 你的邀请和回复从你的读取中继和收件箱中继读取。Calendar 只在你自己的中继上、只为属于你的内容响应 NIP-42 认证;
- 在已登录状态下打开应用,在需要之前不会连接任何地方;
- 如果 设置 → 中继 中有一个在本设备上运行的中继(地址为
ws://127.0.0.1或ws://localhost,例如 Citrine 应用),每次同步还会在它上面留下一份你自己的日程、列表和删除的副本,与签名时完全一致,并且仍然加密。 为此没有任何内容离开设备;只要另一个中继上有某个事件,这个中继就绝不会是告诉你的受邀者去查找的中继。 设备上读取该中继的其他应用,能看到任何中继都能看到的内容。
受邀者的中继(2026 年 10 月 21 日决定)。要邀请某人,应用需要知道对方在哪里接收。
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 服务器,没有推送服务器,也没有遥测。 每个中继都能看到你的 IP 地址和每次连接的时间。
使用哪些中继。 如果你的账户有私密中继列表(kind 10013,即 NIP-37 所描述的列表),Notes 会按原样使用其中的中继,且从不覆盖它;它会在其设置中的中继以及你发布内容的中继(你的 NIP-65 列表)上查找这个列表。
否则,它使用其设置中的中继:默认为 relay.formstr.app、nos.lol 和 relay.primal.net,最多八个,全部可编辑。设置中还提供一份已知中继列表,点按一下即可添加;除非你添加,否则不会连接其中任何一个。
只有当中继位于本设备或家庭网络中(localhost、私有地址、.local 名称)时,它才可以使用 ws://,即不加密的连接:笔记仍以加密形式传输,但该网络上的任何人都能看到中继所能看到的内容(见下表)。
Notes 不发布自己的中继列表,除非你要求(中继 → 保存为我的私密中继列表)。
此时,它会把这些中继作为你的 10013 发布,用你的密钥加密,发布到它查找列表的同一批中继上,并随你在 Notes 中所做的更改保持更新:中继能看到你的公钥、这个列表存在以及它何时变化,但看不到其中的中继。
其他应用写入的列表从不会被覆盖:Notes 按原样使用它。
如果这些中继中有一个运行在此设备上(地址为 ws://127.0.0.1 或 ws://localhost,例如 Citrine 应用),Notes 也会在那里留下你的笔记、笔记本和删除请求的副本,保持签名时的原样,并且仍然是加密的。为此没有任何东西离开设备;Notes 从不从该中继读取,只有它保存的笔记不算已上传。设备上读取该中继的其他应用看到的,与任何中继看到的相同。
Herkos Local Relay。 如果同一设备上有 Herkos Local Relay,Notes 会提议连接一次;在你点按连接并在 Herkos Local Relay 中批准 Notes 之前,不会发送任何内容。Notes 用一把专为这次配对生成的自有密钥与它配对,并在每次连接时确认是同一个中继,因此在其端口上监听的其他程序收不到任何内容。此后,Notes 会把你的笔记、检查点、笔记本、删除记录、私有中继列表以及你分享的笔记的封印复制到那里,保持签名时的原样并仍然加密,并请它把删除记录以外的全部内容作为私有保存:中继只把这些交给你的密钥,不会转交给任何人。为了让中继把它们当作你的内容保存,Notes 在连接时用你的密钥签名一次。为此,没有任何内容离开设备。Notes 从不从中读取:它只是一份副本,只存在于那里的笔记不算已上传。如果它不再响应,Notes 会继续使用你的其他中继,稍后只把缺少的部分发给它。你可以在 Notes 的设置中断开它,或在 Herkos Local Relay 中撤销 Notes 的权限。
| 内容 | 存储它的中继能看到什么 | 它们看不到什么 |
|---|---|---|
| 笔记(kind 31234,NIP-37) | 你的公钥;一个随机标识符(d),由随机数生成,绝不取自标题;标签 k=30023,每条笔记都相同,因此不透露你写了什么;你最后修改它的时间;以及它的大致大小。 |
标题、正文、标签、笔记本、是否置顶、是否收藏或是否在回收站中,以及你创建它的时间。 |
| 检查点(kind 1234),即笔记的历史 | 你的公钥、它属于哪条笔记(其标签 a 指向笔记的标识符),以及它的创建时间。 |
笔记当时的内容。 |
| 你的笔记本(kind 30078) | 你的公钥、该列表存在,以及它何时变化。它的标识符由你的公钥派生,因此在你所有设备上都相同。 | 你的笔记本的名称、有多少个,以及每个笔记本里有哪些笔记。 |
| 删除(kind 5) | 你的公钥和你所删除内容的标识符:笔记及其检查点。 | — |
| 你分享的笔记(kind 1059,一个 NIP-59 gift wrap) | 它的接收账户的公钥(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 会向你的中继请求发给你的密钥、带有 k=30023 的 gift wrap,并在设备上打开它们。
丢弃一份只会把它从设备上移除: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 Drive:中继和服务器能看到什么
Drive 把你文件的内容保存在 Blossom 服务器上,把你的文件和文件夹列表(索引)保存在 Nostr 中继上,两者都在你的设备上加密。 没有 Herkos 服务器,没有推送服务器,也没有遥测。 每个中继和服务器都能看到你的 IP 地址以及每次连接的时间。 默认情况下,索引发送到五个中继,文件发送到五个 Blossom 服务器,其中没有一个由 Herkos 运营;可以在设置 → 文件托管中更换服务器,也可以在那里添加你自己的服务器。 据我们所知,各服务器的运营者和所在地如下(2026 年 11 月 5 日核实):
| 服务器 | 用途 | 运营者(按其自述) | 所在地(按其 IP 地址) |
|---|---|---|---|
nos.lol |
索引 | 未说明 | 德国(Hetzner) |
relay.primal.net |
索引 | Primal | 未知:位于 Cloudflare 之后 |
relay.nmail.li |
索引 | Nmail,即上游 Nostr Mail 项目 | 法国(OVH) |
relay.nostr.net |
索引 | nostr.net(aljaz@nostr.si) | 未知:位于 Cloudflare 之后 |
nostr.oxtr.dev |
索引 | 0xtr(oxtrr@protonmail.com) | 德国(Hetzner) |
nostr.download |
文件 | 未说明 | 爱尔兰(Apex Strata) |
blossom.ditto.pub |
文件 | Ditto | 美国(DigitalOcean) |
blossom.nmail.li |
文件 | Nmail,即上游 Nostr Mail 项目 | 法国(OVH) |
blossom.yakihonne.com |
文件 | YakiHonne | 新加坡(Vultr) |
blossom.jumble.social |
文件 | Jumble | 未知:位于 Cloudflare 之后 |
国家是根据服务器的 IP 地址判断的,可能有误;位于 Cloudflare 之后的服务器不会显示其所在地。真正重要的是每个运营者声明把数据保存在哪里,而大多数运营者并未说明。 每个运营者都是独立的,有各自的条款;Herkos 与其中任何一方都没有协议。 五个文件服务器中至少有两个位于欧盟以外:它们保存的内容已在你的设备上加密,它们无法读取,但你的 IP 地址和每次上传的时间会到达它们那里。
两把密钥。 你的账户只签署一样东西:定位器,这是一个为你自己的密钥加密的事件,让你的设备能找到你的 Drive。 其余一切都由一把卷密钥签署,它是为你的 Drive 随机生成的,并非从你的账户派生,因此索引不会表明它属于谁。 Drive 在每台设备上只读取一次定位器,而不是每次启动都读取,这样中继就看不到你的账户和你的卷被一起请求。 你与之共享文件夹的人也会得到卷密钥;你可以随时更换它(设置 → 卷密钥):你的其他设备会自动跟进,用旧密钥签署的内容将不再被接受。
| 内容 | 存储它的中继能看到什么 | 它们看不到什么 |
|---|---|---|
| 定位器(kind 31152) | 你的公钥、一个随机标识符,以及它的写入时间。 | 其中的内容:卷密钥和你的索引所在位置,已为你的密钥加密。 |
| 文件或文件夹(kind 31150),每个一个事件 | 卷密钥;一个随机标识符,由随机数生成,从不由名称生成;它所在文件夹的标识符;它最后一次更改的时间;以及它的大小,取整到 2 的幂。 | 它的名称、类型、大小、日期、密钥、版本,以及哪些服务器保存着它的数据块。 |
| 链接(kind 31151) | 签署者:文件夹为卷密钥,文件为专为该链接生成的密钥;一个随机标识符;它的到期日期(如有,NIP-40);它的大小,经过取整。 | 它能打开什么。 |
| 删除(kind 5) | 你删除的内容的标识符。 | — |
| 与账户共享(kind 1059,NIP-59 gift wrap) | 目标账户的公钥(p);标签 k=31151;随机回溯最多两天的日期;60 到 90 天后的到期时间。它由专门为此生成、只用一次的密钥签署。 |
谁发送的、何时发送的,以及它能打开什么。 |
无法隐藏的内容。 每个事件都会说明它在哪个文件夹中,因此中继可以统计你有多少个文件和文件夹,看到目录树的形状(哪个文件夹里有多少项)以及每一项何时发生变化。 它无法知道其中任何一项叫什么或包含什么。
Blossom 服务器收到的是你文件的数据块,每一块都用其所属修订版本自己的密钥加密,并填充到 64 KiB 的整数倍,因此它们能看到每个文件的大致大小,但看不到它是什么或叫什么。 每次上传都会签名:在你自己的服务器上,用卷密钥签名;在其他任何服务器上,用专为该服务器和该文件生成的密钥签名,这把密钥不指向任何人,在两个服务器上也绝不相同。 删除文件时会请求其服务器删除对应的数据块;与中继一样,服务器可能会保留副本。
链接(herkos.app/f/…)。 指向文件或文件夹的链接在 # 之后带有打开它的密钥:链接就是密钥。
# 之后的部分永远不会到达我们的服务器或 Cloudflare,页面读取它之后会立即将其从地址栏中移除。
但在此之前,浏览器可能已经把完整地址保存到了历史记录中,而会同步历史记录的浏览器也会把它保存在其提供商的服务器上。我们这边无法阻止这一点。
对于任何敏感内容,请给链接设置密码(这样没有密码链接就打不开任何东西,密码另行传递),或者改为与对方的账户共享,这样根本不需要链接。
页面会读取链接中的中继和服务器;对于它不认识的,只有在你同意之后才会连接,因为对方会看到你的 IP 地址。
链接可以设置到期:到期当天它将无法再打开,文件夹会获得新密钥,因此之后添加的内容无法用旧密钥打开。已经打开过的人会保留他们下载的内容。
要更早切断访问,请移除链接:文件夹会立即获得新密钥。
与账户共享。 Drive 会在你的中继和 Drive 的中继上查找该账户在哪里读取(它的 NIP-17 中继,kind 10050,或其 NIP-65 列表中的读取中继),一次只查一个人,从不在公开索引中查找。 每个人都会得到自己专属的链接,因此移除一个人不会影响其他人,也没有人能知道还有谁收到了它。
要求 NIP-42 认证的中继会知道卷密钥,但永远不会知道你的账户:Drive 用卷密钥响应它。 如果你使用 Android 手机上的签名应用(NIP-55,如 Amber)登录,Drive 只请求它签署定位器、作废旧定位器的请求以及你与账户共享内容的密封,并为你自己的密钥进行加密和解密。
Herkos Local Relay:它保存什么,与谁通信
Herkos Local Relay 是一个运行在你自己设备上的 Nostr 中继,供 Herkos 应用和任何其他 Nostr 客户端使用。 它背后没有我们的任何服务器,它也不向我们发送任何内容。
简而言之(详细内容见下文):
- 谁处理你的数据:你自己。Herkos 不从这个中继接收任何东西:没有事件、没有密钥、没有 IP 地址、没有统计数据。没有账户,也没有我们的服务器。
- 它保存什么:在你的设备上加密保存你的应用写入的内容、它从你的中继取回的内容、已配对的应用以及它的设置。
- 它与谁通信:你的中继,以及你写信对象的收件箱中继。不与其他任何人通信。如果你开启 Tor,也与 Tor 网络通信。
- 保存多久:直到你删除它、卸载应用,或你选择的规则把它清理掉。清理默认关闭,并且绝不删除你自己的事件。
- 备份:只存到你选择的位置,绝不存到云端,并用只有你知道的密码加密。
- 你的权利:你可以在应用中查看、更改和删除一切。你已经发布到其他中继的内容由各个中继自行保存:请联系其运营者。
- 年龄:它不面向 16 岁以下的儿童。
它在设备上保存什么。 你的应用写入它的事件,以及它从你的中继取回的事件,保存在一个数据库中,该数据库用保存在操作系统安全存储中的密钥加密。
与之并存的有:你配对的应用以及每个应用可以做什么;它的设置(settings.json:端口、配额、清理、会话日志是否开启、是否允许未配对的应用接入、本地网络是否开启及其端口);如果你开启本地网络,还有允许的密钥列表及你为它们起的名称,以及中继的证书及其密钥,都保存在加密数据库中;以及备份的设置(backups.json:多久一次、文件夹、备份加密所针对的公钥及其盐值、上一份备份的生成时间)。
这些都不是机密,备份的密码也从不保存。
在 Windows 和 Linux 上,它运行期间,应用文件夹中的 relay.json 会说明它在哪个端口监听,以便 Herkos 应用找到它。
卸载应用会删除该数据库,数据库的密钥也随之失去作用。
谁可以连接。 它在 127.0.0.1 上监听(除非你更改,否则端口为 4873):只要本地网络保持关闭(默认如此),设备之外的任何东西都无法访问它。
设备上的任何应用都能访问这个地址,因此应用或网页必须先经过配对、由你在屏幕上批准,才能写入;未配对的网页会被拒绝。
撤销某个应用会立即断开它的连接。
私密事件(草稿、私密列表、提醒、你收到的密封信封)只交给能通过 NIP-42 证明自己持有其所属密钥的一方。
本地网络如果由你开启,会向你网络中的设备打开第二个端口(除非你更改,否则为 4874):只支持 wss://,使用中继自己的证书,并且只对你列表中的密钥开放,它们须先通过 NIP-42 认证。
列表中的密钥可以读取你的公开事件和发给它的私密事件,只能写入它自己签名的事件;把它从列表中移除就会断开它的连接。
同一网络中的任何人都能看到该设备开着这个端口,以及有多少流量经过它,但看不到内容是什么。
如果你开启 Tor(Windows 和 Linux;Android 以后推出),relay 会成为 Tor 的 onion 服务,拥有一个不会改变的 .onion 地址。应用会启动这台电脑上的 tor 程序(或随应用附带的 tor),由它连接 Tor 网络。该地址的密钥保存在加密数据库中,只交给本设备上的这个 tor;tor 自己的文件夹里只有它的网络目录副本和 cookie,从不包含该密钥。Tor 是否开启保存在 settings.json 中。通过 Tor 时,规则与局域网相同:只有你列表中的密钥,并且要先通过 NIP-42 认证。连接到你地址的人看不到你的 IP 地址,你也看不到他们的。仅有地址打不开任何东西;如果地址已经传开,新地址可以更换它。Herkos 不会收到任何东西。
| 对象 | 他们能看到什么 | 何时 |
|---|---|---|
| 你的中继(你的 NIP-65 列表中的中继) | 你的 IP 地址;当中继要求 NIP-42 认证时,你的公钥;你通过它发布的公开事件;以及为了同步,它询问的是你的哪些事件。 | 你发布时,以及它同步时(如果中继支持,使用 negentropy,NIP-77)。 |
| 你写信对象的收件箱中继(对方的 NIP-17 列表,kind 10050,否则是其 NIP-65 列表中的读取中继) | 你的 IP 地址,以及发给对方的密封信封(NIP-59),在随机等待之后发出。它从不发送到你自己的中继。 | 当某个应用通过它发送私密消息或邀请时。 |
| 你列表中的密钥,在本地网络上(仅当你开启它时) | 你的设备在网络中的 IP 地址;你的公开事件和发给该密钥的私密事件。 | 在它们保持连接期间。 |
| Tor 网络(仅在你开启时) | 这台设备在使用 Tor(第一个 Tor 中继能看到你的 IP 地址),但看不到经过的内容;Tor 目录保存加密的服务描述,只有知道地址的人才能读取。 | Tor 开启期间。 |
| 你列表中的密钥,通过 Tor(仅在你开启时) | 你的公开事件以及发给该密钥的私密事件;看不到你的 IP 地址。 | 连接期间。 |
为了查找某人在哪里接收,它会询问你的中继。你的私密事件(草稿、私密列表、提醒)永远不会离开设备。 它从不公布自己的地址(它不在任何人的 NIP-65 列表中),它的 NIP-11 文档不会透露你是谁,也没有分析统计、遥测或崩溃报告。 在 Android 上,它作为一项服务运行,带有一条通知及其停止按钮;10 分钟没有连接后它会休眠,Herkos 应用会在设备本身上唤醒它,不需要任何推送服务器。
会话日志默认关闭。如果你开启它,它只保存在内存中,只保留最近 500 行,并在中继停止时清除:内容包括连接、NIP-42 认证、被接受或被拒绝的事件以及所请求的 kind,按 kind 和其 id 的开头记录,绝不记录其内容。
备份。 整个存储的加密备份只写入你选择的位置:设备上或外部磁盘上的文件夹。 云客户端的文件夹(OneDrive、Google Drive、Dropbox、iCloud、Nextcloud、Herkos Drive 等)会被拒绝。 备份用你自己的密码加密(scrypt 和 XChaCha20-Poly1305);定时备份则针对该密码所生成的公钥加密,因此无需密码即可生成。 保留最近七份。 没有密码,任何人都无法打开备份,包括我们;如果你丢失了密码,备份也就丢失了。 JSONL 导出不加密:它以明文包含你的私密事件,应用在写入之前会告诉你这一点。
清理默认关闭:不开启时,只要还有空间,中继就会保留其他人的事件。 你可以按时间(30、90、180 或 365 天)或按空间(256 MB 到 5 GB)清理,应用会先显示将删除多少内容。 它只删除其他人的事件:绝不删除你的事件、发给你的信封、你的应用保护的 kind 或删除请求;按空间清理只在有最近一天内的备份之后进行。 本地网络或 Tor 开启时,无法关闭按时间清理:其他人的事件会在 90 天后删除,除非你选择其他期限。 带有过期时间(NIP-40)的事件一旦过期就不再提供,无论是谁写的。 而且与 Nostr 中的任何地方一样,删除只是一个请求:已经发送到其他中继的内容可能会留在那里。
我们的网站与 Cloudflare
herkos.app(包括 herkos.app/e/ 和 herkos.app/f/)、app.herkos.app(Mail 的网页版)、calendar.herkos.app、notes.herkos.app
(Calendar 和 Notes 的网页版,发布后)和 fdroid.herkos.app(我们的 F-Droid 仓库)都是由 Cloudflare
(Cloudflare Pages 和 R2)提供服务的静态文件。与任何网站托管商一样,Cloudflare 会收到你的
IP 地址、浏览器的用户代理、你请求的地址(不含 # 之后的部分)和时间,并可能依据
其自身的隐私政策将其保存在日志中。
我们不设置 Cookie,也不做任何分析统计;页面和网页应用自身的文件只来自这些域名(之后网页应用会 连接上文所述的中继和服务器),我们也不查看按访问者区分的日志。从 Releases 下载的文件来自 GitHub,它依据自己的政策会看到同类数据。
设计上即为公开
Nostr 是一个公开网络。以下内容对任何查询你所用中继的人都是可见的,并与你的公钥 相关联:
- 你的个人资料(名称、头像)以及中继和 Blossom 服务器列表;
- 当你将邮件标为已读、加星标、归档或移入文件夹时,Herkos Mail 发布的 NIP-32 标签事件 ——其中包括自定义文件夹的名称。因此,给你发过邮件并知道其 id 的人可以得知你 是何时读的。我们计划对这些内容加密;在此之前,请知悉这一点;
- 在 Herkos Calendar 中,只有你选择公开的内容(见上文);
- 在 Herkos Notes 中,不含任何内容,只有上文所述的模式:你有多少条笔记,以及你何时编辑它们;
- 在 Herkos Drive 中,不含任何名称或内容,只有上文所述的模式:你有多少个文件和文件夹、目录树的形状,以及每一项何时发生变化;
- 通过 Herkos Local Relay,只有你的应用发布的公开事件,与任何中继一样。
你的选择与权利
- 上述一切都在你的掌控之中,见设置 → 网络与服务器(中继、私信中继、Blossom 服务器、桥接服务)和设置 → 通知;在 Herkos Calendar 中,中继、忙碌列表和每个分享链接 (通过链接分享 → 撤销链接)都由你来更改;在 Herkos Notes 中,中继(在其设置中,或在你自己的 私密中继列表中)由你来更改。
- 在 Herkos Drive 中,服务器(设置 → 文件托管)、卷密钥(设置 → 卷密钥),以及每个链接和与之共享文件或文件夹的每个人(共享),都由你来更改。
- 在 Herkos Local Relay 中,已配对的应用及每个应用可以做什么、端口、配额、清理、会话日志、本地网络、Tor 及密钥列表和副本,都在它自己的 界面中。
- 从 Herkos Notes 退出登录会删除该设备上的笔记,但它会先发送只存在于该设备上的内容,并告诉你将会 丢失多少条笔记;中继上的笔记仍然保留,你再次登录时会重新出现。
- 你可以随时导出密钥、移除账户(这也会请求中继删除你的数据,NIP-62)或重置应用。
- 由于我们不持有任何个人数据,我们无法自行处理访问、更正或删除请求;请向相关中继、 桥接服务、推送服务器或网站托管商的运营者提出。我们会帮助你确定对象。
- 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 · 中文 · Ελληνικά · हिन्दी · 日本語 · 한국어 · Русский · Українська