时间:2023-01-11 22:28:33
序论:写作是一种深度的自我表达。它要求我们深入探索自己的思想和情感,挖掘那些隐藏在内心深处的真相,好投稿为您带来了七篇隐藏技术范文,愿它们成为您写作过程中的灵感催化剂,助力您的创作。
关键词:进程;隐藏
中图分类号:TP309文献标识码:A文章编号:1009-3044(2008)30-0740-02
Windows Process Hiding Method
SHI Yong-lin,PAN Jin,PANG Xiong-chang,XIE Qing-song
(Department one of Xi'an Communication Institute, Xi'an 710016,China)
Abstract: This paper gives a detail explanation of how to hide process on windows, it introduces three ways to achieve the goal.It also tell the strong and weak point of the different methods.
Key words: process;hiding
进程隐藏,也就在用户不知情的情况下,悄悄执行自己的代码。这一直是病毒、木马程序设计者不断探求的重要技术,因为这些程序都是见不得光的,都需要较好的隐藏和保护自己。了解进程隐藏技术,是开发防病毒和木马软件的基础,一般来讲,一个程序如果采用进程隐藏技术隐藏自己,那大多情况下其一定是一个病毒或木马等恶意程序。但有些情况下,进程隐藏也是某些类型程序所需要的功能,如某些安全控制程序,例如上网控制系统,其功能要求只能上单位局域网,不能上internet,这种程序需要常驻系统,不能停止和卸载,这则要求进程能有效保护和隐藏自己,以防止用户恶意删除和卸载。
进程隐藏是一个古老但一直成长的技术,一直以来隐藏和破解隐藏的斗争都在进行。从原理上讲任何隐藏进程因为其都不能从操作系统的进程调度链中删除,所以说都不能达到真正的隐藏,但是采用多种隐藏和保护机制,的确可以最大限度的保护程序。
进程隐藏现在主要有以下几种技术:
1) 利用CreateRemoteThread()函数和代码注入技术在宿主进程,如explorer中运行自己的代码。
2) 利用API拦截技术拦截NtQuerySystemInformation函数,过滤掉要隐藏的进程,因为windows任务管理器调用这个函数来获得系统运行的进程列表,这样在windows任务管理器中就隐藏了目标进程。
3) 把要隐藏的进程从系统活动进程列表(EPROCESS LIST_ENTRY)中摘除,这样其他的查找进程的函数都不能获取目标进程的信息了。
1 利用CreateRemoteThread进行进程隐藏
这种方法的主要原理是通过代码注入技术把代码注入到宿主进程中,然后通过调用CreateRemoteThread()函数在宿主进程中生成自己的线程,运行自己的代码。可以看出这种方法的一个主要工作是代码的注入,也就是怎样才能把自己的代码映射到宿主进程的空间中。
代码注入技术分为动态代码注入技术和静态代码注入技术,动态代码注入技术就是在进程启动后或在进程启动时在进程的运行空间中注入代码的技术,而静态注入技术就是在PE格式的.exe文件中插入代码。静态注入技术是病毒感染文件的常用方法,在文献[1]中有详细的叙述。动态注入技术也分为直接代码注入技术和以dll形式的注入技术,直接代码注入技术是利用VirtualAllocEx和CreateRemoteThread两个API来进行的函数级代码注入技术,可以采用汇编的形式,这种方法在文献[1]中的进程隐藏一章中有详细的讲解,也可以采用高级语言如c语言的形式,这种方法有兴趣的可以参考文献[2]。直接代码注入技术对注入的代码有很高的要求,要解决地址重定位等问题,而且注入代码的大小也受到很大的限制,所以不适用于进程级代码的注入。所以进程隐藏一般采用dll形式的动态代码注入技术。
利用CreateRemoteThread进行dll形式的动态代码注入技术在[3]中有较详细的论述。要在其他的进程中注入dll,就要求我们能在那个进程中调用LoadLibrary() API,但我们没有权限获得其他进程的执行控制权,幸好微软提供了函数CreateRemoteThread()可以在其他的进程中创建远程线程,而恰好线程函数的原型:
DWORD WINAPI ThreadProc(LPVOID lpParameter);
和LoadLibrary()的原型:
HMODULE WINAPI LoadLibrary(LPCTSTR lpFileName);
HMODULE和DWORD都是双字节,调用方式都是WINAPI,LPVOID和LPCTSTR都是双字节指针,所以函数原型是一样的。从而我们利用CreateRemoteThread()来欺骗操作系统,使其执行LoadLibrary() API,如下:
hThread = ::CreateRemoteThread(
hProcessForHooking, //要插入dll的进程句柄
NULL,
0,
pfnLoadLibrary,// LoadLibrary函数的地址
"C:\\HookTool.dll", //要注入的dll的全路径
0,
NULL);
LoadLibrary函数的地址因为其所在的Kernel32.DLL的映射地址在所有进程中是确定的,所以其值可以通过调用GetProcAddress()获得。
这种进程隐藏的方法要把进程执行的代码封装进dll中,这可能不能满足某些程序设计者的要求,而且经测试,瑞星等杀毒软件都禁止这种方法的代码注入,所以这种隐藏技术很难成功。
2 利用API拦截技术进行进程隐藏
API拦截的主要目的是在其他应用程序调用API之前将其拦截,由拦截者先处理传递的参数数据,然后决定是否再调用原来的API。比如API
BOOL TextOutA( HDC hdc, int nXStart,int nYStart,LPCTSTR lpString, int cbString);
在其他程序调用这个API之前,拦截程序可以先捕获这个调用,先对参数等进行处理,比如将cbString翻译为中文等,然后再调用原来的TextOutA进行文本输出,这样输出的文本就变成中文了。
因为任务管理器是调用ntdll.dll中的NtQuerySystemInformation()API来获得进程列表的,所以只要我们先截获这个调用,在我们的替换函数中先调用原来的NtQuerySystemInformation,从返回的进程信息链表中去除要隐藏的目标进程的信息,然后把改变的进程列表返回给任务管理器,那么目标进程则从任务管理器中隐藏。NtQuerySystemInformation函数的原形如下:
NTSTATUSNTAPI ZwQuerySystemInformation(
INULONGSystemInformationClass,
INPVOIDSystemInformation,
INULONGSystemInformationLength,
OUT PULONG ReturnLength
);
其中SystemInformation中返回的就是如下结构体构成的进程信息链表。
struct _SYSTEM_PROCESSES
{ULONGNextEntryDelta;
ULONGThreadCount;
......
UNICODE_STRING ProcessName;
KPRIORITYBasePriority;
ULONGProcessId;
......};
其中ProcessName指向的就是进程的可执行文件名,我们可以通过可执行文件名或进程ID ProcessId进行进程过滤。
从上面介绍可以看出,采用这种方法进行进程隐藏的关键是怎样进行API拦截,API拦截可以在用户层(ring3)进行,也可以在内核层(ring0)中进行。用户层的API拦截技术可以参考文献[4],这里详细介绍了用户层API拦截的各种技术。内核层的API拦截技术可以参考文献[5] 监控Native API调用一章,它的原理是通过替换windows系统服务描述符表中的Native API处理例程的入口地址来截获API。
这种技术可靠性好,容易实现,并且可以进行其他功能的隐藏,如注册表项隐藏,文件隐藏等,还可以通过截获进程控制API来防止杀死进程,所以可以更好的隐藏和保护进程,所以这种方法使用的较广泛。
3 修改系统活动进程列表
Window系统内部维护了一个活动进程链表,其节点结构体如下:
typedef struct _EPROCESS
{
/*000*/ KPROCESS Pcb;
/*06C*/ NTSTATUS ExitStatus;
/*070*/ KEVENT LockEvent;
/*080*/ DWORD LockCount;
/*084*/ DWORD d084;
/*088*/ LARGE_INTEGER CreateTime;
/*090*/ LARGE_INTEGER ExitTime;
/*098*/ PVOID LockOwner;
/*09C*/ DWORD UniqueProcessId;
/*0A0*/ LIST_ENTRY ActiveProcessLinks;
......
} EPROCESS;
typedef struct _LIST_ENTRY
{
struct _LIST_ENTRY *Flink;
struct _LIST_ENTRY *Blink;
} LIST_ENTRY;
系统通过查找这个链表获得系统中进程的列表,所以如果把要隐藏的进程从这个链表中去除,则可以从系统中隐藏此进程.查找可以通过进程ID UniqueProcessId进行。
这种方法也是既可以在内核中进行,也可以在应用层进行。
(下转第744页)
(上接第741页)
在内核层采用这种方法隐藏进程比较简单,这个链表的表头存储在系统变量PsActiveProcessHead中,但这个变量windows没有输出,但我们可以通过PsGetCurrentProcess()函数获取当前进程的EPROCESS结构体指针,然后通过ActiveProcessLinks遍历列表来查找要隐藏的进程。这里需要注意的是不同版本的windows系统的EPROCESS结构可能不同。
在用户层采用这种方法的原理也很简单,因为windows系统在物理内存中的位置是固定的,所以活动进程链表的首地址也是固定的,通过调用ZwOpenSection()函数读取和修改物理内存,然后修改的链表的相应位置来去除目标进程。在用户层采用这种方法隐藏进程可靠性较差,因为和windows系统的版本关系太密切,不同windows版本中的很多参数都不同,如链表头的位置,window内存的映像等,所以需要修改程序的很多参数,而且很多杀毒软件都禁止对物理内存的直接读写,所以很多情况下都不能达到对进程的隐藏。
4 总结
本文从原理上介绍了进程隐藏的几种方法,其中比较可靠和常用的是利用API拦截技术和在内核层修改活动进程链表两种方法。就像在本文开始所讲到的一样,隐藏都是相对的,只要进程还在系统中运行,就必须服从windows的调度,那么其在系统中就一定可以查找得到,所以一些系统工具,如IceSword等就可以查找到隐藏的进程,但我们可以采用多种技术的复合,如三线程进程保护机制,文件隐藏机制等,增加进程的防杀功能,可以从一定程度上保护进程。
参考文献:
[1] 罗云彬.Windows环境下32位汇编语言程序设计[M].电子工业出版社,200,10.
[2] Ciro Sisman Pereira.Portable Executable (P.E.) Code Injection: Injecting an Entire C[DB/OL].
[3] Jeffrey Ritcher.Load Your 32-bit DLL into Another Process's Address Space Using INJLIB[J].MSJ May 1994.
[4] 史永林.Windows API拦截技术[J].电脑知识与技术 2008,3(9):
关键词:信息;隐藏技术;相关研究
DOI:10.16640/ki.37-1222/t.2016.11.135
0 引言
随着科技的进步,通信技术的飞跃式发展,计算机互联网的迅速普及,使得越来越多的人和公司通过网络传输大量的数据文件,但是由于互联网具有连接形式多样性以及开放性和互联性,使得这些互联网上传输的数据文件很容易受到攻击或窃取,如果涉及国家安全和军队建设乃至个人的隐私信息方面,信息安全问题将变的更加敏感。查阅文献,发现现阶段研究人员关注的热点有俩个,即信息加密和信息隐藏,其中信息隐藏就是把需要传递的秘密信息进行伪装,隐藏在普通文件中,即使文件被攻击、窃取,也不易发现其中的隐藏信息,可以有效的加强信息在传输过程中的安全性,因此有必要对信息隐藏技术进行进一步的研究。
1 信息隐藏技术的含义
信息隐藏是利用人类对多媒体数字信号不敏感,将秘密信息隐藏在一个不被关注的多媒体信号中,这样敏感信息不会被发现,而且也不会影响到多媒体信号的感觉效果和使用价值,当我们利用这样的技术传输敏感信息时,可以对第三方起到混淆的作用。一般来说隐秘信息的载体选择有多种类型,比如我们经常见到的图像、声音、视频还有文档都可以作为敏感信息的载体,这样做的目的是不引人注目,其次即使载体信息被截获,也很难对隐藏信息进行提取,安全性得到了极大的提高。
2 信息隐藏的具体方法
参考传统加密技术方法,我们有保留的基础上对信息隐藏技术进行了一定的改进。常用的具体方法有数字水印技术、叠像技术以及替声技术等。其中,叠像技术是1994年提出的可视密码术(VisualCryptography),用有意义的明文图像代替原来的随机噪声图象,使之更具安全性。数字水印(Digital Watermarking)技术是将一些标识信息(即数字水印)直接嵌入数字载体中,但不影响原载体的使用价值,也不容易被人的知觉系统觉察。通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。替声技术与叠像技术很相似,它是通过对声音信息的处理,使得原来的对象和内容都发生改变,从而达到将真正的声音信息隐藏起来的目的。替声技术可以用于制作安全电话,使用这种电话,可以对通信内容加以保密。
(1)替换技术。把秘密信息伪装成载体荣誉部分,进行替换后载体的可视性并没有被破坏,常用的手段有最小有效位替换、伪装随机替换,载体的奇偶位对换,图像的调色板替换等。
(2)变换技术。将秘密信息做正交变换,利用扩频技术把变换后的秘密信息隐藏到载体的变换域中。这种技术的优点是,它通过不同的空间频率敏感的感官系统来确定秘密信息具体的嵌入位置及嵌入强度,有效的对嵌入信息进行了隐藏。
(3)扩频技术。当对隐藏秘密信息的载体做过滤操作的时候,秘密信息可能被部分过滤,造成秘密信息丢失。在嵌入秘密信息时进行多次重复的代码扩展,对载体进行过滤时,秘密信息保留的概率大大增加。信息数据率高许多倍伪随机码把包含基带信号的频谱数据进行扩展,形成宽频带低功率谱密度的信号。
3 信息隐藏的特点
信息隐藏有不同的分支,但所有分支都有很多共同的特点。第一,信息隐藏系统必须保证隐藏信息的不可见性,即在把秘密信息嵌入载体的过程中不能留下任何的痕迹,如果这一过程影响到图像质量,图像信息嵌入价值将减少,信息隐藏系统安全性降低。 其次,在对载体进行矢量变换操作以后,载体中的隐藏信息任然可以保持完整,并可以极大的概率被提取。 第三,要实现隐藏信息在载体中的不可见性,隐藏信息的长度与载体的长度必须保持一个适度的量,因为载体容量与信息隐藏率是正比关系的。 第四,要足够安全,即攻击者不能有效的读取和修改载体中的秘密信息。
4 网络通信中信息隐藏技术的应用
网络通信中往往根据信息载体的不同,利用文本、语音、视频以及二进制的隐写,把秘密信息隐藏在具体的公开转播的数字多媒体信号中,使得秘密信息可以在网络中进行安全有效的传输的一种技术。
(1)数据保密。在公司之间进行谈判时,可能会利用网络传递一些敏感的信息,比如双方的协议、合同、报价等重要文件,包括数字签名,为了保护这些敏感信息的安全性,可以把这些信息以隐藏的形式传递给对方,这样我们就可以在非相关人员难以发觉的状态下完成彼此信息交流。
(2)数据的不可抵赖性。在网络上进行谈判,签订协议等行为,由于不能互相见面,为保证双方不能否认自己做过的承诺并且接受对方传递的条款,需要在传递的信息中加入签名水印,确认其行为目的。
(3)数据的完整性。为保证我们接收到的信息是真实的,没有在网络传递的过程中被篡改,可以在传递的具体多媒体数据中嵌入一个完整信息,收到多媒体数据后可以对完整信息进行提取,用于确定此多媒体数据是否被篡改。
信息隐藏技术是目前学术界倍受关注的一个热点领域,由于现代通信技术的爆炸式发展,互联网飞速普及,每时每刻都有海量的信息在网络上传输,对敏感信息安全进行保护变的更加具有现实意义。在众多研究人员的不懈努力下,信息隐藏技术取得很多的成果,但是,信息隐藏技术作为一个跨学科的技术体系,我们对它的研究还不是很完善,还有许多的问题没有解决。信息隐藏技术的成熟性、实用性还与密码加密的网络传输技术相比较,还有很大差距。但是,其潜在价值是无法估量的,在未来甚至是不可不取代的,我们相信,随着技术的进一步发展,信息隐藏技术将涌现出更多的思路和办法,将对信息安全系统的未来扮演重要的角色。
参考文献:
[1]王育民,张彤,黄继武.信息隐藏――理论与技术[M].北京清华大学出版社,2006.
[2]丁玮,齐东旭.数字图像变换及信息隐藏与伪装技术[F].计算机学报,1998,21(09):838-843.
[关键词] 信息隐藏信息安全电子商务数据保密防伪
通常人们认为对信息加密就可以保证通讯的安全,但是在网络传输中仅仅使用加密技术通常是不够的。现代密码学开发出来的加解密系统不管是对称密钥系统(如DES),还是安全性更高的公开密钥系统(RSA),经过加密算法处理所生成的密文具有随机性、不可读,反而明确提示了保密信息的存在,因而很容易引起监控者的注意,并以此为依据进行对密文的破译或对发送者和接收者的攻击。采用加密技术的另一个潜在缺点是随着计算机硬件的迅速发展,具有并行计算能力的破解技术的日益成熟,仅通过增加密钥长度来达到增强安全性已不再是唯一的可行方法。因此,近年来国际上出现了信息隐藏技术,它是一种不同于密码术的技术,它在电子商务中安全体系中必将起到重要作用。
一、信息隐藏技术的含义与方法
信息隐藏技术(Information Hiding),也称作数据隐藏(Data Hiding),它是集多学科理论与技术于一身的新兴技术领域。信息隐藏技术主要是指将特定的信息嵌入数字化宿主信息(如文本、数字化的声音、图像、视频信号等)中,它的目的不在于限制正常的信息存取和访问,而在于保证隐藏的信息不引起监控者的注意和重视,从而减少被攻击的可能性,在此基础上再使用密码术来加强隐藏信息的安全性,因此信息隐藏比信息加密更为安全。应该注意到,密码术和信息隐藏技术不是互相矛盾、互相竞争的技术,而是相互补充的技术,他们的区别在于应用的场合不同,对算法的要求不同,但可能在实际应用中需要互相配合。特定的信息一般就是保密信息,信息隐藏的历史可以追溯到古老的隐写术,但推动了信息隐藏的理论和技术研究始于1996年在剑桥大学召开的国际第一届信息隐藏研究会,之后国际机构在信息隐藏领域中的隐写术、数字水印、版权标识、可视密码学等方面取得大量成果。
信息隐藏是一个十分活跃的研究领域,虽然其载体可以是文字、图像、语音或视频等不同格式的文件,但使用的方法没有本质的区别。因此,下面将以信息隐藏技术在图像中的应用即遮掩消息选用数字图像的情况为例进行说明。
在图像中应用的信息隐藏技术基本上可分为两大类:时域法或频域法。时域法就是直接改变图像元素的值,一般是在图像的亮度或色带中加入隐藏的内容。这种方法比较有代表性的是最不重要比特位(the Least Significant Bits,LSB)方法,该方法也是最早被应用的信息隐藏方法。遮掩消息的LSB直接被待隐消息的比特位或两者之间经过某种逻辑运算的结果所代替。LSB算法的主要优点是可以实现高容量和较好的不可见性。但是该算法容易被第三方发现并得到,遭到破坏,而对图像的各种操作如压缩、剪切等,都会使算法的可靠性受到影响。为了增强算法的性能,提出了各种改进的方法,如利用伪序列,以“随机”的顺序修改图像的叠像技术(LSM);在使用密钥的情况下,才能得到正确的嵌入序列等。频域法是利用某种数学变换,将图像用频域表示,通过更改图像的某些频域系数加入待隐信息,然后再利用反变换来生成隐藏有其他信息的图像。各种不同的数学变换都可以被使用,目前已有的方法主要集中在小波变换、频率变换、DCT(低频分量)变换等。
二、信息隐藏技术在电子商务中的应用
目前信息隐藏技术在电子商务中的应用主要体现在以下几个方面:
1.数据保密
在具体电子商务活动中,数据在Internet上进行传输一定要防止非授权用户截获并使用,如敏感信息、谈判双方的秘密协议和合同、网上银行交易中的敏感数据信息、重要文件的数字签名和个人隐私等等。另外,还可以对一些不愿为别人所知道的内容使用信息隐藏的方式进行隐藏存储。
2.数据的不可抵赖性
在网上交易中,交易双方的任何一方不能抵赖自己曾经做出的行为,也不能否认曾经接收到的对方的信息,这是交易系统中的一个重要环节。这可以使用信息隐藏技术中的水印技术,在交易体系的任何一方发送或接收信息时,将各自的特征标记以水印的形式加入到传递的信息中,这咱水印应是不能被去除的,可达到确认其行为的目的。
3.防伪
商务活动中的各种票据的防伪也是信息隐藏技术的用武之地。在数字票据中隐藏的水印经过打印后仍然存在,可以通过再扫描回数字形式,提取防伪水印,以证实票据的真实性。
4.数据的完整性
对于数据完整性的验证是要确认数据在网上传输或存储过程中并没有被窜改,可通过使用脆弱水印技术保护的媒体一旦被窜改就会破坏水印,从而很容易被识别。
三、隐藏技术的未来发展
关键词:信息隐藏;隐写分析;算法;研究
中图分类号:TP391.41 文献标识码:A 文章编号:1674-7712 (2013) 20-0000-01
随着计算机以及网络技术的高速发展,网络时代和数字时代己经拉开了帷幕,但同时也跟我们带来了很多问题。比如一些绝密的信息以及文件能否在互联网中安全传输;个人的隐私能否得到相应的保障;一些公司、企业的商业机密会不会被他人窃取;多媒体的版权维护问题等。信息安全得到了国内外各界的高度重视。
由此,一门新兴的学科——信息隐藏(Information Hiding)应运而生。它的主要原理是利用了人类的感觉器官对数字信号的冗余,从而把一个有用的消息(即隐秘信息)伪装隐藏在另外一个载体信息中,并且这个载体信息是可以公开的在信道里面传输的,隐秘之后就可以得到一个隐蔽载体,从而能够实现隐秘信息在信道中的隐蔽通信。在传送过程中,第三方很难知道一个看似普通信息中是否隐含了其他的隐秘信息,就算知道也很难将其提取出来。
信息隐藏技术目前主要包括两个方面:数字水印和信息隐写。数字水印主要是对数字媒体起标识以及版权保护作用;信息隐写则是将隐秘信息伪装隐藏于其它的载体信息中。很多地方将数字水印技术作为一个单独的分支拿出来做研究,同样本文对数字水印也不做过多研究。信息隐藏技术是一把双刃剑,一方面信息隐藏技术能够为政治、军事以及经济的机密信息在互联网中的传输提供可靠的保障,个人在公共网络中的安全和隐私也可以得到很好的保护;另一方面,也有可能被某些怀有不当目的的个人或者组织所利用,在网络中传播一些非法或破坏性的信息,从而对社会的公共安全以及国家安全造成了很大的危害。因此我们在学习、研究信息隐藏技术里这个“矛”的时候,也应该学习、研究其“盾”(隐写分析技术)。
一、信息隐藏技术
信息隐藏技术和传统的密码技术相比,相同点是二者都是为了保证隐秘信息的安全。不同的则是密码技术是对秘密信息进行特殊的编码从而形成了第三方不可识别的密文。信息隐藏是将秘密信息伪装隐藏于另外一个可以公开传递的载体信息之中,通过此载体信息在网络上传输来传递隐秘信息。传统密码技术由于密文是杂乱的,所以很容易被第三方辨认出来,这样的话第三方的目的就很明确了,一旦截获了密文,全力去破解即可。但是对信息隐藏技术来说,仅通过视觉无法判断出载体信息是否含有隐秘信息,因此面对互联网的海量信息,第三方在短时间内很难辨别出数字媒体是否包含有隐秘信息。因而跟传统的密码技术相比信息隐藏技术能更有效地保证隐秘信息的安全。信息隐藏技术模型如图1所示,隐秘信息通过密钥伪装隐藏到载体信息之中,然后通过公共信道传输给接收对象,接收对象接收到信息以后根据密钥就可以提取出想要得到的隐秘信息。在公共信道中,首先第三方很难察觉到载体信息中有隐秘信息,就算察觉到了,也很难提取出隐秘信息。
信息隐藏技术发展至今出现了许多经典的算法,在图像中嵌入隐秘信息的算法大致可以分为空域算法和变换域算法两种。空域方法包括使用LSB编码、用图像处理或压缩、变换算法对图像的属性进行修改。基本原理就是利用图像本身的冗余性和人眼对图像颜色或者灰度的分辨率的感官特性实现的信息隐藏。隐藏后并不改变载体图像的使用价值和基本特征,隐秘前后仅靠肉眼基本看不出图像差别。经典算法大概包括:最低有效位算法,调色板方法以及Patchwork算法。而对于变换域的隐藏方法主要是使用离散傅立叶变换(DFT),离散余弦变换(DCT)或者小波变换在图像中嵌入信息。变换可以基于整个图像,也可以对整个图像进行分块操作。经典算法大概包括:DFT变换域算法,DCT变换域算法以及DWT变换域算法。
二、隐写分析技术
自古有矛就有盾,隐写分析技术是指对被表明为正常的图像、音频、视频等多媒体信号进行检测,判断其中是否嵌有秘密信息,甚至只是指出媒体中是否存在秘密信息的可能性大小。它的基本原理是根据载体信息在隐写前后的统计特性的变化,从而能够分辨出载体信息是否包含有隐秘信息。一般原始图像的特性是比较连续、光滑的而且像素之间具有较高的相关性。而隐秘图像一般都是随机的比特流,而且与原始的载体信息之间相互独立,所以图像相邻像素之间的相关性将会大大降低。隐写分析技术从某种程度上说其实就是两类分类的模式识别问题,其关键是特征的选择,好的特征能较好的帮助我们判断出载体是否含有隐秘信息。
针对某种特定隐写术的隐写分析可分为空域分析和变换域分析。空域隐写分析主要攻击对象是空域LSB隐写算法,主要包括有EZStego,s-Tool等。经典的分析算法包括直方图分析法、x2分析法、RS分析法等。变换域隐写分析的主要攻击对象为DCT域隐写术,它包括有Jsteg、Outguess、F5以及MB等,变换域隐写分析主要思路是DCT系数在隐写前后特性会发生变化。通用隐写分析主要根据图像隐写前后总体或者局部统计特性的变化,然后选取统计特征向量进行训练,最后通过分类器进行有效分类。
三、总结和展望
综上所述,信息隐藏技术与隐写分析技术已成为了当下一个热点问题,应用于越来越多的领域,二者相互制约,相互促进。但是它们现在都还处在一个发展阶段,还有很多问题需要我们去解决。对隐写分析来说,现在有很多种方法可以检测出图像是否含有隐秘信息,但要估计出隐秘信息的长度,甚至提取出隐秘信息,现在仍然难以做到,这也将是以后研究工作的重点和难点。同时特征的选取,分类器的设计以及降维技术都还存在可以优化的空间。
参考文献:
目前,随着物联网技术的不断成熟和逐步应用,人们越来越关心它的安全问题。尤其是物联网的感知前端射频识别系统,使用的是无线传输技术,相对于有线传输来说,其工作环境是开放的,不稳定的。为了保护应答器和读写器之间的信息传输,目前普遍采用的是双向认证和加密结合的方法,对认证双方通信的所有数据进行加密,从而确保系统的安全性。但是由于物联网中应答器数目巨大,在每个应答器中添加加解密电路会造成整个系统硬件实现的成本的大幅增加,因此不利于物联网技术的普遍应用。该文试图避免繁琐的加密过程,使用相对简单的数据隐藏技术保护应答器和读写器之间传输的敏感信息,从而降低系统的实现成本。
1 数据隐藏技术
网络技术的快速发展为信息传播和利用提供了极大的便利,同时也面临着巨大的挑战的安全问题。在传输过程中如何保护信息安全已经成为人类的重要主题之一。传统的解决方法是加密消息的传播。然而,随着计算机处理速度的提高和并行处理的发展,不再是不可能破解加密算法。因此,寻找一个新的方法来解决信息安全传输的问题已成为信息时代的重要问题之一。
数据隐藏和加密都是常用的方法来保持数据的机密性。与主要研究如何使用特殊编码方法来加密机密信息使其成为形式无法辨认的密文的数据加密不同,数据隐藏更多关注如何用一个公共信息来隐藏敏感信息,然后通过公开渠道来传输机密信息。也就是说通过开放的信息传输来传输隐秘信息。对于加密通信,窃听者可以截取密文、解码或者在接收方接收信息之前毁掉信息,这就会影响机密信息的安全。但使用数据隐藏技术,窃听者很难判断机密信息是否存在于公开信息中,无法判断是否窃听到了机密信息,因此可以保证机密信息的安全。
2 数据隐藏技术在物联网安全中的应用
正是由于数据隐藏技术的秘密性,使得它应用于物联网用户安全的保护方案中成为可能。该文在物联网射频识别应答器和读写器之间双向认证的基础上引入数据隐藏技术,对物联网用户传输的信息和自身身份信息进行保护,具体方案设计如下:
2.1 方案设计初始化
为了节约实现成本,在射频识别系统中使用被动标签。即每次读者首先向标签发送认证请求和提供能量来激活它来响应请求。在标签中要有一个哈希函数实现电路,并且该哈希函数是满足强无碰撞性要求的。标签具有休眠模式。读写器会在标签完成身份验证之后执行所有可能的操作,然后发送信号通知标签进入休眠模式,不再响应任何信号,直到标签被下一个读写器再次激活。在读写器中添加一些硬件电路实现数据隐藏算法。由于需要隐藏的消息的长度很短,因此该硬件电路应该是简单并且易于实现的。同时,相应的隐藏数据恢复电路应装备在标签中。后台数据库标识和其散列值是存储在读写器中的。为了保护用户的ID信息,后台数据库应该能够实现用户ID的自动刷新。
在初始状态,应答器存储自己的真实身份ID和数据库标识符B。读写器存储标识符与B相匹配的自身标识符B’及其散列值H(B’)。在后台数据库中包含所有的应答器ID和每个ID的散列值H(ID)。
2.2 方案执行过程
读写器、标签和后段数据库之间的通信过程描述如下:
1) 读写器向标签发送请求认证的信号Q1;
2) 标签接收到Q1,计算它所属数据库的标识T的哈希值H(T),并且使用数据隐藏算法将H(T)变成M1并把它发送给读写器;
3) 读写器收到M1,使用相应的算法从M1中提取出H(T)。将H(T)和自己存储的H(T’)进行对比,如果一致,它将会发送进一步认证请求Q2给标签。如果结果不一致,则判断该标签不属于本系统的标签,认证结束。读写器将发送认证请求Q1给下一个标签;
4) 标签收到Q2。将自身身份标识ID进行哈希运算,得到H(ID),再把它隐藏到文本M2中并发送给读写器;
5) 读写器将M2转发给后端数据库;
6) 后端数据库收到M2后获取H(ID)。搜索自己的数据库,查找是否有一个标签的IDi能够满足H(IDi)=H(ID)。如果找到,标签认证成功。后台数据库会为这个已经认证的标签产生一个新的身份信息ID’,并存储在数据库中IDi的记录中。最后将IDi和ID’发送给读写器。否则认证失败;
7) 读写器将收到的IDi和ID’使用数据隐藏算法隐藏成文本M3,并发送给标签;
8) 标签接收到M3之后可以获得IDi和ID’,将IDi和自己的身份信息ID进行对比,如果一致,则读写器认证成功,否则认证失败;
9) 标签和读写器同时将已经认证的标签ID改成ID’。标签进入读模式或写模式,可以接受读写器对其进行读写操作;
10) 完成通信后,标签进入休眠模式,直到接收读写器的下一次认证请求。
3 方案性能分析
基于数据隐藏的双向认证协议使用哈希函数来完成标签和读写器的双向认证并对通信敏感信息进行保护。哈希函数的强无碰撞性使得攻击者找不到另一个IDj能够满足H( IDj )=H( ID ),因此攻击者无法伪装成合法标签来干扰合法的通信过程。使用本文设计的保护方案,在标签和读写器完成每次认证之后都会同时刷新标签ID,因此攻击者无法通过跟踪特定通信信息的方式来跟踪标签使用者,因此可以保护用户的个人隐私。由于在对数据库进行搜索以确认标签是否属于数据库之前,本方案使用读写器对标签进行初步判断,因此可以在一定程度上降低后端数据库的计算量,减少拒绝服务供给的可能性。同时,将判断标签所属权的任务移交给读写器之后,后端数据库不需要每次都向读写器发送所有的标签的ID,而只需要处理那些通过预判断的标签。尤其是在存在大量标签的环境中,本方案可以大大减少读写器与后台数据库之间的通信量,从而进一步减轻安全信道的堵塞问题。
本文在双向认证过程中引入了数据隐藏技术。通过数据隐藏,攻击者或窃听者很难判断在未加密的信息中是否有敏感信息存在,因而可以保护用户的隐私。同时,在数据隐藏技术中,隐藏文本的任何变化都会被接收方所感知,因此信息的接收方会知道通信信息已经改变。使用本文设计的方案来完成身份认证和通信的过程中,每次标签与系统完成通信后,他们都将刷新标签ID,因 此攻击者不能有效跟踪标记,所以它无法知道用户和的确切物理位置,无法伪装成这个标签,因此可以有效地实现用户隐私信息的保护。
4 结束语
本文使用Hash-Lock协议完成标签和读写的双向认证,使用数据隐藏技术隐藏标签和读写器之间的通信内容。可以保护标签和读写器之间信息传输的机密性并检测是否有第三方伪造信息。与现有的只使用Hash-Lock算法的协议相比,该文设计的保护方案更加安全,出其不意的防范了攻击者的攻击。
参考文献:
[1] 金洪颖.RFID系统用户安全与隐私保护协议研究[J].电脑知识与技术,2013,10.
[2] 陆桑璐,谢磊.射频识别技术—原理、协议及系统设计[M].北京:科学出版社,2014.
[3] 彭力,徐华.无线射频识别技术与应用[M].西安:西安电子科技大学出版社,2014.
关键词 信息隐藏;信息隐藏技术课程;案例教学
中图分类号:G642.3 文献标识码:B
文章编号:1671-489X(2016)22-0100-03
Research on Course Teaching of Information Hiding Technology based on Case Teaching//ZHANG Zhengwei, WANG Weimin, WU
Lifa
Abstract Case teaching is the combination of theoretical knowledge and practical application. It is a process which is guided by theory to
practice, which is beneficial to improve students’ ability to under-stand and grasp the information hiding theory. According to the cha-
racteristics of this course, this paper firstly points out that the modern
information hiding problems existed in the course teaching, then carries on the system analysis the feasibility and necessity of the course, application of case teaching method, and the information hiding teaching into the teaching case of the methods, steps and matters needing attention are discussed.
Key words information hiding; course of information hiding techno-
logy; case teaching
1 引言
信息隐藏是隐蔽通信和知识产权保护等的主要手段。信息隐藏技术课程是一门实践性和理论性都较强的计算机信息专业课程,可作为高等院校具有一定计算机基础的信息安全专业、通信工程专业、密码学专业及计算机专业的研究生或高年级本科生教程,其基本知识涉及数学、密码学、人工智能、图像处理和机器学习等多个学科。在实际教学中,由于课时数有限,不能将课本知识面面俱到,为了保证课堂教学质量,通常教师会采用“教师课堂授课―教师课堂案例演示―学生课下模拟”这一传统的教学方式,以教师讲授为主,以学生学习和模仿为辅。采用案例教学法进行课堂教学[1],有利于激发学生学习动力,增强学生思维效力,改善学生理论联系实践的融会贯通能力。
案例教学法旨在增强学生分析问题、解决问题的能力,注重于实际应用。案例教学法是由哈佛大学在20世纪20年代提出来的,其主要采用一种新颖案例方式来完成课堂教学[2]。通过这种模式教学,有利于培养学生发现问题、积极思考探索、主动参与集体讨论并取得很好的效果。
普通本科院校鉴于其教育及管理定位,易造成学生基本理论知识不够完善、应用实践能力较弱,如何提高学生的综合素质能力,以更好满足社会对高素质人才要求的需求,是当前普通高等教育亟待探究的关键所在[3]。在信息隐藏技术课程教学中采用案例法教学,有助于培养学生的思维能力和实践应用能力。将项目案例运用到课堂教学[4],能使学生更加体会到成功的快乐,激发学习兴趣,有助于增强学习动力。
2 信息隐藏技术课程教学中存在的问题
信息隐藏技术作为计算机信息类专业的一门核心课程,有着较强的理论性和应用实践性。
理论性偏强,数学知识掌握要求高 信息隐藏技术这门课程虽然内容繁杂,但可以通过分析处理数字信号的方式和过程进行授课。信号可以看作一个二维有界向量,可以在空域或频域对其进行分析处理,因此,有关信号处理理论和方式都能应用到信息隐藏上来。信息隐藏技术具有较强的理论基础,需要学生掌握较好的基础知识,这对普通高校学生来说存在较大压力。同时,许多原理、公式演算和模型构建贯穿整个课程,其内容学习起来枯燥无味,容易使学生产生厌学情绪,影响学习效果。
实践技能偏弱,应用能力不强 信息隐藏技术是一门理论与实践相辅相成、紧密结合的专业性课程,这要求学生不仅要了解和掌握信息隐藏基本概念和原理,而且应具备较强的编程应用能力,能够通过编程实现各种信息隐藏处理。经历这些年的教学研究,笔者深感学生的编程实践技能有待提高,即便完成本科阶段学习,也很难实现一个简单算法,更谈不上用所学知识去完成一个综合的、系统的开发任务。
相关基础知识不扎实 信息隐藏主要是利用相关计算机技术将信息隐藏到某一载体中。该门课程主要采用工程实践的原理、算法及相关技术来完成信息的嵌入与提取。因此,该门课程涉及的知识点较多,如矩阵论、密码学、机器学习、信号分析与处理等。学生在学习该门课程时,由于并没有对这些知识进行系统的学习,因此较难理解和掌握这门课程。
3 案例教学法的含义
案例教学法是一种以案例设计与分析为基础,结合课堂讲授的教学方法。教师在教学中充当启蒙者和激励者的角色,诱导学生积极思考问题和解决问题。区别于传统教学法,案例教学法要求教师根据实际教学需要,设计并选择适当案例,指导学生对案例进行分析和探讨,并进行实践操作的教W过程。在这一过程中,学生是主体,教师是整个教学活动的指路人。选择什么样的案例,决定了该教学法能否取得成功。课堂授课是对案例决策、案例分析与选择的关键,可以激发学生思维,提高动手能力。课后案例分析报告则是经由案例教学达成教学目的的保证。案例教学与传统教学的区别如表1所示。
信息隐藏技术作为一门专业课程,其内容相对比较抽象和枯燥。传统授课通常采用“课堂讲授,课堂演示”的教学模式,无法调动学生学习积极性,导致理论记忆不深。该课程偏重工程应用研究,而目前使用的教材其内容侧重基础理论且算法较为陈旧,学生在学习该门课程后无法应用于实践,学习热情不高。近几年,学校虽已逐渐重视对学生实践环节能力的培养,但也仅仅是机械地对理论知识进行编程操作,属于被动的对学生能力的培养。跟课程相关的实验环节也多以验证性实验为主,对学生的创新性要求不高,学生实际操作还有待加强。
4 案例设计
案例教学法是一种以案例设计与分析为主、理论知识讲解为辅的教学模式。授课中要求以案例为中心,激发教师和学生的积极性和能动性,突出学生的主动性。
设计原则 案例教学法强调以学生主动学习为主,注重培养学生思维创新能力,能够较好地解决一些实际问题。项目设计要体现“以学生主动学习为主,教师课堂讲授为辅”的教学理念,摆脱过去那种“以教师讲授为主,学生学习和模仿为辅”的传统教学思想。任课教师要尽可能设计出一些带有诱发性、启导性和思维性的项目,以激发学生的学习热情和学习兴趣。
1)目的性。信息隐藏技术课程是一门工程应用性较强的学科,对学生的动手操作能力要求较高,需要注重培养学生的工程实践性技能,通过工程实践教学来提高学生的理论知识掌握能力。为了更好地提高学生的应用技能,案例的选择与设计必须遵循教学目的和教学大纲。
2)真实性。以能满足实际应用为探讨目标,理论联系实践,将社会实际应用问题引入课堂中,有利于增强学生的实践操作能力。这将为学生未来从事相关开发与研究打下坚实基础。
3)代表性。考虑到信息隐藏技术课程教学学时有限,不能面面俱到讲解课程所有知识点,因此,所选取或设计的教学案例应具有专一性、实时性、代表性和可操作性,这样有助于培养学生解决实际问题和思维创新能力。
4)实用性。信息隐藏技术课程主要讲解的是信息嵌入、信息提取和篡改定位等相关内容,这要求所选取案例一定要结合实际,满足社会实际应用的要求。
5)生动性。信息隐藏技术课程其理论原理相对较为枯燥,很难调动学生学习积极性。将客观枯燥的原理通过生动的案例进行形象描述,这将有助于培养学生学习该课程的兴趣。
案例设计的基本方法 信息隐藏技术案例教学主要围绕案例准备、案例实施、案例评价等几个步骤展开。
1)案例准备。教师需要根据实际应用设计出一个能充分激发学生兴趣、提高动手能力的案例。教师和学生对此案例进行沟通理解,划分小组,指定组长,明确各组员任务。通过组内成员共同撰写目标,明确各自不同的兴趣,确定任务和预期效果。
2)案例实施。首先,教师要组织学生对案例进行分析理解,通过各组的讨论、分析并提出实施思路。其次,教师根据学生的实施思路进行针对性讲解后,要求学生对实施思路进行讨论修改,并提出修改方案。最后,由学生各组共同协作完成案例制作。在制作过程中,教师要不断激励学生要勇于创新、突破自我,充分发挥想象力。
3)效果评价。案例效果评价主要用来检验学生的学习状况。不能用单一的评价指标来评价案例教学法的优劣,需要倡导学生的主体地位,鼓励团队协作,分层进行评价。同时需要展开团队互评及个人自评等形式。案例教学法以学生学习为主体,存在多个实践环节,需要教师对相关环节进行记录,了解和掌握学生的实际操作情况,并予以指导。
5 案例教学法在信息隐藏技术教学中的应用
案例教学法既能有效提高学生的动手能力,又能加深学生对理论知识的理解,贯穿于信息隐藏技术课程教学的全过程。首先,通过案例来讲解信息隐藏的基本原理,将一个典型的、易于理解的和具有实际应用意义的案例引入教学中,将复杂的概念用形象生动的案例来进行阐述。其次,不同学生的学习能力有所差异,需对不同学生设置相对应要求。通过对案例教学法的初步引入,教师对学生的编程、分析问题能力有了初步了解。通过对不同层次的学生设置不同的教学规程,运用案例教学法才有可能真正提高不同层次学生的综合学习能力。
前期 就信息隐藏技术而言,案例教学法因该课程涉及内容广、深,相应算法复杂,而使教学过程变得烦琐。如果在案例教学法的初始阶段就要求学生完全独立编程,实现某一算法,容易打击学生学习的积极性和降低学习兴趣,产生畏难心理,这将很难取得较好的教学效果。因此,该阶段教师可以多提供易懂代码给学生,让学生在模拟编程中感受课程学习的乐趣。在经过一段练习实践后,学生的编程能力会有所增强,此时可适当减少所供代码比例。
中期 该阶段是培养学生实践编程能力的重要时期,其案例内容的设计与选择需因不同类型学生的差异而有所改变。
1)对于有一定编程能力的学生,教师可以提供一些参考资料,让学生自主编写一些基础程序。
2)具有一定分析能力但编程能力一般的学生,可以通过对算法原理分析来对教师提供的部分代码做适当改进,以验证改进算法的优越性。
3)信息隐藏实验在信息嵌入时,有时为了提高算法性能,需要调整嵌入参数,这时就可以让编程能力相对较弱的学生完成数据验证与分析的任务。
后期 案例教学法的案例内容必须具备完整性、实用性和系统性,这将很好地激发学生学习积极性。案例教学法可以让学生积极参与其中,营造团队合作的良好氛围[5]。随着学生综合能力的提高,可在后期安排课程实习、课程设计等相关任务让学生来完成,如水印嵌入、水印提取等。课后可以通过相关通信媒介来加强学生之间的讨论以及师生间的交流,这样做可以减少课堂讨论时的不可控因素,节约课时,以提高学生动手操作能力。
6 总结
案例教学法可以将理论和实践更好地结合起来,不仅可以很好地调动学生学习的积极性,而且改善了传统课程授课的教学质量,培养学生想学、爱学、学而不厌的态度。学生通过对案例进行分析、设计,可以更好地加深对课程理论知识的理解。案例教学法可以使学生参与实际应用,解决社会现实问题,达到学以致用的目的。案例教学法是对传统教学方法的有益扩充,信息隐藏技术的基本原理必须通过教师课堂讲授,学生才能牢固掌握,才能更好地去指导实践。
淮阴工学院将案例教学法运用到信息隐藏技术课程教学中并已取得显著效果。教学实践表明,案例教学法改变了传统教学中以教师课堂讲授为主的教学方式,以学生为中心,诱导学生主动学习,提高学习兴趣。案例教学法有效地改善了教学体系,提高了教学质量,使学生更全面地掌握信息隐藏算法所涉及的相关认识。传统教学法在理论教学、保持系统完整性方面有着案例教学法无法替代的功效。因此,将两种教学模式有机结合、相辅相成,才能在教学上获得更好的效果。■
参考文献
[1]田保军.软件工程课程案例教学方法的研究[J].内蒙古师范大学学报:教育科学版,2008,21(1):103-105.
[2]王灿辉,张舒,林郎碟.案例教学法在软件工程教学中的应用[J].计算机教育,2012(1):20-23.
[3]张忠林.基于项目驱动模式下的“软件工程”教学改革[J].计算机教育,2009(2):53-55.
关键词:自适应;信息隐藏;数字水印;空间域
中图分类号: TP309.2
文献标识码:A
0引言
信息隐藏是将重要信息嵌入到在其他媒体(载体) 中,在基本不改变载体的外部特征及使用价值的情况下,我们的感觉器官感觉不到载体外部的变化,从而实现重要信息的隐秘传递。信息隐藏的目的不在于限制正常的资料存取,而在于保证隐藏的信息不引起攻击者的注意和重视,从而减少被侵犯的可能性,摆脱数据加密技术的致命缺陷。现在的隐密通信方式一般都要求把消息先加密再隐藏, 即形成了“加密+ 隐藏”的安全通信模式,它较之单纯的密码加密方法更多了一层保护。信息隐藏与分析技术的研究无论在军事和民用方面都有着重要的意义,隐藏技术越来越多地应用于多媒体信息的版权保护及信息安全等领域。特别在军事上,各个国家都采用了信息隐藏技术,进行情报、间谍活动,用于信息战领域中。早在2001年9月美国HINDU新闻组就报道了头目“拉登”可能通过隐写图片向其同僚传递重要的信息、散布消息、筹集资金、组织恐怖袭击等[1],并成功地逃过了美国通信监管部门的监控。
目前用来作为信息隐藏的载体有文字、图像、语音或视频等多种不同格式的文件, 但使用方法没有本质的区别。其中图像由于冗余空间大,是目前用得最多的信息隐藏载体。在基于图像的信息隐藏技术中,有两种隐藏技术:基于变换域的隐藏技术和基于空间域的隐藏技术。其中基于变换域的隐藏技术鲁棒性比较好,但较难实现大量数据的隐藏,要实现大容量的信息隐藏主要使用基于空间域的隐藏技术。
1典型空间域隐藏技术分析
基于空间域的隐藏技术是直接改变图像元素的值, 一般是在图像的亮度或色带中加入隐藏的内容。最简单和有代表性的基于空间域的信息隐藏方案是将要隐藏的信息代替图像的最低有效位(LSB)或者多个不重要位平面的所有比特的算法,这里的隐藏信息指的是二值比特序列。其隐藏信息的原理如下:计算机用三个字节来表示颜色的红、绿、蓝三原色的分量数值,每个字节的最低位的变化对颜色的视觉影响很小而无法察觉,因此可以把红、绿、蓝三原色的分量数值的最低位(最小意义位) 视为冗余空间,把信息隐藏在这里。1993年,Tirkel等人[2]提出了数字图像水印的一种方法,该方法将m序列的伪随机信号以编码形式的水印嵌入到灰度图像数据的LSB中。为了能得到完整的LSB位平面而不引入噪声,图像通过自适应直方图处理,首先将每个像素值从8 bit压缩为7 bit,然后将编码信息作为像素值的第8个bit(即像素值的LSB),这一方法是单个LSB编码方法的扩展,在单个LSB编码方法中,LSB直接被编码信息所代替。
LSB 算法的优点是算法简单、嵌入速度快、隐藏容量比较大,这些优点是基于变换域的隐藏算法所无法比拟的。因此LSB算法仍然在信息隐藏中占有重要地位,几乎全部的隐写算法中都可以找到LSB 算法的影子, Internet上常见的隐写软件中也大都使用LSB 算法或LSB 的衍生算法[3]。由于使用了图像最不重要的像素位,因此算法的鲁棒性较差,嵌入信息很容易受到滤波、图像量化、几何变形和加噪等操作的攻击。针对LSB算法出现的缺陷,一些研究人员对空域图像水印技术进行了改进,使算法的稳健性和安全性得到了提高。文献[4]提出通过颜色量化的方法实现的,使原来需要8位来表示的256色图像量化到颜色数128 色,量化后的图像只用7 位来表示,剩余的那位(最高位)就可以作为冗余空间来存储隐藏信息。由于此时所用的冗余空间为最高位,也叫最大意义位(MSB),因此鲁棒性好,解决了LSB算法鲁棒性差的问题。该方法的缺点是嵌入后的图像的调色板大小发生改变, 而且对于原本256色的图像量化后,由于存在量化误差,图像的视觉质量会有不同程度的降低,其中最为严重的是在均匀渐变区域出现的伪轮廓,因此,必须降低质量才有可能实现信息嵌入[5]。目前,基于图像空间域的隐藏技术的研究目标主要有两个:一是在一定长度的可修改图像载体数据中,在不影响载体视觉效果的前提下,嵌入尽可能多的信息数据;二是提高其鲁棒性。本文在以上算法的基础上提出了一种鲁棒性和隐藏容量均优于LSB算法的空间域信息隐藏算法。
2本文算法
基于图像的信息隐藏可看为在强背景(原始图像)下叠加一个弱信号(被隐藏的信息),只要叠加的信号低于对比度门限(Contrast Sensitivity Threshold),视觉系统就无法感觉到信号的存在[6]。根据
人类视觉系统(Human Vision System,HVS)
的对比度特性,该门限值受背景照度、背景纹理复杂性和信号频率的影响。背景越亮,纹理越复杂(或者说边缘丰富),门限就越高[6,7],这现象称为亮度掩蔽和纹理掩蔽。HVS的对图像所具有的亮度掩蔽、边界掩蔽和纹理掩蔽等效应表明[8]:(1) 人眼对不同灰度具有不同的敏感性,通常对中等灰度最为敏感,而且向低灰度和高灰度两个方向非线性下降;(2) 对图像平滑区的噪声敏感,而对纹理区的噪声不敏感;(3) 边界信息对于人眼非常重要。根据人类视觉掩蔽特性可知:具有不同局部性质的区域在保证不可见性的前提下,可允许叠加的信号强度是不同的。对RGB彩色图像而言, 人类视觉系统并不是只有对LSB位不可感知,对于较亮的像素点,比LSB更高的某些位的变化同样是不可感知的,这些不可感知位同样可用来嵌入信息,从而进一步提高嵌入容量。利用以上HVS特性,本文提出多平面自适应隐藏方法,可获得较大的信息隐藏空间和较好的鲁棒性。其基本思路是根据每个像素点RGB三个颜色分量的亮度值的不同,确定是否隐藏信息、信息隐藏位置及信息的隐藏量。由于不是将信息隐藏在某个固定的平面位,这样既能解决LSB算法的鲁棒性差的问题,也没有MSB算法的颜色失真问题。具体算法如下 :
设24位的RGB彩色图像的每个像素RGB三个颜色分量分别为(r7,r6,r5,r4,r3,r2,r1,r0)、(g7,g6,g5,g4,g3,g2,g1,g0)、(b7,b6,b5,b4,b3,b2,b1,b0),对图像的每个像素点RGB三色的每一色进行单独嵌入处理,首先对红色分量进行处理,将(r7,r6,r5,r4,r3,r2,r1,r0)从高位至低位逐位进行检查,当第x位不为0时,则从第x-y位(y≥1)开始嵌入信息,一直嵌入到第z位,若z>x-y, 则该像素点的该分量不嵌入信息, 由于信息的嵌入是在一个非0位后的一个约定位开始,到另一个约定位结束,因此信息的提取只依赖参数y和z,不需要原始图像及辅助信息表等其他信息,是一种完全意义的盲提取。即:
ri,其他其中为该像素点红色分量第i位ri经过嵌入处理后的值,wj(j∈{1,2,…,L})为待嵌入的比特序列,j的值为前面已经嵌入的比特数,每嵌入1个比特j的值增加1,y的取值决定了嵌入强度,它需要在不可感知性和嵌入容量之间折中考虑,y值越大,视觉不可感知性越好,但可隐藏的信息量越少。z的取值由所需的抵御滤波处理的鲁棒性决定,当z=0时,则包括LSB位。处理完红色分量后,再用同样的方法处理该像素的蓝色和绿色分量,只是对蓝色和绿色分量,y的取值可以根据人类视觉系统特性取不同的值。处理完一个像素点后,再重复以上过程,处理下一个像素点。
设背景照度为I,根据Weber定律[9],在均匀背景下,人眼刚好可以识别的物体照度为I+I, I满足:
视觉领域的进一步研究表明, I与I的关系更接近指数关系[10]。有文献提出了更准确的对比度敏感度函数(CSF, Contrast Sensitivity Function):
其中I0为当I=0的对比度门限,α为常数,a∈ (0.6, 0.7)。
根据以上结论,y的取值为4至5时就可基本满足视觉不可见性要求,实验结果也证实如此。由于人眼对RGB三色的敏感度是不同的,人眼可感知的亮度值可由如下的公式计算:可见人眼对绿色最敏感,对蓝色最不敏感,它不到绿色的1/4,因此为了达到不可感知性的目的,在y值的选取上,绿色需要适当取大一点,蓝色分量的值则可取小一点。
3试验与讨论
为验证本算法的性能,以512×512×24 的原始Lenna图像进行试验。首先试验本算法的最大信息嵌入量,z的值设为0,设RGB三色所对应的y的取值为(yr,yg,yb),这三个值分别选取(5,5,4)、(4,5,4),(4,4,4),(4,5,3)和(3,5,3)几组不同的值进行嵌入试验,嵌入后的结果分别如图1的(b)、(c)、(d)、(e)、(f)所示。由试验结果可知,当yr≥4、yg≥5、yb≥3时,对人类的视觉系统而言是不可感知的,超过这个值时就会影响视觉效果,即(yr,yg,yb)取(4,5,3)时,隐藏的信息的不可感知性就能满足要求,此时达到可隐藏信息量的最大值。再选取标准图像peppers和tulips进行试验,当yr,yg,yb分别取4,5,3时,嵌入信息后的载密图像如图2所示,可见在嵌入隐藏信息后同样能满足视觉的不可感知性要求。当yr,yg,yb分别取4,5,3时,在Lenna、peppers和tulips图像中可嵌入的信息量见表1,不难看出本算法的信息隐藏量非常大,嵌入比平均值约为36%,而目前认为信息隐藏量大的LSB算法的嵌入容量的嵌入比为12.5%,可见本算法的可嵌入容量远比LSB算法大很多。
再以512×512×24的原始Lenna图像嵌入一幅181×252×8的灰度图像进行剪裁试验,将载有隐藏信息的图像进行如图3(c)所示的随机裁剪,然后进行隐藏信息的提取,提取的图像如图3(d)所示,说明本算法有较强的抗剪裁能力。由于本算法的嵌入容量大,同小容量的嵌入算法相比,对于同样的嵌入信息可进行反复的嵌入,一幅载体图片可嵌入多个水印信息,因此抗剪裁能力强。以512×512×24的原始Lenna图像嵌入一幅181×252×8的灰度图像进行抗干扰试验,在嵌入隐藏信息的图像上加入0.02的椒盐噪声,检测到的隐藏图像如图4(b)所示,虽然检测到的隐藏图像也有明显的噪声干扰信息,但不影响识别效果,可见本文算法一定的抗噪声干扰能力,作为隐藏图像之类的水印是能满足要求的,而计算复杂度却比同样效果的频域算法低很多。 另外当z取1时(即LSB位不隐藏信息)进行滤波试验,载密图像进行中值滤波处理后,仍可检测到隐藏的大部分信息,而LSB算法则基本检测不到隐藏的信息,说明本算法的鲁棒性比LSB算法要高很多,而此时的信息隐藏量却仍然比LSB算法大。同时由于嵌入的图像的位平面与原始图像、嵌入后的图像没有对应关系,而不像LSB算法那样将信息嵌入在一个固定的平面位,可防止位平面过滤所导致的失密,因此安全性也比LSB算法高。