Tổng quan về các thuật toán giấu tin trong ảnh

Một phần của tài liệu Luận văn công nghệ thông tin xây dựng ứng dụng giấu tin trong ảnh (Trang 25 - 61)

7. Kết cấu của đề tài

2.1. Tổng quan về các thuật toán giấu tin trong ảnh

2.1.1 Giấu tin theo khối bít đơn giản

Ý tưởng cơ bản của kỹ thuật này là chia ảnh gốc thành các khối nhỏ và trong mỗi khối nhỏ sẽ giấu một bit thông tin.

Quá trình giấu tin: Với mỗi ma trận bit F kích thước m x n và bit mật b đang cần giấu, tiến hành biến đổi F thành F‟ để giấu bit b sao cho:

SUM(F‟) mod 2 = b

Như vậy, mỗi lần giấu một bit, có thể xảy ra hai trường hợp: SUM(F) mod 2 = b, khi đó ta giữ nguyên khối ảnh F. Trường hợp ngược lại chọn ngẫu nhiên một bit trong khối F và tiến hành đảo giá trị của bit này để được khối ảnh mới F‟.

Quá trình tách tin: Khi nhận được ảnh giấu tin, việc giải mã tin sẽ được thực hiện theo các bước sau:

- Chia ảnh thành các khối có kích thước giống với kích thước khối đã sử dụng

khi thực hiện giấu, đây là khóa để giải mã.

- Với mỗi khối ảnh đã giấu tin F‟ được chọn theo thứ tự như quá trình giấu tin, thực hiện tách lấy bit thông tin đã giấu theo công thức:

b = SUM(F‟) mod 2 (1)

- Như vậy, sau khi xét hết các khối bit đã giấu, ta thu được một chuỗi bit, chuỗi này là thông tin các bit mật đã giấu trước đó.

Lược đồ giấu tin theo khối bit đơn giản giấu được 1 bit thông tin vào trong một khối ma trận bit F kích thước m x n mà chỉ thay đổi tối đa 1 bit.

2.1.2 Thuật toán giấu tin Wu-Lee

Kỹ thuật giấu tin theo khối bit đơn giản thể hiện độ an toàn không cao với việc sử dụng duy nhất kích thước khối là khóa cho quá trình giấu tin, ảnh chứa thông tin giấu cũng bị dễ phát hiện do kỹ thuật có thể sẽ đảo bit trong các khối ảnh toàn màu đen hoặc toàn màu trắng dẫn tới sự bất thường ở vị trí bit đảo so với các điểm lân cận trong khối.

Kỹ thuật giấu tin trên ảnh nhị phân do M.Y.Wu và J.H.Lee vẫn trên tư tưởng giấu một bit thông tin vào một khối ảnh gốc nhưng khắc phục được phần nào những tồn tại nêu trên bằng cách được thêm khóa K cho việc giấu tin và đưa thêm các điều kiện để đảo bit trong mỗi khối, theo điều kiện đó các khối ảnh gốc toàn màu đen hoặc

toàn màu trắng sẽ không được sử dụng để giấu tin. [7]

Thuật toán giấu tin biến đổi khối ảnh F thành F‟ để giấu 1 bit b được thực hiện sao cho:

SUM( K  F‟) mod 2 = b (2)

Công thức (2) cũng được sử dụng cho quá trình tách lấy tin đã giấu. Thuật toán giấu tin Wu-Lee giấu được 1 bit thông tin vào một khối m x n bit và chỉ phải thay đổi tối đa 1 bit trong F.

2.1.3 Thuật toán giấu tin Chan-Pan-Tseng

Trên cơ sở thuật toán của Wu-Lee như đã trình bày trong mục trên, các tác giả Yu Yan Chen, Hsiang Kuang Pan và Yu Chee Tseng đã phát triển một kỹ thuật giấu tin mới, thuật toán giấu tin CPT. Kỹ thuật này sử dụng một ma trận khóa K và một ma trận trọng số W trong quá trình giấu tin và tách thông tin. [9]

Quá trình biến đổi khối ảnh F thành F‟ kích thước m x n để giấu r bit thông tin b = b1b2…br được thực hiện sao cho:

SUM (( F‟  K )  W ) = b mod ( 2r ) (3)

Công thức (3) được sử dụng để tách chuỗi bit b = b1b2…br từ khối ảnh F‟.

Tóm tắt nội dung thuật toán CPT Dữ liệu vào:

- Xét trên một ma trận nhị phân F = (Fij)mxn

- W là ma trận trọng số tự nhiên cấp m x n : W = (Wij)mxn - b là dãy r bit cần giấu vào ma trận Fmxn : b = b1b2…br

Ở đây, ta sử dụng b theo hai nghĩa: dãy bit và số tự nhiên dạng nhị phân

- Đặt r = [ Log2(N + 1) ], m x n = N

Sao cho: { Wij, 1  i  m, 1  j  n } = {1, 2 ,…, 2r – 1}

Hay nói cách khác, ma trận trọng số W cần thỏa mãn: mỗi giá trị của tập {1, 2 ,…, 2r

– 1} phải xuất hiện trong W ít nhất 1 lần.

Các ma trận khóa K và ma trận trọng số W kích thước m x n được sử dụng như các thành phần khóa bí mật: người sử dụng K, W trong quá trình giấu và người nhận cần phải có K, W để khôi phục lại tin đã giấu.

Dữ liệu ra:

- Ma trận nhị phân F‟ đã được mã hóa mang thông tin dãy r bit b, mà chúng ta

có thể lấy lại được thông tin b từ F‟.

Thuật toán giấu tin Bƣớc 1: Tính T = F  K Và r = [ Log 2 ( m x n + 1 ) ]. Bƣớc 2: Tính S =     m i ij n j ij W T 1 1 mod 2r

Hay S = SUM ( T – W ). Suy ra 0  S  2r - 1

Bƣớc 3:

Ta xem b = b1b2…br là giá trị dữ liệu cần giấu dưới dạng cơ số 2. Suy ra 0  b  2r -1 Mục đích của thuật toán này là thay đổi nhiều nhất hai vị trí trong F để được ma trận F‟ mà S‟ tương ứng tính được theo công thức (4) thỏa mãn:

S‟ = b mod (2r) (5)

Tính a = b – S mod (2r).

Bƣớc 4:

Ta cần tìm các ô Fij sao cho S tăng đúng một lượng  khi ta đảo giá trị bit ở ô Fij. Khi đó ta được:

Ta gọi S là tập các ô Fij cần đảo sao cho S‟ = b. S thỏa mãn điều kiện đó khi và chỉ khi:  S = {( Fij | Tij = 0, Wij =  mod (2r) ) or ( Tij = 1, Wij = 2r –  mod (2r) } (6) Tính S theo công thức (6). Bƣớc 5:

Xảy ra một trong ba trường hợp sau:

Nếu S = b (hay  = 0) thì dĩ nhiên ta không cần thay đổi ma trận F.

Nếu   0 và S  ta chỉ cần đảo một ô bất kì Fij thuộc S Thuật toán dừng. Nếu  0 và S =  ta chuyển bước 6.

Bƣớc 6:

Ta tìm số nguyên h > 1 và nhỏ nhất sao cho Sha  và Sha  Khi đó ta đảo một ô bất kì thuộc Fij thuộc Sha và một ô bất kì Fij thuộc Sa - ha

2.1.4 Thuật toán giấu tin CPTE

Ý tƣởng: CPTE là một phương pháp được cải biên từ phương pháp CPT do

nhóm nghiên cứu của PGS.TS Phan Trung Huy đề xuất. Tư tưởng của phương pháp CPTE là giấu các bít thông tin trên một ma trận nhị phân F cỡ N =m x n. Phương pháp giấu được r‟ = [ Log2(N) ] + 1 bit thông tin [10]

Thuật toán: - Dữ liệu vào: - Ma trận nhị phân: F = (Fij)m x n . - Kết hợp 1 ma trận khóa nhị phân: K = (Kij)m x n . - Ma trận trọng số: W = (Wij)m x n , với Wij là số tự nhiên. - Đặt r = [ Log2(N)], mn=N .

- b là dãy r + 1 bit cần giấu vào ma trận F m x n B = (b1b2…br+1)2

Đặt điều kiện với W:{ Wij, 1  i  m, 1  j  n } = {1, 2 ,…, 2r } nói cách khác, các giá trị của tập {1,2, ..,2r } phải xuất hiện trong W ít nhất 1 lần.

- Dữ liệu ra:

- Ma trận nhị phân F‟ = (Fij‟)m x n chứa dãy bít mật b, mà từ đó ta có thể tính lại giá trị b

Nội dung thuật toán:

Thuật toán sẽ thực hiện việc giấu tin bằng cách biến đổi mỗi khối bít Fi thành F‟i sao cho luôn thoả mãn điều kiện sau :

SUM ((F  K) W) = b1b2…br+1 (mod 2 r + 1) Bƣớc 1: Tính T = F  K Và r = [ Log 2 (N) ]. Bƣớc 2: Tính S =     m i ij n j ij W T 1 1 mod 2r+1; 0  S  2r+1 - 1 Bƣớc 3:

Vì b là số r + 1 bit. Suy ra 0  b  2r+1 - 1 (giống như S). Ta cần đảo nhiều nhất 2 ô trên Fịj trên ma trận F sao cho:

S=SUM( T  W) = b mod 2r+1

Tính  = b – S mod 2r+1 Giá trị  là độ lệch giữa giá trị dữ liệu cần giấu và dữ liệu tương ứng tính từ F qua T và W.

Nếu S = b – S mod 2r+1 (hay  = 0mod 2r+1 ), đây là trường hợp ta không cần

phải đảo bit nào trên F và thuật toán dừng. Nếu   0 ta chuyển qua bước 4.

Bƣớc 4:

Mục đích của bước này là tìm tập các vị trí Fij để sao cho sau khi đảo bit một trong các vị trí này, ta được S‟ = b.

Gọi S là tập các ô Fij, để thay đổi giá trị một ô thuộc Sthì giá trị S tăng lên

đúng một lượng là  mod 2r+1 { { } { } { | } Bƣớc 5:

Nếu   0 và S  : Ta chỉ cần đảo bit của một ô Fij S khi đó S sẽ tăng

một lượng  và F mới sẽ mang thông tin b, thuật toán kết thúc.

Bƣớc 6:

Ta tìm số tự nhiên nhỏ nhất h >1 sao cho Sha   vàSha   Khi đó ta đảo một ô thuộc Sha và một ô thuộc Sha, giá trị của S sẽ tăng lên một lượng là h và  -

h, do đó S tăng lên một lượng đúng bằng  và bằng b.

S‟ = S + h + ( - h ) = b mod 2r-1 Thuật toán dừng.

Tính đúng đắn của thuật toán đã được chứng minh[8].

2.2. Thuật toán giấu tin LSB

2.2.1. Khái niệm bit có trọng số thấp LSB

Bit có trọng số thấp là bit có ảnh hưởng ít nhất tới việc quyết định tới màu của mỗi điểm ảnh, vì vậy khi ta thay đổi bit ít quan trọng của một điểm ảnh thì màu của mỗi điểm ảnh mới sẽ tương đối gần với điểm ảnh cũ. 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 đó. 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ì ta sẽ tách bit này ra ở mỗi điểm ảnh để giấu tin, hoặc với ảnh 256 màu thì bit cuối cùng trong 8 bit biểu diễn một điểm ảnh được coi là bit ít quan trọng nhất…

Ví dụ: Tách bit cuối cùng trong 8 bit biểu diễn mỗi điểm ảnh của ảnh 256 màu

1001110 0 1001010 1 1110001 0

Bảng 2.1: Mổi điểm ảnh biểu diễn bởi 8 bit, bit cuối cùng được coi là bit ít quan trọng nhất tức là bit bên phải nhất.

Trong phép tách này ta coi bit cuối cùng là bit ít quan trọng nhất, thay đổi giá trị của bit này thì sẽ thay đổi giá trị của điểm ảnh lên hoặc xuống đúng một đơn vị, ví dụ như giá trị điểm ảnh là 234 thì khi thay đổi bit cuối cùng nó có thể mang giá trị mới là 235 nếu đổi bit cuối cùng từ 0 thành 1. Với sự thay đổi nhỏ đó ta hi vọng là cấp độ màu của điểm ảnh sẽ không bị thay đổi nhiều.

2.2.2. Phƣơng pháp giấu tin LSB

Ý tưởng: Phương pháp LSB (Least Significant Bit) sẽ thay thế bit ít quan trọng nhất, thường là bit cuối của mỗi mẫu dữ liệu bằng bít thông tin mật. Như vậy trên mỗi pixel của một ảnh BMP 24bit có thể giấu được từ 1 đến 3 bit mật.

Ví dụ mẫu 8 bit, bit cuối 0 được thay thế bởi bit thông tin mật 1:

Hình 2.1: Minh họa kĩ thuật giấu LSB

Ưu điểm của phương pháp này là dễ cài đặt và cho phép giấu dữ liệu nhiều. Có thể tăng thêm dữ liệu giấu bằng cách sử dụng hai bit LSB. Tuy nhiên cách làm này cũng làm tăng nhiễu trên đối tượng chứa dẫn đến đối phương dễ phát hiện và thực hiện các tấn công. Vì vậy dữ liệu chứa cần phải được chọn trước khi giấu sử dụng phương pháp này.

Để tăng độ an toàn cho kỹ thuật này, ta sử dụng một khóa bí mật K để mã hóa các thông tin mật trước khi đem giấu vào các bit LSB.

2.2.3. Sự khác nhau giữa giấu tin trong ảnh đen trắng với ảnh màu

Khởi nguồn của giấu thông tin trong ảnh là thông tin được giấu trong các ảnh màu hoặc ảnh xám, trong đó mỗi pixel ảnh mang nhiều giá trị, được biểu diễn bằng nhiều bit. Với ảnh đó thì việc thay đổi một giá trị nhỏ ở một pixel thì chất lượng ảnh gần như không thay đổi, và khả năng bị phát hiện rất thấp dưới con mắt người bình thường. Do đó hệ thống thị giác của con người cũng đóng một vai trò quan trọng trong việc bảo đảm tính không nhìn thấy thông tin được giấu trên ảnh. Với những ảnh mà mỗi điểm ảnh chỉ mang một giới hạn nhỏ các giá trị thì việc giấu thông tin trong ảnh đảm bảo tính vô hình của thông tin che giấu là một công việc khó khăn hơn nhiều. Đặc biệt với ảnh đen trắng, mỗi điểm ảnh chỉ mang một trong hai giá trị trắng hoặc đen. Vậy thì khi thay đổi giá trị một pixel từ đen thành trắng hoặc ngược lại thì rất dễ bị phát hiện. Một số thuật toán khác thì giấu chất lượng ảnh tốt hơn nhưng lượng thông tin giấu được ít và quá đơn giản không đảm bảo được độ an toàn thông tin. Bảng sau sẽ liệt kê những khác nhau cơ bản giữa giấu thông tin trong ảnh đen trắng và ảnh màu.

Giấu thông tin trong ảnh đen trắng Giấu thông tin trong ảnh màu hoặc ảnh xám

Thông tin giấu ít hơn Thông tin giấu nhiều hơn

Có cùng kích cỡ với ảnh

Khả năng bị phát hiện phương tiện có giấu thông tin cao hơn ảnh màu

Khả năng bị phát hiện thấp

Độ an toàn thông tin thấp do dễ bị phát hiện có thông tin chứa thông tin bên trong

Độ an toàn cao

Các thuật toán giấu ít, phức tạp Nhiều thuật toán và có nhiều hướng mở

rộng phát triển. Như áp dụng giải thuật di truyền.

Bảng 2.2 : Sự khác nhau giữa giấu thông tin trong ảnh đen trắng và ảnh màu

Ảnh gốc Ảnh có giấu tin

Ảnh gốc Ảnh có chứa tin

Hình 2.3: Ảnh đen trắng sau khi giấu cùng một lượng thông tin như ảnh màu nhưng chất lượng kém hơn.

2.3. Tiểu kết

Thuật toán giấu tin là phần cốt lõi trong một hệ giấu tin trong ảnh. Trong chương này nhóm đã xác định được thuật toán giấu tin LSB để sử dụng trong chương trình.

Chương tiếp theo, nhóm sẽ trình bày về các loại ảnh và chọn ra loại ảnh làm môi trường chứa thông tin cần giấu.

CHƢƠNG 3: TỔNG QUAN VỀ ẢNH BITMAP

Hiện nay, có rất nhiều định dạng ảnh như JPEG, PNG, GIF hay BITMAP. Tùy thuộc vào nhu cầu sử dụng hàng ngày mà ta dùng các loại ảnh thích hợp. Đối với môi trường mạng và thiết kế web đòi hỏi sự nhanh chóng cho sự truy cập từ các máy khách tới máy chủ nhưng chất lượng ảnh không được quá kém nên JPEG và PNG có thể đáp ứng nhu cầu này.

Đối với giấu tin trong ảnh ta cần đảm bảo các yêu cầu như an toàn vào bảo mật thông tin và một điều không kém quan trọng là số lượng thông tin được giấu càng nhiều càng tốt. Do đó, định dạng ảnh BITMAP có cấu trúc ảnh cố định với vùng dữ liệu ảnh giúp thỏa mãn những yêu cầu trên.

3.1. Sơ lƣợc về các loại ảnh JPEG, GIF, PNG

Ảnh JPEG

JPEG (tiếng Anh, viết tắt cho Joint Photographic Experts Group) là một trong những phương pháp nén ảnh hiệu quả, có tỷ lệ nén ảnh tới vài chục lần. Tuy nhiên ảnh sau khi giải nén sẽ khác với ảnh ban đầu. Chất lượng ảnh bị suy giảm sau khi giải nén. Sự suy giảm này tăng dần theo hệ số nén. Tuy nhiên sự mất mát thông tin này là có thể chấp nhận được và việc loại bỏ những thông tin không cần thiết được dựa trên những

nghiên cứu về hệ nhãn thị của mắt người.[14]

Phần mở rộng của các file JPEG thường có dạng .JPEG, .JFIF, .JPG, hay .JPE; dạng .JPG là dạng được dùng phổ biến nhất. Hiện nay dạng nén ảnh JPEG rất được phổ biến trong điện thoại di động cũng như những trang thiết bị lưu giữ có dung lượng nhỏ

Ảnh GIF

GIF (viết tắt của Graphics Interchange Format; trong tiếng Anh nghĩa là "Định dạng trao đổi hình ảnh") là một định dạng tập tin hình ảnh bitmap cho các hình ảnh dùng ít hơn 256 màu sắc khác nhau và các hoạt hình dùng ít hơn 256 màu cho mỗi khung hình. GIF là định dạng nén dữ liệu đặc biệt hữu ích cho việc truyền hình ảnh

Một phần của tài liệu Luận văn công nghệ thông tin xây dựng ứng dụng giấu tin trong ảnh (Trang 25 - 61)

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

(61 trang)