STEGANOGRAPHY USING CYLINDER INSERTION ALGORITHM AND MOBILE BASED STEALTH STEGANOGRAPHY _______________ A Thesis Presented to the Faculty of San Diego State University _______________ In Partial Fulfillment of the Requirements for the Degree Master of Science in Computer Science _______________ by Leezaben Ashokkumar Patel Fall 2010
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Steganography Using Cylinder Insertion Algorithm and Mobile Based Stealth Steganography
by Leezaben Ashokkumar Patel
Master of Science in Computer Science San Diego State University, 2010
Steganography provides methods for concealing secret information from third parties.
The principle is to embed a secret message in an apparently innocent file such as video or audio, called the cover medium. Ideally, an eavesdropper should not even suspect that a subliminal message is being conveyed by the cover medium. In contrast, in cryptography the secret message is “scrambled” in some form before it is sent out in the open. Although hard to “unscramble” the encrypted message, any eavesdropper becomes aware that some type of secret communication is taking place. There are four types of steganography, according to the cover medium type: Text steganography, image steganography, audio steganography, and video steganography.
This work focuses on image steganography, which is considered the most attractive type due its efficiency and effectiveness. The proposed method consists in intersecting the bit planes of the original image with geometric objects and then finding the intersection points. The original message is stored at those intersection points, resulting in a stego-image. This method differs from known techniques where the bits are inserted in fixed positions, for example, in the least significant bit of a pixel. To enhance the security, I have combined steganography with cryptography, that is, the secret message is first encrypted using the Advanced Encryption Algorithm (AES) and then embedded in the cover image. The two different geometric objects that I use are the cylinder and the tetrahedron. I have implemented the technique in both Matlab and Google Android.
v
TABLE OF CONTENTS
PAGE
ABSTRACT ............................................................................................................................. iv
LIST OF FIGURES ............................................................................................................... viii
5.2 Flow of Encoding Mechanism for Matlab: Cylinder Insertion Algorithm at Sender ....................................................................................................................28
6 DECODING OF STEGANOGRAPHIC MESSAGES ...............................................33
6.1 Flow of Decoding Mechanism for Android ...........................................................33
6.1.1 Tetrahedron Insertion Algorithm at Receiver ..............................................33
Figure 6.4. Receiver fetching stego image from email inbox ..................................................37
x
ACKNOWLEDGEMENTS
I would like to thank Professor Carmelo Interlando, Department of Mathematics and
Statistics, San Diego State University for guiding me throughout my thesis term. His support
and encouragement were instrumental in achieving the optimum results in this thesis. I have
benefitted greatly from his advice. I would also like to thank Professor Eckberg and
Professor Joseph Lewis for investing time and energy discussing ideas with me. I offer my
regards to all of those who supported me in any respect during the completion of the thesis.
Lastly I would like to dedicate this thesis to my father Mr. Ashokkumar S. Patel and
mother Bharti A. Patel for unconditional support and encouragement to pursue my interests,
even when the interests went beyond the boundaries of language, field and geography.
Without their endless support and faith in me, this work would not have been possible. All of
their continued support is deeply appreciated. Thanks for making me finish this thing. To all
of you, thanks for always being there for me.
1
chapter 1
introduction
Steganography can be defined as communication between two users that is invisible
between two users. It means hiding information inside other information, thus hiding the
existence of the communicated information from a third party. The term “Steganography” is
derived from the Greek words “stegos” and “grafia” which means “cover writing” [1]. The
goal of steganography is to hide data from a third party [2].
In ancient Greece, people used invisible ink or even the messenger’s body to
write down messages and then hide them with wax- as a stego medium. Even earlier than
the Greek use, there have been several dated messages found and embedded within the
hieroglyphics of ancient Egyptian monuments [3]. All these are methods used in previous
years are also known as physical steganography. Nowadays we use different computer
file formats to cover the message that the sender wants to hide. The medium used to carry
the message is known as the cover medium. The medium after embedding or hiding the
message is known as a stego medium. There are four basic cover media used nowadays for
steganography purposes. The following formula (Equation 1.1) provides the idea behind the
Steganographic process [2]:
Cover medium + Hidden data + Stego_key = Stego_medium
This process is shown in Figure 1.1. Assume three different characters for example
Bob, Alice and Eve. Suppose Bob want to send a secret message M to Alice. So he can use
one of the steganography techniques and hide the message. To increase complexity, he can
also combine cryptography technique with steganography. Then Bob needs to send this stego
data file to Alice. Alice when receive this stego data file, she needs to extract the original
message by applying the decoding technique. If any eavesdropper, Eve, receive the stego
data file the she is unable to detect that message is hidden in the stego file. This is the main
(1.1)
2
advantage of using steganography method in communications as any third person cannot
detect that the conversation is going on.
There are few well-known text steganography methods. One is to insert the secret
message into a webpage or inside a markup language. In this method the message is hidden
using html tags [4]. In line shift text steganography and in word shift text steganography
the horizontal and vertical space between the two words is used to hide the message. The
toughest text steganography technique is feature specific encoding, in which the characteristic
of the letter is used to hide the message. There are some feature specific text steganography
techniques available for different languages, for example Arabic characters [4].
Figure 1.1. overview of steganography process.
BOB
ALICE
Message M Cover
Medium
Stego
Medium
EVE
Steganography Module
3
A second steganography method is image steganography in which the sender can
hide his message into an image. Image steganography is one of the popular steganography
technique as it is easy to implement and difficult to detect. The LSB insertion steganography
technique is one of the most famous steganography techniques. In this method the image is
converted into row of bits and then the secret message is inserted into the least significant
bit of the image. If the least significant bit of an image is change, it usually has minuscule
impact on image and the human eye cannot detect this change. By taking advantage of this
fact the sender can use this method to hide the message. The message can be inserted into the
image either in some random or non random format. For example in this research I have used
various geometric objects to hide the message. Messages are inserted at the intersection point
of the image and a geometric object.
A third technique for message hiding is audio steganography. This is the toughest to
implement as human can more easily detect any changes in audio. Audio is converted into
raw bits and then the message is inserted into it with some randomized or nonrandomized
pattern. One of the techniques is Perceptual Sampling. This format changes the statistics
of the audio drastically by encoding only the parts the listener does not perceive, thus
maintaining the sound but changing the signal. The tone insertion method takes advantage of
inadaptability of low power tone. In this method 2 tones of frequency f1 and f2 are inserted
into the message stream [5].
Video based steganography is also one of the popular methods for hiding a message.
Video can be assumed to be a combination of image and audio. So, all the methods which
are applicable on image or audio can also be used in video steganography to hide a message.
This technique is based on the video data stream and the bit plane complexity. The message
is hidden into the row bit stream of video and this stream is then used at the receiver side to
rebuild the message.
Digital watermarking is a process to authenticate the owner. It can be either visible
or invisible to a 3rd party [6]. Digital watermarking is mostly used for copyright protection.
4
It is difficult to remove this watermark; that is the main advantage of the watermarking. The
signal containing the watermark might either intentionally or unintentionally be modified, by
adding noise or distortion to the signal. This should not the affect the watermark. It means
the authentication should be still preserved after applying changes to the carrier, e.g. by a
malicious attacker Mallory. This is the most important feature of digital watermarking.
1.1 Contribution
The main purpose of my thesis work is to come up with new steganography
technique. This technique can be used in many applications i.e. email client, MMS, for hiding
file information as standalone window application. This application can be useful in internet
world for hiding information from intruder.
1.2 overview of thesis
The report is organized as follows.
Chapter 2: In this chapter functional and platform requirement for the implementation
are described. Also a brief description of the development tools for the Matlab
implementation and for the Google android implementation is presented.
Chapter 3: This chapter will represent what technologies were used and the reasons to
use them. Also the whole architecture of Google android is described.
Chapter 4: The basic image types and an understanding of the bit plane are presented
in chapter 4.
Chapter 5: The technique and algorithm for embedding a message into an image
using a geometric object as used for both the Matlab and for the Google android module, is
explained in brief in chapter 5.
Chapter 6: Chapter 6 contains the technique and algorithm for extracting a message
from an image using a geometric algorithm, as used for both the Matlab and for the Google
android module.
5
chapter 2
requirements
The main aim for developing these tools is to understand how image steganography
can be achieved using various geometric objects. This software can also be integrated into
different applications such as email clients, http servers etc. for creating images with secret
messages embedded into them. The requirements gathered have been further classified into
platform requirements and functional requirements.
2.1 Platform requirements
The final application should not rely on any hardware or software environment. That
is the final application should be platform independent. For example a java program is able
to run on any operating system. Hence Java SDK with Google Android has been chosen to be
the appropriate language for implementing the first module. The first module is a standalone
mobile application.
The second module was implemented using Matlab. Matlab files can be of both types
that is interactive and platform specific. Also Matlab software provides a nice toolbox for
image processing which is used for image steganography. This image processing toolbox
provides tools for processing, analysis, enhancement and algorithm development of the
image. The second module is a standalones window application. Matlab is not usable for
mobile devices.
2.2 funCtional requirements
The software should not be restricted to handling a specific image file format as a
cover medium. For example software is capable enough to use different image files—gif, jpg,
or png to hide information.
6
The algorithm used in the application should not induce additional complexity and
the main aim should be achieved. For example the length of the cover medium and stego
medium is same the after applying the algorithm to alter a few bits in the image. Also the
message and its existence should be concealed. The look of the cover medium and stego
medium should not be different. Any intruder should not be able to detect hidden information
by looking at the original and stego medium side by side.
2.3 DeveloPment tools for GooGle anDroiD
I have developed two completely different image steganography applications one with
Matlab and one with Google android. Below are the Google android tools which helped me
to develop tetrahedron insertion image steganography. The Android SDK includes a variety
of custom tools that helped in developing mobile applications on the Android platform.
2.3.1 eclipse
Eclipse is open source and is used to develop the application in Java. Eclipse is a well
known and popular available integrated development environment (IDE). Eclipse provides an
easy to use, stable and fast work environment. Also it is easy to find plug-ins that can be used
to develop application in various other languages.
2.3.2 android emulator
Android provides a whole software stack which includes an operating system, a
middle layer and a few inbuilt applications in its emulator [7]. This emulator helps the
developer to develop and test his mobile applications on his computer without the use of an
actual mobile device. There are a few pre installed applications available in the emulator
which can be used from an android application. These preinstalled applications include
SMS(Short Message Service), MMS(Multimedia Message Service), alarm clock, calendar,
contacts. That is user can activate SMS application from his own application. Also the
Android AVD manager provides a better way to change the version of the android system in
the emulator, to include sdcard or not in user application, to change the skin of the emulator
7
and lots of other settings. How to configure a new AVD to run a new application on the
emulator and how to configure the sdcard enabled can be seen in Figure 2.1 and Figure 2.2.
Figure 2.2. android sdK and aVd manager.
Figure 2.1. creating new aVd with sdcard.
8
2.3.3 android development tools plug-in for the eclipse ide
Android Development Tools (ADT) is a plug-in for the Eclipse IDE that is designed
to give a powerful, integrated environment in which to build Android applications. It
provides and simplifies building a new application in Android, debugging it, and exporting
any signed or unsigned APK so that the user can distribute his application [7].
2.3.4 dalvik debug monitor service (ddms)
Dalvik debug monitor service is an important tool. It helps to get the details on file
explorer, heap information, threads, logs and output. To get the ddms perspective goes to:
Window open perspective ddms perspective. See Figure 2.3.
2.3.5 android debug Bridge (adB)
By unpacking SDK, you can get ADB in the tools folder. This ADB allows you to
install .apk that is the application file on emulator or on the device, to test the application.
Figure 2.3. View of dalvik debug monitor service (ddms).
9
2.3.6 android sdcard
When the user is using an actual mobile he can use the memory inside the mobile
device to store the data. Android emulator does not provide memory by default. So we need
to emulate the memory from a storage space also known as sdcard. By default the sdcard is
disabled.
2.4 DeveloPment tools for matlab
Below are the Matlab tools used for developing image steganography using the
cylinder insertion algorithm.
2.4.1 matLaB editor
Lots of new features have been added into the Matlab editor. There are new options
in the editor for determining variable and sub function used in a file. Image files such as jpeg,
gif, png have previews in the current folder browser.
2.4.2 m-Lint code analyzer
While writing your code in Matlab, you can check your code with the help of this
analyzer. This tool provides a report or coding error for any problems associated with your
code. MATLAB can highlight function and variable usage throughout your file to help you
track their scope and usage
2.4.3 MATLAB Profiler
The profile function helps you debug and optimize MATLAB code files by tracking
their execution time. For each MATLAB function, MATLAB subfunction, or MEX-function
in the file, the profile records information about execution time, number of calls, parent
functions, child functions, code line hit count, and code line execution time.
10
chapter 3
technoLogy
This chapter focuses on the technology used to develop the software and briefly
discusses the supporting software, and integrated development environment (IDE).
3.1 matlab
One of the module/software of Steganography is built using Matlab - matrix
laboratory [8]. Matlab can be used to learn and also to simulate critical mathematical
concepts. Matlab is an interpreted language, that is, execution of Matlab programs is a little
bit slower compared to compiled programming languages, but the reasons behind choosing
Matlab over other software languages include the following.
Matlab is easy to learn, simple to implement, more flexible; the main advantage • of Matlab is that it is object oriented, as it provide data structure and operator overloading functionality.
Matlab provides a large number of in built functions which saves a lot of time.•
Matlab is platform independent. •
Matlab provide faster numeric intensive computation compare to Maple, Mathematica • [8]. Also as Matlab is a high level language, this saves lots of time when writing code.
Provides a programming environment to manage everything in your project.•
Has a 2-D and 3-D graphics function for analyzing data and for plotting graphs and • images [8].
The Matlab language supports mathematical computation, which includes vector
and matrix operations, algorithm development, good support for graphs according to data
analysis, model simulation.
3.2 Java
The second module of steganographic software is built using the Java Software
Development Kit 6.0. Eclipse Galileo is used as an integrated development environment
11
(IDE) for taking advantages of the features offered by it compare to other available IDE. The
reasons behind choosing Java over other software languages include the following.
The main advantage of Java is that it is platform independent that is it is architecture
independent [9]. Integer is always of four bytes no matter which processor is used to run
java program.
Java programs can sometimes run faster compared to other programming language
because of its multi threaded feature [9]. In multi threading environment two or more task
can execute at same time. Although the applications here are not currently threaded, that can
be profitable future implementation.
Java provides high performance using its very large set of application programming
interfaces (APIs). This API includes Abstract Window Toolkit (AWT), Java Collection
The main difference between a service and an activity is that a service does not have
a user interface while an activity has its own user interface [7]. It can run in background. For
example the user can start playing music and then switch to some other activity. The songs
can be played in background without disturbing the other activity. To access a service it needs
to be declared in the AndroidMenifest.xml file using a <service> tag.
3.3.1.4 Content ProviDer
Different android applications can share data using the content provider [7]. Data can
be sharable via the file system or via the database. For example two applications can share
the same the database, or the same file using content provider. Contacts application includes
the contact details of all the users. This information can be needed by another application, for
examples, your email account may need the contact information. So these two applications
can share data via the content provider.
15
3.3.2 applications Framework
Application framework is the second layer from the top. This framework is written
using the Java language. Android default applications and applications developed by the user
use the same application framework.
The Activity manager keeps track of every activity and also manages the backstack. A • backstack is when the user presses the back button; it will start running the previous activity.
When the user downloads the application from the internet or from any source, the • package manger will take care of it.
Window manager is the top layer of the surface layer and it handles the windows for • different applications.
View system consists of buttons, textbox, dropdown, list and other kind of tools. •
Resource manager handles any resource used by user the application such as images, • strings, and layouts.
Notification manager handles any special event generated from your application and • notifies the user about the event. Examples include SMS, alarm notification.
Content provider is the main component of the application framework through which • different applications can share data.
3.3.3 Libraries
These libraries are written in C/C++. This layer is the main layer in the android
architecture [7]. Surface manager includes the functions which handle drawing surfaces on
the screen. It controls and cares about the different windows run by different applications
or processes [7]. SGL provide the graphics libraries. SQLite provides database support to
store data in your application. Webkit is the browser engine. SSL support the interprocess
communication. Dalvik virtual machine is the main component of android runtime [7].
This dalvik virtual machine uses the .dex file which is the byte code of your program and
also requires low memory. So the dalvik virtual machine provides the support to run an
application on a slower processor and having low memory as it support sharing memory
across different applications [7]. Core libraries are written using the Java language which
includes I/O libraries, legacy collection classes, event models, and date and time facilities.
16
3.3.4 Linux Kernel
The bottom or base layer is a Linux kernel in our android architecture. Android
architecture uses Linux kernel version 2.6. This Linux kernel version 2.6 supports improved
file system security, network performance, memory management and memory optimization
for shared applications, new driver model, system call interface, process management. As
Linux is an open source operating system, we can get many new and advanced features
added day-by-day [7].
17
chapter 4
image and Various geometric oBJects
To understand image steganography, we need to understand what an image is in
computer terms and how it is stored.
4.1 imaGes in ComPuter terms
Images can be represented in terms of pixels. Depending on the number of colors,
images can be differentiated into different types of image as follows:
4.1.1 Binary image
Binary image has only two colors white and black. That is for every pixel in the
image, there are only two possible values either 0 or 1 where 0 represents black and 1
represent white [10]. In the field of image processing, binary image might be sometimes the
output of image segmentation, image threshold. This type of image can be stored as a bitmap
on the storage drive.
4.1.2 gray scale image
In a gray scale image, everything is black, white and shades of gray [10]. Every pixel
in gray scale image contains 8 bits. So we have 2^8 = 0 to 255, total 256 color shades. Take
an example of “00000000” which represents bits value of 0 means it is black. “11111111”
represents bits value of 1 means it is white. “00110101” represents a shade of gray.
4.1.3 rgB color image
In RGB color image, every pixel contains 24 bits [10]. We can divide these 24 bits
into chunks of 8 bits for red, 8 bits for green, 8 bits for blue [10]. There are 256 possible
color shades of red, 256 possible color shades of green and 256 color shades of blue. So
according to the intensity of these three colors we have a total of 224 possible color shades.
18
When all these three color are equals for example R= 100, G=100, B=100, it makes a gray
color shade. RGB is an additive color model. This can be used in a computer display, in
plasma TV.
4.1.4 cmyK color image
This image is made up with the mixture of four colors. It is subtractive by nature.
Here in this image the color is represented as a percentage between 0 to 100%. CMYK
represents cyan, magenta, yellow, blank ink. Whenever the user needs to print an image
CMYK color image is used instead of the RGB color image [10]. Other color formats
includes HSV ( Hue – Saturation - Value), YCbCr. We can think of RGB as for color lighting
and CMYK for color pigments [10].
Image steganography uses an algorithm which selects a image pixel with some
random order or nonrandom order to hide the communication. Of course, the resulting image
will still look mostly like the original.
4.2 imaGe bit Plane
Digital images consist of pixels which can be represented by bits depending on the
type of image. We can divide this image into different bit planes [11]. Dividing an image
into bit planes is known as bit plane slicing [11]. For example we have a gray scale image
where each pixel is of 8 bits. Dividing this image into 8 bit planes means plane 0 contains all
the least significant bits, plane 1 contain all the second least significant bits, plane 7 contain
all the most significant bits (see Figure 4.1). This is a very important method in Image
Processing. Plane 7 contains the majority of visually significant data. Other planes contribute
to more subtle details in an image. Plane 7 corresponds exactly with an image threshold at
gray level 128. Using all of the bit planes can bring our original image back [11].
4.3 tetraheDron
Tetrahedron is a Greek word means four faces [12]. A tetrahedron is a geometric
object with a triangle cross section. A tetrahedron is a pyramid with a triangular base, an
19
element of a tetrahedron is any line that makes up the triangle [12]. The tetrahedron is its
own dual polyhedron, and therefore the centers of the faces of a tetrahedron form another
tetrahedron [12]. The tetrahedron is the only simple polyhedron with no polyhedron
diagonals. A tetrahedron has four vertices and six edges. These six edges can be arranged in
three pairs such that the edges of a pair do not intersect. A tetrahedron is always convex. This
means that if you randomly select any two points on the tetrahedron and connect them with
a line, the line will pass through the tetrahedron, and not stray outside of it [12]. In many
ways, the geometry of a tetrahedron is the three-dimensional analogue of the geometry of the
triangle in two dimensions. In particular, the special points associated to a triangle have their
three-dimensional analogues. The tetrahedron has no parallel faces, no parallel edges, and no
diametrically opposite vertices. All of these properties are unique among the Platonic solids
(see Figure 4.2) [13].
Bit Plane 0: (Contain Least
Significant Bits)
Bit Plane 7: (Contain Most
Significant Bits)
Figure 4.1. Bit plane of grey scale image. source: m.m. sathik and n.r.s. parveen. Feature extraction on colored x-ray images by bit plane slicing techniques: Feature extraction o. International Journal of Engineering Science and Technology, Vol. 2(7) 2010: 2820-2824.
20
Assume that we are inserting the tetrahedron through all the 8 planes of the image as
shown in Figure 4.2:
Message is stored at the intersection of the tetrahedron and the image planes.•
Message is stored along the planes to make it difficult to detect.•
Also pixels are shifted along each row of the image plane.•
4.4 CylinDer
A cylinder is one of the most basic curvilinear geometric shapes [14]. The cylinder
is somewhat like a prism. It has parallel congruent bases, but its bases are circles rather
than polygons [14]. The perpendicular distance between the planes of the bases is the
height of the cylinder. In differential geometry, a cylinder is defined more broadly as
Figure 4.2. tetrahedron. source: J. Burkhardt. tri_SURFACE: Pairs of files defining a 3D triangulated surface. Florida state university department of science computing, 2010. http://people.sc.fsu.edu/~jburkardt/data/tri_surface/tetrahedron.png, accessed november 2010.
21
any ruled surface spanned by a one-parameter family of parallel lines (Figure 4.3) [15].
A cylinder whose cross section is an ellipse, parabola, or hyperbola is called an elliptic
cylinder, parabolic cylinder, or hyperbolic cylinder [14]. Imagine the top view of cylinder; it
will be a single circle. The message is stored at the intersection of the cylinder and the image
In Google android at sender’s end, I have used a tetrahedron as the geometric
object to hide message into the image. At the sender side inside the emulator the sender
has a few images which are stored inside the android’s memory card known as sdcard.
Whenever the sender runs the encoding application, the application will lists small icons
of images from gallery. From this list he just needs to choose the cover image. The original
message is stored inside a text file. The message is encrypted by the AES algorithm at the
sender side which is then known as the cipher text. The cipher text is fed as an input to the
steganography algorithm along with the cover image. The geometric object, tetrahedron,
is used in algorithm (see Figure 5.2) [17]. The image is divided into bit planes. And then
the intersection points of the tetrahedron and the image is found, to hide the cipher text.
24
Cryptography along with the Steganography is used to provide more complexity and better
security
Below is the code for the tetrahedron insertion algorithm.
private byte[] tetrahedron_encode(byte[] coverimage, byte[] message) { int tetrax=1,tetray=1; int tetrax1=113,tetray1=1; // End point 1 int tetrax2=1,tetray2=225; // End point 2 int tetrax3=225,tetray3=225; // End point 3 for(tetray=1;tetray<=message.length;) { for(tetrax=1;tetrax<=113;tetrax++) { if(( functiontetraAB(tetrax,tetray,tetrax1,tetray1,tetrax2,tetray2) * functiontetraBC(tetrax,tetray,tetrax2,tetray2,tetrax3,tetray3)>0) && (functiontetraBC (tetrax,tetray,tetrax2,tetray2,tetrax3,tetray3) * functiontetraBC (tetrax,tetray,tetrax1,tetray1,tetrax3,tetray3)>0)) { break; } } int pt = (tetray-1)*225+tetrax; coverimage[pt] = message[tetraty-1];
Figure 5.2. top view of tetrahedron. source: a. dendane. Free mathematics tutorials, problems and Worksheets (with applets). analyzemath.com, 2010. http://www.analyzemath.com/geometry/medianstriangle/medianstriangle.html, accessed november 2010.
Figure 5.7. top view of cylinder. source: math Warehouse. equation of a circle. math Warehouse, 2010. http://www.mathwarehouse.com/geometry/circle/equation-of-a-circle.php, accessed november 2010.
30
x2 = int32(x1p); if(x2 == 0) x2=1; end ij = x1; ij1 = x2;
h(i1,x1) = val(k); % bit plane 1 k=k+1; x1=(256*1)+ij; h(i1,x1) = val(k); % bit plane 2 k=k+1; x1=(256*2)+ij; h(i1,x1) = val(k); % bit plane 3 k=k+1; x1=(256*3)+ij; h(i1,x1) = val(k); % bit plane 4 k=k+1; x1=(256*4)+ij; h(i1,x1) = val(k); % bit plane 5 k=k+1; x1=(256*5)+ij; h(i1,x1) = val(k); % bit plane 6 k=k+1; x1=(256*6)+ij; h(i1,x1) = val(k); % bit plane 7 k=k+1; x1=(256*7)+ij; h(i1,x1) = val(k); % bit plane 8 k=k+1; if(k > textlength) break; end; h(i1,x2) = val(k); % bit plane 1 k=k+1; x2=(256*1)+ij1; h(i1,x2) = val(k); % bit plane 2 k=k+1; x2=(256*2)+ij1; h(i1,x2) = val(k); % bit plane 3 k=k+1; x2=(256*3)+ij1; h(i1,x2) = val(k); % bit plane 4 k=k+1; x2=(256*4)+ij1; h(i1,x2) = val(k); % bit plane 5
31
k=k+1; x2=(256*5)+ij1; h(i1,x2) = val(k); % bit plane 6 k=k+1; x2=(256*6)+ij1; h(i1,x2) = val(k); % bit plane 7 k=k+1; x2=(256*7)+ij1; h(i1,x2) = val(k); % bit plane 8 k=k+1; endend
Here as an example we have the message M is “sandiego” which is represent by the
private byte[] tetrahedron_decode (byte[] stegoimage) { int tetrax=1,tetray=1; int tetrax1=113,tetray1=1; // End point 1 int tetrax2=1,tetray2=225; // End point 2 int tetrax3=225,tetray3=225; // End point 3 int lenmsg1 = Integer.parseInt(lenmsg); byte[] message = new byte[lenmsg1]; for(tetray=1;tetray<=message.length;) { if(( functiontetraAB(tetrax,tetray,tetrax1,tetray1, tetrax2,tetray2) * functiontetraBC(tetrax,tetray,tetrax2,tetray2, tetrax3,tetray3)>0) && (functiontetraBC (tetrax,tetray,tetrax2,tetray2, tetrax3,tetray3) * functiontetraBC (tetrax,tetray,tetrax1,tetray1, tetrax3,tetray3)>0))
Figure 6.1. Flow of decoding at receiver side.
Input: Stego Image S, Key K.
Procedure:
Step 1: Stego image is downloaded from email to android emulator’s
Sdcard.
Step 2: Feed this image as an input to the Tetrahedron/Cylinder
Insertion algorithm to find out the intersection points.
Step 3: Extract the cipher text from the intersection points and feed
this as an input to the AES decryption algorithm using key K.
h(i1,x1) = val(k); % bit plane 1 k=k+1; x1=(256*1)+ij; h(i1,x1) = val(k); % bit plane 2 k=k+1; x1=(256*2)+ij; h(i1,x1) = val(k); % bit plane 3 k=k+1; x1=(256*3)+ij; h(i1,x1) = val(k); % bit plane 4 k=k+1; x1=(256*4)+ij; h(i1,x1) = val(k); % bit plane 5 k=k+1; x1=(256*5)+ij; h(i1,x1) = val(k); % bit plane 6
39
k=k+1; x1=(256*6)+ij; h(i1,x1) = val(k); % bit plane 7 k=k+1; x1=(256*7)+ij; h(i1,x1) = val(k); % bit plane 8 k=k+1; if(k > textlength) break; end; h(i1,x2) = val(k); % bit plane 1 k=k+1; x2=(256*1)+ij1; h(i1,x2) = val(k); % bit plane 2 k=k+1; x2=(256*2)+ij1; h(i1,x2) = val(k); % bit plane 3 k=k+1; x2=(256*3)+ij1; h(i1,x2) = val(k); % bit plane 4 k=k+1; x2=(256*4)+ij1; h(i1,x2) = val(k); % bit plane 5 k=k+1; x2=(256*5)+ij1; h(i1,x2) = val(k); % bit plane 6 k=k+1; x2=(256*6)+ij1; h(i1,x2) = val(k); % bit plane 7 k=k+1; x2=(256*7)+ij1; h(i1,x2) = val(k); % bit plane 8 k=k+1; endend
Output of the above algorithm is original text and thus the true objective of the
steganography is achieved.
40
chapter 7
concLusion and Future enhancements
Steganography as we all know is invisible communication that hides the existance
of the message from a third party. Among the different types of steganography, image
steganography is the most popular one. Choosing the right type of cover medium is also
most important. Steganography can be detected sometimes. So the algorithm should add
more complexity for the intruder. In this thesis work, I have implemented two image
steganography algorithms tetrahedron and cylinder insertion algorithm both are adding
complexity so it is difficult to extract information by the intruder. Also a cryptography
algorithm is used, which provides more complexity.
The first application developed in Google Android as a mobile application for
Google phones. This application can be extended so that iphone users can also use this great
application in their email client. Also this application can be made for internet users so they
can download the application and use it in their desktop email client software.
Both the applications are using images as a cover medium. I would like to extend this
application so that it can use audio/video files as a cover medium. Sending an audio or video
file in email is also a good option for steganography. It is very difficult for an intruder to
extract a message in this case as algorithms using audio/video are complex.
Google Android is open source and right now we have more than 10,000 application
which android phone users can download and use in their phone. I would also like to
contribute here by putting my application for users to download.
Also I would like to extend my Google android module in such a way that at the
sender side a user can select which geometric object will be used for image steganography
from the list. Right now it’s by default a tetrahedron.
41
reFerences
T. Morkel, J.H.P. eloff, and M.S. olivier[1] , An overview of image steganography, Information and Computer Security Architecture Research Group, Department of Computer Science, University of Pretoria, South Africa, 2010. http://martinolivier.com/open/stegoverview.pdf, accessed November 2010.
G.C. keSSler[2] , Steganography: Hiding data within data, Gary Kessler, 2001. September 2001. http://www.garykessler.net/library/steganography.html, accessed November 2010.
a. ManGarae[3] , Steganography FAQ, Zone-h, March 18, 2006. http://infosecwriters.com/text_resources/pdf/Steganography_AMangarae.pdf, accessed November 2010.
a. abdul-aziz GuTub and M.M. faTTani[4] , A novel Arabic text steganography method using letter points and extensions, World Academy of Science, Engineering and Technology, 27 (2007). http://www.waset.org/journals/waset/v27/v27-5.pdf, accessed November 2010.
k. GoPalan and S. WenndT[5] , Audio steganography for covert data transmission by imperceptible tone insertion, Department of Engineering, Purdue University, Hammond, IN, 2010. http://www.calumet.purdue.edu/engr/docs/GopalanKali_422_049.pdf, accessed November 2010.
r. CHandraMouli, n. MeMon, and M. rabbani[6] , Digital watermarking, Encyclopedia of Imaging Science and Technology, January 15, 2002.
r. Meier[7] , Professional Android Application Development, Wrox Press, Hoboken, NJ, 2010.
a.a. Trani[8] , Introduction to Matlab, Virginia Polytechnic Institute and State University, 2002. http://128.173.204.63/courses/matlab/matlab_toolboxes.pdf, accessed November 2010.
M.S[9] ., Java advantages and disadvantages, Web-dot-dev, 2010. http://www.webdotdev.com/nvd/articles-reviews/java/java-advantages-and-disadvantages-1042-1.html, accessed November 2010.
o. MarqueST,[10] Image data representations: Binary images, gray-level images, Florida Atlantic University, Department of Computer Science and Engineering, 2010. http://encyclopedia.jrank.org/articles/pages/6761/Image-Data-Representations.html, accessed November 2010.
M.M. SaTHik and n.r.S. Parveen[11] , Feature extraction on colored x-ray images by bit plane slicing techniques: Feature extraction O. International Journal of Engineering Science and Technology, 2:7(2010), pp. 2820-2824.
WikiPedia[12] , Tetrahedron, Wikipedia, 2010. http://en.wikipedia.org/wiki/Tetrahedron, accessed November 2010.
42
J. burkHardT,[13] TRI_SURFACE: Pairs of files defining a 3D triangulated surface, Florida State University Department of Science Computing, 2010. http://people.sc.fsu.edu/~jburkardt/data/tri_surface/tetrahedron.png, accessed November 2010.
WikiPedia[14] , Cylinder, Wikipedia, 2010. http://en.wikipedia.org/wiki/Cylinder__(geometry), accessed November 2010.
a. dendane[17] , Free Mathematics Tutorials, Problems and Worksheets (with applets), Analyzemath.com, 2010. http://www.analyzemath.com/Geometry/MediansTriangle/MediansTriangle.html, accessed November 2010.
MaTH WareHouSe[18] , Equation of a Circle, Math Warehouse, 2010. http://www.mathwarehouse.com/geometry/circle/equation-of-a-circle.php, accessed November 2010