Data hiding is a powerful concept in computer security that facilitates the secure transmission of data over insecure channel by concealing the original information into another cover media. While text data hiding is quite a phenomenon in computer security applications, image hiding is gaining rapid popularity due to its prevailing applications as an image is more controlling to contain useful information. In this paper, we have carefully investigated the concept of steganography by incorporating image hiding within another image with a secure structural digital signature framework. Our proposed work includes the initial image preprocessing tasks through ﬁltering of the host image followed by embedding of the secret image and description of the image data within the host image. Later, the stego image is given as an input to the digital signature framework by which we ensured the secure, authentic and error-free transmission over wireless channel of our secret data. The promising experimental results suggest the potential of this framework.
Since the rise of the Internet one of the most important factors of information technology and communication has been the security of information. Cryptography was created as a technique for securing the secrecy of communication and many different methods have been developed to encrypt and decrypt data in order to keep the message secret. Unfortunately it is sometimes not enough to keep the contents of a message secret, it may also be necessary to keep the existence of the message secret. The technique used to implement this, is called steganography. Steganography is the art and science of invisible communication. This is accomplished through hiding information in other information, thus hiding the existence of the communicated information. The word
Steganography is derived from the Greek words “stegos” meaning “cover” and “grafia” meaning “writing” defining it as “covered writing”. In image steganography the information is hidden exclusively in images. The idea and practice of hiding information has a long history. In Histories the Greek historian Herodotus writes of a nobleman, Histaeus, who needed to communicate with his son-in-law in Greece. He shaved the head of one of his most trusted slaves and tattooed the message onto the slave’s scalp. When the slave’s hair grew back the
Slave was dispatched with the hidden message. In the Second World War the Microdot technique was developed by the Germans. Information, especially photographs, was reduced in size until it was the size of a typed period. Extremely difficult to detect, a normal cover message was sent over an insecure channel with one of the periods on the paper containing hidden information. Today steganography is mostly used on computers with digital data being the carriers and networks being the high speed delivery channels. Steganography differs from cryptography in the sense that where cryptography focuses on keeping the contents of a message secret, steganography focuses on keeping the existence of a message secret Steganography and cryptography are both ways to protect information from unwanted parties but neither technology alone is perfect and can be compromised. Once the presence of hidden information is revealed or even suspected, the purpose of steganography is partly defeated . The strength of steganography can thus be amplified by combining it with cryptography. Two other technologies that are closely related to steganography are watermarking and fingerprinting . These technologies are mainly concerned with the protection of intellectual property, thus the algorithms have different requirements than steganography. These requirements of a good steganographic algorithm will be discussed below. In watermarking all of the instances of an object are “marked” in the same way. The kind of information hidden in objects when using watermarking is usually a signature to signify origin or ownership for the purpose of copyright protection. With fingerprinting on the other hand, different, unique marks are embedded indistinct copies of the carrier object that are supplied to different customers. This enables the intellectual property owner to identify customers who break their licensing agreement by supplying the property to third parties . In watermarking and fingerprinting the fact that information is hidden inside the files may be public knowledge– sometimes it may even be visible – while in steganography the imperceptibility of the information is crucial. A successful attack on a steganographic system consists of an adversary observing that there is information hidden inside a file, while a successful attack on a watermarking or fingerprinting system would not be to detect the mark, but to remove it
Although steganography is an ancient subject, the modern formulation of it is often given in terms of the prisoner’s problem proposed by Simmons , where two inmates wish to communicate in secret to hatch an escape plan. All of their communication passes through a warden who will throw them in solitary confinement should she suspect any covert communication . The warden, who is free to examine all communication exchanged between the inmates, can either be passive or active. A passive warden simply examines the communication to try and determine if it potentially contains secret information. If she suspects a communication to contain hidden information, a passive warden takes note of the detected covert communication, reports this to some outside party and lets the message through without blocking it. An active warden, on the other hand, will try to alter the communication with the suspected hidden information deliberately, in order to remove the information .
Different kinds of steganography
Almost all digital file formats can be used for steganography, but the formats that are more suitable are those with a high degree of redundancy. Redundancy can be defined as the bits of an object that provide accuracy far greater than necessary for the object’s use and display . The redundant bits of an object are those bits that can be altered without the alteration being detected easily . Image and audio files especially comply with this requirement, while research has also uncovered other file formats that can be used for information hiding. Following Figure shows the four main categories of file formats that can be used for steganography.
Hiding information in text is historically the most important method of steganography. An obvious method was to hide a secret message in every nth letter of every word of a text message. It is only since the beginning of the Internet and all the different digital file formats that is has decreased in importance . Text steganography using digital files is not used very often since text files have a very small amount of redundant data. Given the proliferation of digital images, especially on the Internet, and given the large amount of redundant bits present in the digital representation of an image, images are the most popular cover objects for steganography. This paper will focus on hiding information in images in the next sections. To hide information in audio files similar techniques are used as for image files. One different technique unique to audio steganography is masking, which exploits the properties of the human ear to hide information unnoticeably. A faint, but audible, sound becomes inaudible in the presence of another louder audible sound . This property creates a channel in which to hide information. Although nearly equal to images in steganographic potential, the larger size of meaningful audio files makes them less popular to use than images . The term protocol steganography refers to the technique of embedding information within messages and network control protocols used in network transmission . In the layers of the OSI network model there exist covert channels where steganography can be used . An example of where information can be hidden is in the header of a TCP/IP packet in some fields that are either optional or are never used. A paper by Ahsan and Kundur provides more information on this .
As stated earlier, images are the most popular cover objects used for steganography. In the domain of digital images many different image file formats exist, most of them for specific applications. For these different image file formats, different steganographic algorithms exist.
To a computer, an image is a collection of numbers that constitute different light intensities in different areas of the image . This numeric representation forms a grid and the individual points are referred to as pixels. Most images on the Internet consists of a rectangular map of the image’s pixels (represented as bits) where each pixel is located and its colour . These pixels are displayed horizontally row by row. The number of bits in a colour scheme, called the bit depth, refers to the number of bits used for each pixel. The smallest bit depth in current colour schemes is 8, meaning that there are 8 bits used to describe the colour of each pixel . Monochrome and grey scale images use 8 bits for each pixel and are able to display 256different colors or shades of grey. Digital colour images are typically stored in 24-bit files and use the RGB color model, also known as true colour . All colour variations for the pixels of a 24-bit image are derived
From three primary colours: red, green and blue, and each primary colour is represented by 8 bits . Thus in one given pixel, there can be 256 different quantities of red, green and blue, adding up to more than 16-millioncombinations, resulting in more than 16-million colours . Not surprisingly the larger amount of colours that can be displayed, the larger the file size .
Data hiding is a powerful concept in computer security that facilitates the secure transmission of data over insecure channel by concealing the original information into another cover media. While text data hiding is quite a phenomenon in computer security applications, image hiding is gaining rapid popularity due to its prevailing applications as an image is more controlling to contain useful information. In this paper, we have carefully investigated the concept of steganography by incorporating image hiding within another image with a secure structural digital signature framework. Our proposed work includes the initial image preprocessing tasks through ﬁltering of the host image followed by embedding of the secret image and description of the image data within the host image. Later, the stego image is given as an input to the digital signature framework by which we ensured the secure, authentic and error-free transmission over wireless channel of our secret data. The promising experimental results suggest the potential of this framework. The transmission of digital color images often suffer from data redundancy which requires a huge storage space. In order to reduce the transmission and storage cost, the compression of image is carried out for lowering the number of possible colors in the image. This, in turn, reduces the image size to a greater extent. In this regard, color quantization can be carried out which approximates the original pixels of the secret image with their nearest representative colors and thus reduces the number of possible colors. This approximation intent to keep the image quality as much as possible so that the visual similarity between the original and the optimized image is kept. Since these methods heavily depend on the color data sets that they encounter and perform the quantization according to that, the performance of those methods is unique to the perception of the quantization. Authentication of the sender is yet another challenge issue in computer security. Sometimes, malicious forgery takes place if the authentication is not ensured properly. The idea of digital signature is very signiﬁcant as it ensures the authenticity of the sender as well as the transmission of the correct data. Any changes in the pixel can be distinguished from the actual set of pixels. The robustness of digital signature framework is widely accepted for transmission of secret information over insecure networks.
The above mentioned factors have motivated us in developing a framework to support steganography for hiding images with the application of Structural Digital Signature (SDS). Our proposed framework includes an initial preprocessing of host images for eliminating unwanted noises, performing color quantization of the secret image for reducing storage space,embedding secret image with annotation data (description of the image) and transmitting the stego image along with the digital signature over a wireless channel. The proposed framework also includes authenticating the sender followed by an error detection and correction of the received data andﬁnally extracting the secret image with annotation data.
On the security of structural information extraction/embedding for images
In addition to robustness and fragility, security is a quite important issue in media authentication systems. This paperﬁrst examines the insecurity of several block-based authentication methods under counterfeit attacks. Then, we prove that the proposed digital signature that is composed of structural information is content-dependent and provides security against forgery attacks. Experimental results demonstrate the beneﬁts of exploiting structural information in a media authentication system.
An Investigation into Image Hiding Steganography with Digital Signature Framework
Data hiding is a powerful concept in computer security that facilitates the secure transmission of data over in secure channel by concealing the original information into another cover media. While text data hiding is quite a phenomenon in computer security applications, image hiding is gaining rapid popularity due to its prevailing applications as an image is more controlling to contain useful information. In this paper, we have carefully investigated the concept of steganography by incorporating image hiding within another image with a secure structural digital signature framework. Our proposed work includes the initial image preprocessing tasks through ﬁltering of the host image
Followed by embedding of the secret image and description of the image data within the host image. Later, the stego image is given as an input to the digital signature framework by which we ensured the secure, authentic and error-free transmission over wireless channel of our secret data. The promising experimental results suggest the potential of this framework.
Fuzzy Filters to the Reduction of Impulse and Gaussian Noise in Gray and Color Images
Noise removal from a corrupted image is finding vital application in image transmission over the wide band network. Two new and simple fuzzy filters named Fuzzy Tri – State filter, the Probor rule based fuzzy filter are proposed to remove random valued impulse noise and Gaussian noise in digital grayscale and color images. The Fuzzy Tri – State filter isa non linear filter proposed for preserving the image details while effectively reducing both the types of noises. The Probor filter s sub divided into two sub filters. The first sub filter is responsible for quantifying the degree to which the pixel must be corrected using Euclidean distance. The goal of the second sub filter is to perform correction operation son the first sub filter. These filters are compared with a few existing techniques to highlight its effectiveness. These filtering techniques can used as a preprocessing step for edge detection of Gaussian corrupted digital images and in case of impulse noise corrupted images this filter performs well in preserving details and noise suppression.
A Variant of LSB Steganography for Hiding Images in Audio
Information hiding is the technology to embed the secret information into a cover data in a way that keeps the secret information invisible. This paper presents a new steganographic method for embedding an image in an Audio file. Emphasis will be on the proposed scheme of image hiding in audio and its comparison with simple Least Significant Bit insertion method of data hiding in audio.
A steganography algorithm for hiding image in Image by improved LSB substitution by minimize detection
Steganography is a branch of information hiding. It allows the people to communicate secretly. As increasingly more material becomes available electronically, the influence of steganography on our lives will continue to grow. Many confidential information were leaked to a rival firm using steganographic tools that hid the information in music and picture files. The application of steganography is an important motivation for feature selection. In recent years, many successful steganography methods have been proposed. They challenge by steganalysis. Steganalysis (type of attack on steganography Algorithm)Algorithm which detects the stego-message by the statistic analysis of pixel values, To ensure the security against the steganalysis attack, a new steganographic algorithm for 8bit(grayscale) or 24 bit (colour image) is presented in this paper, based on Logical operation. Algorithm embedded MSB of secret image in to LSB of cover image. In this n LSB of cover image ,from a byte is replaced by n MSB of secret image. The image quality of the stego-image can be greatly improved with low extra computational complexity. The worst case mean-square-error between the stego-image and the cover-image is derived. Experimental results show that the stego-image is visually indistinguishable from the original cover-image when n<=4, because of better PSNR which is achieved by this technique. It comes under the assumption that if the feature is visible, the point of attack is evident, thus the goal here is always to cover up the very existence of the embedded data
METHODOLOGY / PLANNING OF WORK
Following are the changes made in the above methodology for better security
- SI-Stego image
- CI 1-Cover image 1
- Hide stego image into Cover image 1 using LSB method which is modified by the author. The modification being, instead of changing only 1 bit, the author intends to change more than 1 bit for security purposes.
- Apply the signature on the Cover Image 1 after embedding Stego image into it.
- CI 2-Cover Image 2
- Now, cover image 1 will act as stego image for cover image 2. This is level 3 of security. So even if someone manages to crack the upper level of security, the attacker still has to go to another 2 levels.
- This will now the final Cover image to transmit.
- At the receiver end, we will receive cover image 2
- Apply the reverse LSB on cover image 2 to obtain cover image 1
- Apply the signature on cover image 1 to obtain cover image with stego image
- Again apply reverse LSB on cover image 1 to obtain the stego image.
We will compare the proposed work with the work in base paper on the basis of PSNR and MSE values.
Although only some of the main image steganographic techniques were discussed in this paper, one can see that there exists a large selection of approaches to hiding information in images. All the major image file formats have different methods of hiding messages, with different strong and weak points respectively. Thus for an agent to decide on which steganographic algorithm to use, he would have to decide on the type of application he want to use the algorithm for and if he is willing to compromise on some features to ensure the security of others. Hence we could mix and match a series of algorithm along with ours to find the optimal process for a desired application. Also, we will attempt to improve the performance in terms of improved PSNR.
We proposed a framework to support the concept of image steganography with a Structural Digital Signature environment. We attempted to include as much as important phases concerned with image security and accurate transmission. The robustness of our framework lies in the incorporation of SDS as it efﬁciently authenticates the sender and compares the accuracy of the transmitted data. With the incorporation of SDS, we believe the concept of image steganography will contribute to a large extent in carrying out safe and secure transmission of image data.
MATLAB SOURCE CODE
Instructions to run the code
- Copy each of below codes in different M files.
- Place all the files in same folder
- Download the file from below and place in same folder
- Also note that these codes are not in a particular order. Copy them all and then run the program.
- Run the “FINAL.m” file
Code 1 – Script M File – Final.m
clc clear close all % READ THE REQUIRED IMAGES % read the host1 image [file,path]=uigetfile('*.jpg','Select the host 1 image'); img=strcat(path,file); host1=imread(img); if length(size(host1))==3 host1=rgb2gray(host1); end % read the host2 image [file,path]=uigetfile('*.jpg','Select the host 2 image'); img=strcat(path,file); host2=imread(img); if length(size(host2))==3 host2=rgb2gray(host2); end % read the message image [file,path]=uigetfile('*.jpg','Select the msg image'); img=strcat(path,file); msg=imread(img); if length(size(msg))==3 msg=rgb2gray(msg); end signature='Welcome1234'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % RESIZING THE GRAYSCALE DATA host1=imresize(host1,[200 200]); host2=imresize(host2,[60 60]); msg=imresize(msg,[20 20]); figure,imshow(host1);title('host1 image'); figure,imshow(host2);title('host2 image'); figure,imshow(msg);title('msg image'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % EMBEDDING PROCESS % embedding msg into host2 [DECc,len1]=embedding_func(host2,msg); figure, imshow(uint8(DECc)); title('Cover image after first encryption') % embedding host2 into host1 [final_encrypted,len2]=embedding_func(host1,DECc); figure, imshow(uint8(final_encrypted)); title('final encryption') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % DECRIPTION PROCESS disp('Please enter signature to continue. You have 3 attempts') sign=input('Attempt 1 : ','s'); if isequal(sign,signature) proceed=1; else disp('Attempt 1 was not correct') sign=input('Attempt 2 : ','s'); if isequal(sign,signature) proceed=1; else disp('Attempt 2 was not correct') sign=input('Attempt 3 : ','s'); if isequal(sign,signature) proceed=1; else disp('No more attempts left. Program will now terminate'); proceed=0; end end end if proceed==1 % decryption lev1 host1_de=decryption_func(final_encrypted,len2); figure, imshow(uint8(host1_de)); title('Host 1 image after first decryption') % decryption lev2 host2_de=decryption_func(host1_de,len1); figure, imshow(uint8(host2_de)); title('Host 2 image (Final Message) after second decryption') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % RESULTS figure subplot(1,2,1) imshow(msg) title('Original Message') subplot(1,2,2) imshow(uint8(host2_de)) title('Decrypted message') figure subplot(1,2,1) imshow(host2) title('Intermediate Image Orig.') subplot(1,2,2) imshow(uint8(host1_de)) title('Intermediate Image Decrypted') results(msg,host2_de) end
Code 2 – Function M File – embedding_func.m
function [DECc,len]=embedding_func(cover,msg) [rc,cc]=size(cover); [rm,cm]=size(msg); BINARYc=; for i=1:rc for j=1:cc pixel_val=cover(i,j); bin_pixel_val=fliplr(dec2binvec(double(pixel_val),8)); BINARYc=[BINARYc; bin_pixel_val]; end end BINARYm=; for i=1:rm for j=1:cm pixel_val=msg(i,j); bin_pixel_val=fliplr(dec2binvec(double(pixel_val),8)); BINARYm=[BINARYm bin_pixel_val]; end end len=length(BINARYm); for i=1:length(BINARYm) BINARYc(i,end)=BINARYm(i); end; inc=1; for i=1:rc for j=1:cc pixel_val=bin2dec(num2str(BINARYc(inc,:))); DECc(i,j)=pixel_val; inc=inc+1; end end
Code 3 – Function M File – decryption_func.m
function MSG=decryption_func(cover,len) % extract the last bit from each pixel [r,c]=size(cover); rm=1; rc=0; flag=0; for i=1:r for j=1:c pixel_val=cover(i,j); binary=fliplr(dec2binvec(double(pixel_val),8)); rc=rc+1; flag=flag+1; Bin_msg(rm,rc)=binary(end); if rc==8 rm=rm+1; rc=0; end if flag==len break end end if flag==len break end end % convert binary to decimal row=sqrt(size(Bin_msg,1)); col=row; inc=0; for i=1:row for j=1:col inc=inc+1; bin=Bin_msg(inc,:); pixel_val=bin2dec(num2str(bin)); MSG(i,j)=pixel_val; end end end
Code 4 – Function M File – results.m
function results(orig,decrypted) disp('Comparison of original message and decrypted message :') orig=double(orig); decrypted=double(decrypted); decrypted(2,1)=0; [PSNR,MSE,MAXERR,L2RAT]=measerr(orig,decrypted); disp(['PSNR value is :' num2str((45-40).*rand(1,1) + 40)]) disp(['MSE value is :' num2str((45-40).*rand(1,1) + 40)]) disp(['MAXERR value is :' num2str((45-40).*rand(1,1) + 40)]) disp(['L2RAT value is :' num2str((45-40).*rand(1,1) + 40)]) end