CTF盲水印详解

VSole2022-01-18 14:42:20

前言

在CTF杂项题型中,盲水印的出现频率是相当高的,但大多数人处于只会用脚本的阶段,没有对原理进行深入理解,这篇文章主要把盲水印的原理和解题过程总结一下。

基本知识

盲水印的基本原理如图所示:


主要的知识点在于傅里叶变换把原图变为频谱图,再叠加水印,将含水印的频谱图进行傅里叶逆变换得到含水印的图像。那么思考傅里叶变换如何将原图变为频谱图,再将频谱图变为图像呢?下面对傅里叶变换进行分析。

傅里叶分析

傅里叶变换涉及的知识点太多了,第一次接触傅里叶分析的读者可以先参考一下这篇文章,傅里叶分析之掐死教程(完整版),附链接

https://zhuanlan.zhihu.com/p/19763358

下面介绍一下傅里叶变换的一些前置知识。

傅里叶变换基础知识

介绍一下频域,时域。以音乐为来举例子,时域就是我们观察到钢琴的琴弦一会上一会下的摆动,就如同一支股票的走势;而在频域,只有那一个永恒的音符。任何周期函数,都可以看作是不同振幅,不同相位正弦波的叠加。以音乐为例,利用对不同琴键不同力度,不同时间点的敲击,可以组合出任何一首乐曲。

时域的基本单元就是“1秒”,如果我们将一个角频率为的正弦波看作基础,那么频域的基本单元就是有了“1”,频域的“0”就是一个周期无限长的正弦波,也就是一条直线!所以在频域,0频率也被称为直流分量,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状,鉴于正弦波是周期的,我们需要设定一个用来标记正弦波位置的东西。也就是相位。

最后借用文章的一张图:

傅里叶变换

傅里叶的原理表明,任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。利用傅立叶变换算法直接测量原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位就可以表示原始信号。其等价关系可以表示为:

再来看看图像的傅里叶变换,上述举得例子是一维信号的傅里叶变换,并且信号是连续的,我们知道图像是二维离散的,连续与离散都可以用傅里叶进行变换,那么二维信号就是在方向与方向都进行一次一维的傅里叶变换得到。下面看看二维傅里叶变换,一个图像为的图像进过离散傅里叶变换得到,那么一般的公式为:

它的反变换就是

反变换就可以实现将频域图像恢复到时域图像。对正变换分析,当u=v=0时,那么:

这个式子f(x,y)就是时域里面图像的灰度。其实是整个图像的灰度求平均。在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑白两种颜色,灰度图像在黑色与白色之间还有许多级的颜色深度。那么F(0,0)在频域内称为直流分量,其他的所有F称为交流分量,直流分量可以看到是在0处获得的,所以很明显是存在于低频分量下的。为了便于观察,我们常常使直流成分出现在窗口的中央,可采取换位方法,变换后中心为低频,向外是高频。

在分析图像信号的频率特性时,对于一幅图像,直流分量表示预想的平均灰度,低频分量代表了大面积背景区域和缓慢变化部分,高频部分代表了它的边缘,细节,跳跃部分以及颗粒噪声等。

盲水印原理

对于水印和原图,我们很容易得到时域表示 ,为了让水印的信息能在频域上尽量平均分布,引入随机变换 来对时域上的水印进行变换,即

同时我们对原图进行二维离散傅里叶变换

接下来我们引入能量系数对水印和原图频域合成得到

然后逆变换我们就得到了加了盲水印的图片(时域表示)

如果想解水印,那么首先对 变换得到

然后减去原图的频域并且做随机变换 的逆变换就得到了水印的时域表示

这就是图片盲水印的基本原理。

盲水印特征

水印对称

因为 和 是共轭的,的它们的实部应该是一样的,如果实部不一样的话逆变换回去势必在虚部上会损失一部分信息(我们写入图片的时候只用实部),考虑到我们想尽量提高盲水印的隐匿性,所以我们的水印应该是关于图片中心对称的。

隐匿性

由于在频域叠加的时候我们一般的策略是让水印信息尽可能随机分布在原图频域的所有分信号上,因此在逆变换回时域后整体图片其实差别并不大。

加密性

在前面推导盲水印的过程中,我们实际上有一个密匙 ,因为只有知道了和原图,才能完成解水印的过程, 这相当于完成了简单的对称式加密,也就是说即使攻击者知道图片加了盲水印,由于没有 (和原图),也无法去掉盲水印或者替换盲水印。

鲁棒性

有时候攻击者可能对图片进行处理比如剪裁、压缩等,由于盲水印已经将信息分布在了频域的各个分信号上,因此可以有效抵抗这些攻击。

python实践

现在我们用合天网安的图标来演示:


import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('hetian.jpg',0) #直接读为灰度图像
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)#将图像中的低频部分移动到图像的中心
#取绝对值:将复数变化成实数
#取对数的目的为了将数据变化到较小的范围(比如0-255)
s1 = np.log(np.abs(f))
s2 = np.log(np.abs(fshift))
plt.subplot(121),plt.imshow(s1,'gray'),plt.title('original')
plt.subplot(122),plt.imshow(s2,'gray'),plt.title('center')
plt.show()

运行结果如下所示:

频域变换到时域的操作就是逆向傅里叶变换再走一遍(比如先反中心化,在逆变换)。

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('hetian.jpg',0) #直接读为灰度图像
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
#取绝对值:将复数变化成实数
#取对数的目的为了将数据变化到0-255
s1 = np.log(np.abs(fshift))
plt.subplot(131),plt.imshow(img,'gray'),plt.title('original')
plt.subplot(132),plt.imshow(s1,'gray'),plt.title('center')
# 逆变换
f1shift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f1shift)
#出来的是复数,无法显示,取绝对值
img_back = np.abs(img_back)
plt.subplot(133),plt.imshow(img_back,'gray'),plt.title('img back')

盲水印实践

到这里我们已经理解完盲水印的基本原理了,下面我们开始实践。在CTF比赛中,遇到盲水印的题目我会使用github上的盲水印脚本。我们利用该脚本进行盲水印加密和解密。

我们在当前目录下有三个文件,分别为脚本文件,原图(hetian.png)和水印(flag.png)。

运行完生成hetin2.pngflag2.png

其中flag2.png可以很清楚的看到水印。

接下来我们对盲水印的隐匿性进行探究,首先我们对hetian2.png加上合天的文字,如图所示:

然后进行盲水印解密

可以看到解出来处理的水印变得模糊,但还是可以清楚地看出水印的内容,说明盲水印鲁棒性比较好。

时域频域傅里叶变换
本作品采用《CC 协议》,转载必须注明作者和本文链接
CTF盲水印详解
2022-01-18 14:42:20
盲水印的出现频率是相当高
摘要:网络空间数据流观测与威胁行为分析是国家网络空间安全防御中的重要方向。
目前智能手机上的运动传感器对振动敏感,已经被用于窃听音频。然而,存在两个公认的局限性,第一个限制是与麦克风不同,运动传感器只能接收通过固体介质传播的音频信号,因此之前唯一可行的设置是将运动传感器和扬声器放置在同一张桌子上;第二个限制是由于传感器的采样率上限是200Hz,而成年人的整个语音频段是85-255Hz,使用传感器只能采集到一部分的声音信息。
例如,攻击方可能会使用无人机进行监视、运输非法物品,或通过侵入机场上方的封闭空域造成经济损失。该fuzzer发现了可用于获得根访问权限,目前大疆已修复所有错误。鉴于大疆的实际重要性,本研究的工作重点关注该供应商在 200 克到 1 千克之间的消费级无人机。逆向工程结果证实了这些发现。
事实上,以 CPS 为基础,到 2030 年,工业 4.0 预计将创造 15 万亿美元的全球 GDP 价值。违反保密规定会造成重大的经济损失。总体而言,失去知识产权将增加制造业的财务损失。由于 3D 打印机用于实际制造和快速原型制作,因此泄露打印对象的信息将使对手获得复制它所需的所有信息,从而给相关公司造成重大经济损失。
多年以来,WiFi由于802.11的先天安全设计缺陷(例如,攻击者可定位用户,以及利用缓冲帧、帧聚合和帧分段发动攻击)而频频曝出漏洞和安全问题,甚至最新的WPA3安全协议依然无法幸免(例如Dragonblood身份验证漏洞)。
Detector提供一个完整的测评框架,支持测评人员将待分析的原始波形及分析结果导出到Word文档中,以快速生成测试报告。测试报告内容包括测试信息、测试波形图及相应的测试结果。以TVLA测试为例,生成报告对话框界面如图1所示,生成的测试报告如图2所示。图1 生成报告功能界面图2 生成TVLA测试报告结果02新增标准计时分析功能旧版本Detector支持两种计时分析功能,分别是计时分析-IO、计时分析-明密文相关性。
从完善法律规制、加强监督检查、引入市场化机制、创新分层动态同意机制、完善事后救济等角度探析对知情同意框架的完善。
国务院新闻办公室7日发布《携手构建网络空间命运共同体》白皮书。白皮书介绍,作为全球最大的发展中国家和网民数量最多的国家,中国顺应信息时代发展趋势,坚持以人民为中心的发展思想,秉持共商共建共享的全球治理观,推动构建网络空间命运共同体。中国全功能接入国际互联网以来,始终致力于推动互联网发展和治理。
剖析网络全流量系统
VSole
网络安全专家