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ố 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
Trang 1ĐẠ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ố )
GV hướng dẫn : PGS.TS Trịnh Nhật Tiến
Trang 2Nộ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
Trang 3 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.
Trang 4Cá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
Trang 5Thuậ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:
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
File ảnh đã giấu tin file tin mật Fp: FF’
Trang 6Thuậ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
(mn)
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
Trang 7Thuậ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).
Trang 8Thuật toán giấu tin sử dụng tính chẵn lẻ của tổng số bit 1
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)
Trang 9Thuậ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
Trang 10Thuậ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 KTheo 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à 1Nế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
Trang 11Kỹ 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, ab 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,
ab sẽ cho ta giá trị 1 nếu ab và giá trị 0 nếu a=b.
Thuật toán Wu - Lee
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
Trang 12Kỹ 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(FiK)= 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
Trang 13Kỹ 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 66 và một ma trận khoá K có kích thước 33 như trong hình vẽ
Trang 14Kỹ 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à 33 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(F1K) = 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(F2K) = 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(F4K) 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
Trang 15Lỗ 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 Fi để giấu tin và trong trường hợp cần thay đổi một phần tử trong Fi 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 44, lần thứ hai chọn khối 48
Trang 16Lỗ 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
Trang 17Giải pháp khắc phục: Sử dụng ma trận láng giềng
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ụ:
Trang 19Giả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
Trang 20Giả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ụ:
Trang 21Giải pháp khắc phục: Sử dụng ma trận láng giềng
Trang 22
Giải pháp khắc phục: Sử dụng hệ số phân bố bit D
Trang 23
Giải pháp khắc phục: Sử dụng hệ số phân bố bit D
Trang 24
Giải pháp khắc phục: Sử dụng hệ số phân bố bit D
D = D + D +D +D = 9 +6 +7 + 5 = 27
Trang 25Giải pháp khắc phục: Sử dụng hệ số phân bố bit D
Trang 26Giải pháp khắc phục: Áp dụng thuật toán HT để giấu tin trong ảnh
Định nghĩa:
Phép cộng không nhớ các số nhị phân, ký hiệu được định nghĩa như sau:
1 1 = 0; 1 0 = 1; 0 1 = 1; 0 0 = 0
Từ định nghĩa ta có tính chất: b b = 0 với mọi số nhị phân b.
Quá trình giấu tin
Tiến hành nhúng chuỗi k bit b=(b1, b2, , bk) vào chuỗi n bit x=(x1, x2, ,
xn) để được chuỗi x’ theo các bước:
Bước 1: Tính , trong đó db(i) là biểu diễn nhị phân của i
Trang 27Giải pháp khắc phục: Áp dụng thuật toán HT để giấu tin trong ảnh
Ví dụ:
Trang 28Nhận xét và hướng nghiên cứu khác
Qua phân tích đánh giá trên ta nhận thấy điểm hạn chế lớn của các
phương pháp giấu tin trong ảnh trên đều dựa vào việc điều chỉnh các giá trị của các bit theo một quy tắc nào đó và khi giải mã sẽ theo các giá trị đó để tìm được thông tin đã giấu.
Do vậy nếu ảnh bị biến đổi bằng một phép biến đổi nào đó làm thay đổi giá trị của các bit thì thông tin giấu bị sai lệch
Để giải quyết vấn đề này theo tìm hiểu của mình em xin đề xuất cho
hướng nghiên cứu tiếp theo là kỹ thuật “Giấu tin trong miền tần số”
Kỹ thuật này áp dụng một phương pháp biến đổi trực giao nào đó,
chẳng hạn như Cosine rời rạc, hay Fourier… để chuyển miền không gian ảnh sang miền tần số Thuỷ vân sẽ được nhúng trong miền không gian tần
số của ảnh theo kĩ thuật trải phổ trong truyền thông Đây là kĩ thuật phổ
biến nhất với nhiều thuật toán và được hứa hẹn là một phương pháp tốt giải quyết vấn đề đảm bảo các thuộc tính quan trọng của thuỷ vân sau khi giấu
Trang 29XIN CHÂN THÀNH CẢM ƠN !