Top Banner
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
52

steganography using cylinder insertion algorithm

Mar 20, 2023

Download

Documents

Khang Minh
Welcome message from author
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.
Transcript
Page 1: steganography using cylinder insertion algorithm

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

Page 2: steganography using cylinder insertion algorithm
Page 3: steganography using cylinder insertion algorithm

iii

Copyright © 2010

by

Leezaben Ashokkumar Patel

All Rights Reserved

Page 4: steganography using cylinder insertion algorithm

iv

ABSTRACT OF THE THESIS

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.

Page 5: steganography using cylinder insertion algorithm

v

TABLE OF CONTENTS

PAGE

ABSTRACT ............................................................................................................................. iv

LIST OF FIGURES ............................................................................................................... viii

ACKNOWLEDGEMENTS .......................................................................................................x

CHAPTER

1 INTRODUCTION .........................................................................................................1

1.1 Contribution .............................................................................................................4

1.2 Overview of Thesis ..................................................................................................4

2 REQUIREMENTS .........................................................................................................5

2.1 Platform Requirements ............................................................................................5

2.2 Functional Requirements .........................................................................................5

2.3 Development Tools for Google Android .................................................................6

2.3.1 Eclipse ............................................................................................................6

2.3.2 Android Emulator ..........................................................................................6

2.3.3 Android Development Tools Plug-In for the Eclipse IDE .............................8

2.3.4 Dalvik Debug Monitor Service (ddms) ..........................................................8

2.3.5 Android Debug Bridge (ADB).......................................................................8

2.3.6 Android SDCard ............................................................................................9

2.4 Development Tools for Matlab ................................................................................9

2.4.1 MATLAB Editor ............................................................................................9

2.4.2 M-Lint Code Analyzer ...................................................................................9

Page 6: steganography using cylinder insertion algorithm

vi

2.4.3 MATLAB Profiler .........................................................................................9

3 TECHNOLOGY ..........................................................................................................10

3.1 Matlab ....................................................................................................................10

3.2 Java ........................................................................................................................10

3.3 Overview of Android Architecture ........................................................................12

3.3.1 Applications .................................................................................................12

3.3.2 Applications Framework ..............................................................................15

3.3.3 Libraries .......................................................................................................15

3.3.4 Linux Kernel ................................................................................................16

4 IMAGE AND VARIOUS GEOMETRIC OBJECTS ..................................................17

4.1 Images in Computer Terms ....................................................................................17

4.1.1 Binary Image ................................................................................................17

4.1.2 Gray Scale Image .........................................................................................17

4.1.3 RGB Color Image ........................................................................................17

4.1.4 CMYK Color Image ....................................................................................18

4.2 Image Bit Plane ......................................................................................................18

4.3 Tetrahedron ............................................................................................................18

4.4 Cylinder..................................................................................................................20

5 IMAGE AND VARIOUS GEOMETRIC OBJECTS ..................................................22

5.1 Flow of Encoding Mechanism for Android ...........................................................22

5.1.1 AES Algorithm ............................................................................................23

5.1.2 Tetrahedron Insertion Algorithm at Sender .................................................23

5.1.3 Email ............................................................................................................27

Page 7: steganography using cylinder insertion algorithm

vii

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

6.1.2 AES Decryption Algorithm .........................................................................35

6.2 Flow of Decoding Mechanism for Matlab .............................................................37

7 CONCLUSION AND FUTURE ENHANCEMENTS ................................................40

REFERENCES ........................................................................................................................41

Page 8: steganography using cylinder insertion algorithm

viii

LIST OF FIGURES

PAGE

Figure 1.1. Overview of steganography process ........................................................................2

Figure 2.1. Creating new AVD with SDCARD .........................................................................7

Figure 2.2. Android SDK and AVD manager ............................................................................7

Figure 2.3. View of Dalvik Debug Monitor Service (ddms) .....................................................8

Figure 3.1. Android architecture ..............................................................................................13

Figure 4.1. Bit plane of grey scale image ................................................................................19

Figure 4.2. Tetrahedron ............................................................................................................20

Figure 4.3. Cylinder .................................................................................................................21

Figure 5.1. Flow of encoding at sender side ............................................................................23

Figure 5.2. Top view of tetrahedron ........................................................................................24

Figure 5.3. View of Run Configuration of android application ...............................................26

Figure 5.4. View of sender side ...............................................................................................26

Figure 5.5. Calling email intent from application ....................................................................27

Figure 5.6. View of sender email intent ...................................................................................28

Figure 5.7. Top view of cylinder .............................................................................................29

Figure 5.8. Cover image and stego image ................................................................................32

Figure 5.9. Bit plane of gray scale image ................................................................................32

Figure 6.1. Flow of decoding at receiver side ..........................................................................34

Figure 6.2. SDCARD view ......................................................................................................36

Figure 6.3. Receiver's view ......................................................................................................36

Page 9: steganography using cylinder insertion algorithm

ix

Figure 6.4. Receiver fetching stego image from email inbox ..................................................37

Page 10: steganography using cylinder insertion algorithm

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.

Page 11: steganography using cylinder insertion algorithm

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)

Page 12: steganography using cylinder insertion algorithm

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

Page 13: steganography using cylinder insertion algorithm

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.

Page 14: steganography using cylinder insertion algorithm

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.

Page 15: steganography using cylinder insertion algorithm

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.

Page 16: steganography using cylinder insertion algorithm

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

Page 17: steganography using cylinder insertion algorithm

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.

Page 18: steganography using cylinder insertion algorithm

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).

Page 19: steganography using cylinder insertion algorithm

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.

Page 20: steganography using cylinder insertion algorithm

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

Page 21: steganography using cylinder insertion algorithm

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

Framework (JCF), Swing, Java Cryptography Extension (JCE), Java Database Connectivity

(JDBC), and Remote Method Invocation (RMI).

Java is robust and secure [9]. Java provide features like auto garbage collection, and

try catch functionality for run time exceptions, java forces programmer to catch exceptions

resulting in safer runtime code.

Java is simple, easy to learn and implement and it is an object oriented programming

language [9]. These points are elaborated below.

In object oriented programming everything is just about objects and classes. It is

more secure compare to procedure oriented programming languages as objects and methods

created for one class do not have direct access to objects and methods created for another

class. A user can create any number of objects for a particular class. Java or in fact any object

oriented language support polymorphism, inheritance, data encapsulation features. All these

features offered by Java provide an independent and secure programming structure which

eliminates the complexity provided by non oop programming languages.

Page 22: steganography using cylinder insertion algorithm

12

3.3 overview of anDroiD arChiteCture

Google Android is developed by Google and it shares the same functionality of

Linux kernel. It is build up of layer module consisting of operating system, middleware and

applications.

Built in application, application framework, libraries, android runtime and Linux

kernel are the main components of android operation system. See Figure 3.1. All applications

are written in Java. Android is an open-source software stack for mobile devices, and a

corresponding open-source project led by Google. Below is a brief explanation of the

components of the Android architecture.

3.3.1 applications

The top layer in the android architecture is the application layer. The main feature

of this layer is that user applications as well as the built-in applications lie in the same layer

and also share the application framework [7]. All these applications are written in the Java

language. Built-in applications include contacts, email client, browser, calendar etc. Every

android application when run, will generate its own separate process. These user applications,

data and resource files make an android package. Every application is made up of the

following four basic components.

3.3.1.1 aCtivity

Activity is just a view or user interface of any application on the screen. Each activity

has its own process. Whenever a new activity is generated it will be placed on the stack in

android that is also known as backstack making the previously running activity either run

in foreground or pause it [7]. A few methods are onCreate, onStart, onResume, onPause(),

onStop(), onDestroy(), setResult(int), finish() are used to manage activities. Also an activity

can be killed if it is of no use. During its life cycle an activity can be run in foreground, can

be paused, can be resuming back, and can be killed by the activity manager.

Below is an example of how to declare an activity in Menifest.xml file:

Page 23: steganography using cylinder insertion algorithm

13

<activity android:name=”.ImageViewL5” android:label=”@string/app_name”> <intent-filter> <action android:name=”android.intent.action.MAIN” /> <category android:name=”android.intent.category.LAUNCHER” /> </intent-filter></activity>

Applications

Home Email Client Browser Contacts Phone

Applications Framework

Window Manager Activity Manager View System

Package Manager Notification Manager Resource Manager

Location Manager XMPP Service Telephony Manager

Libraries

Core Libraries

Android Runtime

Dalvik Virtual Machine

SQLite Surface Manager

Media Framework FreeType

Webkit SSL SGL Libc

Linux Kernel

Display Driver Bluetooth Driver Camera Driver

USB Driver Audio Driver Keypad Driver

WiFi Driver Power Management Binder Driver

Figure 3.1. android architecture. source: r. meier. Professional Android Application Development. hoboken, nJ: Wrox press, 2010.

Page 24: steganography using cylinder insertion algorithm

14

3.3.1.2 broaDCast reCeiver

The broadcast receiver can get a notification from a system generated event or user

generated event and for that it uses the notification manager from the application

framework [7]. Examples include low battery, SMS/MMS incoming alert, alarm clock

etc. The broadcast receiver can react to the notifications. The broadcast receiver provides

onReceive() method. The broadcast receiver does not have a user interface. The broadcast

receiver needs to be register inside the AndroidMenifest.xml file See the example below. This

code should be included the into AndroidMenifest file to receive SMS.

<receiver android:name=”.SmsReceiver”> <intent-filter> <action android:name=”android.provider.Telephony.SMS_RECEIVED” /> </intent-filter> </receiver>

3.3.1.3 serviCes

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.

Page 25: steganography using cylinder insertion algorithm

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.

Page 26: steganography using cylinder insertion algorithm

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].

Page 27: steganography using cylinder insertion algorithm

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.

Page 28: steganography using cylinder insertion algorithm

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

Page 29: steganography using cylinder insertion algorithm

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.

Page 30: steganography using cylinder insertion algorithm

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.

Page 31: steganography using cylinder insertion algorithm

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

planes.

Figure 4.3. cylinder. source: mathWorks. cylinder. mathWorks matLaB documentation, 2010. http://www.mathworks.com/help/techdoc/ref/cylinder.html, accessed november 2010.

Page 32: steganography using cylinder insertion algorithm

22

chapter 5

encoding oF steganographic messages

In this paper two image steganography methods are implemented using two

completely two different modules. The first module is implemented using Google Android.

Here the message which the user wants to hide is stored inside the text file initially. The cover

image is selected from the phone gallery. Here in this module I have selected a tetrahedron

as an intersection geo object. Also to provide more complexity I have use AES encryption.

The second module is implemented in Matlab. Here the message which the user wants to

hide is inside the text file and image is selected. The color image is converted into a grayscale

image that is each pixel represents 8 bits. This grey scale image is then converted into 8 bit

planes. In this module I have selected a cylinder as a geometric object. This cylinder is then

intersected with these 8 bit bit-planes to find out the points where we can hide the message.

5.1 flow of enCoDinG meChanism for anDroiD

Figure 5.1 outlines the flow of econding at sender side.

Figure 5.1. Flow of encoding at sender side.

Input: Message M, Cover Image C, Key K

Procedure:

Step 1: Original message M is inside a text file.

Step 2: Apply AES algorithm to generate cipher text using key K.

Step 3: Select cover image from android photo gallery and feed this

as an input to the Tetrahedron/Cylinder Insertion algorithm

along with cipher text.

Output: Stego image S. Send this stego image in email to receiver.

Page 33: steganography using cylinder insertion algorithm

23

5.1.1 aes algorithm

AES means Advanced Encryption Standard [16]. It is a symmetric key cryptographic

system. Encryption is the process of converting data in a format such that only the receiver

can get the original data back. There are other possible symmetric key algorithms like DES,

Triple DES, IDEA available also. But to date AES seems to be more secure. In AES the

algorithm takes the message, private key and converts the data. Normally the key length

is 128 bits, 192 bits, or 256 bits [16]. Depending on the key length the number of iterating

round is decided. The number of rounds are 10 rounds if it is 128 bits, 12 rounds if it is 192

bits, 14 rounds if it is 256 bits [16]. The input and output of AES is a sequence of 128 bit

blocks. AES steps consist of substitution permutation network. The AES cipher is specified as

a number of repetitions of transformation rounds that convert the input plaintext into the final

output of cipher text [16]. Each round consists of several processing steps, including one that

depends on the encryption key.

Below are the methods and class used to encrypt a plaintext message using AES.

In Java we have java.crypto package which includes support for cryptography algorithms.

KeyGenerator, SecureRandom, SecretKeySpec, Cipher.

5.1.2 tetrahedron insertion algorithm at sender

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.

Page 34: steganography using cylinder insertion algorithm

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.

Page 35: steganography using cylinder insertion algorithm

25

for(tetrax=113;tetrax<=225;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 pt1 = (tetray-1)*225+tetrax; coverimage[pt1] = message[tetray]; tetray=tetray+2; } return coverimage; }

public static float functiontetraAB(int x,int y,int x1,int y1,int x2,int y2) { return ((y-y1)*(x2-x1) - (x-x1)*(y2-y1)); }

public static float functiontetraBC(int x,int y,int x2,int y2,int x3,int y3) { return ((y-y2)*(x3-x2) - (x-x2)*(y3-y2)); }

public static float functiontetraCA(int x,int y,int x1,int y1,int x3,int y3) { return ((y-y3)*(x1-x3) - (x-x3)*(y1-y3)); }

Here as an example we have the message M “Le” which is represented by the

following byte sequence “01001100 01100101”. Suppose image points P1 (120,120) and

P2 (120,220) are on the tetrahedron. It means that these are the points of intersection of the

tetrahedron and bit plane of the cover image. Suppose the image sequence is “11011101

01000001”. Then these bits are changed by the message bits. Here in the above algorithm

intersection points are found using the functiontetraAB(), functiontetraBC(),functiontetraCA().

Figure 5.3 shows how to run an android application from an emulator and Figure 5.4

is the view of the sender side steganography process which contains a list of images in the

photo gallery which the user can pick and the message which the user wants to hide.

<EditText android:id=”@+id/txtMessage” android:layout_width=”fill_parent” android:layout_height=”wrap_content” />

Page 36: steganography using cylinder insertion algorithm

26

Here EditText widget is used inside the main.xml file. This will help to create a

textbox view on the emulator as in Figure 5.4.

Figure 5.3. View of Run Configuration of android application.

Figure 5.4. View of sender side.

Page 37: steganography using cylinder insertion algorithm

27

5.1.3 email

After hiding the message the sender can send the stego image in email. The view for

how the sender sends the stego image in email using the Android emulator is shown in

Figure 5.5.

// For Starting Email Intent From Android Application Uri attached_Uriatt1 = Uri.parse(“content://media/external/images/media/4”);Intent emailint = new Intent(android.content.Intent.ACTION_SEND,Uriatt1);String[] receiverid = new String[]{“[email protected]”,””};emailint.putExtra(android.content.Intent.EXTRA_EMAIL, receiverid);emailint.putExtra(android.content.Intent.EXTRA_STREAM, Uriatt1); emailint.putExtra(android.content.Intent.EXTRA_SUBJECT, “Tetrahedron Image Steganoraphy”);emailint.putExtra(android.content.Intent.EXTRA_TEXT, “This is image steganography example”);emailint.setType(“image/jpeg”);startActivity(Intent.createChooser(emailint, “Send mail...”));finish();

Here is the code to start email intent from the sender’s android application. The

sender wants to send email to the receiver attaching the stego image in the email. Intent.

ACTION_SEND is used to send email from the emulator. Basically, it tells the Android

system that your application wants to send some sort of message. Here Intent is the class

provided by android. putExtra() is a method for adding extra data to the message. Here we

are adding the receiver’s email id, url of stego image from sdcard, subject and message body

Figure 5.5. calling email intent from application.

Page 38: steganography using cylinder insertion algorithm

28

of the email. emailint.setType sets the type of data the sender wants to send. Here I have used

“image/jpeg” as a type of data send with email as in this steganography technique the sender

will send the stego image in the email (Figure 5.6). Once you have set the type data for the

Intent, you can call the startActivity() method, passing in your Intent.

5.2 flow of enCoDinG meChanism for matlab: CylinDer insertion alGorithm at senDer

The color image is initially converted into a grey scale image. This grey scale image

is used as an input to the steganography. A bit plane of grey scale image is set of bits having

the same position in the respective binary numbers. For example, for 8-bit data representation

there is a 8 bit-planes: the first bit-plane contains the set of the most significant bit and the

second bit-plane contains the second most significant bit and so on. All these image bit planes

are shifted by 1 bit and then cylinder is inserted into these 8 bit planes. Intersection point

of cylinder and image are then considered as a place where sender has to hide his secret

message, is the recipient of the message can find the hidden message.

In Matlab module both the sender and the receiver will use cylinder as geometric

object to hide the message into cover image. At the sender side the user has the cover

Figure 5.6. View of sender email intent.

Page 39: steganography using cylinder insertion algorithm

29

image, plaintext message in a text file. This plaintext is the input for the geometric insertion

algorithm. The cover image is converted into gray scale image and then the intersection point

of cylinder and image bit plane are found. The message from the text file is stored at this

intersection point. This algorithm will increase the complexity so it will be difficult for an

intruder to find secret message inside stego image (Figure 5.7) [18].

Below is code for cylinder insertion algorithm in Matlab.

for i2=1:8:100 if(k > textlength) break; end;for i1=1:1:256 if(k > textlength) break; end; r=128; hx=128; r =r-(i2-1); rsqr = r^2; y2k = rsqr -(i1-hx)^2; y2k2 = sqrt(y2k); x1p = 128 + y2k2; x1m = y2k2 - 128; x1p = abs(x1p); x1m = abs(x1m); x1 = int32(x1m); if(x1 == 0) x1=1; end

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.

Page 40: steganography using cylinder insertion algorithm

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

Page 41: steganography using cylinder insertion algorithm

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

following byte sequence

01110011 01100001 0110111001100100 01101001 011001010110 0111 01101111…

Suppose image points P1 (120,120), P2 (120,220), P3(110,140), P4(110,250),

P5(75,170) are on the cylinder. It means that these are the points of intersection of the

cylinder and the bit plane of the cover image. Suppose the image sequence is

11011101 010000011110000101000001 01010001…

Then these bits are changed by the message bits. It means the aim of steganography is

achieved, that is, the message is hidden into the image. Here only half of the bits in an image

will need to be modified to hide a secret message using the maximum cover size.

In Figures 5.8 and 5.9 are the three images. The first image is the original or cover

image used to hide the text message and the second image is known as the stego image which

include the message inside image. Both the cover image and stego image look similar. No

one knows apart from the sender and receiver knows that the stego image has a message

hidden inside it. Thus the main objective of steganography is achieved. The third image is an

intermediate image known as 8-bit planes of the original image. The first bit plane contains

Page 42: steganography using cylinder insertion algorithm

32

all the most significant bits of the image. The second bit plane contains all the second most

significant bits and so on. The last bit plane contains all the least significant bits of the image.

Figure 5.8. cover image and stego image.

Figure 5.9. Bit plane of gray scale image.

Page 43: steganography using cylinder insertion algorithm

33

chapter 6

decoding oF steganographic messages

The first decoding module is implemented using Google Android. Here in this module

I have selected a tetrahedron as the intersection geo object. Also to provide more complexity

I have use AES algorithm at the sender side so AES decryption is used to decrypt the

message. The decoding process seems to be the exact reverse of the encoding steganography

process. The second module is implemented in Matlab. Here the stego image has a hidden

message inside it. The stego image is a grey scale image. This grey scale image is then

converted into 8 bit planes. In this module I have selected cylinder as a geometric object to

decode the message from the image. This cylinder is then intersected with these 8 bit bit-

planes to find out the points where we can hide the message.

6.1 flow of DeCoDinG meChanism for anDroiD

This section explains the flow of the decoding mechanism for Android.

6.1.1 tetrahedron insertion algorithm at receiver

The sender has sent the stego image in an email. So the receiver has to use that stego

image in the decoding process. Receiver will download the image from email in Google

android. The default location in Google android is /sdcard/ where the downloaded images

reside. This sdcard provide the storage space in an Android emulator. In Google android

at the receiver end, I have used a tetrahedron as the geometric object to decode the hidden

message from the image. Whenever the receiver runs the decoding application, in the first

step the stego image is feed as an input to the algorithm. The geometric object, tetrahedron,

is used in the algorithm. The image is divided into bit planes. And then the intersection points

of the tetrahedron and the image is found. The decrypted message will be extracted and then

Page 44: steganography using cylinder insertion algorithm

34

the AES Decryption algorithm is used to decipher the text and to get the plain text. So after

all applying these steps the receiver gets the intended message (see Figure 6.1).

In order to receive the email or to connect to the internet, the receiver needs to set the

following user permissions in the AdnroidMenifest.xml file:

<uses-permission android:name=”android.permission.INTERNET”> </uses-permission>

Below is code for triangle insertion algorithm.

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.

Output: Original Message M.

Page 45: steganography using cylinder insertion algorithm

35

{ break; } } int pt = (tetray-1)*225+tetrax; message[tetray-1] = stegoimage[pt]; for(tetrax=113;tetrax<=225;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 pt1 = (tetray-1)*225+tetrax; message[tetray] = stegoimage[pt1]; tetray=tetray+2;} return message;} public static float functionAB(int x,int y,int x1,int y1,int x2,int y2) { return ((y-y1)*(x2-x1) - (x-x1)*(y2-y1)); } public static float functionBC(int x,int y,int x2,int y2,int x3,int y3) { return ((y-y2)*(x3-x2) - (x-x2)*(y3-y2)); }

public static float functionCA(int x,int y,int x1,int y1,int x3,int y3) { return ((y-y3)*(x1-x3) - (x-x3)*(y1-y3)); }

The SDCARD view, receiver’s view, and view of the receiver fetching stego image

from the email inbox are shown in Figures 6.2, 6.3, and 6.4.

6.1.2 aes decryption algorithm

As AES – Advanced Encryption Algorithm is symmetric key algorithm; the same

key is used at the sender side to encrypt the message and at the receiver side to decrypt the

message. Output of the geometric intersection algorithm is the decrypted message which

is not possible for the user to understand. As the complexity is increased by applying both

steganography and cryptography together it is difficult to detect a hidden message carried

Page 46: steganography using cylinder insertion algorithm

36

Figure 6.2. sdcard view.

Figure 6.3. receiver’s view.

Page 47: steganography using cylinder insertion algorithm

37

inside an image by any intruder. Here in Java the doFinal() method is used to decrypt the

cipher text. Output of this algorithm is the original message hidden into the stego image.

6.2. flow of DeCoDinG meChanism for matlab

The user uses a grey scale image for hiding and extracting messages. The grey scale

stego image is input to the cylinder insertion algorithm. All these image bit planes are shifted

by 1 bit and then the cylinder is inserted into these 8 bit planes. Intersection point of cylinder

and image are then considered as a place where the sender has to hide his secret message.

So the recipient of message can find the hidden message by extracting the message from the

same points.

Figure 6.4. receiver fetching stego image from email inbox.

Page 48: steganography using cylinder insertion algorithm

38

In Matlab at the receiver end, I have used the cylinder as geometric object. At the

receiver side the user has already one image which is a stego image. This stego image is

fed as an input to the steganography algorithm. The geometric object cylinder is used in

the algorithm. The image is divided into bit planes. And then the intersection points of the

cylinder and the image are found to extract the plain text. Below is the code for the cylinder

insertion algorithm in Matlab.

for i2=1:8:100 if(k > textlength) break; end;for i1=1:1:256 if(k > textlength) break; end; r=128; hx=128; r =r-(i2-1); rsqr = r^2; y2k = rsqr -(i1-hx)^2; y2k2 = sqrt(y2k); x1p = 128 + y2k2; x1m = y2k2 - 128; x1p = abs(x1p); x1m = abs(x1m); x1 = int32(x1m); if(x1 == 0) x1=1; end 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

Page 49: steganography using cylinder insertion algorithm

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.

Page 50: steganography using cylinder insertion algorithm

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.

Page 51: steganography using cylinder insertion algorithm

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.

Page 52: steganography using cylinder insertion algorithm

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.

MaTHWorkS[15] , Cylinder, MathWorks MATLAB Documentation, 2010. http://www.mathworks.com/help/techdoc/ref/cylinder.html, accessed November 2010.

WikiPedia[16] , Advanced Encryption Standard, Wikipedia, 2010. http://en.wikipedia.org/wiki/Advanced_Encryption_Standard, 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