Tải bản đầy đủ (.ppt) (29 trang)

Báo cáo LỖ HỔNG TRONG CÁC THUẬT TOÁN GIẤU TIN Nghiên cứu với một số thuật toán dấu tin trong ảnh số

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.33 MB, 29 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KHOA CÔNG NGHỆ THÔNG TIN
LỖ HỔNG TRONG CÁC THUẬT TOÁN GIẤU TIN
( Nghiên cứu với một số thuật toán dấu tin trong ảnh số )
Học viên : Nguyễn Quang Đại
GV hướng dẫn : PGS.TS Trịnh Nhật Tiến
Môn học : Mật mã và an toàn dữ liệu
Hà Nội - 2014
Nội dung chính

Giới thiệu

Các yếu tố ảnh hưởng việc giấu tin

Thuật toán giấu tin

Phân tích lỗ hổng của thuật toán

Giải pháp khắc phục

Nhận xét và các hướng nghiên cứu khác

2
Giới thiệu

Giấu tin là một kỹ thuật nhúng (giấu) một thông tin nào đó vào trong
một vật mang tin khác (hay gọi là môi trường giấu tin) sao cho sự biến
đổi của môi trường giấu tin là rất khó nhận biết, khiến đối phương bằng
mắt thường khó phát hiện được vật mang tin đã được giấu một tin mật
và khó giải mã nhận biết được tin mật giấu trong đó.



Môi trường giấu tin: Văn bản, hình ảnh, âm thanh, phân vùng đĩa cứng


Lỗ hổng bảo mật là những nguy cơ tiềm ẩn hay những điểm yếu trong
hệ thống hoặc dịch vụ nào đó mà dựa vào đó kẻ tấn công có thể khai
thác, xâm nhập trái phép để thực hiện chiếm đoạt thông tin hoặc phá
hoại chúng.
3
Các yếu tố ảnh hưởng tới giấu tin trong ảnh

Khó phát hiện bởi yếu tố con người - tính “vô hình”

Tránh các thao tác biến đổi trên đối tượng chứa – tính
bền vững

Dung lượng dữ liệu giấu

Tính an toàn

Độ phức tạp tính toán
4
Thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1

Yêu cầu bài toán:

Input:

File ảnh Bitmap đen trắng: FF (sẽ mang tin giấu)


Khoá: K (để giấu và trích tin), là khóa bí mật và là kích
thước của khối nhỏ được tách từ F

File thông tin cần giấu: Fb

Output:

File ảnh đã giấu tin file tin mật Fp: FF’
5
Thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1

1) Tiền xử lí:

Chuyển file thông tin cần giấu Fb sang dạng nhị phân b.

Đọc header của ảnh (phần chứa thông tin ảnh) để lấy thông
tin ảnh. Sau đó đọc toàn bộ dữ liệu ảnh vào một mảng hai
chiều A để sử dụng cho việc giấu tin.

2) Thuật toán:

Bước 1: Chia ảnh mang F thành các khối nhỏ kích thước K
(m×n).

Bước 2: Sau khi chia F thành các khối nhỏ, ta chọn các khối
để giấu tin, ta có thể chọn ngẫu nhiên các khối, nhưng để
cho đơn giản ta coi như các khối được chọn tuần tự từ khối
đầu tiên cho đến khi hết thông tin cần giấu.
6
Thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1


Mỗi khối nhỏ này sẽ được dùng để giấu một bit thông tin theo
quy tắc sau:

Nếu muốn giấu bit 1 vào 1 khối thì phải thỏa mãn điều kiện:

(L) Tổng các bit 1 trong khối đó là số “lẻ” ( tức là cùng tính lẻ bit 1).

Nếu muốn giấu bit 1 vào 1 khối nhưng không thỏa mãn điều kiện
(L) thì trong khối đó chọn ngẫu nhiên một bit và thay đổi giá trị của
nó (từ 0 thành 1 hay từ 1 sang 0) để thỏa mãn điều kiện (L).

Nếu muốn giấu bit 0 vào một khối thì phải thỏa mãn điều kiện:

(C) Tổng các bit 1 trong khối đó là số “chẵn” ( tức là cùng tính lẻ bit
1).

Nếu muốn giấu bit 0 vào 1 khối nhưng không thỏa mãn điều kiện
(C) thì trong khói đó chọn ngẫu nhiên một bit và thay đổi giá trị của
nó (từ 0 thành 1 hay từ 1 sang 0) để thỏa mãn điều kiện (C).
7
Thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1

Giải pháp thực hiện

Để xử lý các điều kiện trên ta sử dụng tính chất của “đồng dư” để giải
quyết bài toán:

Giả sử ta cần giấu một bit dữ liệu b vào khối B. Ký hiệu SUM(B) là tổng số
điểm đen trong khối B, kí hiệu x = y (mod z) cho biết hai số tự nhiên x và y

có cùng số dư khi chia cho z (x và y đồng dư theo modulo z). Như vậy biểu
thức x ≡ y (mod 2) cho biết x và y có cùng tính chẵn lẻ vì theo tính chất đối
xứng của “đồng dư” thì x ≡ y (mod 2) tương đương với y ≡ x (mod 2) 
Ta quy bài toán về hai trường hợp:

Trường hợp thứ nhất: SUM(B) = b (mod 2), khối B đã thoả mãn tính chất để
giấu bit dữ liệu b, ta không cần thay đổi và xem như bit b đã được giấu.

Trường hợp thứ hai: SUM(B) ≠ b (mod 2). Trường hợp này phải sửa B để
đảo tính chẵn lẻ của SUM(B). Dễ thấy ta chỉ cần đảo một bit bất kỳ trong B
thì SUM(B) sẽ tăng hoặc giảm 1 đơn vị. Gọi B’ là khối kết quả thu được từ
khối B sau khi đảo một bit trong B. Ta có SUM(B’) = b (mod 2).
8
Thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1

VD1: Giả sử ta phải giấu bit dữ liệu b = 1 vào
khối B như sau:
-
Ta đếm số bit 1 trong khối: Trong trường hợp ở
trên khối B có 6 bit 1, SUM(B)=6. Do đó, SUM(B) ≠
1 (mod 2). Như vậy khối B không thoả mãn yêu
cầu để giấu bit 1. Muốn giấu bit 1 vào khối này ta
cần phải thay đổi khối bằng cách chọn một bit bất
kì và đổi từ 0 sang 1 hoặc từ 1 sang 0. Giả sử thay
đổi như hình sau:
-
Ví dụ 2: Giả sử vẫn với khối B đã cho như
trên nhưng ta phải giấu bit dữ liêu b = 0 vào
khối đó. Ta có, do SUM(B) = 6, nên SUM(B) = 0
(mod 2 ). Khối B được bảo toàn và bit dữ liệu

b=0 xem như đã được giấu.
9
Thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1
Quá trình giải tin:
Input:
F’ là ảnh đã được giấu dãy bí mật b
K là khóa bí mật, đó là kích thước của khối nhỏ (Được xác định trước)
Output:
F là ảnh mang (ảnh trước khi giấu tin mật), b là dãy bit bí mật cần giấu
Bước 1:
Đọc header của ảnh để biết các thông tin ảnh.
Đọc phần dữ liệu ảnh vào mảng hai chiều (ma trận) F.
Bước 2:
Chia ảnh F mang thành các khối nhỏ với kích thước K
Theo một thứ tự xác định trước, xét từng khối nhỏ
Nếu tổng số bit 1 là “lẻ” thì ta thu được bit giấu là 1
Nếu tổng số bit 1 là “chẵn” thì ta thu được bit giấu là 0
* Như vậy, sau khi xử lý hết các khối đã giấu, ta thu được một chuỗi bit đã đem
giấu b. Bước tiếp theo ta chuyển từ file nhị phân sang file văn bản.
10
Kỹ thuật giấu tin M.Y.WU – J.H.LEE
Các phép toán với các bit
Gọi a và b là hai bit tuỳ ý, ta định nghĩa phép toán
and bit kí hiệu là ^ trên hai bit a và b, a∧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.
Ta định nghĩa phép toán cộng loại trừ (hay gọi là phép
toán so khác – XOR), kí hiệu là ⊕ trên hai bit a và b,
a⊕b sẽ cho ta giá trị 1 nếu a


b và giá trị 0 nếu a=b.
Thuật toán Wu - Lee
Input:
F là ảnh mang;
b là bit bí mật cần giấu;
K là khóa bí mật (nhị phân - ma trận m x n).
Output:
F là ảnh đã được giấu bit b bí mật
Kí hiệu SUM(F) là tổng các số 1 trong ma trận F
11
Kỹ thuật giấu tin M.Y.WU – J.H.LEE
Bước 1:
Chia F thành các khối nhỏ Fi có kích thước m x n (như ma trận K).
Bước 2:
Với mỗi Fi, kiểm tra điều kiện: 0 < SUM(Fi ^ K) < SUM (K)
Nếu thỏa mãn điều kiện trên thì chuyển sang bước 3
Nếu không thỏa mãn điều kiện trên thì giữ nguyên Fi
Bước 3:
Giả sửa bit cần giấu vào khối Fi là b. Thay đổi Fi như sau:
if ( SUM(Fi ^ K) mod 2 = b) then giữ nguyên Fi (coi như đã được giấu b)
else if ( SUM(Fi ^ K) mod 2 = 1 ≠ b (tức là b=0)) then
Chọn ngẫu nhiên 1 bit thoả mãn Fi[j,k]=0 & K[j,k]=1; lật Fi[j,k] thành 1;
else if (SUM(Fi ^ K) mod 2 = 0 ≠ b (tức là b=1) & SUM(Fi∧K)= SUM(K)–1) then
Chọn ngẫu nhiên 1 bit thỏa mãn F[j,k]=1 & K[j,k] =1; lật F[j,k] thành 0;
else if (SUM(Fi ^ K) mod 2 = 0 ≠ b và SUM(Fi ^ K) ≠ SUM(K)–1) then
Chọn ngẫu nhiên 1 bit thỏa mãn K[j,k] = 1; lật bit Fi[j,k] từ 0 thành 1 hoặc từ 1
thành 0;
return F; end Wu_Lee.
12
Kỹ thuật giấu tin M.Y.WU – J.H.LEE

Ví dụ minh họa
Giả sử ta cần giấu dãy bit D = 011 vào một ảnh F có kích thước 6×6 và một ma
trận khoá K có kích thước 3×3 như trong hình vẽ.
13
Kỹ thuật giấu tin M.Y.WU – J.H.LEE
Bước 1: Ta chia ảnh F thành 4 khối nhỏ mỗi khối sẽ có kích thước là 3×3 ta thu được F1, F2, F3,
F4. Xét với lần lượt các khối ảnh trên.
Bước 2:
Xét với khối ảnh F1:
SUM(F1∧K) = SUM(K) = 5 ; nên không giấu dữ liệu vào trong F1.
Vì không thỏa mãn điều kiện 0 < SUM(Fi ^ K) < SUM (K).
Xét tiếp với khối ảnh F2:
SUM(F2∧K) = 3 thỏa mãn 0 < SUM(Fi ^ K) < SUM (K).
Bước 3:
Ta có SUM(F2 ^ K) mod 2 = 3 mod 2 = 1 ≠ 0.
Ta chọn phần tử (2,3) để đảo bit trong khối F2 vì với phần tử này ta có F2[2,3]=0 và K[2,3]=1.
Sau khi đảo bit F2[2,3] ta thu được khối F’2 như trên hình vẽ (bit bị đổi được đánh giấu xám).
Xét tiếp với khối ảnh F3:
SUM(F3 ^ K) = 3 và bit cần giấu là bit thứ hai trong D, b=1 mà ta có SUM(F3 ^ K) mod 2 = 3 mod
2 = 1 = b. Khối F3 được giữ nguyên với ý nghĩa là khối đã được giấu bit b=1.
Xét tương tự tiếp với khối ảnh F4:
SUM(F4 ^ K) = 4, và bit cần giấu là bit cuối cùng của D, b=1 nên ta có SUM(F4∧K) mod 2 = 4
mod 2 = 0 ≠ b. Ta chọn phần tử (2,1) để đảo bit trong khối F4 vì với phần tử này ta có F4[2,1]=1
và K[2,1]=1. Sau khi đảo bit F4[2,1] ta thu được khối F’4 như trên hình vẽ (bit bị đổi được đánh
giấu xám).
14
Lỗ hổng trong các thuật toán giấu tin
Với thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1
Đây là thuật toán rất đơn giản để thực hiện giấu tin trong ảnh, với thuật toán trên ta có một
số đánh giá như sau:

Với các thuật toán giấu tin trong ảnh đen trắng qua thử nghiệm thấy rằng với kỹ thuật thay
đổi bit ngẫu nhiên, tức là sử dụng mọi khối F
i
để giấu tin và trong trường hợp cần thay đổi một
phần tử trong F
i
lại thay đổi một phần tử bất kỳ miễn sao đạt được bất biến thì chất lượng ảnh
sẽ không được tốt, xuất hiện khá nhiều điểm bất thường sau khi giấu tin
Ảnh đen trắng khó giấu hơn do mỗi điểm ảnh chỉ được biểu diễn bởi một bit hoặc 0 hoặc 1.
Nếu như ta đảo bit (từ 0 sang 1 hay ngược lại từ 1 sang 0) thì đều làm xuất hiện trên ảnh
những điểm đen, điểm trắng lạ. Như vậy vấn đề cốt yếu ở đây là làm thế nào hạn chế được
tối đa các điểm đen, điểm trắng lạ và làm thế nào để những bit bị thay đổi đó khó bị phát hiện
nhất
Với thuật toán này có độ an toàn không cao vì chỉ cần biết khóa K (kích thước các khôi giấu
tin là có thể dễ dàng tách ra được tin mật. Tuy nhiên, ta có thể làm thuật toán khó 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 đó, ta đã làm tăng được độ an
toàn của thuật toán vì khoá trong trường hợp này còn thêm cả dãy 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 thứ nhất
chọn khối 4×4, lần thứ hai chọn khối 4×8
15
Lỗ hổng trong các thuật toán giấu tin
Nhận xét đánh giá thuật toán Wu - Lee:
Với thuật toán này chúng ta cùng phân tích khả năng đối phương phát hiện ảnh
có giấu tin hoặc trong trường hợp xấu hơn đối phương có thể phát hiện được khóa
mật K.
Nếu có ảnh gốc F và ảnh đích F’ trong tay, bằng một thủ tục đối sánh đơn giản
đối phương có thể phát hiện ra ảnh có giấu tin hay không theo hệ thức
F = F’: ảnh không bị giấu tin,
F ≠ F’: ảnh có thể bị giấu tin.
Vì khóa mật K tham gia vào quá trình phân phối thông tin trên các khối. Ta tạm

chấp nhận giả thiết là khóa khóa K là cố định trong mỗi thuật toán giấu tin. Muốn
phát hiện khóa K đối phương phải biết các giá trị m, n biểu diễn kích thước khóa
và bản thân nội dung khóa K. Trong một số trường hợp, dù đối phương không biết
chính xác các đại lượng m và n, nhưng có thể suy đoán được phần nào sự bố trí
một số bit 1 trong khóa K thì mức độ an toàn cũng bị đe dọa.
16
Giải pháp khắc phục: Sử dụng ma trận láng giềng
17
Ma trận láng giềng của ma trận F cấp m×n là ma trận N
cấp m×n trong đó N[j,k] là số phần tử láng giềng thuộc
khối F của F[j,k] mà có giá trị khác với F[j,k].
Ví dụ:
Giải pháp khắc phục: Sử dụng ma trận láng giềng
Bước 1:
+ Tính SUM(Fi)
+ Nếu SUM(Fi) = 0 hoặc SUM(Fi) = mn thì bỏ qua không giấu tin vào khối Fi này,
chuyển sang xét khối Fi tiếp theo.
+ Nếu 0 < SUM(Fi) < mn thì chuyển sang bước 2 để giấu tin. Việc giấu tin vào Fi
thực chất là biến đổi Fi thành F’i sao cho thỏa mãn một bất biến nào đó. Bất biến
này cũng chính là dấu hiệu để có thể khôi phục lại thông tin đã giấu. Trong thuật
toán này bất biến cần đạt được là SUM(F’i ^ K) = b (mod 2), nói cách khác b phải
có cùng tính chẵn lẻ với SUM(F’i ^ K).
Bước 2:
+ Tính S = SUM(Fi ^ K)
+ Nếu S = b (mod 2) thì đã đạt bất biến, do đó trường hợp này giấu được một bit
vào Fi mà không cần phải biến đổi Fi.
+ Nếu S ≠ b (mod 2) thì cần phải biến đổi Fi sao cho đạt được bất biến. Để làm việc
này chỉ cần thay đổi một bit trong Fi sao cho tính chẵn lẻ của S thay đổi là được.
Đây là trường hợp giấu một bit vào Fi bằng cách thay đổi một phần tử trong Fi
18

Giải pháp khắc phục: Sử dụng ma trận láng giềng
Bước 3:
+ Xây dựng ma trận láng giềng Ni của ma trận Fi
+ Xác định phần tử Ni[j,k] có giá trị lớn nhất trong ma trận Ni mà có K[j,k] = 1
+ Thay đổi phần tử Fi[j,k]
* Với tính chất của ma trận láng giềng thì rõ ràng nếu Ni[j,k] có giá trị lớn nhất và
K[j,k] = 1 thì sau khi thay đổi Fi[j,k] ta sẽ nhận được F’i thỏa mãn bất biến và F’i[j,k]
có nhiều phần tử láng giềng giống nó nhất, do đó sẽ hạn chế các điểm bất thường
và nâng cao được chất lượng ảnh sau khi giấu tin.
19
Giải pháp khắc phục: Sử dụng ma trận láng giềng
+ Vì SUM(Fi) = 5 thỏa mãn 0 < SUM(Fi) < 9 nên có thể sử dụng Fi để giấu tin. Vì
SUM(Fi ^ K) = 3 khác tính chẵn lẻ với 0 nên để giấu được bit 0 vào Fi cần phải thay
đổi một phần tử trong Fi. Do Ni[2,2] có giá trị lớn nhất và K[2,2] = 1 nên phần tử
được chọn để thay đổi là Fi[2,2].
+ Kết quả sau khi giấu bit 0 vào Fi,
Ví dụ:
20
Giải pháp khắc phục: Sử dụng ma trận láng giềng
.
21
Giải pháp khắc phục: Sử dụng hệ số phân bố bit D
.
22
Giải pháp khắc phục: Sử dụng hệ số phân bố bit D
.
23
Giải pháp khắc phục: Sử dụng hệ số phân bố bit D
Ví dụ:
24

1 1 0 1
0 0 1 0
1 0 1 0
1 0 1 1
Khi đó ta có các hệ số phân bố bít theo các chiều là:
* D
h
= 2 + 2 + 3 + 2 = 9
* D
v
= 2 + 1 + 1 + 2 = 6
* D
c
= 1 + 1 + 2 + 2 + 1 = 7
* D
a
= 1 + 1 + 2 + 1 = 5
Suy ra hệ số phân bố bít 0,1 trên B là:
D = D
h
+ D
v
+D
c
+D
a
= 9 +6 +7 + 5 = 27
Giải pháp khắc phục: Sử dụng hệ số phân bố bit D
25
Nhận xét : Nếu D càng nhỏ thì mức độ rời rạc càng thấp tức là độ dính

kết giữa các bít 0,1 càng lớn. Và áp dụng trong thuật toán này ta sẽ chọn
cách đảo bít nào có D nhỏ nhất.
Theo như ví dụ trên thì ta tính D cho cả hai trường hợp (cách đảo bit ở b
và ở c ) thì thấy rằng:
* Theo trường hợp b) D = 4 + 2 + 1 + 5 =12

Theo trường hợp c) D= 6 + 4 + 5 + 7 = 22

Vì D ở trường hợp b sẽ tốt hơn D ở trường hợp c tức là: D(b) < D(c)
nên ta chọn theo cách D(b)
1 1 1 0
1 0 0 0
1 0 0 0
1 0 0 0
1 1 1 0
1 1 0 0
1 0 0 0
1 0 0 0
1 1 1 0
1 0 0 0
1 0 1 0
1 0 0 0
a. Khối bít ban đầu
b. Đảo bít ở vị trí (2,2)
c. Đảo bít ở vị trí (3,3)

×