Đồ án Tìm hiểu các kỹ thuật giấu tin trong ảnh,xây dựng ứng dụng tích hợp mật mã vào giấu tin trong ảnh

MỤC LỤC

Trang

DANH MỤC HÌNH VẼ 3

DANH MỤC CÁC KÝ TỰ VIẾT TẮT 4

LỜI CẢM ƠN 5

MỞ ĐẦU 6

NỘI DUNG BÁO CÁO 7

CHƯƠNG I: TỔNG QUAN VỀ AN TOÀN THÔNG TIN 7

1.1. Một số khái niệm cơ bản 7

1.1.1. Khái niệm thông tin 7

1.1.2. Khái niệm an toàn, bảo mật thông tin 7

1.1.3. Vai trò của an toàn thông tin 8

1.2. Các phương pháp bảo vệ thông tin 8

1.2.1. Phương pháp bảo vệ thông thường 8

1.2.2. Phương pháp bảo vệ vật lý 8

1.2.3. Phương pháp bảo vệ dùng phần mềm 8

1.3. Đánh giá độ an toàn và bảo vệ thông tin dữ liệu 9

1.3.1. Tổng quan 9

1.3.2. An toàn phần mềm 9

1.3.3. Ảnh hưởng của sự phát triển công nghệ đến việc bảo vệ thông tin. 9

1.4. Mật mã và ứng dụng của mật mã 10

1.4.1. Khái niệm 10

1.4.2. Các hệ mật mã cổ điển 10

1.4.3. Các hệ mật mã khóa công khai. 11

1.4.4. Mật mã khối và mã hóa dòng 12

1.4.5. Ứng dụng thực tế của mật mã 12

CHƯƠNG II : TỔNG QUAN VỀ GIẤU TIN TRONG ẢNH 13

2.1. Giới thiệu chung về giấu thông tin 13

2.2. Vài nét về lịch sử của giấu tin 14

2.3. Các khái niệm về giấu thông tin trong ảnh số 15

2.4. Một số đặc điểm của việc giấu thông tin trên ảnh số 17

2.4.1. Tính vô hình của thông tin 18

2.4.2. Tính bảo mật 18

2.4.3. Tỷ lệ giấu tin 18

2.4.4. Ảnh môi trường đối với quá trình giải mã 18

CHƯƠNG III: CÁC THUẬT TOÁN GIẤU TIN TRONG ẢNH 22

3.1. Giới thiệu chung 22

3.2. Các đặc trưng của giấu thông tin trong ảnh 23

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

3.4. Các thuật toán giấu tin trong ảnh 27

3.4.1. Giấu tin trong ảnh thứ cấp 27

3.4.1.1. Đặt bài toán 27

3.4.1.2. Các khái niệm cơ bản 28

3.4.1.3. Các kỹ thuật giấu tin trong ảnh thứ cấp 31

3.4.2. Giấu tin trong ảnh màu và ảnh đa cấp xám 42

3.4.2.1. Ảnh đa cấp xám 43

3.4.2.2. Ảnh nhỏ hơn hoặc bằng 8 bit màu: 43

3.4.3. Giấu tin trong ảnh hi - color (16 bit màu) 46

3.4.4. Ảnh true color (24 bit màu) 47

3.5. Kết quả thực nghiệm và đánh giá. 47

CHƯƠNG IV: XÂY DỰNG ỨNG DỤNG TÍCH HỢP MẬT MÃ VÀO GIẤU TIN TRONG ẢNH 49

4.1. Môi trường làm việc. 49

4.2. Ngôn ngữ thực hiện thuật toán. 49

4.3. Tổ chức và thực hiện chương trình 49

4.3.1. Thiết kế bộ mã hóa và giải mã. 50

4.3.2. Thiết kế chương trình giấu tin vào ảnh và tách tin từ ảnh. 52

4.3.2.1. Giấu thông tin vào ảnh 52

4.3.2.2. Phép tách ảnh thứ cấp từ ảnh môi trường. 52

4.3.2.3. Giấu tin file dữ liệu vào ảnh thứ cấp: 53

4.3.2.4. Trả ảnh thứ cấp vào ảnh môi trường. 53

4.3.2.5. Lấy thông tin từ ảnh kết quả. 53

4.4. Chương trình ứng dụng tích hợp mật mã vào giấu tin trong ảnh. 54

4.4.1. Giao diện chính của chương trình 54

4.4.2. Các chức năng chính của chương trình 54

KẾT LUẬN 61

TÀI LIỆU THAM KHẢO 63

Các thủ tục chính của chương trình 64

1. Mô đun mã hóa: 64

2. Mô đun giấu tin: 101

 

 

doc124 trang | Chia sẻ: maiphuongdc | Lượt xem: 2166 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Đồ án Tìm hiểu các kỹ thuật giấu tin trong ảnh,xây dựng ứng dụng tích hợp mật mã vào giấu tin trong ảnh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
a điểm không bị thay đổi. Chẳng hạn nếu sau khi sắp lại bảng màu, màu có chỉ số 15 trong bảng màu cũ mang chỉ số mới là 80 trong bảng màu mới thì mọi điểm ảnh có giá trị là 15 phải được đổi thành 80. So với ảnh 16 bit màu hoặc 24 bit màu, ảnh 8 bit màu cũng như ảnh 4 bit màu có vẻ khó giấu thông tin hơn vì việc thay đổi dù chỉ một bit trên một điểm ảnh cũng có thể dẫn đến sự thay đổi nhận thấy được về màu sắc cuả điểm ảnh, cho dù bảng màu của điểm ảnh đã được sắp. Tuy nhiên dựa vào đặc điểm không phải ảnh nào cũng sử dụng tất cả các màu trong bảng màu để hiện thị ảnh ta có thể sử dụng những màu không dùng đến kết hợp với việc sắp bảng màu để làm mịn ảnh kết quả. Để biết những màu nào được dùng, màu nào không dùng đến trong bảng màu ta duyệt toàn bộ các màu trong bảng và đánh dấu những màu có chỉ số xuất hiện trong dữ liệu ảnh. Giả sử trong bảng màu có một màu C không dùng đến với mỗi điểm màu A khi tìm thấy được màu B có sử dụng trong bảng màu để sắp cạnh A mà giá trị s(A,B) vẫn còn lớn hơn một ngưỡng nào đó ta sẽ chèn ô màu C vào ô màu A và B đồng thời đổi lại màu của ô C sao cho giống A và B nhất có thể. Trường hợp số màu được sử dụng nhỏ hơn hoặc bằng 86 màu (đối với ảnh 256 màu) hay nhỏ hơn hoặc bằng 6 (đối với ảnh 16 màu) thì việc sắp lại bảng màu cho ta kết quả giấu tin rất đẹp. Khi đó quá trình sắp lại bảng màu tiến hành theo các bước sau: B1: Duyệt bảng màu để xác định màu nào có được sử dụng, màu nào không được sử dụng. B2: Sắp các màu có sử dụng vào các vị trí thứ 3*k của bảng màu với k=0,1,2,……(vị trí đầu tiên trong bảng màu là vị trí thứ 0). Chèn các ô màu không dùng đến vào các vị trí còn lại của bảng màu. B3: Với mỗi màu A(x,y,z) có sử dụng đến nằm ở vị trí 3*k của bảng màu mới, ta copy màu A vào ô màu nằm ở vị trí 3*k+1 và vào ô màu nằm ở vị trí 3*k-1. B4: Chỉnh lại chỉ số màu của mỗi điểm ảnh để thu được ảnh mới giống hệt ảnh cũ hiển thị. B5: Quá trình sắp lại bảng màu sẽ cho ta một ảnh mới không hề khác ảnh cũ khi hiển thị, tuy nhiên cần có sự khác nhau về mặt giá trị. Tiến hành giấu tin trên ảnh thứ cấp của ảnh vừa thu được bằng cách tách bit cuối cùng trong mỗi điểm ảnh. Việc đảo bit trên ảnh thứ cấp làm cho giá trị của điểm ảnh tăng hoặc giảm 1, tức là điểm ảnh mới sẽ mang màu của ô có chỉ số 3*k+1 hoặc 3*k-1 (giá trị cũ là 3*k), nhưng cả hai ô này đều có màu của ô 3*k nên điểm ảnh mới không hề có sự thay đổi về màu sắc so với điểm ảnh cũ. Như vậy ảnh có kết quả không có nhiễu, tức là ảnh sẽ giống hệt nhau. Một hướng khác đối với giấu tin trong ảnh nhỏ hơn 8 bit màu là ta giấu thông tin vào bảng màu. Tức là thay vì tách các bit LSB của các điểm ảnh ta tách các bit LSB của bảng màu và thực hiện quá trình giấu tin trên các bit vừa thu được. Quá trình này cũng tương tự như khi ta giấu tin trong ảnh 24 bit màu với kích thước ảnh là 256 điểm ảnh (ảnh 8 bit màu), do đó lượng thông tin giấu được sẽ rất ít bị giới hạn bởi kích thước bảng màu. Chẳng hạn đối với ảnh 8 bit màu, chọn kích thước khối là 10*10, r=4, lấy từ mỗi ô màu ra bit ta sẽ chỉ giấu được một lượng thông tin cực đại là 28 bit bằng thuật toán trên. Tuy nhiên giải pháp này cũng có những hạn chế vì ảnh kết quả có bảng màu đặc biệt, dễ gây ra nghi ngờ bởi sự giống nhau của 3 ô màu liên tiếp trong bảng màu. Hơn nữa, bảng màu có thể bị sắp xếp lại hoặc điều chỉnh lại bởi phần mềm xử lý ảnh trong quá trình hiển thị hay lưu lại ảnh dẫn đến thông tin đã được giấu có thể sẽ bị mất đi không khôi phục lại được. Giấu tin trong ảnh hi - color (16 bit màu) Ảnh 16 bit màu thực tế chỉ có thể sử dụng 15 bit cho mỗi điểm ảnh trong đó 5 bit biểu diễn cường độ tương đối của màu đỏ, 5 bit biểu diễn cường độ tương đối của màu xanh lam, 5 bit biểu diễn cường độ tương đối của màu xanh lơ. Còn lại một bit không dùng đến là bit cao nhất của byte thứ hai trong mỗi cặp hai byte biểu diễn một điểm ảnh, đó chính là bit LSB của ảnh 16 bit màu. Việc thay đổi giá trị của những bit này sẽ không hề ảnh hưởng tới màu sắc của từng điểm ảnh trong ảnh môi trường. Do đó ta sẽ chọn những bit này để tạo thành ảnh thứ cấp và sau biến đổi thu được ảnh kết quả không hề có nhiễu. Nếu chỉ lấy những bit này để tạo thành ảnh thứ cấp thì lượng thông tin sẽ bị hạn chế. Chẳng hạn một ảnh 256 màu kích thước 200*200 pixel có số màu được sử dụng nhỏ hơn bằng 86 màu sẽ giấu được lượng thông tin bằng lượng thông tin mà một ảnh 16 bit màu cùng kích thước giấu được, trong khi kích thước tính bằng byte của ảnh 256 màu chỉ bằng một nửa của ảnh 16 bit màu. Hơn nữa cả hai ảnh môi trường này đề cho ảnh kết quả không có nhiễu. Để tăng lượng thông tin giấu được trong ảnh 16 bit màu ta có thể lấy nhiều hơn 1 bit từ mỗi điểm ảnh. Nếu đánh số 16 bit của mỗi cặp hai byte biểu diễn một điểm ảnh lần lượt từ bit thấp của byte thứ nhất là 1 tới bit cao nhất của byte này là 8, kế tiếp là bit thấp nhất của byte thứ hai được đánh số 9 cho tới bit cao nhất của byte này là 16, trước hết ta sẽ lấy bit thứ 16, sau đó có thể lấy các bit được đánh số 1,6 và 11 để tạo thành ảnh thứ cấp. Khi trả ảnh thứ cấp cho ảnh môi trường ta cũng theo đúng thứ tự này để trả bit đúng vị trí. Ảnh true color (24 bit màu) Ảnh true color sử dụng 3 byte cho mỗi điểm ảnh, mỗi byte biểu diễn mộ thành phần trong cấu trúc RGB. Trong mỗi byte các bit thấp càng ít ảnh hưởng tới màu của điểm ảnh. Vì vậy các bit cuối cùng của mỗi byte trong phần dữ liệu ảnh là các LSB của ảnh true color. Để tăng lượng thông tin giấu được vào ảnh môi trường, từ mỗi byte của ảnh true color ta sẽ lấy nhiều hơn 1 bit để tạo thành ảnh thứ cấp.Thông thường cũng chỉ nên lấy nhiều nhất là 4 bit cuối cùng của mỗi byte để ảnh không bị nhiễu đáng kể, khi đó lượng thông tin tối đa có thể giấu trong ảnh cũng tăng gấp 4 lần so với lượng thông tin tối đa giấu được trong ảnh đó nếu chỉ lấy 1 bit cuối cùng của từng byte. Nhờ vậy, lượng thông tin giấu được trong ảnh màu tương đối lớn. Chẳng hạn một bức ảnh Kodak Photo CD với độ phân giải 2048*3072 điểm ảnh 24 màu theo định dạng RGB có thể giấu được 180.000 byte dữ liệu nếu tách từ mỗi byte biểu diễn một thành phần màu của một điểm ảnh ra 2 bit. Bằng kết quả thực nghiệm ta thấy rằng việc thay toàn bộ các bit cuối của mỗi byte trong phần dữ liệu của ảnh true color cũng không gây ra sự khác biệt nhiều so với ảnh gốc. Điều này làm ta nghĩ tới việc thay toàn bộ các bit này bởi các bit dữ liệu của thông tin cần giấu và khi đó lượng thông tin giấu được là rất lớn, có thể đạt tới một phần tám kích thước ảnh môi trường. Tuy nhiên, phương pháp thay thế đơn giản này cho độ an toàn không bằng vì để có được thông tin đã giấu chỉ cần tách các bit cuối cùng của mỗi byte ảnh kết quả. Mặc dù vậy, hướng đi này có thể sẽ đem lại nhiều kết quả khả quan nếu khắc phục được yếu điểm về độ an toàn. Một trong những cách giải quyết là sử dụng thêm một khóa thay thế để biến đổi thông tin trước khi giấu và áp dụng giải thuật di truyền (Ran-zan Wang, Chi-Fang Lin, ja-Chen Lin Đại học quốc gia Chiao Tung, Đài loan) . Kết quả thực nghiệm và đánh giá. Thuật toán giấu thông tin trong ảnh trình bày ở trên cho phép giấu nhiều nhất [log2(mmn+1)] bit dữ liệu vào trong một khối ảnh kích thước m*n, tức là với m*n bit môi trường có thể giấu được [log2(mmn+1)] bit dữ liệu. Do đó với kích thước khối cố định thì tỷ lệ giấu dữ liệu lớn nhất có thể là: Nhận thấy đây là một hàm đơn điệu giảm theo m*n, vì vậy muốn có tỉ lệ giấu tin càng lớn thì m*n càng nhỏ. Tuy nhiên, ta cần lưu ý rằng độ an toàn của thông tin lại phụ thuộc tỉ lệ thuận vào kích thước mà ta dùng: kích thước khối càng lớn độ an toàn càng cao. Do đó tỉ lệ giấu tin sẽ tỉ lệ nghịch với độ an toàn và ngược lại, kích thước khối nhỏ sẽ làm tăng tỉ lệ giấu tin nhưng lại làm giảm độ an toàn vì có thể gây ra những thay đổi dễ nhận biết được ở ảnh đã giấu thông tin. Thông thường ta nên chọn kích thước khối sao cho [log2(mn+1)] = 8 hoặc bằng 4, tức là giấu được 8 hay 4 bit dữ liệu vào mỗi khối ảnh kích thước m*n. Dưới đây là một số kết quả thu được đến khi tiến hành giấu tin vào các bức ảnh đen trắng, ảnh màu và ảnh đa cấp xám với kích thước khối bit giấu tin là 16*16, r=8: Đối với một bức ảnh 8 bit màu kích thước 200*200, mỗi điểm ảnh lấy ra một bit để giấu thông tin vào sẽ cho ta giấu khoảng 240 bytes. Chất lượng ảnh sau khi giấu có sự thay đổi nhỏ nhưng với thị giác của người thì không thể phân biệt được sự thay đổi đó. Còn với ảnh 16 bit màu có kích thước 200*200, mỗi điểm ảnh là 2 byte nhưng ta chỉ lấy bit có trọng số cao nhất về phía bên trái của byte thứ 2 để giấu tin. Ảnh cho ta giấu một thông tin với dung lượng khoảng 240 bytes giống như trong ảnh 8 bit màu, nhưng chất lượng ảnh sau khi giấu không có sự thay đổi nào. Ảnh 24 bit màu cũng có kích trên, mỗi điểm ảnh được chứa trong 3 byte. Mỗi byte tách ra k bit thì dung lượng ảnh sau khi giấu khoảng 3k*140 bit và chất lượng sau khi giấu có sự thay đổi rất nhỏ. CHƯƠNG IV: XÂY DỰNG ỨNG DỤNG TÍCH HỢP MẬT MÃ VÀO GIẤU TIN TRONG ẢNH Môi trường làm việc. Môi trường làm việc của chương trình là window 2Kx, XP Ngôn ngữ thực hiện thuật toán. Việc chọn ngôn ngữ lập trình cho một bài toán cũng là một vấn đề rất quan trọng để giải quyết bài toán vì mỗi ngôn ngữ lập trình có những ưu điểm và nhược điểm nhất định . Chương trình tuy sử dụng đối tượng là các ảnh nhưng việc hiển thị ảnh không phải là vấn đề chính, các thao tác nói chung đều dựa trên các bit dữ liệu ảnh với số lượng tương đối lớn. Vì vậy vấn đề thời gian và bộ nhớ cần được lưu ý. Việc lựa chọn ngôn ngữ lập trình Visual Basic làm việc trên môi trường windows là tương đối phù hợp với phạm vi của đồ án này. Tổ chức và thực hiện chương trình Mô hình hoạt động của hệ thống bao gồm: Bên gửi có thông tin gốc, cho qua bộ mã hóa với khóa bí mật của mình tạo thành bản mã, giấu thông tin đã được mã hóa bằng thuật toán giấu tin vào trong ảnh và gửi đến cho bên nhận. Tại bên nhận, nhận được ảnh đã có chứa thông tin mã hóa, sẽ sử dụng thuật toán tách thông tin trong ảnh để nhận được thông tin mã hóa, đưa thông tin này qua bộ giải mã với khóa bí mật đã được trao đổi với bên gửi sẽ nhận được thông tin gốc ban đầu. Như vậy, có hai vấn đề cần quan tâm, đó là thiết kế bộ mã hóa và giải mã, và thiết kế chương trình giấu tin vào trong ảnh và tách tin từ ảnh đã chứa thông tin. Nơi gửi Nơi nhận Ảnh đã dấu tin Bộ mã hóa Thông tin gốc Khoá Bản mã Phân phối trên mạng Nhúng thông tin vào ảnh ảnh chứa thông tin dấu Tách thông tin từ ảnh Bản mã Bộ giải mã Thông tin gốc Khoá Hình 4.1: Mô hình hoạt động của chương trình Thiết kế bộ mã hóa và giải mã. Để đảm bảo tính bí mật cho thông tin ta sử dụng một trong các thuật toán mã hóa như RC2, RC4, DES, Triple DES,… với khóa bí mật được tạo ra bằng cách sử dụng một mật khẩu (password), sau đó cho mật khẩu này đi qua một thuật toán Hash tạo ra giá trị khóa có số bit tùy thuộc vào việc ta lựa chọn thuật toán Hash, chẳng hạn với MD2, MD4, MD5 sẽ tạo ra 128 bít khóa, còn với SHA sẽ tạo ra 160 bit khóa. Để đảm bảo tính toàn vẹn của thông tin, ta sử dụng một trong các thuật toán Hash với đầu vào là dữ liệu và password, đầu ra của thuật toán này sẽ được gắn với dữ liệu làm đầu vào cho thuật toán mã hóa. Như vậy, dữ liệu trước khi giấu vào trong ảnh sẽ được mã hóa hai lớp vừa đảm bảo tính bí mật, chống lại các tấn công xem trộm, vừa đảm bảo tính toàn vẹn, chống lại các tấn công giả mạo hay sửa đổi dữ liệu. Ở đây, ta cần cung cấp một mật khẩu (password) để tạo khóa cho quá trình mã hóa và giải mã dữ liệu. Password này sẽ được bên gửi và bên nhận trao đổi riêng với nhau. Thông tin gốc Thông tin gốc Password H Thông tin gốc Giá trị Hash + H Khóa K Mã hóa X Bản mã Hình 4.2: Mô hình mã hóa dữ liệu Sai Bản mã Giải mã X Password H Khóa K Thông tin gốc Giá trị Hash H = ? Đúng Lấy thông tin Yêu cầu gửi lại Hình 4.3: Mô hình giải mã dữ liệu Thiết kế chương trình giấu tin vào ảnh và tách tin từ ảnh. Để thực hiện việc giấu thông tin vào trong ảnh, trước hết ta cần tách ảnh thứ cấp (là việc tách các bit ít đặc trưng nhất) của ảnh môi trường, sau đó giấu thông tin cần giấu vào trong ảnh thứ cấp này bằng thuật toán giấu tin trong khối bit đen trắng thay các bit của ảnh thứ cấp bằng các bit của thông tin cần giấu, sau đó trả ảnh thứ cấp về ảnh môi trường theo đúng thứ tự các bit được lấy ra. Quá trình lấy tin từ ảnh kết quả được thực hiện tương tự, đầu tiên cũng tách ảnh thứ cấp từ ảnh kết quả, sau đó lấy thông tin được giấu từ ảnh thứ cấp này bằng thuật toán đã dùng. Giấu thông tin vào ảnh Phép giấu thông tin vào ảnh được chọn theo các bước sau: - Tách ảnh thứ cấp từ ảnh môi trường. - Giấu tin từ file văn bản vào ảnh thứ cấp. - Trả ảnh thứ cấp vào ảnh môi trường. Ảnh môi trường Ảnh thứ cấp 1 Tách bit ít đặc trưng nhất Thay bằng các bit của thông tin cần giấu Ảnh thứ cấp 2 Hình 4.4: Phép giấu thông tin vào ảnh Phép tách ảnh thứ cấp từ ảnh môi trường. Phép tách ảnh thứ cấp từ ảnh môi trường thực hiện việc tách các bit ít đặc trưng nhất của ảnh được chọn lưu vào một file dạng “*.tmp”. Với các bit ảnh 148 bit màu mỗi điểm ảnh chỉ tách ra một bit, với ảnh 16 bit màu, mỗi điểm ảnh cũng chỉ tách ra 1 bit là bit cao nhất của byte thứ 2 trong 2 byte biểu diễn một điểm ảnh. Với ảnh 24 bit màu số bit tách ra từ mỗi byte biểu diễn điểm ảnh được xác định bởi một số nguyên xác định. Giấu tin file dữ liệu vào ảnh thứ cấp: Giấu tin vào ảnh thứ cấp sử dụng thuật toán giấu tin trong khối bit của ảnh đen trắng tức là thay các bit của ảnh thứ cấp bằng các bit của thông tin cần giấu. Trả ảnh thứ cấp vào ảnh môi trường. Trả lại các bit từ ảnh thứ cấp sau khi giấu tin vào mỗi điểm ảnh của ảnh môi trường theo đúng trật tự khi lấy ra. Lấy thông tin từ ảnh kết quả. Lấy thông tin từ ảnh kết quả sẽ được thực hiện tương tự như quá trình giấu tin. - Tách ảnh thứ cấp từ ảnh sau khi giấu. - Lấy tin từ ảnh thứ cấp và giải mã ra thành file văn bản Thông tin giấu Tách bit ít đặc trưng nhất Ảnh thứ cấp 2 Ảnh kết quả Hình 4.5: Mô hình tách thông tin từ ảnh kết quả Chương trình ứng dụng tích hợp mật mã vào giấu tin trong ảnh. Giao diện chính của chương trình Hình 4.6: Giao diện chính của chương trình Chương trình được thiết kế với hai chức năng cơ bản, một là ứng dụng giấu tin (Nen File), một là ứng dụng lấy tin từ trong ảnh sau khi giấu tin (Bung File). Các chức năng chính của chương trình Chức năng nén file của chương trình: Là khả năng giấu thông tin vào trong ảnh, với các thuật toán mã hóa dữ liệu, kết hợp với thuật toán giấu tin. Đầu tiên sẽ là chọn file ảnh để giấu tin. Hình 4.7: Giao diện chọn file ảnh Hình 4.8: Giao diện chọn file văn bản cần giấu Hình 4.9: Giao diện chọn các thuật toán mã hóa Sau cùng là chọn nơi lưu ảnh đã chứa thông tin. Hình 4.10: Chọn nơi lưu ảnh kết quả Bây giờ ta so sánh giữa ảnh trước khi giấu tin và ảnh sau khi giấu tin. Hình 4.11: Ảnh trước và sau khi giấu tin Như vậy, ảnh trước và sau khi giấu tin không có sự thay đổi nào đáng kể, không thể phân biệt được bằng mắt thường. Hình 4.12: Thuộc tính không đổi của ảnh trước và sau giấu tin Hình 4.13: Giao diện khi hoàn tất quá trình giấu tin vào trong ảnh Chức năng lấy tin đã giấu trong ảnh: Là khả năng lấy thông tin đã giấu trong bức ảnh và khôi phục nó về hiện trạng ban đầu (thông tin gốc). Bằng các thuật toán lấy tin và giải mã tương tự như quá trình giấu tin. Hình 4.14: Giao diện đọc thông tin từ ảnh Hình 4.15: Chương trình đang đọc dữ liệu từ ảnh file Hình 4.16: Chương trình phát hiện ra thông tin giấu trong bức ảnh Khôi phục lại file dữ liệu bằng cách chọn file cần bung, gõ password để giải mã file đã được mã hóa, chọn đường dẫn và lưu tên file dữ liệu. Hình 4.17: Chọn nơi lưu giữ dữ liệu được lấy ra Hình 4.18: Giao diện khi chương trình hoàn thành Thông tin sau khi lấy ra từ bức ảnh, hoàn toàn trùng khớp với thông tin gốc ban đầu. KẾT LUẬN Cùng với giấu thông tin trong audio và giấu thông tin trong video, kỹ thuật giấu thông tin trong ảnh là những hướng nghiên cứu chính của thuật toán giấu thông tin hiện nay và đã đạt được những kết quả khả quan. Mặc dù so với hai kỹ thuật trước, kỹ thuật giấu thông tin trong ảnh bị hạn chế về mặt kích thước của ảnh do đó ảnh hưởng đến lượng thông tin có thể giấu trong đó, tuy nhiên điều này có thể được khắc phục bằng cách tăng số lượng ảnh giấu. Đồ án đã trình bày một số khái niệm liên quan tới việc che giấu thông tin nói chung, cụ thể hơn là giấu thông tin trong ảnh số và cũng trình bày một thuật toán giấu tin trong ảnh đen trắng, trên cơ sở đó phát triển thuật toán cho việc giấu tin trong ảnh màu và ảnh đa cấp xám. Với thuật toán giấu tin trong ảnh mầu thì tính vô hình của thông tin sau khi giấu được đảm bảo, thông qua việc chọn m, n đủ lớn những biến đổi không gây ra sự chú ý đáng kể nào. Ảnh sau khi giấu tin sẽ ít xuất hiện những điểm ảnh có màu sắc khác so với các điểm ảnh xung quanh và với thị giác của con người thì không thể phân biệt được sự khác nhau đó. Độ an toàn của chương trình, phụ thuộc vào độ an toàn của thuật toán giấu tin và thuật toán mã hóa. Với thuật toán giấu tin, độ an toàn phụ thuộc rất lớn vào vấn đề có thể phát hiện được những thay đổi trong ảnh đã giấu tin với ảnh gốc hay không, do đó khi chọn ảnh gốc thì nên chọn những ảnh bình thường, ít quen thuộc,… và quá trình truyền ảnh giấu tin nên được ngụy trang bằng những việc bình thường, gửi kèm theo nhiều ảnh không chứa thông tin,… khi đó kẻ tấn công sẽ rất khó để có thể nhận biết trong ảnh có chứa thông tin hay không và nếu có thì ảnh nào mới chứa thông tin,… Ngoài ra kết hợp với những thuật toán băm, thuật toán mã hóa dữ liệu, sẽ làm tăng thêm độ an toàn cho thông tin truyền đi. Độ an toàn của chương trình phụ thuộc vào việc lựa chọn thuật toán băm và thuật toán mã hóa. Tuy nhiên, mỗi một thuật toán sẽ có những ưu, nhược điểm riêng, do đó tùy vào độ quan trọng của thông tin, mục đích của công việc mà ta lựa chọn thuật toán thích hợp. Nói cách khác, khi ứng dụng việc tích hợp mật mã vào giấu thông tin trong ảnh, độ an toàn của dữ liệu khi được gửi đi sẽ tăng lên rất nhiều so với kỹ thuật chỉ giấu thông tin thông thường, hoặc chỉ sử dụng các thuật toán mã hóa. Không một phương pháp bảo vệ dữ liệu nào được gọi là an toàn tuyệt đối, do đó, tùy vào mức độ quan trọng của thông tin, mục đích sử dụng và điều kiện thực tế để ta lựa chọn phương pháp tối ưu nhất. Do thời gian và kiến thức còn hạn chế nên đồ án này của em không tránh khỏi những thiếu sót, vì vậy rất mong nhận được sự góp ý của các thầy, cô giáo và các bạn. Hà Nội, ngày...tháng...năm 2009 SINH VIÊN Nguyễn Văn Mạnh TÀI LIỆU THAM KHẢO An toàn tính toán – Học viện kỹ thuật Mật mã – Trung tâm thông tin thư viện TL – TV, năm 2001. Kỹ thuật giấu tin trong ảnh sử dụng các bit LSB – Thạc sỹ Dương Đức Hải – Nhà xuất bản thông tin năm 2004. Giấu tin trong dữ liệu đa phương tiện một công nghệ mới trong bảo mật thông tin – Trần Quốc Dũng – Nhà xuất bản Bưu điện, năm 2004. An Overview of Image Steganography – T.Morkel, J.H.P.Elloft, M.S.Oliver – Sandton, South Africa, June/July 2005. Techniques for Data Hiding – W.Bender – D.Gruhl – N.Morimoto – A.lu. PHỤ LỤC Các thủ tục chính của chương trình Mô đun mã hóa: ‘Khai báo các thuật toán mã hóa Public Enum EC_HASH_ALG_ID MD2 MD4 MD5 SHA End Enum Public Enum EC_HASH_DATAFORMAT EC_HF_HEXADECIMAL EC_HF_NUMERIC EC_HF_ASCII End Enum Private Enum EC_HASH_STATUS EC_HASH_NONE EC_HASH_BUSY EC_HASH_READY End Enum Private Enum EC_CRYPT_STATUS EC_CRYPT_NONE EC_CRYPT_BUSY EC_CRYPT_READY End Enum Private Enum EC_PROVIDER [No Providers] [Microsoft Base Cryptographic Provider v.1] [Microsoft Enhanced Cryptographic Provider] End Enum Public Enum EC_CRYPT_ALGO_ID RC2 RC4 DES [Triple DES] [Triple DES 112] End Enum Public Enum EC_CRYPT_SPEED [1KB] [2KB] [4KB] [8KB] [16KB] [30KB] [40KB] [50KB] [60KB] [80KB] [100KB] End Enum ‘Khai báo các đối tượng Private m_Hash_Object As Long Private m_Hash_Data(20) As Byte 'This value will usually be 16 or 20, depending on the hash algorithm. Private m_Hash_DataLen As Long Private m_Hash_Algo_Id As EC_HASH_ALG_ID Private m_Hash_Algorithm As Long Private m_Hash_Status As EC_HASH_STATUS Private m_Hash_DataReady As Boolean ‘Khai báo các thuộc tính mã hóa và giải mã Private m_EncDec_Password As String Private m_EncDec_InBuffer As String Private m_EncDec_Algo_Id As EC_CRYPT_ALGO_ID Private m_EncDec_Status As EC_CRYPT_STATUS Private m_EncDec_Algorithm As Long ' Khai báo thuộc tính kích thước khối Private HP_FILE_RW_BLOCKSIZE As Long Private m_Speed As EC_CRYPT_SPEED ‘Các tiến trình khi thực hiện mã hóa và giải mã ‘ Event EncryptionFileStart() Event EncryptionFileStatus(ByVal lBytesProcessed As Long, ByVal lTotalBytes As Long) Event EncryptionFileComplete() Event DecryptionFileStart() Event DecryptionFileStatus(ByVal lBytesProcessed As Long, ByVal lTotalBytes As Long) Event DecryptionFileComplete() Event HashFileStart() Event HashFileStatus(ByVal lBytesProcessed As Long, ByVal lTotalBytes As Long) Event HashFileComplete() Event EncryptionDataStart() Event EncryptionDataComplete() Event DecryptionDataStart() Event DecryptionDataComplete() Event HashDataStart() Event HashDataComplete() ‘ Để trả lại giá trị thực nếu giá trị Hash được tính toán chính xác và được lấy ra Public Property Get IsHashDataReady() As Boolean IsHashDataReady = m_Hash_DataReady End Property ‘Speed property: Tạo block size cho quá trình mã hóa / giải mã Public Property Get Speed() As EC_CRYPT_SPEED Speed = m_Speed End Property Public Property Let Speed(ByVal newSpeed As EC_CRYPT_SPEED) If newSpeed [100KB] Then ' If running then raise an error 'If Ambient.UserMode = True Then ' Err.Raise vbObjectError + ERROR_ILLEGAL_PROPERTY, "EzCryptoApi", "Illegal property value" 'Else ' Show a message box MsgBox "Illegal property value", vbCritical, "Error" 'End If Exit Property End If m_Speed = newSpeed Select Case m_Speed Case [1KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_1k Case [2KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_2k Case [4KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_4k Case [8KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_8k Case [16KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_16k Case [30KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_30k Case [40KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_40k Case [50KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_50k Case [60KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_60k Case [80KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_80k Case [100KB]: HP_FILE_RW_BLOCKSIZE = HP_FILE_RW_BLOCKSIZE_100k End Select End Property ‘HashAlgorithm property: Lựa chọn thuật toán để băm dữ liệu Public Property Let HashAlgorithm(ByVal hAlgoId As EC_HASH_ALG_ID) If hAlgoId 3 Then Exit Property End If ' Lựa chọn thuật toán m_Hash_Algo_Id = hAlgoId Select Case m_Hash_Algo_Id Case MD2: m_Hash_Algorithm = CALG_MD2 Case MD4: m_Hash_Algorithm = CALG_MD4 Case MD5: m_Hash_Algorithm = CALG_MD5 Case SHA: m_Hash_Algorithm = CALG_SHA End Select End Property Public Property Get HashAlgorithm() As EC_HASH_ALG_ID HashAlgorithm = m_Hash_Algo_Id End Property ‘Password property: Tạo Password sử dụng cho quá trình mã hóa, giải mã: Public Property Get Password() As String Password = m_EncDec_Password End Property Public Property Let Password(ByVal sPassword As String) m_EncDec_Password = sPassword End Property ‘EncryptionAlgorithm property: Lựa chọn thuật toán mã hóa, giải mã dữ liệu Public Property Get EncryptionAlgorithm() As EC_CRYPT_ALGO_ID EncryptionAlgorithm = m_EncDec_Algo_Id End Property Public Property Let EncryptionAlgorithm(ByVal ecEncryptID As EC_CRYPT_ALGO_ID) If ecEncryptID [Triple DES 112] Then Err.Raise vbObjectError + ERROR_ILLEGAL_PROPERTY, , "Illegal property value" Exit Property End If If m_Provider_Name = [No Providers] Then Exit Property End If If m_Provider_Name = [Microsoft Base Cryptographic Provider v.1] And _(ecEncryptID = [Triple DES] Or ecEncryptID = [Triple DES 112]) Then Exit Property End If m_EncDec_Algo_Id = ecEncryptID Select Case m_EncDec_Algo_Id Case RC2: m_EncDec_Algorithm = CALG_RC2 Case RC4: m_EncDec_Algorithm = CALG_RC4 Case DES: m_EncDec_Algorithm = CALG_DES Case [Triple DES]: m_EncDec_Algori

Các file đính kèm theo tài liệu này:

  • docdoantotnghiep_8513.doc