24年在ACM上发表基于潜空间latent
的隐写系统构建,全称基于潜在扩散模型的实用且稳健的生成图像隐写术(顶会起的名字都这么大吗),原文链接。
隐写术最关键的就是隐写算法,此前看过的CRoSS: Diffusion Model Makes Controllable, Robust and Secure Image Steganography和Improved Generative Steganography Based on Diffusion Model(GSD方法)因为都是23年的作品,研究时期较早,隐写算法还比较简单,分别是使用生成提示词作为密钥的转换生成,和根据秘密信息直接修改潜变量dct系数实现。
阅读本篇论文的目的是希望找到更高级、更隐蔽的隐写思路。
摘要
现有的生成图像隐写方法在可控性、可用性和稳健性方面仍面临挑战,因此难以应用真实场景,所以作者设计了一种基于潜在扩散模型的实用且强大的生成图像隐写术,称为 LDStega。LDStega以可控条件文本作为输入,并在潜在扩散模型的相反过程中设计了一种编码策略,将潜在空间生成与数据隐藏耦合。编码策略从由秘密数据引导的截断高斯分布的候选池中选择一个截断区间,以生成 stego 潜在空间。随后,将隐写潜在空间输入解码器以生成隐写图像。相反的过程中,接收器从有损重构潜在空间的全局高斯分布中提取秘密数据。实验表明该系统提取精度高,生成效果可控,此外还能抵御图像攻击技术。
引言
传统嵌入型的隐写,无论是空间域频域还是机器学习自适应隐写位置的算法都有绕不开的弊端,这些方法通常会在隐写图像中将秘密数据的明确痕迹作为伪影或局部细节留下,使其容易被隐写分析检测到,并降低隐写术的安全性。
更新型的隐写术如GAN则有图像质量问题,基于流flow的则更易受到攻击,此外,这些方法中隐写图像的生成内容缺乏可控性,因为生成的图像只是从生成模型中随机采样的。隐写载体除了保证秘密信息不被发现以外还应该与隐写者身份相适应,从社会工程角度保证隐蔽性。
随着扩散生成及潜变量LDM的发展,和开源社区的不断壮大,给生成提供了广阔素材。但此时还有两个问题:如何在 LDM 中耦合消息隐藏和图像生成,同时该过程对有损数据存储和有损通道传输要保持健壮性。
该论文设计了一种方法,将秘密消息藏在噪声中,并利用确定性采样器来生成隐写图像的潜在空间,再根据该噪声生成载密图像(该过程和好像GSD类似)。在潜空间内的编码,噪声添加过程可能是有损的,为了提高信息提取的精度,论文设计了一种基于截断高斯分布的映射函数,专门处理信息在潜空间转换的损失问题。
总的来说论文的核心贡献有三点:
1,无需训练模型的潜空间隐写术Latent steganography
。基于 LDM 设计了实用且稳健的生成图像隐写术。LDStega 将秘密数据隐藏在噪声中,并利用确定性采样器生成 stego 潜在空间。值得注意的是,LDStega 不需要微调预训练模型或训练其他模型。
2,文生图。利用受控条件文本作为输入,使发送者能够根据发送者的特点为各种场景生成个性化的隐写图像,从而避免因异常行为而产生的怀疑。以png和jpeg格式保存图像,自称有效解决了量化错误导致提取精度降低的问题,但是图像不就得这个格式保存吗。
3,鲁棒性编码策略。设计了一种编码策略,从秘密数据引导的截断高斯分布候选池中选择一个采样区间来生成 stego 潜在空间,从而确保在抵抗常见图像攻击时具有高提取精度。
别的都是虚的,最主要是看他的编码策略到底是什么,如何使用秘密信息引导采样生成高斯噪声的。
相关工作
从嵌入式隐写术,到生成式隐写术,最后介绍到Diffusion models,balabala,不少内容和前言都重复了,以后自己写paper再回头看看学学吧。
前置知识
高斯分布
高斯分布是一种连续概率分布,概率密度函数为: f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=2πσ1e−2σ2(x−μ)2取值范围 ( − ∞ , + ∞ ) (-\infty, +\infty) (−∞,+∞),由均值 μ \mu μ和方差 σ 2 \sigma^2 σ2完全描述,其中 μ = E ( X ) \mu=E(X) μ=E(X), σ 2 = E [ ( x − μ ) 2 ] \sigma^2=E[(x-\mu)^2] σ2=E[(x−μ)2]。
图形上来说 μ \mu μ决定了概率分布的中心位置,分布关于 μ \mu μ中心对称,峰值位于均值处,两侧无限延伸,理论上概率密度趋近于零但永不为零, σ \sigma σ越小图形越陡峭。
当
μ
=
0
\mu=0
μ=0,
σ
=
1
\sigma=1
σ=1时称为标准正态分布,其概率密度函数曲线如下:
不同均值和标准差对图形的影响对比如下图:
截断高斯分布
高斯分布在机器学习的模型初始化中是十分重要的,但是因为高斯分布的定义域是无穷的,需要设置确定区间,故将高斯分布截断到 [ a , b ] [a, b] [a,b]区间内,区间外的概率全部归零的方法就是截断高斯。
示意图如下:
截断后的区间
[
a
,
b
]
[a, b]
[a,b]内,概率密度函数进行重新归一化,确保总概率为1。
研究思路——Latent潜空间特性
潜空间工作流程
潜在扩散模型的大致工作流程介绍如下:
首先输入prompt
到条件编码器
τ
θ
\tau_\theta
τθ中生成条件嵌入
c
d
cd
cd,该过程表示为:
c
d
=
τ
θ
(
T
e
x
t
)
cd=\tau_\theta(Text)
cd=τθ(Text)
潜空间
Z
0
Z_0
Z0来自对高斯分布的采样,其大小设为
h
′
×
w
′
×
c
′
h'\times w'\times c'
h′×w′×c′。
将条件嵌入
c
d
cd
cd和潜空间
Z
0
Z_0
Z0一起输入去噪扩散模型DDIM的反向过程中,用于生成图像,该过程的数学表示为:
Z
T
=
O
D
E
S
o
l
v
e
(
Z
0
;
ϵ
θ
;
c
d
;
0
;
T
)
Z_T=ODESolve(Z_0; \epsilon_{\theta}; cd; 0 ;T)
ZT=ODESolve(Z0;ϵθ;cd;0;T)
其中
O
D
E
S
o
l
v
e
ODESolve
ODESolve是常微分方程求解器,
ϵ
θ
\epsilon_{\theta}
ϵθ是预训练的噪声估计器,
T
T
T步扩散后,生成的
Z
T
Z_T
ZT输入到解码器
D
D
D中,生成一张尺寸为
h
×
w
×
c
h\times w\times c
h×w×c的图像
X
X
X,其中
h
′
<
h
h'<h
h′<h,
w
′
<
w
w'<w
w′<w,
c
c
c是通道数,所以通常不会变化。
这部分光看文字描述有点绕,也容易看了后边忘了前边,所以我画了一张图便于直观理解。
有关该部分的详细原理应该看论文High-Resolution Image Synthesis with Latent Diffusion Models,看完又应该往前看DDPM和DDIM,这三篇文章就是如今diffusion的理论基础了,后续笔者也会补充阅读。
重建结论
潜在空间的重建过程使用预训练的编码器 E E E实现,从图像 X T X_T XT中提取出潜变量 Z T ′ Z_T' ZT′,即 Z T ′ = E ( X ) Z_T'=E(X) ZT′=E(X)。
基于重建过程作者提出三个结论:
1,重建的
Z
T
′
Z_T'
ZT′对比
Z
T
Z_T
ZT有损,同样的由
Z
T
′
Z_T'
ZT′生成的图像
X
′
X'
X′也比
X
X
X失真。
作者还作了对比实验如下图,其中
X
X
X是原图,
X
−
X
′
X-X'
X−X′是原图与经潜变量转换出图像的差值,后续是设置不同截断区间对图像的影响。
2,设置量化和噪声层后,原图
X
X
X与重建图像
X
′
X'
X′的差异大多保持在0.3以内。作者将差值的绝对值
D
=
∣
Z
T
′
−
Z
T
∣
D=|Z_T'-Z_T|
D=∣ZT′−ZT∣设置为六个区间,分别为
[
0
,
0.05
]
[0, 0.05]
[0,0.05]、
(
0.05
,
0.1
]
(0.05, 0.1]
(0.05,0.1]、
(
0.1
,
0.15
]
(0.1, 0.15]
(0.1,0.15]、
(
0.15
,
0.2
]
(0.15, 0.2]
(0.15,0.2]、
(
0.2
,
0.25
]
(0.2, 0.25]
(0.2,0.25]、
(
0.25
,
0.3
]
(0.25, 0.3]
(0.25,0.3],潜空间大小为
32
×
32
×
4
32\times32\times 4
32×32×4的图像,对应差值分布区间如图:
图像总像素点数量为4096,有3979个像素都落在该区间内,占整体约97%,其中大部分差值又在0.15以内。
作者又研究了根据 Z T Z_T ZT中具有较低 D D D值的截断高斯分布生成的 Z T ′ ′ Z_T'' ZT′′,发现 D ′ ′ = Z T ′ ′ − E ( D ( Z T ′ ′ ) ) D''=Z_T''-E(D(Z_T'')) D′′=ZT′′−E(D(ZT′′))在对应元素位置也较小。
于是有:
Z
T
′
′
=
S
a
m
p
l
i
n
g
(
μ
T
−
1
,
σ
T
−
1
,
(
−
∞
,
μ
T
−
1
−
γ
)
,
(
μ
T
−
1
+
γ
,
+
∞
)
)
Z_T''=Sampling(\mu_{T-1}, \sigma_{T-1}, (-\infty, \mu_{T-1}-\gamma ), (\mu_{T-1}+\gamma, +\infty))
ZT′′=Sampling(μT−1,σT−1,(−∞,μT−1−γ),(μT−1+γ,+∞))
((lll¬ω¬)这公式确实出现的有点突然,对应D小的地方恢复差异小,后续应该介绍根据D采样,这一下跳到后续采样区间了。)
其中 S a m p l i n g Sampling Sampling表示截断高斯分布的采样函数,该分布从区间 ( − ∞ , μ T − 1 − γ ) , ( μ T − 1 + γ , + ∞ ) ) (-\infty, \mu_{T-1}-\gamma ), (\mu_{T-1}+\gamma, +\infty)) (−∞,μT−1−γ),(μT−1+γ,+∞)),看出与普通高斯截断相反,作者截去了峰值即概率最高的部分,而采用到截断值到正负无穷的值。
3,
Z
T
Z_T
ZT的采样过程服从高斯分布,在截断区间范围内,全局高斯采样和截断高斯采样生成图像的差异很小。
如狗图像的右侧三列所示,截断间隔
γ
\gamma
γ设置为0.1和0.3时对图像影响很小。
因此作者得出结论,根据1和2,当生成的图像保持未经处理、量化和嘈杂时,潜在空间的重建在所有三种情况下都会产生损失。根据3,当 γ ≤ 0.3 \gamma\le0.3 γ≤0.3时生成图像对这种变化不敏感。
也就有
D
(
Z
T
′
′
)
≈
X
D(Z_T'')\approx X
D(ZT′′)≈X
因此,LDStega 设计的映射函数应该能够在 LDM 中稳健地隐藏从
Z
T
−
1
Z_{T −1}
ZT−1到
Z
T
Z_T
ZT的生成过程中的秘密数据。
转了一大圈说了什么事呢?重建过程作者三个结论的结论就是下面这张图:
疑问一
1,采样区间问题。根据公式 Z T ′ ′ = S a m p l i n g ( μ T − 1 , σ T − 1 , ( − ∞ , μ T − 1 − γ ) , ( μ T − 1 + γ , + ∞ ) ) Z_T''=Sampling(\mu_{T-1}, \sigma_{T-1}, (-\infty, \mu_{T-1}-\gamma ), (\mu_{T-1}+\gamma, +\infty)) ZT′′=Sampling(μT−1,σT−1,(−∞,μT−1−γ),(μT−1+γ,+∞)), Z T ′ ′ Z_T'' ZT′′采样自高斯去除中间 [ − γ , γ ] [-\gamma, \gamma] [−γ,γ]范围以后的区间,这部分对应概率峰值,按理应该是潜空间中信息量最大的部分,为何不去除头尾的细节纹理?
2,有损重建与高斯阶段的意义。作者对重建过程提出了三个结论,重建过程有损,损失大多在0.3以内,经过阶段高斯的潜向量恢复出的图像近似等于原图像X,逻辑上应该提出如何截断高斯分布来隐藏信息吧,作者直接就说 Z T − 1 Z_{T-1} ZT−1到 Z T Z_{T} ZT的过程可以嵌入数据,有关截断高斯直接撂下了,有损和截断高斯到底有什么用呢?
LDStega框架
LDStega的双方(Sender 和 Receiver)需要共享相同的设置:随机种子和预训练的 LDM。在隐藏过程中,发送者将可控条件文本作为输入(需将提示词转换为词嵌入Embedding),并将秘密数据映射到潜在空间 Z T s Z_T^s ZTs中(使用截断高斯分布的编码策略)。随后LDStega生成载体图像 X s = D ( Z T s ) X^s=D(Z_T^s) Xs=D(ZTs)并将 X s X^s Xs保存为png或jpeg格式。接收端从有损信道中接受载体图像 X r = n o i s e ( X s ) X^r=noise(X^s) Xr=noise(Xs)。提取过程中双方同步所有状态信息,从 X r X^r Xr中提取信息。
大致框架图如下:
LDStega 需要 LDM 的三个预训练子模型:条件编码器
T
θ
T_θ
Tθ 、解码器
D
D
D和编码器
E
E
E。为了生成隐写图像,LDStega 通过使用随机种子初始化潜在空间
Z
0
Z_0
Z0来启动,确保
Z
0
∼
N
(
0
,
I
)
Z_0 ∼ N(0, I)
Z0∼N(0,I),其中
I
I
I表示单位矩阵。
条件文本使用条件编码器
τ
θ
\tau_\theta
τθ生成条件嵌入
c
d
cd
cd,该过程表示为:
c
d
=
τ
θ
(
T
e
x
t
)
cd=\tau_\theta(Text)
cd=τθ(Text)
Z
0
Z_0
Z0和
c
d
cd
cd用于DDIM 逆过程第一步的输入,从而得出均值
μ
0
\mu_0
μ0和均方差
σ
0
\sigma_0
σ0,如
(
μ
0
,
σ
0
)
=
f
(
Z
0
,
c
d
)
(\mu_0, \sigma_0)=f(Z_0, cd)
(μ0,σ0)=f(Z0,cd),其中
f
(
)
f()
f()表示DDIM扩散过程,用于计算每个步骤中的均值和方差。
故由
Z
Z
Z和
c
d
cd
cd可生成
μ
\mu
μ和
σ
\sigma
σ,二者又可以生成新的
Z
Z
Z和
c
d
cd
cd,不断重复可得到
Z
t
Z_t
Zt,故迭代过程有如下公式:
Z
t
=
μ
t
−
1
+
σ
t
−
1
⋅
N
t
−
1
Z_t=\mu_{t-1}+\sigma_{t-1}\cdot N_{t-1}
Zt=μt−1+σt−1⋅Nt−1
其中
N
t
−
1
∼
N
(
0
,
I
)
N_{t-1}\sim N(0,I)
Nt−1∼N(0,I)。
隐藏结构设计
为了最大限度地减少潜在空间重建和隐写图像的有损传输造成的秘密数据丢失,LDStega 设计了一个鲁棒的映射函数 H ( ) H() H(),将长度为 l l l的秘密信息 m m m在 Z T − 1 Z_{T-1} ZT−1到 Z T Z_T ZT的扩散过程中隐藏到潜在空间 Z T s Z_T^s ZTs(重点,只隐藏在最后一步扩散中),映射函数 H ( ) H() H()这也是本文的核心。
因为DDIM的可逆性,发送方和接收者只要共享同一套预训练LDM和映射函数就可以实现模型反转,发送方根据潜向量
Z
T
Z_T
ZT生成图像
X
X
X,并根据
X
X
X反解出近似潜向量
Z
T
′
Z_T'
ZT′,然后计算差值
D
=
∣
Z
T
′
−
Z
T
∣
D=|Z_T'-Z_T|
D=∣ZT′−ZT∣,根据重建结论2设置七个区间,
M
S
=
M
S
0
,
M
S
1
,
.
.
.
,
M
S
6
MS={MS_0, MS_1, ... , MS_6}
MS=MS0,MS1,...,MS6,其中
M
S
6
=
(
0.3
,
+
∞
)
MS_6=(0.3, +\infty)
MS6=(0.3,+∞)。
隐写数据量小于图像
X
X
X尺寸
h
′
×
w
′
×
c
′
h'\times w'\times c'
h′×w′×c′时,使用如下公式在扩散过程中将秘密信息隐藏到差值
D
D
D较小的位置上:
Z
T
s
[
i
]
=
{
H
(
m
[
k
]
,
N
(
μ
T
−
1
[
i
]
,
σ
T
−
1
2
[
i
]
)
,
γ
)
i
f
D
[
i
]
∈
M
S
u
Z
T
[
i
]
i
f
D
[
i
]
∉
M
S
u
Z_T^s[i]=\left\{\begin{matrix} H(m[k], N(\mu_{T-1}[i],\sigma _{T-1}^2[i]),\gamma)&if D[i]\in MS_u\\ Z_T[i]&if D[i]\notin MS_u \end{matrix}\right.
ZTs[i]={H(m[k],N(μT−1[i],σT−12[i]),γ)ZT[i]ifD[i]∈MSuifD[i]∈/MSu
其中
u
∈
{
0
,
1
,
.
.
.6
}
,
k
∈
{
0
,
1
,
.
.
.
,
l
}
,
i
∈
{
0
,
1
,
.
.
.
,
h
′
×
w
′
×
c
′
}
u \in\left \{ 0,1,...6 \right \} , k\in\left \{0,1,...,l \right \}, i \in\left \{0,1,...,h'\times w'\times c' \right \}
u∈{0,1,...6},k∈{0,1,...,l},i∈{0,1,...,h′×w′×c′}
扩散完成后使用编码器生成图像
X
s
=
D
(
Z
T
s
)
X^s=D(Z_T^s)
Xs=D(ZTs)。
(其实这第二个判断就多余,
M
S
0
到
M
S
6
MS_0到MS_6
MS0到MS6已经全覆盖了所有差值
D
D
D的可能区间,根本不可能走到下面的分支,本质就是用
H
(
)
H()
H()函数全修改一遍,参数中也不包含
u
u
u,所以直接改成不判断
D
D
D执行似乎也没问题。该问题在后续答疑2.1中得到部分解答。)
生成载密图像的大致过程为:
1,接收参数。迭代种子
d
d
d,迭代步数
T
T
T,词嵌入
c
d
cd
cd。
2,迭代生成潜向量
Z
T
Z_T
ZT。
Z
0
Z_0
Z0来自高斯采样,随后T步循环迭代根据迭代种子和词嵌入cd生成下一步
Z
Z
Z,最终生成
Z
T
Z_T
ZT。
3,计算差值
D
D
D。生成图像
X
X
X并重构潜向量
Z
T
′
Z_T'
ZT′,与
Z
T
Z_T
ZT作差生成差值
D
D
D。
4,生成载密潜向量
Z
T
S
Z_T^S
ZTS。初始化为
Z
T
Z_T
ZT,在7个差值块内依次分别不断使用上面的修改公式执行像素块修改,如果
D
[
i
]
∉
M
S
u
D[i]\notin MS_u
D[i]∈/MSu直接跳过,直到秘密信息完全隐藏完毕。
完整伪代码描述如下图:
另外:
有论文表明与基于整数的PNG或JPEG格式相比,以浮点TIFF格式保存隐写图像具有更高的提取精度,但TIFF 格式比 PNG 和 JPEG 格式占用更多的存储空间。此外PNG和JPEG应用更广泛,所以该论文还是把图像保存为整数类型的PNG和JPEG格式
X
q
=
Q
u
a
n
t
(
X
s
)
X^q=Quant(X^s)
Xq=Quant(Xs)。
信息隐藏
算法总共四个核心阶段:预处理密文加密,设计映射函数 H ( x ) H(x) H(x),构建潜在空间 Z X s Z_X^s ZXs,生成隐写图像 X s X_s Xs。
预处理阶段使用 k 1 k_1 k1长度的密钥对长度为 l l l的信息 m m m进行加密生成密文 m e m^e me。
为保证鲁棒性提取和生成质量,论文利用高斯分布特性来隐藏数据,设计了候选池 p o o l k = { p o o l k 0 , p o o l k 1 } pool_k=\left \{ pool_k^0, pool_k^1 \right \} poolk={poolk0,poolk1}对称地位于高斯分布的概率密度函数的平均值 μ T − 1 μ_{T −1} μT−1附近, k ∈ { 1 , 2 , . . . , l } k\in \left\{1,2,...,l\right \} k∈{1,2,...,l}。然后,在密钥数据的驱动下,选择一个候选池作为截断区间。为了增强 LDStega 的鲁棒性,引入了一个具有截断区间γ的参数,将两个候选池的区间范围设置为 ( − ∞ , μ T − 1 − γ ) , ( μ T − 1 + γ , + ∞ ) (-\infty, \mu_{T-1}-\gamma ), (\mu_{T-1}+\gamma, +\infty) (−∞,μT−1−γ),(μT−1+γ,+∞)。当 m e [ k ] = 0 m^e[k]=0 me[k]=0时,候选池 p o o l k 0 = ( − ∞ , μ T − 1 − γ ) pool_k^0=(-\infty, \mu_{T-1}-\gamma ) poolk0=(−∞,μT−1−γ)从截断高斯分布中采样,反之当 m e [ k ] = 0 m^e[k]=0 me[k]=0时候选池 p o o l k 1 = ( μ T − 1 + γ , + ∞ ) pool_k^1=(\mu_{T-1}+\gamma, +\infty) poolk1=(μT−1+γ,+∞)
改写后的潜空间采样公式为:
Z
T
s
[
i
]
=
{
Sampling
(
μ
T
−
1
[
i
]
,
σ
T
−
1
[
i
]
,
pool
k
0
)
,
ifm
e
[
k
]
=
0
Sampling
(
μ
T
−
1
[
i
]
,
σ
T
−
1
[
i
]
,
pool
k
1
)
,
ifm
e
[
k
]
=
1
Z_{T}^{s}[i]=\left\{\begin{array}{ll} \text { Sampling }\left(\mu_{T-1}[i], \sigma_{T-1}[i], \text { pool }_{k}^{0}\right), & \text { ifm }{ }^{e}[k]=0 \\ \text { Sampling }\left(\mu_{T-1}[i], \sigma_{T-1}[i], \text { pool }_{k}^{1}\right), & \text { ifm }{ }^{e}[k]=1 \end{array}\right.
ZTs[i]={ Sampling (μT−1[i],σT−1[i], pool k0), Sampling (μT−1[i],σT−1[i], pool k1), ifm e[k]=0 ifm e[k]=1
上述过程不断重复,直到所有密文都被隐藏,随后使用解码器
D
D
D生成载密图像
X
s
X^s
Xs。
该部分进一步解释了映射函数
H
(
)
H()
H()的方法,该方法大致步骤为:
1,接收参数。输入
μ
T
−
1
[
i
]
,
σ
T
−
1
[
i
]
\mu_{T-1}[i], \sigma_{T-1}[i]
μT−1[i],σT−1[i],第k个加密数据
m
e
[
k
]
m^e[k]
me[k],,第i个潜空间元素和阶段元素
γ
\gamma
γ。
2,计算候选池区间。
3,根据密文分别计算采样潜向量。
具体算法步骤如下图:
简单来说,两个候选池就是我们疑问1.1中的
(
−
∞
,
μ
T
−
1
−
γ
)
,
(
μ
T
−
1
+
γ
,
+
∞
)
(-\infty, \mu_{T-1}-\gamma ), (\mu_{T-1}+\gamma, +\infty)
(−∞,μT−1−γ),(μT−1+γ,+∞),当密文为0或1时,潜向量的值被设置为从对应区间中采样的值,这个值并不直接指定,而是采取类似随机的方法。
这也是隐写的逻辑,修改载体要确保修改后的内容仍然符合自然载体统计特征,避免被检测。其次改写直接指定具体数值会暴露隐写规律,故通常避免直接映射。
文字描述总是不够直观,隐藏过程画图来看如下:
信息提取
接收端通过有损信道接收到图像
X
r
=
N
o
i
s
e
(
X
q
)
X^r=Noise(X^q)
Xr=Noise(Xq),首先使用编码器
E
E
E从
X
r
X^r
Xr中提取出潜变量
Z
T
′
Z_T'
ZT′,然后使用共享的随机种子种子和条件文本
c
d
cd
cd重现
Z
T
−
1
Z_{T −1}
ZT−1的生成过程,并算出
μ
T
−
1
\mu_{T-1}
μT−1和
σ
T
−
1
\sigma_{T-1}
σT−1,该过程从
Z
0
Z_0
Z0开始重新推算?
接收方根据差值
D
D
D和共享秘密消息依次从
Z
T
s
′
Z_T^{s'}
ZTs′中提取消息,接收器以高斯分布的概率密度函数的平均值
μ
T
−
1
μ_{T −1}
μT−1作为对称轴,重建候选池
p
o
o
l
k
0
pool^0_k
poolk0和
p
o
o
l
k
1
pool^1_k
poolk1,范围为
(
−
∞
,
μ
T
−
1
)
(-\infty,\mu_{T-1})
(−∞,μT−1),
(
μ
T
−
1
,
+
∞
)
(\mu_{T-1},+\infty)
(μT−1,+∞)。
这部分终于和前面采样区间问题对上了,采样区间也就是候选池的大致范围是这样的:
对应不同密文其能采样的值域也不同,当密文
m
e
=
0
m^e=0
me=0时只可能出现在均值
μ
\mu
μ左边,当密文
m
e
=
1
m^e=1
me=1时只可能出现在均值
μ
\mu
μ右边,所以反推出
T
−
1
T-1
T−1阶的条件后,只需使用编码得到的
Z
T
S
′
Z_T^{S'}
ZTS′与
μ
\mu
μ比较即可恢复出密文。
最后使用如下公式重复操作直到取出所有秘密数据,使用密钥
k
1
k_1
k1解密。
m
e
′
[
k
]
=
{
0
,
if
Z
T
s
′
[
i
]
≤
μ
T
−
1
[
i
]
1
,
if
Z
T
s
′
[
i
]
>
μ
T
−
1
[
i
]
m^{e^{\prime}}[k]=\left\{\begin{array}{ll} 0, & \text { if } Z_{T}^{s^{\prime}}[i] \leq \mu_{T-1}[i] \\ 1, & \text { if } Z_{T}^{s^{\prime}}[i]>\mu_{T-1}[i] \end{array}\right.
me′[k]={0,1, if ZTs′[i]≤μT−1[i] if ZTs′[i]>μT−1[i]
这部分说起来一带而过,但只有载密图像
X
r
X^r
Xr是无法推出
Z
T
−
1
Z_{T-1}
ZT−1的,所以我反复琢磨,排除所有可能只剩下一个真相,就是用随机种子和提示词从头推一遍潜空间生成过程。整个生成过程和差值
D
D
D都在接收端重新计算一遍,接收端才能获得提取的相关信息,
μ
T
−
1
\mu_{T-1}
μT−1,
σ
T
−
1
\sigma_{T-1}
σT−1来自推出的
Z
T
−
1
Z_{T-1}
ZT−1,差值
D
D
D来自推出
Z
T
Z_T
ZT和与生成图像重建潜空间
Z
T
′
Z_T'
ZT′的差,提取过程总结图如下:
疑问二
1,均值和标准差为什么会出现序列?
公式
Z
T
s
[
i
]
=
{
H
(
m
[
k
]
,
N
(
μ
T
−
1
[
i
]
,
σ
T
−
1
2
[
i
]
)
,
γ
)
i
f
D
[
i
]
∈
M
S
u
Z
T
[
i
]
i
f
D
[
i
]
∉
M
S
u
Z_T^s[i]=\left\{\begin{matrix} H(m[k], N(\mu_{T-1}[i],\sigma _{T-1}^2[i]),\gamma)&if D[i]\in MS_u\\ Z_T[i]&if D[i]\notin MS_u \end{matrix}\right.
ZTs[i]={H(m[k],N(μT−1[i],σT−12[i]),γ)ZT[i]ifD[i]∈MSuifD[i]∈/MSu中,
μ
\mu
μ和
σ
\sigma
σ明明是高斯分布的一个均值和方差,为什么会出现序列切片操作?
答疑
1.1采样区间。如果要截取尾部的区间,保留中间部分,比如设置区间为 ( − γ , μ ] , ( u , + γ ) (-\gamma,\mu],(u,+\gamma) (−γ,μ],(u,+γ),在提取信息时的标志位很难界定,可能由于误差等原因造成提取误判。
1.2 有损重建的意义。设置7个全覆盖所有差值 D D D的并按照块的顺序写入隐藏信息的目的应该是鲁棒和混淆。如从重建差值最小的地方隐藏就像故事会里给返航战斗机加固没被打到的位置一样,通过实践寻找潜向量解码时最小损失的位置。同时顺序修改所有潜变量的信息可能同样造成统计分布上的问题,被隐写分析算法检测到,通过 D D D作为混淆手段可以将信息均匀分布到整个潜空间中,避免对整体统计分布的破坏,。
2.1 均值与标准差的序列。均值 μ \mu μ和标准差 σ \sigma σ都应该是个标量,但在公式中使用了他们的切片 [ i ] [i] [i]。这是因为噪声的计算可以抽象为二维, μ \mu μ和 σ \sigma σ同时对整个图像施加影响,那对每个像素点应该也有单独的影响,故可以取出切片。此外文章内都是对二维图像进行操作,但公式也都采取一维向量的方式计算,这是因为神经网络在处理图像时通常要展平成一维。
实验结果
以前觉得这部分不重要,但随着思维和阶段的转变,如何证明自己方法的优越性还是要拿出结果来,所以这部分要着重看一下作者做了哪些实验,取得了什么成果,得出了什么结论。
作者使用
32
×
32
×
4
32\times32\times4
32×32×4的图像,取截断参数
γ
=
0.3
\gamma=0.3
γ=0.3,比较了两种嵌入隐写算法:Hidden
和CHAT-GAN
,以及四种(算上自己)生成隐写算法:IDEAS
、S2IRT
、StegaDDPM
。
上述方法使用bedroom
和cat
数据集以及来自FFHQ的面部图像进行评估。
准确度与容量
根据差值
D
D
D来分的区域隐藏信息对应容量和提取准确性如下图:
作者认为该效果很好,因为即使取了最大容量的隐写方式提取精度也很不错。
可控性
该部分验证提示词对图像生成过程的影响,使用不同的提示以及使用相同提示生成多张图像展示如下:
作者尤其提到,在使用相同提示生成多张图像时,IDEA以及作者的前一篇文章StegaDDPM在这方面存在不足。
LDStega授予对生成图像内容的精确控制权,潜在攻击者无法通过仔细检查隐写图像的应用程序上下文来辨别隐写术的存在,从而增强隐写术应用的安全性。
对比实验
作者将图像保存为离散整数格式的PNG和JPEG格式,并对比不同数据集下提取的准确率与容量,SE为深度学习的嵌入方法,GIS为生成方法。
不管什么格式,什么数据集,该方法的准确率和容量都是最优的。
鲁棒性
作者对生成的Stego图像进行了常用的图像攻击,包括身份、裁剪、盐和胡椒噪声、高斯噪声和JPEG压缩。同时因为上表中显示在没有攻击的情况下Hidden
与IDEAS
的准确率就已经很低了,所以这里鲁棒性的对比测试就不带他们俩。
剩下三种方法对攻击的对比实验如图,这三种方法的图像格式都是PNG的。
论文方法保存为JPEG格式的鲁棒性实验如图,PNG效果要优于JPEG。
总结
现在读完了回过头来看,这篇文章确实有一定故事性,前半部分提出研究潜空间的三个结论,根据这三个结论提出的潜空间隐写方法。
从实验效果和功能完整性来看,这篇文章暂时也是生成隐写最好,最完备的。
对文章整体流程和思路再做大致总结如下。
作者首先提出潜空间的三个结论:
1,重构后的潜空间与原空间有差值。
2,差值大部分小于0.3。
3,潜空间生成来自高斯采样,全局高斯与截断高斯采样差异很小。
派生出的结论是——重建潜空间
Z
X
′
Z_X'
ZX′的截断高斯采样潜空间
Z
X
′
′
Z_X''
ZX′′生成的图像
X
′
X'
X′与原图像
X
X
X几乎相同。
其中截断区间由系数
γ
\gamma
γ确定,区间为
(
−
∞
,
μ
T
−
1
−
γ
)
,
(
μ
T
−
1
+
γ
,
+
∞
)
(-\infty, \mu_{T-1}-\gamma ), (\mu_{T-1}+\gamma, +\infty)
(−∞,μT−1−γ),(μT−1+γ,+∞)。
隐藏算法为密文为0则从左区间采样,密文为1从右区间采样,将采样值赋给扩散最后一步
Z
T
Z_{T}
ZT,采样值来自前一步潜变量即
Z
T
−
1
Z_{T-1}
ZT−1的高斯采样,因为结论三,全局高斯与截断高斯采样差异小,故可认为修改后的
Z
T
s
Z_{T}^s
ZTs生成的图像与原图一致。
隐藏位置依据结论一和二,将潜向量
Z
T
Z_{T}
ZT与从图像
X
X
X中重建的
Z
T
′
Z_{T}'
ZT′作差,得到差值向量
D
D
D,将
D
D
D从小到大划分为7个区间,秘密信息先嵌入
D
D
D小的位置。这种位置选择有两个好处:增强鲁棒性,提高混淆能力。
信息隐藏流程图再次展示:
提取密文首先从接收图像
X
r
X^r
Xr中获取潜向量
Z
s
Z_s
Zs,再依据共享的随机种子和提示词重新推算
Z
T
−
1
Z_{T-1}
ZT−1,再根据
(
μ
T
−
1
,
σ
T
−
1
)
=
f
(
Z
T
−
1
,
c
d
)
(\mu_{T-1},\sigma_{T-1})=f(Z_{T-1},cd)
(μT−1,σT−1)=f(ZT−1,cd)计算出
μ
T
−
1
,
σ
T
−
1
\mu_{T-1},\sigma_{T-1}
μT−1,σT−1,此时获得了倒数第二步的高斯分布。再自行生成计算差值
D
D
D,根据
D
D
D和共享密文长度
l
l
l提取密文,具体方法为:
与均值
μ
T
−
1
\mu_{T-1}
μT−1比较,若值小则说明密文为0,值大说明为1。
提取密文流程图再次总结如下:
展望
读完惊叹于算法的精妙,怎么想出来的呢?每个考虑的点都有理论依据和说明,国家自然科学基金名副其实,但是我个人仍然有一些想法。
精度能否再提高?虽然目前97%左右的提取精度已经远远好与已有算法,但是生成隐写应该完全面向消息的隐蔽传递,这个消息可能是一句话,一串密钥,应该是完全不允许有损失的。在该项目基础上给密文增加纠错编码等操作,能否让提取精度再提高哪怕一点点呢?
提取过程能否简化?目前的提取过程几乎完全重现了隐藏的步骤,从差值到分布参数都要再次计算,能否传递更多非敏感信息简化这一过程,使信息提取变得轻量化呢?
增加隐写分析实验。生成式隐写对比传统嵌入式最显著的优点就是生成图像天生更自然,没有修改过程影响图像统计分布,隐蔽性更强。但目前看的文章没有一篇量化评价该指标,都仅仅是在摘要和引言中提及,在该方向可作补充实验。
此外对于个人,阅读论文中还是有一些基础理论不理解的地方,这是因为扩散生成的底层三大原理还没了解,DDPM、DDIM以及Latent的阅读是下一步目标。