MATLAB数字水印——网络与信息安全专题研究

2023-11-11 09:40

本文主要是介绍MATLAB数字水印——网络与信息安全专题研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MATLAB数字水印——网络与信息安全专题研究

题 目 信息隐藏与数字水印原理与matlab实现

目 录

第一章 摘要 1

第二章 信息隐藏原理 2

2.1信息隐藏技术的特点 2

2.1.1不可感知性 2

2.1.2鲁棒性 2

2.1.3隐藏容量 3

2.2数字水印的特点 4

2.2.1安全性: 4

2.2.2隐蔽性: 4

2.2.3鲁棒性: 4

2.2.4水印容量: 4

2.3数字水印的基本原理 5

第三章 数字水印实现 6

3.1matlab实现程序 6

3.2水印前图片 7

3.3嵌入文件后的图片 8

3.4 RSA的MATLAB实现

第四章 结语 10

【参考文献】 11

【特别致谢】 12

信息隐藏与数字水印原理与matlab实现

【关键词】水印技术 隐藏 嵌入

【内容摘要】

随着计算机应用逐渐广泛、网络技术的迅速发展,使图文、音频、视频等多媒体信息都能以数字形式传输、阅读和播放,从而使大规模非授权拷贝成为了可能,而这样会损害音乐、电影、书籍和软件等出版业的健康发展。为了保护知识产权,引发了一个很有意义的研究方向:信息隐藏。


第一章 摘要

本文首先介绍了数字水印技术的原理和分类

所谓的信息隐藏是利用媒体信息普遍存在的冗余特性,将秘密信息隐藏在其他媒体信息中。其首要目标就是使加入隐藏信息后的媒体目标的质量下降,尽可能地小,使人无法觉察到隐藏的数据,或者知道它的存在,但未经授权者无法知道它的位置,并不像传统加密过的文件一样,看起来是一堆会激发非法拦截者破解机密资料动机的乱码,而是看起来和其它非机密性的一般资料无异,因而十分容易逃过非法拦截者的破解。其道理如同生物学上的保护色,巧妙地将自己伪装隐藏于环境中,免于被天敌发现而遭受攻击。被人们誉为历史学之父的古希腊历史学家希罗多德(Herodotus,486-425),在其著作中讲述了这样一则故事:一个名叫Histaieus的人筹划着与他的朋友合伙发起叛乱,里应外合,以便推翻波斯人的统治。他找来一位忠诚的奴隶,剃光其头发并把消息刺在头皮上,等到头发义长起来了,把这人派出去送“信”,最后叛乱成功了。


信息隐藏的原理

2.1信息隐藏技术的特点

v2-63b5f6dc6763a8b42fd5d5e0db740875_b.jpg

2.1.1不可感知性

信息隐藏技术利用信源数据的自相关性和统计冗余特性,将秘密信息嵌入数字载体中,而不会影响原载体的主观质量,不易被观察者察觉。如果载体是图像,所做的修改对人类的视觉系统应该是不可见的;如果载体是声音,所做的修改对人类的听觉系统应该是听不出来的。

秘密信息的嵌入在不改变原数字载体的主观质量的基础上,还应不改变其统计规律,使得运用统计检查工具检查到隐秘载体文件中秘密信息的存在性也是非常困难的。

2.1.2鲁棒性 

鲁棒性反映了信息隐藏技术的抗干扰能力,它是指隐藏信息后数字媒体在传递过程中,虽然经过多重无意或有意的处理信号,但仍能够在保证较低错误率的条件下将秘密信息加以恢复,保持原有信息的完整性和可靠性,它也称为自恢复性或可纠错性

对隐藏信息的处理过程一般包括数/模、模/数转换;再取样、再量化和低通滤波;剪切、位移;对图像进行有损压缩编码,如变换编码、矢量量化;对音频信号的低频放大,等等。

2.1.3隐藏容量 

将信息隐藏技术应用于隐蔽通信中时,为了提高通信的效率,往往希望每一个数字载体文件能够携带更多的秘密数据。隐藏容量是反映这种能力的一个指标,它是指在隐藏秘密数据后仍满足不可感知性的前提下,数字载体中可以隐藏秘密信息的最大比特数。

随着数字隐藏技术的发展,在特定的应用方面对其技术性能又提出了更高、更具体的要求。在一般的信息隐藏方法中,这些特性都是相互冲突、互相矛盾的。例如,有的方法隐藏容量大,但鲁棒性较差;有的方法鲁棒性很好,但不可感知性较差;有的方法鲁棒性较差,但运算量较小,等等。应根据实际的需求对各种性能做出选择和择中,从而找到最合适的信息隐藏方法。

在信息隐藏算法中,主要有空间域算法和变换域算法。最典型的空间域信息隐藏算法为LSB算法。LFTurnet与RGVan利用LSB算法将信息隐藏在音频和数字图像中。Bender提出了通过修改调色板统计信息来嵌入秘密数据库的隐藏算法。Patchwork方法采用随机技术选择若干对像素,通过调节每对像素的亮度和对比度来隐藏信息,并保证这种调整不影响图像的整体观感。丁玮从数字图像的透明叠加方法出发,提出了基于融合的数字图像信息隐藏算法。并根据七巧板的游戏原理,提出了隐藏数字图像的Tangram算法,Marvel将数字图像看作嗓声,提出了空间域中的扩频数据隐藏方法。Lippman使用信号的色度,提出了在国家电视委员会的色度信道中隐藏信息的方法。Liaw和Chen提出了将秘密图像嵌入到载体图像中的灰度值替方法,为了适合灰度值替换,Wu和Tsai提出了使用图像差分的改进方法;Wu和Tsai还在人类视觉模型的基础上,提出了在数字图像中嵌入任何类型数据的数据隐藏方法;Tseng和Pan提出了一种安全的、大容量的数据隐藏算法;Provos通过随机嵌入和纠错编码的方法改进了信息隐藏的性能,Solanki等从信息论的角度出发,将视觉标准引入到通过量化来嵌入信息的方法,并由此提出了一种高容量的信息隐藏算法。

在变换域算法中,正交变换的形式可以有离散傅立叶变换(DFT),离散余弦变换(DCT),小波变换(Wavelet)等。由于变换域算法利用了人眼对于不同空间频率的敏感性,在适当的位置嵌入信息具有更好的鲁棒性和不可觉察性。容量也较高,所以变换域隐藏算法比空间域算法复杂。最具代表性的变换域算法是Cox在1995年提出的扩频算法。Andreas Westfel和Pitas分别提出了通过模拟图像水平或者垂直移动将秘密数据嵌入到图像的DCT系统的数据隐藏算法,管晓康提出了Pitas算法的改进算法,克服了该算法中嵌入数据量小的缺点。丁玮成功地将该算法修改并在小波域中运算该算法,并通过置乱技术改进了Pitas算法中的随机数策略,消除了误判的可能性。


2.2数字水印的特点

2.2.1安全性:数字水印的信息应是安全的,难以篡改或伪造,同时,应当有较低的误检测率,当原内容发生变化时,数字水印应当发生变化,从而可以检测原始数据的变更;当然数字水印同样对重复添加有很强的抵抗性

2.2.2隐蔽性:数字水印应是不可知觉的,而且应不影响被保护数据的正常使用;不会降质;

2.2.3鲁棒性:是指在经历多种无意或有意的信号处理过程后,数字水印仍能保持部分完整性并能被准确鉴别。可能的信号处理过程包括信道噪声、滤波、数/模与模/数转换、重采样、剪切、位移、尺度变化以及有损压缩编码等。主要用于版权保护的数字水印易损水印(Fragile Watermarking),主要用于完整性保护,这种水印同样是在内容数据中嵌入不可见的信息。当内容发生改变时,这些水印信息会发生相应的改变,从而可以鉴定原始数据是否被篡改。

2.2.4水印容量:是指载体在不发生形变的前提下可嵌入的水印信息量。嵌入的水印信息必须足以表示多媒体内容的创建者或所有者的标志信息,或购买者的序列号,这样有利于解决版权纠纷,保护数字产权合法拥有者的利益。尤其是隐蔽通信领域的特殊性,对水印的容量需求很大。


2.3数字水印的基本原理

目的是将特定的信息加入到需要保护的媒体信息中,加入的信息一般是能够代表媒体信息版权的内容,如公司标志、媒体作者、特定代码等,而且要保证数字水印能够抵抗一定的攻击,而不被轻易的破坏和修改,同时数字水印要能够被提取或者能够被检测到。数字水印的具体内容、算法、提取或检测过程根据实际应用有不同的要求。数字水印的嵌入和提取过程如图1,图2所示。




图1 数 字水印的嵌入过程



图2 数字水印的提取过程


图1是数字水印的嵌入过程,加入密钥可以提高数字水印的隐蔽性、抗攻击性,而并非是必须的。根据用途不同,,嵌入的水印有些是需要还原的,而有些则只需验证水印的存在性,前者需要数字水印的提取算法,而图2需要数字水印的检测算法,根据具体的水印算法,嵌入或提取的过程可能有所不同。

基于Matlab的数字水印算法

3.1matlab实现程序


clear

clc

M =512;%原图像长度 N =64;

%水印图像长度 K =8;

I=zeros(M,M);

J=zeros(N,N);

BLOCK=zeros(K,K);

%显示原图像 subplot(2,3,1);

I=imread('C:\Documents and Settings\Administrator\桌面\图像.jpg','jpg');

imshow(I);

title('原始公开图像');

%显示水印图像 subplot(2,3,2);

J=imread('C:\Documents and Settings\Administrator\桌面\水印.jpg','jpg');

imshow(J);

title ('水印图像');

%水印嵌入 for p=1:N for q=1:N

x=(p-1)*K+1; y=(q-1)*K+1;

BLOCK =I(x:x+K-1,y:y+K-1);

BLOCK=dct2(BLOCK);

if J(p,q)==0 a=-1;

else a=1;

end

BLOCK(1,1)=BLOCK(1,1)*(1+a*0.03);

BLOCK=idct2(BLOCK);

I(x:x+K-1,y:y+K-1)=BLOCK;

end

end

%显示嵌入水印后的图像 subplot(2,3,3);

imshow(I);

title('嵌入水印后的图像');

imwrite(I,'C:\Documents and Settings\Administrator\桌面\图像.jpg','jpg');

%从嵌入水印的图像中提取水印

I=imread('C:\Documents and Settings\Administrator\桌面\图像.jpg','jpg');

J=imread('C:\Documents and Settings\Administrator\桌面\水印.jpg','jpg');

J=imnoise(J,'gaussian',0,0.01);

subplot(2,3,4);imshow(J,[]);

title('加入高斯噪声');

I=imread('C:\Documents and Settings\Administrator\桌面\图像.jpg','jpg');

J=imread('C:\Documents and Settings\Administrator\桌面\水印.jpg','jpg');

J=imnoise(J,'gaussian',0,0.01);

subplot(2,3,4);imshow(J,[]);

title('加入高斯噪声');

for p=1:N for q=1:N x=(p-1)*K+1;

y=(q-1)*K+1;

BLOCK1 =I(x:x+K-1,y:y+K-1);

BLOCK2 =J(x:x+K-1,y:y+K-1);

BLOCK1=dct2(BLOCK1);

BLOCK2=dct2(BLOCK2);

a = BLOCK2(1,1)/BLOCK1(1,1)-1;

if a<0 W(p,q)=0;

else W(p,q)=1;

end end end

%显示提取的水印 subplot(2,3,5);

imshow(W);

title('从含水印图像中提取的水印')[3];


3.2水印前图片


v2-f163da80e5df4a6f8d93967822164d97_b.jpg


嵌入的文件


v2-50198cb1a9fd9f484905e84dbeabec55_b.jpg



3.3嵌入文件后的图片


v2-d117a7bcf349f2fd0c747041bda06f9b_b.jpg


3.4 RSA的MATLAB实现

1. 模n求逆函数


function [d]=moni(u,n)

n1=n;

n2=u;

b1=0;

b2=1;

for i=0:1000

q=floor(n1/n2);

r=n1-q*n2;

i=i+1;

if r~=0

n1=n2;

n2=r;

t=b2;

b2=b1+q*b2;

b1=t;

else

break

end end if n2~=1

warning(‘所求的模逆不存在‘);

end if n2= =1

if 0= =mod(i,2)

b2=-b2;

else

b2=b2;

end

d=mod(b2,n);

%return; end

2.求模n的大数幂乘函数

function [dashuchenmi]=dashuchenmi(x,r,n);

a=x;

b=r;

c=1;

for i=1:1000 if b= =0

dashuchenmi=c;

end

if mod(b,2)~=0

b=b-1;

c=mod(c*a,n);

else

b=b/2;

a=mod(a*a,n);

end

end

dashuchenmi=c;

3.主函数 clc clear

fid=input(‘输入待加密的明文:’,‘s’);

f=abs(fid);

p=input(‘输入第一个大素数:’);

q=input(‘输入第二个大素数:’);

e=input(‘输入加密密钥:’);

n=p*q;

fain=(p-1)*(q-1);

d=moni(e,fain);

for i=1:length(f)

miwen(i)=setstr(dashuchenmi(f(i),e,n));

end

for i=1:length(f)

mingwen(i)=setstr(dashuchenmi(miwen(i),d,n));

end

miwen

mingwen

实验结果:

输入待加密的明文:2106

输入第一个大素数:43

输入第二个大素数:59

输入加密密钥:13

密文=

2321

明文=

2106

这篇关于MATLAB数字水印——网络与信息安全专题研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389156

相关文章

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络 服务器端配置 在服务器端,你需要确保安装了必要的驱动程序和软件包,并且正确配置了网络接口。 安装 OFED 首先,安装 Open Fabrics Enterprise Distribution (OFED),它包含了 InfiniBand 所需的驱动程序和库。 sudo

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

网络学习-eNSP配置NAT

NAT实现内网和外网互通 #给路由器接口设置IP地址模拟实验环境<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]interface gigabit