EE362
Applied Vision & Image Systems

Vikram Vijayaraghavan

vvikram @ stanford.edu

Steganography & Digital Watermarking

Study & Implementation

Steganography (Part I)

Steganography

“Steganography is the art and science of writing hidden messages in such a way that no one apart from the intended recipient knows of the existence of the message i.e covered writing”

The “prisoners problem”

Types - Pure, Secret key, Public key

Watermarking (Part II)

Basis in steganography with robustness an additional requirement

Attacks on data can be malicious (or) image transformations

Commercial face of steganography

DRM, copyright, authentication etc.

So what......why do this in ee362?

Uses fundamental concepts taught in course

Visual acuity

Uses statistical properties of Images

Transforms, Quantization, Compression etc.

Advantage intrinsic to image/video

Huge amounts of data (place to hide!)

Steganographic Methods

Substitution systems (Implemented)

Transform domain systems (Implemented)

Spread spectrum techniques (Implemented*)

Misc. methods (image distortion etc)

Substitution based systems

LSB : least significant bit substitution

Phenomena (visual acuity) covered in our course

Simple yet effective (see demo)

Disadvantages

Improvements to LSB:

Seed a pseudo-random generator - get list of random locations in image

Improvements to LSB

Encode

Decode

Demo

+

+

=

Before

After

LSB substitution (4 bits)

Demo

Before

After

LSB substitution (4 bits)

Demo

LSB substitution (4 bits)

Before

After

Substitution based systems (contD)

Palette sorting

Some image formats (BMP, GIF) use palettes

Sort the palette so that neighboring colors are perceptually similar

Sort based on on:

Color values d= sqrt(r^2+g^2+b^2)

YCbCr luminance(Y) measure

Palette sort (contd)

- Encoding algorithm:

1. Find index of the pixel's RGB color in the sorted palette.

2. Get 1 bit from the binary message; replace LSB of the index.

3. Find new RGB color that the index now points to in sorted	palette.

4. Find index of the new RGB color in original palette.

5. Change pixel to the index of the new RGB color.

- Can use PRNG to generate random locations

Transfer Domain techniques

LSB vulnerable to cover image changes

Domain transformation helps

Kerchkoff's principle

Standard technique: Zhao & Koch

Modulates relative size of two (or more) DCT coefficients

Choose two middle freq. DCT coefficients.

Block encodes one if DCT(u1,v1) > DCT(u2,v2)

Preserve abs(DCT(u1,v1) - DCT(u2,v2)) > x; (higher x more robust at expense of quality)

DCT-Steg encoding

Demo

'Theres saying in Tennessee--I know its in Texas--says,fool me once--shame on—shame on you.You fool me,you cant get fooled again'

Spread spectrum techniques

Spread watermark bits in perceptually significant frequencies (low freq.)

If watermark altered; image will be significantly perceptually altered

Resistant to affine transformation

Watermarking (Part-II)

Whats the difference?

Robustness

Kind of attacks

Malicious

Steganalysis

Image transformations

Scaling, rotation etc.

Bad channel

Techniques based on various stages

Where:

Selection of where the watermark will be hidden (Implemented)

Formatting

Before embedding the watermark bits (Implemented)

Workspace:

Choice of domain workspace to apply watermark

Merging

While merging cover and watermark bits

“Where”: Choice of location

Patchwork algorithm : Bender et al.(1995)

Asks the binary question “does the person know the key used to build watermark”

Insertion process:

PRNG generates n (a,b) locations

a(i) = a(i) + 1; b(i) = b(i) – 1

Extraction process:

Use key and get sum = for i=1:n,

If cover contained watermark we can expect Sum ~ 2n else E(s) = for i=1:n,

Spread spectrum

Basic idea

Take top 'n' DCT coefficients.

Spread the watermark over them with an invertible function [ v(i) = v(i)*(1+alpha*x(i)) ]

Key here is each x(i) is chosen independently from ~N(0,1)

Aftert extraction of X* on receiver side, calculate similarity using sim(X,X*) = X*.X / sqrt(X*.X*)

Demo

n = 1000

alpha = 0.1

v'(i) = v(i)*(1+alpha*x(i))

Demo

n = 1000

alpha = 0.1

v'(i) = v(i)*(1+alpha*x(i))

Demo

N = 1000

alpha = 0.1

v'(i) = v(i)*(1+alpha*x(i))

Choice of workspace

Mellin-Fourier transform

Use a log-polar map transform of the fourier coefficients to get to an invariant space for translation, rotation, zooming

Wavelet domain

Positive points similar to DCT along with multiresolution aspects of wavelet transform

Merging watermark and cover bits

Phase modulation

Phase has more psychovisual impact; use the phase of image to embed watermark

PM has superior robustness with noise signals

Block substitution fractal coding

Fractal encoding uses notion of range and domain blocks in image and searching for a “similar” block given a range block.

For watermarking, restrict search window and divide search window into two pars; according to message bit only one of them will be searched.

Misc. techniques (preserve luminance average, AM in spatial domain etc).

Wrap up: bits and pieces

matlab toolbox(?)

DigiMarc patents

Fundamental change due to internet:

Explosion of watermark usage (DVD, audio etc)

Copyright authentication: cat & mouse game

Super-DMCA & researcher exodus

Psst......remember

“Subliminal message 1: Prof. Wandell my grade is....”

2005-03-13T21:00:01