【论文阅读】【论文复现】Image Disentanglement Autoencoder for Steganography without Embedding(IDEAS)-CVPR-2022

参考链接:

[CVPR 2022] 基于图像解耦生成的无嵌入隐写 - 知乎 这篇论文介绍的很好
信息隐藏|Image Disentanglement Autoencoder for Steganography without Embedding实现无嵌入隐写的 图像无纠缠自动隐写器
代码:https://github.com/Lemok00/IDEAS

无嵌入隐写(steganography without embedding, SWE)隐藏秘密信息的过程不会直接修改载体图像,因此具有免疫传统隐写分析器攻击的独特优势。

现有无嵌入隐写可以分为两类:

  1. 基于映射的SWE通过设计映射机制,将秘密信息转换为从现有图像集中选取的图像哈希序列,其关键缺陷在于载密容量很小;
  2. 基于生成的SWE提出训练生成对抗网络(generative adversarial networks,GANs)等深度生成网络,通过生成器将秘密信息转换为生成图像以隐藏秘密信息。

现有基于生成的SWE的三个问题:(1)生成的载密图像不够真实,影响对不可察觉性(imperceptibility)的要求;(2)生成器的生成多样性受限,可能引发潜在的安全问题;(3)秘密信息的提取准确率较低。

本文提出了一种基于生成的SWE方法——用于隐写术的图像解耦自动编码器IDEAS(Image DisEntanglement Autoencoder for Steganography)。通过将图像解耦为结构和纹理两种特征,IDEAS可以利用结构特征的稳定性提升秘密信息的提取准确率,同时利用随机采样纹理特征提升生成多样性,从而提高隐写的安全性。此外,作者还设计了一种自适应映射机制,在确保不同等级的提取要求的前提下,进一步增强合成图像的多样性。

在这里插入图片描述

本文提出的IDEAS网络的训练流程图,包括三个部分:(a)编码结构和纹理持征,(b)合成图像、©提取输入秘密张量。
解耦编码器 E,将图像解耦编码为结构张量和纹理向量两种特征;
生成器 G,根据结构张量和纹理向量生成真实图像;
结构生成器G_stru ,将均匀采样的秘密张量转换到结构特征空间,以隐藏秘密信息;
提取器Ex ,从编码的结构张量中进一步提取秘密张量;
图像判别器 D_real,预测输入图像为真实图像的概率;
纹理判别器D_co ,预测输入图像块和参考图像块来自同一图像的概率;
分布判别器D_dist ,预测输入向量来自特定分布的概率。

IDEAS的训练过程包含三部分:
(1)特征编码和生成(Feature encoding and generation)部分:训练编码器将参考图像解耦为结构特征和纹理特征,并通过分布判别器和判别损失强制纹理编码空间符合用于随机采样纹理的特定分布([-1, 1]区间上的均匀分布),以及训练结构生成器将均匀采样的秘密张量转换到结构特征空间以隐藏秘密信息;
(2)图像生成(Image synthesis)部分:通过训练生成器根据不同的结构和纹理特征组合生成图像,并通过重建损失约束图像重建能力、通过纹理判别器约束生成图像的纹理相似度、通过图像判别器约束生成图像的真实度,从而实现高质量的图像解耦生成; 采用StyleGAN2作为backbone architecture
(3)秘密张量提取(Secret tensor extraction):训练编码器从生成图像中恢复其原始结构特征,并训练提取器从提取的结构特征中提取秘密张量。

图2为IDEAS的秘密通信流程图,主要包括两个阶段:
(1)隐藏阶段(Hiding phase)用于秘密信息的发送,该阶段首先将秘密信息映射为秘密张量,然后使用结构生成器转换为结构特征并和随机采样的纹理特征一起输入生成器生成载密图像;
(2)提取阶段(Extraction phase)用于秘密信息的提取,该阶段首先使用编码器恢复载密图像的结构特征,然后使用提取器提取秘密张量,最后将秘密张量逆向映射为秘密信息。
在这里插入图片描述
为了提高安全性(合成风格多样性),作者设计了自适应的映射机制,根据映射参数的不同,IDEAS具有三种模式:(1)应对需要高提取准确率应用场景的提取优先模式;(2)平衡模式;(3)应对需要高安全性应场景的多样性优先模式。

重点关注安全性和提取准确性(这个一直是神经网络模型的弱点)

提取准确率在256bit和512bit时接近100% ,隐藏容量为256×σ(范围为1,2,3)×N(范围为1,2)

IDEAS生成的载密图像具有真实的结构、清晰的纹理和多样的风格,在生成图像质量隐写安全性方面具有显著优势。

实验设置:

数据集: IDEAS和基线模型是在来自两个公开可用数据集的三个子集上进行训练的,分别是来自LSUN的卧室和教堂图像,以及来自FFHQ的人脸图像。每个子集包括70,000个随机选择的图像,归一化为256 × 256像素。

评价指标: 通过比较受试者工作特征(ROC)曲线下面积(AUC)和Frechet初始距离(FID)来评估模型,以衡量隐写分析工具和主观视觉感知的不可检测性。同时,我们比较了不同隐藏容量下IDEAS与基准SWE方法的秘密消息提取精度。IDEAS总共包含64.5M个参数,图像合成耗时12.0 ms,消息提取耗时9.4 ms。

容量在256bit~1536bit之间
在这里插入图片描述


代码复现

01 下载LSUN数据集

以下3种下载方式任选一种:
1)https://pan.baidu.com/s/17cf-7ZktjbmitZUzt9KJTg#list/path=%2F 提取码:gyl5 (开VIP速度很快)
2)http://dl.yf.io/lsun/scenes/
3)https://github.com/fyu/lsun 用脚本-c传场景参数
在这里插入图片描述

02 train

  1. 命令行python train的时候报错:OSError: /home/miniconda3/envs/IDEAS/lib/python3.7/site-packages/nvidia/cublas/lib/libcublas.so.11: undefined symbol: cublasLtGetStatusString, version libcublasLt.so.11
    原因: CUDA和nvidia版本不匹配 https://blog.csdn.net/bulucc/article/details/130406842
    解决方案: 添加报错的lib路径
  2. apt-get update时报错 E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?
    解决方案:https://blog.csdn.net/zjrwinner/article/details/131785246
    sudo rm /var/cache/apt/archives/lock
    sudo rm /var/lib/dpkg/lock
    如果还无法解决再输入:
    sudo dpkg --configure -a
    sudo rm /var/lib/dpkg/lock-frontend
  3. RuntimeError: Ninja is required to load C++ extensions
    解决方案: sudo apt-get install ninja-build
    pip3 install ninja

  1. sudo apt-get install ninja-build报错

    pkg: 依赖关系问题使得 ubuntu-drivers-common 的配置工作不能继续: 
    ubuntu-drivers-common 依赖于 udev (>= 204-0ubuntu4~);然而:软件包 udev 尚未配置。
    dpkg: 处理软件包 ubuntu-drivers-common (--configure)时出错: 依赖关系问题 - 仍未被配置
    dpkg: 依赖关系问题使得 update-notifier 的配置工作不能继续: 
    update-notifier 依赖于 ubuntu-drivers-common;然而:软件包 ubuntu-drivers-common 尚未配置。
    

    解决方案: pip安装即可

    以下命令可能会导致系统错误,不建议使用(踩坑记录)
    1. 运行以下命令,重新配置udev软件包:
    sudo dpkg --configure udev
    如果该命令成功完成,则再次尝试配置ubuntu-drivers-common软件包。
    2. 如果第一种方法不起作用,您可以尝试运行以下命令以强制重新配置所有未配置的软件包:
    sudo dpkg --configure -a
    这将尝试重新配置所有具有未满足依赖项的软件包。
    3. 如果上述方法都没有解决问题,您可以尝试删除相关软件包并重新安装。运行以下命令来删除ubuntu-drivers-common和udev软件包:
    sudo apt-get remove ubuntu-drivers-common udev 我在这一步之后就可以安装ninja-build了
    然后运行以下命令重新安装这些软件包:
    sudo apt-get install ubuntu-drivers-common udev **

  2. ubuntu下安装ImageMagick7 参考这篇文章


排掉这些bug,就可以进行训练了
python train.py --exp_name NAME --dataset_type TYPE --dataset_path PATH --num_iters ITERS
训练结果:
在这里插入图片描述

  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
你可以通过以下步骤在Kali Linux上复现网络安全漏洞: 1. 安装Kali Linux:首先,从Kali Linux官方网站上下载并安装Kali Linux的最新版本。确保你的系统满足硬件要求,并按照官方指南进行安装。 2. 更新系统:安装完成后,打开终端并使用以下命令更新系统软件包: ``` sudo apt update sudo apt upgrade ``` 3. 选择漏洞和工具:根据你想要复现的具体漏洞,选择合适的工具。例如,如果你想复现Web应用程序的漏洞,可以使用Burp Suite或OWASP ZAP来进行渗透测试。 4. 设置实验环境:在复现漏洞之前,建议你在虚拟环境中设置一个实验环境。你可以使用虚拟机软件(如VirtualBox)创建一个虚拟机,并在其中安装你想要测试的目标应用程序。 5. 扫描目标:使用选定的工具对目标应用程序进行扫描,以寻找可能的漏洞。这些工具通常提供了各种扫描和攻击功能,可以帮助你发现潜在的漏洞。 6. 复现漏洞:一旦你找到了漏洞,你可以使用相应的工具和技术来尝试复现它。这可能涉及到发送特定的请求、利用漏洞或执行其他攻击方法。 7. 记录结果:在复现漏洞的过程中,务必详细记录你的操作和结果。这对于后续的分析和报告非常重要。 请注意,在进行任何网络安全测试之前,确保你已经获得了合法的授权,并遵守适用的法律和道德准则。此外,仅在你拥有合适的技术知识和经验的情况下进行漏洞复现,以避免对目标系统造成不必要的损害。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月漫长_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值