在您按下“加密并发送”之后,您的文字和文件会经历什么,以及谁能阅读它们。
分步说明
- 您的浏览器生成一把新密钥。 一把随机密钥在您的设备上生成,仅用于此次提交。
- 所有内容都用它锁定。 您的文字、您关于发布的选择、您提供的联系方式(如有),以及每个文件及其文件名,在离开您的浏览器之前都会在浏览器中加密。
- 这把密钥再为编辑部锁定。 随后,这把密钥本身会用编辑部的公钥锁定。公钥只能锁定。打开需要与之配对的私钥,而私钥只由编辑部持有。
- 我们的服务器存储它无法读取的内容。 服务器先确认表单是由真人而非垃圾信息机器人发送的,然后将锁定的文字存入数据库,将锁定的文件存入没有公开地址的私有存储。服务器没有任何能打开它们的密钥。
- 您会获得一个回执码(是否保存由您决定)。 服务器生成一个随机码,只向您显示一次。服务器只保留该码的指纹,足以识别它,但无法再次显示它。保存此码是可选的:凭此码,您之后可以为同一份提交材料补充内容。提交材料一经发送,便不能撤回或修改。
谁能阅读
只有本网站的编辑部,他们持有能打开提交材料的私钥。这把密钥从不存放在我们的服务器上:编辑只在阅读提交材料时才将其载入自己的浏览器,锁定或关闭页面后即被清除。
其他任何人都无法阅读您发送的内容:我们的托管服务商不能;监视您网络连接的任何人不能;入侵我们服务器或其数据库的人也不能。
我们的服务器能看到什么
加密隐藏的是您所写的内容,而不是有内容被发送这一事实。服务器能看到:
- 您的提交材料以及之后补充的任何内容何时到达;
- 您选择的类型:您的经历、案件或证据;
- 您发送了多少个文件,每个文件以及加密文字的大小(大致反映其长度);
- 您的回执码的指纹。
服务器不存储您的 IP 地址,请求日志功能已关闭。
这里的“匿名”是什么意思
- 您无需注册账户,也不必提供姓名。
- 唯一的联系方式栏是选填的,并与其他所有内容一起加密。
- 我们不存储您的 IP 地址。不过,我们的托管服务商(同时负责反垃圾信息验证)在您连接时仍能看到它;我们的服务器也会短暂使用它,以限制同一连接的发送频率。
发布之前
- 您发送的任何内容都不会自动发布。编辑部会先阅读和核查。
- 只有在您允许的情况下,您的陈述才会发布,且显示的姓名信息绝不会超出您的选择。已发布的陈述会显示收到的月份。
- 幸存者、其家人以及匿名来源的身份,会在发布前从陈述中删除,并在文件中涂黑。文件中关于虐待或掩盖行为的内容不会被涂黑:这正是本记录档案存在的意义。
- 每个发布的文件都会清除隐藏数据:不含作者、设备、位置、软件或编辑历史。照片会根据其像素重新保存。PDF 会根据每一页的图像重新生成,因此隐藏文字和早期版本都无法保留。
- 编辑部的内部笔记,例如来源和联系方式,绝不会公开。
技术细节
- 加密运算在您的浏览器中通过 libsodium 进行。
- 每次提交都会生成一把随机的 256 位密钥。文字和文件各自的子密钥通过 crypto_kdf(BLAKE2b)从中派生,因此两者从不共用同一把密钥。
- 文字:XChaCha20-Poly1305(IETF AEAD),使用随机的 192 位 nonce。加密消息包含表单字段、同意选项、选填的联系方式和文件列表(文件名、类型、大小)。
- 文件:crypto_secretstream_xchacha20poly1305,以经过认证的 64 KiB 分块加密;最后的标签可以检测截断。
- 密钥封装:提交密钥通过 crypto_box_seal(X25519 搭配一次性密钥对,XSalsa20-Poly1305)分别封装给每个编辑的公钥。编辑部的公钥内置于本页面。
- 之后凭回执码补充的任何内容,都会以同样方式用一把新密钥加密。
- 回执码:由服务器生成的 26 个字符(130 个随机位);只存储其 SHA-256 哈希值。
- 存储:一个数据库存放加密文字,一个私有文件存储存放加密文件,两者都只保存密文。频率限制以连接 IP 为键,在托管方的频率限制器内部执行,且不予存储;反垃圾信息令牌的验证不会发送您的 IP。
- 脚本完整性:表单加载的每个脚本文件都在导入映射(import map)中以 SHA-384 哈希值固定,因此支持导入映射完整性校验的浏览器会拒绝被篡改的文件。内容安全策略(Content Security Policy)只允许来自本网站和反垃圾信息验证服务的脚本。这可以防范脚本文件被替换,但无法防范有人接管网站并修改页面本身,因此我们公开了这些哈希值: 表单脚本哈希值.