ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

VŨ THỊ TÂM

TÌM HIỂU XÂY DỰNG THUẬT TOÁN GIẤU

TIN MẬT VÀ ỨNG DỤNG

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

THÁI NGUYÊN – 2018

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

VŨ THỊ TÂM

TÌM HIỂU XÂY DỰNG THUẬT TOÁN GIẤU

TIN MẬT VÀ ỨNG DỤNG

Chuyên ngành: Khoa học máy tính

Mã số: 8 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học: TS HỒ VĂN CANH

THÁI NGUYÊN - 2018

i

LỜI CAM ĐOAN

Trong quá trình làm luận văn tôi hoàn toàn sử dụng những kiến thức đã

tổng hợp được từ các nguồn tài liệu có xuất xứ rõ ràng và được trích dẫn hợp

pháp.

Tôi xin chịu trách nhiệm về những lời nói trên và nhận mọi hình thức

kỷ luật theo quy định nếu như làm sai.

Thái Nguyên, tháng 06 năm 2018

Vũ Thị Tâm

ii

LỜI CÁM ƠN

Để hoàn thành luận văn “Tìm hiểu xây dựng thuật toán giấu tin mật và

ứng dụng” em đã nhận được sự hướng dẫn và giúp đỡ nhiệt tình của nhiều

tập thể và cá nhân.

Trước hết, em xin bày tỏ lòng biết ơn chân thành đến ban lãnh đạo

cùng quý thầy cô trong khoa Công nghệ thông tin – Trường Đại học Công

nghệ và truyền thông, Đại học Thái Nguyên đã tận tình dạy dỗ, truyền đạt

kiến thức, kinh nghiệm và tạo điều kiện thuận lợi cho em trong suốt thời gian

học tập và thực hiện đề tài.

Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến thầy hướng dẫn

TS. Hồ Văn Canh, người đã gợi cho em những ý tưởng về đề tài, đã tận tình

hướng dẫn và giúp đỡ để đề tài được thực hiện và hoàn thành.

Xin trân trọng gửi đến gia đình, bạn bè và người thân những tình cảm

tốt đẹp nhất đã giúp đỡ động viên trong suốt khóa học và hoàn thành luận

văn.

Thái Nguyên, tháng 06 năm 2018

Học viên

Vũ Thị Tâm

iii

DANH MỤC HÌNH

Hình 2. 1: Hai lĩnh vực chính của kỹ thuật giấu thông tin ............................. 19

Hình 2. 2: Lược đồ chung cho quá trình giấu tin ........................................... 20

Hình 2. 3: Lược đồ chung cho quá trình giải mã ........................................... 21

Hình 2. 4: Phân loại các kỹ thuật giấu tin ...................................................... 24

Hình 2 .5: Chi tiết khối bytes tiêu đề tập tin BMP. ......................................... 28

Hình 2. 6: Chi tiết khối bytes thông tin tập tin BMP ...................................... 29

Hình 2. 7: Sơ đồ giấu tín SES ......................................................................... 36

Hình 2.8: Minh họa giấu bit b = 0 vào khối nhị phân B ................................ 39

Hình 2. 9: Minh họa giấu dãy bit M = 110 vào 4 khối ảnh nhị phân ............. 44

Hình 3. 1: bảng mã 26 chữ cái latinh ............................................................ 47

Hình 3. 2: Giao diện chính của chương trình ................................................. 62

Hình 3. 3: Giao diện giấu tin .......................................................................... 62

Hình 3. 4: Giao diện giấu file dữ liệu ............................................................. 63

Hình 3. 5: Giao diện tách tin .......................................................................... 63

iv

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

1 BMP Basic Metabolic Panel - Ảnh bipmap

2 GIF Graphics Interchange Format - Ảnh có định dạng GIF

3 JPEG Joint Photographic Experts Group - Ảnh nén JPEG

4 LSB Least Significant Bit - Bit có ý nghĩa thấp nhất

5 PNG Portable Network Graphics - Ảnh nén PNG

6 PoV Pairs of Values - cặp giá trị điểm ảnh chẵn/lẻ

7 HVS Human Vision System - Hệ thống thị giác của con người

8 RGB Red – Green – Blue

v

MỤC LỤC

LỜI CAM ĐOAN .............................................................................................. i

LỜI CÁM ƠN ................................................................................................... ii

DANH MỤC HÌNH ......................................................................................... iii

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT .................................. iv

MỤC LỤC ......................................................................................................... v

MỞ ĐẦU ........................................................................................................... 1

1. Đặt vấn đề .................................................................................................. 1

2. Đối tượng nghiên cứu ................................................................................ 1

3. Bố cục của luận văn ................................................................................... 1

CHƯƠNG 1: MỘT SỐ KIẾN THỨC CƠ SỞ .................................................. 3

1.1 Đổi cơ số ................................................................................................. 3

1.2 Độ phức tạp của thuật toán ..................................................................... 5

1.3 Phép chia hết và thuật toán Euclidean ..................................................... 6

1.4 Phần tử nghịch đảo .................................................................................. 8

1.4.1 Định nghĩa ........................................................................................ 8

1.4.2 Thuật toán tìm nghịch đảo của a-1 mod m ........................................ 9

1.5 Đa thức nguyên thủy ............................................................................... 9

1.5.1.Bậc của một phần tử ......................................................................... 9

1.5.2 Hàm – Euler ............................................................................... 10

1.5.3 Phần tử nguyên thủy ....................................................................... 11

1.5.4 Đa thức nguyên thủy ....................................................................... 12

1.5.5 Mã Hamming ( The Hamming Codes). ......................................... 14

vi

1.5.6 Mật mã vòng tuyến tính. ................................................................ 15

1.5.7 Đa thức nguyên thủy trong trường hợp GF(2) có cấp từ 2 đến cấp 7

.................................................................................................................. 16

CHƯƠNG 2: TÌM HIỂU TỔNG QUAN VỀ GIẤU TIN VÀ MỘT SỐ

THUẬT TOÁN GIẤU TIN MẬT(STEGANOGRAPHY) ............................ 18

2.1 Tổng quan về giấu tin và phân loại ..................................................... 18

2.1.1 Định nghĩa ...................................................................................... 18

2.1.2 Mục đích của giấu tin mật. ............................................................. 19

2.1.3 Mô hình kỹ thuật giấu thông tin cơ bản. ......................................... 20

2.1.4. Các đối tượng dùng để giấu tin. .................................................... 21

2.2 Giấu tin trong ảnh. ................................................................................. 24

2.3 Tổng quan ảnh BITMAP (BMP). .......................................................... 26

2.3.1 Giới thiệu ảnh BITMAP (BMP). .................................................... 26

2.3.2 Cấu trúc ảnh BITMAP (.BMP). ..................................................... 27

2.4. Một số thuật toán giấu tin trong ảnh và chất lượng ............................ 32

2.4. 1 Kỹ thuật giấu tin LSB. ................................................................... 32

2.4.2 Kỹ thuật giấu tin SES. .................................................................... 34

2.4.3 Kỹ thuật giấu tin theo khối bit ........................................................ 38

2.4.4 Thuật toán Wu-Lee ........................................................................ 41

CHƯƠNG 3: TÌM HIỂU XÂY DỰNG MỘT THUẬT TOÁN GIẤU TIN

MẬT TRÊN ẢNH KỸ THUẬT SỐ .............................................................. 46

3.1 Xây dựng ma trận 4 bit. ......................................................................... 46

3.1.1 Chọn đa thức nguyên thủy trong trường GF(2). ............................. 46

vii

3.1.2 Xây dựng không gian các nghiệm của p(x). ................................... 46

3.1.3 Lập bảng mã 26 chữ cái latinh ....................................................... 46

3.2 Xây dựng thuật toán nhúng ................................................................... 48

3.2.1 Xây dựng ma trận sinh G ................................................................ 48

3.2.2 Đổi thông điệp m = m1…..mn sang dãy nhị phân theo bảng A .. 48

3. 3 Trích chọn (extraction) ......................................................................... 50

3.4 Đánh giá độ an toàn của hệ thống ......................................................... 53

3.5 So sánh độ an toàn của 2 hệ thống ....................................................... 57

3.6 Nhận xét đánh giá ................................................................................... 59

3.7. Chương trình thử nghiệm ..................................................................... 60

3.7.1 Môi trường cài đặt .......................................................................... 60

3.7.2 Mô hình hệ thống ............................................................................ 60

KẾT LUẬN ..................................................................................................... 63

TÀI LIỆU THAM KHẢO ............................................................................... 66

1

MỞ ĐẦU

1. Đặt vấn đề

Hiện nay có nhiều thuật toán giấu tin mật và thủy vân đã được

công bố [1]. Trong đó cũng có nhiều thuật toán giấu tin mật đã bị phát hiện

bằng các kỹ thuật thống kê toán học. Vì vậy một vấn đề đặt ra là: Đánh giá

mức độ an toàn của một thuật toán giấu tin như thế nào? Đặc biệt là hệ thống

giấu tin mật phục vụ an ninh quốc phòng. Ta biết rằng, lượng thông tin được

giấu vào trong một ảnh là rất quan trọng nhưng phải đảm bảo được mức độ an

toàn của hệ thống giấu. Đề tài tập trung tìm hiểu và xây dựng một thật toán

giấu tin mật vào ảnh kỹ thuật số sao cho lượng thông tin giấu được nhiều và

đồng thời có mức độ an toàn cao, tức là ảnh có chứa tin mật và ảnh gốc khác

nhau có thể chấp nhận được để ứng dụng được trong nhiều lĩnh vực khác

nhau. Đó là mục đích và ý nghĩa của đề tài luận văn: Tìm hiểu xây dựng một

thuật toán giấu tin mật và ứng dụng. Trong phạm vi đề tài luận văn có giới

thiệu một hệ thống steganography mới và đồng thời đưa ra so sánh về mức độ

an toàn giữa hệ thống được đề xuất và hệ thống đã được công bố.

2. Đối tượng nghiên cứu

Đề tài tập trung nghiên cứu các đối tượng sau đây:

- Tập trung tìm hiểu, đánh giá ưu nhược điểm của một số thuật toán

giấu tin mật trong ảnh kỹ thuật số.

- Xây dựng thuật toán giấu tin mật mới.

3. Bố cục của luận văn

Nội dung của luận văn gồm có: Phần mở đầu, ba chương chính, kết

luận, mục lục và tài liệu tham khảo. Nội dung cơ bản của luận văn được trình

bày như sau:

2

Phần mở đầu: Nêu lý do chọn đề tài, đối tượng nghiên cứu và bố

cục của luận văn

Chương 1: MỘT SỐ KIẾN THỨC CƠ SỞ

Chương này sẽ trình bày một số kiến thức toán học bổ trợ

Chương 2: TỔNG QUA VỀ GIẤU TIN VÀ MỘT SỐ THUẬT TOÁN

GIẤU TIN MẬT TRONG ẢNH KỸ THUẬT SỐ

Chương này sẽ phân tích, đánh giá một số thuật toán giấu tin mật đã

được công bố:Kỹ thuật LSB, Kỹ thuật SES, Kỹ thuật giấu tin theo khối bit,

thuật toán Wu-Lee.

Chương 3: TÌM HIỂU XÂY DỰNG MỘT SỐ THUẬT TOÁN GIẤU

TIN MẬT

Chương này sẽ trình bày thuật toán đề xuất và đánh giá độ an toàn của

từng thuật toán. Cài đặt thử nghiệm việc giấu tin dựa theo thuật toán đề xuất.

3

CHƯƠNG 1: MỘT SỐ KIẾN THỨC CƠ SỞ

1.1 Đổi cơ số

Số mà chúng ta sử dụng hàng ngày (0, 1, 2, 3, …, 7, 8, 9 ) là các số được

biểu diễn theo cơ số 10.

Ví dụ 1:

Tóm lại, một số n tổng quát viết theo cơ số 10 bao giờ cũng có thể được

biểu diễn một cách duy nhất dưới dạng:

trong đó, , nói cách khác ai є{0,1,2,…,9}

với i = 0,1,2,..,k-1; với ak ≠ 0.

Ứng với mỗi số n, biểu diễn ở (1) là duy nhất. Do đó, thay vì viết số n, ta

viết n dưới dạng: , con số 10 biểu thị cơ số. Trong

thực tế ta cần số n biểu thị dưới dạng có số b tùy ý như sau:

hay viết ngắn gọn là:

, tức là :

Nếu b = 2, ta có số n biểu diễn dưới dạng cơ số 2. Khi đó:

4

Trường hợp thì thay là những con số mà người ta có

thể dùng các chữ cái Latinh.

Ví dụ 2:

Ví dụ 3: Khi b = 26, người ta sử dụng các chữ cái từ A đến Z thay cho

0,1,..,25.

Ví dụ 4: Hãy đổi các số sang cơ số 26:

Ta có :

hay

Ví dụ 5 : Hãy đổi 106 sang cơ số lần lượt là 2, 7, và 26.

Ta có:

.

Để chứng minh rằng: các biểu diễn trên là duy nhất ứng với mỗi cơ số cụ thể,

ta có mệnh đề sau đây:

Mệnh đề: Xét không gian các đa thức V, cấp n tùy ý trên trường vô

hướng K nào đó. Ta xét một tập hợp S = { 1, x, x2, x3,..., xn } trong V . Khi

đó, S là một cơ sở trong V.

Chứng minh: Ta chỉ cần chứng minh rằng các vector trong S là độc lập

tuyến tính. Muốn vậy, cho α0, α1, α2,..., αn và xét tổ hợp tuyến tính :

α0 + α1x +... + αn = 0 (1)

5

Ta cần chứng minh rằng khi đó αi = 0, đối với mọi i = 0,1, 2,...,n.

Thật vậy, giả sử, n= 1, khi đó, lấy đạo hàm 2 vế của (1), ta có α1 = 0 và

do đó, α0 = 0. Giả thiết đẳng thức (1) đúng cho n = k -1, ta sẽ chứng minh

rằng đẳng thức (1) đúng cho cả n = k. Bằng cách lấy đạo hàm của đẳng thức

(1) n-lần , ta suy ra αn = 0. Nhưng theo quy nạp ta đã có α0, α1,..., αn-1 = 0,

vậy mệnh đề được chứng minh.

1.2 Độ phức tạp của thuật toán

Định nghĩa 1: Cho và là hai hàm nhiều

biến số xác định trong miền gồm tập hợp các bộ k số nguyên dương. Giả sử

có tồn tại hai hằng số B và C thỏa mãn

thì ta nói rằng f bị

chặn bởi g và viết là

Ví dụ 6:

a. Cho f(n) là một đa thức cấp d mà các hệ số của nó dương. Khi đó ta

có : .

b. Cho ԑ là một số dương bé tùy ý ( no matter how small). Khi đó, chúng

ta có thể chứng minh được rằng:

c. Ký hiệu f(n) là số k thành phần (digits) nhị phân trong n ( ví dụ n =

10110 thì => f (n) = 5 ). Khi đó có thể dễ dàng thấy rằng f(n) = O(log n).

Chú ý nếu viết f(n) = O(1) thì có nghĩa là f(n) bị chặn bởi một hằng số nào

đó.

Bây giờ, chúng ta trở lại bài toán ước lượng thời gian của chúng ta đối với

phép nhân một số nguyên k_bit với một số nguyên khác l_bit.

Ta có: Thời gian (k_bit x l_bit) = O(k.l).

6

Một cách tổng quát có:

Thời gian(nxm) = O((log n)(log m)).

Ví dụ 7: Hãy ước lượng thời gian cần thiết để đổi một số nguyên k_bit

thành cơ số 10.

Giải: Cho n là một số nguyên được viết dưới dạng cơ số nhị phân k_bit.

Thuật tóan đổi như sau: Chia số n cho 10 = (1010)2 . Còn lại bằng một trong

các số nguyên 0, 1, 10, 11, 100, 101, 110, 111, 1000 hoặc 1001.

Thời gian chuyển số nhị phân n k_bit về một số nguyên cơ số 10 là: O(

log2n).

Định nghĩa 2: Một thuật toán để thực hiện giải trên máy tính các số

nguyên n1, n2, …, nr có k1, k2, …, kr bít tương ứng được gọi là thuật toán thời

gian đa thức nếu có tồn tại các số nguyên d1, d2, …, dr sao cho số các toán tử

bít đòi hỏi để biểu diễn thuật toán là

1.3 Phép chia hết và thuật toán Euclidean

Cho trước hai số nguyên a và b và một số nguyên dương ( m ≥ 1). Ta

nói rằng a chia hết cho b theo modulo m nếu a – b = k.m với k = 0, 1, 2 , ... và

ta viết a ≡ b mod m.

Giả sử p là một số nguyên tố, α là một số nguyên không âm. Khi đó,

chúng ta ký hiệu pα|| b để chỉ ra rằng pα là lũy thừa cao nhất α của p mà b chia

hết cho pα, tức là b chia hết cho pα và b không chia hết cho pα+1. Và trong

trường hợp đó, ta nói rằng pα là ước đúng của số b.

Nếu ab chia hết cho số nguyên tố p khi đó, hoặc a chia hết cho b (ta ký

hiệu p|a) hoặc b chia hết cho p( p|b).

7

Nếu m|a và n|a nếu m,n là số nguyên tố sao cho UCLN(m, n) = 1. Khi

đó m.n|a.

Chú ý! Ta dùng kí hiệu (a, b) để chỉ ước chung lớn nhất của a và b. Tức

là thay vì viết UCLN(a, b) ta viết (a, b).

 Thuật toán Euclidean và thuật toán Euclidean mở rộng.

Trước hết, ta trình bày bổ đề sau:

Bổ đề 1: Cho m,n là những số nguyên, ta giả sử m ≥ n. Ta chia m cho n và

nhân được kết quả:

khi đó

Bổ đề 2: (m, 0) = m với mọi m nguyên.

Từ bổ đề nêu trên, ta có thuật toán tìm (m, n) như sau:

Input: Cho trước m và n ( già sử m ≥ n) là hai số nguyên.

Output: Tìm (m, n).

Thuật toán:

Bước 1: Nếu n = 0, m là đáp số!

Bước 2: và quay lại bước 1.

Mệnh đề 1: Số các phép toán trong thuật toán Euclide không vượt quá

2log2n.

Mệnh đề 2: Nếu (m, n) = d thì có tồn tại hai số nguyên x, y sao cho:

mx + ny = d.

8

Từ mệnh đề 2, ta có thuật toán Euclide mở rộng tìm 3 số x, y, d sao cho:

mx + ny = d sau đây:

Input: m, n ( giá trị m ≥ n)

Output: x, y, d: mx + ny = d.

Thuật toán:

Khởi tạo: Cho ( a1, a2, a3 ), ( b1, b2, b3), ( c1, c2, c3 ) là các vector.

Bước 1: ( a1, a2, a3 ) ← ( 0, 1, m ); ( b1, b2, b3) ← ( 0, 1, n );

Bước 2: Nếu b3 = 0 thì dừng và ( a1, a2, a3 ) là đáp số bài toán.

Bước 3: Đặt ; ( c1, c2, c3 ) ← ( a1, a2, a3 ) – q.( b1, b2, b3);

( a1, a2, a3 ) = ( b1, b2, b3); ( c1, c2, c3 ) = ( b1, b2, b3); và quay lại bước 2.

Đáp số: a1 = x, a2 = y, a3 = d;

1.4 Phần tử nghịch đảo

1.4.1 Định nghĩa

Cho m là một số nguyên dương và a là một số nguyên. Nếu tồn tại một

số nguyên b sao cho ab ≡ 1 mod n thì b được gọi là phần tử nghịch đảo của a

theo modulo m.

Ta thấy rằng, nếu b là phần tử nghịch đảo của a theo modulo m thì mọi

số nguyên có dạng b + km cũng là nghịch đảo của a, trong đó k = 0, ±1, ±2, ...

Tuy nhiên trong các số có dạng b + km, có tồn tại duy nhất một số nguyên

dương nằm giữa 0 và m và số đó được kí hiệu là a-1 mod m.

9

1.4.2 Thuật toán tìm nghịch đảo của a-1 mod m

Cho a, m > 0, ta kí hiệu d = ( a, m).

Khẳng định 1: Điều kiện cần và đủ để tồn tại nghịch đảo a-1 của số a là

d =1.

Chứng minh: Thật vậy,

Giả sử d > 1, khi đó ta có: a = a1.d, m = m1.d với a1, m1 nguyên

(dương ). Nếu tồn tại a-1 thì:

phải là số nguyên. Nhưng do Vì a1, a-1, k, m1 nguyên nên

d> 1 nên hệ thức (1) không thể xảy ra. Nó chỉ xảy ra khi và chỉ khi d = 1. Đó

là điều ta cần chứng minh.

Chú ý! Sử dụng thuật toán Euclide mở rộng ta có thể tìm được a-1, nếu

d = 1 và khi đó giá trị a-1 nằm trong ô a2 của thuật toán.

1.5 Đa thức nguyên thủy

Trước khi trình bày khái niệm đa thức nguyên thủy, chúng ta sẽ giới thiệu

qua về phần tử nguyên thủy.

1.5.1 Bậc của một phần tử

Định nghĩa 1: Cho a và m là 2 số nguyên dương tùy ý. Khi đó, nếu tồn tại

một số nguyên dương bé nhất mà thỏa mãn điều kiện:

thì số h được gọi là bậc của phần tử a theo modulo m và viết là:

10

Chú ý! Không phải với mọi cặp số nguyên dương a, m đều tồn tại số h

thỏa mãn điều kiện (2). Cụ thể ta có mấy khẳng định sau đây:

Khẳng định 1: Cho hai số nguyên dương a và m. Để tồn tại số guyên

dương h có tính chất , điều kiện cần và đủ là (a, m) = 1 { (a, m)

là kí hiệu ước số chung lớn nhất của a và m}.

Chứng minh: Thật vậy, giả sử trái lại, (a, m) = d ≥ 2 và có tồn tại h

nguyên dương mà ah ≡ 1 mod m. Nhưng do giả thiết phản chứng, ta có

a = d.a1 , m = d.m1 với a1, m1 nguyên.

hay tương đương : Khi đó

( 3 )

phải là số nguyên Do h, d, a1, k, m1 nguyên nên biểu thức

(có thể âm ). Do đó đẳng thức (3) là vô lí, vì d ≥ 2. Vậy khẳng định được

chứng minh.

*.

Khẳng định 2: Giả sử h = ordm(a) . Khi đó:

+ a, a2, ..., ah là những số khác nhau thuộc Zm

+ Nếu ak ≡ 1 mod m thì h phải là ước số của k, đặc biệt h là ước của hàm

Φ(m).

1.5.2 Hàm – Euler

Định nghĩa 2: Ta kí hiệu với m là số

nguyên dương nào đó. Khi đó hàm (m) – Euler được định nghĩa là:

(Lực lượng của tập hợp ). Như vậy hàm (m) – Euler

chính là số phần tử mà nguyên tố với m ( trừ x = 0).

11

Các tính chất của hàm (m).

- Tính chất 1: (1) = 0.

- Tính chất 2: ) với p là ước số nguyên tố của m.

- Tính chất 3: Nếu với p1, p2, ..., pk là các số nuyên tố

khác nhau còn e1, e2, ..., ek ≥ 0 là các số nguyên nào đó. Khi đó:

.

- Tính chất 4: Nếu m, n là những số tự nhiên sao cho (m, n) = 1, khi đó,

ϕ(m.n) = ϕ(m).ϕ(n) , đặc biệt nếu m là số nguyên tố m = p thì :

ϕ(m) = ϕ(p) = p– 1.

- Tính chất 5: Nếu m = p.q trong đó p, q là 2 số nguyên tố phân biệt thì :

ϕ(m)= ϕ(p.q) = (p – 1)(q – 1).

- Tính chất 6: Nếu n = pk với p là số nguyên tố còn k là số nguyên

dương, thế thì: ϕ(n) = pk-1(p – 1).

- Tính chất 7: Với mọi n ≥ 5, ta có:

- Tính chất 8 ( Định lý Euler) : Nếu (a, m) = 1 thì aϕ(m) ≡ 1 mod m với a,

m nguyên dương.

- Tính chất 9: Cho n = p.q , trong đó, p,q là hai số nguyên tố phân biệt.

Khi đó: .

1.5.3 Phần tử nguyên thủy

Định nghĩa 3: Cho g là một số nguyên dương và m là một số nguyên

(m≥ 2) sao cho (g, m) = 1. Nếu ϕ(m) là bậc của g theo modulo m thì g được

gọi là phần tử nguyên thủy trong .

Một số định lý quan trọng:

12

- Định lý 1: Xét vành , m ≥ 2. Khi đó, trong có ít nhất một phần

tử nguyên thủy khi và chỉ khi m = 2, 4, pk hoặc m = 2qk. Trong đó p là số

nguyên tố và q là số nguyên tố lẻ và k ≥ 1 là một số nguyên.

- Định lý 2: Cho g và p, trong đó p là số nguyên tố. Khi đó, g là một

phần tử nguyên thủy trong nếu và chỉ nếu đối với mọi q

là ước số nguyên tố của p – 1.

Một cách tổng quát, ta có một số định lý sau:

- Định lý 3: Cho với p1, p2, ..., pk là những số

nguyên tố phân biệt, còn ei ≥ 1 là những số nguyên, i = 1, 2, ..., k. Khi đó

là một phần tử nguyên thủy khi và chỉ khi với mọi i

= 1, 2, ..., k.

- Định lý 4: Cho p là một số nguyên tố, α là một phần tử nguyên thủy

trong . Khi đó mọi phần tử đều tồn tại một j ( 0 ≤ j ≤ p – 2) sao cho

, và β là phần tử nguyên thủy khi và chỉ khi (j, p – 1) = 1.

- Định lý 5: Số các phần tử nguyên thủy có thể có trong ( với m thỏa

mãn điều kiện của Định lý 1 của mục này) là ϕ(ϕ(m)). Trường hợp đặc biệt,

nếu m = p là số nguyên tố thì . Khi đó, số

các phần tử nguyên tử nguyên thủy trong sẽ là ϕ(p – 1).

Ví dụ: Cho p = 7. Thế thì số các phần tử nguyên thủy trong là:

1.5.4 Đa thức nguyên thủy

Trong phạm vi tìm hiểu này, ta chỉ xét các đa thức trong trường GF(2).

13

Định nghĩa 1: Đa thức P(x) cấp m ≥ 1 trong trường GF(2) được gọi là

đa thức bất khả quy nếu P(x) không thể phân tích thành tích các đa thức có

bậc nhỏ hơn m trong trường GF(2).

Định nghĩa 2: Một đa thức bất khả quy P(x) có cấp m trong trường

GF(2) được gọi là đa thức nguyên thủy( primitive polynomid) nếu số nguyên

dương nhỏ nhất n sao cho xn – 1 chia hết cho P(x) là n = 2m – 1.

Ví dụ: P(x) = x3 + x + 1 là đa thức nguyên thủy trong trường GF(2),

hoặc P(x) ϵ GF(2)[x], vì n = 7 = 23 – 1 là số nguyên dương nhỏ nhất mà x7 – 1

chia hết cho x3+x + 1.

x7 – 1 = (x3 + x + 1)(x4 + x2 + x + 1) và thì xm – 1 không chia hết

cho P(x) = x3 + x + 1.

Định lý 1: Có đúng đa thức nguyên thủy cấp n trong trường

GF(2).

Định lý 2: Mọi nghiệm của đa thức nguyên thủy cấp m: P(x) ϵ GF(2)[x]

đều có cấp 2m – 1.

Chứng minh: Thật vậy, giả sử α là một nghiệm tùy ý của đa thức P(x) ϵ

GF(2)[x]. Từ đó suy ra rằng α cũng là nghiệm của biểu thức ,

vì ( Theo định nghĩa 2 ở trên) do đó suy ra ord(α) | 2m – 1.

Nếu 2m – 1 không chia hết cho ord(α), khi đó 2m – 1 = k[ord(α)] + r với 0

< r < ord(α)

Suy ra: . Điều này mâu thuẫn với định

nghĩa. Vậy, ta suy ra rằng mọi nghiệm của =0 đều là nghiệm

của hay . Vì tất cả nghiệm của đa thức

14

bất khả quy có cùng cấp nên suy ra chia hết cho P(x). Cuối cùng

ord(α) = 2m – 1( theo định nghĩa). Đó là điều cần chứng minh.

1.5.5 Mã Hamming ( The Hamming Codes).

Bộ mã tuyến tính C trong trường hợp GF(2) được gọi là bộ mã Hamming.

Các tham số đặc trưng đối với bộ mã Hamming( nhị phân) là (m > 2):

- Độ dài từ mã là: n = 2m – 1.

- Số các bit mang thông tin là: k = 2m – m – 1.

- Số các bit sửa sai là: n – k = m.

- Khả năng sửa sai là: t = 1.

- Cho một số bộ mã Hamming C = (n, k), k < n. Bộ mã này được đặc

trưng bởi ma trận kiểm tra chẵn lẻ H và ma trận sinh G. Đối với bộ mã

Hamming có độ dài từ mã n = 2m – 1 việc xây dựng ma trận kiểm tra chẵn lẻ

rất đơn giản.

Đó là ma trận H = (hij)n – k, n hijϵ {0, 1}, i = 1, 2, ..., n – k; j = 1, 2, ..., n.

Trong đó các cột của H là các vector khác không nhị phân m thành phần. Còn

ma trận sinh G = (gij)k.n, gijϵ {0, 1}, i = 1, 2, ..., k; j = 1, 2, ..., n. Quan hệ giữa

H và G được thể hiện như sau

Ma trận kiểm tra H có dạng như sau:

15

và ma trận sinh:

1.5.6 Mật mã vòng tuyến tính.

Định nghĩa: Một bộ mã tuyến tính C = (n, k) được gọi là mật mã vòng

tuyến tính nếu với mọi từ mã thì

cũng thuộc C.

Như vậy cấu trúc của mật mã vòng dựa trên cấu trúc của đa thức:

sẽ tương ứng 1- 1 với một từ mã

. Nếu C = (n, k) là một bô mã trên GF(q). Khi đó tập

các từ mã trên C tạo thành một không gian vector con K_chiều trong không

gian vector n_chiều. Điều đó chứng tỏ rằng các đa thức ứng với các từ mã của

C cũng tạo nên một không gian vector con trong GF(q)[x]/(xn – 1). Như vậy,

nếu từ mã c’ là kết quả của sự dịch chuyển vòng sang phải một nhịp của từ

mã cϵC thì: c’(x) = x.c(x) mod(xn – 1) ϵ C.

Thật vậy, ta có:

Định lý 1: Cho bộ mã dịch vòng tuyến tính C = (n, k) trên trường GF(q).

Khi đó:

16

1. Tập hợp các đa thức trong C có tồn tại một đa thức g(x) monic duy nhất

có cấp cực tiểu r < n. Khi đó g(x) được gọi là đa thức sinh của C.

2. Với mỗi đa thức từ mã c(x) trong C, có thể biểu diễn một cách duy nhất

dưới dạng c(x) = m(x).g(x), trong đó g(x) là đa thức sinh của C và m(x) là

một đa thức có cấp nhỏ hơn n – r trong GF(q)[x].

3. Đa thức sinh g(x) của C là một nhân tử của xn – 1 trong GF(2)[x].

- Định lý 2( về nhân tử hóa xn – 1 trên trường GF(q)[x]). Tập hợp tất cả

các phần tử khác không trong trường GF(q) tạo nên một tập hợp đầy đủ các

nghiệm của phương trình:

1.5.7 Đa thức nguyên thủy trong trường hợp GF(2) có cấp từ 2 đến cấp 7

Cấp Kí hiệu Cấp Kí hiệu Cấp Kí hiệu

111 1011 10011

2 3 4

1101 11001

100101 1000011 10000011

101001 1011011 10001001 5 6 7

101111 1100001 10001111

110111 1100111 10010001

111011 1101101 10011101

111101 1110011 10100111

10101011

10111001

17

10111111

11000001

11001011

11010011

11010101

11100101

11101111

11110001

11110111

11111101

18

CHƯƠNG 2: TÌM HIỂU TỔNG QUAN VỀ GIẤU TIN VÀ MỘT SỐ

THUẬT TOÁN GIẤU TIN MẬT ( STEGANOGRAPHY)

2.1 Tổng quan về giấu tin và phân loại [1]

2.1.1 Định nghĩa

“ Giấu thông tin” gọi tắt là “giấu tin”, tiếng Hi lạp là “Steganography”,

tiếng Anh là “Cover Writing”. Giấu thông tin là một kỹ thuật giấu (nhúng)

một lượng thông tin số nào đó vào trong một đối tượng dữ liệu số khác ( “giấu

tin” nhiều khi không phải chỉ hành động giấu cụ thể mà chỉ mang ý nghĩa quy

ước) [1]

Sự khác biệt chủ yếu giữa mã hoá thông tin và giấu thông tin là phương

pháp mã hoá làm cho các thông tin hiện rõ là nó có được mã hoá hay không

còn đối với phương pháp giấu thông tin thì người ta sẽ khó biết được là có

thông tin giấu bên trong do tính chất ẩn (invisible) của thông tin được giấu.

Kỹ thuật giấu thông tin nhằm mục đích đảm bảo an toàn vào bảo mật

thông tin. Từ hai khía cạnh : một là bảo mật cho giữ liệu được đem giấu, hai

là bảo mật cho chính đối tượng thực hiện giấu tin. Điều này dẫn đến hai

khuynh hướng kỹ thuật chủ yếu của giấu tin. Khuynh hướng thứ nhất là giấu

tin mật (steganography). Khuynh hướng này tập trung vào các kỹ thuật giấu

tin sao cho thông tin giấu được nhiều và quan trọng là người khác khó phát

hiện được một đối tượng có bị giấu thông tin bên trong phương tiện đó hay

không. Khuynh hướng thứ hai là thủy vân số (watermarking). Khuynh hướng

thủy vân số đánh giấu vào đối tượng nhằm khẳng định bản quyền sở hữu hay

phát hiện xuyên tạc thông tin. Thủy vân số có miền ứng dụng chủ yếu trong

lĩnh vực kinh tế nên nó được quan tâm nhiều. Trong lúc đó kỹ thuật giấu tin

19

mật chủ yếu phục vụ trong lĩnh vực an ninh quốc phòng và do đó, nó ít được

công bố công khai.

2.1.2 Mục đích của giấu tin mật.

Giấu tin có hai mục đích:

- Bảo mật cho những dữ liệu được giấu.

- Bảo đảm an toàn (bảo vệ bản quyền) cho chính các đối tượng chứa dữ

liệu giấu trong đó.

Hai mục đích này dần phát triển thành hai lĩnh vực với những yêu cầu

và tính chất khác nhau.

Giấu thông tin

Giấu tin bí mật

Thuỷ vân số

(Steganography)

(Watermarking)

Hình 2. 1: Hai lĩnh vực của kỹ thuật giấu thông tin

Kỹ thuật giấu thông tin bí mật (Steganography): với mục đích đảm bảo

an toàn và bảo mật thông tin tập trung vào các kỹ thuật giấu tin để có thể giấu

được nhiều thông tin nhất. Thông tin mật được giấu kỹ trong một đối tượng

khác sao cho người khác không phát hiện được.

Kỹ thuật giấu thông tin theo kiểu “đánh giấu” (watermarking) để bảo

vệ bản quyền của đối tượng chứa thông tin tập trung đảm bảo một số các yêu

cầu như đảm bảo tính bền vững… đây là ứng dụng cơ bản nhất của kỹ thuật

thuỷ vân số. Trong phạm vi nghiên cứu của mình, luận văn tập trung tìm hiểu

về kỹ thuật giấu tin mật.

20

2.1.3 Mô hình kỹ thuật giấu thông tin cơ bản.

Để thực hiện giấu tin cần xây dựng được các thủ tục giấu tin.Các thủ

tục này sẽ thực hiện nhúng thông tin cần giấu vào môi trường giấu tin. Các

thủ tục giấu tin thường được thực hiện với một khóa giống như các hệ mật mã

để tăng tính bảo mật. Sau khi giấu tin ta thu được đối tượng chứa thông tin

giấu và có thể phân phối đối tượng đó trên kênh thông tin đến người nhận có

chủ đích. Để giải mã thông tin nhận được từ đối tượng có chứa thông tin đã

giấu, người nhận đích thực sử dụng thủ tục giải mã cùng với khóa đã dung

trong quá trình giấu để lấy lại thông tin. Việc giấu thông tin vào phương tiện

chứa và tách lấy thông tin từ đó là hai quá trình trái ngược nhau và có thể mô

tả qua sơ đồ khối của hệ thống như hình 3.2 trong đó:

- Thông tin cần giấu tuỳ theo mục đích của người sử dụng, nó có thể là

thông điệp (với các tin bí mật) hay các logo, hình ảnh bản quyền.

- Phương tiện chứa: các file ảnh, audio… là môi trường để nhúng tin.

- Bộ nhúng thông tin: là những chương trình thực hiện việc giấu tin

- Đầu ra: là các phương tiện chứa đã có tin giấu trong đó

Thông tin giấu

Phân phối

Bộ nhúng thông tin

Phương tiện chứa (audio, ảnh, video)

Phương tiện chứa đã được giấu tin

Khoá

Hình 2. 2: Lược đồ chung cho quá trình giấu tin

21

Tách thông tin từ các phương tiện chứa diễn ra theo quy trình ngược lại

với đầu ra là các thông tin đã được giấu vào phương tiện chứa. Phương tiện

chứa sau khi tách lấy thông tin có thể được sử dụng, quản lý theo những yêu

cầu khác nhau.

Khóa giấu tin

Phương tiện chứa đã được giấu tin

Bộ giải mã tin

Phương tiện chứa (audio, ảnh, video)

Thông tin giấu

Kiểm định

Hình 2. 3: Lược đồ chung cho quá trình giải mã

Hình vẽ 2.3 chỉ ra các công việc giải mã thông tin đã giấu. Sau khi

nhận được đối tượng phương tiện chứa có giấu thông tin, quá trình giải mã

được thực hiện thông qua một bộ giải mã tương ứng với bộ nhúng thông tin

cùng với khoá của quá trình nhúng. Kết quả thu được gồm phương tiện chứa

gốc và thông tin đã giấu. Bước tiếp theo thông tin đã giấu sẽ được xử lý kiểm

định so sánh với thông tin ban đầu.

2.1.4. Các đối tượng dùng để giấu tin.

a. Phân loại các kỹ thuật giấu tin:

22

Dựa trên việc thống kê sắp xếp nhiều công trình đã công bố trên một số

tạp chí, cùng với thông tin về tên và tóm tắt nội dung của khoảng 200 công

trình công bố trên Internet, có thể chia lĩnh vực giấu dữ liệu ra làm hai hướng

lớn, đó là watermarking và steganography. Nếu như watermarking quan tâm

nhiều đến các ứng dụng giấu các mẩu tin ngắn nhưng đòi hỏi độ bền vững cao

của thông tin cần giấu đối với các biến đổi thông thường của tệp dữ liệu môi

trường thì steganography lại quan tâm tới các ứng dụng che giấu các bản tin

với độ mật và dung lượng càng lớn càng tốt. Đối với từng hướng lớn này, quá

trình phân loại có thể tiếp tục theo các tiêu chí khác.

Ngoài ra chúng ta có thể phân loại theo môi trường giấu thông tin:

+ Giấu thông tin trong ảnh.

+ Giấu thông tin trong audio.

+ Giấu thông tin trong video.

+ Giấu thông tin trong văn bản dạng text.

b. Phân loại theo cách thức tác động lên các phương tiện:

Phương pháp chèn dữ liệu: Phương pháp này tìm các vị trí trong file dễ

bị bỏ qua và chèn dữ liệu cần giấu vào đó, cách giấu này không làm ảnh

hưởng gì tới sự thể hiện các file dữ liệu ví dụ như được giấu sau các ký tự

EOF.

Phương pháp tạo các phương tiện chứa: Từ các thông điệp cần chuyển

sẽ tạo ra các phương tiện chứa để phục vụ cho việc truyền thông tin đó, từ

phía người nhận dựa trên các phương tiện chứa này sẽ tái tạo lại các thông

điệp.

23

c. Phân loại theo các mục đích sử dụng:

- Giấu thông tin bí mật: đây là ứng dụng phổ biến nhất từ trước đến

nay, đối với giấu thông tin bí mật người ta quan tâm chủ yếu tới các mục tiêu:

Độ an toàn của giấu tin - khả năng không bị phát hiện của thông tin ẩn.

+ Lượng thông tin tối đa có thể giấu trong một phương tiện chứa cụ thể

mà vẫn có thể đảm bảo an toàn

+ Độ bí mật của thông tin trong trường hợp giấu tin bị phát hiện

- Giấu thông tin bí mật không quan tâm tới nhiều các yêu cầu bền vững

của phương tiện chứa, đơn giản là bởi người ta có thể thực hiện việc gửi và

nhận nhiều lần một phương tiện chứa đã được giấu tin.

- Giấu thông tin thuỷ vân: do yêu cầu bảo vệ bản quyền, xác thực… nên

giấu tin thuỷ vân có yêu cầu khác với giấu tin bí mật. Yêu cầu đầu tiên là các

dấu hiệu thuỷ vân đủ bền vững trước các tấn công vô hình hay cố ý gỡ bỏ nó.

Thêm vào đó các dấu hiệu thuỷ vân phải có ảnh hưởng tối thiểu (về mặt cảm

nhận) đối với các phương tiện chứa. Như vậy các thông tin cần giấu càng nhỏ

càng tốt.

Tuỳ theo các mục đích khác nhau như bảo vệ bản quyền, chống xuyên

tạc nội dung, nhận thực thông tin,… thuỷ vân cũng có các yêu cầu khác nhau.

Các kỹ thuật giấu tin mới được phát triển mạnh trong khỏang hơn mười

năm trở lại đây nên việc phân loại các kỹ thuật còn chưa hoàn toàn thống

nhất. Sơ đồ phân loại do F.Petitcolas đưa ra năm 1999 được nhiều người chấp

nhận.

24

Information hiding Giấu thông tin

Watermarking Thuỷ vân số

Steganography Giấu tin mật

Robust Watermarking

Fragile Watermarking Thuỷ vân dễ vỡ

Thuỷ vân bền vững

Imperceptible Watermarking

Visible Watermarking

Thuỷ vân ẩn

Thuỷ vân hiển thị

Hình 2. 4: Phân loại các kỹ thuật giấu tin

Theo sơ đồ trên đây, giấu tin được chia thành hai hướng chính là giấu

tin mật và thủy vân số. Giấu tin mật quan tâm chủ yếu đến lượng tin có thể

giấu, còn thủy vân số lại quan tâm chủ yếu đến tính bền vững của thông tin

giấu. trong từng hướng chính lại chia ra các hướng nhỏ hơn, chẳng hạn với

thủy vân số thì có thủy vân bền vững và thủy vân dễ vỡ. Thủy vân bền vững

cần bảo toàn được các thông tin thủy vân trước các tấn công như dịch chuyển,

cắt xén, xoay đối với ảnh. Ngược lại, thủy vân dễ vỡ cần phải dễ bị phá hủy

khi gặp các sự tấn công nói trên.

2.2 Giấu tin trong ảnh.

Hiện nay, giấu thông tin trong ảnh là một bộ phận chiếm tỷ lệ lớn nhất

trong các chương trình ứng dụng, các phần mềm, hệ thống giấu tin trong đa

phương tiện bởi lượng thông tin được trao đổi bằng ảnh rất lớn và hơn nữa

giấu thông tin trong ảnh cũng đóng vai trò hết sức quan trọng trong hầu hết

các ứng dụng bảo vệ an toàn thông tin như: nhận thực thông tin, xác định

25

xuyên tạc thông tin, bảo vệ bản quyền tác giả, điều khiển truy cập, giấu thông

tin mật … Chính vì thế mà vấn đề này đã nhận được sự quan tâm rất lớn của

các cá nhân, tổ chức, trường đại học và cả viện nghiên cứu thế giới.

Thông tin sẽ được giấu cùng với dữ liệu ảnh nhưng chất lượng ít thay

đổi và chẳng ai biết được đằng sau ảnh đó mang những thông tin có ý

nghĩa.Và ngày nay, khi ảnh số đã được sử dụng rất phổ biến, thì giấu thông

tin trong ảnh đã đem lại nhiều ứng dụng quan trọng trên các lĩnh vực trong

đời sống xã hội. Ví dụ như đối với các nước phát triển, chữ ký tay đã được số

hóa và lưu trữ sử dụng như hồ sơ cá nhân của các dịch vụ ngân hàng và tài

chính. Nó được sử dụng để nhận thực trong các thẻ tín dụng của người tiêu

dùng.

Hay trong một số những ứng dụng về nhận diện như thẻ chứng minh

thư, thẻ căn cước, hộ chiếu… người ta có thể giấu thông tin trên các ảnh thẻ

để xác nhận thông tin thực.

Phần mềm Winword của Microsoft cũng cho phép người dùng lưu chữ

ký trong các ảnh nhị phân rồi gắn vào vị trí nào đó trong file văn bản để đảm

bảo tính an toàn của thông tin. Tài liệu sau đó được truyền trực tiếp qua fax

hoặc lưu truyền trên mạng. Theo đó, việc nhận thực chữ ký, xác nhận thông

tin đã trở thành một vấn đề cực kỳ quan trọng khi mà việc ăn cắp thông tin

hay xuyên tạc thông tin bởi các tin tặc đang trở thành một vấn nạn đối với bất

kỳ quốc gia, tổ chức nào. Thêm vào đó, lại có rất nhiều loại thông tin quan

trọng cần được bảo mật như những thông tin về an ninh, thông tin về bảo

hiểm hay các thông tin về tài chính. Các thông tin này được số hóa và lưu trữ

trong hệ thống máy tính hay trên mạng. Chúng rất dễ bị lấy cắp và bị thay đổi

bởi các phần mềm chuyên dụng. Việc nhận thực cũng như phát hiện thông tin

xuyên tạc đã trở nên vô cùng quan trọng, cấp thiết. Và một đặc điểm của giấu

26

thông tin trong ảnh nữa đó là được giấu một cách vô hình. Nó như cách

truyền thông tin mật cho nhau mà người khác không thể biết được, bởi sau

khi giấu thông tin thì chất lượng ảnh gần như không thay đổi đặc biệt đối với

ảnh mầu hay ảnh xám.

2.3 Tổng quan ảnh BITMAP (BMP).

2.3.1 Giới thiệu ảnh BITMAP (BMP).

Ảnh BITMAP (BMP) được phát triển bởi Microsoft Corporation, được

lưu trữ dưới dạng độc lập thiết bị cho phép Windows hiển thị dữ liệu không

phụ thuộc vào khung chỉ định màu trên bất kỳ phần cứng nào.

Tên tệp mở rộng mặc định của một tệp ảnh Bitmap là .BMP, nét vẽ

được thể hiện là các điểm ảnh. Qui ước màu đen, trắng tương ứng với các giá

trị 0, 1.

Ảnh BMP được sử dụng trên Microsoft Windows và các ứng dụng

chạy trên Windows từ version 3.0 trở lên.BMP thuộc loại ảnh mảnh.

Các thuộc tính tiêu biểu của một tập tin ảnh BMP là: Số bit trên mỗi

điểm ảnh thường được ký hiệu bởi n. Một ảnh BMP n bit có 2n màu. Giá trị n

càng lớn thì ảnh càng có nhiều màu và càng rõ nét hơn.

Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256

màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu).Ảnh BMP 24 - bit có chất

lượng hình ảnh trung thực nhất.

- Chiều cao của ảnh (height), cho bởi điểm ảnh.

- Chiều rộng của ảnh (width), cho bởi điểm ảnh.

Đặc điểm nổi bật nhất của định dạng BMP là tập tin ảnh thường không

được nén bằng bất kỳ thuật toán nào. Khi lưu ảnh, các điểm ảnh được ghi trực

27

tiếp vào tập tin một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc

vào giá trị n

của ảnh.

Do đó, một hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp

nhiều lần so với các ảnh được nén (chẳng hạn JPEG hay PNG). Ảnh BMP

thường được dùng để giấu các thông tin mật vì nó chứa được nhiều thông tin

nhất so với .JPEG. Còn ảnh JPEG lại thường được dùng cho kỹ thuật

Watermarking (tạm dịch là Thủy vân).

2.3.2 Cấu trúc ảnh BITMAP (.BMP).

Cấu trúc một tệp ảnh .BMP gồm có bốn phần:

- Bitmap File Header: Lưu trữ thông tin tổng hợp về tệp ảnh BMP.

- Bitmap Information: Lưu trữ thông tin chi tiết về ảnh bitmap.

- Color Palette: Lưu trữ định nghĩa của màu được sử dụng cho bitmap.

- Bitmap Data: Lưu trữ từng điểm ảnh của hình ảnh thực tế.

a. Bitmap File Header:

Đây là khối bytes ở phần đầu tập tin, sử dụng để định danh tập tin.

Ứng dụng đọc khối bytes này để kiểm tra xem đó có đúng là tập tin

BMP không và có bị hư hỏng không.

28

Offset Size Mục đích

Magic number sử dụng để định nghĩa tập tin BMP:

0x42 0x4D (mã hexa của kí tự B và M). Các mục dưới đây

có thể được dùng:

0000h 2 bytes  BM - Windows 3.1x, 95, NT, ... etc

 CI - OS/2 Color Icon

 CP - OS/2 Color Pointer

0002h 4 bytes Kích thước của tập tin BMP theo byte.

Dành riêng; giá trị thực tế phụ thuộc vào ứng dụng tạo ra 0006h 2 bytes hình ảnh.

Dành riêng; giá trị thực tế phụ thuộc vào ứng dụng tạo ra 0008h 2 bytes hình ảnh.

000Ah 4 bytes Offset, địa chỉ bắt đầu các byte dữ liệu ảnh bitmap.

Hình 2 .5: Chi tiết khối bytes tiêu đề tập tin BMP.

b. Bitmap Information:

Khối bytes này cho biết các thông tin chi tiết về hình ảnh sẽ được sử

dụng để hiển thị hình ảnh trên màn hình.

Bảng dưới đây miêu tả chi tiết khối bytes thông tin tập tin BMP.

29

Offset Size Mục đích

Kích thước của tiêu đề (40 bytes). Eh 4

Chiều rộng bitmap tính bằng pixel (Signed interger). 12h 4

Chiều cao bitmap tính bằng pixel (Signed interger). 16h 4

Số lượng các mặt phẳng màu sắc được sử dụng. Phải được thiết 1Ah 2 lậpbằng 1.

Số bit trên mỗi pixel, là độ sâu màu của hình ảnh. Giá trị điển hìnhlà 1Ch 2 1, 4, 8, 16, 24 và 32.

1Eh 4 Phương pháp nén được sử dụng.

Kích thước hình ảnh. Đây là kích thước của dữ liệu bitmap vàkhông 22h 4 nên nhầm lẫn với kích thước tập tin.

Độ phân giải theo chiều ngang của hình ảnh (Signed interger). 26h 4

Độ phân giải theo chiều dọc của hình ảnh (Signed interger). 2Ah 4

Số lượng màu trong bảng màu. 2Eh 4

Số lượng các màu sắc quan trọng được sử dụng, hoặc 0 khi màu 32h 4 sắcnào cũng đều là quan trọng, thường bị bỏ qua.

Hình 2. 6: Chi tiết khối bytes thông tin tập tin BMP

30

c. Color Palette

Tiếp theo vùng Info là Color Palette của BMP, gồm nhiều bộ có kích

thước bằng 4 byte xếp liền nhau theo cấu trúc Blue – Green - Red và một byte

dành riêng cho Itensity.

Kích thước của vùng Palette màu = 4 * số màu của ảnh.

Bảng màu xuất hiện trong tập tin BMP sau tiêu đề BMP và tiêu đề DIB.

Vì vậy, offset là kích cỡ của tiêu đề BMP cộng với kích thước của tiêu đề

DIB.

Vì Palette màu của màn hình có cấu tạo theo thứ tự Red – Green - Blue

nên khi đọc Palette màu của ảnh BMP vào thì phải chuyển đổi cho phù hợp.

Số màu của ảnh được biết dựa trên số bit cho 1 pixel cụ thể là:

8 bits / pixel: ảnh 256 màu.

4 bits / pixel: ảnh 16 màu.

24 bits / pixel ảnh 24 bit màu.

Có tất cả 2 ^ 24 màu RGB khác nhau, nhưng các loại Bitmap 1 bit (2

màu, hoặc chuẩn Windows là trắng - đen), 4 bits (16 màu), 8 bits (256 màu)

không thểkhai thác hết, nên chỉ liệt kê các màu được dùng trong tệp. Mỗi màu

trong bảng màu được mô tả bằng 4 bytes (BlueByte, GreenByte, RedByte và

ReservByte).

Ví dụ:

Bảng màu loại 1 bit chuẩn Windows có 8 bytes: 0, 0, 0, 0, 255, 255,

255, 0(4 bytes đầu là màu thứ 0, 4 bytes sau là màu thứ 1. Do chỉ có 0 và 1

nên mô tả mỗi điểm ảnh chỉ cần dùng 1 bit).

Tương tự như vậy, bảng màu của tệp 4 bits có 64 bytes, lần lượt từ màu

số 0 đến màu số 15, bảng màu của tệp 8 bits có 1024 bytes (từ 0 đến 255).

Chính vì các màu được liệt kê như vậy nên các màu trong tệp 1 bit, 4 bits, 8

bits được gọi là Indexed, còn các màu trong tệp 24 bits được gọi là True.

31

d. Bitmap Data

Phần Bitmap Data nằm ngay sau phần Color Palette của ảnh BMP. Đây

là phần chứa các giá trị màu của các điểm ảnh trong BMP. Dữ liệu ảnh được

lưu từng điểm cho đến hết hàng ngang (từ trái sang phải), và từng hàng ngang

cho đến hết ảnh (từ dưới lên trên). Mỗi byte trong vùng Bitmap Data biểu

diễn 1 hoặc nhiều điểm ảnh tùy theo số bits cho một pixel.

Đối với mỗi điểm ảnh loại màu Indexed, ta cần 1 bit, 4 bits hoặc 8 bits

để đặc trưng cho điểm đang xét ứng với màu thứ mấy trong bảng màu.

Ví dụ:

Giá trị 0111 (=7) trong loại BMP 4 bits cho biết điểm đó có màu 7

(màu xám theo chuẩn Windows). Riêng loại 24 bits thì không mô tả màu bằng

thứ tự trên bảng màu (nếu liệt kê hết bảng màu của nó thì đã tốn cả Gigabyte

bộ nhớ và đĩa) mà được liệt kê luôn giá trị RGB của 3 màu thành phần.

Ví dụ:

Trắng ={255, 255, 255}, Đen = {0, 0, 0}.

Như vậy, mỗi điểm ảnh loại 1 bit tốn 1/8 bytes (nói cách khác, 1 byte

lưuđược 8 điểm 1 bit), loại 4 bits tốn 1/2 byte, loại 8 bits tốn 1 byte và loại 24

bits tốn 3 bytes.

Tuy nhiên, tính chung cả bức ảnh thì khối dữ liệu không hoàn toàn tỉ lệ

thuận như vậy mà thường lớn hơn một chút.

Lý do chính ở chỗ ta ngầm quy ước số bytes cần dùng cho 1 hàng

ngang phải là bội của 4. Nếu bạn có ảnh 1 x 1, 1 bit, thì cũng tốn 66 bytes như

ảnh 32 x 1, 1 bit (54 cho header, 8 cho bảng màu, 4 cho 1 hàng tối thiểu).

Nếu thử xoay bức hình 32 x 1 (vừa đúng 4 bytes dữ liệu) thành 1 x 32,

sự lãng phí sẽ xuất hiện, lúc đó mỗi hàng sẽ lãng phí 31 bits, tổng cộng 32 lần

như thế (31*4 bytes = 124 bytes).

32

2.4. Một số thuật toán giấu tin trong ảnh và chất lượng

2.4. 1 Kỹ thuật giấu tin LSB.

2.4.1.1 Khái niệm bit ít quan trọng LSB (LSB - Least significant bit).

Bit LSB là bit có ảnh hưởng ít nhất tới việc quyết định tới màu sắc của

mỗi điểm ảnh, vì vậy khi ta thay đổi bit ít quan trọng nhất của một điểm ảnh

thì màu sắc của mỗi điểm ảnh mới sẽ tương đối gần với điểm ảnh cũ. Ví dụ

đối với ảnh 16 bit thì 15 bit là biểu diễn 3 màu RGB của điểm ảnh còn bit

cuối cùng không dùng đến thì ra sẽ tách bit này ra ở mỗi điểm ảnh để giấu

tin… Như vậy kỹ thuật tách bit trong xử lý ảnh được sử dụng rất nhiều trong

quy trình giấu tin. Việc xác định LSB của mỗi điểm ảnh trong một bức ảnh

phụ thuộc vào định dạng của ảnh và số bit màu dành cho mỗi điểm của ảnh

đó.

2.4.1.2. Kỹ thuật giấu tin LSB trong ảnh BITMAP.

Chúng ta sử dụng kỹ thụât “Thay thế” (substitution) để ẩn thông tin

trong một file. Với công nghệ này, bạn thay thế những bit ít quan trọng nhất

của file gốc với dữ liệu mà bạn muốn ẩn. Để sử dụng công nghệ này ta thực

hiện các bước sau:

Khi sử dụng kĩ thuật thay thế sẽ có một số ưu nhược điểm sau:

+Ưu điểm: Kích thước của file sẽ không bị thay đổi sau khi thực hiện

việc ẩn thông tin.

+ Nhược điểm: Có thể giảm chất lượng ảnh sau khi ẩn thông tin; giới

hạn kích thước thông tin muốn ẩn.

Trong kỹ thuật “Thay thế”, phương thức rất phổ biến là LSB (Least

Significant Bit). Phương thức này thay thế bit ít quan trọng nhất trong một vài

byte của file để ẩn những byte dữ liệu chứa thông tin muốn ẩn. Cách này có

33

hiệu quả trong trường hợp mà thay thế LSB không ảnh hưởng đến chất lượng

ảnh. Ví dụ như đối với ảnh Bitmap 24 bit.

* Tại sao giấu thông tin trong ảnh Bitmap 24 bit lại có hiệu quả

hơn:

- Ảnh Bitmap 24 bit: tức là sẽ có 24 bit biểu diễn cho 1 pixel và ảnh

này có 2^24 màu. Thông tin màu cho mỗi pixel được chứa trong 3 byte liên

tiếp của dữ liệu với mỗi byte tương ứng với 3 màu Blue, Green, Red.

- 24 bit màu là dữ liệu đơn giản để đọc. Dữ liệu hình ảnh đi theo ngay

trực tiếp sau đầu mục thông tin và ở đó không có bảng màu nào.

- Các điểm ảnh được lưu theo chiều từ trái sáng phải trên một dòng và

các dòng lại được lưu theo thứ tự từ dưới lên trên .

- Mỗi byte trong vùng BimapData biểu diễn 1 hoặc nhiều điểm ảnh

theo số Bits cho một Pixel.

- 8 bit dữ liệu cần 8 byte dữ liệu nguồn.

Như vậy, với mỗi Pixel sẽ có 8 bit biểu diễn cho mỗi giá trị màu. Giả

sử, ta chỉ xem xét với màu Blue, sẽ có 28 giá trị khác nhau. Sự khác nhau

giữa các giá trị hay gọi cách khác là cường độ của Blue như 11111111 và

11111110 sẽ không bị phát hiện bởi thị giác của con người.

- Đối với ảnh 24 bit, ta có thể nhúng 3 bit dữ liệu muốn ẩn trong 1

pixel. Trong khi đó với ảnh 8 bit ta chi có thể nhúng 1 bit dữ liệu cho mỗi

pixel. Như vậy, ảnh 24 bit cung cấp nhiều khoảng trống hơn so với ảnh 8 bit.

Ví dụ:

Muốn ẩn 1 ký tư A vào trong 1 file ảnh. Giá trị nhị phân của A là

10000001 Lúc này kí tự A được ẩn trong 3 pixel.

+ Giả sử dữ liệu của 3 pixel có thể là

34

(00100111 11101001 11001000)

(00100111 11001000 11101001)

(11001000 00100111 11101001)

+ Sau khi ẩn kí tự A, giá trị của 3 pixel là:

(00100111 11101000 11001000)

(00100110 11001000 11101000)

(11001000 00100111 11101001)

Như vậy, chỉ có 3 bit bị thay đổi trong 3 byte. Và sẽ không bị phát hiện

bởi thị giác của con người.

2.4.2 Kỹ thuật giấu tin SES.

2.4.2.1. Giới thiệu kỹ thuật giấu tin SES:

- Kỹ thuật SES được đề xuất bởi tác giả Jeong Jae Yu.

- Kỹ thuật giấu tin trong ảnh SES (Steganography Evading analysis) là

kỹ thuật giấu tin tránh sự phát hiện bằng phương pháp thống kê RS(Regular

Singular).

2.4.2.2. Kỹ thuật giấu tin SES như sau.

2.4.2.2.1. Quá trình giấu tin:

Đầu vào:

- Ảnh gốc.

- Thông điệp cần giấu.

Đầu ra:

- Ảnh đã được giấu thông điệp.

Các bước thực hiện:

Bước 1:

- Đọc ảnh gốc P.

- Tính toán thống kê RS của ảnh gốc.

Bước 2:

35

- Đọc thông điệp.

- Chuyển thông điệp sang dạng số trong bảng mã Ascii.

- Ghép độ dài thông điệp vào phía trước tin đã được mã hóa.

Bước 3:

- Chuyển mã Ascii của thông điệp sang dạng nhị phân.

Bước 4:

- Thực hiện giấu tin:

x if si = LSB(xi)

x’ =

Fr(xi) otherwise r Є { -1,1}

- Tính LSB của điểm ảnh.

- So sánh LSB của điểm ảnh với lần lượt các phần tử thông điệp đã được

chuyển đổi sang nhị phân ở bước trên.

Nếu phần tử thông điệp bằng với LSB của điểm ảnh thì điểm ảnh sẽ được

giữ nguyên. Ngược lại, nếu không bằng nhau thì xét tiếp:

- Nếu phần tử thông điệp = 1, LSB = 0 => Ta sử dụng hàm F1 .

- Nếu phần tử thông điệp = 0, LSB = 1 => Ta sử dụng hàm F-1 .

Bước 5: Điều chỉnh các thống kê RS với các bộ phận không sử dụng

nhúngtrong ảnh gốc.

- Kiểm tra RS của ảnh đã được giấu tin.

- Sử dụng một mảng để đánh dấu: những điểm ảnh nào được giấu tin thì

gán bằng 1, những điểm ảnh nào chưa được giấu tin thì gán bằng 0.

- Trên phần mà những điểm ảnh gán bằng 0 thì ta điều chỉnh RS saocho

ảnh sau khi được giấu tin tránh phát hiện bằng thống kê RS.

- Áp dụng:

36

Hình 2. 7: Sơ đồ giấu tín SES

37

2.4.2.2.2. Quá trình tách tin:

Đầu vào:

- Ảnh đã được giấu tin.

Đầu ra:

- Ảnh gốc.

- Thông điệp được giấu.

Các bước thực hiện:

- Bước 1: Đọc ảnh giấu thông điệp.

- Bước 2: Lấy LSB của điểm ảnh cho vào mảng mess.

- Bước 3: Lấy 8 bit đầu tiên của mảng mess, tiến hành chuyển đổi từ số

nhị phân sang dạng thập phân, được chiều dài của thông điệp.

- Bước 4: Những bit còn lại trong mảng mess chuyển thành số trong

bảng mã Ascii.

- Bước 5: Chuyển từ số sang xâu kí tự , được thông điệp đã giấu.

38

2.4.3 Kỹ thuật giấu tin theo khối bit

Kỹ thuật giấu tin theo khối bít và sử dụng tính chẵn lẻ của các khối bit

để khôi phục lại thông tin (thường sử dụng các phép toán AND, OR, SUM để

tính toán và biển đổi ảnh giấu tin) thường được dùng cho cả ảnh màu, ảnh

xám và ảnh đen trắng. Ý tưởng của thuật toán là chia ảnh thành các khối nhỏ

và trong mỗi khối nhỏ sẽ giấu một bit b (b =0 hoặc b=1).

Thuật toán

Input: Ảnh Bitmap đen trắng F và thông điệp cần giấu P.

Output:Một file ảnh đã giấu tin F’.

Cách thực hiện:

Bước 1: Chuyển file thông tin cần giấu P sang dạng nhị phân ta được

P’=b1b2…bN.

Bước 2: Chia ảnh gốc F thành N khối nhỏ Fi có kích thước mxn.

Bước 3: Với mỗi khối Fi (i = 1, 2,…N) ta sẽ tiến hành giấu một bit bi (bi

i thỏa mãn:

= 0 hoặc bi = 1) bằng cách biển đổi Fi thành F’

I ta thu được ảnh F’ chưa thông tin cần giấu.

Bước 4: Kết hợp các khối F’

Ví dụ minh họa:

Cho khối B như sau:

0 1 1 0

1 0 1 1

1 1 0 1

0 0 0 1

Khối B có kích thước K = 4x4, Sum (B) = 9.

39

- Giả sử ta giấu bít b = 0 vào khối B.

Số lượng bít 1 trong khối B là 9, sum (B) = 9. Do đó sum (B) ≠ 0 (mod 2).

Như vậy khối B không thỏa mãn yêu cầu. Để giấu bít 0 vào khối B ta thay đổi

một bit bất kỳ trong khối, thường là thay đổi tại vị trí của bít thông tin rõ vào

bít của khối tương ứng (nếu chúng trái dấu nhau) đổi bít 0 thành bít 1 hoặc bít

1 thành bít 0, ta thu được khối B’. Giả sử ta đổi như sau:

Khối B Khối B'

0 1 0 0 0 1 0 0

1 0 1 1 1 0 1 1

1 1 0 1 1 0 0 1

0 0 0 1 0 0 0 1

Hình 2.8: Minh họa giấu bit b = 0 vào khối nhị phân B

Khi đó ta có sum(B’) = 8 , do đó ta được sum(B’)  0 (mod 2)

- Nếu giấu bít b = 1 vào khối B. Ta có sum(B) = 9 nên

sum(B)  1 (mod 2). Khối B được bảo toàn và bit dữ liệu b = 1 coi như được

giấu.

Quá trình tách tin

Trong thuật toán này khóa đơn giản chỉ là kích thước của khối, nếu biết

kích thước của khối thì dễ dàng giải mã tin theo quy tắc sau:

Bước 1: Chia ảnh thành các khối nhỏ với kích thước khối đã sử dụng

khai thực hiện giấu tin.

Bước 2: Xét từng khối nhỏ và giải tin theo quy tắc:

- Nếu tổng các bít 1 là lẻ ta thu được bit giấu là 1.

- Nếu tổng các bít 1 là chẵn ta thu được bit giấu là 0.

40

Thực hiện cho đến khi hết các khối giấu và ta được chuỗi bit đã mang

giấu.

Bước 3: Chuyển chuỗi nhị phân sang dạng văn bản.

Phân tích thuật toán

Việc chọn kích thước khối giấu tùy thuộc vào kích thước ảnh và lượng

thông tin cần giấu sao cho giấu giàn trải trên từng ảnh.

Với thuật toán này việc chọn khối khá đơn giản, bắt đầu từ khối đầu

tiên và những khối liên tiếp phía sau một cách tuần tự. Tuy nhiên ta có thể

làm khó thuật toán hơn bằng cách chọn ngẫu nhiên một khối chưa giấu ở mỗi

lần giấu. Khi đó, đã làm tăng độ an toàn của thuật toán vì khóa bây giờ còn

thêm cả chỉ số khối đã giấu tin cho từng bit. Hoặc ta có thể thay đổi kích

thước khối ở mỗi lần giấu, chẳng hạn như lần 1 có kích thước khối là 8x8, lần

2 là 8x12,… trong trường hợp này thì khóa là kích thước khối của mỗi lần

giấu.

Bản chất của kỹ thuật giấu tin trong ảnh đen trắng là quy ước nào đó

dưới dạng một mệnh đề (tân từ) P. Nếu tân từ P được thỏa mãn thì ứng với bit

1, ngược lại ứng với bit 0. Tân từ P trong thuật toán trên là sum (B)  b (mod

2)

Áp dụng thuật toán cho ảnh màu và ảnh đa cấp xám

Nhược điểm cơ bản của phương pháp này dùng cho ảnh đen trắng là

thông tin giấu vào được rất ít. Nếu giấu nhiều thông tin thì ảnh sẽ thay đổi

nhiều và người sử dụng sẽ dễ dàng phát hiện sự có mặt của thông tin ẩn. Do

đó khi giấu tin người ta thường chọn ảnh màu hoặc ảnh đa cấp xám. Các ảnh

màu và đa cấp xám có giá trị mỗi điểm ảnh được biểu diễn bằng nhiều bit.

Trong dãy các bit biểu diễn này có một bit được gọi là bit ít quan trọng nhất

41

(LSB – Least Significant Bit). LSB là bit mà khi ta đảo giá trị của nó thì điểm

màu bị thay đổi ít nhất.

Ví dụ minh họa:

Với ảnh đa cấp xám, mỗi mức xám h được biểu diễn bởi số nguyên

không âm, thì mức xám h sẽ sai khác ít nhất so với hai mức xám liền kề h + 1

và h – 1. Trong trường hợp này bit LSB chính là bit thấp nhất trong dạng

biểu diễn nhị phân của h.

Hầu hết các thuật toán giấu tin trên ảnh màu hoặc ảnh đa cấp xám đều

áp dụng gián tiếp thuật toán giấu tin trên ảnh đen trắng theo trình tự sau:

Bước 1: Tạo ảnh đen trắng F từ ảnh màu Fc bằng một kỹ thuật nào đó.

Chẳng hạn lấy từ mỗi điểm màu trong Fc một bit ít quan trọng nhất của Fc để

làm một điểm ảnh cho F.

Bước 2: Giấu tin vào ảnh đen trắng F để được ảnh đen trắng F’.

Bước 3: Đưa lại các bit của F’ vào mỗi điểm ảnh màu tương ứng của Fc

để thu được ảnh màu kết quả là F’c.

Như vậy, thuật toán giấu tin trong ảnh đen trắng là cơ sở cho các thuật

toán giấu tin nói chung.

2.4.4 Thuật toán Wu-Lee [7]

Là thuật toán giấu tin khá phổ biến do W.Y.Wu và J.H.Lee đề xuất năm

1989. Môi trường giấu tin là ảnh nhị phân được chia thành các khối bit đều

nhau, mỗi khối là một ma trận nhị phân. Thông tin mật được giấu vào mỗi

khối này bằng cách thay đổi nhiều nhất một bít của khối.

Một số khái niệm

a) Phép toán Λ: Gọi a và b là hai bít tuỳ ý, phép toán nhân bít AND, kí

hiệu là Λ trên hai bít a và b cho ta giá trị 1 khi và chỉ khi a=b=1, trong các

trường hợp còn lại, aΛb=0

42

b) Phép toán : Phép toán cộng loại trừ (còn gọi là phép toán so khác)

XOR, kí hiệu là trên hai bít a và b cho ta giá trị 1 nếu a b và giá trị 0 nếu

a = b.

a b aΛb a b

1 0 0 1

1 1 1 0

0 1 0 1

0 0 0 0

c) Phép toán Λ và : Cho A và B là hai ma trận bít cùng cấp. Ta phát

triển các phép toán Λ và trên các bít tương ứng của A và B như sau:

Nếu A = (aij), B = (bij), C =(cij), D = (dij)

thì A Λ B = C với cij = aij Λ bij

và A B = D với dij = aij bij

Thuật toán

Ý tưởng của thuật toán là sử dụng một khóa bí mật K là một ma trận

nhị phân có kích thước dùng để làm tăng tính bí mật của các thông điệp

được giấu.

Đầu vào: Ảnh gốc nhị phân F, khóa bí mật K và một thông điệp M cần

giấu.

Đầu ra: F’ là một file ảnh đã giấu tin.

Cách thực hiện:

Khóa K là một ma trận nhị phân có kích thước . Để đơn giản

chúng ta coi kích cỡ của ảnh F là bội của . Việc nhúng thông tin giấu

43

vào trong ảnh sẽ được thực hiện bằng cách thay đổi một số bit của ảnh F theo

các bước sau:

Bước 1: Chuyển thông điệp M sang dạng nhị phân. Chia ảnh F thành

. các khối nhỏ Fi, mỗi khối có kích thước là

Bước 2: Với mỗi khối ảnh nhỏ Fi thu được từ bước 1, ta kiểm tra điều

kiện: 0 < SUM (Fi^K) < SUM (K)

Nếu đúng thì chuyển tới bước 3 để giấu thông tin vào trong khối Fi, còn

nếu không thì không giấu dữ liệu vào trong khối Fi, khối Fi sẽ được giữ

nguyên.

Bước 3: Gọi bit cần giấu vào khối Fi là b, ta thực hiện các bước sau để

thay đổi Fi:

Iƒ (SUM (Fi ^ K) mod 2 =b) then

Giữ nguyên Fi;

else iƒ (SUM(Fi ^ K) =1) then

Chọn ngẫu nhiên một bit [Fi]j,k thỏa:([Fi]j,k = 0 và [K]j,k = 1);

Thay [Fi]j,k = 1;

else iƒ SUM(Fi^K) = SUM(K) – 1) then

Chọn ngẫu nhiên một bit [Fi]j,k thỏa ([Fi]j,k = 1 và [K]j,k = 1);

Thay [Fi]j,k = 0;

else

Chọn ngẫu nhiên một bit mà [K]j,k = 1 thay bit [Fi]j,k từ 0 thành 1 hoặc

từ 1 thành;

End iƒ;

44

’ và giữ được tính chất

Sau khi gắn dữ liệu thì Fi được chuyển thành Fi

’^K) < SUM (K)

’^K)

bất biến sau đây:

b (mod 2). 0 < SUM (Fi SUM (Fi

Ví dụ: Giả sử ta cần giấu dãy bit M = 110 vào ảnh F có kích thước 8x8

và một ma trận khóa K có kích thước 4x4, như hình vẽ. Trước hết chia ảnh F

thành 4 khối nhỏ F1, F2, F3, F4, mỗi khối nhỏ có kích thước là 4x4 .

Hình 2. 9: Minh họa giấu dãy bit M = 110 vào 4 khối ảnh nhị phân

Quá trình tách tin:

Đầu vào: F’ là ảnh đã được giấu thông điệp M

K là ma trận khóa bí mật, kích thước .

Đầu ra: Thông điệp được giấu M (ảnh gốc nhị phân F nếu cần giữ

lại).

Các bước thực hiện:

45

’ để tách bit thông tin

. Bước 1: Chia ảnh F’ thành các khối nhỏ F’i với kích thước

Bước 2: Ta kiểm tra các khối Fi

For each F’i.

if0 < SUM (F’i^K) < SUM (K) then

b = SUM (F’i^K) mod 2;

Trong đó b là bít nhị phân đã được giấu.

Bước 3: Chuyển chuỗi nhị phân sang dạng văn bản.

Phân tích thuật toán:

Việc chọn khóa K nhằm làm tăng độ bảo mật của thuật toán. Nếu trước

đây chỉ biết kích thước khối là mxn thì đối phương rất rễ khai thác bản tin

mật.

Thuật toán sử dụng phép toán AND để tính Fi K, nên giá trị lớn nhất

của SUM (Fi K) không thể vượt quá SUM (K) và do tính chất của phép toán

AND, nếu có một khối nào thay đổi thì vị trí thay đổi chỉ xảy ra ở phần tử có

giá trị 1 trong khóa K. Vì thế một ảnh F hoàn toàn trắng nào đó được truyền

đi thì người ta dễ dàng tìm được khóa K, vì vậy mà không dùng trường hợp

SUM(F1  K) = 0. Đây là một kẽ hở của thuật toán đối với khóa.

Với SUM (Fi K) = SUM(K) cũng tương tự nếu F hoàn toàn đen thì vị

trí của bit thay đổi cũng là vị trí mà bit tương ứng ở khóa là 1.

Nếu ảnh F được lựa chọn để giấu tin có quá nhiều điểm trắng hoặc quá

nhiều điểm đen thì tỉ lệ bit giấu được sẽ rất thấp.

Để tránh những trường hợp trên thuật toán phải thỏa điểu kiện:

0 < SUM (Fi K) < SUM (K). Và việc chọn khóa K hết sức quan trọng.

46

CHƯƠNG 3: TÌM HIỂU XÂY DỰNG MỘT THUẬT TOÁN GIẤU TIN

MẬT TRÊN ẢNH KỸ THUẬT SỐ

3.1 Xây dựng ma trận 4 bit.

3.1.1 Chọn đa thức nguyên thủy trong trường GF(2).

Chẳng hạn p(x) = x4 + x + 1 là một đa thức nguyên thủy trong GF(2).

Giả sử α là một nghiệm của p(x) trong GF(2).

Khi đó α 4 + α + 1 = 0 hay nói cách khác α 4 = α + 1

( Trong GF(2) thì phép cộng và phép trừ là như nhau).

3.1.2 Xây dựng không gian các nghiệm của p(x).

Ta biết rằng P(x) có 24 – 1 véctơ riêng biệt. Ta có thể coi không gian

này là một không gian véctơ với phép cộng và nhân với 1 vô hướng trong

trường GF(2). Ta cũng biết rằng không gian véctơ này có số chiều là 4. Ta lấy

4 véctơ làm cơ sở.

Giả sử đó là {1000, 0100, 0010, 0001} = S. Tất cả các vectơ của không

gian nghiệm của đa thức P(x) là tổ hợp tuyến tính của các vectơ trong S. Ta

có 15 nghiệm có ký hiệu là:

α5 = α*α4 = α2 + α = 0110 α10 = 1110 α0 = 1000

α1 = 0100 α6 = 0011 α11 = 0111

α2 = 0010 α7 = 1101 α12 = 1111

α3 = 0001 α8 = 1010 α13 = 1011

α4 = α+ 1= 1100 α9 = 0101 α14 = 1001

α15 = 1000

3.1.3 Lập bảng mã 26 chữ cái latinh

Ta biết rằng, trong các ngôn ngữ nói chung, ngôn ngữ tiếng Anh nói

riêng, các chữ cái xuất hiện trong một văn bản bất kỳ có tần số khác nhau. Ví

47

dụ: trong một văn bản tiếng Anh, chữ cái "e, t", xuất hiện với tần số cao nhất

còn các chữ cái "z, q, k, j," xuất hiện với tần số thấp nhất. Sau khi thống kê

nhiều mẫu ngôn ngữ tự nhiên tiếng anh chính thống. Ta thấy rằng những cái

cao tần nhất là: E, T, A, O, I, N, S, R, H, L, D, C, U, M. Các chữ cái còn lại

thuộc thấp tần đó là: F, P, G, W, Y, B, V, K, X, J, Q, Z. Từ đó lập được bảng

mã 26 chữ cái như sau:

STT Mã Cấp độ Chữ cái Cấp độ Chữ cái

1 1000 I E II F

2 0100 I T II P

3 0010 I A II G

4 0001 I O II W

5 1010 I I II Y

6 0101 I N II B

7 0110 I S II V

8 1001 I R II K

9 1100 I H II X

10 0011 I L II J

11 1101 I D II Q

12 1110 I C II Z

13 0111 I U II Stop

14 1011 I M II end

15 0000 I

16 1111 II

Hình 3. 1: bảng mã 26 chữ cái latinh

48

Ví dụ:

Informationend.0000 -> 1010 0101 1111 1000 0000 0001 1001

1011 0010 0100 1010 0001 0101 1111 1011

3.2 Xây dựng thuật toán nhúng

3.2.1 Xây dựng ma trận sinh G

{a, b,…, z}; i= Giả sử ta có thông báo m= m1m1….mn; Mi

Và 1 ảnh C kích cỡ đủ để nhúng m ( gồm có ít nhất là 15 n các LSB

của dữ liệu của ảnh C)

Ma trận H gồm 4 hàng, 15 cột, mỗi cột của H là một vecto αi với i=

0,,2,…,14

α0 α1 α2 … α14

1 1 0 0 0 1 0 0 1 1 0 1 1 0 1 1

2 0 1 0 0 0 1 1 0 1 0 1 1 1 0 1 =H= (H1H2...H15)

3 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1

4 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1

Với Hj=

3.2.2 Đổi thông điệp m = m1…..mn sang dãy nhị phân theo bảng A

{ 0, 1}, I = 1, 2,.., 4n Ta có X = x1x2x3......x4n với xi

49

Ký hiệu

X[1] = x1 x2 x3 x4

X[2] = x4+1….x4+4 = x5 x6 x7 x8

X[3] = x9 x10 x11 x12

…….

X[n] = x4n-3 x4n-2 x4n-1 x4n

3.2.3 Trích chọn 4n LSB của dữ liệu ảnh C bắt đầu từ một vị trí ngẫu

nhiên cho trước và được ký hiệu là C1C2..C4n

Đặt:

Y[1] = C1 C2 …C15

Y[2] = C16 C17….C30

Y[3] = C31 C32…C45

…….

Y[n] = C4n-14C4n-13…x4n

3.2.4 Mã hóa:

Bước 1

Với i = 1

Đặt ZT [1] = XT [1] + HYT [1]

Trong đó XT là vectơ chuyển vị của vectơ X ( chuyển vectơ

dòng thành vectơ cột)

Bước 2

Tìm trong ma trận H nếu không tồn tại một cột Hj ( j = 1,2,…,15)

nào trùng với ZT[1] thì bỏ qua và coi như ta đã nhúng được một ký tự

m1 vào ảnh C và cho i = i + 1 và trở lại bước 1.

50

Bước 3.

Giả sử có tồn tại một nào đó mà = ZT[1] thì ta thực hiện

việc đảo bit tại vị trí bít các bit còn lại vẫn giữ nguyên và như vậy ta

nhúng được ký tự m1 vào ảnh C và cho i = i+ 1 rồi quay lại bưới 1 cho

đến khi i ≥ n thì thuật toán dừng và trả lại các LSB mới vào ảnh C, ta

nhận được ảnh stego S. Như vậy một văn bản có n ký tự, ta chỉ thay đổi

không quá n LSB của dữ liệu ảnh.

3. 3 Trích chọn (extraction)

Đầu vào: Ảnh S ma trận H và bảng mã chữ cái (Hình 3.1)

Đầu ra: Bảng thông báo m = m1m2….mn

Các bước tiến hành

Bước 1:

Trích chọn 4n LSB của dữ liệu ảnh S2 với điểm khởi đầu cho

trước ta được s2 = s1s2…….s15n

Bước 2:

Chia dãy bit thành n block liền nhau có độ dài bằng 15 và được

ký hiệu là S[1], S[2], …, S[n]

Bước 3:

Với I = 1,2,..

Tính X[i] = H.ST[i](ST[i] là chuyển vị của S[i]

với I = 1,2,…,n

Bước 4:

Chuyển X[i] chữ cái thứ I ( I = ) = mi

]. terminatesalgorithm Return [mi, I =

51

Ví dụ: Ta lấy lại ví dụ ở mục 3.2:

M = informationstop = 0000 1010 0101 1111 1000 0000 0001

1001 1011 0010 0100 1010 0001 0101 1111 0111 ./.

Ở đây n = 16. Ma trận H đã cho ở 3.3

Ta có:

X[1] = 0000 X[2] = 1010 X[3] = 0101 X[4] = 1111

X[5] = 1000 X[6] = 0000 X[7] = 0001 X[8] = 1001

X[9] = 1011 X[10] = 0010 X[11] = 0100 X[12] = 1010

X[13] = 0001 X[14] = 0101 X[15] = 1111 X[16] = 0111

Bây giờ giả sử ảnh cover C tại khởi điểm, để đơn giản ta lấy khởi điểm

là bit LSB đầu tiên của dữ liệu ảnh, ta trích ra được 15n = 240 các LSB của

ảnh C là:

01001 00001 10110 00111 11111 10000 01000 00000 11111 10110

00010 00100 000010 00111 00001 10000 01110 00100 00011

11110 10000 11111 00100 10111 10000 01001 10001 10110 00100

00000 10001 01100 00001 10100 01011 00000 00111 10100 00010

11111 10000 01100 10010 00000 11100 00111 11100 10100.

Từ đó ta có:

Y[1] = 01001 00001 10110 Y[2] = 00111 11111 10000

Y[3] = 01000 00000 11111 Y[4] = 10110 00010 00100

Y[5] = 00001 00111 00001 Y[6] = 10000 01110 00100

Y[7] = 00011 11110 10000 Y[8] = 11111 00100 10111

52

Y[9] = 10000 01001 10001 Y[10] = 10110 00100 00000

Y[11] = 10001 01100 00001 Y[12] = 10100 01011 00000

Y[13] = 00111 10100 00010 Y[14] = 11111 10000 01100

Y[15] = 10010 00000 11100 Y[16] = 00111 11100 10100./.

Mã hóa bước 4 tính:

Tính ZT[1] = H.YT[1] = H.( 01001 00001 10110)T = (0000)T +

(1100)T = (1100)T

Tìm trong ma trân H ta thấy cột thứ 9 của ma trân H trùng với

ZT[1] = (1100)T

Do đó ta đảo bit thứ 9 của Y[1] từ 0 chuyển sang 1. Các LSB của

ảnh C là Y[1] = 01001 00001 10110 trở thành Y'[1] = 01001 00011

10110 . Như vậy ta đã giấu được dãy 0000 vào ảnh C.

Tiếp tục:

ZT[2] = XT[2] + H.YT[2] = 1010 + H.YT[2] = (1010)T + (0001)T

Ta thấy ZT[2] = (1011)T trùng với cột thứ 14 của H. Do đó vecto

LSB Y[2] chuyển thành Y'[2] = 00111 11111 10010. Như vậy đã giấu

được ký tự 1010 vào C.

ZT[3] = XT[3] + H. YT[3] = (1011)T +H. (01000 00000 1111)T =

(1011)T + (0100)T = (1111)T

Ta thấy ZT[3] = (1111)T trùng với cột thứ 15 của H. Do đó bít thứ

15 của Y[3] = 1 được chuyển sang 0 và Y’[3] = 01000 00000 11110.

Như vậy sẽ giấu được ký tự 1011 vào C.

ZT[4] = XT[4] + H. YT[4] = (1111)T +H. (10110 00010 00100)T =

(1111)T + (0000)T = (1111)T

53

Do đó thay LSB thứ 15 của Y[4] ta được Y’[4] = 10110 00010

0010

ZT[5] = XT[5] + H. YT[5] = (1000)T +H. (00001 00111 00001)T =

(1000)T + (0011)T = (1011)T

ZT[5] = (1011)T trùng với cột thứ 14 của H, vậy Y’[5] = 00001

00111 00011

Tương tự như vậy ta tính được Y’[6], Y’[7], Y’[8] …. Và cuối

cùng ta có

ZT[16] = XT[16] + H. YT[16] = (0111)T +H. (00111 11100

10100)T = (0111)T + (1001)T = (1110)T

ZT[16] = (1110)T trùng với cột thứ 12 của H, vậy Y’[16] = 00111

11100 11100

Như vậy các LSB của ảnh stego tương ứng ảnh C là:

Y’ = 01001 00011 10110 00111 11111 10010 00001 00000

11110 10110 00010 00101 00001 00111 00011 10000 01100 00100

00001 11110 10000…..00111 11100 11100./.

Nếu tính tần số xuất hiện bit 1 và bit 0 theo thứ tự lần lượt của Y và Y’

ta thấy rằng sự khác biệt giữa chúng là khó có thể phân biệt, đến mức các kỹ

thuật thống kê cấp 1 không thể phát hiện được.

3.4 Đánh giá độ an toàn của hệ thống

Định nghĩa hình thức về độ an toàn steganography.

Ý tưởng:

Chọn ngẫu nhiên một ảnh cover C với phân bổ xác suất Pc(.). Việc giấu

( nhúng) một tài liệu m nào đó vào C được coi như là một hàm Ek ( ánh xạ)

được xác định trong C. Gọi Ps(.) là phân bố xác suất của Ek (c, m, k), đó là

một tập hợp các ảnh stego được tạo ra bởi hệ thống steganography nào đó.

54

Nếu C không phải là ảnh stego thì Ps( C ) = 0. Để tính Ps(.) phân bố xác suất

trên không gian khóa K và không gian bản rõ M đã được ấn định trong Đề tài

ta giả định, đó là ngôn ngữ tiếng Anh. Sử dụng định nghĩa về Entropy:

D(P1‖P2) giữa 2 phân bố xác suất P1 và P2 được xác định trên hệ thống Q là:

D(P1‖P2) =

Nếu P1(.) = PC(.), P2(.) = PS(.), thì đây là đại lượng đo sự khác biệt giữa

ảnh cover và ảnh stego tương ứng. Đại lượng D(PC‖PS) càng bé thì sự phân

biệt giữa ảnh C và ảnh S càng khó khăn. Nếu D(PC‖PS) = 0 thì ta coi như trong

thực hành không thể phân biệt được giữa ảnh C và ảnh S. Sử dụng định nghĩa

về Entropy (độ bất định) ta có các khái niệm sau đây:

Định nghĩa 1:

Giả sử Ω là một hệ thống steganography nào đó. Kí hiệu PS là phân bố

xác suất của các ảnh stego nhận được qua đường truyền hoặc lưu trên kênh

cộng cộng và PC là phân bố xác suất của C. Hệ thống Ω là ε an toàn chống lại

các tấn công thụ động nếu: D(PC‖PS) ≤ ε với ε ≥ 0 cho trước.

Trường hợp ε = 0 thì Ω có độ an toàn tuyện đối( hoàn hảo)

Khi D(PC‖PS) = 0 theo bổ đề cơ bản của lý thuyết thông tin [C.rao’s] thì

PC = PS, có nghĩa ta không thể phân biệt đâu là ảnh C và đâu là ảnh Stego S.

Định lý 1:

Tồn tại một hệ thống steganography cho độ an toàn hoàn hảo.

Chứng minh:

Giả sử, C là tập hợp tất cả dãy nhị phân có độ dài n, PC có phân bố đều

trên C, cho e là thông điệp mật, e C. Người gửi chọn ngẫu nhiên c C và

tính S = c , trong đó là phép cộng bit không gian nhớ (XOR). Khi đó rõ

ràng PS có phân bố đều trên C. Do đó PS = PC, vi vậy D(PC‖PS) = 0. Quá trình

55

trích chọn được thực hiện đơn giản là e = s .Thuật toán trên đơn giản

nhưng nó không hữu ích vì trong thực tiễn không có một nhà quan sát nào giả

sử Alice và Bob trao đổi dãy ngẫu nhiên. Định lý được chứng minh.

Định lý 2:

Cho Ω là một hệ thống Steganography thỏa mãn điều kiện ε – an

toàn ( ɛ - secure) chống lại các tấn công bị động, xác suất để kẻ tấn công

không phát hiện được sự có mặt của thông điệp trong C. Còn α là xác suất dò

tìm sai thông điệp ẩn trong C. Khi đó hệ thức sau đây đúng:

d(α, )= . Đặc biệt nếu thì

Chứng minh:

Để chứng minh định lý, trước hết chúng ta đưa ra một tính chất quan

trọng về Entropy. Giả sử Q0 và Q1 là 2 biến ngẫu nhiên được xác định trên tập

Q với phân bố xác suất lần lượt là , Còn f là hàm f: Q T.

Trong đó f(C) =

Khi đó,D( PT0 ‖ PT1 ) D( PQ0 ‖ PQ1 ).

Trong đó , lần lượt là hàm phân bố xác suất của biến ngẫu nhiên

f(Q0) và f(Q1)

Dựa vào tính chất trên của Entropy ta chứng minh định lý 2 như sau:

Trường hợp ảnh cover C không chứa thông điệp mật, các ảnh cover

được phân bố theo định luật Pc. Bây giờ chúng ta xét biến ngẫu nhiên f (C)và

tính phân bố xác suất của nó là . Trong trường hợp f( C) = 1 kẻ tấn công

mắc sai lầm loại 2. Do đó (1) = và vì vậy (0) = 1 - . Nếu ảnh cover

không chứa thông điệp mật, các ảnh cover sẽ có phân bố xác suất PS. Chúng

ta tính phân bố của của f(S).

56

Trong trường hợp f(S) = 0 thì kẻ tấn công mắc sai lầm loại I, vì kẻ tấn

công ta không phát hiện được một thông điệp nào cả. Vì vậy (0) = và vì

(1) = .

Do đó Entropy D( ‖ ) có thể được biểu diễn dưới dạng:

D( ‖ ) = = (1- ) + = d( , )

Nhưng theo nhận xét trên ta có d( , ) = D( ‖ ) D( ‖ ) . Đó

là điều cần chứng minh vì = 0 (với β <1). Sử dụng quy tắc De

Lospital, ta có d( , ) = . Do đó nếu = 0

Đối với hệ thống Steganography có an toàn với = 0. Có thể kết

luận rằng: với xác suất , các kẻ tấn công bị động khó có thể tìm được

thông điệp giấu trong ảnh với xác suất rất cao. Nhưng tương đương với

. Do đó hệ thống được đánh giá là an toàn nếu lấy đủ bé.

Ứng dụng lý thuyết trên để xác định chất lượng của thuật toán đề xuất.

Giả sử, chúng ta có một ảnh cover C. Sử dụng thuật toán được đề xuất để giấu

thông điệp mật M vào ảnh C và nhận được ảnh kết quả stego S = C(M). Bây

giờ ta xác định các hàm phân bố xác suất PC và PS. Các bước tiến hành như

sau:

Bước 1: Ta trích chọn các LSB của dữ liệu ảnh C và S bắt đầu từ khởi

điểm giấu tin đã quy ước khi thực hiện thuật toán giấu, giả sử ta được dãy sau:

C1: 101010100010011111100010011111

S1: 101010100110011111100010011111

Bước 2: Tính phân bố xác suất của bit 0,1 trên C1 và S1

Phân bố xác suất của bít 1 trên C1 là PC11 = 17/10 = 0.55

Phân bố xác suất của bit 0 trên C1 là PC10 = 13/30 = 0.45.

57

Phân bố xác suất của bit 1 trên S1 là PS11 = 16/30 = 0.54

Phân bố xác suất bit 0 trên S1 là PS10 = 14/30 = 0.46.

Bước 3: tính tổng Ʃ = Ʃqϵ {0,1} PC10(q) log2 (PC10(q)/PS10 (q) )

= (0.45xlog2(0.45/0.46)) + (0.55 x log2(0.55/0.54))

= - 0,0142 + 0,0145 = 0,0003

Bước 4: Theo định lí 1 thì ε = 0 là thuật toán an toàn tuyệt đối. Vậy

thuật toán đạt mức an toàn nếu ε ≤ 0,05. Ʃ = 0,0003 < 0,05 vậy thuật toán giấu

của ta là an toàn hoàn hảo.

3.5 So sánh độ an toàn của 2 hệ thống nêu trên

Hệ thống 1 ( Thuật toán đã được công bố)

Hệ thống 2 ( Thuật toán xây dựng trong chương 3)

Cho cặp ảnh C, S1( S1 là ảnh stego thu được từ ảnh C và thuật toán giấu

tin đã được công bố).

Trích chọn, từ khởi điểm giấu tin, các LSB của ảnh C và của ảnh S1

được kí hiệu lần lượt là C1C2….Cn và S1S2…Sn ( n là độ dài thông điệp).

Ta tính số lần ( tần số) xuất hiện được các số 0 và các số 1 trong C và

trong S1. Tần số đó được ký hiệu lần lượt là: {fC(0), fC(1)} và

Bây giờ, ta tính =

Nếu - an toàn. Trái lại Nếu thì hệ thống S1 đạt

- an toàn ( ở đây ta lấy = thì hệ thống S1 là không đặt

0,05). Trong đó . là ước lượng tốt nhất theo thứ tự của PC và

Bây giờ tính tần số 0 và 1 xuất hiện trong S2 = S21S22…..S2n

58

Kí hiệu và lần lượt là ước lượng không chệch tốt nhất của

xác suất và .

Để so sánh độ an toàn của hệ thống S1 và S2 trên ảnh cover C ta có bổ

đề sau:

Bổ đề 1(*)

Điều kiện cần và đủ để hệ thống S2 tốt hơn hệ thống S1 là bất đẳng thức

sau đây được duy trì:

Chứng minh

a. Giả sử, bất đẳng thức (3) được duy trì. Ta sẽ chứng minh rằng

, tức là sẽ chứng minh

rằng

(*) Bổ đề do tác giả đề xuất.

Thật vậy, ta có:

=

= (theo giả

thiết). Vậy điều kiện đủ được chứng minh

b. Chứng minh điều kiện cần

59

Giả sử D( D( ) ta sẽ chứng minh rằng bất đẳng thức (3)

được thỏa mãn.

Theo giả thiết cần, ta có:

0 D( D( )

1 =

=

= = .

Điều phải chứng minh

Bổ đề 1 vừa được đề xuất ở trên làm cơ sở để so sánh hai hệ thống

steganography. Thật vậy:

+ = (0) + (1) (4)

Nếu hệ thức (4) thì hệ thống Steganography S2 tốt hơn hệ thống

Steganography S1 và ngược lại thì hệ thống S1 tốt hơn S2 .

3.6 Nhận xét đánh giá

Thuật toán nhúng và trích chọn khá đơn giản và rất nhanh chóng.

Do sự thay đổi rất ít các LSB của các pixel dữ liệu ảnh, nên chúng có

thể được mở rộng để giấu vào bit gần thấp nhất (next to last bit) của các pixel

ảnh mà không sợ làm giảm độ trong sáng của ảnh môi trường.

Độ bảo mật được đảm bảo nếu khởi điểm giấu và ma trận được giữ bí

mật. Khởi điểm có thể thay đổi cho từng lần giấu, còn ma trận H có thể được

dùng lâu dài (hàng năm) việc thay đổi ma trận H cũng khá đơn giản nhưng

phải theo đúng lý thuyết.

60

Thuật toán xây dựng có thể giấu được nhiều tin hơn nhưng vẫn đảm

bảo được chất lượng ảnh sau khi giấu.

Thuật toán giấu thông tin trong các bit LSB nhưng mỗi một chữ cái

được giấu vào trong một bit LSB nên nó làm cho số bit LSB thay đổi it nhất.

Do sự thay đổi các LSB trong ảnh môi trường rất ít (khoảng 2-3%) nên các

phương pháp phát hiện bằng kỹ thuật thống kê rất khó.

Tuy nhiên trong quá trình giấu và trích chọn đòi hỏi phải có độ chính xác

cao, nếu không việc trích chọn sẽ gặp khó khăn vì chỉ cần sai một bit là mất

luôn cả bit chứa ký tự giấu.

3.7. Chương trình thử nghiệm

3.7.1 Môi trường cài đặt

Hệ thống thử nghiệm được xây dựng trên môi trường lập trình Visual

Studio 12, sử dụng ngôn ngữ lập trình C#.

Thực hiện trên Windown 8.1.

3.7.2 Mô hình hệ thống

Hệ thống gồm hai phân hệ:

Phân hệ giấu tin: Thực hiện giấu 1 thông điệp

Input: - Ảnh kỹ thuật số F cấp nxn

- Thông điệp cần giấu M

Output: - Ảnh S chứa nội dung thông điệp M

Phân hệ tách tin: Kiểm tra, phát hiện khả năng có tồn tại tin giấu trong ảnh và

tách đoạn tin giấu.

Input: Ảnh S chứa thông điệp giấu.

Output: Kết luận ảnh có giấu tin hay không? Nếu có hiển thị thông điệp

được giấu và thông báo tách tin thành công.

61

Tập dữ liệu thử nghiệm

- Ảnh kỹ thuật số sử dụng:

- 10 ảnh có nội dung, độ phân giải khác nhau.

- Thông điệp bí mật: Tiếng Việt có dấu, độ dài từ 10% - 20% so với

dung lượng ảnh.

Kết quả thử nghiệm:

Mô hình thử nghiệm đã đáp ứng được yêu cầu ban đầu đề ra của luận

văn. Thuật toán giấu/tách tin cho kết quả nội dung chính xác.

Một số đánh giá ảnh sau khi giấu tin:

- Kích thước ảnh sau khi giấu tin mật không thay đổi;

- Quan sát bằng mắt thường khi so sánh ảnh có tin giấu với ảnh gốc

không có sự khác biệt;

- Thử nghiệm phân tích ảnh bằng phương pháp phân tích trực quan (tăng

cường các bít LSB) cũng không phát hiện được ảnh có tin giấu.

62

Một số giao diện của chương trình:

Hình 3. 2: Giao diện chính của chương trình

Hình 3. 3: Giao diện giấu tin

63

Hình 3. 4: Giao diện giấu file dữ liệu

Hình 3. 5: Giao diện tách tin

64

KẾT LUẬN

Hiện nay giấu thông tin trong ảnh là một bộ phận chiếm tỉ lệ lớn nhất

trong các chương trình ứng dụng hệ thống giấu tin trong đa phương tiện bởi

lượng thông tin được trao đổi bằng ảnh là rất lớn và hơn nữa giấu thông tin

trong ảnh cũng đóng vai trò hết sức quan trọng trong hầu hết các ứng dụng

bảo vệ an toàn thông tin. Chính vì vậy mà thông qua việc nghiên cứu các kỹ

thuật giấu tin mật trên ảnh, luận văn phân tích đánh giá ưu nhược điểm của

các kỹ thuật đã có từ đó làm cơ sở để xây dựng thuật toán giấu tin mật đơn

giản dễ cài đặt và khắc phục được một số nhược điểm của các thuật toán trước

đây và thiết kế các hệ thống giấu tin mật trên ảnh phục vụ tối đa nhu cầu

người sử dụng.

Đồng thời luận văn cũng tìm hiều một số thuật toán phát hiện ảnh có

giấu tin, đặc biệt là giấu tin mật. Chủ yếu là tiếp cận bằng phương pháp thống

kê.

Trên cơ sở đó luận văn đã trình bày và đạt được các kết quả chính như

sau:

1. Nghiên cứu tài liệu, hệ thống lại các vấn đề sau:

- Tổng quan về giấu tin

- Một số kỹ thuật giấu tin mật trong ảnh kỹ thuật số

2. Tìm hiểu xây dựng một thuật toán giấu tin mật đơn giản

3. Thử nghiệm và cài đặt thuật toán giấu tin mật đã xây dựng

Hướng phát triển của luận văn:

Luận văn đã trình bày bài toán giấu tin mật và tìm hiểu, xây dựng thuật

toán giấu tin mật đơn giản, tuy nhiên, thuật toán xây dựng vẫn còn tồn tại một

vài vấn đề chưa được giải quyết đó là:

Việc xác định khởi điểm i và phải có phương thức trao đổi khởi điểm i.

Mã hóa thông tin trước khi giấu tin và trao đổi khóa.

65

Vì thời gian nghiên cứu có hạn, trình độ hiểu biết của bản thân em còn

nhiều hạn chế nên bài luận văn của em không tránh khỏi những thiếu sót, em

rất mong nhận được sự góp ý quý báu của tất cả các thầy cô giáo để em có thể

hoàn chỉnh hơn nữa luận văn.

Em xin chân thành cảm ơn!

66

TÀI LIỆU THAM KHẢO

Tài liệu tiếng việt:

[1]. Nguyễn Xuân Huy, Trần Quốc Dũng (2003), Giáo trình giấu tin và

thủy vân ảnh, Trung tâm thông tin tư liệu, TTKHTN-CN.

[2]. Trần Văn Sự, Nguyễn Văn Tảo, Trần Thị Lượng (2015), Giáo trình

an toàn bảo mật thông tin, Nhà xuất bản Đại học Thái Nguyên.

[3] Hồ Thị Hương Thơm, Hồ Văn Canh, Trịnh Nhật Tiến (2016), “Ước

lượng xấp xỉ giấu tin trên miền LSB của ảnh”, Kỷ yếu hội thảo Quốc gia

- một số vấn đề chọn lọc của CNTT và truyền thông lần thứ XII, Đồng

Nai, PP. 488 – 495

[4] Trịnh Nhật Tiến (2008), Giáo trình an toàn dữ liệu, Hà Nội.

Tài liệu tiếng anh:

[5] Alfred J. Menezes, Paul C. Van Oorschot, Scott A. Vanstone (1999),

Handbook of Applied cryptography, CRC press Boca Raton NewYork

London Tokyo, PP.57-65

[6] C. Cabin (1998), “An information Hiding – Theoretic model for

steganography”, In D. Aucsmith, editor, Information Hiding, 2nd

Intemational workshop, Volume 1525 of LNCS, Springer – Verlag, New

York, PP. 306 – 318

67

[7] Chi - Kwong Chan*, L. M. Cheng, Hiding data in Images by simple

LSB substitution, Pattern recognition 37 (2004) 469 – 474.

[8] Eric Cole (2003), " Hiding in Plain Sight: Steganography and the Art

of Covert Communication", Wiley Publishing, Inc.,

[9] Firas A. Jassim, Hind E.Qassim, "Five Modulus Method for Image

Compression", Signal and Image Processing: An International Journal

(SIPIJ), vol.3,No.5, October 2012.

[10] Neal Koblitz (1987), A course in number theory and cryptography,

Springer – Verlag New York, Berlin Heidelberg, London, Paris, Tokyo.

[11] Stephen B.Wicker (1995), Error Control Systems for Digital

communication and storage, Pretice Hall.