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 2008 Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 1 / 62 Learning Objectives Be able to work with and JPEG images


slide-1
SLIDE 1

The DCT domain and JPEG

CSM25 Secure Information Hiding Dr Hans Georg Schaathun

University of Surrey

Spring 2008

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 1 / 62

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 2008 2 / 62

slide-3
SLIDE 3

Overview

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 3 / 62

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 2008 4 / 62

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 2008 5 / 62

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 2008 6 / 62

slide-7
SLIDE 7

Image Representation Alternatives to RGB

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 7 / 62

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 2008 8 / 62

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 2008 9 / 62

slide-10
SLIDE 10

Image Representation The blockwise DCT domain

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 10 / 62

slide-11
SLIDE 11

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 2008 11 / 62

slide-12
SLIDE 12

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 2008 12 / 62

slide-13
SLIDE 13

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 2008 13 / 62

slide-14
SLIDE 14

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 Unfortunately, we do not have the JPEG toolbox.

Loading JPEG images converts them to the spatial domain.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 14 / 62

slide-15
SLIDE 15

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 2008 15 / 62

slide-16
SLIDE 16

Compression Downsampling

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 16 / 62

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 2008 17 / 62

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 2008 17 / 62

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 2008 17 / 62

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 2008 17 / 62

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 2008 17 / 62

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 2008 17 / 62

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 2008 17 / 62

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 2008 17 / 62

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 2008 17 / 62

slide-26
SLIDE 26

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 2008 17 / 62

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 2008 18 / 62

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 2008 18 / 62

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 2008 18 / 62

slide-30
SLIDE 30

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 2008 18 / 62

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 2008 19 / 62

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 2008 19 / 62

slide-33
SLIDE 33

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 2008 19 / 62

slide-34
SLIDE 34

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 2008 20 / 62

slide-35
SLIDE 35

Compression Quantisation

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 21 / 62

slide-36
SLIDE 36

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 2008 22 / 62

slide-37
SLIDE 37

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 2008 23 / 62

slide-38
SLIDE 38

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 2008 24 / 62

slide-39
SLIDE 39

Compression Source Coding

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 25 / 62

slide-40
SLIDE 40

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 2008 26 / 62

slide-41
SLIDE 41

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 2008 27 / 62

slide-42
SLIDE 42

Steganography in JPEG Into the compressed domain

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 28 / 62

slide-43
SLIDE 43

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 2008 29 / 62

slide-44
SLIDE 44

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 2008 30 / 62

slide-45
SLIDE 45

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 2008 31 / 62

slide-46
SLIDE 46

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 2008 31 / 62

slide-47
SLIDE 47

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 2008 31 / 62

slide-48
SLIDE 48

Steganography in JPEG Into the compressed domain

Double compression

Common bug in existing software Read a 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 2008 32 / 62

slide-49
SLIDE 49

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 2008 33 / 62

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 2008 34 / 62

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 2008 34 / 62

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 2008 34 / 62

slide-53
SLIDE 53

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 2008 34 / 62

slide-54
SLIDE 54

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 2008 34 / 62

slide-55
SLIDE 55

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 2008 34 / 62

slide-56
SLIDE 56

Steganography in JPEG JSteg and OutGuess 0.1

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 35 / 62

slide-57
SLIDE 57

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 2008 36 / 62

slide-58
SLIDE 58

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 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 2008 37 / 62

slide-59
SLIDE 59

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 2008 38 / 62

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 2008 39 / 62

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 2008 39 / 62

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 2008 39 / 62

slide-63
SLIDE 63

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 2008 39 / 62

slide-64
SLIDE 64

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 2008 39 / 62

slide-65
SLIDE 65

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 2008 39 / 62

slide-66
SLIDE 66

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 2008 39 / 62

slide-67
SLIDE 67

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 2008 40 / 62

slide-68
SLIDE 68

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 2008 40 / 62

slide-69
SLIDE 69

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 2008 40 / 62

slide-70
SLIDE 70

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 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 2008 41 / 62

slide-71
SLIDE 71

Steganography in JPEG Steganalysis

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 42 / 62

slide-72
SLIDE 72

Steganography in JPEG Steganalysis

Histogramme analysis

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 2008 43 / 62

slide-73
SLIDE 73

Steganography in JPEG Steganalysis

Symmetry analysis

J2i =

  • 1 − q

2

  • I2i + q

2I2i+1, J2i+i = q 2I2i +

  • 1 − q

2

  • I2i+1

Writing a = 1 − q/2 1 − q and b = q/2 1 − q , we get I2i = aJ2i − bJ2i+1, I2i+1 = −bJ2i + aJ2i+1.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 44 / 62

slide-74
SLIDE 74

Steganography in JPEG Steganalysis

Symmetry analysis (II)

  • i>0

I2i =

  • i<0

I2i, and

  • i<0

I2i+1 =

  • i>0

I2i+1. In other words

  • i>0

I2i +

  • i<0

I2i+1 =

  • i<0

I2i +

  • i>0

I2i+1. Substitute for I2i and J2i+1 One equation in one unknown : q

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 45 / 62

slide-75
SLIDE 75

Steganography in JPEG Steganalysis

Exercise

Symmetry analysis

  • i>0

I2i +

  • i<0

I2i+1 =

  • i<0

I2i +

  • i>0

I2i+1. Substitute for I2i and I2i+1

get equation in J2i and J2i+1.

Solve for J1, write as equation in

J1 (left hand side) ∆i = J2i − J2i+1 (i > 0), and ∆i = J2i+1 − J2i (i < 0).

Solve for q Can you implement the resulting expression for p in Matlab?

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 46 / 62

slide-76
SLIDE 76

Steganography in JPEG F3 – 4 – 5

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 47 / 62

slide-77
SLIDE 77

Steganography in JPEG F3 – 4 – 5

Improvements at a glance

F3 – F4 changes the embedding

better histogramme – maintain symmetry

Statistics-aware embedding

Outguess 0.2 uses unused capacity dummy changes are used to even out the statistics

Matrix coding/wet paper coding

F5 minimises distortion using coding theory fewer bit-flips per message bit techniques from coding for restricted memory

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 48 / 62

slide-78
SLIDE 78

Steganography in JPEG F3 – 4 – 5

Bitflips in F3

Avoid pairs of values. Always decrease absolute value when changing Zeros are ignored. Zero created: reembed in new coefficient +1 +2 +3 +4 +5 −1 −2 −3 −4 −5 Cover +1 +2 +3 +4 +5 −1 −2 −3 −4 −5 Stego

  • Dr Hans Georg Schaathun

The DCT domain and JPEG Spring 2008 49 / 62

slide-79
SLIDE 79

Steganography in JPEG F3 – 4 – 5

The problem of F3

Reembedding Zero created by message zeroes Zeros are reembedded Extra zeros embedded ⇒ overweight of even coefficients. Typical JPEG. Typical F3.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 50 / 62

slide-80
SLIDE 80

Steganography in JPEG F3 – 4 – 5

F4 : evening out even values

Swap interpretation for negative coefficients +1 causes reembedding of zero

  • 1 causes reembedding of one

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

  • +1 +2 +3 +4 +5

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

  • Dr Hans Georg Schaathun

The DCT domain and JPEG Spring 2008 51 / 62

slide-81
SLIDE 81

Steganography in JPEG F3 – 4 – 5

F4 histogramme

What does the histogramme look like after F4 embedding? Coefficients have generally been decreased. Effect similar to reduced quality factor. F4 (and F5) can be broken Suggested Reading Jessica Fridrich, Miroslav Goljan, Dorin Hogea: ‘Steganalysis of JPEG Images: Breaking the F5 Algorithm’. http: //www.ws.binghamton.edu/fridrich/Research/F5.pdf

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 52 / 62

slide-82
SLIDE 82

Steganography in JPEG F3 – 4 – 5

F4 histogramme

What does the histogramme look like after F4 embedding? Coefficients have generally been decreased. Effect similar to reduced quality factor. F4 (and F5) can be broken Suggested Reading Jessica Fridrich, Miroslav Goljan, Dorin Hogea: ‘Steganalysis of JPEG Images: Breaking the F5 Algorithm’. http: //www.ws.binghamton.edu/fridrich/Research/F5.pdf

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 52 / 62

slide-83
SLIDE 83

Steganography in JPEG F3 – 4 – 5

F4 histogramme

What does the histogramme look like after F4 embedding? Coefficients have generally been decreased. Effect similar to reduced quality factor. F4 (and F5) can be broken Suggested Reading Jessica Fridrich, Miroslav Goljan, Dorin Hogea: ‘Steganalysis of JPEG Images: Breaking the F5 Algorithm’. http: //www.ws.binghamton.edu/fridrich/Research/F5.pdf

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 52 / 62

slide-84
SLIDE 84

Steganography in JPEG F3 – 4 – 5

F4 histogramme

What does the histogramme look like after F4 embedding? Coefficients have generally been decreased. Effect similar to reduced quality factor. F4 (and F5) can be broken Suggested Reading Jessica Fridrich, Miroslav Goljan, Dorin Hogea: ‘Steganalysis of JPEG Images: Breaking the F5 Algorithm’. http: //www.ws.binghamton.edu/fridrich/Research/F5.pdf

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 52 / 62

slide-85
SLIDE 85

Steganography in JPEG F3 – 4 – 5

F5 : Matrix embedding

Embedding as F4 . . . extra Matrix Coding layer

n coefficients represent k bits

Flip fewer k/2 bits on average.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 53 / 62

slide-86
SLIDE 86

Steganography in JPEG F3 – 4 – 5

Example

Matrix embedding

n = 3 coefficients (LSB): x1, x2, x3 k = 2 message bits: m1, m2 Decoder

ˆ m1 = x1 ⊕ x3 ˆ m2 = x2 ⊕ x3

Encoder

m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : no change m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x1 m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x2 m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x3

Averange number of changes: 3/4 per two bits

Compare to F4 (and others): 1 per two bits

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 54 / 62

slide-87
SLIDE 87

Steganography in JPEG F3 – 4 – 5

Example

Matrix embedding

n = 3 coefficients (LSB): x1, x2, x3 k = 2 message bits: m1, m2 Decoder

ˆ m1 = x1 ⊕ x3 ˆ m2 = x2 ⊕ x3

Encoder

m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : no change m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x1 m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x2 m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x3

Averange number of changes: 3/4 per two bits

Compare to F4 (and others): 1 per two bits

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 54 / 62

slide-88
SLIDE 88

Steganography in JPEG F3 – 4 – 5

Example

Matrix embedding

n = 3 coefficients (LSB): x1, x2, x3 k = 2 message bits: m1, m2 Decoder

ˆ m1 = x1 ⊕ x3 ˆ m2 = x2 ⊕ x3

Encoder

m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : no change m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x1 m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x2 m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x3

Averange number of changes: 3/4 per two bits

Compare to F4 (and others): 1 per two bits

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 54 / 62

slide-89
SLIDE 89

Steganography in JPEG F3 – 4 – 5

Example

Matrix embedding

n = 3 coefficients (LSB): x1, x2, x3 k = 2 message bits: m1, m2 Decoder

ˆ m1 = x1 ⊕ x3 ˆ m2 = x2 ⊕ x3

Encoder

m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : no change m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x1 m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x2 m1 = x1 ⊕ x3 and m2 = x2 ⊕ x3 : change x3

Averange number of changes: 3/4 per two bits

Compare to F4 (and others): 1 per two bits

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 54 / 62

slide-90
SLIDE 90

Steganography in JPEG F3 – 4 – 5

Matrix coding

Longer codewords (larger n) saves more e.g. k = 9; n = 511: change ≈ 1/9 pixels per message bit Matrix embedding based on coding theory We will return to coding theory and matrix coding later

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 55 / 62

slide-91
SLIDE 91

Steganography in JPEG F3 – 4 – 5

Statistics-aware embedding

Outguess 0.2

Modify unused coefficients

Mimick original statistic Tune for every statistic used in known analysis techniques

OutGuess 0.2

Embedding as OutGuess 0.1. Modify selected unused coefficients to correct histogram

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 56 / 62

slide-92
SLIDE 92

Steganography in JPEG F3 – 4 – 5

Statistics-aware embedding

Outguess 0.2

Modify unused coefficients

Mimick original statistic Tune for every statistic used in known analysis techniques

OutGuess 0.2

Embedding as OutGuess 0.1. Modify selected unused coefficients to correct histogram

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 56 / 62

slide-93
SLIDE 93

Steganography in JPEG F3 – 4 – 5

Statistics-aware embedding

Outguess 0.2

Modify unused coefficients

Mimick original statistic Tune for every statistic used in known analysis techniques

OutGuess 0.2

Embedding as OutGuess 0.1. Modify selected unused coefficients to correct histogram

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 56 / 62

slide-94
SLIDE 94

Steganography in JPEG F3 – 4 – 5

Statistics-aware embedding

Outguess 0.2

Modify unused coefficients

Mimick original statistic Tune for every statistic used in known analysis techniques

OutGuess 0.2

Embedding as OutGuess 0.1. Modify selected unused coefficients to correct histogram

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 56 / 62

slide-95
SLIDE 95

Steganography in JPEG F3 – 4 – 5

Statistics-aware embedding

Outguess 0.2

Modify unused coefficients

Mimick original statistic Tune for every statistic used in known analysis techniques

OutGuess 0.2

Embedding as OutGuess 0.1. Modify selected unused coefficients to correct histogram

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 56 / 62

slide-96
SLIDE 96

Steganography in JPEG F3 – 4 – 5

Statistics-aware embedding

Outguess 0.2

Modify unused coefficients

Mimick original statistic Tune for every statistic used in known analysis techniques

OutGuess 0.2

Embedding as OutGuess 0.1. Modify selected unused coefficients to correct histogram

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 56 / 62

slide-97
SLIDE 97

Steganography in JPEG F3 – 4 – 5

Combinations

Statistics-aware Matrix Coding

More advanced code allows a choice of coefficient to modify Use choice to mimick original statistical distribution

Known as Wet Paper Codes

Based on Dirty Paper Codes by Costa 1983.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 57 / 62

slide-98
SLIDE 98

The JPEG toolbox

Outline

1

Overview

2

Image Representation Alternatives to RGB The blockwise DCT domain

3

Compression Downsampling Quantisation Source Coding

4

Steganography in JPEG Into the compressed domain JSteg and OutGuess 0.1 Steganalysis F3 – 4 – 5

5

The JPEG toolbox

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 58 / 62

slide-99
SLIDE 99

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 2008 59 / 62

slide-100
SLIDE 100

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 2008 60 / 62

slide-101
SLIDE 101

The JPEG toolbox

w/o the toolbox

Load/Save workspace

jpeg_read and jpeg_write are compiled functions,

Non-trivial to install

In the exercises, can load presaved 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 2008 61 / 62

slide-102
SLIDE 102

The JPEG toolbox

Other toolbox functions

I recommend that you use the other toolbox functions

bdct, ibdct, quantize, dequantize

These are m-files, which can be copied into current directory. Alternatively, use matlab on tweek which has the toolbox.

Dr Hans Georg Schaathun The DCT domain and JPEG Spring 2008 62 / 62