网络信息安全-图像隐写与检测综述

news2025/1/4 17:25:23

任务目标:

本选题需要学习经典的图像信息隐藏算法,包括基于空域的隐写算法和数字水印算法。 接着你将使用某种编程语言实现这些算法,实现在图片中嵌入一些信息,例如字符串和一些 文件。除此之外,还需要尝试一些基础的隐写检测方法,用于分析图像是否被嵌入了隐藏信 息。最后,将这些算法封装成多个模块,并设计一个友好的 GUI 界面,使用户能方便地进行使用。

任务要求:

1、学习信息隐藏的概念,掌握基本的图像隐写算法;
2、实现 LSB 隐写、DCT 隐写和 F5 隐写,其中 LSB 隐写必须实现,其他两种隐写算法至少选择一个实现,学有余力可以实现其他更好的算法;
3、掌握并实现任意一种 LSB 隐写检测方法,例如基于值对现象的检测方法;
4、设计一个 GUI 界面集成这些功能,可以实现字符串或文件的隐写和读取;
5、还有时间的情况下,实现图片嵌入盲水印的功能。

实验演示博客:

    有关于网络信息安全-LSB图像隐写与检测的设计实现的详细编程内容详见下面这个博客,本文主要是为了介绍有关于图像隐写技术的技术综述及相关图像隐写技术的实现原理,目的是为了使读者可以快速了解图像隐写的相关知识。

网络信息安全-LSB图像隐写与检测的设计实现icon-default.png?t=MBR7https://blog.csdn.net/weixin_51989356/article/details/128514442

演示须知:

本次实例使用Pycharm开发

python版本为3.6

    特色
1,通过大量调研,学习掌握了信息隐藏的概念,掌握基本的图像隐写算法;
2,实现了基于LSB的隐写术,其他隐写算法实现了原理阐释;
3,设计出了两种LSB隐写检测方法:灰度图像值对法,二次随机隐写检测;
4,实现了图像对于水印的加注以及还原水印图像的演示开发
5,功能性模块的演示部分使用了GUI实现。
    不足
对于隐写术的理解我们理解的不是很深刻,并且对于Python以及Matlab的开发能力不足,只作教学演示,没有办法投入现实应用。


第一章 绪论

1.1. 选题背景


随着互联网的急速发展,人们在通过网络进行数字信息传送和共享的同时,也存在很多安全隐患,如信息的破坏、纂改、丢失等问题也引起各方的重视。
隐写术是信息安全领域的一个重要分支,该技术通常以图像、文本、视频等数字产品为载体,根据载体的特征将秘密信息嵌入到载体中,达到秘密传递信息的目的,有效地保障了秘密信息安全性。
信息隐藏技术是信息安全领域的一个研究热点,该技术通常以文本、图像、视频等作为载体,利用载体中存在的冗余信息来隐藏秘密信息[1]。LSB(Least Significant Bits)算法主要应用于将秘密信息嵌入到载体图像像素值的最低有效位(也称最不显著位),改变这一位置对载体图像的品质影响[2]。LSB算法以其隐藏容量大,隐蔽性好,对载体改动较小,易于实现的特点,通过将秘密隐藏在图像中,在不被第三方检测出的情况下进行传送,更具有安全性。


1.2 选题价值


随着网络和多媒体的迅速发展,人们可以快速的利用网络进行信息的传送,资源的共享,与此同时,网络的开放性也导致安全隐患的产生,信息的破坏、篡改、丢失以及其他问题日益严重引起了各方的重视。为了保证信息的安全传输,信息隐藏技术得到了国内外各领域广泛的研究和有效地应用,各国的军事、政治、经济等重要部门的机密敏感信息都在采用隐写技术来确保其安全传输[5]。图像隐藏具有更加明显的实用价值和学术研究意义。将秘密信息隐藏在普通图像中,通过普通的图像发送将秘密信息传递出去,从而具有更大的隐蔽性和安全性,更容易逃过拦截者的破解。因此,信息隐写研究为隐蔽通信提供了理论依据和有效处理方法。
 


第二章 相关技术介绍

本课设用到的重要概念、原理等介绍

2.1.图像隐写术

2.1.1. 图像格式

随着移动智能终端的快速普及,多媒体数字图像的传播和交换越来越便捷。隐写术作为信息安全技术的重要分支,已经在桌面PC时代经历十余年的发展,得到广泛应用。如何在移动智能终端上保证数字图像安全通信,成为当前研究热点之一[3]。

图像隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息传递事件或者信息的内容。常见图像一般有JPG、PNG、BMP三种格式。

JPG是应用最广泛的图像格式之一,它采用一种特殊的有损压缩算法,将不易被人们察觉的颜色删除,从而达到较高的压缩比,但这样会导致画质缺失。PNG与JPG格式类似,压缩比高于GIF,支持图像透明,画质中等。BMP相对于JPG和PNG最大的好处就是结构简单,能被大多数软件“接受”,可称为通用格式,且其不采用任何压缩,无损,颜色准确,有2色、16色、256色、真彩色各种选择,图质最好。所以,本文在进行信息隐写时采用BMP格式数字图像。

PNG(可移植的网络图形格式)适合于任何类型,任何颜色深度的图片。也可以用PNG来保存带调色板的图片。该格式使用无损压缩来减少图片的大小,同时保留图片中的透明区域,所以文件也略大。尽管该格式适用于所有的图片,但有的Web浏览器并不支持它。

BMP(Window标准位图)是最普遍的点阵图格式之一,也是Window系统下的标准格式,是将Window下显示的点阵图以无损形式保存的文件,其优点是不会降低图片的质量,但文件大小比较大。

2.1.2. 图像隐写术

图像隐写术是关于信息隐藏,即不让计划的接收者之外的任何人知道信息的传递事件(而不只是信息的内容)的一门技巧与科学。它是用户将特定的信息隐藏在载体中,在信息传输中,监控者虽然知道用户有信息在传输信道中传输,但是无法察觉载体中隐藏特定的信息。但是,它又和图像加解密技术不同,图像加解密技术是用户利用数学或物理手段,对电子信息在传输过程中和载体中进行保护,以防止特定信息泄露的技术。

2.1.3. 图像隐写的流程

如图2.1.2所示的为图像隐写的流程。

标题图2.1.2 图像隐写的流程

 如图2.1.2描述,图像隐写实现的具体步骤如下:

1,首先用户将特定的信息通过图像隐写算法嵌入图像载体中,并对隐私载体进行传输;

2,然后监控者在传输信道中拦截隐私载体,发现用户传输的信息并非重要文件,继续让其在传输信道中传输,直至传输到接收者;

3.最后接收者接收隐私载体后通过提取算法将特定的信息提取出来。

2.1.4. 隐写术与加密的区别

如表2.1.4所列举的内容,隐写术嵌入媒体的消息数据通常是加密后的密文,因此两者并非矛盾对立关系!

表2.1.4 隐写术与加密的区别

隐写术隐藏

密码方法加密

数据形式

媒体数据

密文

应用目的

保护数据传递和存储的行为不被发现

保护数据不被对手得到

安全性

抗检测能力

可证明安全性

对抗手段

隐写分析检测

密码分析


第三章 LSB图像隐写技术综述

3.1. LSB隐写算法介绍和分析

3.1.1. LSB算法概念

LSB(Least Significant Bit)隐写算法,中文译名为最低有效位,是指一个二进制数字中的最低位。LSB隐写算法的基本思想是用待嵌入的隐私信息取代载体图像数据的LSB,构成载密图像。又因为LSB对图像的外部特征影响很小,所以人难以用肉眼看出载密图像的变化。然而,人眼不仅对LSB位不可感知,对比LSB位更高的某些位同样不可感知,这就意味着这些更高的位同样可以用嵌入隐秘信息。

3.1.2. LSB隐写的特点

1,抗检测能力越好,即被检测正确的正确率越低,则表示越安全;

2,隐写对数据的修改幅度跟数量远小于数字水印、可逆隐藏等方法

3,与其他类型信息隐藏方法相比,隐写术主要的特点是以对抗检测为目的,嵌入信息容量相对较大。

3..3. LSB隐写原理

最低比特位(Least Significant Bit)替换:

将媒体内容数据的最低比特位替换为需要嵌入的消息比特串

标题图2.2.3.1  LSB的简化实现过程

 

如图2.2.3.2所展示的,之所以使用最低比特位是因为最低比特位所携带的信息比较少,基本上是噪声,所以不太会影响得到整体图像的呈现,并且用肉眼不会看得出极小的细微差距。

标题图2.2.3.2 位图像呈现

 

LSB替换隐写按照嵌入位置选取方法的方法可以分为两种:连续嵌入法和随机间隔法 ,之间的区别如图2.2.3.3所示。

标图2.2.3.3 隐写的种类题

3.1.4. 改进的LSB方法

注意,对整数加减1都能反转最低比特位

标图2.2.4题

 所以需要修改的时候可以根据随机数随机选择+1或-1,使得双向转移提取方只需要提取最低比特位即可,无需知道修改操作;LSB matching 改进非常的简单,但使得对LSB替换方法的检测方法全都失效,采用+1和-1修改还能够同时先择是否扰动次低比特位,这成为后来双层嵌入的基础。


第四章 其他隐写算法分析

4.1. F5隐写算法介绍和分析

F5隐写算法将信息隐藏在整个图像中,且采用矩阵编码的方式来进行信息嵌入,可以在改变很小的情况下嵌入大量的信息,嵌入效率高,有极强的鲁棒性,同时矩阵编码可以使得RS统计分析不能正确册数嵌入信息的长度。

由于F5的嵌入方式仍是规律性的,其对DCT(离散余弦变换)直方图的改变方式是固定的,并且在嵌入过程中会使值为零的DCT系数增加。注意到在嵌入过程中产生一个值为零的DCT系数(称为Shrinkage)后,F5算法将把这个零去掉之后重新进行矩阵编码并嵌入,减少了载体图像的嵌入容量。依据F5嵌入对DCT直方图产生的规律性的印象,能够估算出图像中可能含有的秘密信息长度。

4.2. 矩阵编码

矩阵编码的基本思想是用n位LSB表示k位信息(n>k),还是先从一个例子引入。如果要写入的原LSB是a=a1a2a3(n==3),要写入的信息x=x1x2(k == 2),(这里的带下标的a和x都是值为0或1的二进制位,代表各个位上的对应值)。

则让a的每两位异或得到的结构跟对应要写入的信息比对,不相等则修改LSB,相等则不改变。这个例子会导致下面四种情况如图2.3.2所示:

标题图2.3.2

 

由于二进制的异或运算的特性可以发现,这个例子里最多只要更改1位就可以达成数据嵌入的效果。

最大更改位数 dmax 的不同代表着不同的编码方式,毫无疑问, dmax取值不同使n和k的关系不同。每种编码方式都可以用有序数组(dmax,n,k)表示,而对于F5隐写,采用的矩阵编码是属于dmax == 1,即(1,n,k)的编码方式,此时n和k满足n ==2k - 1。

4.3. OutGuess隐写算法介绍和分析

OutGuess隐写算法主要考虑如何在嵌入隐秘信息后,最大限度地保持载体图像的概率统计分布。OutGuess隐写算法是将隐私信息嵌入载体图像后,并且对其进行纠正,使得载密图像的DCT系数直方图和原载体图像的DCT系数直方图一致。

OutGuess隐写算法是在一定意义上保持了直方图特定,算法安全性得到了提高。但是由于嵌入和纠正均修改了DCT系数,所以会引起图像空间域的边界不连续性,且嵌入信息越多带来的变化越大,这会引起监控者的怀疑。


第五章 实训总结

我是在学校举办CTF的比赛时才开始接触到一点点有关于图像隐写的相关知识的,那个时候,学校协会还请到了我们学院的关老师给我们来做了专题分享会,我受益匪浅。这次做项目选到了这个选题很大程度是因为上次在CTF的校赛中有关于图像的隐写题我有很多没解出来,所以借着这次机会,我得以深入了解有关于图像隐写的相关知识,算是终于在这块知识上入了门了,希望有了此次实验的宝贵经验,未来可以是我在CTF的竞赛上走的更远,一下是我的一些收获:
1,能够真正理解两种方法的思想和每一个处理步骤的作用,才能真正写出程序并进行结果分析;
2, 8位的像素值从0开始到255,但是数组的下标从Ⅰ开始到256,所以像素值的2i对应数组下标2i-1,像素值的 2计1对应数组下标2i,像素值只存在2i->2计1 的变换,对应于只存在2i-1->2i 的下标值变换,在编写代码时需注意此类细节,否则实验结果将大打折扣;
3, 当实验结果与预期的有偏差,不仅仅是检查理解实验有偏差、程序是否正确,而且需要改变不同的实现方法、不同的参数以及利用不同的图像来进行测试和比较,这样才可能更快判断出问题出在哪里,并找到解决办法,而且有的时候不一定是代码有误的问题。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL8--通过角色管理权限

原文网址:MySQL8--通过角色管理权限_IT利刃出鞘的博客-CSDN博客 简介 本文介绍MySQL8如何通过角色管理权限。 角色是在MySQL8.0中引入的新功能。在MySQL中,角色是权限的集合,可以为角色添加或移除权限。用户可以被赋予角色,同时也…

洛普兰机械密封盛装亮相2023第11届济南生物发酵展

洛普兰机械密封与您相约2023第11届济南生物发酵展览会,3月30-4月1号山东国际会展中心,诚邀参会! 展位号:3号馆H32 2023生物发酵展将于3月30号山东国际会展中心(济南市槐荫区日照路1号)盛大召开&#xff0…

Spring(四):Bean作用域和生命周期

目录一、Bean作用域作用域1.1 Bean作用域简介1.2 作用域的定义1.3 Bean的6种作用域1.4 设置作用域二、Spring的执行流程和Bean的生命周期2.1 Spring的执行流程2.2 Bean的生命周期一、Bean作用域作用域 1.1 Bean作用域简介 现在有一个公共的Bean,A用户先使用到这个…

统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests

统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对…

Java与Python常见语法对比及区别

这里写目录标题一、前记1.1为什么写这篇文章?1.2 本文的结构二、整体区别2.1 差异总结十句话2.2整体对比三、细节区别3.1数据类型3.2其他数据结构3.3 String的处理方法3.4数组3.5条件语句3.6循环语句3.7类和接口定义与调用四 其他技巧知识字节的换算Tips&#xff1a…

flutter项目编译问题汇总

1、kotlin compiler embeddable下载慢的解决办法 备注:可以使用https://developer.aliyun.com/mvn/search这个链接搜索并下载 2、运行Flutter项目一直卡在--Running Gradle task assembleDebug 解决方法: 第一步:修改flutter安装目录/pac…

校招前端一面经典react面试题(附答案)

React.forwardRef是什么?它有什么作用? React.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。这种技术并不常见,但在以下两种场景中特别有用: 转发 refs 到 DOM …

多层次目录结构的CMake工程管理

多层次目录结构的CMake工程管理一、多层次目录结构的文件结构二、如何利用CMake组织多层次目录结构三、构建工程一、多层次目录结构的文件结构 我们编写程序,不可能把所有源文件都一股脑地放在顶层目录下,必然会有一个目录结构,每个目录中只…

【django】项目开发准备之数据库配置

文章目录一、docker中启动mariadb服务二、django配置文件中进行配置1.安装mysqlclient2.找到settings.py文件3.启动django程序一、docker中启动mariadb服务 --restartalways:自动启动容器 --name mydb:容器名称 -d:后台运行容器 -v /home/ubuntu/ck14/ma…

php宝塔搭建部署实战服务类家政钟点工保姆网站源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的服务类家政钟点工保姆网站源码,感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&…

单机模拟搭建 Zookeeper 集群

1. 准备 官网下载:https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz 注意: zookeeper 从 3.5 版本以后,命名就发生了改变apache-zookeeper-X.X.X.tar.gz 这样命名的,都是未…

并发编程之JMMvolatile详解

目录 什么是JMM模型 定义 JMM不同于JVM内存区域模型 主内存 工作内存 Java内存模型与硬件内存架构的关系 JMM存在的必要性 数据同步八大原子操作 同步规则分析 并发编程的可见性,原子性与有序性问题 原子性 可见性 有序性 JMM如何解决原子性&…

【单片机】AT24C02存储器(I²C总线)/DS18B20温度传感器(单总线)

目录 一、AT24C02存储器 1、AT24C02存储器介绍 2、存储器简化模型 3、AT24C02存储器原理图 二、IC总线 1、IC总线的介绍 2、IC电路 3、IC时序图 3.1IC开始和结束时序图 3.2IC主机发送和接收时序图 3.3IC主机发送应答/接收应答 4、IC数据帧发送/接收方式 4.1主机向…

数据可视化系列-02各类图表的综合使用介绍及实践-上篇

文章目录3.各类图表的综合使用介绍及实践3.1了解数据功能图1、可视化中的数据2、基于数据的研究3、数据的可视化组件4、可视化图表的作用、制作流程和类型3.2北极星指标展示1、指标类知识回顾:指标类简介、指标类主要场景2、指标类图表:指标看板、指标趋…

C++关联容器(复习题篇)

本篇博客将介绍标准库关联容器,包括: 关联容器的概念和简单的使用关联容器涉及的类型和操作,特别是与顺序容器的差异无序关联容器,特别是与有序关联容器的差异 练习1.1 描述map和vector的不同 vector是顺序容器其中的元素是“顺序…

分布式事务的介绍

本地事务 单服务进程,单数据库资源,同一个连接conn多个事务操作 在JDBC编程中,我们通过java.sql.Connection对象来开启、关闭或者提交事务。代码如下所示: Connection conn ... //获取数据库连接 conn.setAutoCommit(false); //开启事务 t…

educoder数据结构与算法 栈 第2关:实现一个链接存储的栈

本文已收录于专栏 🌲《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》🌲 目录 任务描述 相关知识 编程要求 测试说明 AC_Code 任务描述 本关任务是实现 step2/LnkStack.cpp 中的LS_IsEmpty、LS_Length、LS_Push、LS_Pop和LS_Top五个操作函数…

π122E30兼容Si8622BC-B-IS 双通道数字隔离器

π122E30兼容Si8622BC-B-IS 双通道数字隔离器 ,具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立,可实现多种传输方向的配置,可实现 3.0kVrms 隔离耐压等级和 DC 到 200Mbp…

Day 17-Vue3 技术_其它

1.全局API的转移 Vue 2.x 有许多全局 API 和配置。例如&#xff1a;注册全局组件、注册全局指令等。 //注册全局组件 Vue.component(MyButton, {data: () > ({count: 0}),template: <button click"count">Clicked {{ count }} times.</button> })//注…

acwing-1015 摘花生

项目场景&#xff1a; 线性dp 题源 数字三角形 问题描述 Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图)&#xff0c;从西北角进去&#xff0c;东南角出来。 地里每个道路的交叉点上都有种着一株花生苗&#xff0c;上面有若干颗花…