删掉EXIF就安全了?一张图里藏着的三层信息,第三层没人删得掉

关键词:EXIF删除,图片元数据,照片定位泄露,图片反查来源,图片信息

摘要:从文件层、像素层、语义层三个维度拆解一张图片到底携带多少可追溯信息,附iPhone、安卓、Windows、exiftool、ImageMagick的具体操作步骤和参数,以及微信、微博、小红书、闲鱼在发送图片时的元数据处理差异。

前年我卖过一台二手的富士X-T4,买家收到货以后发消息问我:你这机器是不是进过水?我当时就懵了。他说他拿我发过去的样片跑了一遍 exiftool,Software 那一栏写的是「Adobe Photoshop 24.1 (Windows)」,GPS 那一栏还留着一个郊区坐标。Photoshop 那条是我调对比度时忘了关,坐标是我去拍荷花那天相机自己记的。

图片

后来我把那张图丢进识图网站,一路翻下去,还真翻到了当年发在某个摄影论坛的原帖。账号我早就注销了,图还在。

从那天起我就明白一件事:大多数人对「图片信息」的理解,停在「把手机定位关掉」这一步。但一张照片身上的信息至少分三层,越往里越难删。删元数据只解决了最外面、也最没意思的那一层。

第一层:文件层,右键属性里能看见的那些

这一层就是大家熟悉的 EXIF。它本质上是一块写在 JPEG 文件头的结构化数据,用 exiftool、Windows 属性面板、Mac 的「显示简介」都能读出来。里面常驻的字段有:

  • Make / Model(机身品牌和型号,比如 X-T4
  • LensModel(镜头型号,能看出你用什么焦段拍的)
  • DateTimeOriginal(精确到秒的拍摄时间)
  • GPSLatitude + GPSLatitudeRef / GPSLongitude + GPSLongitudeRef
  • Software(最后处理这张图的软件及版本)
  • BodySerialNumber(部分厂商会写完整序列号,等于给机身发身份证)
  • 一张内嵌缩略图

关于 GPS 精度,别被电影骗了。手机在开阔地带水平误差大概 5 到 15 米,市中心高楼遮挡下能到 50 米以上。但 15 米够干什么?够定位到你家楼栋的哪一侧、哪一排窗户。

缩略图是个更阴的坑。一张 2400 万像素的图,EXIF 里可能塞着一张 160×120 的小图。你拿修图软件裁掉半边脸重新保存,很多软件只更新主图不更新缩略图。用 exiftool -b -ThumbnailImage 原图.jpg > thumb.jpg 就能把它单独导出来,原图里被裁掉的部分可能还躺在那里。

图片

还有个冷门的:截图。iPhone 截的屏是 PNG,没有 EXIF,但 PNG 允许写 tEXt 块,某些 App 截图、某些录屏工具会往里面塞设备型号和软件版本。拿到图的人 exiftool 一跑,一样能看出你用的什么机器。

第二层:像素层,这才是真正麻烦的地方

元数据删干净了,图片本身还在说话。这一层的信息不在文件头,而在每一个像素的数值里。

传感器灰尘。可换镜头相机用久了,CMOS 前面那层低通滤镜上会积灰。光圈缩到 f/11 以上,同一粒灰会在画面固定位置投下一个模糊的黑斑,f/16 时最明显。你换镜头、换场景、换城市,它都在同一个坐标上。这组位置和形状的组合,就是你的机器指纹之一。想验证很简单:找张 f/16、对着白墙或蓝天的图,把对比度拉满,看有没有几个固定的暗点。

PRNU,光响应非均匀性。每个 CMOS 每个像素对光的响应都有微小差异,这是制造工艺决定的,被称为「传感器指纹」。学术界用它做相机溯源做了十几年,不需要 EXIF,只看像素。普通用户接触不到这套工具,但你得知道它存在。

拍屏幕的摩尔纹。拿手机拍显示器,画面上会出现彩色条纹,条纹间距和屏幕像素密度、拍摄距离、镜头焦距有固定数学关系。理论上能反推你拍的是哪块屏幕、多大的屏。

角膜反光。眼睛是人身上最接近镜面的东西。高分辨率照片里,瞳孔上方那块高光区域,能反推出拍摄时你面前大约 180 度的环境——窗户在哪、对面站着几个人、有没有人在你身后举着手机。这个技术在刑侦里用了几十年,现在随便一个大学生拿 Photoshop 拉一下曲线就能做。

图片

这一层为什么难删?因为它不是附加数据,它就是图像本身。你把图删了,信息才没有。

第三层:语义层,人看一眼就能推理出来的东西

这层最朴素,也最没法防。

影子。晴天户外,物体影子的长度和方向由太阳高度角和方位角决定。知道大概纬度和季节,能从影长反推拍摄时间,误差通常在一两个小时以内。照片里如果有个直立的电线杆或者栏杆,量一下影长和杆高的比例就够了。

插座。中国国标三孔插座是「八」字形,澳大利亚是斜八字,日本是两个扁孔加一个圆孔。一个随手拍进去的墙角插座,能把你定位到国家甚至地区。

文字。路牌、快递单、外卖袋子上的门店名、门禁读卡器的型号、窗外那栋楼的招牌,全是坐标。有人做过实验,只凭一张窗景照片里的建筑轮廓和日照角度,能找到具体是哪栋楼。

还有 AI 生成这条线,方向反过来。2023 年 10 月徕卡 M11-P 是第一台内置 C2PA「内容凭证」的量产相机,之后索尼、尼康陆续跟上。它们在做的事情,是主动往照片里写入可验证的来源信息。所以现在是两个方向同时发生:一边是普通人拼命删 EXIF,一边是相机厂商拼命往里加。

图片

顺便说一句,Google 在 2023 年 8 月发布的 SynthID,是往 AI 生成图里嵌不可见水印。但现实是,绝大多数 AI 图既没有 C2PA 也没有水印,判断还是得靠老办法:看手指数、看文字、看牙齿、看 DCT 系数直方图的异常峰值。

实操:按用途分流的处理方案

先纠正一个流传很广的说法——「发微信就安全了」。微信普通发送确实会压缩并清掉大部分元数据,长边压到大约 1280 像素;但点「原图」发送,EXIF 基本原样保留。这个区别很多人根本没注意过。

微信:普通发送(非原图)→ 压缩 + 剥元数据。原图 → 保留。 微博:上传时默认剥离,但版权字段有时会留。 小红书:重编码,元数据基本清空,画质损失明显。 Instagram:剥离大部分,保留版权信息。 闲鱼/转转:这个要格外注意,卖二手商品拍的照片经常带 GPS,被人顺藤摸瓜找到小区不是段子。

iPhone 上关掉新照片的定位写入:设置 → 隐私与安全性 → 定位服务 → 找到「相机」→ 选「永不」。这条只影响之后拍的照片,老照片的坐标还在。

清掉已有照片的位置:照片 App 打开那张图 → 向上滑出信息面板 → 点「调整」→ 移除位置。批量处理就别用这个方法了,太慢。

图片

分享时临时去掉:分享菜单 → 顶部「选项」→ 关掉「位置与所有照片数据」。

电脑上彻底清除

exiftool -all= -overwrite_original photo.jpg

-all= 会清掉所有元数据块,包括缩略图。但它不动像素,第二层的信息还在。

想连编码痕迹一起洗掉,就重编码一次:

magick input.jpg -strip -quality 92 output.jpg

代价是二次压缩,画质有损。而且有个反效果:重编码之后新写入的 Software 字段可能会变成 ImageMagick 的版本号,等于告诉你「这人专门处理过」。所以重编码之后最好再跑一次 exiftool -all=

图片

安卓这边各家不一样,但基本都能在相机设置里找到「保存位置信息」的开关;Google 相册在分享前也有「移除位置信息」的选项。

我的判断:别把这件事当开关,当成残留

我的观点是,「删掉 EXIF 就安全了」这个想法本身就是错的。图片信息不是开关,是残留。你能决定的是残留多少、残留哪一部分,很难决定「零残留」。所以思路不该是「怎么删干净」,而是「我到底需要什么程度的匿名」。

发朋友圈这种场景,压到长边 1280 像素基本就够了,元数据没了,像素层的痕迹也被压缩破坏了大部分。

卖二手器材发样片,去相机菜单里把序列号写入关掉,导出后重编码一次,再跑 exiftool -all=

处理敏感内容,别用日常手机拍。用一台不联网的设备,导出后重编码,然后再裁剪一次——裁剪能打散传感器固定噪声的位置对应关系,这一刀比删元数据有用得多。别拍屏幕、别对着窗户、别让眼睛出现大块高光。

最后留一句可能不太中听的:你做的所有这些,大部分只是让追溯变难,不是让它不可能。真正决定风险的,从来不是你的技术手段,而是这张图会不会被一个既有动机、又有耐心的人盯上。

标签: