QCon全球软件开发大会8折优惠倒计时最后3天,购票立减¥1760!了解详情 >>> 了解详情
写点什么

影像篡改识别(二):数字时代

作者:腾讯安全云鼎实验室

2021 年 8 月 25 日

影像篡改识别(二):数字时代

1997 年,埃及哈特谢普苏特神庙前,一张恐怖组织持枪扫射游客后的新闻图片被爆造假;

2006 年,以色列空袭黎巴嫩首都贝鲁特,一张浓烟笼罩城市的照片被证实是伪造的;

2008 年,一张伊朗试射多枚远程导弹的新闻照片被怀疑是人工 PS 产物;

2019 年,诺奖得主格雷格•塞门扎的 29 篇论文被质疑多张图片有篡改痕迹;

2020 年,海外社交媒体上的一张《被火烧焦的澳大利亚》图片被指存在伪造嫌疑;

……

近年来频发的图片造假事件,使数字影像的真实性和完整性不断受到挑战,所谓的“眼见为实”变得越来越不可信,严重影响了人们对客观事实的直观认识,有时甚至会给整个社会造成巨大的危害。


那么,为什么数字时代的影像篡改会如此频发呢?它的篡改隐蔽性真的能够以假乱真吗?这些疑问让人不由自主的想要一探究竟。 

数字时代的影像篡改是指什么?


我们都知道,数字影像的存储是以离散的像素为单位的,比如一个 8bit RGB 图片,它包含 Red、Green、Blue 三个尺寸相同的数据通道,每个通道上有一组二维像素数据,每个像素的取值介于 0~255 之间,这样就用数字化的方式表达了一幅图片。


 

那么,数字时代的影像篡改是指什么呢?顾名思义,它指的就是在真实拍摄并记录的影像数据上,人工肆意地去修改这些像素数值。当然,为了篡改的隐蔽性,通常需要根据图像内容进行“有技巧”的修改,下面是一些常见的数字影像篡改手法:


  • 复制粘贴,将同一幅图像中的局部区域像素从一个位置复制粘贴到另一个位置;

  • 添加删除,在图像中新增或者移除一部分局部区域像素,添加意味着会覆盖掉原有的像素数值,而删除则需要在移除操作之后,利用周围区域的像素数值进行填充;

  • 拼接合成,将不同图像中的局部区域拼接合成在一起,通常来自不同图像的拼接内容会在尺寸、色彩、纹理等很多方面存在一定的差异,需要进行一些尺寸调整或者拼接边界的平滑修复处理;

  • 裁剪缩放,裁剪是指将图像中一些不需要的内容剔除掉,它与删除操作的区别在于会改变图像尺寸,而缩放是指通过一些像素插值方法来放大或者缩小图像;

  • 修饰美化,对图像中一些感兴趣的内容进行修饰、渲染处理,比如美颜相机中常见的人脸美化技术;

  • 扭曲变形,将图像中的一些特定目标区域进行无规则的平移、旋转、拉伸等操作,产生局部扭曲或者畸变的效果,比如恶搞人脸视频中的夸张表情。


当然,数字时代的影像篡改并不需要人工去修改每个像素数值,就像电影《天下无贼》中葛大爷说的,“二十一世纪最重要的是什么?是人才!”,而对于数字影像篡改来说,最重要的就是一个趁手的工具。

工具就是第一生产力


远古时期,祖先们学会了使用工具,标志着人类逐渐走向了文明;

……

胶片时代,暗房师们使用了工具,创造出了众多不可思议的经典影像;


那先进的数字时代呢?


提到数字时代的影像篡改工具,Photoshop 自然是无人不知、无人不晓的,是的,它是一款从胶片时代的手工操纵照片方式延伸过来的数字工具。


事实上,如今像这样的 P 图工具还有很多,比如:美图秀秀、美颜相机、Facetune、Crazy Talk、Mug Life、ZAO 等等,下面介绍几款主流的数字影像篡改工具。


  1. Photoshop 软件

Photoshop 由来已久,它的起源[1]也颇具偶然性。


1987 年,托马斯•诺尔购买了一台 Mac Plus 用来写博士论文,但是他发现苹果计算机根本无法显示带灰度的黑白图像,于是自己写了一个 Display 程序。


此时,身在电影特效制作公司的兄弟约翰•诺尔,对这个程序非常感兴趣,于是两人经过一年多时间,把它修改成了功能更为完善的图片编辑程序。


随后在一次产品展会上,他们接受了参展观众的建议,正式将它更名为 Photoshop。



如今的 Photoshop 已经具备非常强大的影像编辑功能,涉及图形、图像、视频等多个方面,而且最重要的是它易于操作,即使你是一个新手,也能在互联网上找到铺天盖地的操作教程,手把手的教你如何使用。


至于那些常见的数字影像篡改手法,几乎全部都可以用它来实现。下图展示了一幅利用 Photoshop 从构图的色彩、光影以及人物的服饰、细节等多个角度精心修饰过的图片,与原始图片相比,它的视觉效果要显得更加唯美。


 

  1. Facetune 软件

Facetune 是 Lightricks 公司旗下的一款面向手机终端的人脸修图 APP,曾经号称可以把照片修饰成好莱坞水准[2][3]。它拥有着 Photoshop 级别的修图功能,比如:智能美颜、面部精修、五官微调,甚至还可以进行灯光渲染、背景虚化等。


正如《赫芬顿邮报》的评价:“Facetune 是我见过的功能最强大的移动应用程序之一,它真正能被称之为神奇”。


在 Facetune2 升级之后,它更是增添了许多神奇的魅力,比如说:牙齿的自动美白、让眼睛看起来炯炯有神、让笑容更加灿烂;当然也可以消除疤痕、粉刺和皱纹,让粗糙苍白的皮肤显得更加光亮;此外,还能够缩放面部轮廓、HDR 凸显精美细节、去除强光引起的阴影和亮光、精准控制色温等等。


 

上图展示了一幅 Facetune 人脸面部轮廓重塑的对比图片,可以看出,通过微调下巴轮廓就能轻松地告别国字脸,让美丽的容颜变得轻而易举。

 

  1. Mug Life 软件

Mug Life 是一款 2015 年出现的商业 APP[4][5],它的强大之处在于可以让一张静态的人脸图片“活”过来。当然,背后的技术正是如今火热的神经网络,它包括三个核心阶段:


  1. 面部解析:Mug Life 先将静态的人脸照片进行分解,提取 3D 建模所需的必要元素,如相机属性、光照条件、面部几何数据以及纹理细节等。

  2. 添加特效:在基本不改变人脸面部关键特征的前提下,利用电影动画技术为面部赋予一些特定的表情和动作。

  3. 面部重构:通过一些先进的视频游戏技术将人脸图片重新渲染成 3D 动画人物。


事实上,Mug Life 可以认为是一种更倾向于趣味性的 APP,如下图展示的恶搞拜登视频中的一帧截图,表情比较夸张,当然我们都知道它是假的。


 

影像篡改或许是把“双刃剑”


数字时代,玲琅满目的篡改工具,让人们几乎都可以轻易地制作出虚假影像,而互联网也在不断加速着它的传播。一时间,很多领域上都出现了它的身影。


然而,如果人们站在道德伦理的角度上看,它实际上可以分为两类:

  1. 良性用途:为了娱乐大众,比如:社交中的猎奇图片或恶搞视频等;也可以是对视觉美学的追求,比如:时尚摄影和艺术创作中的美化修图、科幻影视中的炫酷特效等。


 

上图是一幅曾经在海外社交网络上很火的猎奇图片《岩石上的城堡》,它实际上是利用 Photoshop 工具制作的,针对泰国攀牙湾国家公园的岩石图片和德国的利希滕斯坦城堡图片分别进行局部目标区域的裁剪、缩放处理,然后再拼接合成在一起。

 

  1. 恶性用途:这一类是属于违背道德伦理的,带有强烈欺骗性的虚假影像有时可能会产生难以估量的社会安全问题,比如:政治新闻中的虚假宣传、科研学术中的图片造假、个人生活中的身份冒用……


 

上图是一幅非常著名的美联社新闻造假图片《伊拉克战俘》,它是通过裁剪掉了顶在战俘头部的步枪,企图误导大众的判断,从而达到操纵社会舆论的目的。

辨别数字影像真伪也是一个技术活儿


众所周知,篡改的图片通常满足两个客观事实:

  • 图像 RGB 数据上确定发生了局部变化;

  • 在图像 RGB 数据上却无法直接找到这种局部变化的位置;


那么,数字时代的鉴别方法能做些什么呢?

实际上,它们通常都是在寻找一些隐藏在图像 RGB 数据中的特征,比如:相机自身的硬件缺陷、图像数据生成时的误差、图像内容包含的自然规律,还有主动插入图像中的“夹层”等,这些特征一般具备三个特点:

  • 在图像 RGB 数据上表现不直观;

  • 记录了篡改操作留下的痕迹;

  • 移除了图像内容的干扰;


第一点比较容易理解,而第二点指的是当影像遭到篡改时,图像 RGB 数据和隐藏在 RGB 数据中的特征通常都会发生局部变化,尽管一些辅助处理(如篡改边界修复)能够通过微调来提升 RGB 数据上的篡改隐蔽性,但是却无法得知隐藏特征上的局部变化规律,也就无法对症下药,在隐藏特征上进行伪装修饰,所以这些隐藏特征可以保留篡改痕迹。


对于第三点,可以举个例子:

在一张有桌子的图片上利用 Photoshop 给桌子上 PS 一个水杯。当人们看到这张图片时,通常只能通过判断水杯的存在是否合理,以及水杯与周围事物(桌子)在拼接处的好坏程度来辨别真伪,如果拼接的隐蔽性够好就无法识别了。事实上,这都是图像内容本身(桌子和水杯)对鉴别工作带来的干扰,要是能够从图像 RGB 数据中提取到近乎均匀的、无图像内容干扰的特征,那么,篡改痕迹岂不是暴露无遗了。


在数字时代,像这样的隐藏特征已经被提出了很多,比如:数字水印、JPEG 量化误差、光照一致性、传感器指纹等,它们的检测机制其实也是颇有技巧的。


(1)数字水印

提到水印,相信大家肯定想到了纸币水印,当人们拿起一张纸币迎着光看时,就会发现一种“半隐藏式”的水印,它常用于纸币的防伪鉴定。下图展示了 100 元人民币在左侧显现的毛爷爷头像以及下侧发亮的数字 100 都是一种水印。


 

实际上,纸币水印[6]是利用一种带有凹凸图案的预制专用模具,通过改变纸浆纤维的密度实现的,透光性好的地方纸张纤维“稀”一点,透光性不好的地方纸张纤维“密”一点,从而呈现出具有较强立体感的图案。

那么,数字水印是什么呢?


数字水印可以被认为是纸质水印的数字化表现,它是一种将特定信息嵌入到文档、图像、视频等数字信号中的技术,常用于版权保护和防伪取证。


简单理解,它是给数字图像主动添加了一个“夹层”,而这个“夹层”内容通常是预制的文字或图案,通过检测这个已知“夹层”的完整性也能起到防伪作用。


以 LSB 嵌入水印为例,一个 8bit Gray 图片,根据比特位数可以将图像分为 8 层,换句话说就是,将图像所有的像素值都表示成一个 8 位二进制数,每次取 8 位中的 1 位得到一个比特平面,共计 8 个,如下图所示:


 

可以看出,第 1 比特图像的像素值几乎是均匀随机的,如果嵌入水印的话并不会干扰到图像内容本身,重构图像也会具有较好的隐蔽性。


当篡改检测时,我们需要做些什么呢?


首先,按照水印嵌入的规则从图像中提取出隐藏的数字水印;然后,将提取的水印内容与已知水印进行比对,验证它的完整性是否遭到破坏即可。


然而,数字水印也是有缺点的,即在如今海量的数字影像中都嵌入水印似乎不太现实。

 

(2)JPEG 量化

通常,大多数图片都会经过 JPEG 有损压缩,利用较少的质量损失换取更高的压缩率,可以有效降低存储、传输的资源开销。


JPEG 有损压缩使用量化操作来控制质量和压缩率,而量化就是用图像数据以 8x8 块为单位除以一张定制的量化表。于是,图像每个像素的“商值”就会变小很多,这样可以用更少的比特数来存储和传输。量化表[7]形式如下:



表中可以看到,亮度和色度分别对应不同的量化表,但都是以 8x8 块为单位的。


一般情况下,不同的相机制造厂商(比如 Canon、Nikon、Sony 等)都会使用自己定制的量化表,而篡改图片通常都会被不同的量化表所处理,因此,量化表本身就可以直接作为一种图像篡改识别的特征。


当然,也可以根据量化“除法”中的取整运算引入的缺陷(如下图所示)来定位篡改位置[8]。其实这种量化引入的缺陷也可以理解为一种“特殊”的水印,只是它并非人为主动添加进来的,而是在图像压缩过程中被动引入的。



上图中的两行分别表示 JPEG 压缩图片和截取它左上角的局部放大显示图片,三列从左到右依次表示 round 四舍五入、floor 向下取整、ceiling 向上取整。


可以看到,后两种取整操作会在图片每个 8x8 块的左上角像素引入或亮或暗的周期性缺陷,而利用这种缺陷也是可以有效识别篡改位置的。


 

图中第 1、3 列分别表示原始图片和篡改图片(上图 P 掉了左侧女孩,下图 P 歪了 STOP 标志),第 2、4 列表示对应的检测结果,而检测结果中的黑色表示存在明显缺陷的区域,白色表示不存在缺陷的区域。

 

(3)ELA 分析

JPEG 量化操作不但可以引入缺陷作为“特殊”水印,更常见的是一种因质量损失而产生的图像错误量。通常,一次压缩对图像所有 8x8 块引入的错误量基本上是相似的,只有当图像被篡改时,包含篡改位置的 8x8 块才会与其他部分产生不一致的错误量。


ELA(Error Level Analysis)[9]从图像显示质量的角度出发,将原始图像以一个已知质量等级(如 95%)进行压缩并保存成一张新的图像,然后计算两幅图像之间的差别。简单理解就是,将一次压缩产生的图像错误量当作一种被动引入的“特殊”水印。


如果不存在篡改,ELA 图像通常处于全局最小错误级别,整张图像都会比较黑暗,只有少许微弱的噪声,反之,在局部就会产生比较强烈的错误级别。


 

左图中利用 Photoshop 复制粘贴了书架上的绿色书籍,还添加了一个恐龙玩具,而右图中可以明显看到篡改位置的错误级别比较强烈。


实践证明,ELA 可以有效识别数字影像篡改,但是也具有一定的局限性,比如:在无损压缩或者重复多次压缩时可能会失效。

 

(4)光照一致性

光照一致性是指在同一场景下的物体通常会具有相同的光影分布特性,比如:一群人迎着太阳行走,他们身体前面都会光照较强,而身体后面的影子方向也会基本一致。这种通过太阳或其他光源“制造”出来的一种“特殊”水印也会被动地隐藏在图像数据中。


事实上,光照一致性是从胶片时代目视法中的“光照原理检验法”延伸过来的,在数字影像篡改中,可以通过分析物体表面光源方向的一致性来识别篡改位置[10]。


那么,物体表面光源方向要怎么估计呢?


光源方向估计需要物体表面的闭合边界,一般可利用边缘检测方法结合二次曲线拟合来获取,然后在边界曲线上人工选取一些独立的点分别进行光源方向估计,最后平均所有独立点的预测方向,就能得到物体表面光源方向的估计值。


 

上图中,物体表面黑色曲线表示提取的闭合边界,曲线上的白色直线表示人工选取的独立点所估计的光源方向,黄色箭头表示平均的光源方向。


通常对于拼接合成这类图像,往往篡改物体与其它物体之间不具备相同的光照特性,那么,判别物体表面光源方向是否一致就可以用来识别真伪。然而,这种方法也存在一些自身的缺点,即在无明确方向性光源或有多个复杂光源的场景可能会力不从心。

 

(5)噪声指纹

2005 年,卢卡斯等人发现相机 CCD 存在一种固有的模式噪声,它是由于制造工艺缺陷导致的,这种噪声信号非常微弱,却比较稳定且具有唯一性,可以作为相机“设备指纹”。


其实这种“设备指纹”也可以理解为一种“特殊”的被动水印,只是它是根据硬件缺陷引入图像的,下图展示了一张 iPhone XS Max 手机设备指纹的图片。


 

可以看到,它的像素点大小分布是毫无规律的,这是因为 CCD 每个像素的制造误差是不尽相同的。对于不同品牌、型号的相机,这种噪声误差的分布不可能完全相同。


当然,利用这种没有图像内容干扰的噪声指纹也可以检测篡改位置[11]。下图给出了一些图像篡改的识别效果,左上角图中最右侧的鸭子是复制粘贴的,右上角图中的行人是拼接合成的,左下角图中左侧男人的头部被 PS 过,右下角图中马路边上新添加了汽车。


 

尽管利用噪声指纹的识别方法非常有效,但是,它需要事先获取同一设备的多张拍摄照片才能够计算出指纹,这往往并不是一件容易的事。

结束语


随着数字科技的进步,影像篡改的工具越来越多,编辑操作越来越简单,几乎人人都可以轻易地上手制作,所以加速了“有图不一定有真相”变为现实。


对于数字时代的检测识别,虽然已经出现了很多有效的鉴别特征,但是它们大多数都只能应用于某些特定的场景,这自然是远远不够的。


那么,接下来进入到人工智能时代,凭借强大的深度学习技术能否有一些长足的进步呢?


敬请关注《影像篡改识别(三):人工智能时代》

 

参考文献

[1] https://baike.baidu.com/item/Adobe%20Photoshop/2297297?fr=Aladdin

[2]http://ex.chinadaily.com.cn/exchange/partners/82/rss/channel/cn/columns/snl9a7/stories/WS5d415313a3106bab40a03845.html

[3] https://apps.apple.com/cn/app/facetune/id606310581

[4] https://baijiahao.baidu.com/s?id=1583329933213045654&wfr=spider&for=pc

[5] https://twitter.com/MugLifeApp/status/1254820745366122502

[6] https://new.qq.com/omn/20210510/20210510A0CCVK00.html

[7]https://www.blackhat.com/presentations/bh-dc-08/Krawetz/Whitepaper/bh-dc-08-krawetz-WP.pdf

[8] Shruti Agarwal and Hany Farid. Photo Forensics from JPEG Dimples. IEEE Workshop on Information Forensics and Security (WIFS). 2017.

[9] https://github.com/qumuase/ELA

[10] M.K. Johnson and H. Farid. Exposing digital forgeries by detecting inconsistencies in lighting, Proceedings of the 7th Workshop on Multimedia and Security, ACM, New York, NY, USA, 2005.

[11] J. Lukas, J. Fridrich, and M. Goljan, “Detecting digital image forgeries using sensor pattern noise,” in Society of Photo-Optical Instrumentation Engineers (SPIE) Conference Series, vol. 6072, Feb. 2006.

2021 年 8 月 25 日 11:0121
用户头像

发布了 65 篇内容, 共 12.7 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营 11 周作业

郎哲158

我是程序员,我用这种方式铭记历史

kokohuang

Hexo GitHub Pages python 爬虫 中国历史 铭记历史

话题讨论 | 作为开发你是如何阅读源码的?

程序员小航

话题讨论

架构师训练营第 1 期第 11 周作业

du tiezheng

极客大学架构师训练营

线程上下文切换,这些是你需要掌握的

田维常

系统上下文

话题讨论 | 深入浅出Linux内存管理,图解物理内存和虚拟内存

程序员柠檬

话题讨论

架构师训练营第 1 期第 11 周总结

du tiezheng

极客大学架构师训练营

公安情报研判管控分析平台建设解决方案

t13823115967

智慧公安情报研判系统开发 智慧公安 情报研判管控分析平台

源码深度解析 Handler 机制及应用

vivo互联网技术

android 客户端开发

第十一周 安全稳定总结

钟杰

极客大学架构师训练营

App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》

清菡

App

探秘密码学:深入了解对称加密与密钥协商技术

京东科技开发者

网络安全 密码学

手撸一个在线css三角形生成器

徐小夕

CSS css3 前端 前端工程 CSS小技巧

第七周总结

小兵

CSS flex 排版与动画 — 重学 CSS

三钻

CSS 排版 前端进阶训练营 Flex

Spring 源码学习 08:register 注册配置类

程序员小航

Java spring 源码 源码阅读

智慧公安情报指挥合成作战管控平台开发

t13823115967

智慧公安情报研判系统开发 智慧公安 合成作战管控平台

KMP —— 字符串分析算法

三钻

算法 前端 前端进阶训练营 KMP

架构师训练营第 11 周学习笔记

郎哲158

话题讨论 | go、php 、java、python、cpp谁才能成为后端的主流

sinsy

Java c++ php go 话题讨论

花火交易所APP软件系统开发(现成)

开發I852946OIIO

系统开发

低成本快速上链 智臻链开放联盟网络正式对外开放

京东科技开发者

区块链 京东

突破容量极限:TiDB 的海量数据“无感扩容”秘籍

京东科技开发者

分布式数据库 #TiDB

基于区块链技术落地应用开发-食品溯源

13828808769

话题讨论 | 2020年你有什么推荐的书

soolaugust

话题讨论

话题讨论 | 程序员摸鱼的时候都喜欢干些什么

soolaugust

话题讨论

什么是工作流?工作流有什么作用?怎样配置工作流程?

Marilyn

敏捷开发 工作流

谁还不是凡尔赛了,LEARUN.NET框架,实力不容低调

力软.net/java开发平台

.net .net core learun

Seata是什么?一文了解其实现原理

vivo互联网技术

分布式 分布式事务 分布式架构

第十一周 安全稳定作业

钟杰

极客大学架构师训练营

阿里云Lindorm与Intel、OSIsoft共建IT & OT超融合工业数据云

许力

数据库 大数据 IoT 工业互联网 工业物联网

移动应用开发的下一站

移动应用开发的下一站

影像篡改识别(二):数字时代-InfoQ