Luận văn, báo cáo, luận án, đồ án, tiểu luận, đề tài khoa học, đề tài nghiên cứu, đề tài báo cáo - Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công nghệ thông tin UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA CÔNG NGHỆ THÔNG TIN ---------- NGUYỄN THỊ VIỆT LY TÌM HIỂU VÀ NGHIÊN CỨU VỀ GIẤU TIN TRONG ẢNH KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC Quảng Nam, tháng 4 năm 2017 UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA: CÔNG NGHỆ THÔNG TIN ---------- KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Tên đề tài: TÌM HIỂU VÀ NGHIÊN CỨU VỀ GIẤU TIN TRONG ẢNH Sinh viên thực hiện NGUYỄN THỊ VIỆT LY MSSV: 2113021044 CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN KHÓA 2013 – 2017 Cán bộ hướng dẫn ThS.DƯƠNG PHƯƠNG HÙNG MSCB: ……… Quảng Nam, tháng 4 năm 2017 1 PHẦN 1. MỞ ĐẦU 1. Lý do chọn đề tài Ngày nay, công nghệ thông tin ngày càng phát triển mạnh mẽ tạo nên một môi trường mở và là phương tiện trao đổi thông tin, tài liệu một cách nhanh chóng, tiện lợi. Điều đó đồng nghĩa với nguy cơ khả năng những thông tin, tài liệu đó bị truy cập trái phép hay bị đánh cắp cũng tăng lên. Do đó, bảo đảm an toàn và bảo mật thông tin cho việc dữ liệu truyền trên mạng là rất cần thiết. Nhiều kĩ thuật đã được nghiên cứu nhằm đảm bảo an toàn và bí mật cho một thông điệp truyền đi chẳng hạn như kĩ thuật giấu tin trong ảnh. Không gây sự chú ý như phương pháp mã hóa dữ liệu, giấu tin trong ảnh giấu các thông tin quan trọng trong những bức ảnh thông thường. Nhìn bề ngoài, các bức ảnh có chứa thông tin cũng không khác gì với các bức ảnh khác nên khó phát hiện bằng kĩ thuật thông thường. Nhờ đó mà việc truyền thông tin mật trở nên dễ dàng và hiệu quả hơn. Bên cạnh đó, giấu tin trong ảnh là một kĩ thuật còn tương đối mới, phát triển rất nhanh và ngày càng phổ biến, thu hút được sự quan tâm của nhiều người và cũng còn khá nhiều thách thức cần tìm hiểu. Chính vì vậy, dưới sự hướng dẫn tận tình của giảng viên ThS. Dương Phương Hùng, em đã lựa chọn đề tài: “Tìm hiểu và nghiên cứu về giấu tin trong ảnh ” với mong muốn được tìm hiểu nhiều hơn nữa và nâng cao tính an toàn cho thông tin, tài liệu quan trọng. 2. Mục tiêu của đề tài Nghiên cứu các kĩ thuật giấu tin trong môi trường dữ liệu ảnh số và các phương pháp giấu tin đảm bảo tính ẩn của dữ liệu được giấu và tăng tính an toàn, bền vững cho tin đã giấu. Nghiên cứu các kĩ thuật phát hiện ảnh giấu tin tập trung vào việc phát hiện ra sự có mặt hay không các thông điệp ẩn trong dữ liệu được quan sát. 2 3. Đối tượng và phạm vi nghiên cứu - Đối tượng nghiên cứu: + Các kĩ thuật giấu tin trong ảnh + Các kĩ thuật phát hiện ảnh giấu tin - Phạm vi nghiên cứu: + Nghiên cứu về lý thuyết xử lý ảnh số. + Nghiên cứu về các kĩ thuật giấu tin trong ảnh số. + Đề xuất phương pháp giấu tin làm tăng tính an toàn cho tin giấu trước các tấn công sử dụng kĩ thuật xử lý ảnh. + Cài đặt thử nghiệm phần mềm giấu tin 4. Phương pháp nghiên cứu - Tổng hợp và phân tích cơ sở lý thuyết các phương pháp giấu tin. - So sánh, đánh giá kết quả giấu tin thông qua công thức và thực nghiệm. 5. Lịch sử nghiên cứu Đảm bảo an toàn bảo mật thông tin là một trong những vấn đề quan trọng được nhiều chuyên gia nghiên cứu trên các lĩnh vực kinh tế, chính trị… Áp dụng và kế thừa từ những bài nghiên cứu đó, em đã đi sâu vào tìm hiểu về đề tài giấu tin trong ảnh. 6. Đóng góp của đề tài Đề tài nghiên cứu đề xuất phương pháp giấu tin làm tăng tính an toàn, bền vững cho giấu tin trước các tấn công sử dụng kĩ thuật xử lí ảnh. Phương pháp đề xuất thể hiện được ưu điểm so với các phương pháp khác: làm giảm sự chú ý của các tin tặc từ đó làm giảm khả năng giải mã. Đề xuất các phương pháp, kĩ thuật lấy thông tin đã ẩn giấu từ ảnh số một cách rõ ràng để dễ dàng hơn cho những ai muốn tìm hiểu về vấn đề này. 3 7. Cấu trúc đề tài Ngoài phần mở đầu, đề tài gồm 4 chương sau: Chương 1: Tổng quan về giấu tin Chương 2: Một số kĩ thuật giấu tin trong ảnh Chương 3: Một số kĩ thuật phát hiện ảnh giấu tin Chương 4: Chương trình Demo ứng dụng 4 PHẦN 2. NỘI DUNG NGHIÊN CỨU Chương 1: TỔNG QUAN VỀ GIẤU TIN 1.1. Định nghĩa và mục đích giấu tin 1.1.1. Định nghĩa Giấu thông tin (steganography) là một kỹ thuật nhúng thông tin vào một nguồn đa phương tiện nào đó, ví dụ như văn bản, ảnh, audio, video,... Nguồn đa phương tiện này được gọi là môi trường giấu tin. Giấu tin trong ảnh: Thông tin sẽ được giấu vào dữ liệu ảnh nhưng chất lượng ảnh ít thay đổi và “khó” phát hiện mẩu tin mật đó. Trong ảnh thông tin giấu một cách vô hình. Nó là một cách truyền thông tin mật cho nhau mà người khác không thể biết được. 1.1.2. Mục đích - Mục đích của việc giấu tin đảm bảo an toàn và bảo mật thông tin. Với 2 khía cạnh cần được quan tâm: + Bảo mật cho dữ liệu được đem giấu. + Bảo mật cho chính đối tượng được đem giấu thông tin. - Ngày nay, nghệ thuật giấu tin được nghiên cứu để phục vụ cho các mục đích tích cực như: bảo vệ bản quyền các tài liệu số hóa, hay giấu các thông tin bí mật về quân sự, kinh tế. 1.2. Mô hình giấu tin Hı̀nh 1.1: Mô hình giấu tin và lấy tin 5 Mô hình trên biễu diễn quá trình giấu và lấy tin cơ bản. Trong đó, phương tiện chứa bao gồm các đối tượng được dùng để giấu tin như audio, video, hình ảnh,...Thông tin giấu là một lượng thông tin mang ý nghĩa nào đó tùy thuộc mục đích của người sử dụng. Thông tin sẽ được giấu vào trong phương tiện chứa nhờ một bộ nhúng. Bộ nhúng là những chương trình triển khai các thuật toán để giấu tin và thực hiện với một khóa bí mật giống như các hệ mã cổ điển. Sau khi giấu tin ta thu được phương tiện chứa các thông tin đã giấu và phân phối sử dụng trên mạng. Sau khi nhận được đối tượng phương tiện có giấu tin, quá trình giải mã được thực hiện thông qua một bộ giải mã tương ứng với bộ nhúng thông tin cùng với khóa của quá trình nhúng. Kết quả thu được gồm phương tiện chứa gốc và thông tin đã giấu. Bước tiếp theo thông tin giấu sẽ được xử lí, kiểm định, so sánh với thông tin giấu ban đầu. 1.3. Phân loại các kĩ thuật giấu tin Hı̀nh 1.2: Phân loại các kĩ thuật giấu tin Theo sơ đồ này, giấu tin được chia thành hai loại lớn là giấu tin mật và thủy vân số. 1.3.1. Giấu tin mật (Seganography) Giấu tin mật che giấu bản tin (đòi hỏi mật độ cao và dung lượng càng lớn càng tốt) vào môi trường (đối tượng) gốc. Giấu tin mật quan tâm 6 tới việc giấu các tin sao cho thông tin giấu được càng nhiều càng tốt và quan trọng là khó phát hiện một đối tượng có giấu tin bên trong hay không bằng kỹ thuật thông thường. Trong quá trình giấu tin để tăng tính bảo mật, có thể phải dùng khóa viết mật. Đó chính là giấu tin có xử lí. Nếu không dùng khóa viết mật, tức là chỉ giấu tin đơn thuần vào môi trường giấu tin. Đó là giấu tin đơn thuần. 1.3.2. Thủy vân số (Watermaking) Thủy vân số giấu mẩu tin ngắn nhưng đòi hỏi độ bền vững cao của thông tin cần giấu (trước các biến đổi thông thường của tệp dữ liệu môi trường). Nó đánh dấu vào đối tượng nhằm khẳng định bản quyền sở hữu hay phát hiện xuyên tạc thông tin. Thủy vân số được phân thành 2 loại: - Thủy vân bền vững: thường được ứng dụng trong bảo vệ bản quyền. Thủy vân được nhúng trong sản phẩm như một hình thức dán tem bản quyền. Trong trường hợp này, thủy vân phải tồn tại bền vững cùng với sản phẩm nhằm chống việc tẩy xóa, làm giả hay biến đổi phá hủy thủy vân. + Thủy vân ẩn: không thể nhìn thấy được bằng mắt thường. + Thủy vân hiện: là thủy vân hiện ngay trên sản phẩm và có thể nhìn thấy được bằng mắt thường. - Thủy vân dễ vỡ: là kỹ thuật nhúng thủy vân vào trong một đối tượng (sản phẩm) sao cho khi phân bố sản phẩm (trong môi trường mở) nếu có bất kì phép biến đổi nào làm thay đổi sản phẩm gốc thì thủy vân đã được giấu trong đối tượng sẽ không còn nguyên vẹn như trước khi giấu. 1.4. Các yêu cầu giấu tin - Tính bền vững: Thể hiện khả năng ít bị thay đổi (về nội dung, hình dạng) trước những tấn công từ bên ngoài. Hiện nay, chưa có kỹ thuật giấu tin nào đảm bảo được yêu cầu này một cách tuyệt đối. 7 - Khả năng không bị phát hiện: Thể hiện ở việc khó xác định được đối tượng có chứa thông tin mật hay không. Các kỹ thuật giấu tin hiện nay cố gắng đảm bảo yêu cầu này dựa vào hệ thống thị giác của con người. - Khả năng lưu trữ: Thể hiện ở lượng thông tin được lưu trữ. Do còn phải đảm bảo “khả năng không bị phát hiện” nên với những thông tin mật lớn, ta thường chia nhỏ nó ra, nhúng nhiều lần vào các đối tượng khác nhau. 1.5. Một số ứng dụng - Bảo vệ bản quyền tác giả - là ứng dụng cơ bản nhất của kỹ thuật thủy vân số. Một thông tin nào đó mang ý nghĩa sở hữu quyền tác giả (thủy vân) sẽ được nhúng vào trong các sản phẩm, thủy vân đó chỉ có một mình người chủ sở hữu hợp pháp các sản phẩm đó có và được dùng làm minh chứng cho bản quyền sản phẩm. - Điểm chỉ số: mục tiêu là để chuyển thông tin về người nhận chứ không phải chủ sở hữu sản phẩm, phương tiện số nhằm xác định đây là bản sao duy nhất của sản phẩm. Về mặt ý nghĩa, điểm chỉ số tương tự như số seri của phần mềm. - Xác thực thông tin hay xuyên tạc thông tin: một tập các thông tin sẽ được giấu trong phương tiện chứa. Sau đó, nó được sử dụng để nhận biết xem dữ liệu trên phương tiện gốc có bị thay đổi hay không. - Dấu vân tay hay dán nhãn: Thủy vân trong ứng dụng này để nhận diện người gửi hay người nhận của một thông tin nào đó. - Điều khiển truy cập: Thủy vân trong trường hợp này dùng để điều khiển truy cập đối với thông tin. Các thiết bị phát hiện ra thủy vân thường được gắn sẵn trong hệ thống đọc ghi. - Giấu tin mật: Trong nhiều trường hợp, sử dụng mật mã có thể gây ra sự chú ý ngoài mong muốn. Ngược lại, việc giấu tin trong môi trường nào 8 đó rồi gửi đi trên mạng ít gây sự chú ý. Có thể dùng nó để gửi đi một bí mật thương mại, một bản thiết kế hay các thông tin bất kì khác. 1.6. Các định dạng ảnh thông dụng Ảnh thu được sau quá trình số hóa có nhiều loại khác nhau, phụ thuộc vào kỹ thuật số hóa ảnh. 1.6.1. Định dạng ảnh IMG (Image) Ảnh IMG là ảnh đen trắng, mỗi điểm ảnh được thể hiện bởi 1bit. Toàn bộ ảnh chỉ gồm các điểm sáng và tối tương ứng với giá trị 0 hoặc 1. Tỉ lệ nén của kiểu định dạng này là khá cao. Ảnh IMG được nén theo từng dòng. Mỗi dòng bao gồm các gói (Pack). Các dòng giống nhau được nén thành một gói. 1.6.2. Định dạng ảnh PCX (Personal Computer Exchange ) Định dạng ảnh PCX là một trong những định dạng loại cổ điển nhất. Nó sử dụng phương pháp mã loạt dài RLC để nén dữ liệu ảnh. Quá trình nén và giải nén được thực hiện trên từng dòng ảnh. Thực tế phương pháp giải nén PCX kém hiệu quả hơn so với kiểu IMG. Định dạng ảnh PCX thường được dùng để lưu trữ ảnh vì thao tác đơn giản, cho phép nén và giải nén nhanh. Tuy nhiên vì cấu trúc cố định nên trong một số trường hợp nó làm tăng kích thước lưu trữ. 1.6.3. Định dạng ảnh GIF (Graphics Interchanger Format) Định ảnh GIF do hãng Computer Incorporated (Mỹ) đề xuất lần đầu tiên vào năm 1990. Ở định dạng này, khi số màu trong ảnh càng tăng, thì ưu thế của nó càng nổi trội. Những ưu thế này có được là do GIF tiếp cận các thuật toán LZW (Lampel Ziv Welch), dựa vào sự lặp lại của một nhóm điểm, người ta xây dựng từ điển lưu các chuỗi kí tự có tần suất lặp lại cao và thay thế bằng từ mã tương ứng mỗi khi gặp chúng. Dạng ảnh GIF cho chất lượng cao, độ phân giải đồ họa tốt, cho phép hiển thị trên hầu hết các phần cứng đồ họa. 9 1.6.4. Định dạng ảnh BMP (Bitmap ) Ảnh BMP (Bitmap) được phát triển bởi Microsoft Corporation, được lưu trữ dưới dạng độc lập thiết bị cho phép Windows hiển thị dữ liệu không phụ thuộc vào khung chỉ định màu trên bất kì phần cứng nào. Tên file mở rộng mặc định của một file ảnh Bitmap là BMP, nét vẽ được thể hiện là các điểm ảnh. Qui ước màu đen, trắng tương ứng với các giá trị 0, 1. Ảnh BMP được sử dụng trên Microsoft Windows và các ứng dụng chạy trên Windows từ version 3.0 trở lên. BMP thuộc loại ảnh mảnh. Có rất nhiều định dạng ảnh thuộc kiểu bitmap như BMP, PCX, GIF, JPEG, TAG, PNG,… Mỗi file ảnh BMP gồm 4 phần: - Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap. - Bitmap Information (40 bytes): chứa một số thông tin chi tiết giúp hiển thị ảnh. - Palette màu (4x bytes), x là số màu của ảnh, định nghĩa các màu sẽ được ứng dụng trong ảnh. - Bitmap Data: chứa dữ liệu ảnh. Đặc diểm nỗi bật nhất của định dạng BMP là tập tin ảnh thường không được nén bằng bất kì thuật toán nào. Khi lưu ảnh, các điểm ảnh được ghi trực tiếp vào tập tin – một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc vào giá trị n của ảnh. Do đó, một hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp nhiều lần so với ảnh được nén (như GIF, JPEG, PNG…) 1.6.5. Định dạng ảnh JPEG (Joint Photographic Expert Group) Ưu điểm của JPEG hơn GIF là nó có thể hiển thị hình ảnh với màu chính xác (true-colour), có thể lên đến 16 triệu màu. Điều đó cho phép JPEG được sử dụng tốt nhất cho hình ảnh chụp và hình ảnh minh họa có số lượng màu lớn. 10 Nhược điểm chính của định dạng này là chúng được nén bằng thuật toán lossy (mất dữ liệu), hình ảnh sẽ mất một số chi tiết khi chuyển sang định dạng JPEG. Đường bao của các khối màu có thể xuất hiện nhiều điểm mờ và các vùng sẽ mất sự rõ nét. Nói cách khác, định dạng JPEG thực hiện bảo quản tất cả thông tin màu trong hình ảnh. Tuy nhiên, với các hình ảnh chất lượng màu cao (high- colour), như hình ảnh chụp, thì sẽ không ảnh hưởng gì. 11 Chương 2: MỘT SỐ KĨ THUẬT GIẤU TIN TRONG ẢNH 2.1. Các kĩ thuật giấu tin trong ảnh Bitmap Việc giấu tin trong ảnh màu có rất nhiều thuận lợi so với việc giấu tin trong ảnh đen trắng, nó có ưu điểm như sau: - Giấu được nhiều thông tin hơn so với ảnh đen trắng cùng kích cỡ. - Độ an toàn cao hơn so với ảnh đen trắng vì có rất ít sự thay đổi so với ảnh gốc ban đầu. Đối với từng loại màu ta lại có kỹ thuật khác nhau: 2.1.1. Ảnh nhỏ hơn hoặc bằng 8 bit màu Không phải tất cả những ảnh nhỏ hơn hoặc bằng 8 bit màu đều có bảng màu được sắp xếp, do vậy việc sắp xếp LSB rất khó khăn. Ta cần sắp xếp lại bảng màu: - Chọn một màu bất kì, giả sử màu có dạng A(x, y, z) ta đưa vào vị trí đầu tiên. - Duyệt tất cả các màu B(m, n, p) còn lại và tính: S(A, B) = sqrt((x - m) 2 + (y - n)2 + (z - p) 2 ) - Ta sẽ chọn màu B có S(A, B) nhỏ nhất để sắp xếp cạnh màu A sau đó lại tiếp tục thực hiện như bước 2. - Quy trình được kết thúc khi bảng màu đã được sắp xếp. 2.1.2. Ảnh 16 bit màu Thực tế chỉ có 15 bit được dùng để biểu diễn cho một điểm ảnh: - 5 bit dùng để biểu diễn cường độ tương đối màu đỏ. - 5 bit dùng để biểu diễn cường độ tương đối màu xanh lơ. - 5 bit dùng để biểu diễn cường độ tương đối màu xanh lam. Còn 1 bit không dùng đến là bit cao nhất ở byte thứ 2, đó chính là bit LSB của ảnh 16 bit màu. Nếu chỉ lấy một bit này thì lượng thông tin giấu là rất ít do đó cần lấy thêm một số bit nữa. 12 2.1.3. Ảnh 24 bit màu Mỗi một điểm ảnh được biễu diễn bằng 3 byte: - 1 byte dùng để biểu diễn cường độ tương đối màu đỏ. - 1 byte dùng để biểu diễn cường độ tương đối màu xanh lơ. - 1 byte dùng để biểu diễn cường độ tương đối màu xanh lam. Trong mỗi byte các bit nằm càng về cuối càng ít ảnh hưởng đến phần dữ liệu ảnh. Thông thường để tăng lượng thông tin được giấu người ta thường lấy 4 bit cuối mỗi byte để giấu thông tin. Bằng thực nghiệm cho thấy nếu thay đổi toàn bộ bit cuối của một byte thì ảnh kết quả cũng không khác nhiều lắm so với ảnh ban đầu. Điều này vô cùng có ý nghĩa vì ta có thể giấu được nhiều thông tin trong ảnh. 2.1.4. Các phương pháp giấu tin - Phương pháp nhúng vào các bit có trọng số thấp (Least Significant Bit). - Các phương pháp dựa vào kỹ thuật biến đổi ảnh, ví dụ biến đổi từ miền không gian sang miền tần số. - Các phương pháp sử dụng mặt nạ giác quan. Phương pháp nhúng vào các bit có trọng số thấp: Nền tảng kỹ thuật Khi chuyển đổi một ảnh tương tự sang ảnh số người ta thường chọn 3 cách thể hiện màu: - 24 bit màu: mỗi điểm có thể nhận một trong 2 24 màu, mỗi màu được tạo ra từ 3 màu căn bản: red (R), green (G) và blue (B), mỗi màu nhận một giá trị từ 0 đến 255 (8 bit). - 8 bit màu: mỗi điểm có thể nhận một trong 256 màu, chọn từ một bảng màu (palette) - 8 bit dải xám: mỗi điểm nhận một trong 256 (2 8 ) sắc thái xám. 13 Phương pháp LSB chọn ra các bit ít quan trọng và thay thế chúng bằng các bit thông tin cần giấu. Để khó bị phát hiện, thông tin giấu thường được nhúng vào những vùng mắt người kém nhạy cảm với màu sắc. Từ đó, các thông tin được giấu sẽ lẫn vào đâu đó giống như nhiễu ảnh. Hı̀nh 2.1: Giấu tin vào các bit ít quan trọng của điểm ảnh Áp dụng kỹ thuật LSB, một điểm ảnh 24 bit có thể giấu được 3 bit thông tin, theo thứ tự từ trái sang phải, byte đầu tiên chứa giá trị biểu thị cường độ màu lam (B), byte thứ hai chứa giá trị biểu thị cường độ màu lục (G), byte thứ ba chứa giá trị biểu thị cường độ màu đỏ (R). Như vậy, mỗi màu được xác định bởi một số nguyên có giá trị trong khoảng 0 – 255. Ví dụ: Giả sử, tin cần giấu là chữ cái ‘A’ có mã ASCII là 65 (hệ thập phân), hệ nhị phân là 01000001. Giấu nó vào một vùng ảnh có 3 điểm ảnh các màu kề nhau là lam, lục và đỏ (B, G, R): Các điểm ảnh trước khi giấu có hệ nhị phân là: Màu lam: 11111111, 00000000, 00000000 Màu lục: 00000000, 11111111, 00000000 Màu đỏ: 00000000, 00000000, 11111111 Chèn giá trị nhị phân của chữ ‘A’ vào 3 điểm ảnh trên theo kỹ thuật LSB, lật bit bên phải nhất sẽ thu được kết quả sau: 11111110 00000001 00000000 00000000 11111110 00000000 14 00000000 00000001 11111111 Các bit được gạch chân là các bit bị lật. Dùng 4 bit có trọng số thấp để giấu tin mà chất lượng không thay đổi bao nhiêu đối với mắt thường.. Từ ví dụ trên suy ra, nếu dùng 1 LSB thì xác suất phải lật bit là 50, vậy nên lượng nhiễu gây ra cho ảnh là rất ít. Đối với ảnh màu 24 bit, ta có thể dùng 2 đến 3 bit thấp mà vẫn không để lộ tin mật. Nhưng đối với ảnh 8 bit thì không thể, vì ta chỉ có thể dùng 1 bit thấp nhất để giấu tin. 2.2. Các kĩ thuật giấu tin trong ảnh JPG Các kĩ thuật giấu tin trong ảnh JPG như kỹ thuật dùng hệ số DCT, kỹ thuật mặt nạ và lọc, kỹ thuật dùng hệ số của phép chiếu trực giao. Tuy nhiên, kĩ thuật thường được sử dụng nhiều nhất là dùng hệ số DCT để giấu tin. 2.2.1. Kĩ thuật dùng hệ số DCT - Nền tảng kỹ thuật JPEG viết tắt cho Joint Photographic Experts Group. Phần mở rộng của các file JPEG thường có dạng .jpeg, .jfif, .jpg, hay .jpe; nhưng .jpg là dạng được dùng phổ biến nhất. Các ảnh JPEG có tỉ lệ nén cao (tới vài chục lần), chất lượng tốt, do đó chúng được sử dụng nhiều trên mạng. Tuy nhiên, các tệp ảnh JPEG không phù hợp với xử lí bit như các ảnh dựa trên bảng màu, tuy vậy vẫn có thể dùng chúng để giấu dữ liệu. Ảnh JPEG dùng biến đổi Cosin rời rạc để thực hiện nén ảnh. Biến đổi Cosin rời rạc là phép biến đổi mất dữ liệu vì không thể tính chính xác các giá trị cosin, cũng như có thể có các lỗi làm tròn. Độ lệch giữa dữ liệu gốc và dữ liệu phục hồi lại sau khi biến đổi phụ thuộc vào các giá trị và phương pháp sử dụng để tính các giá trị cosin rời rạc. Thuật toán JPEG làm việc bằng cách chia ảnh ra thành các ma trận 8x8. Sau đó, tính hệ số biến đổi cosin rời rạc cho từng ma trận. Tiếp theo, các hệ số này được nhân với một ma trận lượng hóa. Kết quả sẽ được làm 15 tròn đến số nguyên gần nhất, cuối cùng các số nguyên này được nén và lưu lại. Các cấu từ DCT chính là nơi chúng ta có thể giấu dữ liệu. Cách tiếp cận phổ biến là chọn các hệ số DCT lớn và sửa đi chút ít. Vì hệ số lớn tới mức “năng lượng” cao nên ít làm thay đổi ảnh nhất. Một hướng khác là chọn các hệ số DCT trong các vùng mà mắt người không nhìn thấy. Các thuật toán JPEG nổi tiếng áp dụng trong F5 và JSteg đều dùng cách sửa DCT để nhúng dữ liệu. Cả 2 phương pháp này đều qua được mắt thường nhưng không qua được các phương pháp phân tích, thống kê. - Phép biến đổi cosin rời rạc Phép biến đổi cosin rời rạc hay DCT – Discrete Cosine Transform đã trở thành tiêu chuẩn quốc tế cho các hệ thống mã chuyển vị bởi nó có đặc tính gói năng lượng tốt, cho kết quả là số thực và có thuật toán nhanh để thực hiện chúng. Phép biến đổi DCT đã được dùng trong dạng chuẩn ảnh JPEG. Định nghĩa biến đổi cosin rời rạc 2 chiều - Biến đổi DCT 2 chiều tổng quát là biến đổi trên khối 2 chiều bất kì m x n, trong đó các khối kích thước 88, 1616 được sử dụng nhiểu nhất. Tuy nhiên, chúng ta sẽ chỉ tìm hiểu phép biến đổi DCT trên khối 88 được sử dụng trong chuẩn nén JPEG. - Phép biến đổi thuận DCT 88 được định nghĩa như sau: I(u,v) = ௦ሺ௨ሻ௦ሺ௩ሻ ସ ∑ ܺ∑ ሺ ݈,݇ሻ cosሺ ሺଶା ଵሻ௨గ ଵ ሻ cosሺ ሺଶାଵሻ௩గ ଵ ሻ ୀ ୀ ݏ - Biến đổi ngược DCT định nghĩa như sau: X(k,l) = ௦ሺ௨ሻ௦ሺ௩ሻ ସ ∑ ∑ ܫሺݑ, ݒሻ cosሺ ሺଶା ଵሻ௨గ ଵ ሻ cosሺ ሺଶାଵሻ௩గ ଵ ሻ ୀ ୀ Với ݏሺݑሻ ൌ ቊ ଵ ݄݅݇√ଶ ݑൌ 0 0 1 ݄݅݇൏ ݑ൏ 8 ቋ ݒà ݏሺݒሻ ൌ ቊ ଵ ݄݅݇ √ଶ ݒൌ 0 0 1 ݄݅݇൏ ݒ൏ 8 ቋ 16 Trong đó, I (u, v) được gọi là hệ số DCT trong miền tần số, giá trị X(k, l) biễu diễn các mức xám của ảnh trong miền không gian. Đặc điểm của phép biến đổi DCT 2 chiều - Thể hiện đặc tính nội dung về tần số thông tin ảnh. Hệ số góc trên là lớn và đặc trưng cho giá trị trung bình thành phần một chiều gọi là hệ số DC, còn các hệ số khác có giá trị nhỏ hơn biểu diễn cho các thành phần tần số cao theo hướng ngang và hướng thẳng đứng gọi là hệ số AC. - Bản thân biến đổi DCT không nén được dữ liệu vì cũng sinh ra 64 hệ số. - Theo nguyên lý chung, khi biến đổi chi tiết giữa các điểm ảnh càng lớn theo 1 hướng nào đó trong khối các điểm ảnh, hướng ngang, hướng thẳng đứng hay theo hướng đường chéo thì tương ứng theo các hướng đó, các biến đổi DCT càng lớn. - DCT làm giảm độ tương quan không gian của thông tin trong khối ảnh. Nhờ các đặc tính tần số không gian hệ thống nhìn của mắt người, các hệ số DCT có thể được mã hóa phù hợp, chỉ các hệ số DCT quan trọng nhất mới được mã hóa để truyền đi. - Khối hệ số DCT có thể chia thành 3 miền: + Miền tần số thấp: chứa các thông tin quan trọng ảnh hưởng đến tri giác. + Miền tần số cao: các thông tin thường không mang tính tri giác cao, khi nén JPEG thì thường loại bỏ thông tin trong miền này. Trong các thuật toán thủy vân, miền hệ số DCT tần số cao thường không được sử dụng do nó thường không bền vững với các phép xử lí ảnh hoặc nén ảnh JPEG. Miền tần số cao cũng khó được sử dụng do một sự thay đổi dù nhỏ trong miền này cũng ảnh hưởng đến chất lượng tri giác của ảnh. + Miền tần số giữa: thường hay được sử dụng nhất và cho kết quả tốt nhất. Trong thuật toán đề xuất cũng sử dụng miền thuật toán ở giữa. 17 2.2.2. Kỹ thuật giấu tin trong miền biến đổi DCT Thuật toán dưới đây sẽ sử dụng phương pháp nhúng thủy vân trong miền tần số của ảnh, giải tần được sử dụng để chứa tín hiệu thủy vân là miền tần số ở giữa của một khối DCT 8x8. Trong đó, các khối DCT 8x8 là những khối ảnh cùng kích thước đã được chọn ra ngẫu nhiên từ ảnh ban đầu và được áp dụng phép biến đổi cosin rời rạc DCT để chuyển sang miền tần số. Mỗi tín hiệu thủy vân sẽ được chứa trong một khối. Quá trình nhúng thủy vân Input : - Một chuỗi các bit B. - Một ảnh F. Output : - Một ảnh F’ sau khi thủy vân. - Khóa để giải mã. Bước 1: Một ảnh có kích thước m x n sẽ được chia thành (m x n)64 khối 8 x 8, mỗi bit sẽ đượcgiấu trong một khối Bk . Bước 2: Chọn một khối bất kì Bk và biến đổi DCT khối đó thu được C k với Ck = DCT(Bk ). Bước 3: Chọn hai hệ số ở vị trí bất kì trong miền tần số ở giữa của khối Ck , giả sử đó là Ck i, j và C k p, q. Bước 4: Ta tính: d = Ck i, j - Ck p, q mod a Trong đó a là một tham số thỏa mãn: a = 2(2t + 1), t là một số nguyên dương. Bước 5: Bit b k sẽ được nhúng vào Ck sau khi thỏa mãn điều kiện : ݀൜ 2 ݐ 1݊ ܾ ݑế ݀1 ൌ ൏ 2 ݐ 1݊ ܾ ݑế ൌ 0 18 Bước 6: Nếu d < 2t + 1 mà b k = 1 thì một trong hai hệ số DCT Ck i,j hoặc C k p, q có trị tuyệt đối lớn hơn sẽ bị thay đổi để thỏa mãn d 2t+1 theo công thức như sau : Max (Ck i, j, Ck p, q) + (INT (0.75a) - d) với hàm Max (Ck i, j, Ck p, q) là hàm chọn ra hệ số có trị tuyệt đối lớn hơn, hệ số được chọn sẽ được cộng thêm một lượng là (INT (0.75a) - d) hoặc cũng có thể biến đổi một trong hai hệ số theo công thức: Min(Cki, j, Ck p, q) - (INT (0.75a) + d) với hàm Min (Ck i, j, Ck p, q) là hàm chọn ra hệ số có trị tuyệt đối nhỏ hơn, hệ số được chọn sẽ bị trừ đi một lượng là (INT (0.75a) + d) INT() là hàm lấy phần nguyên của một số thực. Bước 7: Nếu d 2t + 1 mà bk = 0 thì một trong hai hệ số DCT Ck i, j hoặc C k p, q có trị tuyệt đối lớn hơn sẽ được thay đổi để thỏa mãn d Sum(F) = 0 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 = 5 - Phép XOR ⨁ + Cho ba ma trận A, B và C Giả sử A ⨁ B ...
TỔNG QUAN VỀ GIẤU TIN
Định nghĩa và mục đích giấu tin
Giấu thông tin (steganography) là một kỹ thuật nhúng thông tin vào một nguồn đa phương tiện nào đó, ví dụ như văn bản, ảnh, audio, video, Nguồn đa phương tiện này được gọi là môi trường giấu tin
Giấu tin trong ảnh: Thông tin sẽ được giấu vào dữ liệu ảnh nhưng chất lượng ảnh ít thay đổi và “khó” phát hiện mẩu tin mật đó Trong ảnh thông tin giấu một cách vô hình Nó là một cách truyền thông tin mật cho nhau mà người khác không thể biết được
- Mục đích của việc giấu tin đảm bảo an toàn và bảo mật thông tin Với 2 khía cạnh cần được quan tâm:
+ Bảo mật cho dữ liệu được đem giấu
+ Bảo mật cho chính đối tượng được đem giấu thông tin
- Ngày nay, nghệ thuật giấu tin được nghiên cứu để phục vụ cho các mục đích tích cực như: bảo vệ bản quyền các tài liệu số hóa, hay giấu các thông tin bí mật về quân sự, kinh tế.
Mô hình giấu tin
Hı̀nh 1.1: Mô hình giấu tin và lấy tin
Mô hình trên biễu diễn quá trình giấu và lấy tin cơ bản Trong đó, phương tiện chứa bao gồm các đối tượng được dùng để giấu tin như audio, video, hình ảnh, Thông tin giấu là một lượng thông tin mang ý nghĩa nào đó tùy thuộc mục đích của người sử dụng Thông tin sẽ được giấu vào trong phương tiện chứa nhờ một bộ nhúng Bộ nhúng là những chương trình triển khai các thuật toán để giấu tin và thực hiện với một khóa bí mật giống như các hệ mã cổ điển Sau khi giấu tin ta thu được phương tiện chứa các thông tin đã giấu và phân phối sử dụng trên mạng Sau khi nhận được đối tượng phương tiện có giấu tin, quá trình giải mã được thực hiện thông qua một bộ giải mã tương ứng với bộ nhúng thông tin cùng với khóa của quá trình nhúng Kết quả thu được gồm phương tiện chứa gốc và thông tin đã giấu Bước tiếp theo thông tin giấu sẽ được xử lí, kiểm định, so sánh với thông tin giấu ban đầu.
Phân loại các kĩ thuật giấu tin
Hı̀nh 1.2: Phân loại các kĩ thuật giấu tin Theo sơ đồ này, giấu tin được chia thành hai loại lớn là giấu tin mâ ̣t và thủy vân số.
Giấu tin mật che giấu bản tin (đòi hỏi mật độ cao và dung lượng càng lớn càng tốt) vào môi trường (đối tượng) gốc Giấu tin mật quan tâm
6 tới việc giấu các tin sao cho thông tin giấu được càng nhiều càng tốt và quan trọng là khó phát hiện một đối tượng có giấu tin bên trong hay không bằng kỹ thuật thông thường
Trong quá trình giấu tin để tăng tính bảo mật, có thể phải dùng khóa viết mật Đó chính là giấu tin có xử lí Nếu không dùng khóa viết mật, tức là chỉ giấu tin đơn thuần vào môi trường giấu tin Đó là giấu tin đơn thuần
Thủy vân số giấu mẩu tin ngắn nhưng đòi hỏi độ bền vững cao của thông tin cần giấu (trước các biến đổi thông thường của tệp dữ liệu môi trường) Nó đánh dấu vào đối tượng nhằm khẳng định bản quyền sở hữu hay phát hiện xuyên tạc thông tin Thủy vân số được phân thành 2 loại:
- Thủy vân bền vững: thường được ứng dụng trong bảo vệ bản quyền Thủy vân được nhúng trong sản phẩm như một hình thức dán tem bản quyền Trong trường hợp này, thủy vân phải tồn tại bền vững cùng với sản phẩm nhằm chống việc tẩy xóa, làm giả hay biến đổi phá hủy thủy vân + Thủy vân ẩn: không thể nhìn thấy được bằng mắt thường
+ Thủy vân hiện: là thủy vân hiện ngay trên sản phẩm và có thể nhìn thấy được bằng mắt thường
- Thủy vân dễ vỡ: là kỹ thuật nhúng thủy vân vào trong một đối tượng (sản phẩm) sao cho khi phân bố sản phẩm (trong môi trường mở) nếu có bất kì phép biến đổi nào làm thay đổi sản phẩm gốc thì thủy vân đã được giấu trong đối tượng sẽ không còn nguyên vẹn như trước khi giấu.
Các yêu cầu giấu tin
- Tính bền vững: Thể hiện khả năng ít bị thay đổi (về nội dung, hình dạng) trước những tấn công từ bên ngoài Hiện nay, chưa có kỹ thuật giấu tin nào đảm bảo được yêu cầu này một cách tuyệt đối
- Khả năng không bị phát hiện: Thể hiện ở việc khó xác định được đối tượng có chứa thông tin mật hay không Các kỹ thuật giấu tin hiện nay cố gắng đảm bảo yêu cầu này dựa vào hệ thống thị giác của con người
- Khả năng lưu trữ: Thể hiện ở lượng thông tin được lưu trữ Do còn phải đảm bảo “khả năng không bị phát hiện” nên với những thông tin mật lớn, ta thường chia nhỏ nó ra, nhúng nhiều lần vào các đối tượng khác nhau.
Một số ứng dụng
- Bảo vệ bản quyền tác giả - là ứng dụng cơ bản nhất của kỹ thuật thủy vân số Một thông tin nào đó mang ý nghĩa sở hữu quyền tác giả (thủy vân) sẽ được nhúng vào trong các sản phẩm, thủy vân đó chỉ có một mình người chủ sở hữu hợp pháp các sản phẩm đó có và được dùng làm minh chứng cho bản quyền sản phẩm
- Điểm chỉ số: mục tiêu là để chuyển thông tin về người nhận chứ không phải chủ sở hữu sản phẩm, phương tiện số nhằm xác định đây là bản sao duy nhất của sản phẩm Về mặt ý nghĩa, điểm chỉ số tương tự như số seri của phần mềm
- Xác thực thông tin hay xuyên tạc thông tin: một tập các thông tin sẽ được giấu trong phương tiện chứa Sau đó, nó được sử dụng để nhận biết xem dữ liệu trên phương tiện gốc có bị thay đổi hay không
- Dấu vân tay hay dán nhãn: Thủy vân trong ứng dụng này để nhận diện người gửi hay người nhận của một thông tin nào đó
- Điều khiển truy cập: Thủy vân trong trường hợp này dùng để điều khiển truy cập đối với thông tin Các thiết bị phát hiện ra thủy vân thường được gắn sẵn trong hệ thống đọc ghi
- Giấu tin mật: Trong nhiều trường hợp, sử dụng mật mã có thể gây ra sự chú ý ngoài mong muốn Ngược lại, việc giấu tin trong môi trường nào
8 đó rồi gửi đi trên mạng ít gây sự chú ý Có thể dùng nó để gửi đi một bí mật thương mại, một bản thiết kế hay các thông tin bất kì khác.
Các định dạng ảnh thông dụng
Ảnh thu được sau quá trình số hóa có nhiều loại khác nhau, phụ thuộc vào kỹ thuật số hóa ảnh
1.6.1 Định dạng ảnh IMG (Image) Ảnh IMG là ảnh đen trắng, mỗi điểm ảnh được thể hiện bởi 1bit Toàn bộ ảnh chỉ gồm các điểm sáng và tối tương ứng với giá trị 0 hoặc 1
Tỉ lệ nén của kiểu định dạng này là khá cao Ảnh IMG được nén theo từng dòng Mỗi dòng bao gồm các gói (Pack) Các dòng giống nhau được nén thành một gói
1.6.2 Định dạng ảnh PCX (Personal Computer Exchange ) Định dạng ảnh PCX là một trong những định dạng loại cổ điển nhất
Nó sử dụng phương pháp mã loạt dài RLC để nén dữ liệu ảnh Quá trình nén và giải nén được thực hiện trên từng dòng ảnh Thực tế phương pháp giải nén PCX kém hiệu quả hơn so với kiểu IMG Định dạng ảnh PCX thường được dùng để lưu trữ ảnh vì thao tác đơn giản, cho phép nén và giải nén nhanh Tuy nhiên vì cấu trúc cố định nên trong một số trường hợp nó làm tăng kích thước lưu trữ
1.6.3 Định dạng ảnh GIF (Graphics Interchanger Format) Định ảnh GIF do hãng Computer Incorporated (Mỹ) đề xuất lần đầu tiên vào năm 1990 Ở định dạng này, khi số màu trong ảnh càng tăng, thì ưu thế của nó càng nổi trội Những ưu thế này có được là do GIF tiếp cận các thuật toán LZW (Lampel Ziv Welch), dựa vào sự lặp lại của một nhóm điểm, người ta xây dựng từ điển lưu các chuỗi kí tự có tần suất lặp lại cao và thay thế bằng từ mã tương ứng mỗi khi gặp chúng Dạng ảnh GIF cho chất lượng cao, độ phân giải đồ họa tốt, cho phép hiển thị trên hầu hết các phần cứng đồ họa
1.6.4 Định dạng ảnh BMP (Bitmap ) Ảnh BMP (Bitmap) được phát triển bởi Microsoft Corporation, được lưu trữ dưới dạng độc lập thiết bị cho phép Windows hiển thị dữ liệu không phụ thuộc vào khung chỉ định màu trên bất kì phần cứng nào Tên file mở rộng mặc định của một file ảnh Bitmap là BMP, nét vẽ được thể hiện là các điểm ảnh Qui ước màu đen, trắng tương ứng với các giá trị 0, 1 Ảnh BMP được sử dụng trên Microsoft Windows và các ứng dụng chạy trên Windows từ version 3.0 trở lên BMP thuộc loại ảnh mảnh
Có rất nhiều định dạng ảnh thuộc kiểu bitmap như BMP, PCX, GIF, JPEG, TAG, PNG,… Mỗi file ảnh BMP gồm 4 phần:
- Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap
- Bitmap Information (40 bytes): chứa một số thông tin chi tiết giúp hiển thị ảnh
- Palette màu (4*x bytes), x là số màu của ảnh, định nghĩa các màu sẽ được ứng dụng trong ảnh
- Bitmap Data: chứa dữ liệu ảnh Đặc diểm nỗi bật nhất của định dạng BMP là tập tin ảnh thường không được nén bằng bất kì thuật toán nào Khi lưu ảnh, các điểm ảnh được ghi trực tiếp vào tập tin – một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc vào giá trị n của ảnh Do đó, một hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp nhiều lần so với ảnh được nén (như GIF, JPEG, PNG…)
1.6.5 Định dạng ảnh JPEG (Joint Photographic Expert Group) Ưu điểm của JPEG hơn GIF là nó có thể hiển thị hình ảnh với màu chính xác (true-colour), có thể lên đến 16 triệu màu Điều đó cho phép JPEG được sử dụng tốt nhất cho hình ảnh chụp và hình ảnh minh họa có số lượng màu lớn
Nhược điểm chính của định dạng này là chúng được nén bằng thuật toán lossy (mất dữ liệu), hình ảnh sẽ mất một số chi tiết khi chuyển sang định dạng JPEG Đường bao của các khối màu có thể xuất hiện nhiều điểm mờ và các vùng sẽ mất sự rõ nét
Nói cách khác, định dạng JPEG thực hiện bảo quản tất cả thông tin màu trong hình ảnh Tuy nhiên, với các hình ảnh chất lượng màu cao (high- colour), như hình ảnh chụp, thì sẽ không ảnh hưởng gì
MỘT SỐ KĨ THUẬT GIẤU TIN TRONG ẢNH
Các kĩ thuật giấu tin trong ảnh Bitmap
Việc giấu tin trong ảnh màu có rất nhiều thuận lợi so với việc giấu tin trong ảnh đen trắng, nó có ưu điểm như sau:
- Giấu được nhiều thông tin hơn so với ảnh đen trắng cùng kích cỡ
- Độ an toàn cao hơn so với ảnh đen trắng vì có rất ít sự thay đổi so với ảnh gốc ban đầu Đối với từng loại màu ta lại có kỹ thuật khác nhau:
2.1.1 Ảnh nhỏ hơn hoặc bằng 8 bit màu
Không phải tất cả những ảnh nhỏ hơn hoặc bằng 8 bit màu đều có bảng màu được sắp xếp, do vậy việc sắp xếp LSB rất khó khăn Ta cần sắp xếp lại bảng màu:
- Chọn một màu bất kì, giả sử màu có dạng A(x, y, z) ta đưa vào vị trí đầu tiên
- Duyệt tất cả các màu B(m, n, p) còn lại và tính:
- Ta sẽ chọn màu B có S(A, B) nhỏ nhất để sắp xếp cạnh màu A sau đó lại tiếp tục thực hiện như bước 2
- Quy trình được kết thúc khi bảng màu đã được sắp xếp
Thực tế chỉ có 15 bit được dùng để biểu diễn cho một điểm ảnh:
- 5 bit dùng để biểu diễn cường độ tương đối màu đỏ
- 5 bit dùng để biểu diễn cường độ tương đối màu xanh lơ
- 5 bit dùng để biểu diễn cường độ tương đối màu xanh lam
Còn 1 bit không dùng đến là bit cao nhất ở byte thứ 2, đó chính là bit LSB của ảnh 16 bit màu Nếu chỉ lấy một bit này thì lượng thông tin giấu là rất ít do đó cần lấy thêm một số bit nữa
Mỗi một điểm ảnh được biễu diễn bằng 3 byte:
- 1 byte dùng để biểu diễn cường độ tương đối màu đỏ
- 1 byte dùng để biểu diễn cường độ tương đối màu xanh lơ
- 1 byte dùng để biểu diễn cường độ tương đối màu xanh lam
Trong mỗi byte các bit nằm càng về cuối càng ít ảnh hưởng đến phần dữ liệu ảnh Thông thường để tăng lượng thông tin được giấu người ta thường lấy 4 bit cuối mỗi byte để giấu thông tin
Bằng thực nghiệm cho thấy nếu thay đổi toàn bộ bit cuối của một byte thì ảnh kết quả cũng không khác nhiều lắm so với ảnh ban đầu Điều này vô cùng có ý nghĩa vì ta có thể giấu được nhiều thông tin trong ảnh
2.1.4 Các phương pháp giấu tin
- Phương pháp nhúng vào các bit có trọng số thấp (Least Significant Bit)
- Các phương pháp dựa vào kỹ thuật biến đổi ảnh, ví dụ biến đổi từ miền không gian sang miền tần số
- Các phương pháp sử dụng mặt nạ giác quan
Phương pháp nhúng vào các bit có trọng số thấp:
Khi chuyển đổi một ảnh tương tự sang ảnh số người ta thường chọn 3 cách thể hiện màu:
- 24 bit màu: mỗi điểm có thể nhận một trong 2 24 màu, mỗi màu được tạo ra từ 3 màu căn bản: red (R), green (G) và blue (B), mỗi màu nhận một giá trị từ 0 đến 255 (8 bit)
- 8 bit màu: mỗi điểm có thể nhận một trong 256 màu, chọn từ một bảng màu (palette)
- 8 bit dải xám: mỗi điểm nhận một trong 256 (2 8 ) sắc thái xám
Phương pháp LSB chọn ra các bit ít quan trọng và thay thế chúng bằng các bit thông tin cần giấu Để khó bị phát hiện, thông tin giấu thường được nhúng vào những vùng mắt người kém nhạy cảm với màu sắc Từ đó, các thông tin được giấu sẽ lẫn vào đâu đó giống như nhiễu ảnh
Hı̀nh 2.1: Giấu tin vào các bit ít quan trọng của điểm ảnh Áp dụng kỹ thuật LSB, một điểm ảnh 24 bit có thể giấu được 3 bit thông tin, theo thứ tự từ trái sang phải, byte đầu tiên chứa giá trị biểu thị cường độ màu lam (B), byte thứ hai chứa giá trị biểu thị cường độ màu lục (G), byte thứ ba chứa giá trị biểu thị cường độ màu đỏ (R) Như vậy, mỗi màu được xác định bởi một số nguyên có giá trị trong khoảng 0 – 255
Giả sử, tin cần giấu là chữ cái ‘A’ có mã ASCII là 65 (hệ thập phân), hệ nhị phân là 01000001 Giấu nó vào một vùng ảnh có 3 điểm ảnh các màu kề nhau là lam, lục và đỏ (B, G, R):
Các điểm ảnh trước khi giấu có hệ nhị phân là:
Màu lam: 11111111, 00000000, 00000000 Màu lục: 00000000, 11111111, 00000000 Màu đỏ: 00000000, 00000000, 11111111 Chèn giá trị nhị phân của chữ ‘A’ vào 3 điểm ảnh trên theo kỹ thuật LSB, lật bit bên phải nhất sẽ thu được kết quả sau:
00000000 00000001 11111111 Các bit được gạch chân là các bit bị lật Dùng 4 bit có trọng số thấp để giấu tin mà chất lượng không thay đổi bao nhiêu đối với mắt thường
Từ ví dụ trên suy ra, nếu dùng 1 LSB thì xác suất phải lật bit là 50%, vậy nên lượng nhiễu gây ra cho ảnh là rất ít Đối với ảnh màu 24 bit, ta có thể dùng 2 đến 3 bit thấp mà vẫn không để lộ tin mật Nhưng đối với ảnh 8 bit thì không thể, vì ta chỉ có thể dùng 1 bit thấp nhất để giấu tin.
Các kĩ thuật giấu tin trong ảnh JPG
Các kĩ thuật giấu tin trong ảnh JPG như kỹ thuật dùng hệ số DCT, kỹ thuật mặt nạ và lọc, kỹ thuật dùng hệ số của phép chiếu trực giao Tuy nhiên, kĩ thuật thường được sử dụng nhiều nhất là dùng hệ số DCT để giấu tin
2.2.1 Kĩ thuật dùng hệ số DCT
JPEG viết tắt cho Joint Photographic Experts Group Phần mở rộng của các file JPEG thường có dạng jpeg, jfif, jpg, hay jpe; nhưng jpg là dạng được dùng phổ biến nhất Các ảnh JPEG có tỉ lệ nén cao (tới vài chục lần), chất lượng tốt, do đó chúng được sử dụng nhiều trên mạng Tuy nhiên, các tệp ảnh JPEG không phù hợp với xử lí bit như các ảnh dựa trên bảng màu, tuy vậy vẫn có thể dùng chúng để giấu dữ liệu Ảnh JPEG dùng biến đổi Cosin rời rạc để thực hiện nén ảnh Biến đổi Cosin rời rạc là phép biến đổi mất dữ liệu vì không thể tính chính xác các giá trị cosin, cũng như có thể có các lỗi làm tròn Độ lệch giữa dữ liệu gốc và dữ liệu phục hồi lại sau khi biến đổi phụ thuộc vào các giá trị và phương pháp sử dụng để tính các giá trị cosin rời rạc
Thuật toán JPEG làm việc bằng cách chia ảnh ra thành các ma trận 8x8 Sau đó, tính hệ số biến đổi cosin rời rạc cho từng ma trận Tiếp theo, các hệ số này được nhân với một ma trận lượng hóa Kết quả sẽ được làm
15 tròn đến số nguyên gần nhất, cuối cùng các số nguyên này được nén và lưu lại
Các cấu từ DCT chính là nơi chúng ta có thể giấu dữ liệu Cách tiếp cận phổ biến là chọn các hệ số DCT lớn và sửa đi chút ít Vì hệ số lớn tới mức “năng lượng” cao nên ít làm thay đổi ảnh nhất Một hướng khác là chọn các hệ số DCT trong các vùng mà mắt người không nhìn thấy
Các thuật toán JPEG nổi tiếng áp dụng trong F5 và JSteg đều dùng cách sửa DCT để nhúng dữ liệu Cả 2 phương pháp này đều qua được mắt thường nhưng không qua được các phương pháp phân tích, thống kê
Phép biến đổi cosin rời rạc hay DCT – Discrete Cosine Transform đã trở thành tiêu chuẩn quốc tế cho các hệ thống mã chuyển vị bởi nó có đặc tính gói năng lượng tốt, cho kết quả là số thực và có thuật toán nhanh để thực hiện chúng Phép biến đổi DCT đã được dùng trong dạng chuẩn ảnh JPEG
Định nghĩa biến đổi cosin rời rạc 2 chiều
- Biến đổi DCT 2 chiều tổng quát là biến đổi trên khối 2 chiều bất kì m x n, trong đó các khối kích thước 8*8, 16*16 được sử dụng nhiểu nhất Tuy nhiên, chúng ta sẽ chỉ tìm hiểu phép biến đổi DCT trên khối 8*8 được sử dụng trong chuẩn nén JPEG
- Phép biến đổi thuận DCT 8*8 được định nghĩa như sau:
- Biến đổi ngược DCT định nghĩa như sau:
Trong đó, I (u, v) được gọi là hệ số DCT trong miền tần số, giá trị
X(k, l) biễu diễn các mức xám của ảnh trong miền không gian
Đặc điểm của phép biến đổi DCT 2 chiều
- Thể hiện đặc tính nội dung về tần số thông tin ảnh Hệ số góc trên là lớn và đặc trưng cho giá trị trung bình thành phần một chiều gọi là hệ số
DC, còn các hệ số khác có giá trị nhỏ hơn biểu diễn cho các thành phần tần số cao theo hướng ngang và hướng thẳng đứng gọi là hệ số AC
- Bản thân biến đổi DCT không nén được dữ liệu vì cũng sinh ra 64 hệ số
- Theo nguyên lý chung, khi biến đổi chi tiết giữa các điểm ảnh càng lớn theo 1 hướng nào đó trong khối các điểm ảnh, hướng ngang, hướng thẳng đứng hay theo hướng đường chéo thì tương ứng theo các hướng đó, các biến đổi DCT càng lớn
- DCT làm giảm độ tương quan không gian của thông tin trong khối ảnh Nhờ các đặc tính tần số không gian hệ thống nhìn của mắt người, các hệ số DCT có thể được mã hóa phù hợp, chỉ các hệ số DCT quan trọng nhất mới được mã hóa để truyền đi
- Khối hệ số DCT có thể chia thành 3 miền:
+ Miền tần số thấp: chứa các thông tin quan trọng ảnh hưởng đến tri giác
+ Miền tần số cao: các thông tin thường không mang tính tri giác cao, khi nén JPEG thì thường loại bỏ thông tin trong miền này Trong các thuật toán thủy vân, miền hệ số DCT tần số cao thường không được sử dụng do nó thường không bền vững với các phép xử lí ảnh hoặc nén ảnh JPEG Miền tần số cao cũng khó được sử dụng do một sự thay đổi dù nhỏ trong miền này cũng ảnh hưởng đến chất lượng tri giác của ảnh
+ Miền tần số giữa: thường hay được sử dụng nhất và cho kết quả tốt nhất Trong thuật toán đề xuất cũng sử dụng miền thuật toán ở giữa
2.2.2 Kỹ thuật giấu tin trong miền biến đổi DCT
Thuật toán dưới đây sẽ sử dụng phương pháp nhúng thủy vân trong miền tần số của ảnh, giải tần được sử dụng để chứa tín hiệu thủy vân là miền tần số ở giữa của một khối DCT 8x8 Trong đó, các khối DCT 8x8 là những khối ảnh cùng kích thước đã được chọn ra ngẫu nhiên từ ảnh ban đầu và được áp dụng phép biến đổi cosin rời rạc DCT để chuyển sang miền tần số Mỗi tín hiệu thủy vân sẽ được chứa trong một khối
Quá trình nhúng th ủ y vân
- Một ảnh F’ sau khi thủy vân
Bước 1: Một ảnh có kích thước m x n sẽ được chia thành (m x n)/64 khối 8 x 8, mỗi bit sẽ đượcgiấu trong một khối Bk
Bước 2: Chọn một khối bất kì Bk và biến đổi DCT khối đó thu được
Ck với Ck = DCT(Bk)
Bước 3: Chọn hai hệ số ở vị trí bất kì trong miền tần số ở giữa của khối Ck, giả sử đó là Ck[i, j] và Ck[p, q]
Bước 4: Ta tính: d = || Ck[i, j] | - | Ck[p, q]|| mod a
Trong đó a là một tham số thỏa mãn: a = 2(2t + 1), t là một số nguyên dương
Bước 5: Bit bk sẽ được nhúng vào Ck sau khi thỏa mãn điều kiện :
Bước 6: Nếu d < 2t + 1 mà bk = 1 thì một trong hai hệ số DCT Ck[i,j] hoặc Ck[p, q] có trị tuyệt đối lớn hơn sẽ bị thay đổi để thỏa mãn d 2t+1 theo công thức như sau :
Max (|Ck[i, j]|, |Ck[p, q]|) + (INT (0.75*a) - d) với hàm Max (|Ck[i, j]|, |Ck[p, q]|) là hàm chọn ra hệ số có trị tuyệt đối lớn hơn, hệ số được chọn sẽ được cộng thêm một lượng là (INT (0.75*a) - d) hoặc cũng có thể biến đổi một trong hai hệ số theo công thức:
Một số kĩ thuật giấu tin trong ảnh nhị phân
2.3.1 Một số phép toán cơ bản
Giá trị ban đầu Giá trị sau khi đảo
SUM(F): Tổng các phần tử của ma trận F
Ví dụ: Cho ma trận F
+ Cho ba ma trận A, B và C Giả sử A ⨁ B = C thì A[i,j] ⨁ B[i,j] = C[i,j]
- Quy tắc thực hiện phép ⨁:
Ví dụ: Giả sử có hai ma trận A và B
Cho ba ma trận A, B và C
Ví dụ: Giả sử có hai ma trận A và B
+ Cho ba ma trận X, Y và Z
Giả sử X AND Y = Z thì X[i,j] AND Y[i,j] = Z[i,j]
- Quy tắc thực hiện phép AND:
Ví dụ: Giả sử có hai ma trận X và Y
2.3.2 Một số kỹ thuật giấu tin sử dụng khóa K cố định Ý tưởng của kỹ thuật là chia nhỏ ảnh gốc F thành các đoạn Fi gồm k điểm ảnh liên tiếp và giấu trong mỗi đoạn Fi một bit thông tin Sau khi giấu tin ta thu được các đoạn Fi' và các đoạn này tạo nên ảnh đã chứa thông tin F' Trong quá trình trích rút tin, ta lại chia ảnh F' thành các đoạn Fi' độ dài bằng k Sau đó trích rút ở mỗi đoạn Fi' này một bit thông tin đã giấu
- Quá trình gi ấ u tin (đối với mỗi đoạn bit Fi và một bit thông tin bi): Bước 1: Đặt Si = Sum(Fi) mod 2
Bước 2: So sánh Si và bi:
+ Nếu bi ≠ Si thì chuyển sang Bước 3
Bước 3: Thực hiện việc đảo bit
+ Nếu có nhiều điểm đen và ít điểm trắng thı̀ đảo một bit trắng thành đen Break
+ Nếu có nhiều điểm trắng và ít điểm đen thı̀ đảo một bit đen thành trắng Break
+ Nếu số điểm đen và điểm trắng xấp xỉ nhau thı̀ cho ̣n ngẫu nhiên một bit để đảo
+ Nếu chỉ có điểm đen (hoặc chỉ có điểm trắng) thì chọn bất kỳ một điểm ở đầu hoặc cuối để đảo
+ Sau cùng ta thu được đoạn Fi'
- Quá trình trích rút thông tin : Đối với mỗi đoạn Fi', bit thông tin được giấu trong đó là bi = Sum(Fi') mod 2
- Ví d ụ : Các bit cần giấu là b = 10111, khóa K = 5 và ảnh F như sau:
Ta có S2 = Sum(F2) mod 2 = 0 = b(2) => Không thay đổi gì cả
Không còn khối ảnh nào để xét nữa nên ta kết thúc việc giấu tin
F' là ảnh thu được sau quá trình giấu tin Ảnh F K = 5 Ảnh F’
Quá trình trích rút thông tin:
- Xét F5' = 10000: b(5) = Sum(F5') mod 2 = 1 Thông tin mật thu được: b = 10111
MỘT SỐ KĨ THUẬT PHÁT HIỆN ẢNH GIẤU TIN
Khái niệm phân tích tin ẩn giấu
Phát hiện ảnh giấu tin (image steganalysis) là kĩ thuật phát hiện sự tồn tại của thông tin được giấu trong ảnh số nào đó
Phân tích tin ẩn giấu hay còn gọi là tấn công một hệ giấu tin (steganalysis) là phương pháp để phát hiện, trích rút, phá hủy hay sửa đổi thông tin đã giấu.Tùy theo ứng dụng mà việc phân tích được coi là thành công hay không Đối với việc liên lạc bí mật, việc phát hiện và chứng minh
25 một ảnh có chứa tin mật được coi là thành công Đối với bảo vệ bản quyền số hay chống giả mạo thì việc phân tích được coi là thành công nếu không chỉ phát hiện ra thủy vân mà còn phá hủy hay sửa đổi nó nhưng không làm giảm chất lượng ảnh mang
Các kỹ thuật phân tích giấu tin mật hiện tại tập trung vào việc phát hiện ra sự có mặt hay không các thông điệp ẩn trong dữ liệu (ảnh) được quan sát Việc trích chọn ra các thông điệp bí mật khó hơn việc phát hiện, nhưng nó sẽ làm tiền đề cho việc trích chọn Như vậy, có thể xác định hai mục tiêu rõ ràng của việc phân tích hệ giấu tin mật là:
- Phân tích tin bị động (Passive steganalysis): Phát hiện có sự hiện diện hay không của thông điệp bí mật trong các dữ liệu được quan sát
- Phân tích tin chủ động (Active steganalysis): Trích chọn một phiên bản của thông điệp bí mật từ phương tiện chứa tin.
Phân loại phương pháp phát hiện ảnh giấu tin
- Phân tích trực quan: là phương pháp khá đơn giản trong việc phát hiện thông tin che giấu Phương pháp này kiểm tra các tập tin bằng mắt thường để xác định sự thay đổi Tuy việc giấu tin luôn dựa theo nguyên tắc bất kỳ sự thay đổi nào được thực hiện trên tập tin sẽ không làm suy giảm chất lượng của nó, tức là việc giấu tin tốt sẽ không tạo ra sự nghi ngờ, ít nhất là khi nhìn trực quan Nhưng khi ta bỏ qua những phần có thể không bị thay đổi bởi việc nhúng thông tin mật trong đó mà chỉ tập trung vào những phần có khả năng bị nhúng, ta có thể sẽ phát hiện được những dấu hiệu có sự thao tác tin ở đây Do vậy, việc phân tích trực quan là thành công nếu nó xác định được một cách chính xác các tính năng của hình ảnh có thể được bỏ qua (dữ liệu dư thừa) hay các tính năng cần được xem xét (dữ liệu thử nghiệm) để kiểm nghiệm cho giả thuyết: một bức ảnh có chứa thông tin mật hay không?
- Phân tích định dạng ảnh: do có nhiều định dạng tệp tin ảnh khác nhau, mỗi loại lại có đặc điểm và cấu trúc định dạng tệp tin khác nhau nên khi thực hiện giấu tin sẽ có sự thay đổi trên ảnh kết quả ở các điểm khác nhau Tương tự, khi thực hiện phát hiện ảnh giấu tin cũng vậy
- Phân tích thống kê: Nếu xem cấu trúc dữ liệu của một hình ảnh, ta có thể kiểm tra cách thống kê như thế nào, từ đó sẽ có ích cho việc phân tích thông tin bị giấu nếu hình ảnh đó tồn tại thông điệp ẩn Phân tích thống kê chỉ đơn giản là tạo ra một sự phân tích dựa trên hình ảnh bị nghi ngờ Nếu người phân tích biết được nhiều công cụ nhúng tin thì có thể thực hiện việc phân tích thống kê hiệu quả hơn để xác định các biểu hiện trong quá trình nhúng thông tin.
Một số kĩ thuật phát hiện ảnh giấu tin
3.3.1 Kĩ thuật phân tích cặp giá trị điểm ảnh
Khái niệm cặp giá trị (PoV – Pairs of Values) được Pfitzmann và Westfeld đưa ra:
Cho ảnh I Gọi j là giá trị của điểm ảnh (pixel) trên ảnh I Nếu I là ảnh đa cấp xám 8 bit thì j [0,255] Nếu j chẵn (j = 2i) thì sau phép lật bit giá trị của j là 2i + 1, nếu j là lẻ (j = 2i + 1) thì sau phép lật bit giá trị của j là 2i Như vậy, nếu một giá trị điểm ảnh ở trong một cặp thì sau khi giấu tin giá trị của nó vẫn nằm trong một cặp có tính chất chẵn lẻ tương tự
PoV là một cặp hai giá trị điểm ảnh (2i, 2i + 1) và hai giá trị trong cặp này chỉ sai khác nhau ở bit thấp nhất
Trong thuật toán trình bày dưới đây có liên quan đến khái niệm tần số xuất hiện của giá trị điểm ảnh j Đó là số lần xuất hiện của giá trị điểm ảnh j trên ảnh
Có nhiều kỹ thuật PoV khác nhau như PoV2, PoV2r, PoV3 Trong đó PoV2 và PoV2r chỉ kiểm tra một tập con các điểm ảnh được chọn bởi người dùng PoV2 kiểm tra phần trăm các điểm ảnh hiện tại (được chọn bởi
27 người dùng) một cách tuần tự, bắt đầu từ góc trên trái của ảnh PoV2r cũng kiểm tra một cách tuần tự phầm trăm các điểm ảnh hiện tại được chọn bởi người dùng nhưng bắt đầu ở một điểm nào đó trên ảnh và sau đó thực hiện phép lật bit cho đến điểm cuối cùng được chọn PoV3 kiểm tra mỗi tổng phần trăm các điểm ảnh từ 1% đến 100% và trả về xác suất của mỗi tập con các điểm ảnh trên ảnh kiểm tra Các điểm ảnh cũng được kiểm tra một cách tuần tự, bắt đầu từ góc trên bên trái của ảnh Thực tế PoV3 kiểm tra các nhóm điểm ảnh theo một trật tự nào đó Mục dưới đây sẽ trình bày chi tiết kỹ thuật phát hiện tin giấu PoV3
Với một ảnh I cần kiểm tra, trước tiên ta thống kê tần số của các giá trị điểm ảnh chẵn, lẻ có mặt trong ảnh I Ta xác định xác suất giấu tin của ảnh thông qua việc áp dụng tiêu chuẩn phân phối (phân phối khi bình phương) đối với tần số của các cặp PoV
Input: Ảnh I cần kiểm tra
Output: P: xác suất giấu tin trong ảnh I
Bước 2: Đọc dữ liệu ảnh vào 1 ma trận
Bước 3: Khởi tạo giả trị ban đầu cho vecto X, Y
Bước 4: Tính X[k] là tần số xuất hiện của các điểm ảnh có giá trị chẵn trên ảnh
Tính Y[k] là tần số xuất hiện của các điểm ảnh có giá trị lẻ trên ảnh Bước 5: Giả sử ta có N cặp PoV, với mọi k
Z[k] = (X[k] + Y[k])/2 Bước 7 : Giả sử có N cặp PoV, theo phương pháp thống kê Khi bình phương với N -1 bậc tự do ta tính
Bước 8: Tính P là xác suất của việc giấu tin
Trong đó: 3.3.1.2 Phân tích thuật toán
Thông thường đối với ảnh kiểm tra là một ảnh đa cấp xám 8 bit ta có
256 mức xám khác nhau Thuật toán xác định các cặp phần tử là các giá trị mức xám chẵn, lẻ nên số lượng các phần tử chẵn, lẻ như vậy không có quá 256/2 = 128 phần tử Ta xây dựng hai vecto X( , , …, ), Y( , ,
…, ) để thống kê tần số xuất hiện các điểm ảnh, với 0 k 127 Mỗi phần tử trong X sẽ lưu tần số xuất hiện các điểm ảnh chẵn (X[k] = 2k), mỗi phần tử trong Y sẽ lưu tần số xuất hiện các điểm ảnh lẻ (Y[k] = 2k + 1) với
Ban đầu khởi tạo các phần tử trong X và Y đều bằng 0 Sau đó thuật toán thực hiện việc thống kê các giá trị mức xám có trong ảnh cần kiểm tra và tương ứng tăng giá trị của các phần tử trong X và Y
Gọi Z là vecto mỗi phần tử, Z[k] là giá trị trung bình cộng của X[k] và Y[k] Giả sử rằng ta có N cặp PoV, có k mức chẵn (lẻ) 0 k 127
Nếu ảnh có chứa thông tin ẩn thì X[k] = Z[k] đối với mọi k Trong phương trình (1) sẽ bé và do đó tích phân sẽ bé và từ (2) suy ra xác suất p sẽ lớn Và ngược lại sẽ lớn suy ra xác suất p
29 sẽ bé Căn cứ vào sự lớn bé của xác suất p, ta sẽ quyết định được ảnh có giấu tin hay không Hơn nữa, Wesfeld và Pfitzmann còn khẳng định rằng nếu ít hơn 100% các điểm ảnh có chứa thông tin được giấu thì xác suất giấu tin sẽ giảm rõ rệt
3.3.2 Kĩ thuật phân tích đối ngẫu
3.3.2.1 Khái niệm cơ bản trong kỹ thuật đối ngẫu
Kỹ thuật đối ngẫu hay còn gọi là kỹ thuật RS (Regular - Singular) do Fridrich đưa ra Phương pháp này thực hiện các thống kê về sự thay đổi của các nhóm chính qui (Regular) và nhóm đơn (Singular) trên ảnh để ước lượng độ dài thông điệp đã giấu một cách chính xác Phương pháp này phù hợp với ảnh màu và ảnh đa cấp xám khi các thông điệp được giấu một cách ngẫu nhiên Kỹ thuật RS cũng là một trong số kỹ thuật được dựa trên lý thuyết xác suất thống kê
Giả sử ta có một ảnh có M N điểm ảnh Tập P là tập tất cả các giá trị điểm ảnh có trên ảnh Với đa cấp xám 8 bit thì P = {0, 1, … , 255} Định nghĩa 3.3.1
Một hàm độ khác biệt f trên nhóm G = ( , , … , ) được định nghĩa như sau:
Trong đó , , … , là giá trị các điểm ảnh trên nhóm G Hàm f được xem như là độ trơn của nhóm G
Việc giấu tin LSB làm tăng nhiễu trên ảnh do đó ta hi vọng rằng giá trị của hàm f sẽ tăng (hoặc giảm) sau khi giấu tin LSB Định nghĩa 3.3.2
Việc giấu tin LSB sử dụng các kiểu hàm lật (flip) bit với m = -
1, 0, 1 và x là giá trị điểm ảnh Cụ thể như sau:
Fo(x) = x , với mọi x P Định nghĩa 3.3.3
Phép lật bit F1 và F-1 được áp dụng lên nhóm G = ( , , … , ) với một mặt nạ M (M là một n – bộ với các thành phần nhận giá trị -1, 0 hoặc
1) được định nghĩa như sau:
FM (G) = (FM(1)(x1), FM(2)(x2), … , FM(n)(xn)) trong đó M(i) {-1, 0, 1}
Ví dụ: nếu các giá trị các điểm ảnh trong nhóm G là (39,38, 40, 41) và cho mặt nạ M = (1, 0, 1, 0) thì FM(G) = (F1(39), F0(38), F1(40), F0(41)) (38, 38, 41, 41) Định nghĩa 3.3.4
Cho một mặt nạ M, phép lật bit F và hàm khoảng cách f, một nhóm G các điểm ảnh được phân lớp vào một trong ba lớp sau:
Trong đó R gọi là nhóm các chính quy (Regular), S là các nhóm đơn (Singular) và U là các nhóm không dùng được (Unusable) Định nghĩa 3.3.5
RM là số tương đối các nhóm R với mặt nạ M không âm, M {0, 1}
SM là số tương đối các nhóm S với mặt nạ M không âm, M {0, 1}
R-M là số tương đối các nhóm R với mặt nạ M không dương, M{-1,0}
S-M là số tương đối các nhóm S với mặt nạ M không dương, M{-1,0}
Ta có RM xấp xỉ bằng R -M, SM xấp xỉ bằng S-M và được viết như sau:
Việc giấu tin LSB tập trung vào sự khác biệt của RM và SM Nếu có 50% điểm ảnh bị lật (khi mỗi điểm ảnh bị giấu bit thông điệp) ta thu được
RM SM nhưng ảnh hưởng của việc giấu tin LSB đến R -M và S-M lại ngược lại
Dưới đây sẽ trình bày các bước của kĩ thuật RS trong đó có sử dụng các khái niệm và định nghĩa vừa trình bày ở trên
Tư tưởng: Kỹ thuật RS phân hoạch ảnh cần kiểm tra thành các nhóm điểm ảnh cố định Mỗi nhóm đó lại được phân lớp vào các nhóm R hay S phụ thuộc vào sự khác biệt giữa các điểm ảnh trong nhóm bị tăng hoặc giảm sau phép lật bit LSB với mặt nạ M Sau đó tính xác suất của việc giấu tin căn cứ vào số nhóm R, S đó
n: số phần tử của một nhóm
Mn: mặt nạ, là một vecto có phần tử nhận giá trị trong tập{-1,0,1}
P: xác suất giấu tin trong ảnh I
Bước 2: Đọc giá trị điểm ảnh vào một ma trận AM x N
Bước 4: Chia ảnh thành M x N/n nhóm khác nhau Mỗi nhóm n điểm ảnh
Với mỗi nhóm G = ( , , … , ) ta thực hiện các bước sau: Bước 5: Tính hàm (G):
Bước 6: Cho mặt nạ M = {M(i)}i=1, … , n với M(i) {-1, 0, 1} Tính
FM(G) = (FM(1)(x1), FM(2)(x2), … , FM(n)(xn)) Bước 7: Phân lớp nhóm G
RM là số các nhóm R tương ứng với mặt nạ M, M {0, 1}
SM là số các nhóm S tương ứng với mặt nạ M, M {0, 1}
R -M là số các nhóm R tương ứng với mặt nạ M, M {-1, 0}
S-M là số các nhóm S tương ứng với mặt nạ M, M {-1, 0} Bước 9: Nếu |RM| = |SM| thì p = 1
Ngược lại thực hiện các bước 9 đến bước 12 Bước 10: Tính các hệ số: d0 = RM (p/2) – SM (p/2); d1 = RM (1 - p/2) – SM (1 - p/2); d-0 = R -M (p/2) – S-M (p/2); d-1 = R -M (1 - p/2) – S-M (1 - p/2);
Bước 11: Tính xp là nghiệm của phương trình:
2(d1 + d0) + (d-0 - d-1 - d1 – 3d0)x p + d0 – d-0 =0 Bước 12: Tính ước lượng độ dài thông điệp p
CHƯƠNG TRÌNH DEMO ỨNG DỤNG
Xây dựng chương trình
Chương trình sẽ giúp giấu đi những thông tin quan trọng bên trong các file hình ảnh Các hình ảnh chứa thông tin ẩn vẫn giống như những bức ảnh bình thường khác Tuy nhiên, chương trình vẫn còn hạn chế trong các định dạng ảnh hỗ trợ, chương trình chỉ hỗ trợ định dạng BMP
Chương trình được viết bằng ngôn ngữ C# Để xây dựng chương trı̀nh,ta cần thiết kế các module như sau:
Xây dựng 1 class có tên là CryptoHelper.cs chứa 2 phương thức
- public static byte[] Encrypt(byte[] message,string password)
Phương thức này nhâ ̣n vào 2 tham số gồm: thông điê ̣p mà ta muốn mã hóa và mâ ̣t khẩu để trao đổi tin giữa người gửi và người nhâ ̣n Phương thức này sẽ biến đối mâ ̣t khẩu thành 1 khóa có đô ̣ dài 128 byte thông qua lớp PasswordDeriveBytes của Microsoft.NET nhằm tăng tı́nh bảo mâ ̣t Sau đó kết hợp trô ̣n giữa thông điê ̣p và khóa này bằng toán tử XOR để ta ̣o ra mảng byte là cái ta thực sự đem giấu vào trong bức ảnh
- public static byte[] Decrypt(byte[] message, string password)
Phương thức này là quá trı̀nh giải mã ngược của phương thức trên,tham số thứ nhất là mảng byte sau khi đã trı́ch ra được từ file ảnh cần giải mã,tham số thứ 2 là mâ ̣t khẩu để lấy thông tin do người nhâ ̣n nhâ ̣p vào,với mâ ̣t khẩu này,ta cũng dùng lớp PasswordDeriveBytes của Microsoft.NET để ta ̣o ra 1 khóa 128byte (lưu ý rằng nếu người dùng nhâ ̣p đúng mâ ̣t khẩu,thı̀ nó cũng sẽ sinh ra cùng 1 khóa như lúc ta mã hóa) Dùng phép XOR giữa mảng byte và khóa này ta sẽ nhâ ̣n được thông điê ̣p gốc ban đầu
Xây dựng 1 class có tên là LSBHelper.CS chứa 2 phương thức
- public static void Encode(FileStream inStream,byte[] Message, FileStream outStream)
Phương thức này nhâ ̣n vào 3 tham số: file ảnh đầu vào,mảng các byte cần đưa vào trong ảnh,và ảnh đầu ra
- public static byte[] Decode(FileStream inStream,int length)
Phương thức này nhâ ̣n vào 1 file ảnh có chứa tin giấu, đô ̣ dài của thông điê ̣p chứa trong đó Kết quả trả về là 1 mảng các byte mà ta đã giấu trong thủ tu ̣c Encode ở trên.
Các giao diện chính của chương trình
Chạy chương trình và chọn 1 ảnh để giấu tin, ta nhập thông tin cần giấu và đặt khóa Sau đó nhấn vào nút lưu để lưu ảnh đã giấu tin, ta được kết quả sau:
Hı̀nh 4.1: Quá trình giấu tin 4.2.2 Quá trình giải mã
Sau khi thực hiện giải mã bức ảnh trên ta thu được thông tin đã giấu ban đầu:
Hı̀nh 4.2: Quá trình giải mã