The DCT domain and JPEG CSM25 Secure Information Hiding Dr Hans - - PowerPoint PPT Presentation

the dct domain and jpeg
SMART_READER_LITE
LIVE PREVIEW

The DCT domain and JPEG CSM25 Secure Information Hiding Dr Hans - - PowerPoint PPT Presentation

The DCT domain and JPEG CSM25 Secure Information Hiding Dr Hans Georg Schaathun University of Surrey Spring 2009 Week 3 Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 Week 3 1 / 47 Learning Objectives Be able to work


slide-1
SLIDE 1

The DCT domain and JPEG

CSM25 Secure Information Hiding Dr Hans Georg Schaathun

University of Surrey

Spring 2009 – Week 3

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 1 / 47

slide-2
SLIDE 2

Learning Objectives

Be able to work with and JPEG images and other representations in the transform domain. Understand what happens during JPEG compression, and its potential consequence to watermarking and steganography. Be able to apply simple LSB embedding in the JPEG domain.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 2 / 47

slide-3
SLIDE 3

Overview

Outline

1

Overview

2

Image Representation

3

Compression

4

Steganography in JPEG

5

Matlab

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 3 / 47

slide-4
SLIDE 4

Overview

The elements of JPEG

Operates on luminence and chrominance (YCbCr) (not on RGB)

Grayscale images have luminence component only.

Downsampling Works in the DCT domain (not the spatial domain) Quantisation Entropy coding (lossless compression)

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 4 / 47

slide-5
SLIDE 5

Overview

JPEG is not a file format

JPEG is a compression system

The system employs three different compression techniques

JPEG is not a file format. Files with extension .jpeg are often JFIF or EXIF .

JFIF is traditionally the most common file format for JPEG. EXIF is made for digital cameras and contain extra meta information.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 5 / 47

slide-6
SLIDE 6

Overview

Reading

Core Reading Digital Image Processing Using MATLAB. Chapter 6: colour images

Representation Processing Conversion

Chapter 8.5: JPEG compression Chapter 4: Frequency domain processing

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 6 / 47

slide-7
SLIDE 7

Image Representation

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression

4

Steganography in JPEG

5

Matlab

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 7 / 47

slide-8
SLIDE 8

Image Representation Alternatives to RGB

The RGB colour representations

RGB : A colour is a vector (R, G, B)

R is amount of red light. G is amount of green light. B is amount of blue light.

Each pixel can be either

A colour vector (R, G, B); or a reference to an array of colour vectors (the palette)

Each coefficient can be

∈ [0, 1]; floating point (double in matlab) ∈ {0, 1, . . . , 255}; 8-bit integer (uint8 in matlab) ∈ {0, 1, . . . , 216 − 1}; 16-bit integer (uint16 in matlab)

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 8 / 47

slide-9
SLIDE 9

Image Representation Alternatives to RGB

Alternatives to RGB

NTSC : (Y, I, Q)   Y I Q   =   0.299 0.587 0.114 0.596 −0.274 −0.322 0.211 −0.523 0.312     R G B   where R, G, B ∈ [0, 1]. YCbCr : (Y, Cb, Cr)   Y Cb Cr   =   16 128 128   +   65.481 128.553 24.966 −37.797 −74.203 112.000 112.000 −93.786 −18.214     R G B   where R, G, B ∈ [0, 1] and Y, Cb, Cr ∈ [0, 255].

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 9 / 47

slide-10
SLIDE 10

Image Representation The blockwise DCT domain

Block-wise

Each colour-channel (Y,Cb,Cr) considered separately M × N matrix divided into 8 × 8 blocks Each block is handled separately

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 10 / 47

slide-11
SLIDE 11

Image Representation The blockwise DCT domain

The DCT transform

Several different DCT transform. We use the following. Tf(u, v) =

M−1

  • x=0

N−1

  • y=0

f(x, y)

  • α(u)α(v)

MN cos (2x + 1)uπ 2M cos (2y + 1)vπ 2N where α(a) =

  • 1, if a = 0,

2, otherwise. M = N = 8,

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 11 / 47

slide-12
SLIDE 12

Image Representation The blockwise DCT domain

The DCT transform

The inverse is similar f(x, y) =

M−1

  • u=0

N−1

  • v=0

Tf(u, v)

  • α(u)α(v)

MN cos (2x + 1)uπ 2M cos (2y + 1)vπ 2N where α(a) =

  • 1, if a = 0,

2, otherwise. M = N = 8,

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 12 / 47

slide-13
SLIDE 13

Image Representation The blockwise DCT domain

Matlab

Matlab functions

dct2 (2D DCT transform) idct2 (Inverse) blkproc ( X, [M N], FUN )

For instance

blkproc ( X, [8 8], @dct2 )

Use help system for details Do not use imread for JPEG images

converts images to the spatial domain. you don’t even know the compression parameters...

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 13 / 47

slide-14
SLIDE 14

Image Representation The blockwise DCT domain

Transform image

Linear combination of patterns (see right) DC (upper left) gives average colour intensity Low frequency: coarse structure High frequency: fine details

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 14 / 47

slide-15
SLIDE 15

Compression

Outline

1

Overview

2

Image Representation

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG

5

Matlab

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 15 / 47

slide-16
SLIDE 16

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-17
SLIDE 17

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-18
SLIDE 18

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-19
SLIDE 19

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-20
SLIDE 20

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-21
SLIDE 21

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-22
SLIDE 22

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-23
SLIDE 23

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-24
SLIDE 24

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-25
SLIDE 25

Compression Downsampling

What is sampling?

Fact The human eye is more sensitive to changes in luminance than in chrominance. To sample is to collect measurements.

Each pixel is a sample (measuring the colour of the image). Lower resolution means fewer samples. Reducing resolution = downsampling

Basic M × N image: N · M samples per component (Y, Cb, Cr). Y is more useful than Cb and Cr. Therefore we can downsample Cb and Cr

M/2 × N/2 is common for Cb and Cr Still use M × M for Y

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 16 / 47

slide-26
SLIDE 26

Compression Downsampling

What do we save?

Original: M × N pixels ×3 components . Compressed: 2 × M 2 × N 2 + M × N = 11 2M × N Ratio Compressed Original = 11

2MN

3MN = 1 2. We just saved 50%

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 17 / 47

slide-27
SLIDE 27

Compression Downsampling

What do we save?

Original: M × N pixels ×3 components . Compressed: 2 × M 2 × N 2 + M × N = 11 2M × N Ratio Compressed Original = 11

2MN

3MN = 1 2. We just saved 50%

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 17 / 47

slide-28
SLIDE 28

Compression Downsampling

What do we save?

Original: M × N pixels ×3 components . Compressed: 2 × M 2 × N 2 + M × N = 11 2M × N Ratio Compressed Original = 11

2MN

3MN = 1 2. We just saved 50%

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 17 / 47

slide-29
SLIDE 29

Compression Downsampling

What do we save?

Original: M × N pixels ×3 components . Compressed: 2 × M 2 × N 2 + M × N = 11 2M × N Ratio Compressed Original = 11

2MN

3MN = 1 2. We just saved 50%

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 17 / 47

slide-30
SLIDE 30

Compression Downsampling

Chrominance versus Luminence

Fact The human eye is more sensitive to changes in luminance than in chrominance. Watermarking tend to embed in Y (luminence) Embedding in Cb and Cr would more easily be destroyed by JPEG

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 18 / 47

slide-31
SLIDE 31

Compression Downsampling

Chrominance versus Luminence

Fact The human eye is more sensitive to changes in luminance than in chrominance. Watermarking tend to embed in Y (luminence) Embedding in Cb and Cr would more easily be destroyed by JPEG

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 18 / 47

slide-32
SLIDE 32

Compression Downsampling

Chrominance versus Luminence

Fact The human eye is more sensitive to changes in luminance than in chrominance. Watermarking tend to embed in Y (luminence) Embedding in Cb and Cr would more easily be destroyed by JPEG

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 18 / 47

slide-33
SLIDE 33

Compression Downsampling

Downsampling in JPEG

1

Translation to YCbCr.

2

Downsampling

3

DCT transform Each downsampled component matrix Y, Cb, Cr is

Divided into 8 × 8 blocks DCT transformed blockwise

An 8 × 8 block in Cb can be associated with 1,2 or 4 Y blocks depending on downsampling.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 19 / 47

slide-34
SLIDE 34

Compression Quantisation

What is quantisation?

Rounding in general

Rounding numbers is quantisation. Measuring gives continuous numbers

Whether you measure pixel luminence, or the length of your garage. No matter how close to points are,

there is a point in between.

However, our precision is limited.

We give lengths to the nearest unit. Luminence is categorised into 256 intervals (8bit integers).

Computer memory is finite,

256 different possibilites for a byte

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 20 / 47

slide-35
SLIDE 35

Compression Quantisation

Quantisation in JPEG

Quantisation in the DCT domain Each coefficient is divided by the quantisation constant. The result is rounded to nearest integer. Different quantisation constants for each coefficient in the block.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 21 / 47

slide-36
SLIDE 36

Compression Quantisation

Example

Quantisation in JPEG

2 6 6 6 6 6 6 6 6 6 6 6 4 DCT matrix −415 −30 −61 27 56 −20 −2 4 −22 −61 10 13 −7 −9 5 −47 7 77 −25 −29 10 5 −6 −49 12 34 −15 −10 6 2 2 12 −7 −13 −4 −2 2 −3 3 −8 3 2 −6 −2 1 4 2 −1 −2 −1 −3 4 −1 −1 −4 −1 1 2 3 7 7 7 7 7 7 7 7 7 7 7 5 ./ 2 6 6 6 6 6 6 6 6 6 6 6 4 Quantisation matrix 16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99 3 7 7 7 7 7 7 7 7 7 7 7 5 ≈ 2 6 6 6 6 6 6 6 6 6 6 6 4 Quantised DCT matrix −26 −3 −6 2 2 −1 −2 −4 1 1 −3 1 5 −1 −1 −4 1 2 −1 1 3 7 7 7 7 7 7 7 7 7 7 7 5 Example from Wikipedia. Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 22 / 47

slide-37
SLIDE 37

Compression Source Coding

Entropy Coding

Recall             −26 −3 −6 2 2 −1 −2 −4 1 1 −3 1 5 −1 −1 −4 1 2 −1 1             Observe

0 is extremely common ±1 is common Two-digit numbers are very rare

This is typical

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 23 / 47

slide-38
SLIDE 38

Compression Source Coding

Entropy Coding

In order to compress the data

Use few bits (short codewords) for frequent symbols Many bits (long codewords) only for rare symbols

Usually, JPEG uses a simple Huffman code.

it can use other codes (saving space, but computionally costly)

For instance, a single short codeword to say

‘the rest of the block is zero’

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 24 / 47

slide-39
SLIDE 39

Steganography in JPEG

Outline

1

Overview

2

Image Representation

3

Compression

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1

5

Matlab

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 25 / 47

slide-40
SLIDE 40

Steganography in JPEG Into the compressed domain

Before or after compression

pixmap LSB embedding

  • JPEG

compression

  • stego-

image

  • message
  • pixmap

JPEG compression

  • LSB

embedding

  • stego-

image

  • message
  • Dr Hans Georg Schaathun

The DCT domain and JPEG Spring 2009 – Week 3 26 / 47

slide-41
SLIDE 41

Steganography in JPEG Into the compressed domain

Fragility of LSB

LSB embedding is criticised for being fragile JPEG removes insignificant information

... such as the LSB

JPEG compression after embedding (probably) ruins the message When is this a problem?

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 27 / 47

slide-42
SLIDE 42

Steganography in JPEG Into the compressed domain

When fragility is a problem

It is a problem in robust watermarking

JPEG compression is common-place most applications need robustness

If the purpose is steganography,

and Alice and Bob are allowed to exchange pixmaps, then it is not a problem.

Obviously, if your steganogram is supposed to be JPEG

... Do not do LSB in the pixmap.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 28 / 47

slide-43
SLIDE 43

Steganography in JPEG Into the compressed domain

When fragility is a problem

It is a problem in robust watermarking

JPEG compression is common-place most applications need robustness

If the purpose is steganography,

and Alice and Bob are allowed to exchange pixmaps, then it is not a problem.

Obviously, if your steganogram is supposed to be JPEG

... Do not do LSB in the pixmap.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 28 / 47

slide-44
SLIDE 44

Steganography in JPEG Into the compressed domain

When fragility is a problem

It is a problem in robust watermarking

JPEG compression is common-place most applications need robustness

If the purpose is steganography,

and Alice and Bob are allowed to exchange pixmaps, then it is not a problem.

Obviously, if your steganogram is supposed to be JPEG

... Do not do LSB in the pixmap.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 28 / 47

slide-45
SLIDE 45

Steganography in JPEG Into the compressed domain

Double compression

Common bug in existing software Read an arbitrary image file

JPEG is decompressed on reading ... → pixmap

Embedding works on JPEG

image is compressed to produce JPEG signal quality factor (QF) either default or supplied by user

A JPEG steganogram has now been compressed twice

different QF produces an artifact

Is there any reason for de- and recompressing?

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 29 / 47

slide-46
SLIDE 46

Steganography in JPEG Into the compressed domain

Important lessons

1

Do not make unnecessary image conversions.

2

Many techniques apply to any format

LSB applies to JPEG signals ... but it is called Jsteg

3

Use a technique which fits the target (stego-) format

i.e. the format you are allowed to use on the channel.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 30 / 47

slide-47
SLIDE 47

Steganography in JPEG Into the compressed domain

Main development

The past at a glance

Core Reading Hide and Seek: An Introduction to Steganography by Niels Provos and Peter Honeyman, in IEEE Security & Privacy 2003.

1

JSteg was published

2

JSteg was broken

3

OutGuess was published

4

OutGuess was broken

5

F5 was published

6

F5 was broken

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 31 / 47

slide-48
SLIDE 48

Steganography in JPEG Into the compressed domain

Main development

The past at a glance

Core Reading Hide and Seek: An Introduction to Steganography by Niels Provos and Peter Honeyman, in IEEE Security & Privacy 2003.

1

JSteg was published

2

JSteg was broken

3

OutGuess was published

4

OutGuess was broken

5

F5 was published

6

F5 was broken

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 31 / 47

slide-49
SLIDE 49

Steganography in JPEG Into the compressed domain

Main development

The past at a glance

Core Reading Hide and Seek: An Introduction to Steganography by Niels Provos and Peter Honeyman, in IEEE Security & Privacy 2003.

1

JSteg was published

2

JSteg was broken

3

OutGuess was published

4

OutGuess was broken

5

F5 was published

6

F5 was broken

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 31 / 47

slide-50
SLIDE 50

Steganography in JPEG Into the compressed domain

Main development

The past at a glance

Core Reading Hide and Seek: An Introduction to Steganography by Niels Provos and Peter Honeyman, in IEEE Security & Privacy 2003.

1

JSteg was published

2

JSteg was broken

3

OutGuess was published

4

OutGuess was broken

5

F5 was published

6

F5 was broken

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 31 / 47

slide-51
SLIDE 51

Steganography in JPEG Into the compressed domain

Main development

The past at a glance

Core Reading Hide and Seek: An Introduction to Steganography by Niels Provos and Peter Honeyman, in IEEE Security & Privacy 2003.

1

JSteg was published

2

JSteg was broken

3

OutGuess was published

4

OutGuess was broken

5

F5 was published

6

F5 was broken

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 31 / 47

slide-52
SLIDE 52

Steganography in JPEG Into the compressed domain

Main development

The past at a glance

Core Reading Hide and Seek: An Introduction to Steganography by Niels Provos and Peter Honeyman, in IEEE Security & Privacy 2003.

1

JSteg was published

2

JSteg was broken

3

OutGuess was published

4

OutGuess was broken

5

F5 was published

6

F5 was broken

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 31 / 47

slide-53
SLIDE 53

Steganography in JPEG JSteg and OutGuess 0.1

The JSteg algorithm

JSteg denotes a software package. Approach: simple LSB in the DCT domain. No different from LSB in the spatial domain χ2 analysis applies

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 32 / 47

slide-54
SLIDE 54

Steganography in JPEG JSteg and OutGuess 0.1

Pseudocode

The JSteg algorithm

Input: Image I, Message m Output: Image J for each bit b of m c := next DCT coefficient from I while c = 0 or c = 1, c := next DCT coefficient from I end while c := c − c mod 2 + b replace coefficient in I by c end for May ignore high and/or low frequency coefficients

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 33 / 47

slide-55
SLIDE 55

Steganography in JPEG JSteg and OutGuess 0.1

Bitflips in JSteg

+1 +2 +3 +4 +5 −1 −2 −3 −4 −5 Cover +1 +2 +3 +4 +5 −1 −2 −3 −4 −5 Stego

  • Typical JPEG.

Typical JSteg.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 34 / 47

slide-56
SLIDE 56

Steganography in JPEG JSteg and OutGuess 0.1

Pros and Cons

Why is JSteg important?

First publicly available solution. Simple solution

What are the disadvantages?

Similar to LSB in Spatial domain. Histogramme analysis applies χ2/pairs of values applies

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 35 / 47

slide-57
SLIDE 57

Steganography in JPEG JSteg and OutGuess 0.1

Pros and Cons

Why is JSteg important?

First publicly available solution. Simple solution

What are the disadvantages?

Similar to LSB in Spatial domain. Histogramme analysis applies χ2/pairs of values applies

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 35 / 47

slide-58
SLIDE 58

Steganography in JPEG JSteg and OutGuess 0.1

Pros and Cons

Why is JSteg important?

First publicly available solution. Simple solution

What are the disadvantages?

Similar to LSB in Spatial domain. Histogramme analysis applies χ2/pairs of values applies

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 35 / 47

slide-59
SLIDE 59

Steganography in JPEG JSteg and OutGuess 0.1

Pros and Cons

Why is JSteg important?

First publicly available solution. Simple solution

What are the disadvantages?

Similar to LSB in Spatial domain. Histogramme analysis applies χ2/pairs of values applies

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 35 / 47

slide-60
SLIDE 60

Steganography in JPEG JSteg and OutGuess 0.1

Pros and Cons

Why is JSteg important?

First publicly available solution. Simple solution

What are the disadvantages?

Similar to LSB in Spatial domain. Histogramme analysis applies χ2/pairs of values applies

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 35 / 47

slide-61
SLIDE 61

Steganography in JPEG JSteg and OutGuess 0.1

Pros and Cons

Why is JSteg important?

First publicly available solution. Simple solution

What are the disadvantages?

Similar to LSB in Spatial domain. Histogramme analysis applies χ2/pairs of values applies

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 35 / 47

slide-62
SLIDE 62

Steganography in JPEG JSteg and OutGuess 0.1

Pros and Cons

Why is JSteg important?

First publicly available solution. Simple solution

What are the disadvantages?

Similar to LSB in Spatial domain. Histogramme analysis applies χ2/pairs of values applies

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 35 / 47

slide-63
SLIDE 63

Steganography in JPEG JSteg and OutGuess 0.1

Outguess 0.1

How can we improve JSteg? How did we improve LSB in the Spatial Domain? Solution Choose random coefficients from the entire image.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 36 / 47

slide-64
SLIDE 64

Steganography in JPEG JSteg and OutGuess 0.1

Outguess 0.1

How can we improve JSteg? How did we improve LSB in the Spatial Domain? Solution Choose random coefficients from the entire image.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 36 / 47

slide-65
SLIDE 65

Steganography in JPEG JSteg and OutGuess 0.1

Outguess 0.1

How can we improve JSteg? How did we improve LSB in the Spatial Domain? Solution Choose random coefficients from the entire image.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 36 / 47

slide-66
SLIDE 66

Steganography in JPEG JSteg and OutGuess 0.1

Pseudocode

Outguess 0.1

Input: Image I, Message m, Key k Output: Image J Seed PRNG with k for each bit b of m c := pseudo-random DCT coefficient from I while c = 0 or c = 1, c := pseudo-random DCT coefficient from I end while c := c − c mod 2 + b replace coefficient in I by c end for May ignore high and/or low frequency coefficients

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 37 / 47

slide-67
SLIDE 67

Steganography in JPEG JSteg and OutGuess 0.1

Histogramme analysis

Steganalysis

1

Pairs of values

Generalised χ2 works

2

Symmetry

Embedding exchange +2 ↔ +3 and −2 ↔ −1. The DCT histogramme is expected to be symmetric Outguess/JSteg destroy the symmetry.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 38 / 47

slide-68
SLIDE 68

Matlab

Outline

1

Overview

2

Image Representation

3

Compression

4

Steganography in JPEG

5

Matlab The JPEG toolbox Randomness Masking

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 39 / 47

slide-69
SLIDE 69

Matlab The JPEG toolbox

JPEG Toolbox

Reading a JPEG image » im = jpeg_read ( ’Kerckhoffs.jpg’ ) im = image_width: 180 image_height: 247 image_components: 3 image_color_space: 2 jpeg_components: 3 jpeg_color_space: 3 comments: {} coef_arrays: {[248x184 double] [128x96 double] [128x96 quant_tables: {[8x8 double] [8x8 double]} ac_huff_tables: [1x2 struct] dc_huff_tables: [1x2 struct]

  • ptimize_coding: 0

comp_info: [1x3 struct] progressive_mode: 0 »

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 40 / 47

slide-70
SLIDE 70

Matlab The JPEG toolbox

JPEG Toolbox

JPEG data » Xy = im.coef_arrays{im.comp_info(1).component_id} ; » whos Xy Name Size Bytes Class Attributes Xy 248x184 365056 double » Q = im.quant_tables{im.comp_info(1).quant_tbl_no} Q = 6 4 4 6 10 16 20 24 5 5 6 8 10 23 24 22 6 5 6 10 16 23 28 22 6 7 9 12 20 35 32 25 7 9 15 22 27 44 41 31 10 14 22 26 32 42 45 37 20 26 31 35 41 48 48 40 29 37 38 39 45 40 41 40 »

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 41 / 47

slide-71
SLIDE 71

Matlab The JPEG toolbox

w/o the toolbox

Load/Save workspace

jpeg_read and jpeg_write are compiled functions,

Available on web page for Intel/Linux and Intel/Windows Compilation required for other systems.

If you have trouble with the toolbox, it is possible to load/save files as Matlab workspaces.

» load ’image.mat’ » whos Name Size Bytes Class Attributes im 1x1 575836 struct

There is one mat-file for each image on the web page

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 42 / 47

slide-72
SLIDE 72

Matlab The JPEG toolbox

Other toolbox functions

If you want to write your own (de)compressor, the following functions are useful.

bdct, ibdct, quantize, dequantize

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 43 / 47

slide-73
SLIDE 73

Matlab Randomness

Pseudo-random number generators

A pseudo-random number generator (PRNG)

finite state machine starting state given by user input – the seed each transition outputs a number

  • bserving a sequence of number,

it is computationally infeasible to predict the next number

looks random

It is deterministic

if sender and receiver share the seed (a key)

they can generate the same sequence

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 44 / 47

slide-74
SLIDE 74

Matlab Randomness

Random locations

Many ways to do it

but some makes it hard to avoid using the same pixel twice

A simple approach

1

randomly permute the pixels

2

embed in the first pixels in the permuted sequence

3

reverse the permutation

If the sender and receiver use the same PRNG seed,

they get the same pseudo-random permutation

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 45 / 47

slide-75
SLIDE 75

Matlab Randomness

Matlab functions

Many functions using a PRNG

rand, randperm, randn

And one dedicated for performing random permutations

new = randintrlv ( old, seed ) the seed is given directly when the permutation is used reverse: old = randdeintrlv ( new, seed )

new/old should be a 1D vector

serialise the image into a vector (im(:))

before randintrlv

reshape ( vector, [ N, M ] ) to recover the 2D image

after randdeintrlv

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 46 / 47

slide-76
SLIDE 76

Matlab Masking

Masking

Boolean matrix as index

Matlab allows Boolean (logical) matrices as indices

Say A is an n × m matrix B = logical(ones(n,m)) B(1,1) = 0 A(B) will be all elements of A except (1, 1)

repmat(B,m,n) replicates B to form a larger matrix

m times the heigh n times the width

How do you extract the AC coefficients in a JPEG image?

Make an 8 × 8 mask of ones Set the DC entry to 0, e.g. (1, 1) Replicate the mask using repmat

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 47 / 47

slide-77
SLIDE 77

Matlab Masking

Masking

Boolean matrix as index

Matlab allows Boolean (logical) matrices as indices

Say A is an n × m matrix B = logical(ones(n,m)) B(1,1) = 0 A(B) will be all elements of A except (1, 1)

repmat(B,m,n) replicates B to form a larger matrix

m times the heigh n times the width

How do you extract the AC coefficients in a JPEG image?

Make an 8 × 8 mask of ones Set the DC entry to 0, e.g. (1, 1) Replicate the mask using repmat

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 47 / 47

slide-78
SLIDE 78

Matlab Masking

Masking

Boolean matrix as index

Matlab allows Boolean (logical) matrices as indices

Say A is an n × m matrix B = logical(ones(n,m)) B(1,1) = 0 A(B) will be all elements of A except (1, 1)

repmat(B,m,n) replicates B to form a larger matrix

m times the heigh n times the width

How do you extract the AC coefficients in a JPEG image?

Make an 8 × 8 mask of ones Set the DC entry to 0, e.g. (1, 1) Replicate the mask using repmat

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2009 – Week 3 47 / 47