新 iPhone 相机如何记录照片真实性?开发者视角的猜想和尝试
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
最近 Apple 推出了 Apple Reference Image(以下简称 ARI),试图解决一个越来越重要的问题:
一张照片,如何证明它确实来自真实的拍摄过程,而不是经过 AI 或其他工具修改的结果?
过去半年我也一直在做类似的事情。我开发了一款相机应用 TAPCam,希望为照片增加一层关于「真实性」的证明。两者的目标相似,但我认为,讨论这类技术时最好先把「真实性」拆成三个不同的问题:
- 照片文件有没有被修改过?
- 拍摄和处理照片的流程是否可信?
- 镜头前的物体本身是不是真的?
数字签名和安全硬件主要解决前两个问题,第三个问题则要复杂得多。
ARI 做了什么
由于我目前还没有拿到 iPhone 18 Pro 和相关 API,下面关于 ARI 工作方式的内容,是我结合公开信息和开发经验做出的推测,并不代表 Apple 已经公开确认的完整实现。
按照目前能够了解到的信息,ARI 可能会在拍摄时对传感器产生的数据进行签名,再由 Private Cloud Compute(以下简称 PCC)处理这些带签名的数据,生成一张 Reference Image。Apple 将它比作一种「数字底片」:在保存最终图片的同时,也是证明这张照片原始数据确实来自设备传感器的证明,从采集、处理到保存的过程,都没有经过篡改。
这里的关键技术是数字签名。
数字签名的作用,可以类比 HTTPS 或数字证书。它把一份数据和一个特定的签署者绑定起来。验证者可以检查两件事:
- 这份数据是否确实由指定的设备或系统签署
- 数据在签署之后有没有被修改
如果相机能够保护从传感器采集数据、生成图片,到保存文件的完整流程,那么用户就可以确认:这张照片确实经过了一个受保护的拍摄过程。C2PA 等标准也在解决类似的问题,它们的具体机制不同,但都在试图为数字内容建立一套可以验证的来源和修改记录。
不过,这里仍然存在一个容易被忽略的漏洞。
实拍不等于真实
假设你准备购买一枚限量版纪念徽章。卖家发来一张照片,并且这张照片也经过了上面的 ARI 认证,你可以确认照片确实由一部支持 ARI 的设备拍摄,照片文件也没有在过程中被篡改。
但你仍然无法确认,镜头前是不是一枚真的徽章。
卖家可以把一张徽章图片显示在高分辨率屏幕上,再用手机拍摄;也可以将图片打印出来,重新拍摄,甚至连这张徽章的图片最开始就可能是 AI 生成的。在这些情况下,照片确实被真实地拍摄过,拍摄流程也可能完全符合要求,但镜头前的对象并不是一枚真实徽章,而是一张屏幕或一张纸。
这说明数字签名和安全的采集流程,只能证明这张照片确实经过了某个可信的相机系统,它无法单独证明相机拍到的东西,在现实世界中确实能以照片所描述的形态存在。
这也是我认为「照片真实性」问题最核心的难题。
用深度数据加一道验证
后来我想到,或许可以通过深度数据进一步判断镜头前的东西到底是什么:如果镜头前是一枚真实的徽章,它应该具备厚度、边缘和一定的立体结构。相反,屏幕或打印图片大体上是平面的。
因此,我们可以把普通图像和深度信息结合起来,检查它们是否符合一个真实三维物体的结构。如果拍摄的是屏幕或纸张,深度数据很可能会暴露出它们的平面特征。比如摄像头前是真的狗狗时:

而二维屏幕上的狗狗则会呈现成这样:

当然,深度数据并不是万能的。
首先它受到硬件能力的限制,拍摄较远的物体时,设备可能无法获得有效的深度信息;其次,一枚徽章本身可能非常薄,表面的细微起伏也未必能够被准确捕捉。
造假者还可以制作一枚实体的仿制品,再用相机拍摄。这样一来,深度数据也无法证明物体是真的。但至少,相比直接生成一张图片,制作一个能够通过图像和深度检测的实体伪造物,成本和难度都会更高。
因此深度信息并不能提供绝对的真实性,只能把造假的门槛提高一层。
目前 Apple 还没有明确说明 ARI 是否会把深度数据纳入认证。如果未来能够把图像、深度和设备采集流程结合起来,我会很期待看到它最终的效果。
云端处理数据的必要
我开发的 TAPCam 尝试保护图像和深度数据来源,但实现方式相比 ARI 有所不同。
TAPCam 使用 Apple 的 App Attest API,由设备的安全硬件生成并保护一份凭证,再用它对图像和深度数据进行签名。由于凭证受到 Secure Enclave 的保护,应用无法简单地把它导出,然后在其他环境中随意使用。在验证照片时,服务器会检查 Secure Enclave 的签名是否有效。此外其他数据处理都在用户的浏览器中完成,尽量减少用户数据被上传和集中处理的需要。
按照我目前对 ARI 的理解,它可能也会将原始照片和元数据发送到 PCC,由云端完成后续处理。ARI 也可能需要上传照片本身。不过从技术上看,如果只是为了生成摘要值,理论上也可以考虑直接在安全硬件中计算 Hash,再对 Hash 进行签名,而不必上传完整图片。
至于这是否与 ARI 目前无法在中国大陆和欧盟使用有关,目前我也只停留在猜测阶段。
越狱可能也无法破坏认证
任何依赖应用层接口的安全方案,都需要面对越狱或 root 设备的问题。
App Attest 的凭证虽然受到 Secure Enclave 保护,但应用仍然需要通过系统接口调用它。如果设备已经被 root,攻击者可能在用户态调用相关接口,让设备为攻击者构造的数据生成有效签名。
这意味着即便签名本身有效,也不一定代表签名对应的内容,就是用户真正想要认证的内容。而如果 ARI 能够建立一条从传感器硬件直接通往 PCC 的独立通道,那么即使设备处于 root 状态,攻击者也未必能够修改这条通道中的数据。
从这个角度看,比起单纯依赖应用层 API 的方案,ARI 可能更不依赖「设备没有被 root」这种前提。当然,这仍取决于苹果实际采用了什么样的系统设计,由于目前没有足够的底层实现信息,我只能把它视为一种可能性。
按照目前公开的信息,ARI 依赖 iPhone 18 Pro 系列的新主摄,在此之前,如果你有类似的图像数据真实性验证需求,也可以试试我开发的 TAPCam——它不依赖新的硬件传感器,面向 iOS 18.6 及以上的 iPhone,并且可根据不同设备实际提供的深度能力开放相应功能。
相关代码和设计已经开源,应用免费提供,也没有内购。正式版本目前已经提交审核。
我为什么想做这件事
我曾经尝试用这些真实拍摄的照片做一个图片社区,也和一些朋友、投资人讨论过这个想法。但聊下来发现,大多数人都不认为它具备明确的商业价值。唯一一次获得资金支持,是在一个很小型的黑客松上拿到了 75 美元奖金。
所以看到苹果也开始做类似的事情时,我感到开心,同时也有一点遗憾:如果 TAPCam 能够更早一点完成并通过审核,也许会更好。
不过最初让我开始做这件事的原因也不复杂。我只是想过这样一个场景:很多年以后,也许我已经六七十岁了,重新翻出一张年轻时的照片,看到自己和朋友坐在一起吃火锅、喝啤酒……我希望那时的自己仍然能够认出那个晚上:我们坐在哪里,桌上放着什么,谁手里拿着杯子,谁笑得眼睛都看不见了。原来我们当时是这个样子的,原来那天我们笑成了这样。
我希望一张照片保存下来的,不只是一组像素,而是我们曾经共同经历过的、无比鲜活的时刻。这也是我认为图像真实性值得被认真对待的原因。证明一张作品确实来自创作者,应该是一种基础能力,而不应该只属于拥有昂贵设备和复杂服务的人。
感谢我的家人的支持让我能够脱产完成这个项目。以及在实现的过程中得到了很多朋友的帮助,也建立了一些奇妙的缘分。以及感谢帮我调整文章的嘉玲同学。最后希望你能喜欢这个项目。
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.