安全态势
为信任而建,不为表演
我们不是安全公司,但 ConKarma 处理的是这种数据 — 孩子、伴侣、日常仪式 — 这要求对我们如何保护它给出诚实回答。本页是不加修饰的版本。
最后审查:
登录如何工作
我们将你的密码视为我们永远不会以明文看到的秘密,存储规范允许的最强哈希,并轮换刷新令牌,使被盗的 cookie 不能比其来源会话活得更久。
- 密码使用 argon2id(RFC 9106 m=19 MiB 配置)进行哈希。下次登录时旧的 bcrypt 哈希会透明升级 — 没有强制重置。
- 会话使用轮换的刷新令牌族。被盗令牌一旦被回放,整个族失效,合法设备必须重新认证 — 没有沉默妥协。
- 可配置的多次失败后账户锁定。首次正确登录自动清除,所以拼写错误不会把你锁在外面。
- “通过 Apple 登录”和“通过 Google 登录”使用直接的 OpenID Connect——goia_api 会自己连接 Apple 和 Google,链路中没有任何第三方身份验证代理。我们只会收到上游提供方的标识符、你的电子邮箱以及已验证标志——绝不会收到你在提供方处的密码。
登录安全
每次登录都要过第二个因素。每次新设备登录都会向你发出提醒。父母在 18 岁以下的成员的情况下保持知情,其他什么都不会渗出。
- 每次登录都启用双因素认证:邮箱 6 位验证码,受信任设备的 30 天窗口。
- 当账户从新设备访问时实时邮件提醒:设备、大致城市和国家、时间。一键注销该设备并强制重置密码。
- 18 岁以下成员从新设备的登录也会通知其小组中担任父母角色的成员。透明:未成年人可以在设置里看到哪些父母被接通。
- 备份码:首次设置 8 个一次性码,可从设置 → 安全访问,按需重新生成。在邮件访问丢失时的恢复路径。
- 密码存储:argon2id,行业标准的内存硬哈希。受信任设备令牌与会话令牌分开。
- 受限验证:5 次失败码触发 15 分钟锁定。
当事情看起来不对劲
如果登录来自我们过去 30 天内未在你账户上见过的国家/地区,我们会发邮件。邮件含一键“不是我”,撤销该会话并直接带你进入密码重设。
- 未知地点邮件警报(每个国家/地区每 30 天窗口一次 — 出差不会刷屏)。
- 从应用内可按设备撤销的活动会话列表。无需更改密码即可注销丢失的手机。
- 失败登录详情(时间戳和国家/地区代码 — 永不含原始 IP)在应用的安全日志中可见。
仅限真实应用
移动流量被证实来自真实设备上的真实 ConKarma 安装。curl-对-API 的尝试会被柔性拒绝 — 这是诚实的 API 表面应该做的。
- iOS 与 Android 上的 Firebase App Check。每次来自移动端的 API 调用都需要令牌。
- 通过 /.well-known/mobile-pins.json 的签名清单进行的移动端 TLS pinning。新 pin 由离线密钥签名并以六周重叠窗口轮换 — 升级不会把任何人锁在外面。
成人功能不对分析开放
ConKarma 有两个分区:Serene 区(所有家庭友好内容)和 Ember 区(18+ 功能)。Ember 页面有意不发出第三方分析事件。我们仅在服务端为容量与可用性收集聚合 Prometheus 计数器;仅此而已。
- 成人界面(大冒险、欲望、幻想、私密日记、私密金库)永远不加载 Google Analytics。
- 进入应用中的 Ember 界面需要生物识别解锁。切换应用时系统会超时并重新锁定。
- 截图守卫将 Ember 内容从操作系统应用切换器以及任何屏幕录制覆盖层中隐藏。
- 按设备开启成人专区:主设备默认开启,其他设备默认关闭。你需要按设备明确选择加入,服务器端检查在异常时默认拒绝(fail-closed)。
- 闲置重新验证:在 Ember 内闲置 5 分钟,或在后台停留 30 秒后,生物识别锁存会自动释放。两个时长都可以从 设置 → 隐私 中配置。
- 内存缓存清零:当你从 Ember 切回 Serene(或将应用切到后台)时,所有缓存的图片都会从内存中清除——这是针对内存检查工具的深度防御。
- 排除 Spotlight、Apple Intelligence 和 AppIntents:成人内容永远不会被提交给 Spotlight、设备端 LLM、AppIntents、Smart Stack 或锁屏小组件。
- 双人管理员访问机制:XTZ Group 内没有任何人能单方面读取成人专区内容——每次覆盖操作都需要第二位管理员签名批准,并写入不可篡改的审计日志。
- 可配置的 3 年成人数据保留期:成人专区的数据行默认在 3 年后自动删除。该窗口可在 设置 → 隐私 中自行配置(90 天到 10 年)。窗口期满后即彻底删除。
- iCloud 备份与 GDPR 导出控制:设置 → 隐私 中的两个选择加入开关,默认让成人内容既不进入设备备份、也不进入你的数据导出——这样即便备份或导出被意外分享,也不会暴露这些内容。
同意基础设施 + 冲突工具
困难对话和成人区同意都通过结构化、精心策划的表面 —— 永远不是 AI 流水线。数据保持本地或夫妇私密。
- 冲突工具 —— AI 流水线被排除:每个兄弟姐妹、夫妇和跨代修复流程都是策划内容 + 结构化表单。
- 同意基础设施 —— Ember:限制文档、安全词绑定和 aftercare 签到生活在 Ember E2E 原语上。限制文档永远不会到达我们的 AI 流水线。
- 个人隐藏 + cell 级控制:BE 不会删除底层数据。任何永久标志操作都需要双管理员门。
Ember 同意基础设施
成人层级界面不用一个通用的「我同意」复选框来代表同意。Ember 围绕三个承重原语构建——限制文档、安全词和事后关怀签到——它们与成人区域其余部分共享同一个端对端密钥对。全程成熟的框架;代理权,而非家长式管控。
- 限制文档:每位伴侣建立并编辑自己的文档,只能被同一情侣家庭圈中的另一位伴侣查看。永不进入我们的分析管道;永不被任何 AI 读取;永不在加密 blob 之外进行服务器端复制。
- 安全词绑定:一个情侣共享的安全词短语,可立即将每个 Ember 界面恢复到 Serene 并写入情侣私密日志行。激活记录只对双方伴侣可见;XTZ Group 运营人员无法读取。
- 事后关怀签到:Ember 会话后由任一伴侣安排,每位伴侣选择加入,回答保持情侣私密。无参与计数器,无连击,无催促。
- 成熟框架:文案和提示将成年读者视为成年人。我们不用委婉语使界面幼稚化;我们也不依赖冲击感来显得叛逆。
双盲同意匹配
当两位伴侣探索哪些幻想类别有交集时,匹配完全在设备上运行,有两个我们不会打破的结构性不变量:永不揭示否定(如果任一伴侣点击否,双方都看不到这一事实)和零外泄 AI(推断路径中无任何模型)。
- 永不揭示否定不变量:是/是配对出现在共享匹配列表中。任何其他组合(是/否、否/是、否/否)什么都不返回——双方伴侣都看不到谁说了否,也看不到对方是否甚至被展示了提示。这是反施压结构设计,而非可以关闭的设置。
- 零外泄 AI 不变量:匹配计算是本地集合求交。无模型推断,无嵌入查找,无对类别或配对的 AI 评分。类别集本身是精选的编辑内容,而非生成的。
- 情侣私密结果:匹配列表端对端加密到情侣的共享密钥对。服务器端我们只看到计数(容量规划),从不看到类别本身。
- 可审计的不变量:上述两个不变量在无开关和无管理员覆盖的设备端代码路径中强制执行。平台运营商无法为一对情侣选择加入此界面的遥测——根本没有可以选择加入的遥测。
符合下架法案——公开通知渠道
联邦《下架法案》(2025 年)要求托管用户内容的平台在 48 小时内处理针对非自愿亲密图像的下架请求。ConKarma 的公开通知渠道+程序发布在 /legal/takedown-notice;本节是安全立场摘要。
- 渠道:legal@conkarma.app(邮件主题:下架通知/DMCA 通知/紧急——CSAM 报告)。
- 承诺:从收到有效请求到删除或禁止访问,48 小时服务级别协议。
- 覆盖范围:NCII(真实或 AI 生成的深度伪造)、DMCA 版权、CSAM(优先级提升+NCMEC 报告)以及更广泛的违法内容报告。
- 反通知:DMCA 反通知路径通过同一渠道;在没有法庭命令的情况下,法定 10-14 个工作日恢复窗口。
- 审计:每份通知+每次采取的行动均被记录并按法律规定的期限保存。恶意通知可能使发送者承担《法案》、DMCA §512(f)以及我们条款下的民事责任。
按州监管调整
当美国各州或其他司法管辖区通过限制平台可提供服务的法律(年龄验证制度、内容类别限制、记录保存要求)时,我们按地区调整行为,而不是退出市场。诚实的权衡:某州的法律决定了该州用户看到的界面样式,而非我们认为正确的产品设计。
- 地区检测:基于用户声明的国家+(对于美国)他们在设置中配置的州,而非仅依赖 IP 地理定位。如果推断错误,用户可以覆盖。
- 调整内容:年龄验证流程(KOSA 风格的州)、成人内容锁定、州法律规定的保留窗口,以及州要求特定措辞时的披露文案。
- 不调整内容:端对端加密立场、零外泄 AI 不变量、13 岁以下的 COPPA 合规默认,以及永不混合成人内容行的表格不变量。这些在所有司法管辖区均不可谈判。
- 透明度:应用于你账号的地区配置在设置→隐私→地区立场中可见。如果你认为它对你的司法管辖区不正确,请提交下架通知或发邮件至 legal@conkarma.app。
孩子不是增长杠杆
13 岁以下账户在存在之前必须经过可验证的家长同意流程。我们不在儿童账户上展示广告,句号。我们不出售儿童数据、不为广告共享、不用于任何定位。
- 符合 COPPA §312.5 的可验证家长同意(签名信用卡持有人验证路径,并为无信用卡家庭提供替代方案)。
- 13 岁以下账户上不存在任何形式的第三方广告。
- 家长可随时从应用中查看、导出和删除其子女的账户数据。
信任来自 Cell,不来自我们
ConKarma 是封闭圈子的产品。没有公开档案,没有关注图,无法发现陌生人。大多数审核之所以发生,是因为你和 Cell 中的人已经彼此熟识与信任。在模型需要帮助处,我们有举报流程和有人参与的审核队列。
- Cell 默认封闭。无公开发现、无公开档案、无朋友的朋友推荐。
- 每个内容界面都有用户举报流程,路由到由人处理的审核队列。
- 针对已知 CSAM 的基于哈希的扫描被跟踪为已知-待实现项,在我们转向需要它的媒体存储配置时设有明确重新审视触发。我们不会在它真正存在前声明已实现。
我们保留什么、在哪里,以及如何取回
我们在 /privacy 与 /legal/subprocessors 上做了过度记录,但与安全相关的简短版本是:静态加密、存储在 SCC 文书覆盖之处、可按需导出与删除,且不保留超过必要的内容。
- GDPR、CCPA 与 Quebec-25 的导出与删除控件位于应用内 — 而非藏在支持工单后。删除有 30 天软删除宽限窗口,以防你改变主意。
- Postgres 数据库与对象存储上的静态加密(由 Supabase 管理的基础设施)。
- 任何用户可见界面上都不存储原始 IP 地址。活动会话列表只显示 2 字母国家/地区代码;原始 IP 仅在安全事件行中短暂存在以供取证,处于短保留期下。
如果你发现什么,请告诉我们
我们尚未运营付费 bug 赏金 — 这是一个真实缺口,一旦它能赚回所需的运营时间,我们就会推进。在此期间,我们欢迎善意报告,并将在五个工作日内确认。
- 将详情发送至 security@conkarma.app。需要 PGP 密钥可索取。
- 我们承诺在 5 个工作日内确认,并在 30 天内做出实质性回应。
- 协调披露:在公开披露前默认 90 天窗口,可经双方同意延长。
- 我们不会对遵循负责任披露的善意安全研究采取法律行动。