1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu kỹ thuật giấu tin trong ảnh LSB và xây dựng chương trình demo

52 385 2

Đ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

Định dạng
Số trang 52
Dung lượng 1,86 MB

Nội dung

Một hướng tiếp cận mới trong bảo mật thông tin là giấu tin information hiding, tức là kĩ thuật giấu một lượng thông tin số vào trong một đối tượng số khác đối tượng vỏ đảm bảo tính vô h

Trang 1

LỜI CẢM ƠN

Sau một khoảng thời gian học tập ở trường Đại học công nghệ thông tin và truyền thông, đến nay em đã hoàn thành xong Đề tài báo cáo thực tập chuyên ngành Em xin bày tỏ lòng cảm ơn sâu sắc nhất tới ban lãnh đạo trường Đại học Công nghệ Thông tin và truyền thông, các thầy cô giáo đã tận tình giảng dạy, trang

bị cho em những vốn kiến thức và kinh nghiệm quý báu, cung cấp cho chúng em những điều kiện và môi trường học tập tốt nhất

Để hoàn thành được tốt báo cáo này, em xin gửi lời cảm ơn chân thành nhất

đến cô giáo ThS.Đoàn Thị Bích Ngọc Cô đã hướng dẫn dìu dắt và tạo điều kiện

giúp đỡ em trong thời gian thực hiện đề tài báo cáo đồ án tốt nghiệp Cô không chỉ truyền lại cho chúng em những kiến thức chuyên nghành mà còn rèn luyện cho chúng em nghị lực, khát khao vươn lên, phát huy khả năng tư duy sáng tạo trong mọi lĩnh vực

Tuy nhiên, dù rất cố gắng nhưng do thời gian có hạn nên báo cáo khó tránh khỏi những thiếu sót Em rất mong nhận được sự thông cảm và đóng góp kiến của quý Thầy Cô và các bạn để báo cáo của em được hoàn chỉnh hơn

Em xin chân thành cảm ơn!

Thái Nguyên, Ngày….Tháng…Năm 2017

Sinh Viên

Nguyễn Văn Quân

Trang 2

LỜI CAM ĐOAN

Em xin cam đoan đồ án với đề tài “Nghiên cứu kỹ thuật giấu tin trong ảnh: LSB và xây dựng chương trình demo” là do em tự tìm hiểu, nghiên cứu qua các tài liệu có được từ các nhà nghiên cứu trước

Các nội dung, thuật toán sử dụng từ các công trình nghiên cứu đã được công

Thái Nguyên, Ngày….Tháng…Năm 2017

Sinh Viên

Nguyễn Văn Quân

Trang 3

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

DANH MỤC HÌNH ẢNH 5

CHƯƠNG 1 TÌM HIỂU NGÔN NGỮ LẬP TRÌNH C# 6

1.1 Tìm hiểu chung về ngôn ngữ lập trình C# 6

1.2 Các kiểu dữ liệu 7

1.3 Biến và hằng 9

1.3.1 Khởi tạo trước khi dùng 9

1.3.2 Hằng 9

1.3.3 Kiểu liệt kê 9

1.3.4 Chuỗi 9

1.3.5 Định danh 9

1.4 Biểu thức 10

1.5 Khoảng trắng 10

1.6 Câu lệnh 10

1.6.1 Các câu lệnh rẽ nhánh không điều kiện 10

1.6.2 Lệnh rẽ nhánh có điều kiện 11

1.6.3 Lệnh lặp 12

1.7 Toán tử 13

1.7.1 Toán tử gán (=) 14

1.7.2 Nhóm toán tử toán học 14

1.7.3 Các toán tử tăng và giảm 14

1.7.4 Các toán tử quan hệ 14

1.7.5 Các toán tử logic 15

1.7.6 Thứ tự các toán tử 15

1.7.7 Toán tử tam phân 15

1.8 Tạo vùng tên 15

1.9 Chỉ thị tiền xử lý 16

1.9.1 Định nghĩa các định danh 16

1.9.2 Hủy một định danh 16

1.9.3 #if, #elif, #else và #endif 17

Trang 4

1.9.4 Chỉ thị #region và #endregion 17

1.10 Lập trình hướng đối tượng với C# 18

1.10.1 Định nghĩa lớp 18

1.10.2 Thừa kế và Đa hình 18

CHƯƠNG 2 TÌM HIỂU KỸ THUẬT GIẤU TIN LSB 19

2.1 Tổng quan về giấu tin 19

2.1.1 Giới thiệu chung 19

2.1.2 Mô hình kĩ thuật giấu và lấy tin 20

2.1.3 Phân loại các kĩ thuật giấu tin 21

2.1.4 Các ứng dụng chính của giấu tin 22

2.1.5 Môi trường giấu tin 23

2.1.6 Các tiêu chí đánh giá kỹ thuật giấu tin trong ảnh 25

2.2 Kỹ thuật giấu tin LSB (Least Significant Bit) trong ảnh màu 26

2.2.1 Giới thiệu chung 26

2.2.2 Các đặc trưng và tính chất của giấu thông tin trong ảnh 27

2.2.3 Cấu trúc file ảnh 29

2.2.4 Giấu tin trong ảnh màu bằng kỹ thuật LSB (Least Significant Bit) 35

CHƯƠNG 3 XÂY DỰNG ỨNG DỤNG DEMO CHO KỸ THUẬT GIẤU TIN TRONG ẢNH 40

3.1 Khảo sát hiện trạng bảo mật thông tin hiện nay 40

3.1.1 Khảo sát 40

3.1.2 Bài toán đặt ra 44

3.1.3 Ý tưởng 44

3.2 Các bước giấu tin vào trong ảnh 46

3.3 Các bước lấy tin từ trong ảnh 47

3.4 Kết quả thực nghiệm 47

3.4.1 Để xây dựng chương trình, ta cần thiết kế các module như sau: 47

3.4.2 Một số hình ảnh từ chương trình Demo 48

KẾT LUẬN 51

TÀI LIỆU THAM KHẢO 52

Trang 5

DANH MỤC HÌNH ẢNH

Hình 2.1 Mô hình giấu và lấy tin 21

Hình 2.2 Mô hình phân loại các kĩ thuật giấu tin 21

Hình 2.3 Ảnh đen trắng 29

Hình 2.4 Ảnh đa cấp xám 30

Hình 2.5 Ảnh màu 30

Hình 2.6: Màu xanh với mã màu (0 0 255) 36

Hình 2.7: Màu xanh với mã màu (0 0 254) 36

Hình 2.8 Ảnh sau khi được giấu tin rất khó phát hiện ra sự thay đổi 37

Hình 2.9 Mô hình giấu tin cơ bản 38

Hình 2.10 Mô hình lấy tin cơ bản 38

Hình 3.1 Chỉ số án toàn thông tin qua các năm 41

Hình 3.2 Mô hình các bước giấu tin trong ảnh 46

Hình 3.3 Mô hình các bước lấy tin từ trong ảnh 47

Hình 3.4 Giao diện chương trình 48

Hình 3.5 Giao diện giấu tin 49

Hình 3.6 Giao diện lấy tin 50

Trang 6

CHƯƠNG 1 TÌM HIỂU NGÔN NGỮ LẬP TRÌNH C#

1.1 Tìm hiểu chung về ngôn ngữ lập trình C#

C# là một ngôn ngữ rất đơn giản, với khoảng 80 từ khoá và hơn mười kiểu dữ liệu dựng sẵn, nhưng C# có tính diễn đạt cao C# hỗ trợ lập trình có cấu trúc, hướng đối tượng, hướng thành phần (component oriented)

Trọng tâm của ngôn ngữ hướng đối tượng là lớp Lớp định nghĩa kiểu dữ liệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết C# có những từ khoá dành cho việc khai báo lớp, phương thức, thuộc tính (property) mới C# hỗ trợ đầy

đủ khái niệm trụ cột trong lập trình hướng đối tượng: đóng gói, thừa kế, đa hình Định nghĩa lớp trong C# không đòi hỏi tách rời tập tin tiêu đề với tập tin cài đặt như C++ Hơn thế, C# hỗ trợ kiểu sưu liệu mới, cho phép sưu liệu trực tiếp trong tập tin mã nguồn Đến khi biên dịch sẽ tạo tập tin sưu liệu theo định dạng XML

C# hỗ trợ khái niệm giao diện, interfaces (tương tự Java) Một lớp chỉ có thể

kế thừa duy nhất một lớp cha nhưng có thế cài đặt nhiều giao diện

C# có kiểu cấu trúc, struct (không giống C++) Cấu trúc là kiểu hạng nhẹ

và bị giới hạn Cấu trúc không thể thừa kế lớp hay được kế thừa nhưng có thể cài đặt giao diện

C# cung cấp những đặc trưng lập trình hướng thành phần như property, sự kiện và dẫn hướng khai báo (được gọi là attribute) Lập trình hướng component được hỗ trợ bởi CLR thông qua siêu dữ liệu (metadata) Siêu dữ liệu mô tả các lớp bao gồm các phương thức và thuộc tính, các thông tin bảo mật …

Assembly là một tập hợp các tập tin mà theo cách nhìn của lập trình viên là các thư viện liên kết động (DLL) hay tập tin thực thi (EXE) Trong NET một assembly là một đơn vị của việc tái sử dụng, xác định phiên bản, bảo mật, và phân phối CLR cung cấp một số các lớp để thao tác với assembly

C# cũng cho truy cập trực tiếp bộ nhớ dùng con trỏ kiểu C++, nhưng vùng mã

đó được xem như không an toàn CLR sẽ không thực thi việc thu dọn rác tự động các đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình viên tự giải phóng

Trang 7

1.2 Các kiểu dữ liệu

C# buộc phải khai báo kiểu của đối tượng được tạo Khi kiểu được khai báo rõ ràng, trình biên dịch sẽ giúp ngăn ngừa lỗi bằng cách kiểm tra dữ liệu được gán cho đối tượng có hợp lệ không, đồng thời cấp phát đúng kích thước

bộ nhớ cho đối tượng

C# phân thành hai loại: loai dữ liệu dựng sẵn và loại do người dùng định nghĩa C# cũng chia tập dữ liệu thành hai kiểu: giá trị và tham chiếu Biến kiểu giá trị được lưu trong vùng nhớ stack, còn biến kiểu tham chiếu được lưu trong vùng nhớ heap

C# cũng hỗ trợ kiểu con trỏ của C++, nhưng ít khi được sử dụng Thông thường con trỏ chỉ được sử dụng khi làm việc trực tiếp với Win API hay các đối tượng COM

 Kiểu dữ liệu định sẵn

C# có nhiểu kiểu dữ liệu định sẵn, mỗi kiểu ánh xạ đến một kiểu được hổ trợ bởi CLS (Commom Language Specification), ánh xạ để đảm bảo rằng đối tượng được tạo trong C# không khác gì đối tượng được tạo trong các ngôn ngữ

NET khác Mỗi kiểu có một kích thước cố định được liệt kê trong bảng sau:

Bảng 1-1 Các kiểu dựng sẵn

Trang 8

 Chuyển đổi kiểu định sẳn

Một đối tượng có thể chuyển từ kiểu này sang kiểu kia theo hai hình thức: ngầm hoặc tường minh Hình thức ngầm được chuyển tự động còn hình thức tường minh cần sự can thiệp trực tiếp của người lập trình (giống với C++ và Java)

Trang 9

1.3 Biến và hằng

Biến dùng để lưu trữ dữ liệu Mỗi biến thuộc về một kiểu dữ liệu nào đó

1.3.1 Khởi tạo trước khi dùng

Trong C#, trước khi dùng một biến thì biến đó phải được khởi tạo nếu không trình biên dịch sẽ báo lỗi khi biên dịch Ta có thể khai báo biến trước, sau đó khởi tạo và sử dụng; hay khai báo biến và khởi gán trong lúc khai báo

Ví dụ:

int x; // khai báo biến trước

x = 5; // sau đó khởi gán giá trị và sử dụng

int y = x; // khai báo và khởi gán cùng lúc

1.3.2 Hằng

Hằng là một biến nhưng giá trị không thay đổi theo thời gian Khi cần thao tác trên một giá trị xác định ta dùng hằng Khai báo hằng tương tự khai báo biến và có thêm từ khóa const ở trước Hằng một khi khởi động xong không thể thay đổi được nữa

1.3.3 Kiểu liệt kê

Enum là một cách thức để đặt tên cho các trị nguyên (các trị kiểu số nguyên, theo nghĩa nào đó tương tự như tập các hằng), làm cho chương trình rõ ràng, dễ

hiểu hơn Enum không có hàm thành viên Ví dụ tạo một enum tên là Ngay như sau:

enum Ngay {Hai, Ba, Tu, Nam, Sau, Bay, ChuNhat};

Theo cách khai báo này enum ngày có bảy giá trị nguyên đi từ 0 = Hai, 1 =

Ba, 2 =Tư … 7 = ChuNhat

Trang 10

1.4 Biểu thức

Bất kỳ câu lệnh định lượng giá trị được gọi là một biểu thức (expression) Phép gán sau cũng được gọi là một biểu thức vì nó định lượng giá trị được gán (là 32)

1.6.1 Các câu lệnh rẽ nhánh không điều kiện

Có hai loại câu lệnh rẽ nhánh không điều kiện Một là lệnh gọi phương thức: khi trình biên dịch thấy có lời gọi phương thức nó sẽ tạm dừng phương thức hiện hành và nhảy đến phương thức được gọi cho đến hết phương thức này

sẽ trở về phương thức cũ

Trang 11

1.6.2 Lệnh rẽ nhánh có điều kiện

Các từ khóa if-else, while, do-while, for, switch-case, dùng để điều khiển dòng chảy chương trình C# giữ lại tất cả các cú pháp của C++, ngoại trừ switch có vài cải tiến

Ghi chú: Khối lệnh là một tập các câu lện trong cặp dấu “{…}” Bất kỳnơi đâu

có câu lệnh thì ở đó có thể viết bằng một khối lệnh

Biểu thức logic là biểu thức cho giá trị dúng hoặc sai (true hoặc false) Nếu

“biểu thức logic” cho giá trị đúng thì “khối lệnh” hay “khối lệnh 1” sẽ được thực thi, ngược lại “khối lệnh 2” sẽ thực thi Một điểm khác biệt với C++ là biểu thức trong câu lệnh if phải là biểu thức logic, không thể là biểu thức số

Trang 12

Biểu thức lựa chọn là biểu thức sinh ra giá trị nguyên hay chuỗi Switch sẽ so sánh biểu_thức_lựa_chọn với các biểu_thức_hằng để biết phải thực hiện với khối lệnh nào Lệnh nhảy như break, goto…để thoát khỏi câu switch và bắt buộc phải

Cách dùng câu lệnh này như sau: (giống như trong C++)

Trang 13

Khối_lệnh sẽ được thực hiện cho đến khi nào biểu thức còn đúng Nếu ngay từ đầu biểu thức sai, khối lệnh sẽ không được thực thi

 Câu lệnh break, continue, và return

Cả ba câu lệnh break, continue, và return rất quen thuộc trong C++ và Java, trong C#, ý nghĩa và cách sử dụng chúng hoàn toàn giống với hai ngôn ngữ này

1.7 Toán tử

Các phép toán +, -, *, / là một ví dụ về toán tử Áp dụng các toán tử này lên các biến kiểu số ta có kết quả như việc thực hiện các phép toán thông thường int a = 10;

int b = 20;

int c = a + b; // c = 10 + 20 = 30

C# cung cấp cấp nhiều loại toán tử khác nhau để thao tác trên các kiểu biến dữ liệu, được liệt kê trong bảng sau theo từng nhóm ngữ nghĩa

Trang 14

1.7.3 Các toán tử tăng và giảm

C# cũng kế thừa từ C++ và Java các toán tử: +=,-=, *=, /= , %= nhằm làm đơn giản hoá Nó còn kế thừa các toán tử tiền tố và hậu tố (như biến++, hay ++biến) để giảm bớt sự cồng kềnh trong các toán tử cổ điển

1.7.4 Các toán tử quan hệ

Các toán tử quan hệ được dùng để so sánh hai giá trị với nhau và kết quả trả về

có kiểu Boolean Toán tử quan hệ gồm có: == (so sánh bằng), != (so sánh

Trang 15

khác), > (so sánh lớn hơn), >= (lớn hơn hay bằng), < (so sánh nhỏ hơn), <= (nhỏ hơn hay bằng)

1.7.5 Các toán tử logic

Các toán tử logic gồm có: && (và), || (hoặc), ! (phủ định) Các toán tử này được dùng trong các biểu thức điều kiện để kết hợp các toán tử quan hệ theo một ý nghĩa nhất định

1.7.6 Thứ tự các toán tử

Đối với các biểu thức toán, thứ tự ưu tiên là thứ tự được qui định trong toán học

Còn thứ tự ưu tiên thực hiện của các nhóm toán tử được liệt kê theo bảng dưới đây

Bảng 1-4 Thứ tự ưu tiên của các nhóm toán tử (chiều ưu tiên từ trên xuống)

1.7.7 Toán tử tam phân

Cú pháp:

<biểu thức điều kiện>? <biểu thức 1>: <biểu thức 2>;

Ý nghĩa:

Nếu biểu thức điều kiện đúng thì thực hiện biểu thức 1

Nếu sai thì thực hiện biểu thức 2

Trang 16

Vùng tên con được truy xuất thông qua tên vùng tên cha cách nhau bằng dấu chấm Để khai báo vùng tên ta sử dụng từ khóa namespace

1.9 Chỉ thị tiền xử lý

Không phải mọi câu lệnh đều được biên dịch cùng lúc mà có một số trong chúng được biên dịch trước một số khác Các câu lệnh như thế này gọi là các chỉ thị tiền xử lý.Các chỉ thị tiền xử lý được đặt sau dấu #

1.9.1 Định nghĩa các định danh

#define DEBUG định nghĩa một định danh tiền xử lý (preprocessor identifier) DEBUG Mặc dù các chỉ thị tiền xử lý có thể định nghĩa ở đâu tuỳ thích nhưng định danh tiền xử lý bắt buộc phải định nghĩa ở đầu của chương trình, trước cả từ khóa using Do đó, ta cần trình bày như sau:

#define DEBUG

// mã nguồn bình thường - không ảnh hưởng bởi bộ tiền xử lý

#if DEBUG

// mã nguồn được bao gồm trong chương trình

// khi chạy dưới chế độ debug

#else

// mã nguồn được bao gồm trong chương trình

// khi chạy dưới chế độ không debug

#endif

// các đoạn mã nguồn không ảnh hưởng tiền xử lý

Trình biên dịch nhảy đến các đoạn thoả điều kiện tiền biên dịch để biên dịch trước

1.9.2 Hủy một định danh

Ta hủy một định danh bằng cách dùng #undef Bộ tiền xử lý duyệt mã nguồn

từ trên xuống dưới, nên định danh được định nghĩa từ #define, hủy khi gặp #undef hay đến hết chương trình Ta sẽ viết là:

Trang 17

1.9.3 #if, #elif, #else và #endif

Đây là các chỉ thị để chọn lựa xem có tiền biên dịch hay không Các chỉ thị trên có ý nghĩa tương tự như câu lệnh điều kiện if - else Quan sát ví dụ sau:

#if DEBUG

// biên dịch đoạn mã này nếu DEBUG được định nghĩa

#elif TEST

// biên dịch đoạn mã này nếu DEBUG không được định nghĩa

// nhưng TEST được định nghĩa

#else

// biên dịch đoạn mã này nếu DEBUG lẫn TEST

// không được định nghĩa

Trang 18

1.10 Lập trình hướng đối tượng với C#

1.10.1 Định nghĩa lớp

Định nghĩa một lớp mới với cú pháp như sau:

[attribute][bổ từ truy xuất] class định danh [:lớp cơ sở]

Thừa kế là cách tạo mới một lớp từ những lớp có sẵn Tức là nó cho phép tái

sử dụng lại mã nguồn đã viết trong lớp có sẵn Thừa kế nói đơn giản là việc tạo một đối tượng khác B thừa hưởng tất cả các đặc tính của lớp A Cách này gọi là đơn thừa kế Nếu lớp B muốn có đặc tính của nhiều lớp A1, A2 … thì gọi là đa thừa kế

Đa thừa kế là khái niệm rất khó cài đặt cho các trình biên dịch C# cũng như nhiều ngôn ngữ khác tìm cách tránh né khái niệm này Đa hình là việc lớp B thừa kế các đặc tính từ lớp A nhưng có thêm một số cài đặt riêng

 Đặc biệt hoá và tổng quát hoá

Sự đặc biệt và tổng quát hoá có mối quan hệ tương hỗ và phân cấp Khi ta nói ListBox và Button là những cửa sổ (Window), có nghĩa rằng ta tìm thấy được đầy

đủ các đặc tính và hành vi của Window đều tồn tại trong hai loại trên Ta nói rằng Window là tổng quát hoá của ListBox và Button; ngược lại ListBox và Button là hai đặc biệt hoá của Window

 Sự kế thừa

Trong C#, khi ta tạo một lớp kế thừa bằng cách thêm dấu “:” vào sau tên của lớp kế thừa và theo sau đó là lớp cơ sở như sau:

public class ListBox : Window

Có nghĩa là ta khai báo một lớp mới ListBox kế thừa từ lớp Window Lớp kế thừa sẽ thừa hưởng được tất các phương thức và biến thành viên của lớp cơ sở, thậm chí còn thừa hưởng cả các thành viên mà cơ sở đã thừa hưởng

Trang 19

CHƯƠNG 2 TÌM HIỂU KỸ THUẬT GIẤU TIN LSB

2.1 Tổng quan về giấu tin

2.1.1 Giới thiệu chung

Các kỹ thuật giấu tin đã được đề xuất và sử dụng từ xa xưa, và sau này đã được phát triển ứng dụng cho nhiều lĩnh vực Từ Steganography bắt nguồn từ Hi-Lạp với ý nghĩa là tài liệu được phủ (covered writing) Các câu chuyện kể về

kỹ thuật giấu thông tin được truyền qua nhiều thế hệ Có lẽ những ghi chép sớm nhất về kỹ thuật giấu thông tin (thông tin được hiểu theo nghĩa nguyên thủy của nó) thuộc về sử gia Hy-Lạp Herodotus Khi bạo chúa Hy-Lạp Histiaeus bị vua Darius bắt giữ ở Susa vào thế kỷ thứ năm trước Công nguyên, ông ta đã gửi một thông báo bí mật cho con rể của mình là Aristagoras ở Miletus Histiaeus đã cạo trọc đầu của một nô lệ tin cậy và xăm một thông báo trên da đầu của người nô lệ

ấy Khi tóc của người nô lệ này mọc đủ dài người nô lệ được gửi tới Miletus

Một câu chuyện khác về thời Hy-Lạp cổ đại cũng do Herodotus ghi lại

Môi trường để ghi văn bản chính là các viên thuốc được bọc trong sáp ong Demeratus, một người Hy-Lạp, cần thông báo cho Sparta rằng Xerxes định xâm chiếm Hy-Lạp Để tránh bị phát hiện, anh ta đã bóc lớp sáp ra khỏi các viên thuốc và khắc thông báo lên bề mặt các viên thuốc này, sau đó bọc lại các viên thuốc bằng một lớp sáp mới Những viên thuốc được để ngỏ và lọt qua mọi sự kiểm tra một cách dễ dàng

Mực không màu là phương tiện hữu hiệu cho bảo mật thông tin trong một thời gian dài Người Romans cổ đã biết sử dụng những chất sẵn có như nước quả, nước tiểu và sữa để viết các thông báo bí mật giữa những hàng văn tự thông thường Khi bị hơ nóng, những thứ mực không nhìn thấy này trở nên sẫm màu

và có thể đọc dễ dàng

Ý tưởng về che giấu thông tin đã có từ hàng nghìn năm về trước nhưng kỹ thuật này được dùng chủ yếu trong quân đội và trong các cơ quan tình báo Mãi cho tới vài thập niên gần đây, giấu thông tin mới nhận được sự quan tâm của các nhà nghiên cứu và các viện công nghệ thông tin với hàng loạt công trình nghiên

Trang 20

cứu giá trị Cuộc cách mạng số hoá thông tin và sự phát triển nhanh chóng của mạng truyền thông là nguyên nhân chính dẫn đến sự thay đổi này Những phiên bản sao chép hoàn hảo, các kỹ thuật thay thế, sửa đổi tinh vi, cộng với sự lưu thông phân phối trên mạng của các dữ liệu đa phương tiện đã sinh ra nhiều vấn

đề nhức nhối như: ăn cắp bản quyền, phân phối bất hợp pháp, xuyên tạc trái

phép vv Do đó, yêu cầu của vấn đề bảo mật được đặt lên hàng đầu Có rất nhiều

phương pháp bảo mật thông tin ra đời Mã hóa thông tin là giải pháp đảm bảo an tàn

và bảo mật thông tin theo phương pháp truyền thống với một quy tắc nào đó được thỏa thuận trước giữa người gửi và người nhận Tuy nhiên, phương pháp này tạo

nên sự chú ý của đối phương với thông điệp

Một hướng tiếp cận mới trong bảo mật thông tin là giấu tin (information

hiding), tức là kĩ thuật giấu một lượng thông tin số vào trong một đối tượng số khác (đối tượng vỏ) đảm bảo tính vô hình của thông tin được giấu và khi nhìn đối tượng

vỏ đó sẽ khó xác định được thông tin có giấu trong đó hay không, đồng thời có thể phục hồi lại được các thông tin đã giấu khi cần

Một ưu điểm của hướng tiếp cận giấu tin so với mã hóa là khi tiếp cận môi trường giấu tin, đối phương khó xác định được là có thông tin giấu trong đó hay không Ngoài ra phương pháp giấu tin còn thể hiện được ưu thế rõ rệt trong nhiều ứng dụng như phân phối tài liệu số, bảo vệ bản quyền…

2.1.2 Mô hình kĩ thuật giấu và lấy tin

Để thực hiện giấu tin cần xây dựng được các thủ tục giấu tin Các thủ tục này sẽ thực hiện nhúng thông tin cần giấu vào môi trường giấu tin Các thủ tục giấu tin thường được thực hiện với một khóa giống như trong các hệ mật mã để tăng tính bảo mật Sau khi giấu tin ta thu được đối tượng chứa thông tin giấu và có thể phân phối đối tượng đó trên kênh thông tin Để giải mã thông tin cần nhận được đối tượng có chứa thông tin đã giấu, sử dụng thủ tục giải mã cùng với khóa đã dùng trong quá trình giấu để lấy lại thông tin

Trang 21

Hình 2.1 Mô hình giấu và lấy tin

2.1.3 Phân loại các kĩ thuật giấu tin

Có rất nhiều các kĩ thuật giấu tin khác nhau và đồng thời tương ứng với mỗi cách thì sẽ có nhưng đặc điểm và ưu nhược điểm khác nhau Do vậy việc phân loại

từ đó trở lên phức tạp Sau đây là sơ đồ phân loại được đưa ra năm 1999 và được nhiều người chấp nhận:

Hình 2.2 Mô hình phân loại các kĩ thuật giấu tin

Theo sơ đồ trên, giấu tin được chia là 2 hướng chính: là giấu tin mật và thủy vân số

 Giấu tin mật (steganography): Là kỹ thuật giấu một lượng thông tin mật,

quan trọng vào bên trong một số đối tượng vỏ nhằm che giấu, truyền thông bí mật điểm – điểm Lượng thông tin giấu được trong những trường hợp này càng lớn càng tốt, việc giải mã để nhận được thông tin cũng không cần phương tiện chứa gốc ban

Trang 22

đầu Các yêu cầu mạnh về chống tấn công của kẻ thù không cần thiết lắm thay vào

đó là thông tin giấu phải được giữ kín

 Thủy vân số (Digital watermarking): là kỹ thuật dùng để bảo vệ các sản

phẩm số Nó có thể được dùng trong các lĩnh vực bảo vệ bản quyền, chống sao chép, phân biệt giả mạo,… Các sản phẩm này có thể là văn bản, ảnh, audio, video,…

Thủy vân số được chia làm 2 loại:

+ Thủy vân bền vững: Là kỹ thuật nhúng thủy vân tồn tại lâu dài với sản phẩm

dưới tác động của môi trường, thủy vân bền vững được áp dụng trong các ứng dụng bảo vệ bản quyền, chống việc tẩy xóa, làm giả hoặc biến đổi phá hủy thủy vân

+ Thủy vân dễ vỡ: Là kỹ thuật nhúng thủy vân sao cho sau khi phân phối

sản phẩm trong môi trường mở nếu có bất cứ một sự biến đổi nào làm thay đổi đối tượng 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 nữa Tức là nó có đặc tính dễ dàng bị phá vỡ Các kỹ thuật thủy vân này được sử dụng trong các ứng dụng xác thực thông tin và phát hiện xuyên tạc thông tin bằng các nhúng vào các check-sum trong các bit LSB Cái khó của đầu đọc là phân biệt giữa sai lệch thủy vân do xuyên tạc và sai lệch do đường truyền

2.1.4 Các ứng dụng chính của giấu tin

Hiện nay trong một số những ứng dụng về nhận diện như thẻ chứng minh, thẻ căn cước, hộ chiếu…người ta có thể giấu thông tin trên các ảnh thẻ để xác định thông tin thực Ví dụ như hình vẽ bên là một thẻ chứng minh đã được giấu tin trong ảnh Thông tin giấu là số thẻ trùng với số đã được in rõ ở trên thẻ

 Giấu tin mật (Steganography)

Các thông tin cần bảo mật được giấu trong các đối tượng vỏ và các đối tượng này có thể được truyền công khai tới người nhận mà không gây bất cứ sự chú

ý nào của đối phương Người nhận sẽ sử dụng thuật toán và khóa nào đó (đã thỏa thuận giữa 2 người) để khôi phục lại thông tin mật Yêu cầu kĩ thuật là tỉ lệ giấu tin cần lớn nhưng bằng các giác quan không thể nhận thấy được sự khác biệt của đối tượng trước và sau khi giấu tin vào

Trang 23

 Bảo vệ bản quyền (Copyright Protection)

Đây là ứng dụng phổ biến nhất của thủy vân số Một thông tin nào đó mang

ý nghĩa quyền sở hữu tác giả (gọi là thủy vân) được nhúng vào trong các sản phẩm

số Yêu cầu kĩ thuật là việc nhúng thủy vân không ảnh hưởng đáng kể đến cảm nhận sản phẩm và phải bền vững trước các tấn công, tồn tại lâu dài cùng sản phẩm Giả

sử có một thành phẩm dữ liệu dạng đa phương tiện như ảnh, âm thanh, video và cần được lưu thông trên mạng Để bảo vệ các sản phẩm chống lại các hành vi lấy cắp hoặc làm nhái cần phải có một kỹ thuật để “dán tem bản quyền” vào sản phẩm này Việc dán tem hay chính là việc nhúng thủy vân cần phải đảm bảo không để lại một ảnh hưởng đáng kể nào đến việc cảm nhận sản phẩm Yêu cầu kỹ thuật đối với ứng dụng này là thủy vân phải tồn tại bền vững cùng với sản phẩm, muốn bỏ thủy vân này mà không được phép của người chủ sở hữu thì chỉ có cách là phá hủy sản phẩm

 Xác thực thông tin (Authentication)

Một thông tin được giấu trong đối tượng số để nhận biết xem đối tượng đó

có bị thay đổi hay không Yêu cầu kĩ thuật là việc nhúng thủy vân không ảnh hưởng đáng kể đến cảm nhận đối tượng và rất dễ bị phá hủy trước các tấn công Đây là ứng dụng của thủy vân dễ vỡ

2.1.5 Môi trường giấu tin

Giấu tin là một công nghệ mới rất phức tạp, đang được tập trung nghiên cứu

ở nhiều nước trên thế giới như Đức, Mỹ, Italia, Canada, Nhật Bản Những kết quả thực nghiệm cho thấy cần phải có thêm thời gian để nghiên cứu thẩm định, tuy nhiên các nhà khoa học khẳng định rằng đây là một công nghệ mới đầy hứa hẹn cho vấn đề an toàn và bảo mật thông tin

Kỹ thuật giấu tin đã được nghiên cứu và áp dụng trong nhiều môi trường dữ liệu khác nhau như trong dữ liệu đa phương tiện (text, image, audio, video), trong sản phẩm phần mềm và gần đây là những nghiên cứu trên môi trường cơ sở dữ liệu quan hệ Trong các môi trường dữ liệu đó thì dữ liệu đa phương tiện là môi trường chiếm tỉ lệ chủ yếu trong các kỹ thuật giấu tin

Trang 24

 Giấu tin trong ảnh

Giấu thông tin trong ảnh hiện nay chiếm tỉ lệ lớn nhất trong các chương trình ứng dụng, các phần mềm, hệ thống giấu tin trong đa phương tiện bởi lượng thông tin được trao đổi bằng ảnh là rất lớn, hơn nữa giấu thông tin trong ảnh cũng đóng vai trò hết sức quan trọng đối với hầu hết các ứng dụng bảo vệ an toàn thông tin như: nhận thực thông tin, xác định xuyên tạc, bảo vệ bản quyền tác giả, điều khiển

truy cập, giấu thông tin mật vv

Thông tin sẽ được giấu cùng với dữ liệu ảnh nhưng chất lượng ảnh ít thay đổi

và chẳng ai biết được đằng sau ảnh đó mang những thông tin có ý nghĩa gì? Ngày nay, khi ảnh số đã được sử dụng rất phổ biến thì giấu thông tin trong ảnh đem lại rất nhiều ứng dụng quan trọng trên nhiều lĩnh vực đời sống xã hội Ví dụ, trong các dịch vụ ngân hàng và tài chính ở một số nước phát triển, thuỷ vân số được sử dụng

để nhận diện khách hàng trong các thẻ tín dụng Mỗi khách hàng có một chữ kí viết tay, sau đó chữ kí này được số hoá và lưu trữ trong hồ sơ của khách hàng Chữ kí này sẽ được sử dụng như là thuỷ vân để nhận thực thông tin khách hàng Trong các thẻ tín dụng, chữ kí tay được giấu trong ảnh của khách hàng trên thẻ Khi sử dụng thẻ, người dùng đưa thẻ vào một hệ thống, hệ thống có gắn thiết bị đọc thuỷ vân trên ảnh và lấy được chữ kí số đã nhúng trong ảnh Thuỷ vân được lấy ra sẽ so sánh với chữ kí số đã lưu trữ xem có trùng hợp không, từ đó xác định nhận thực khách hàng

 Giấu tin trong audio

Kỹ thuật giấu thông tin trong audio phụ thuộc vào hệ thống thính giác của con người (HAS - Human Auditory System) HAS cảm nhận được các tín hiệu ở dải tần rộng và công suất thay đổi lớn, nhưng lại kém trong việc phát hiện sự khác biệt nhỏ giữa các dải tần và công suất Điều này có nghĩa là, các âm thanh to, cao tần có thể che giấu được các âm thanh nhỏ thấp một cách dễ dàng Kênh truyền tin cũng là một vấn đề Kênh truyền hay băng thông chậm sẽ ảnh hưởng đến chất lượng thông tin sau khi giấu Giấu thông tin trong audio yêu cầu rất cao về tính đồng bộ và tính

an toàn của thông tin

Trang 25

 Giấu tin trong video

Giấu tin trong video cũng được quan tâm và được phát triển mạnh mẽ cho nhiều ứng dụng như điều khiển truy cập thông tin, nhận thực thông tin và bảo vệ bản quyền tác giả Ta có thể lấy một ví dụ là các hệ thống chương trình trả tiền xem theo video clip (pay per view application) Các thuật toán trước đây thường cho phép giấu ảnh vào trong video, nhưng gần đây kỹ thuật cho phép giấu cả âm thanh

và hình ảnh vào video

 Giấu tin trong văn bản text

Ta thay đổi các thuộc tính không nhìn thấy của văn bản Các thuộc tính này

có rất nhiều và máy tính không thể theo dõi hết tất cả được Có rất nhiều phương pháp giấu tin và sẽ lãng phí rất nhiều thời gian và tiền bạc và việc xử lý giấu tin mà lại cho kết quả bấp bênh Giấu tin sẽ hiệu quả hơn khi được sử dụng trong mã hóa đúng cách và chúng ta có thể chọn cách thay thế ký tự trong bảng mã Unicode và

thay đổi chế độ màu sắc

Kỹ thuật giấu tin đang được áp dụng nhiều cho nhiều loại đối tượng chứ không riêng gì dữ liệu đa phương tiện như ảnh, audio, video, văn bản text Gần đây

đã có một số nghiên cứu giấu tin trong cơ sở dữ liệu quan hệ, các gói IP truyền trên

mạng chắc chắn sau này còn tiếp tục phát triển cho các môi trường dữ liệu số khác

2.1.6 Các tiêu chí đánh giá kỹ thuật giấu tin trong ảnh

 Tính vô hình

Kỹ thuật giấu tin trong ảnh phụ thuộc rất nhiều vào hệ thống thị giác của con

người Tính vô hình hay không cảm nhận được của mắt người thường giảm dần ở những vùng ảnh có màu xanh tím

 Khả năng giấu thông tin

Khả năng giấu thông tin hay lượng thông tin giấu được trong một ảnh được tính bằng tỉ lệ giữa lượng thông tin giấu và kích thước của ảnh Các thuật toán giấu tin đều cố gắng đạt được mục tiêu giấu được nhiều tin và gây nhiễu không đánh kể Thực tế, người ta luôn phải cân nhắc giữa dung lượng thông tin cần giấu với các tiêu chí khác nhau như chất lương, tính bền vững của thông tin giấu

Trang 26

 Chất lượng của ảnh có giấu thông tin

Chất lượng của ảnh có giấu tin được đánh giá qua sự cảm nhận của mắt người Nên chọn những ảnh có nhiễu, có những vùng góc cạnh hoặc có cấu trúc, làm ảnh môi trường vì mắt thường ít nhận biết được sự biến đổi, khi có tin giấu trên những ảnh này

 Tính bền vững của thông tin được giấu

Tính bền vững thể hiện qua việc các thông tin giấu không bị thay đổi khi ảnh mang tin phải chịu tác động của các phép xử lý ảnh như nén, lọc, biến đổi, tỷ lệ,…

 Thuật toán và độ phức tạp của thuật toán

Cần nắm được một số kiến thức cơ bản về cấu trúc của ảnh để chọn ra thuật toán tìm miền ảnh thích hợp cho việc giấu tin Độ phức tạp của thuật toán mã hóa

và giải mã là yếu tố quan trọng để đánh giá các phương pháp giấu tin trong ảnh Yêu cầu về độ phức tạp tính toán phụ thuộc vào từng ứng dụng

2.2 Kỹ thuật giấu tin LSB (Least Significant Bit) trong ảnh màu

2.2.1 Giới thiệu chung

Hiện nay, giấu thông tin trong ảnh là một bộ phận chiếm tỷ lệ lớn nhất trong các chương trình ứng dụng, các phần mềm, hệ thống giấu tin trong đa phương tiện bởi lượng thông tin được trao đổi bằng ảnh là rất lớn và hơn nữa giấu thông tin trong ảnh cũng đóng vai trò hết sức quan trọng trong các hầu hết các ứng dụng bảo

vệ an toàn thông tin như: nhận thực thông tin, xác định xuyên tạc thông tin, bảo vệ bản quyền tác giả, điều khiển truy cập, giấu thông tin mật Chính vì thế mà vấn đề này đã nhận được sự quan tâm rất lớn của các cá nhân, tổ chức, trường đại học, và viện nghiên cứu trên thế giới

Thông tin sẽ được giấu cùng với dữ liệu ảnh nhưng chất lượng ảnh ít thay đổi

và chẳng ai biết được đằng sau ảnh đó mang những thông tin có ý nghĩa Và ngày nay, khi ảnh số đã được sử dụng rất phổ biến, thì giấu thông tin trong ảnh đã đem lại nhiều những ứng dụng quan trọng trên các lĩnh vực trong đời sống xã hội Ví dụ như đối với các nước phát triển, chữ kí tay đã được số hoá và lưu trữ sử dụng như là

hồ sơ cá nhân của các dịch vụ ngân hàng và tài chính Nó được dùng để nhận thực trong các thẻ tín dụng của người tiêu dùng

Ngày đăng: 02/11/2017, 08:37

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Giáo trình “Ngôn ngữ Lập tr.nh C#” được biên dịch và tổng hợp từ: - Programming C#, Jesse Liberty, O’Reilly.- C# in 21 Days, Bradley L.Jones, SAMS.- Windows Forms Programming with C#, Erik Brown, Manning Sách, tạp chí
Tiêu đề: Ngôn ngữ Lập tr.nh C#"” được biên dịch và tổng hợp từ: "- Programming C#", Jesse Liberty, O’Reilly. "- C# in 21 Days", Bradley L.Jones, SAMS. "- Windows Forms Programming with C#
3. Ngô Nhật Nguyên, Lê Trọng Thắng, Xây dựng ứng dựng giấu tin trong ảnh, Khoa Công Nghệ Thông Tin, Trường Đại Học Lạc Hồng Sách, tạp chí
Tiêu đề: Xây dựng ứng dựng giấu tin trong ảnh
2. Trần Quốc, Giấu tin trong dữ liệu đa phương tiện , một công nghệ mới trong bảo mật thông tin Khác
4. Thạc sỹ Lương Đức Hải, Dùng Kỹ thuật giấu tin trong ảnh sử dụng các bit LSB Khác
5. Yu-Yuan Chen, Hsing-kuang Pan, and Yu-Chee Tseng. A secure Data Hiding Scheme for Two- Color Images. Taiwan Khác
6. Andersen, R.J., Petitcolas, F.A.P., On the limits of steganography. IEEE Journal of Selected Areas in Communications, Special Issue on Copyright and Privacy Protection 16 No.4 (1998) 474-481 Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w