ẢNH
4.3.1.Thiết kế bộ mã hóa và giải mã
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.
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á
Ở đâ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.
Hình 4.2: Mô hình mã hóa dữ liệu
Hình 4.3: Mô hình giải mã dữ liệu
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ã 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
4.3.2. 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.
4.3.2.1. 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.
Hình 4.4: Phép giấu thông tin vào ảnh
4.3.2.2. 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 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 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.
4.3.2.3. 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.
4.3.2.4. 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.
4.3.2.5. 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
Hình 4.5: Mô hình tách thông tin từ ảnh kết quả
Thông tin giấu
Tách bit ít đặc trưng nhất
Ảnh thứ cấp 2
4.4. Chương trình ứng dụng tích hợp mật mã vào giấu tin trong ảnh.
4.4.1. 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).
4.4.2. 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.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
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
• 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.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.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
TÀI LIỆU THAM KHẢO