Text2Store
下载

帮助

可校验导出

一份可发现任何改动的对话副本。任何人都能确认它没有被改动,而不必听信我们的一面之词。

简要说明

可校验导出是一个可以交给任何人的 .zip。其中每个文件都有指纹,并由一家独立机构为整个包加上时间戳,所以任何人都能证明它在您创建之后没有被改动。这是关于文件的声明,而不是关于信息的声明:它表明没有任何东西被改动,而不说明对话意味着什么,也不说明应该如何看待它。

什么是可校验导出

可校验导出(也称为认证导出)把一个对话或整个存档打包成一个 .zip,用于需要让您以外的人信任一份记录的场合。与截图相比,它的意义在于可发现任何改动,并且可以独立核验。收到它的人可以用标准工具确认这个包没有被改动,并且在某个特定时间以原样存在。这其中的任何一步,您都不需要信任 Text2Store。

它包含在 Text2Store 的购买中。要创建一份,请打开一个对话,选择导出,然后选择可校验导出(.zip)…。

从认证备份导出会进一步增强这一点:导出的证明会追溯到备份创建的时候,而不只是导出的时候。这部分内容请参阅认证备份页面。

包里有什么

解压 .zip 会得到一小组一目了然的文件:

  • transcript.pdf:可阅读、可打印的信息记录。
  • conversation.json:以数据形式保存的相同信息,包括 PDF 无法呈现的内容。
  • attachments/:对话中的每张照片、每段视频和每个文件,保持原始字节。
  • certificate.pdf:一份可阅读的封面,写明设备、对话、日期范围、数量以及如何核验。
  • manifest.json:核心所在,其他每个文件的 SHA-256 指纹。
  • VERIFY.txt:列出用浅显英语说明的命令,方便您自己检查一切。
  • DECLARATION.txt:一份可供个人签署的填写式声明(见下文)。
  • manifest.json.tsr:可信时间戳,在您联网时加入。
  • tsa/cacert.pem:时间戳机构的证书,仅凭这个包就能核验时间。
  • source/backup-timestamp.tsr:只有从认证备份导出时才会出现,即备份本身创建时的时间戳,沿用下来,使导出的证明追溯到备份创建的时候。

它能证明什么

  • 完整性。每个文件都连同其 SHA-256 指纹列在 manifest.json 中。重新计算任何文件的指纹,即可确认它与导出时逐字节相同。哪怕改动一张照片的一个像素,核验都会失败。
  • 来自您备份的出处。每个附件还记录了它在来源设备备份中的指纹,把导出的文件与那份特定的备份联系起来,而不是与手动输入的内容联系起来。如果有任何附件不再吻合,导出就会拒绝构建。
  • 时间。联网时,整个包会由一家独立的时间戳机构按照 RFC 3161 标准加上时间戳(与代码签名时间戳的机制相同)。这证明包在某个特定时刻以原样存在,从而回应“你上周改过这个”的质疑。

为什么改动无法蒙混过关

“可发现任何改动”是一个精确的说法,下面说明它为什么成立。它不是说文件无法编辑。任何文件都可以编辑。它是说任何编辑都会被发现。想让改动骗过校验工具的人,会接连撞上三道墙:

  • 指纹无法伪造。每个文件的 SHA-256 指纹是根据其确切字节计算出的 64 个字符的值。在任何地方改动一个字节,指纹就会完全改变。目前不存在已知方法能改动文件同时保持其 SHA-256 不变,所以被改动的文件不可能再与记录的指纹吻合。这是第一道墙。
  • 列表本身也有指纹。下一步显而易见的做法,是修改 manifest.json 中的指纹,使之与改动后的文件吻合。这同样会失败:清单带有一个针对其自身列表的内容根指纹,而可信时间戳是针对整个清单的。修改列表会同时破坏两者。这是第二道墙。
  • 时间戳需要一把没有人拥有的密钥。最后一步是重建清单,并为改写后的版本获取一个新的可信时间戳。这需要时间戳机构的签名私钥,而它由一家独立的第三方(DigiCert)持有。没有它,您、Text2Store 或攻击者都无法生成有效的时间戳。正因如此,只有在存在有效的可信时间戳时,Text2Store 的校验才会报告已通过校验:时间戳是锚点,它让其下的一切都无法被改写后再重新封存。没有可信时间戳的包会被报告为未通过校验,而不是已通过校验,正是因为缺少这个锚点。这是第三道墙。
  • 您无需信任我们。所有这些检查都使用开放标准(SHA-256、RFC 3161),并且可以用 Mac 和 Windows 自带的标准工具重现。安全性不依赖于相信 Text2Store 的说法,甚至不依赖于 Text2Store 应用本身。

如实的边界值得说清楚:它让改动可被发现,而不是让改动无法发生。任何人仍然可以修改或删除这个文件。他们做不到的是,改动之后仍然通过核验。如果一个包通过了核验,它就是当初导出的那个。如果它被动过,核验会如实显示。

它不能证明什么(请务必阅读)

如实说明局限,本身就是让其余部分值得信任的一部分。可校验导出不能证明:

  • 信息的内容是真实的,或手机在备份前没有被操纵。它证明的是包自导出以来没有改变,而不是在那之前发生了什么。
  • 它会被如何接受。Text2Store 从不声称可校验导出会被任何特定接收方或程序接受,也从不称其“可在法庭上采纳”或“已认证”。一份记录有多大分量,始终由接收方决定;软件只能让记录变得可以核验。
  • 完整无缺。可校验导出只能包含存档时手机上仍有的内容。在您采集之前就被删除的信息根本不在其中。如果相关信息保留到了采集时,记录会标注在设备上被删除、编辑或撤回的信息。
  • 每条信息确切的发送时间(绝对意义上)。可信时间戳证明的是导出文件存在的时间,而不是信息发送的时间。信息的时间来自设备。

用密码保护(可选)

可校验导出是一个普通的 .zip:任何拿到文件的人都能阅读信息。这通常正是您想要的,因为它无需任何软件就能在任何地方打开。但如果文件需要传送,您可以给它上锁。创建导出时勾选用密码保护此 .zip,内容就会用 AES-256 加密。它默认关闭,每次导出单独选择。

加密和可发现改动是两回事。密码让别人无法阅读信息。证明没有任何东西被改动的,是指纹和时间戳,它们在两种情况下的作用完全相同。加密码不会让导出更容易核验,不加也不会让它更难核验。

设置密码保护之前

  • 密码无法找回。您找不回,我们也找不回,因为它从不发送给我们,也不保存在包中。一旦丢失,导出就再也打不开了。
  • 在 Mac 上直接就能打开。在“访达”中双击它,输入密码,所有内容就会解压出来(已在 macOS 26 上测试)。在 Windows 上,您需要 7-Zip:文件资源管理器能显示里面的文件列表,但无法解压(已在 Windows 11 上测试)。Keka 和 The Unarchiver 在 Mac 上也可以使用。
  • 不要使用命令行 unzip。它不支持 AES:对受保护的导出,它会生成一个空文件夹并且不报错就退出,看起来像是成功了。请改用 7z x,或在“访达”中解压。
  • 电子邮件常常会拒收它。许多邮件服务商和公司邮件过滤器会删除或隔离受密码保护的附件,因为它们的扫描程序无法查看其中内容。共享云盘、文件传输链接或 U 盘更可靠。
  • 请单独发送密码。把密码和文件放在同一封邮件里,等于什么都没保护。

里面的一切都会被加密,包括 VERIFY.txt,所以受保护的导出在没有密码时什么也不会泄露。它无法隐藏一件事:zip 从不加密其文件名列表,所以任何人都能看出这个包里有一份记录、一份清单和一些附件。这些名称都是通用的,不会透露您在和谁交谈或说了什么。

要在 Text2Store 中核验受保护的导出,像平常一样选中它即可;应用会发现它已上锁并要求输入密码。要手动核验,请先用上述工具之一解压,然后按照下文的常规步骤操作。

如何核验,而无需信任我们

有两种方法,它们检查的是相同的指纹和相同的时间戳。

在应用中:选择文件,然后选择校验导出文件…,再选中 .zip。Text2Store 会重新检查每个指纹和时间戳,并报告已通过校验、已被改动或未通过校验。“已通过校验”表示文件吻合,而且可信时间戳证明包未被改动。“已被改动”表示有内容不再吻合。“未通过校验”表示文件内部一致,但包没有可信时间戳,所以无法单凭自身证明未被改动(请将其清单指纹与您信任的副本进行比较)。它无需联网,也无需安装任何东西,在 Mac 和 Windows 上的效果相同。为保持独立,它使用自己固定保存的时间戳机构证书副本,而不是包里的那份。

手动核验:随附的 VERIFY.txt 列出了确切的命令。在 macOS 和 Linux 上使用 shasum;在 Windows 上使用 PowerShell 中的 Get-FileHash。若还要确认可信时间,请使用 openssl。VERIFY.txt 本身有一条如实的提示:macOS 自带的 LibreSSL 无法核验此时间戳的证书链,所以请安装完整的 OpenSSL(Homebrew)或使用应用内的校验工具;在 Windows 上,Git for Windows 附带的 OpenSSL 可以使用。VERIFY.txt 还会显示时间戳机构证书的 SHA-256,方便您在依赖所证明的时间之前,将其与 DigiCert 在 cacerts.digicert.com 公布的根证书进行比对。

技术细节

写给想要核对机制而不是相信摘要的读者:以下所有内容都使用公开标准(SHA-256、RFC 3161、CMS),并且可以用标准工具重现。没有任何专有或保密的内容。这种开放正是关键:一个您可以独立确认的说法,比一个只能凭信任接受的说法更有价值。

指纹与清单

包中的每个文件都按其确切字节计算 SHA-256 哈希。manifest.json 列出每个文件的路径及其 SHA-256:

{
  "format": "text2store/verified-export",
  "artifacts": [
    { "path": "transcript.pdf", "sha256": "9f2c..." },
    { "path": "conversation.json", "sha256": "4a1e..." },
    { "path": "attachments/0001.jpg", "sha256": "b7d0...",
      "source_backup_sha256": "b7d0..." }
  ],
  "content_root_sha256": "e3b1..."
}

content_root_sha256 是整个列表的一个指纹,所以列表本身也可发现任何改动。计算方法是为每个文件生成一行 path:sha256,对这些行排序,用换行符连接,然后对结果计算 SHA-256。任何人都能根据清单重新计算并确认是否吻合。

把附件与设备备份联系起来

每个附件还记录了 source_backup_sha256,即该文件在来源 iPhone 或 iPad 备份中的指纹。导出是对照那份备份自身的校验和基准构建的,如果有任何附件不再吻合,就会拒绝构建,因此导出的照片与那份特定的设备备份联系在一起,而不是与手动放进去的东西联系在一起。

哪些文件不在指纹列表中

只有两个文件出于结构原因没有作为文件条目列出:manifest.json 无法包含它自己的指纹,而 manifest.json.tsr(时间戳)是根据清单的指纹生成的,所以在清单封存之后才出现。其他所有内容,包括可阅读的 certificate.pdf、VERIFY.txt、DECLARATION.txt 以及机构的 tsa/cacert.pem,都像其他文件一样被计算哈希并记入清单。校验工具会重新计算清单本身的 SHA-256,并把它视为包的指纹。

可信时间戳

manifest.json.tsr 是一个 RFC 3161 时间戳令牌,一个 CMS SignedData 结构,其 messageImprint 是 manifest.json 的 SHA-256。要接受它,校验工具需确认令牌的签名有效,签名者证书可追溯到 DigiCert 的根证书(令牌内嵌完整的签名链,从终端证书经中间证书到根证书),在所证明的时间处于有效期内,带有关键的 id-kp-timeStamping 扩展密钥用途(如 RFC 3161 所要求),并且印记与此清单的 SHA-256 相同。Text2Store 的应用内校验工具完全用代码完成这一切,无需联网,并且固定使用自己的 DigiCert 根证书副本,而不是信任包中的 cacert.pem,所以被替换的证书骗不了它。VERIFY.txt 会显示该证书的 SHA-256,方便您与 DigiCert 在 cacerts.digicert.com 公布的根证书比对。

亲自精确地检查

对任意文件计算哈希,并与清单中它的 sha256 比较:

# macOS / Linux
shasum -a 256 transcript.pdf

# Windows (PowerShell)
Get-FileHash transcript.pdf -Algorithm SHA256

核验可信时间戳覆盖的正是这份清单,并可追溯到时间戳机构:

openssl ts -verify -data manifest.json -in manifest.json.tsr -CAfile tsa/cacert.pem

包中的 VERIFY.txt 详细写出了这些命令,包括如何重新计算内容根,复制粘贴即可。

什么才算通过

只有在以下各项全部成立时,校验工具才应报告已通过校验:列出的每个文件都存在且与其指纹吻合,内容根重新计算后一致,没有多余或重复的文件,并且有一个可信时间戳针对 manifest.json 核验通过。没有可信时间戳的包为未通过校验,内部一致但没有独立的锚点,因为清单没有那个外部签名就无法证明自身的完整性。任何不吻合、多余文件或无法核验的时间戳,都意味着已被改动。

签署的声明

有些程序要求在记录之外附上一份人的证明:由一个人书面说明记录是如何制作的。软件做不出这样的声明,只有人能做。所以包中包含 DECLARATION.txt:一份简单的填写式模板,可由某个人(您,或记录保管人)修改,并填入其计算出的清单指纹来完成。

它只是一份模板,仅此而已。它不构成法律建议,如果您是在为正式程序准备材料,请先请律师审阅。

时间与时区

在可阅读的 PDF 中,信息时间以导出电脑的本地时间显示,并明确标出 UTC 偏移(例如 2026-06-30 21:14 -08:00),时区写在页首,所以与您在手机上看到的一致,也不会产生歧义。机器可读的数据(conversation.json)和可信时间戳一律使用 UTC,所以专业人士始终可以还原确切的时间。

如实说明的局限

可校验导出的完整程度取决于它背后的备份。Text2Store 只能包含您存档时手机上仍有的内容。最好的习惯很简单:定期备份,这样在您真正需要之前,对话早已被妥善采集。iOS 会让已删除的信息在几周内仍可恢复,所以最近的备份往往能捕获比您预想更多的内容。更多信息请参阅常见问题。

不构成法律建议

本页以及可校验导出中的材料均为一般性信息,不构成法律建议,使用 Text2Store 也不会建立任何专业关系。如果您打算在法律事务中使用导出,这是您与您所在司法管辖区的合格律师之间的事;本页内容均不是关于是否或如何这样做的建议。

要导入审查平台吗?

可校验导出证明记录未被改动。如果您需要把对话交给电子取证审查团队,让他们导入自己的平台,那就需要 RSMF 导出(Relativity Short Message Format)。两者分工不同,您可以两份都提供:用可校验导出来证明,用 RSMF 文件来导入。

用于电子取证审查的 RSMF、导出为 PDF,以及备份中的 WhatsApp 聊天。

有问题吗?

请发邮件至 hello@text2store.com,我们会帮助您。