Sei sulla pagina 1di 7

2014/03/04

Palette Images COS 788 Information Hiding


Steganography in Palette based images Traditionally a very hostile environment for hidden information However, there are different techniques Possible to hide information in both the palette and in the image data

Embedding in palette
Gifshuffle Reordering image palette and reindexing image data does not change visual appearance Can hide short messages as permutations of palette

Embedding in palette
Any list of n items can be sorted n! ways So any particular ordering can represent a number in the range [0, n!-1]

Embedding in palette
Disadvantages:
Security is low
Image-editing programs usually order palette according to luminance, frequency etc Randomly ordered palette will thus raise suspicion

LSB embedding in palette images


What happens when you change the LSBs of the pixels of a palette image?
Pixel indexes will point to new colours in the palette that may be completely different from original colour New colours can be created but are limited to maximum 256 colours

Fragile
Displaying the image and resaving it may reorder the palette and erase the information

Small payload
Regardless of image size

2014/03/04

Raster vs. Palette


BMP image GIF image

LSB Steganography in Raster vs. Palette


BMP image

LSB embedding may lead to colour planes being adjusted with one value These changes in colour are too small to see with the human eye

11010010 11000100 11100000

11010010 11000101 11100001

LSB Steganography in Raster vs. Palette


However changes to the LSB of Palette based pixels lead to the index stored in the pixel to point to the next or previous value This could be a completely different colour
GIF image

LSB Steganography in Raster vs. Palette


GIF image

Lets say this these two pointed to the same value and that the indices were 00000000 before embedding

LSB Steganography in Raster vs. Palette


GIF image

LSB Steganography in Raster vs. Palette


This change could lead to visual changes to the image
GIF image

If LSB embedding was performed on the second pixel then the index value would change to 00000001

2014/03/04

Preprocessing the palette


Possible solution?
Preprocess the palette

Preprocessing the palette


Since maximum of 256 colours, decrease number of unique colours so that more similar colours can be introduced Preprocess the palette before embedding to decrease the colour depth to 128, 64 or 32 colours One, two or three bits per pixel can thus be used without introducing visual distortion

Possible approaches for palette preprocessing:


Decrease the colour depth or Sort the palette

Preprocessing the palette


1. Collapse 256 colours 128 colours 2. Expand 128 colours 256 colours by including a close colour (eg flip the LSB of the blue channel) 3. Embed a binary message into the LSB of the blue channel 4. Embedding capacity: 1 bpp

Preprocessing the palette


Alternatively:
Decrease colour depth to 32 colours Expand each colour to all 8 possible colours that changes to the LSBs would create Use LSBs of all three colour planes Embedding rate: 3 bpp

Preprocessing the palette


Advantages:
High capacity

Sorting the palette


Palette can be sorted so that neighbouring colours are closer LSB can then be applied to the pointers in the image data Sorted according to what?

Disadvantages
Security is low palette will have very unusual structure Easily detectable even for small messages

2014/03/04

Sorting the palette


EzStego
Sorts the palette according to luminance Normally colours close in luminance is close in colour space as well However occasionally colours with similar luminance can be completely different
RGB colours [6, 98, 233] and [233, 6, 98] have same luminance

Sorting the palette


Sort the palette according to what? Task of finding the optimal ordering is NP complete Do we really need to sort the palette to obtain minimal distortion?

Visual artefacts can then appear

Optimal-parity embedding
Assign parity bits to each palette colour Instead of embedding information in LSB of pixel index, search for closest colour with appropriate parity bit Let pixel point to this colour

Optimal-parity embedding
For each colour in palette a parity bit is assigned Parity bit is calculated as: Parity bit = (R + G + B) % 2

Optimal-parity embedding
The distance between all colours are calculated using Euclidean distance Distance between two colours (R1G1B1) and (R2G2B2) is calculated as: d2 = (R1 R2)2 + (G1 G2)2+ (B1 B2)2 Distances are stored as a matrix

Optimal-parity embedding
For each message bit:
Randomly select a pixel Find the closest colour whose parity bit corresponds to the message bit Change the index of the pixel to point to this colour

Embedding capacity: 1 bpp

2014/03/04

Optimal-parity embedding
Pixels are never replaced with completely different colours

Palette-Based Steganography
Quite often palette image contain large areas of uniform colour where embedding could introduce visual distortion Adaptive selection channels can thus be used that limit embedding to noisy areas while avoiding simple structures Called adaptive steganography

Adaptive Steganography
Non-adaptive steganography techniques are techniques in which the modifications to the cover image are uncorrelated with image features For example, LSB is randomly selected pixels

Adaptive Steganography
Pixels carrying message bits are selected adaptively and depend on the image Capacity of adaptive steganography algorithms is image dependant

Adaptive Palette-based Steganography


Image is divided into disjoint blocks B One bit is assigned to each block
Can be LSB of middle pixel or its parity, or parity of whole block etc.

Adaptive Palette-based Steganography


A threshold for local Standard Deviation (STD) is selected
Also define a measure of texture a map that assigns a scalar value to each block For example, could be the number of distinct colours in a block

Referring to optimal parity embedding:


Block parity is defined as the eXclusive OR (XOR) of parities of all pixels in the block

A pseudo-random non-intersecting walk over the blocks are generated from a secret key

2014/03/04

Adaptive Palette-based Steganography


If the texture measure of a block exceeds a certain threshold then it is considered noisy
For example, in a 3 x 3 block, if there are 3 different colours or more

Adaptive Palette-based Steganography


If the block parity matches the message bit, nothing happens If the block parity does not match the message bit, one of the colours are changed that changes the parity of the whole block Thus similar to Optimal Parity Embedding the message bits are embedded in the parity bits

Noisy blocks are considered suitable for message embedding If suitable, then calculate parity of entire block

Adaptive Palette-based Steganography


At receivers side:
Identify all blocks whose texture measure is above the threshold Calculate the parity for these blocks to extract the message

Adaptive Palette-based Steganography


Act of embedding may change the texture measure to fall below the threshold Receiver will then not read those bits

Problem?

Adaptive Palette-based Steganography


Common problem to many steganographic algorithms that use adaptive selection channels The act of embedding changes the characteristics of the original image and thus could change the suitability of certain image features

Adaptive Palette-based Steganography


Simple solution:
After embedding each bit check the texture measure against the threshold If texture measure falls below threshold, embed the message bit again in the next block Thus keeping the sequence of the PseudoRandom numbers

Decreases embedding capacity

2014/03/04

Adaptive Palette-based Steganography


Disadvantages:
Not possible to say whether or not a message will fit into the image before the start of the embedding process Somewhat decreased capacity

Potrebbero piacerti anche