乐趣区

关于云计算:隐藏在水印的秘密

最近明天在测试火山引擎的 ImageX 解决的时候发现提供一种能力叫盲水印;

看盲水印介绍内容:

应用办法测试:

在放拜访某个 url 时候会主动增加上盲水印;增加结束后,会从新提取图片外面的信息;

我在其余公众号上看到这么一个文章,我猜想他们是一个原理,毕竟火山引擎属于字节跳动的业务,但算法是否一个就不晓得了;

相干文章:

————————————————

一、前言

1.1、暗水印是什么

狭义来说,暗水印能够了解为,在一些载体数据中增加暗藏标记,这些标记在人类和机器可轻易感知的范畴之外。相较于常见的明水印,比方图片和视频中的公司 logo、纸币中的水印纹理等。暗水印对大部分感知零碎来说是通明的,不可见的。上面通过两个例子来阐明。

1.1.1 暗藏在白纸中的符号

比方下图是中科院上海某化学所的隐写耐火纸,能够看到在一张看似一般的白纸之中,却暗藏了一个图案和字母。这个图案和字母就属于暗水印。它能够用来隐秘传输信息、做防伪标识等。

1.1.2 暗藏在图片中的二维码

上面这个例子可能就比拟少见了。它是 2020 ByteCTF(字节跳动网络安全攻防大赛) Misc 的一道隐写题目。通过暗藏水印的办法,将一个有意思的二维码嵌入到上面这幅彩图中,而这个二维码是肉眼不可见的。

加有暗水印的图像:

图像中的暗藏信息:

1.2 常见的暗水印技术

这个分类是基于传输载体进行分类的。一般来说暗水印能够暗藏在大部分多媒体传输和存储载体中,比方图片、视频、音频、邮件、文档等都是不错的载体。

1.2.1 图像水印

基于图像的暗水印技术是暗水印外面最成熟的一种,嵌入办法也多种多样。依据嵌入维度不同,又能够细分为空域水印和变换域水印。空域水印能够简略的了解为间接对解码后的图像像素值进行编辑和嵌入信息;变换域水印是将图像的像素信息转换到变换域,而后在变换域增加信息后再转换到空域,这个过程中空域信息也会被批改。所以变换域水印也能够了解为间接的空域水印。

1.2.1.1 空域水印

间接选取空域特定地位的像素值进行批改来嵌入信息。空间域水印的难点在于如何在空域抉择水印区域和在水印块中如何嵌入数据。依据水印区域选取形式不同可分为上面几种。

  • Least Significant Bits(LSB)水印

这个办法简略粗犷,间接在图像的像素值上进行批改。假如水印载体为色彩深度 8bit 的 RGB 图像,水印信息为二值化图像。

  1. 加水印过程

对原始图像的最初 1bit(最低位)置零,将用二进制示意的版权信息,赋值给原始图像的最初 1bit,实现版权信息写入。(写入后原始图像像素值扭转幅度为 1)

  1. 解水印过程

将图像的前 7bits(高 7 位)置零,提起最初 1bit(最低位),失去版权信息。

  1. 算法简评

此算法计算复杂度绝对较低;对图像视觉效果影响很小;鲁棒性较低,难以抵制常见的水印攻打伎俩。

1.2.1.2 变换域水印

变换域水印最终也会批改空域的数据,与下面不同的是并不是间接批改像素值,而是将图像的空域数据转换到变换域,而后依照肯定办法写入水印信息,最初再将变换域数据转换回空域的值并从新生成图像信息。

常见的变换域水印用到的根底算法有 DCT、DFT、DWT,这三个算法特点各不相同,可独自应用也能够穿插应用。

  • 基于 DCT 的水印算法

DCT 离散余弦变换属于一种非凡的 DFT 离散傅里叶变换,在暗水印畛域有十分类似的应用手法。所以这里仅对基于 DCT 变换的水印进行开展。下图为对“蒲公英”灰度图做 DFT 和 DCT 变换后的频谱散布,可见峰值散布是不同的。

  1. 什么是频域变换

下图能够艰深了解频域变换的逻辑。左下角“工夫域”(能够粗略了解为空域)的一维波形,能够由右上角 f1 f2 f3 f4… 等多个规定波形叠加而成,而这些波形都对应一个固定频率,那么将他们投影到右下角的“频率域”中,造成另一幅坐标图。这个过程就能够简略了解为傅里叶变换的过程。

那么它在图像处理畛域有何作用呢?

上面四幅图别离是 原图 >> DCT 变换后的频域的灰度图 >> 将频域左上角数据清零 >> 再次转换成空域的图片。

能够看到转换实现后的图片失落大量信息,然而仍可看出局部毛发的细节信息。

  1. 如何用基于 DCT 来写入暗藏水印

暗藏水印嵌入过程大略如下,框架绝对简略。在理论利用中会依据不同的场景抉择不同的分块和不同的频域区域,这些须要通过大量的试验和实践的积淀才能够做出抉择。

  1. 如何提取暗藏水印

提取过程与加水印过程有较多相似之处,不同之处在于之前是频域写,当初需调整为读取频域信息并判断。

  1. 算法简评

这个框架通用性比拟强,在分块和频域地位抉择正当的状况下,能够抵制肯定水平裁剪、缩放和压缩等常见的攻打伎俩。

  • 基于 DWT 的水印算法

纯正的仅实用 DWT 水印算法绝对较少,大部分状况是 DWT + DCT、DWT + SVD 等类型的组合水印。为何要应用 DWT 呢,起因是它能够在肯定水平上进步水印的鲁棒性并且对图片画质影响较小。

  • 原理

这里的 DWT 次要指的是小波合成。

可见通过 DWT 解决后,能够滤出图片的轮廓信息 (右下角) 和细节信息(左上角)。

1.2.2 文本水印

文本水印指的是在文本信息中嵌入暗藏的水印信息。这个次要是受手写字体的启发。每个人的写字格调不同,字的笔画形态也不同。那么通过在密级较高的文档中引入读者惟一的字体文件,那么这篇文档就相当于嵌入了这个人的标识信息。批改字体的形式能够有多种多样,上面仅是举个例子。

用户一的字体:

用户二的字体:

在这个例子中“是”字是不同的,能够辨别这个截图来自于这两个中的哪一个。

算法简评:

  • 文本字体相较于下面基于图像的水印有较强的鲁棒性,然而有一个有余是文字水印受文字个数的影响较大。当文字较少时可能不足以标识一个人残缺的身份信息。
  • 文字水印也多种多样,比方能够通过调整文字间距、文档格局来嵌入信息。

1.2.3 音频水印

音频的暗藏水印,是指在耳朵可感知的频率之外的音频信息中嵌入水印信息,这样既能够对音频产生较小的烦扰,又能够将水印信息嵌入当中。

基于耳朵的这个个性,联合后面图像水印用到的算法就能够设计出适宜音频的水印算法。

  • 音频 LSB 水印

与视频 LSB 水印类似,只不过这里对象换成了音频。对音频信号进行采样,将不敏感的采样值进行二进制位代替,以达到在音频信号中嵌入水印数据的目标。

  • 扩频隐写

扩频隐写是将机密信息通过伪随机序列调制后, 抉择适合的嵌入强度叠加到载体音频的整个频谱系数上的技术。传统的变换域包含了 FFT,DCT,DWT,随着技术的倒退,近年来也提出了基于 MDCT 和 MCLT 变换域的扩频隐写办法。

  • 基于回声的水印算法

回声 (Echo Hiding) 算法,是一个经典算法。外围思路是通过引入回声来将水印数据写入到载体数据中,利用 HAS 的滞后掩蔽个性,即弱信号在强信号隐没之后变得难以感知,它能够在强信号隐没 50-200ms 内不被人耳发觉。

1.2.4 基于深度学习的水印技术

在传统水印办法中,通常利用一些变换将水印信息嵌入到暗藏空间,并应用手工设计的特色嵌入水印保障水印的鲁棒性。随着深度学习技术的疾速倒退,人们开始尝试利用神经网络来嵌入水印,并利用反抗学习来晋升水印的鲁棒性,以取得鲁棒的水印编码器和解码器。

  • 深度学习图片水印

次要由三局部组成,预处理网络(P)、编码器(H)和解码器(R)。首先将机密信息 S 输出到 P 中,失去机密信息特色图,而后将特色图与载体图像 C 进行拼接后输出到 H 中,最终生成嵌入信息后的图像 C’。解码时,利用 R 复原出 C’中嵌入的信息 S’。

右图中的框架和左图相似,差异在于 S 不须要进行预处理。若机密信息为二进制字符串,通常将其反复屡次以达到和 C 雷同的大小,或将其 reshape 成 C 的形态后再 upscale 到 C 的大小,而后将其与 C 拼接输出到 H 中实现信息嵌入。

  • 深度学习字体水印

在 FontCode 一文中,作者依据水印信息对英文字符的几何特色进行一些渺小的扰动生成水印字符。在嵌入端,字符扰动的办法是基于字符构造实现的,而提取端是通过对扰动模式的辨认进行水印信息复原。

字符扰动模型包含字符匹配、流形生成和字体生成三个局部。利用现有字体的多样性,该模型将所有中的每个字符独自进行轮廓匹配,而后依据这些高维轮廓特色生成低维流形。字型流形是一种利用高斯过程潜在变量生成模型形成低维空间的映射,同时也能通过对低维空间的批改映射回高维特色,进而推断和取得新的字体。

利用 CNN 来辨认文字属于哪个编码:

二、利用场景简介

暗水印暗藏在素材之中,不可轻易被感知,不影响素材的失常应用,这就使得它有很多的利用场景。

2.1 版权视频搬运侵权取证

这是暗水印利用最宽泛的场景,过程也绝对简略。通过在有版权保护需要的音频、视频和图片等隐写入作者或者厂商的惟一标识。那么在后续版权纠纷时,再对可疑视频提取水印,如果提取胜利,就会减少一条砝码。整体过程比较简单,这里就不再赘述。

此利用场景所依赖的算法能力依据具体场景不同而不同:

  1. 如果仅是简略的爬取搬运,那么水印能够抵制转码攻打即可。
  2. 如果搬运后对素材进行二次深度编辑,那就须要水印能够抵制缩放、裁剪、压缩等攻打了。
  3. 还有一个难点是,最初维权时,可能会须要让暗水印失去法务的认可。

2.2 泄露溯源

现在常常产生某厂外部数据截图外泄的事件,在这种状况下如何疾速定位透露者身份是个难点。暗水印就能够在肯定水平上解决这个问题。

厂商能够对敏感页面或者文档退出暗水印,加水印的机会就产生在用户浏览这个页面时,写入的内容就是用户的个人信息。如果用户对这些页面进行截图或者下载之后进行歹意流传,那么写有他个人身份信息的暗水印也会追随这些数据一起流传。这就使得在产生透露 case 之后,通过暗水印就能够疾速定位透露者是谁。从而起到透露溯源,间接起到爱护数据外泄的作用。

因为泄露的场景简单,截图、文档之类的数据流传链条多样,繁多维度的暗水印很难禁受住整个流传过程,很有可能在流传过程中水印信息失落,导致最初取证失败。所以须要设计多层暗水印策略,确保在不影响视觉效果的前提下进步水印的鲁棒性。

2.3 素材内容侵权审核

这能够了解为版权保护的一个分支。只不过这里是平台用来爱护用户的原创视频,避免被平台内其余用户窃取。比拟常见的场景是视频审核平台。暗水印就能够用来爱护作者原创视频,避免在平台内窃取并二次上传。

这个场景对暗水印综合能力要求较高:

  1. 较高的鲁棒性。可抵制视频压缩、缩放、帧内裁剪、帧间裁剪等攻打。
  2. 时延很低的加水印算法。因为加水印过程须要在用户上传视频时实时增加。
  3. 较快的提水印算法。因为视频审核最终须要人工参加来确定是否真正侵权,而因为审核同学工夫无限,所以提取算法必须在十几秒内实现对整个视频的验证和提取过程。
  4. 视觉效果和各种视频指标要求严苛。加完水印后的视频必须不能使视频用户价值负向,这就波及到暗水印对视觉效果、码率等指标的要求了。

2.4 防篡改

随着金融信息化的提高和网络与电子商务的倒退,电子领取伎俩越来越被金融业所器重,已成为一种重要的领取伎俩之一。而电子领取票据截图在流传过程中存在较高的被篡改的危险。在这个过程中如果引入软弱水印零碎,并在用户生成电子领取票据时进行增加。票据接收者在收到票据时,对这个票据中的暗水印进行完整性检查,那么就能够确认此票据是否已经被批改。

这种水印有以下几个特点:

  1. 绝对比拟软弱,被批改后会提醒水印辨认谬误。但也不能软弱到经不起常见社交软件的流传。
  2. 谬误坐标辨认。可辨认出是哪块区域中的数据 (水印) 被批改。

2.5 链路追踪

在一些视频流传的业务场景中,可能会须要跟踪视频流传流程,但一些内部平台无奈提供追踪服务。因而,须要一些其余伎俩去追踪数据的去向,暗水印是一个十分现实的伎俩。在投放视频前,将暗水印退出素材,当素材播放或应用时,依据水印信息对以后节点进行标记,那么就可依据暗水印进行数据链路追踪。

在链路追踪上应用暗水印须要有以下特点:对鲁邦性要求个别,次要集中在抗 crf 压缩上。

三、结束语

暗水印历史比拟悠久。因为近几年短视频的风行以及人们对版权意识的晋升,暗水印再次迎来了新的春天。在新的社会背景下,十分期待暗水印在版权保护、数据防护等方面施展越来越重要的价值。

文章为原创文章,若有侵权请分割;

退出移动版