1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực

50 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Tác giả Dương Tấn Thành
Người hướng dẫn Tiến sĩ Nguyễn Đức Thái
Trường học Trường Đại học Bách Khoa
Chuyên ngành Khoa học máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2018
Thành phố Hồ Chí Minh
Định dạng
Số trang 50
Dung lượng 2,22 MB

Nội dung

NHIỆM VỤ VÀ NỘI DUNG: Dựa trên cơ sở của mục đích và các yêu cầu của việc giấu tin, cũng như phân tích các ưu khuyết điểm của các phương pháp giấu tin vào ảnh số, từ đó đề xuất thuật toá

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA

-

DƯƠNG TẤN THÀNH

NGHIÊN CỨU THUẬT TOÁN GIẤU TIN VÀO

ẢNH SỐ VÀ HIỆN THỰC RESEARCH ALGORITHMS HIDING MESSAGES INTO DIGITAL IMAGES AND

IMPLEMENTATION

Ngành: Khoa học máy tính Mã số: 60.48.01.01

LUẬN VĂN THẠC SĨ

TP HỒ CHÍ MINH, tháng 7 năm 2018

Trang 2

CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM

Cán bộ hướng dẫn khoa học :

(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 1 :

(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 2 :

(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày tháng năm 2018 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ) 1

2

3

4

5 Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)

Trang 3

II NHIỆM VỤ VÀ NỘI DUNG: Dựa trên cơ sở của mục đích và các yêu cầu của việc giấu tin, cũng như phân tích các ưu khuyết điểm của các phương pháp giấu tin vào ảnh số, từ đó đề xuất thuật toán giấu tin hiệu quả và hiện thực thuật toán bằng phần mềm

III NGÀY GIAO NHIỆM VỤ: 04/01/2018

IV NGÀY HOÀN THÀNH NHIỆM VỤ: 18/06/2018

V CÁN BỘ HƯỚNG DẪN: Tiến sĩ Nguyễn Đức Thái

Tp HCM, ngày tháng năm 2018

CÁN BỘ HƯỚNG DẪN (Họ tên và chữ ký) TRƯỞNG KHOA KH & KTMT (Họ tên và chữ ký)

Trang 4

LỜI CẢM ƠN Trân trọng cảm ơn thầy TS Nguyễn Đức Thái đã tận tình hướng dẫn, cảm ơn các thầy cô trong khoa KH & KTMT trường đại học Bách Khoa TP HCM, các anh chị và các bạn cùng khóa đã nhiệt tình giải đáp các thắc mắc để tạo điều kiện tốt nhất cho tôi, cũng như đã động viên tôi trong suốt thời gian qua Cảm ơn các anh chị tác giả của các công trình nghiên cứu trước đã nhiệt tình giải đáp thắc mắc cho tôi qua email, cũng như định hướng giúp tôi để tôi có điều kiện tốt nhất thực hiện luận văn này

Học viên

Dương Tấn Thành

Trang 5

iv

Tóm tắt: Giấu tin là một nhu cầu cấp thiết đã có từ xa xưa Căn cứ vào mục đích giấu tin trên ảnh số, có thể chia thành hai lĩnh vực như sau: giấu thông tin bí mật và thủy vân số Giấu thông tin bí mật với mong muốn truyền tải thông điệp qua internet mà không bị phát hiện, lĩnh vực giấu thông tin bí mật đòi hỏi lượng thông tin có thể giấu phải lớn và phải được bảo mật trong trường hợp có bị phát hiện cũng không thể giải mã được Thủy vân số với mục đích là bảo vệ bản quyền, do đó lượng thông tin cần giấu vào bức ảnh thường thấp, thường là một ảnh logo với kích thước nhỏ, tuy nhiên lĩnh vực thủy vân số yêu cầu độ bền thông tin phải cao để có thể tránh được các tấn công phá vỡ bản quyền

Giấu tin trên ảnh số có thể được thực hiện trên miền không gian hoặc trên miền tần số của ảnh, luận văn sẽ nghiên cứu và thực nghiệm hai phương pháp giấu tin này trên ảnh bitmap, cũng như đánh giá ưu điểm khuyết điểm của từng phương pháp, từ đó đưa đến kết luận trong trường hợp nào nên hay không nên dùng phương pháp giấu tin nào

Abstract: Data hiding is an urgent need that has existed in the past Based on the purpose of data hiding on digital images, it can be divided into two areas: steganography and watermarking Steganography is the hiding the confidential information into digital images with the desire to transmit messages over the internet without being detected, steganography requires large amounts of information to be kept hidden and kept confidential in the event of detection Watermarking is for the protection of copyright, so the amount of information to hide in the image is usually small, it is usually a small logo image, but watermarking requires high durability, to avoid breaking the copyright

Data hiding can be done on the spatial domain or on the frequency domain of the digital image In this, i will study and experiment with these two methods of data hiding in bitmap images, as well as assess the strengths and weaknesses of each method, thus leading to a conclusion on whether or not to use the hidden method

Trang 6

LỜI CAM ĐOAN Tôi xin cam đoan luận văn này hoàn toàn do tôi thực hiện dưới sự hướng dẫn của thầy TS Nguyễn Đức Thái Các giải thuật, mã nguồn tham khảo trong luận án có nguồn gốc rõ ràng, và có độ chính xác cao nhất trong phạm vi hiểu biết của tôi Các kết quả nghiên cứu trong luận án do tôi tự tìm hiểu Nếu không đúng như trên, tôi xin hoàn toàn chịu trách nhiệm về đề tài của mình

Học viên

Dương Tấn Thành

Trang 7

vi

MỤC LỤC

MỞ ĐẦU 1

CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 2

1.1 Tính cấp thiết của đề tài 2

1.2 Mục tiêu của đề tài 3

1.3 Phương pháp thực hiện đề tài 4

1.4 Bố cục báo cáo luận văn 7

CHƯƠNG 2 NHỮNG CÔNG TRÌNH LIÊN QUAN 8

CHƯƠNG 3 CƠ SỞ LÝ THUYẾT 9

3.1 Giới thiệu ảnh bitmap (BMP) 9

3.2 Làm việc với ảnh bitmap bằng NNLT C# 10

3.3 Phép biến đổi DCT 11

3.4 Giải thuật mã hóa Triple DES 12

3.5 Giải thuật mã hóa RSA 14

CHƯƠNG 4 KỸ THUẬT GIẤU TIN TRÊN ẢNH BITMAP 19

4.1 Giấu tin trên miền không gian 19

4.2 Giấu tin trên miền tần số 20

4.3 So sánh và ứng dụng 22

4.4 Cải tiến giải thuật giấu tin 22

CHƯƠNG 5 CÀI ĐẶT VÀ THỬ NGHIỆM 28

5.1 Giao diện tổng quan 28

5.2 Giấu thông tin bí mật 28

5.3 Thủy vân số 32

5.4 Chương trình sinh khóa RSA 36

CHƯƠNG 6 ĐÁNH GIÁ GIẢI THUẬT 38

KẾT LUẬN 40

TÀI LIỆU THAM KHẢO 41

Trang 8

MỞ ĐẦU

Giấu tin (data hiding) là thuật ngữ chỉ các kỹ thuật giấu thông tin nói chung bao gồm cả giấu thông tin mật (steganography) và thuỷ vân số (watermarking) Giấu tin là kỹ thuật giấu (nhúng) một lượng thông tin nào đó vào trong một đối tượng dữ liệu số khác (ví dụ như file âm thanh, file ảnh, file text, ) nhằm giữ bí mật và xác thực thông tin

Với hai mục đích là bảo mật cho những dữ liệu được giấu trong đối tượng mạng và bảo đảm an toàn cho chính các đối tượng chứa dữ liệu giấu trong đó (bảo vệ bản quyền) nên kỹ thuật giấu thông tin được phát triển thành hai lĩnh vực với những yêu cầu và tính chất khác nhau đó là giấu thông tin bí mật và thủy vân số [11]

Giấu thông tin bí mật là một nhu cầu đã có từ rất lâu, từ thời xa xưa người ta tìm cách giấu thông tin trên các thiết bị, dụng cụ ngoài đời thực (bì thư, bài báo, giấu trong giày dép, hoặc dùng mực vô hình, …) Hiện nay, với khoa học kỹ thuật phát triển, cùng với sự phát triển của máy tính và internet thì bài toán giấu tin cũng đòi hỏi phải có những giải pháp đối với các tài liệu điện tử, để có thể truyền tải một bức thư thông qua internet mà không bị phát hiện Đây là một đề tài vô cùng cấp thiết đối với lĩnh vực An ninh – Quốc phòng, không chỉ để áp dụng nó mà còn để cảnh giác và phát hiện nó

Khác với giấu thông tin mật, kỹ thuật thủy vân xuất hiện muộn hơn (vào cuối thế kỷ 13 tại Ý) với mục đích bảo vệ bản quyền Thủy vân có 2 loại: thủy vân có thể phát hiện được bằng mắt và thủy vân không thể phát hiện được bằng mắt thường

Luận văn này sẽ quan tâm đến hai vấn đề là giấu thông tin mật và thủy vân không thể phát hiện được bằng mắt thường Việc giấu tin sẽ được thực hiện trên ảnh bitmap trong miền không gian và miền tần số, cũng như so sánh đánh giá ưu điểm khuyết điểm của việc giấu tin trên hai miền này Từ đó đưa ra kết luận về phạm vi áp dụng của từng lĩnh vực

Trang 9

2

CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI

Giấu thông tin bí mật là một nghệ thuật khoa học về việc viết và chuyển tải các thông điệp một cách bí mật, sao cho ngoại trừ người gửi và người nhận, không ai biết đến sự tồn tại của thông tin, là một dạng của bảo mật bằng cách che giấu Từ steganography có gốc Hy lạp có nghĩa là "giấu thư" kết hợp từ hai từ steganos (στεγανός) nghĩa là "ẩn nấp để bảo vệ" và graphein (γράφειν) nghĩa là "viết" [7]

Thuật ngữ steganography được Johannes Trithemius sử dụng lần đầu năm 1499 trong cuốn sách Steganographia, một luận văn về mật mã và kỹ thuật giấu thư được ngụy trang dưới dạng một cuốn sách ma thuật Trong kỹ thuật giấu thư, thông thường thông điệp xuất hiện dưới một dạng khác trong quá trình truyền tải: hình ảnh, bài báo, danh sách mua hàng, bì thư, hoặc thông điệp ẩn có thể được viết bằng mực vô hình giữa các khoảng trống trong một lá thư bình thường [7]

Đề tài này sẽ tập trung nghiên cứu giấu tin vào ảnh bitmap, tìm hiểu cách biểu diễn ảnh bitmap trên máy tính, cách thể hiện ảnh trên miền không gian và miền tần số, tìm hiểu những ứng dụng thực tiễn cũng như các yêu cầu của việc giấu tin trong ảnh số, phân tích và đánh giá các kỹ thuật giấu tin, từ đó lựa chọn giải pháp thích hợp với từng mục đích nhất định, cải tiến và đề xuất hướng phát triển thuật toán

1.1 Tính cấp thiết của đề tài Giấu thông tin bí mật là một lĩnh vực vô cùng cấp thiết trong An ninh – Quốc phòng, không chỉ để sử dụng nó mà còn để cảnh giác và phát hiện ra nó Trong lĩnh vực này đòi hỏi ta phải làm chủ công nghệ và đôi khi cần phải giữ bí mật cả với giải thuật, vì thế không nên sử dụng lại các ứng dụng, giải thuật của một tổ chức hay cá nhân nào khác Thay vào đó việc cần phải nghiên cứu và xây dựng phương pháp mới, thuật toán mới cá biệt cho riêng mình là vô cùng cấp thiết

Song song đó, thủy vân số được sử dụng trong phổ biến trong lĩnh vực in ấn xuất bản, với mục đích là bảo vệ bản quyền ảnh số Một thông điệp là logo hoặc thông tin bản quyền sẽ được chèn vào bên trong ảnh gốc (ảnh cần bảo vệ

Trang 10

bản quyền) mà không ai có thể phát hiện được bằng mắt thường, từ đó làm cơ sở cho việc minh chứng bản quyền bức ảnh

1.2 Mục tiêu của đề tài Giấu thông tin bí mật yêu cầu tính bí mật là trên hết Tính bí mật ở đây được hiểu theo hai nghĩa:

- Tính bí mật của nội dung thông điệp: nội dung thông điệp bên trong bức ảnh là tuyệt mật, vì thế trong trường hợp xấu nhất nếu có kẻ thứ ba phát hiện thì cũng không thể nào đọc được nội dung này

- Tính bí mật của việc giấu tin: tức là đặc tính ẩn của thông điệp, hay nói cách khác là không thể phát hiện sự tồn tại của thông điệp bên trong bức ảnh

Bên cạnh đó, lĩnh vực này còn yêu cầu tính toàn vẹn, tính xác thực và lượng nội dung thông tin được giấu bên trong ảnh:

- Tính toàn vẹn: nội dung thông tin phải chính xác tuyệt đối, không được thừa hoặc thiếu nội dung Trong trường hợp xấu nhất, nội dung có thể bị phá vỡ không phục hồi được, nhưng phải đảm bảo không ai có thể làm thay đổi nội dung

- Tính xác thực: trong trường hợp cần thiết phải có thể xác thực được danh tính người gửi, tránh mạo danh hoặc tráo đổi thông điệp

- Lượng thông tin cần giấu: thông tin cần giấu thường là các đoạn văn bản, các thông điệp có thể ngắn hoặc dài, vì vậy lựa chọn giải thuật có thể giấu được nhiều thông tin cũng là một yêu cầu không kém phần quan trọng Khác với giấu thông tin bí mật, thủy vân số yêu cầu tính bền vững là trên hết Tính bền vững ở đây có nghĩa là thông tin được giấu sẽ không bị mất đi khi truyền tải hoặc phát tán ảnh trên internet, thay đổi định dạng ảnh hoặc ảnh bị tác động qua các phép biến đổi hình học,…

Trang 11

4

Giấu thông tin mật (Steganography) (Watermaking) Thủy vân số Mục tiêu

+ Tàng hình các phiên liên lạc để bảo mật thông tin + Dùng trong các liên lạc xác định

+ Chủ yếu phục vụ cho mục đích bảo vệ bản quyền + Chủ yếu dùng trong các hoạt động xuất bản

Thực hiện Không làm thay đổi phương

tiện chứa thông tin Có thể tác động nhỏ về cảm nhận tới phương tiện chứa

+ Không thể phát hiện được việc giấu thông tin

+ Không kiểm tra được nếu không có khóa thích hợp

+ Chỉ cần nhúng ít dữ liệu + Dữ liệu nhúng cần phải bền vững

+ Đảm bảo trước các phương pháp nén dữ liệu

+ Dữ liệu nhúng có thể nhận thấy hay không nhận thấy + Có thể không yêu cầu khóa khi kiểm tra

Bảng 1: So sánh giấu thông tin mật và giấu thông tin thủy vân

Mục tiêu của đề tài này là nghiên cứu và đề xuất giải pháp giấu thông tin trên ảnh bitmap sao cho đáp ứng tốt được các yêu cầu nêu trên, xây dựng ứng dụng demo, đánh giá giải thuật, từ đó đề xuất hướng phát triển cho giải thuật và ứng dụng

1.3 Phương pháp thực hiện đề tài Căn cứ vào phạm vi giấu tin trên ảnh số, các kỹ thuật giấu tin được chia làm hai loại chính: giấu tin trên miền không gian và giấu tin trên miền tần số

- Giấu tin trên miền không gian: trên miền không gian, ảnh số được biểu diễn là một ma trận các điểm ảnh (pixel), trong đó mỗi điểm ảnh sẽ mang một giá trị màu sắc nhất định Dựa vào giá trị màu sắc này, ta có thể giấu một lượng thông tin nhất định của thông điệp vào ảnh số

- Giấu tin trên miền tần số: các phép biến đổi ảnh từ miền không gian sang miền tần số chẳng hạn như: biến đổi Cosine rời rạc (DCT), biến đổi Fourier rời rạc (DFT), biến đổi wavelet (DWT),… cho ta một cách biểu diễn khác của ảnh Từ đó, thay vì thông tin được giấu vào các giá trị màu sắc của điểm ảnh, thì trên miền tần số thông tin sẽ được giấu vào các hệ số của phép biến đổi này

Trang 12

Để thực hiện đề tài này, cần nghiên cứu cấu trúc ảnh bitmap, nghiên cứu cách biểu diễn ảnh trên miền không gian, cách truy xuất và thay đổi các giá trị màu sắc của điểm ảnh, cũng như các phép biến đổi ảnh trên miền tần số để truy xuất và thay đổi các hệ số của phép biến đổi tương ứng

Để đáp ứng các yêu cầu khắc khe của lĩnh vực giấu thông tin bí mật, cần nghiên cứu và áp dụng các giải thuật mã hóa để mã hóa thông tin trước khi đem giấu chúng Các giải thuật mã hóa chẳng hạn như Triple DES, RSA,… người nhận phải yêu cầu có đúng khóa thì mới có thể giải mã được thông tin

Các giải thuật mã hóa đồng thời có thể giải quyết được các yêu cầu về toàn vẹn nội dung thông tin và xác thực danh tính người gửi Dựa trên hai mục đích khác nhau của việc giấu thông tin bí mật và thủy vân số, hai yêu cầu đưa ra của hai việc giấu tin này cũng khác nhau Nghiên cứu và căn cứ vào các đặc tính của việc giấu tin trên miền không gian và giấu tin trên miền tần số để có thể lựa chọn phương pháp thích hợp cho từng mục đích nhất định

Xây dựng ứng dụng thực nghiệp bằng ngôn ngữ lập trình C#, với trình soạn thảo Visual Studio Một ứng dụng giấu tin gồm tối thiểu hai thành phần chính:

- Nhúng thông tin - Trích xuất thông tin

Trang 13

6

Hình 1 Lược đồ thể hiện quá trình giấu tin [10]

Hình 2 Lược đồ thể hiện quá trình trích xuất thông tin [10]

Trang 14

1.4 Bố cục báo cáo luận văn Bố cục báo cáo luận văn bao gồm các nội dung chính như sau: Chương 2: Nêu các công trình nghiên cứu liên quan đến lĩnh vực giấu tin, cũng như các nghiên cứu phát hiện giấu tin trên ảnh

Chương 3: Trình bày cơ sở lý thuyết của việc giấu tin trên ảnh, cấu trúc của một file ảnh bitmap, cách biểu diễn ảnh trên miền không gian và miền tần số Bên cạnh đó trình bày các giải thuật giấu tin, các giải thuật mã hóa giải mã sẽ được sử dụng trong quá trình giấu tin

Chương 4: Trình bày các kỹ thuật giấu tin, so sánh đánh giá các kỹ thuật, từ đó xác định phạm vi ứng dụng của từng kỹ thuật cụ thể, cải tiến các kỹ thuật giấu tin để đáp ứng yêu cầu của bài toán một cách tốt hơn

Chương 5: Trình bày các kết quả đạt được khi thử nghiệm giải thuật bằng cách xây dựng ứng dụng cụ thể

Chương 6: Đánh giá các giải thuật, phân tích độ khó trong việc phát hiện giấu tin hoặc phá mã thông tin

Kết luận và hướng phát triển đề tài

Trang 15

8

CHƯƠNG 2 NHỮNG CÔNG TRÌNH LIÊN QUAN

Giấu tin nói chung hay giấu thông tin bí mật nói riêng là một lĩnh vực khá phổ biến và xuất hiện từ lâu, đã có nhiều công trình nghiên cứu, xây dựng và cải tiến các thuật toán, các phương pháp giấu tin nhằm nâng cao hiệu quả giấu tin

Chẳng hạn như: - Giấu tin vào LSB (least significant bit) của các hệ số biến đổi DCT, với

thông tin được mã hóa bằng thuật toán Blowfish trước khi giấu, trong bài báo: “Image Steganography Using Discrete Cosine Transform (DCT) and Blowfish Algorithm” [3]

- Nhúng thủy vân bằng cách điều chỉnh các hệ số trong băng tần giữa của phép biến đổi DCT, trong bài báo: “Steganographic approach for hiding image in DCT domain” [1] của các tác giả Blossom Kaur, Amandeep Kaur, Jasdeep Singh

- Một số kỹ thuật phát hiện mù cho ảnh có giấu tin trên LSB: “độ lệch chuẩn”, “12”, “tỉ lệ xám”, và phát hiện bằng phương pháp ước lượng thông tin giấu trong sử dụng lý thuyết “trùng khớp”, trong luận án tiến sỹ “Nghiên cứu một số kỹ thuật phát hiện ảnh giấu tin” [4]

Và còn nhiều công trình khác nữa… Thành tựu đạt được của các nghiên cứu này là đã cho ra đời nhiều phương pháp giấu tin hiệu quả cũng như các giải thuật nâng cấp, cải tiến chất lượng giấu tin Tuy nhiên, đặc thù của steganography là dùng trong các lĩnh vực đặc biệt, chẳng hạn như An ninh – Quốc phòng, hoặc các môi trường yêu cầu tính bí mật cao Chính vì thế việc xây dựng một giải thuật giấu tin mới phục vụ cho riêng mình là một yêu cầu cần thiết

Luận văn này sẽ tập trung vào phân tích các mục đích và yêu cầu của việc giấu tin, phân tích các ưu khuyết điểm của các phương pháp giấu tin, đánh giá phạm vi áp dụng của từng phương pháp cũng như thực hiện các cải tiến mới để cá nhân hóa giải thuật đồng thời nâng cao hiệu quả giấu tin

Trang 16

CHƯƠNG 3 CƠ SỞ LÝ THUYẾT

3.1 Giới thiệu ảnh bitmap (BMP) Trong đồ họa máy vi tính, BMP, còn được biết đến với tên tiếng Anh khác là Windows bitmap, là một định dạng tập tin hình ảnh khá phổ biến Các tập tin đồ họa lưu dưới dạng BMP thường có đuôi là BMP hoặc DIB (Device Independent Bitmap) [12]

Các thuộc tính tiêu biểu của một tập tin ảnh BMP (cũng như của các file ảnh nói chung) là:

- Số bit trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n Một ảnh BMP n-bit có 2n màu Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu) Ảnh BMP 24-bit có chất lượng hình ảnh trung thực nhất

- Chiều cao của ảnh (height), cho bởi điểm ảnh (pixel) - Chiều rộng của ảnh (width), cho bởi điểm ảnh

Cấu trúc tập tin ảnh BMP bao gồm 4 phần: - Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap - Bitmap Information (40 bytes): lưu một số thông tin chi tiết giúp hiển thị

ảnh - Color Palette (4*x bytes), x là số màu của ảnh: định nghĩa các màu sẽ được

sử dụng trong ảnh - Bitmap Data: lưu dữ liệu ảnh

Đặc điểm nổi bật nhất của định dạng BMP là tập tin hình ả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 các ảnh được nén (chẳng hạn GIF, JPEG hay PNG)

Trang 17

10

Định dạng BMP được hỗ trợ bởi hầu hết các phần mềm đồ họa chạy trên Windows, và cả một số ứng dụng chạy trên MS-DOS Ngay từ Windows 3.1, Microsoft đã cho ra đời phần mềm PaintBrush, một phần mềm hỗ trợ vẽ hình ảnh đơn giản và lưu hình ảnh được vẽ dưới dạng BMP 16 hay 256 màu Tuy nhiên, do kích thước tập tin ảnh BMP quá lớn, định dạng BMP không phù hợp để trao đổi hình ảnh qua mạng Internet (do hạn chế về tốc độ truyền dữ liệu) Do đó, các trang web thường sử dụng ảnh dạng GIF, JPEG hay PNG Các định dạng này hỗ trợ các thuật toán nén hình ảnh, vì vậy có thể giảm bớt kích cỡ của ảnh

3.2 Làm việc với ảnh bitmap bằng NNLT C# a Biểu diễn ảnh bitmap trong lập trình: Là một ma trận hai chiều các pixel, mỗi pixel mang một giá trị màu, được biểu diễn thông qua ba kênh màu (red, green, blue), mỗi kênh màu mang các giá trị từ 0-255 (tức là 1 byte), ảnh thông thường là ảnh 24 bits (hay 3 bytes dùng cho 3 kênh màu) Chúng ta tưởng tượng như sau: pixel đầu tiên của ảnh chiếm 3 bytes đầu (0, 1, 2); pixel thứ hai chiếm 3 bytes kế tiếp (3, 4, 5); cứ như thế…

Đối với ảnh 8 bits, tức là mỗi pixel chỉ chiếm 8 bits (1 byte), thì 3 kênh màu red, green, blue mang cùng một giá trị như nhau, khi đó ảnh là ảnh mức xám (grayscale)

b Các hàm thao tác với ảnh bằng ngôn ngữ C#: C# cung cấp Bitmap Class chứa đầy đủ các hàm thao tác với một file ảnh, mỗi pixel trên file ảnh được đọc/ghi với một giá trị màu biểu diễn bằng đối tượng của Color Class Cụ thể như sau:

- Khởi tạo đối tượng Bitmap từ đường dẫn file:

Bitmap b = newBitmap(@"C:\sample.bmp"); - Đọc thông tin màu của một pixel (x, y)

Color c = b.GetPixel(x, y);

Trang 18

- Ghi một giá trị màu c vào pixel (x, y)b.SetPixel(x, y, c);

- Lưu file ảnh bitmap b.Save(@"C:\sample.bmp"); 3.3 Phép biến đổi DCT

Biến đổi cosine rời rạc là một biến đổi toán học nhằm chuyển đổi miền biểu diễn các tín hiệu từ miền không gian sang miền tần số và được ứng dụng nhiều trong các phép xử lý tín hiệu như xử lý ảnh, xử lý video Về bản chất, biến đổi cosine rời rạc là phần thực của biến đổi Fourier rời rạc Để hiểu rõ hơn về biến đổi cosine rời rạc, trước tiên ta xem xét một vài điểm thiết yếu nhìn từ góc độ ứng dụng của biến đổi Fourier [6]

Nếu một ảnh được coi như một hàm của biên độ (cường độ sáng) với khoảng cách như là biến, thì theo lý thuyết Fourier hàm đó có thể được xây dựng bởi một chuỗi các hàm sine và cosine tăng dần theo tần số Khi hàm chỉ gồm có các thành phần sine thì gọi là biến đổi sine, và nếu hàm chỉ gồm các thành phần cosine thì nó được gọi là biến đổi cosine Cả biến đổi Fourier, sine và cosine đều có các ứng dụng riêng trong xử lý ảnh

Lý do chọn phép biến đổi cosine rời rạc để biến đổi ảnh sang miền tần số là vì biến đổi cosine rời rạc yêu cầu ít sự phức tạp tính toán và tài nguyên hơn Vì ảnh gốc có kích thước rất lớn cho nên trước khi đưa vào biến đổi DCT, ảnh được phân chia thành các khối vuông, mỗi khối này thường có kích thước 8x8 pixel và biểu diễn các mức xám của 64 điểm ảnh, các mức xám này là các số nguyên dương có giá trị từ 0 đến 255 Việc phân khối này sẽ làm giảm được một phần thời gian tính toán các hệ số chung, mặt khác biến đổi cosin đối với các khối nhỏ sẽ làm tăng độ chính xác khi tính toán với dấu phẩy tĩnh, giảm thiểu sai số do làm tròn sinh ra

Mỗi khối 64 điểm ảnh sau biến đổi DCT thuận sẽ nhận được 64 hệ số thực DCT Mỗi hệ số này có chứa một trong 64 thành phần tần số không gian hai chiều Hệ số với tần số bằng không theo cả hai hướng được gọi là hệ số một chiều DC, hệ số này chính là giá trị trung bình của 64 điểm ảnh trong khối 63

Trang 19

Quantization(); }

publicvoid FastInverseDCT() {

double[,] temp = newdouble[Width, Height]; IDTCoefficients = newdouble[Width, Height]; DCTkernel = newdouble[Width, Height]; DCTkernel = Transpose(GenerateDCTmatrix(Order)); temp = multiply(DCTkernel, DCTCoefficients); IDTCoefficients = multiply(temp, Transpose(DCTkernel)); IDCTImage = Displayimage(IDTCoefficients);

return; }

3.4 Giải thuật mã hóa Triple DES DES (viết tắt của Data Encryption Standard, hay Tiêu chuẩn Mã hóa Dữ liệu) là một phương pháp mật mã hóa được FIPS (Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ) chọn làm chuẩn chính thức vào năm 1976 Sau đó chuẩn này được sử dụng rộng rãi trên phạm vi thế giới Ngay từ đầu, thuật toán của nó đã gây ra rất nhiều tranh cãi, do nó bao gồm các thành phần thiết kế mật, độ dài khóa tương đối ngắn, và các nghi ngờ về cửa sau để Cơ quan An ninh quốc gia Hoa Kỳ (NSA) có thể bẻ khóa Do đó, DES đã được giới nghiên cứu xem xét rất kỹ lưỡng, việc này đã thúc đẩy hiểu biết hiện đại về mật mã khối (block cipher) và các phương pháp thám mã tương ứng [9]

Hiện nay DES được xem là không đủ an toàn cho nhiều ứng dụng Nguyên nhân chủ yếu là độ dài 56 bit của khóa là quá nhỏ Khóa DES đã từng bị phá trong vòng chưa đầy 24 giờ Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu về mặt lý thuyết của mã hóa có thể dẫn đến phá khóa, tuy chúng không khả thi trong thực tiễn Thuật toán được tin tưởng là an toàn trong thực tiễn có dạng Triple DES (thực hiện DES ba lần), mặc dù trên lý thuyết phương

Trang 20

pháp này vẫn có thể bị phá Gần đây DES đã được thay thế bằng AES (Advanced Encryption Standard, hay Tiêu chuẩn Mã hóa Tiên tiến) [9]

Trong một số tài liệu, người ta phân biệt giữa DES (là một tiêu chuẩn) và thuật toán DEA (Data Encryption Algorithm, hay Thuật toán Mã hóa Dữ liệu) thuật toán dùng trong chuẩn DES [9]

Trong ngôn ngữ lập trình C#, Microsoft đã cung cấp sẵn cho chúng ta class TripleDESCryptoServiceProvider Trong đó, Microsoft cung cấp đủ các hàm: mã hóa, giải mã, cách thực hiện như sau:

- Code mã hóa

publicoverridestring Encrypt(string str, string key) {

byte[] keyArray; byte[] toEncryptArray = encoding.GetBytes(str); if (useHashing)

{ MD5CryptoServiceProvider hashmd5 = newMD5CryptoServiceProvider(); keyArray = hashmd5.ComputeHash(encoding.GetBytes(key));

hashmd5.Clear(); }

else

{ keyArray = encoding.GetBytes(key); }

TripleDESCryptoServiceProvider tdes = newTripleDESCryptoServiceProvider(); tdes.Key = keyArray;

tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tdes.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

tdes.Clear(); return ByteToBinaryString(resultArray); }

Trang 21

{ MD5CryptoServiceProvider hashmd5 = newMD5CryptoServiceProvider(); keyArray = hashmd5.ComputeHash(encoding.GetBytes(key));

hashmd5.Clear(); }

else

{ keyArray = encoding.GetBytes(key); }

TripleDESCryptoServiceProvider tdes = newTripleDESCryptoServiceProvider(); tdes.Key = keyArray;

tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; try

{ ICryptoTransform cTransform = tdes.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toDecryptArray, 0, toDecryptArray.Length);

tdes.Clear(); return encoding.GetString(resultArray); }

catch

{ returnstring.Empty; }

Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật

Trang 22

Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4.405.829) Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000 Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ Ngoài ra, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký

b Mô tả sơ lược [8]: Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân) Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được

Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bình muốn gửi cho An một thông tin mật mà Bình muốn duy nhất An có thể đọc được Để làm được điều này, An gửi cho Bình một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa Bình nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bình cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bình gửi chiếc hộp lại cho An An mở hộp với chìa khóa của mình và đọc thông tin trong thư Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật

c Tốc độ: RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán mã hóa đối xứng khác Trên thực tế, Bình sử dụng một thuật toán mã hóa đối xứng nào đó để mã hóa văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn hơn nhiều so với văn bản)

Trang 23

16

Phương thức này cũng tạo ra những vấn đề an ninh mới Một ví dụ là cần phải tạo ra khóa đối xứng thật sự ngẫu nhiên Nếu không, kẻ tấn công (thường ký hiệu là Hắc) sẽ bỏ qua RSA và tập trung vào việc đoán khóa đối xứng

d Sử dụng RSA trong ngôn ngữ lập trình C#: Trong ngôn ngữ lập trình C#, Microsoft đã cung cấp sẵn cho chúng ta class RSACryptoServiceProvider Trong đó, Microsoft cung cấp đủ các hàm: sinh khóa, mã hóa, giải mã, cách thực hiện như sau:

- Code sinh khóa:

publicstaticvoid GeneratePairKey(string path) {

using (RSACryptoServiceProvider RSA = newRSACryptoServiceProvider()) {

var privKey = RSA.ExportParameters(true); var pubKey = RSA.ExportParameters(false); string pubKeyString;

{ var sw = newStringWriter(); var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters)); xs.Serialize(sw, pubKey);

pubKeyString = sw.ToString(); File.WriteAllText(path + "\\pub.txt", pubKeyString); }

string privKeyString; {

var sw = newStringWriter(); var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters)); xs.Serialize(sw, privKey);

privKeyString = sw.ToString(); File.WriteAllText(path + "\\priv.txt", privKeyString); }

} }

Trang 24

var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters)); RSAParameters pubKey = (RSAParameters)xs.Deserialize(sr);

var encryptedData = RSAEncrypt(saltToEncrypt, pubKey, false); var saltEcrypted = ByteToBinaryString(encryptedData);

string saltEcryptedLength = ByteToBinaryString(BitConverter.GetBytes(saltEcrypted.Length)); var dataEncrypted = (newOneKeyEncryption()).Encrypt(str, salt); return saltEcryptedLength + saltEcrypted + dataEncrypted;

}

privatebyte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool

DoOAEPPadding) {

try

{ byte[] encryptedData; using (RSACryptoServiceProvider RSA = newRSACryptoServiceProvider()) {

RSA.ImportParameters(RSAKeyInfo); encryptedData = RSA.Encrypt(DataToEncrypt, DoOAEPPadding); }

return encryptedData; }

catch (CryptographicException e) {

Console.WriteLine(e.Message); returnnull;

} }

Trang 25

bytes[x] = Convert.ToByte(str.Substring(8 * x, 8), 2); }

int saltEncryptedLength = BitConverter.ToInt32(bytes, 0); string saltEncrypted = str.Substring(32, saltEncryptedLength); int numOfBytes = saltEncrypted.Length / 8;

byte[] saltEncryptedByte = newbyte[numOfBytes]; for (int x = 0; x < numOfBytes; x++)

{ saltEncryptedByte[x] = Convert.ToByte(saltEncrypted.Substring(8 * x, 8), 2); }

var sr = newStringReader(privateKey); var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters)); RSAParameters privKey = (RSAParameters)xs.Deserialize(sr);

var saltByte = RSADecrypt(saltEncryptedByte, privKey, false); var salt = encoding.GetString(saltByte);

var dataEncryptedString = str.Substring(32 + saltEncryptedLength); return (newOneKeyEncryption()).Descrypt(dataEncryptedString, salt); }

privatebyte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool

DoOAEPPadding) {

try

{ byte[] decryptedData; using (RSACryptoServiceProvider RSA = newRSACryptoServiceProvider()) {

RSA.ImportParameters(RSAKeyInfo); decryptedData = RSA.Decrypt(DataToDecrypt, DoOAEPPadding); }

return decryptedData; }

catch (CryptographicException e) {

Console.WriteLine(e.ToString()); returnnull;

} }

Ngày đăng: 09/09/2024, 00:39

HÌNH ẢNH LIÊN QUAN

Bảng 1: So sánh giấu thông tin mật và giấu thông tin thủy vân - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Bảng 1 So sánh giấu thông tin mật và giấu thông tin thủy vân (Trang 11)
Hình 2. Lược đồ thể hiện quá trình trích xuất thông tin [10] - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 2. Lược đồ thể hiện quá trình trích xuất thông tin [10] (Trang 13)
Hình 4: Ma trận định lượng các hệ số thông dụng - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 4 Ma trận định lượng các hệ số thông dụng (Trang 28)
Bảng 2: So sánh giấu tin trên miền không gian và miền tần số - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Bảng 2 So sánh giấu tin trên miền không gian và miền tần số (Trang 29)
Hình 5: Bảng màu sắc cơ bản trong Paint - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 5 Bảng màu sắc cơ bản trong Paint (Trang 30)
Hình 6: Sơ đồ mã hóa thông tin cần giấu - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 6 Sơ đồ mã hóa thông tin cần giấu (Trang 31)
Hình 7: Sơ đồ nén thông tin cần giấu - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 7 Sơ đồ nén thông tin cần giấu (Trang 32)
Hình 9: Sơ đồ nhúng thủy vân số [5] - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 9 Sơ đồ nhúng thủy vân số [5] (Trang 33)
Hình 12: Màn hình giấu tin - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 12 Màn hình giấu tin (Trang 36)
Hỡnh 13: Lượng thụng tin dài 41.856 bits chiếm khoảng ẳ sức chứa của ảnh mụi trường - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
nh 13: Lượng thụng tin dài 41.856 bits chiếm khoảng ẳ sức chứa của ảnh mụi trường (Trang 37)
Hình 15: Màn hình trích xuất thông tin - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 15 Màn hình trích xuất thông tin (Trang 38)
Hình 16: Màn hình nhúng thủy vân - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 16 Màn hình nhúng thủy vân (Trang 39)
Hình 18: Màn hình trích xuất thủy vân - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 18 Màn hình trích xuất thủy vân (Trang 40)
Hình 17: Kết quả sau khi nhúng thủy vân - Luận văn thạc sĩ Khoa học máy tính: Nghiên cứu thuật toán giấu tin vào ảnh số và hiện thực
Hình 17 Kết quả sau khi nhúng thủy vân (Trang 40)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w