Thuật toán giấu tin dựa trên mã Hamming

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu các kỹ thuật ẩn tin, giấu tin kết hợp mã hóa trong môi trường đa phương tiện để đảm bảo an toàn thông tin và xây dựng ứng dụng (Trang 43 - 50)

Chương 2: MỘT SỐ PHƯƠNG PHÁP GIẤU TIN TRÊN ẢNH

2.3. Một số thuật toán giấu tin trong ảnh

2.3.4. Thuật toán giấu tin dựa trên mã Hamming

Thuật toán này cho phép giấu đƣợc một lƣợng thông tin lớn nhƣng lại làm thay đổi rất ít các LSB của ảnh gốc ( chỉ khoảng 3% ) và do đó việc phát hiện bằng kỹ thuật thống kê nhƣ hiện nay là rất khó khăn. Thuật toán này dựa trên các lý thuyết về đa thức nguyên thủy và ma trận kiểm tra tính chẵn lẻ của mã Hamming đã đƣợc trình bày ở trên. Sau đây là nội dung của thuật toán.

2.3.4.2. Nội dung thuật toán

Xây dựng ma trận kiểm tra chẵn lẻ (H) H là ma trận cấp 5x31 nhƣ sau:

H=(𝛼0,𝛼1,𝛼2, …,𝛼30)(*)

(Chú ý:𝛼 là nghiệm của đa thức nguyên thủy 𝑝 𝑥 = 𝑥5 + 𝑥2 + 1

Chú ý rằng: ma trận H phụ thuộc vào đa thức nguyên thủy trong GF(2n). Ở đây chúng tôi chọn đa thức nguyên thủy là 𝑝 𝑥 = 𝑥5+ 𝑥2+ 1. Nếu muốn thay đổi ma trận H thì chúng ta phải tìm đa thức nguyên thủy khác (cũng trong trường GF(25)).

Bằng lý thuyết người ta đã chứng minh được rằng: Trong GF(2n), có ∅(2𝑛−1)

𝑛 đa thức nguyên thủy xem [3].

Mô phỏng các bước tạo ma trận H :

Bước 1 : Chọn đa thức nguyên thủy : 𝑝 𝑥 = 𝑥5+ 𝑥2+ 1

Bước 2 : Xây dựng ma trận đặt trưng T5x5 của đa thức 𝑝 𝑥 = 𝑥5+ 𝑥2+ 1 𝑝 𝑥 = 𝑥5 + 0. 𝑥4+ 0. 𝑥3 + 1. 𝑥2+ 0. 𝑥1+ 1. 𝑥0

a0=1 ; a1=0 ; a2=1 ; a3=0 ; a4=0

=> Ma trận đặc trƣng T5x5 là:

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

𝑎0 𝑎1 𝑎2 𝑎3 𝑎4 =

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 Bước 3: Xây dựng ma trận kiểm tra tính chẵn lẻ

Chọn 𝛼0 = 0 0 0 0 1

=>𝛼1= T5x5 * 𝛼0

=>𝛼1 =

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0

× 0 0 0 0 1

= 0 0 0 1 0 Tương tự :

𝛼2 = T ∗ 𝛼1 =

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0

× 0 0 0 1 0

= 0 0 1 0 0

𝛼3 = T ∗ 𝛼2 =

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0

× 0 0 1 0 0

= 0 1 0 0 0

….

𝛼30 = T ∗ 𝛼29 =

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0

× 0 1 0 0 0

= 1 0 0 0 0

H=(𝛼0,𝛼1,𝛼2, …,𝛼30)

(LUAN.van.THAC.si).nghien.cuu.cac.ky.thuat.an.tin..giau.tin.ket.hop.ma.hoa.trong.moi.truong.da.phuong.tien.de.dam.bao.an.toan.thong.tin.va.xay.dung.ung.dung(LUAN.van.THAC.si).nghien.cuu.cac.ky.thuat.an.tin..giau.tin.ket.hop.ma.hoa.trong.moi.truong.da.phuong.tien.de.dam.bao.an.toan.thong.tin.va.xay.dung.ung.dung

𝐒𝐓𝐓 𝟏 𝟐 𝟑 𝟒 𝟓 𝟔 𝟕 𝟖 𝟗 𝟏𝟎 𝟏𝟏 𝟏𝟐 𝟏𝟑 𝟏𝟒 𝟏𝟓 𝟏𝟔 𝟏𝟕

0 0 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1

0 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1

H = 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 0

0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0

1 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0

𝟏𝟖 𝟏𝟗 𝟐𝟎 𝟐𝟏 𝟐𝟐 𝟐𝟑 𝟐𝟒 𝟐𝟓 𝟐𝟔 𝟐𝟕 𝟐𝟖 𝟐𝟗 𝟑𝟎 𝟑𝟏

1 0 0 0 1 1 0 1 1 1 0 1 0 1

0 0 0 1 1 0 1 1 1 0 1 0 1 0

0 0 1 1 0 1 1 1 0 1 0 1 0 0

0 1 1 0 1 1 1 0 1 0 1 0 0 0

1 1 0 1 1 1 0 1 0 1 0 0 0 0

Thuật toán giấu thông điệp Giấu thông điệp

Input:

a. Một ảnh cover C có kích cỡ phù hợp

b. Thông điệp M = m1m2…mn 𝑚𝑖 ∈ 𝐴 = {𝑎, 𝑏, 𝑐, … , 𝑧} i =1,2,…,n (ma trận H và khởi điểm nhúng (đƣợc giả thiết là đã có trong thƣ viện)).

Output: Ảnh stego S

Các bước của thuật toán được thực hiện như sau:

Step 1: Chuyển M về dạng nhị phân.

Chẳng hạn với 𝑖 = 1, 𝑛, ta có

mi=mi1 mi2… mi5 với mij {0,1}, 𝑖 = 1, 𝑛, 𝑗 = 1,5 Step 2: Với i =1

1. Chọn khởi điểm (pixel của C) để bắt đầu giấu dữ liệu vào đó (việc chọn khởi điểm là ngẫu nhiên nhưng phải được sự thỏa thuận trước giữa người gửi và người nhận đích thức). Để đơn giản, ta giả sử khởi điểm được chọn là LSB của pixel thƣ nhất của ảnh gốc C.

2. Trích chọn các LSB lần lƣợt từ pixel thứ nhất, thứ 2,… đến pixel thứ 31 từ ảnh cover C. Ta nhận đƣợc (với i=1) một vectơ nhị phân 31 thành phần là x1=(x11,x12,…,x131). Với i = 1,2,…,n ta trích chọn đƣợc xi = (xi,31(i-1)+1, …, xi,3i)

Step 3: Với i = 1,2,…,n tính:

𝑙𝑖 = 𝑚𝑖 ⊕ 𝐻𝑥𝑖 (x’ là chuyển vị của vectơ x)

Mỗi i, 𝑙𝑖 = (𝑦𝑖1𝑦𝑖2, … , 𝑦𝑖5)

Step 4 : Tìm trong ma trận H (gồm 31 cột tất cả) H=(hij)5x31. Nếu một cột hij của ma trận H sao cho ℎ𝑖𝑗 = 𝑙𝑖 thì bít thứ j của vectơ xi đƣợc đảo bít tức là 𝑦𝑖𝑗 = 𝑥𝑖𝑗 1, còn (xi1, …., xi31) không thay đổi (hi ký hiệu là cột thứ j của ma trận H)

Trích chọn thông điệp

Thuật toán trích chọn thông điệp được tiến hành theo các bước sau đây.

Input: Ảnh Stego S (tất nhiên đã biết đƣợc ma trận H và khởi điểm giấu).

Output: Thông điệp M = m1m2…mn 𝑚𝑖 ∈ 𝐴, 𝑖 = 1, 𝑛

Step 1 : Xác định pixel khởi điểm (point of departure) của ảnh stego S và trích chọn từ đó lần lƣợt tạo thành từng khối (block), mỗi khối có độ dài (bit) bằng nhau và bằng 31. Ta đƣợc :

y1=(y11,y12, …, y1,31), … một cách tổng quát, với i=1,2,…,n yi = (yij), i=(31-i)+1,…,31i

Step 2 : Cho i=1,2,…,n tính

𝑚𝑖 = 𝐻𝑦𝑖 , 𝑚𝑖 = (𝑚𝑖1, 𝑚𝑖2, … , 𝑚𝑖5) Step 3 : Cho i=1,2,…,n, chuyển mi thành các ký tự.

1. Ví dụ ứng dụng thuật toán

Cho thông điệp M có dãy nhị phân nhƣ sau : 11011 01010 11101 11111 10010.

Bước 1 : Chuyển M thành dãy nhị phân ta có : 𝑀 → 11011

𝑚1

01010

𝑚2

11101

𝑚3

11111

𝑚4

10011

𝑚5

(1)

Bước 2 : Chọn khởi điểm, để đơn giản khởi điểm được chọn là pixel thứ nhất của ảnh cover C, khi đó với 𝑖 = 1,5 , ta trích đƣợc 5 vectơ 31 thành phần nhị phân từ các LSB của C (bắt đầu từ khởi điểm cho trước):

x1 = x11, x12, … , x1,31 x2 = (x2,32, x2,33, … , x2,62) x3 = x3,63, x3,64, … , x3,93 (2)

x4 = (x4,94, x4,95, … , x4,124) x5 = (x5,125, x5,126, … , x5,155) Bước 3 : Với 𝑖 = 1,5 , tính

(LUAN.van.THAC.si).nghien.cuu.cac.ky.thuat.an.tin..giau.tin.ket.hop.ma.hoa.trong.moi.truong.da.phuong.tien.de.dam.bao.an.toan.thong.tin.va.xay.dung.ung.dung(LUAN.van.THAC.si).nghien.cuu.cac.ky.thuat.an.tin..giau.tin.ket.hop.ma.hoa.trong.moi.truong.da.phuong.tien.de.dam.bao.an.toan.thong.tin.va.xay.dung.ung.dung

𝑙𝑖 = 𝑚𝑖 ⊕ 𝐻𝑥𝑖 mi cho ở (1)

xi cho ở (2)

H=(hij)5x31 đã biết ở (*) Cụ thể :

x1 = (0100110011101000110101110010001) x2 = (1001101010001101100001011011010) x3 = (1011101011000111101010110110000) x4 = (0010110100010111010010110111001) x5 = (1010010101001110100010111010100) Tính yi :

𝑙1 = 𝑚1 ⊕ 𝐻𝑥1 = (11011)⊕ 𝐻𝑥1 = 1 1 0 1 1

⊕ 0 0 1 0 1

= 1 1 1 1 0

𝑙2 = 𝑚2 ⊕ 𝐻𝑥2 = (01010)⊕ 𝐻𝑥2 = 0 1 0 1 0

⊕ 0 0 1 0 1

= 0 1 1 1 1

𝑙3 = 𝑚3 ⊕ 𝐻𝑥3 = (11101)⊕ 𝐻𝑥3 = 1 1 1 0 1

⊕ 0 1 1 1 1

= 1 0 0 1 0

𝑙4 = 𝑚4 ⊕ 𝐻𝑥4 = (11111)⊕ 𝐻𝑥4 = 1 1 1 1 1

⊕ 0 1 1 0 0

= 1 0 0 1 1

𝑙5 = 𝑚5 ⊕ 𝐻𝑥5 = (10011)⊕ 𝐻𝑥5 = 1 0 0 1 1

⊕ 0 1 0 0 1

= 1 1 0 1 0 Vậy

𝑙1 trùng với cột thứ 24 của ma trận H, 𝑙2 trùng với cột thứ 25 của ma trận H, 𝑙3 trùng với cột thứ 30 của ma trận H, 𝑙4 trùng với cột thứ 26 của ma trận H, 𝑙5 trùng với cột thứ 28 của ma trận H.

Ta có 5 vectơ nhị phân 31 thành phần của các LSB của ảnh Stego là:

y1 = (0100110011101000110101100010001) y2 = (1001101010001101100001010011010) y3 = (1011101011000111101010110110010) y4 = (0010110100010111010010110011001) y5 = (1010010101001110100010111011100) Việc trích chọn đơn giản chỉ là tính

𝑚𝑖 = 𝐻𝑦𝑖 𝑖 = 1,2,3,4,5

𝑚1 = 𝐻𝑦1 = 1 1 0 1 1

; 𝑚2 = 𝐻𝑦2 = 0 1 0 1 0

𝑚3 = 𝐻𝑦3 = 1 1 1 0 1

; 𝑚4 = 𝐻𝑦4 = 1 1 1 1 1

𝑚5 = 𝐻𝑦5 = 1 0 0 1 1 Ta đƣợc: 𝑀 → 11011

𝑚1

01010

𝑚2

11101

𝑚3

11111

𝑚4

10011

𝑚5

2.3.4.3. Phân tích đánh giá thuật toán

Nhƣ vậy, sau khi nhúng thông điệp M ảnh S chỉ khác ảnh C ở 5 vị trí LSB là pixel thứ 24, 25, 30, 26 và 28. Chúng đƣợc phân bố rất ngẫu nhiên tỷ lệ nhúng trong trường hợp này nhiều nhất là 5

5𝑥31 = 1

31 ≈ 3%, trong lúc đó lƣợng thông tin giấu đƣợc là khá lớn.

(LUAN.van.THAC.si).nghien.cuu.cac.ky.thuat.an.tin..giau.tin.ket.hop.ma.hoa.trong.moi.truong.da.phuong.tien.de.dam.bao.an.toan.thong.tin.va.xay.dung.ung.dung(LUAN.van.THAC.si).nghien.cuu.cac.ky.thuat.an.tin..giau.tin.ket.hop.ma.hoa.trong.moi.truong.da.phuong.tien.de.dam.bao.an.toan.thong.tin.va.xay.dung.ung.dung

Xét một cách tổng quát, thuật toán có thể giấu đƣợc r bit vào trong một đoạn 2r-1 với chỉ thay đổi nhiều nhất là 1 bit trong đoạn đó, tức là 2r -1 bit môi trường có thể giấu được r bit dữ liệu. Do đó với kích thước đoạn cố định thì tỷ lệ giấu dữ liệu lớn nhất là:

𝑓 = 𝑟 2𝑟 − 1 Và tỉ lệ thay đổi cao nhấtảnh môi trường là :

𝑡 = 1 2𝑟 − 1

Nhận thấy đây là một hàm đơn điệu giảm theo r, vì vậy muốn có tỉ lệ giấu tin f càng lớn thì r càng nhỏ. Tuy nhiên, độ an toàn của thông tin lại tỉ lệ thuận với số bit r được giấu trong một đoạn : r càng lớn thì t - tỉ lệ thay đổi môi trường càng nhỏ, độ an toàn càng cao nhƣng tỉ lệ giấu sẽ giảm, và ngƣợc lại, r càng nhỏ thì độ an toàn càng thấp nhƣng tỉ lệ giấu tin sẽ cao. Do đó tỉ lệ giấu tin sẽ tỉ lệ nghịch với độ an toàn.

Số bit giấu trong mộtđoạn

r

Tỉ lệ giấu tin 𝒇 = 𝑟

2𝑟 − 1

Tỉ lệ thay đổi 𝒕 = 1

2𝑟 − 1

1 100% 100%

2 66,67% 33,33%

3 42,86% 14,29%

4 26,66% 6,67%

5 16,13% 3,22%

6 9,52% 1,59%

7 6,3% 0,79%

8 3,14% 0,39%

Bảng 2.2: Tỉ lệ giấu tin và tỉ lệ thay đổi ảnh gốc phụ thuộc vào r số bít giấu trong một đoạn

Thông thường chúng ta có thể chọn r = 4 hoặc r=5 vì tỉ lệ thay đổi của nó đủ nhỏ để các kĩ thuật phát hiện có giấu tin nhƣ kỹ thuật thống kê, xác suất khó có thể phát hiện mà vẫn đảm bảo tỉ lệ giấu là khá lớn. Vì theo kỹ thuật phát hiện giấu tin thống kê thì những ảnh có thay đổi trên 10% thì có khả năng phát hiện đƣợc là cao.

Trong trường hợp này, chúng ta chọn r=5, do đó có thể dấu 5 bit vào trong một đoạn 25-1=31 bit mà chỉ thay đổi nhiều nhất 1 bit. Nhƣ vậy, thuật toán này đã có cải tiến hơn so với những thuật toán khác là chỉ thay đổi nhiều nhất một bit trong một

đoạn bit 2r-1.So với thuật toán CPT thì phải cần thay đổi nhiều nhất 2 bit trong một khối để giấu.

Thuật toán này sử dụng một đa thức nguyên thủy nhằm xây dựng một ma trận kiểm tra để giấu đƣợc một dãy nhiều bit vào trong mỗi đoạn bit, và đa thức này cũng chính là một thành phần bí mật. Tuy nhiên so với CPT, thành phần bí mật của CPT gồm 2 ma trận khóa nên độ an toàn của thuật toán CPT cao hơn.

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu các kỹ thuật ẩn tin, giấu tin kết hợp mã hóa trong môi trường đa phương tiện để đảm bảo an toàn thông tin và xây dựng ứng dụng (Trang 43 - 50)

Tải bản đầy đủ (PDF)

(69 trang)