En10-Pvt-Ltd/fingerprint-desk

GitHub: En10-Pvt-Ltd/fingerprint-desk

通过对打印文档嵌入不可见的字间距偏移图案,实现对泄露文档照片的盲解码溯源与统计归因。

Stars: 0 | Forks: 0

# Fingerprint Desk **追踪泄露的文档照片,精确溯源至其原始副本。** 每一份打印副本都包含相同的可见文本,但带有不可见的亚毫米级字间距与行间距偏移图案。即使是用手机拍摄并通过 WhatsApp 发送的泄露页面照片,也可以进行盲解码,从而识别出是哪一份副本发生了泄露,并提供明确的诬告概率。 专为考试试卷设计,也适用于任何分发给特定接收者的机密文档:法律证据开示、董事会文件、出版前手稿、内部备忘录。 ``` Upload a document -> Generate N named copies -> Print and distribute | Which copy leaked? <- Decode <- Someone photographs a page ``` ## 它有何不同 大多数文档水印要么是可见的(因此可以被裁剪),要么仅限于数字形式(因此会被打印破坏),或者仅提供简单的匹配/不匹配结果,而没有错误率。 - **读取普通手机照片。** 无需扫描仪,无需紫外线灯,无需特殊墨水。 - **在真实传输通道中存活。** 经历打印、倾斜拍摄、WhatsApp 重新压缩。 - **提供误报边界,而非猜测。** 归因需要经过 Bonferroni 校正的二项式 p 值小于等于 1e-3、最低符号数量,并且需领先第二名一定的幅度。否则,结果将明确显示“无法归因”,这被视为正确结果,而非失败。 - **可验证的指控。** 真实数据在分发前被锁定在 SHA-256 commitment 中,因此指控可以由第三方进行验证,而不仅仅是基于信任。 - **保留您的文档。** 对于扫描和矢量 PDF,发生行偏移之外的所有内容保持像素一致或字节精确。表格、印章、插图和信头都会保留。 ## 它不能做什么 明确声明,因为夸大其词的取证工具比无用更糟糕。 - **它不能防止泄露。** 它只是追踪并起到威慑作用。 - **重新输入会使其失效。** 任何手动重新输入或通过 AI 转录文档的人都不会携带标记。请参阅 [docs/threat-model.md](docs/threat-model.md)。 - **在差异化处理前的泄露是不可见的。** 如果文档在生成针对性副本之前就发生了泄露,则无从追踪。 - **小片段只是线索,而不是证据。** 单独裁剪出来的问题可以指向某个来源,但无法揪出串通泄密的群体。 ## 验证状态 对于任何不告诉你这张表的水印项目,都要保持怀疑态度。 | 载体类型 | 处理对象 | 是否测试过真实打印 -> 拍照 -> 即时通讯? | |---|---|---| | 渲染型(行偏移 + 字偏移) | 粘贴文本、提取的 PDF 文本 | 是,有限制:在真实拍摄中恢复了 14/15 位数据 | | 保留型(文本 PDF) | 文本 PDF,保持排版 | 尚未,仅限模拟通道 | | 光栅型(扫描 PDF) | 仅图像 PDF | 尚未,仅限模拟通道 | | 矢量型(轮廓文本 PDF) | 作为路径的字形 | 尚未,仅限模拟通道 | **模拟通道永远不会作为最终结果上报。** 目前正在跨多种打印机和手机进行语料库采集活动,以收集真实的打印-拍照-即时通讯照片。测试结果及原始语料库将在此处发布。 ## 快速开始 ``` git clone https://github.com/En10-Pvt-Ltd/fingerprint-desk cd fingerprint-desk cp .env.example .env # set SECRET_KEY (openssl rand -hex 32) and BASE_URL docker compose up -d ``` 打开 http://localhost —— 内置的 Caddy 反向代理将提供应用程序服务,并针对公共 `DOMAIN` 自动处理 HTTPS。(如果不使用 Docker 而是直接运行服务器,`python app/serve.py` 将在 http://localhost:8765 上提供服务。) 不是开发者?请参阅 [docs/for-schools.md](docs/for-schools.md) 获取无需使用命令行的指南。 ## 工作原理 1. **编码。** 文本行被分为三组;中间行的基线在 300 dpi 下偏移约 2 px。交替的内部词间距会加宽或缩窄约 3 px。读者对此均不可见。每一份副本都会获得不同的图案。 2. **Commit。** 在分发任何内容之前,关于真实数据和生成文件的 SHA-256 commitment 就已被锁定,因此在发生泄露后无法更改映射关系。 3. **解码。** 对泄露的图像进行纠偏,分割文本行,测量基线和词间距,并且只读取每次差异的*符号*,这使得解码在不同的拍摄分辨率下与缩放比例无关。不需要原始文档和基准标记。 4. **归因,或者拒绝归因。** 只有当最匹配的副本通过了全部三道关卡时,才会对其进行指控。否则,工具将报告无法归因。 完整的方法和统计保证:[docs/method.md](docs/method.md)。促成本项目启动的简易单载体冒烟测试:[docs/smoke-test.md](docs/smoke-test.md)。 ## 负责任地使用 这是一个生成用于指控个人的证据的取证工具。有三个要求: - **永远不要根据微弱的单一读数进行指控。** 请使用工具提供的分级裁定结果。 - **始终通过同一流水线运行未标记的对照副本。** 如果对照副本产生了归因结果,请停止操作并提交 issue,这是一个 bug,我们会将其视为阻碍发布的严重问题。 - **在法律或基本道德要求的情况下,告知人们他们的文档已被添加指纹。** 可追踪性是一种威慑,只有当人们知晓这一点时,威慑才起作用。 安全问题:请参阅 [SECURITY.md](SECURITY.md)。请不要针对归因逻辑中的漏洞提交公开 issue。 ## 引用 如果您在研究中使用本项目: ``` @software{fingerprint_desk, title = {Fingerprint Desk: Forensic fingerprinting for printed documents}, author = {Niraj Vijay Kasar}, year = {2026}, url = {https://github.com/En10-Pvt-Ltd/fingerprint-desk} } ``` ## 许可证 Apache License 2.0。请参阅 [LICENSE](LICENSE)。 特意选择 Apache 2.0 而非 MIT:它包含明确的专利授权,因此采用者可以免受贡献者(包括维护者)提出的专利索赔。
标签:信息泄露溯源, 密码学, 手动系统调用, 数字水印, 文档取证, 文档追踪, 请求拦截, 逆向工具