Tải bản đầy đủ (.pdf) (25 trang)

Kỹ thuật giấu tin trong ảnh (kèm code)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.63 MB, 25 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN


BÀI TẬP LỚN
AN TOÀN MẬT MÃ VÀ ỨNG DỤNG
NGHIÊN CỨU KỸ THUẬT GIẤU TIN TRÊN K BIT LSB
CỦA ẢNH
Giảng Viên HD: T.S Đỗ Xuân Chợ
Thành Viên TH: Bạch Tuấn Đạt
Lê Việt Hưng
Nhữ Đình Hưng
Nguyễn Đỗ Nhật Quân
Nguyễ Hoàng Sơn
Bùi Minh Việt
Lớp: D11ATTT

Hà Nội,24/4/2015


MỤC LỤC
MỞ ĐẦU .............................................................................................................. 2
CHƢƠNG I: TỔNG QUAN VỀ KỸ THUẬT GIẤU TRONG ẢNH ............. 3
1.1. Tổng quan về kỹ thuật giấu tin (Steganography) ..................................... 3
1.1.1. Định nghĩa kỹ thuật giấu tin ................................................................. 3
1.1.2. Mục đích của giấu tin ........................................................................... 3
1.1.3. Mô hình kỹ thuật giấu thông tin cơ bản................................................ 3
1.1.4. Mô hình kỹ thuật tách thông tin cơ bản ................................................ 4
1.1.5. Yêu cầu thiết yếu đối với một hệ thống giấu tin .................................. 5
1.1.6. Môi trường giấu tin ............................................................................... 5
1.1.7. Một số đặc diểm của việc giấu tin trên ảnh .......................................... 6


CHƢƠNG II: KỸ THUẬT GIẤU TIN TRÊN K BIT LSB CỦA ẢNH ........ 8
2.1. Khái niệm bit LSB ....................................................................................... 8
2.2. Phƣơng pháp giấu tin trên k bit LSB cổ điển............................................ 8
2.3. Phƣơng pháp giấu tin trên k-LSBs nâng cao (sử dụng khóa hoán vị).. 10
2.4. Ví dụ minh họa ........................................................................................... 13
CHƢƠNG III: CÀI ĐẶT THỬ NGHIỆM ..................................................... 15
3.1. Xây dựng CSDL lƣu trữ ảnh Bitmap. ................................................... 15
3.2. Xây dƣng phần mềm trên C#. ................................................................ 15
3.2.1. Cấu trúc ảnh BITMAP ........................................................................ 15
3.2.2. Cài đặt chương trình ........................................................................... 17
KẾT LUẬN ........................................................................................................ 23

1


MỞ ĐẦU
Tính cấp thiết của đề tài: giấu 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 dữ liệu da phương tiện bởi lượng thông tin dượ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
trong hầu hết các ứng dụng bảo vệ an toàn thông tin : 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ả, diều khiển truy nhập, giấu
thông tin mật…
Vì những lý do đó báo cáo nghiên cứu về kỹ thuật giấu tin trên K Bit LSB
của ảnh trình bày về kỹ thuật giấu tin trên miền LSB bằng các thuật toán: LSB
cổ điển, LSB nâng cao
Để thực hiện được điều đó cần thực hiện những nhiệm vụ sau:
- Nghiên cứu tổng quan về kỹ thuật giấu tin trong ảnh;
- Tìm hiểu kỹ thuật giấu tin trên K Bit LSB của ảnh;
- Xây dựng phần mềm thực hiện quy trình giấu và tách tin dựa trên

thuật toán đã phân tích trong báo cáo.

2


CHƢƠNG I: TỔNG QUAN VỀ KỸ THUẬT GIẤU TRONG ẢNH
1.1. Tổng quan về kỹ thuật giấu tin (Steganography)
1.1.1. Định nghĩa kỹ thuật giấu tin
Giấu thông tin là một kỹ thuật nhúng (giấu) một lượng thông tin số nào
đó vào trong một đối tượng dữ liệu số khác (giấu thông tin chỉ mang tính quy
ước không phải là một hành động cụ thể).
1.1.2. Mục đích của giấu tin
Có hai mục đích của giấu tin:
- Bảo mật cho những dữ liệu được giấu
- Bảo đảm an toàn (bảo vệ bản quyền) cho chính các đối tượng chứa dữ
liệu giấu trong đó và phát hiện xuyên tạc thông tin.
Có thể thấy 2 mục đích này hoàn toàn trái ngược nhau và dần phát triển
thành 2 lĩnh vực với những yêu cầu và tính chất khác nhau.
Giấu thông tin

Giấu tin bí mật
(Steganography)

Thuỷ vân số
(Watermarking)

Hình 1.1: Hai lĩnh vực chính của kỹ thuật giấu thông tin
Kỹ thuật giấu thông tin bí mật (Steganography): với mục đích đảm bảo an
toàn và bảo mật thông tin tập trung vào các kỹ thuật giấu tin để có thể giấu được
nhiều thông tin nhất. Thông tin mật được giấu kỹ trong một đối tượng khác sao

cho người khác khó phát hiện được.
Kỹ thuật giấu thông tin theo kiểu đánh giấu – thủy vân (watermarking)
với mục đích để bảo vệ bản quyền chính đối tượng dùng để chứa thông tin,
thường tập trung đảm bảo một số các yêu cầu như đảm bảo tính bền vững…
Đây là ứng dụng cơ bản nhất của kỹ thuật thuỷ vân số.
1.1.3. Mô hình kỹ thuật giấu thông tin cơ bản
Giấu thông tin vào phương tiện chứa và tách lấy thông tin là hai quá trình
trái ngược nhau và có thể mô tả qua sơ đồ khối của hệ thống như sau:

3


Thông tin giấu

Phương tiện
chứa (audio,
ảnh, video)

Phương tiện
chứa đã được
giấu tin

Bộ nhúng
thông tin

Phân phối
trên mạng

Khoá
Hình 1.2: Lược đồ chung cho quá trình giấu tin

- Thông tin cần giấu tuỳ theo mục đích của người sử dụng, nó có thể là
thông điệp (với các tin bí mật) hay các logo, hình ảnh bản quyền.
- Phương tiện chứa: các file ảnh, text, audio… là môi trường để nhúng
tin.
- Bộ nhúng thông tin: là những chương trình thực hiện việc giấu tin.
- Đầu ra: là các phương tiện chứa đã có tin giấu trong đó.
Tách thông tin từ các phương tiện chứa diễn ra theo quy trình ngược lại,
với đầu ra là các thông tin đã được giấu vào phương tiện chứa. Phương tiện
chứa sau khi tách lấy thông tin có thể được sử dụng, quản lý theo những yêu cầu
khác nhau.
1.1.4. Mô hình kỹ thuật tách thông tin cơ bản
Khoá giấu tin

Phương tiện
chứa đã được
giấu tin

Phương tiện
chứa (audio,
ảnh, video)

Bộ nhúng
thông tin

Thông tin giấu

Hình 1.3: Lược đồ chung cho quá trình giải mã thông tin
4

Phân phối

trên mạng


Sau khi nhận được đối tượng phương tiện chứa có giấu thông 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 khoá 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 ban đầu.
1.1.5. Yêu cầu thiết yếu đối với một hệ thống giấu tin
Có 3 yêu cầu thiết yếu đối với một hệ thống giấu tin:
- Tính không nhìn thấy: là một trong 3 yêu cầu của bất kì 1 hệ giấu tin
nào. Tính không nhìn thấy là tính chất vô hình của thông tin nhúng trong
phương tiện nhúng.
- Tính mạnh mẽ: là yêu cầu thứ 2 của một hệ giấu tin. Tính mạnh mẽ là
khả năng chịu được các thao tác biến đổi nào đó trên phương tiện nhúng và các
cuộc tấn công có chủ đích.
- Khả năng nhúng: là yêu cầu thứ 3 của một hệ giấu tin. Khả năng nhúng
chính là số lượng thông tin nhúng được nhúng trong phương tiện chứa.
1.1.6. Môi trường giấu tin
1.1.6.1. Giấu tin trong ảnh
Giấu tin trong ảnh hiện đang rất được quan tâm. Nó đóng vai trò hết sức
quan trọng trong hầu hết các ứng dụng bảo vệ an toàn thông tin như: xác 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ả…
Một đặc điểm của giấu thông tin trong ảnh nữa đó là thông tin được giấu
một cách vô hình, nó như là cách truyền thông tin mật cho nhau mà người khác
không thể biết được bởi sau khi giấu thông tin chất lượng ảnh gần như không
thay đổi đặc biệt đối với ảnh màu hay ảnh xám.
1.1.6.2. Giấu tin trong audio
Khác với kỹ thuật giấu thông tin trong ảnh: phụ thuộc vào hệ thống thị
giác của con người – HSV (Human Vision System), kỹ thuật giấu thông tin

trong audio lại phụ thuộc vào hệ thống thính giác HAS (Human Auditory
System). Bởi vì tai con người rất kém trong việc phát hiện sự khác biệt giữa các
giải tần và công suất, có nghĩa là các âm thanh to, cao tần có thể che giấu đi
được các âm thanh nhỏ, thấp một cách dễ dàng.
Yêu cầu cơ bản và quan trọng nhất của giấu tin trong audio là đảm bảo
tính chất ẩn của thông tin được giấu đồng thời không làm ảnh hưởng đến chất
lượng của dữ liệu.

5


1.1.6.3. Giấu tin trong video
Cũng giống như giấu thông tin trong ảnh hay trong audio, 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, bản quyền tác giả…
Một phương pháp giấu tin trong video được đưa ra bởi Cox là phương
pháp phân bố đều. Ý tưởng cơ bản của phương pháp là phân phối thông tin giấu
dàn trải theo tần số của dữ liệu gốc.
1.1.6.4. Giấu thông tin trong văn bản dạng text
Giấu tin trong văn bản dạng text khó thực hiện hơn do có ít các thông tin
dư thừa, để làm được điều này người ta phải khéo léo khai thác các dư thừa tự
nhiên của ngôn ngữ. Một cách khác là tận dụng các định dạng văn bản (mã hoá
thông tin vào khoảng cách giữa các từ hay các dòng văn bản) => Kỹ thuật giấu
tin đang được áp dụng cho nhiều loại đối tượng chứ không riêng dữ liệu đa
phương tiện như ảnh, audio, video.
1.1.7. Một số đặc diểm của việc giấu tin trên ảnh
Một kỹ thuật giấu tin trên ảnh có một số đặc điểm sau:
- Tính vô hình của thông tin được giấu.
- Số lượng thông tin được giấu.
- Tính an toàn và bảo mật của thông tin.

- Ảnh môi trường đối với quá trình giải mã.
1.1.7.1. Tính vô hình của thông tin
Khái niệm này dựa trên đặc điểm của hệ thống thị giác của con người.
Thông tin nhúng là không tri giác được nếu một người với thị giác bình thường
không phân biệt được ảnh môi trường và ảnh kết quả (tức là không phân biệt
được ảnh trược và sau khi giấu thông tin). Trong khi image hiding
(Steganography) yêu cầu tính vô hình của thông tin ở mức độ cao thì
Watermarking lại chỉ yêu cầu ở một cấp độ nhất định. Chẳng hạn như người ta
áp dụng Watermarking cho việc gắn một biểu tượng mờ vào một chương trình
truyền hình để bảo vệ bản quyền.
1.1.7.2. Tỷ lệ giấu tin
Lượng thông tin giấu so với kích thước ảnh môi trường cũng là một vấn
đề cần quan tâm trong một thuật toán giấu tin. Rõ ràng là có thể chỉ giấu 1 bit
thông tin vào mỗi ảnh mà không cần lo lắng về độ nhiễu của ảnh nhưng như vậy
sẽ rất kém hiệu quả khi mà thông tin giấu có kích thước bằng Kb. Các thuật toán
6


đều cố gắng đạt được mục đích làm thế nào giấu được nhiều thông tin nhất mà
không gây ra nhiễu đáng kể.
1.1.7.3. Tính bảo mật
Thuật toán nhúng tin được coi là có tính bảo mật nếu thông tin được
nhúng không bị tìm ra khi bị tấn công một cách có chủ đích trên cơ sở có hiểu
biết đầy đủ về thuật toán nhúng tin và có bộ giải mãn (trừ khóa bí mật), hơn nữa
còn có được ảnh có mang thông tin (ảnh kết quả). Đây là một yêu cầu rất quan
trọng đối với ảnh image hiding.
1.1.7.4. Ảnh môi trƣờng đối với quá trình giải mã
Yêu cầu cuối cùng là thuật toán phải cho phép lấy lại được những thông
tin đã giấu trong ảnh mà không có ảnh môi trường. Điều này là một thuận lợi
khi ảnh môi trường là duy nhất nhưng lại làm giới hạn khả năng ứng dụng của

kỹ thuật giấu tin.

7


CHƢƠNG II: KỸ THUẬT GIẤU TIN TRÊN K BIT LSB CỦA ẢNH
2.1. Khái niệm bit LSB
Bit có trọng số thấp là bit có ảnh hưởng ít nhất tới việc quyết định tới
màu sắc của mỗi điểm ảnh, vì vậy khi ta thay đổi bit ít quan trọng của một điểm
ảnh thì màu sắc của mỗi điểm ảnh mới sẽ tương đối gần với điểm ảnh cũ. Như
vậy kỹ thuật tách bit trong xử lý ảnh được sử dụng rất nhiều trong quy trình giấu
tin. Việc xác định LSB của mỗi điểm ảnh trong một bức ảnh phụ thuộc vào định
dạng của ảnh và số bit màu dành cho mỗi điểm của ảnh đó. Ví dụ đối với ảnh 16
bit thì 15 bit là biểu diễn 3 màu RGB của điểm ảnh còn bit cuối cùng không
dùng đến thì ra sẽ tách bit này ra ở mỗi điểm ảnh để giấu tin, hoặc với ảnh 256
màu thì bit cuối cùng trong 8 bit biểu diễn một điểm ảnh được coi là bit ít quan
trọng nhất…
Ví dụ: Tách bit cuối cùng trong 8 bit biểu diễn mỗi điểm ảnh của ảnh 256
10011100

10010101

11100010

Hình 2.1: Mỗi điểm ảnh biểu diễn bởi 8 bit, bit cuối cùng được coi là bit ít quan
trọng nhất tức là bit bên phải nhất
Trong phép tách này ta coi bit cuối cùng là bit ít quan trọng nhất, thay đổi
giá trị của bit này thì sẽ thay đổi giá trị của điểm ảnh lên hoặc xuống đúng một
đơn vị, ví dụ như giá trị điểm ảnh là 234 thì khi thay đổi bit cuối cùng nó có thể
mang giá trị mới là 235 nếu đổi bit cuối cùng từ 0 thành 1. Với sự thay đổi nhỏ

đó ta hi vọng là cấp độ màu của điểm ảnh sẽ không bị thay đổi nhỉều
2.2. Phƣơng pháp giấu tin trên k bit LSB cổ điển
2.2.1. Mô tả phƣơng pháp
Với C là ảnh nguyên bản 8-bit màu xám, kích thước ×
điểm ảnh, có
C = { | 0 ≤ i ≤ , 0 ≤j ≤ , ={0, 1, 2, …, 255 }}
và M là thông điệp dài n bit biểu diễn dưới dạng:
M={ |0≤i<
{0,1}}
Giả sử rằng n-bit thông điệp bí mật M được nhúng vào k bit LSB ngoài
cùng bên phải của ảnh gốc C. Trước tiên, thông điệp bí mật M được sắp xếp lại
để tạo thành một hình ảnh ảo k-bit, biểu diễn M dưới dạng:
M‟ = { | 0 ≤ i < ,
{0,1…,
}}

8


Với n' = × . Việc ánh xạ giữa các n-bit thông điệp bí mật M = {
và thông điệp nhúng M‟ = { } có thể được định nghĩa như sau:

}


Thứ hai, tập hợp con điểm ảnh { ,
} được chọn từ ảnh gốc
C trong 1 chuỗi hành động liên tiếp nhau. Tiến trình nhúng hoàn tất bằng việc
thay thế k-LSBs của bởi
Theo toán học, một giá trị của điểm ảnh được

lựa chọn để lưu trữ k-bit thông điệp
được thay đổi khớp với điểm ảnh đã
giấu tin như sau:
Trong tiến trình tách, với ảnh đã giấu tin S, thông điệp nhúng có thể được
tách ra mà không đề cập đến ảnh gốc. Sử dụng cùng một trình tự như trong quá
trình nhúng, tập hợp các điểm ảnh { ,
} lưu trữ các bit thông điệp bí
mật được lựa chọn từ ảnh đã giấu tin. K-LSBs của các điểm ảnh được tách ra và
nối lại để tái tạo lại thông điệp bí mật. Trong toán học, việc nhúng thông điệp
bit mi có thể được khôi phục bằng:
Tiền xử lý thuật toán giấu và tách tin LSB cổ điển: để có thể thực hiện tốt
chương trình, trước hết cần bổ sung một số hàm thành phần với mục đích cài
đặt chương trình thuận lợi:
- Hàm chuyển đổi từ chuỗi kí tự sang số nhị phân.
- Hàm chuyển đổi từ chuỗi số nhị phân sang chuỗi kí tự.
2.2.2. Thuật toán giấu tin và tách tin trên k bit LSB cổ điển
2.2.2.1. Thuật toán giấu tin
- Đầu vào:
+ Ảnh gốc cấp xám.
+ Thông điệp bí mật.
+ Số bit LSB cần mã hóa (2 hoặc 4 bit).
- Đầu ra: Ảnh mang tin.
- Các bước thực hiện:
+ Bước 1: Biểu diễn ma trận điểm ảnh về dạng số thập phân với m
x n phần tử, rồi chuyển ma trận ảnh về mảng 1 chiều I với i phần tử, chuyển các
điểm ảnh về dạng nhị phân.
+ Bước 2: Biểu diễn thông điệp dưới dạng số nhị phân.
9



+ Bước 3: Cứ 8 bit ảnh tách bỏ số bit LSB ngoài cùng bên phải và
ghép phần còn lại với 2 bit nhị phân đầu của thông điệp, kết quả thu được đưa
về dạng thập phân rồi gán ngược lại vào I(i).
+ Bước 4: Thực hiện lại bước 3 cho đến khi lấy hết các bit của
chuỗi nhị phân thông điệp ghép với các bit ảnh. Chuyển đổi ảnh I từ mảng một
chiều về mảng 2 chiều m x n phần tử. Được ảnh mới đã giấu tin.
2.2.2.2. Thuật toán tách tin
- Đầu vào: Ảnh mang tin.
- Đầu ra: Ảnh đã tách tin và thông điệp mật.
- Các bước thực hiện:
+ Bước 1: Biểu diễn ma trận điểm ảnh về dạng số thập phân với m
x n phần tử. Chuyển đổi ma trận ảnh m x n phần tử về mảng 1 chiều I với i phần
tử.
+ Bước 2: Chuyển các bit ảnh về dạng nhị phân, cứ 8 bit ảnh tách
lấy 2 bit ngoài cùng bên phải. Đem ghép các kết quả này lại với nhau.
+ Bước 3: Kết quả thu được sử dụng hàm chuyển đổi từ chuỗi số
nhị phân về chuỗi kí tự. Sau khi lặp lại quá trình trên số lần bằng số lần duyệt, ta
thu được nội dung thông điệp.
Với trường hợp giấu trên 4 bit thông điệp làm tương tự, nhưng tách lấy 4
bit nhị phân đầu của ảnh ghép với 4 bit nhị phân thông điệp.
2.3. Phƣơng pháp giấu tin trên k-LSBs nâng cao (sử dụng khóa hoán vị)
2.3.1. Mô tả phƣơng pháp
Đây là phương pháp tối ưu khi k là rất lớn. Những hình ảnh C, và thông
điệp bí mật M sẽ được sắp xếp lại hình thành các khối bit (blk) C” và M” tương
ứng:
C” = { | 0 ≤ i ≤ 2blk – 1|
{0, 1, 2, … , 2blk – 1 }}
M”= { | 0 ≤i ≤ 2blk – 1 |
{0, 1, 2, …, 2blk – 1 }}
Theo toán học, quá trình mã khối sẽ được lấy bằng cách thực hiện trên bit XOR

điều hành mỗi khối C” và M” như sau:
if (cipheri= xor , 1≤ i ≤ length(M) in blk ( Mblk))
cipher = {cipher|1 ≤ i ≤ length(M”) in blk | cipheri={0, 1, 2, …, 2blk – 1}}
cipheri ={0, 1, 2, …, 2blk – 1}}
i = xor
end

10


Để có thể thực hiện tốt chương trình, trước hết cần bổ sung một số hàm
thành phần với mục đích cài đặt chương trình thuận lợi:
- Hàm mã hóa thông điệp.
- Hàm giải mã thông điệp.
- Với phương pháp giấu và tách tin nâng cao có quy đổi ta sử dụng bảng
sau để quy đổi:
STT

Kí tự

Mã quy đổi

STT

Kí tự

Mã quy đổi

1


A, a

000001

20

T, t

010100

2

B, b

000010

21

U, u

010101

3

C, c

000011

22


V, v

010110

4

D, d

000100

23

W, w

010111

5

E, e

000101

24

X, x

011000

6


F, f

000110

25

Y, y

011001

7

G, g

000111

26

Z, z

011010

8

H, h

001000

27


0

011011

9

I, i

001001

28

1

011100

10

J, j

001010

29

2

011101

11


K, k

001011

30

3

011110

12

L, l

001100

31

4

011111

13

M, m

001101

32


5

100000

14

N, n

001110

33

6

100001

15

O, o

001111

34

7

100010

16


P, p

010000

35

8

100011

17

Q, q

010001

36

9

100100

18

R, r

010010

37


„„

100101

19

S, s

010011
Bảng 1: Bảng quy đổi

11


2.3.2. Thuật toán giấu tin và tách tin trên k bit LSB nâng cao
2.3.2.1. Thuật toán giấu tin
- Đầu vào:
+ Ảnh gốc cấp xám.
+ Thông điệp bí mật.
+ Khóa (8 bit).
+ Số bit LSB cần mã hóa trên mỗi điểm ảnh (2 hoặc 4 bit).
- Đầu ra:
+ Ảnh mang tin.
+ Khóa.
+ Số bit thông điệp cần mã hóa.
- Các bước thực hiện:
+ Bước 1: Biểu diễn ma trận điểm ảnh về dạng số thập phân với m
x n phần tử. Chuyển đổi ma trận ảnh m x n phần tử về mảng 1 chiều I với i phần
tử.
+ Bước 2: Biểu diễn thông tin giấu dưới dạng chuỗi nhị phân.

+ Bước 3: Sử dụng một khóa 8 bit bất kỳ (khóa là kí tự, chuyển
khóa về dạng mảng như với thông điệp) đem mã hóa với chuỗi thông điệp bí
mật bằng phép XOR: cứ 8 bit khóa đem XOR với 8 bit đầu vào của thông điệp.
Thực hiện lại bước này cho đến khi nội dung thông điệp được mã hóa hết.
+ Bước 4: Thông điệp đã mã hóa đem giấu vào ảnh tương tự như
phương pháp thay thế k bit LSB cổ điển: Là tách lấy 6 bit đầu của bit ảnh đem
ghép với 2 bit đầu trong thông điệp rồi chuyển về dạng thập phân và gán ngược
lại vào ảnh.
+ Bước 5: Thực hiện bước 4 cho đến khi lấy hết các bit của chuỗi
nhị phân thông điệp để ghép với các bit ảnh. Chuyển đổi ảnh I từ mảng một
chiều về mảng 2 chiều m x n phần tử, được ảnh mới đã giấu tin.
2.3.2.2. Thuật toán tách tin
- Đầu vào:
+ Ảnh đã giấu tin.
+ Khóa (8 bit).
+ Số lần duyệt.
+ Số bit thông điệp cần mã hóa.
- Đầu ra:
+ Ảnh đã tách tin.
+ Thông điệp.
- Các bước thực hiện:
12


+ Bước 1: Biểu diễn ma trận điểm ảnh về dạng số thập phân với m
x n phần tử. Chuyển đổi ma trận ảnh m x n phần tử về mảng 1 chiều I với i phần
tử.
+ Bước 2: Chuyển các bit ảnh về dạng nhị phân, cứ 8 bit ảnh tách
lấy 2 bit ngoài cùng bên phải. Đem ghép các kết quả này lại với nhau.
+ Bước 3: Kết quả thu được sử dụng hàm chuyển đổi từ chuỗi số

nhị phân về chuỗi kí tự. Sau khi lặp lại quá trình trên số lần bằng số lần duyệt, ta
thu được nội dung thông điệp đã mã hóa.
+ Bước 4: Sử dụng hàm giải mã thực hiện giải mã thông điệp bằng
khóa 8 bit, ta thu được kết quả là nội dung gốc của thông điệp.
Trường hợp chuyển đổi thông điệp về bảng mã đã được quy ước sẵn:
Tương tự như trường hợp chuyển đổi kí tự về mã nhị phân của nó, nhưng ở đây
khi giấu tin ta sử dụng bảng quy đổi các kí tự và chữ số theo một chuẩn do
người lập trình tự định nghĩa. Đến bước tách ta lại quy đổi ngược lại về dạng kí
tự và số ban đầu.
2.4. Ví dụ minh họa
2.4.1. Trƣờng hợp giấu và tách tin LSB cổ điển
2.4.1.1. Giấu tin
Giả sử ta có 4 điểm ảnh đầu tiên như sau:
123
197
213
Chuyển các điểm ảnh về dạng nhị phân:
01111011 11000101 11010101

255

11111111

Thông điệp bí mật: chữ „a‟ có mã ASCII là 97, biểu diễn dưới dạng nhị
phân như sau: 01100001
Cứ 8 bit ảnh, ta lấy 6 bit đầu của điểm ảnh (từ vị trí I0 đến I5) ghép với
2 bit thông điệp (từ vị trí a0 đến a1) sẽ được:
01111001 11000110 11010100 11111101
2.4.1.2. Tách tin
Lấy 2 bit ngoài cùng bên phải trong mỗi điểm ảnh mới:

01111001 11000110 11010100 11111101
Ghép lại với nhau được chuỗi nhị phân thông điệp, chính là chữ “a”:
0110001

13


2.4.2. Trƣờng hợp giấu và tách tin LSB nâng cao
2.4.2.1. Giấu tin
Giả sử ta có 4 điểm ảnh đầu tiên như sau:
123
197
213
Chuyển các điểm ảnh về dạng nhị phân:
01111011 11000101 11010101

255

11111111

Thông điệp bí mật: chữ „a‟ có mã ASCII là 97, biểu diễn dưới dạng nhị
phân như sau: 01100001
Nhập khóa, cũng là 1 kí tự 8 bit, giả sử là chữ „b‟, có dạng nhị phân như
sau: 01100010
Mã hóa thông điệp chính là dùng phép XOR(a, b) sẽ được: 00000011
Cứ 8 bit ảnh, ta lấy 6 bit đầu của điểm ảnh ghép với 2 bit thông điệp đã
mã hóa sẽ được:
01111000 11000100 11010100 11111111
2.4.2.2. Tách tin
Lấy 2 bit ngoài cùng bên phải trong mỗi điểm ảnh mới:

01111000 11000100 11010100 11111111
Ghép lại với nhau được chuỗi nhị phân thông điệp nhưng đã bị mã hóa:
0000011
Sử dụng hàm mã hóa để lấy lại thông điệp gốc M, bằng cách XOR(M, b)
ta được nhị phân của chữ „a‟: 01100001
Trường hợp giấu và tách tin LSB nâng cao có quy đổi, tương tự như trên
nhưng không chuyển chữ „a‟ về dạng nhị phân mà a => 000001.

14


CHƢƠNG III: CÀI ĐẶT THỬ NGHIỆM
3.1.

Xây dựng CSDL lƣu trữ ảnh Bitmap.
- CSDL lưu trữ ảnh Bitmap:

Hình 3.1: CSDL lưu trữ ảnh bitmap
3.2.

Xây dƣng phần mềm trên C#.

3.2.1. Cấu trúc ảnh BITMAP
Ảnh BITMAP là định dạng ảnh do Microsoft đề xuất , có phần mở rộng
là BMP. Ảnh bitmap được chia thành ba dạng: ảnh nhị phân (ảnh đen trắng),
ảnh đa mức xám , ảnh màu.
Ảnh đen trắng: là ảnh mà mỗi điểm ảnh chỉ thể hiện một trong hai trạng
thái 0 và 1 để biểu diễn trạng thái điểm ảnh đen hay trắng.

15



Hình 3.2: Ví dụ về ảnh đen trắng
Ảnh đa cấp xám: là ảnh mà mỗi điểm ảnh được biểu diễn bởi một giá trị
và đó là cường độ sáng của điểm ảnh.

Hình 3.3: Ví dụ về ảnh đa cấp xám
Ảnh màu: là ảnh mà mỗi điểm ảnh được biểu diễn bởi ba đại lượng R, G,
B. Số lượng màu có thể của loại ảnh này lên tới 2653 màu khác nhau, nhưng số
lượng màu trên thực tế của một ảnh nào đó thường khá nhỏ. Để tiết kiệm bộ nhớ
với các ảnh có số lượng màu nhỏ hơn 256 thì màu các điểm ảnh được lưu trữ
dưới dạng bảng màu. Với ảnh có số màu lớn thì các điểm ảnh không tổ chức
dưới dạng bảng màu, khi đó giá trị của các điẻm ảnh chính là giá trị của các
thành phần màu R, G, B. Với ảnh có số lượng màu lớn, tùy theo chất lượng ảnh
mà quyết định số bit để biểu diễn cho mỗi màu thường là 24 bit, hoặc 32 bit.
Với ảnh 24 bit mỗi thành phần màu được biểu diễn bởi một byte (8 bit).

Hình 3.4: Ví dụ về ảnh màu
16


Ảnh bitmap đựợc lưu trữ dưới dạng nhị phân, một tệp dạng bitmap được
chia thành các phần cơ bản như :
- Phần tiêu để tệp (Bitmap header): Mô tả thông tin chung về tệp định
dạng bitmap, độ lớn của phần này cố định với mọi tệp bitmap.
- Thông tin về ảnh (Bitmap Infor): Mô tả thông tin về ảnh được lưu trữ,
độ lớn của phần này cố định.
- Bảng màu (Palette Table): Bảng màu của ảnh bitmap, độ lớn của phần
này có thể bằng không ( không có bảng màu) đối với ảnh đen trắng và ảnh màu
có số lượng màu lớn hơn 256 màu.

- Vùng dữ liệu (Data): Thông tin về từng điểm ảnh , độ lớn của phần này
phụ thuộc vào kich thước ảnh. Phần Data lưu trữ ảnh theo hướng từ dưới lên
trên và từ trái qua phải.
Thứ tự được lưu trữ trong bộ nhớ như sau: Bitmap Header → Bitmap
Infor → Palette Table → Data.
3.2.2. Cài đặt chƣơng trình
 Xây dựng 1 class có tên là Crypto.cs chứa 2 phương thức
1. 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 để tạo ra mảng byte là
cái ta thực sự đem giấu vào trong bức ảnh.
2. 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 để tạ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.

17


 Xây dựng 1 class có tên là LSB.CS chứa 2 phương thức
1. 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.
2. 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 đó. ết quả trả về là 1 mảng các byte mà ta đã giấu trong thủ
tục Encode ở trên.
 Kết quả:
- Giao diện giấu tin:

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

18


- Chọn ảnh cần giấu tin có kích cỡ 512*512:

Hình 3.6: Giao diện ảnh cần giấu tin

19


- Nhập tin nhắn cần giấu “Ptit-Báo Cáo Môn An Toàn Mật Mã-Lớp
D11ATTT” và mật khẩu là D11ATTT. Nhấn OK chọn tên file và nơi lưu file
ảnh sau khi giấu:

Hình 3.7: Giao diện chọn ảnh cần giấu tin

20


- Quá trình giấu tin hoàn tất, ảnh sau khi giấu tin nằm bên phải:


Hình 3.8: Giao diện giấu tin hoàn tất
- Giao diện tách tin:

Hình 3.9: Giao diện tách tin

21


- Chọn ảnh cần tách tin nhập mật khẩu ”D11ATTT” nhấn OK quá trình
tách tin hoàn tất ta được tin nhắn ban đầu:

Hình 4.0: Giao diện quá trình tách tin hoàn tất

22


KẾT LUẬN
Bài báo cáo đã giả quyết tất cả những yêu cầu được đặt ra. Cụ thể đã thực
hiện được các công việc:
- Nghiên cứu tổng quan kỹ thuật giấu tin trong ảnh;
- Tìm hiểu kỹ thuật giấu tin trên k bit LSB của ảnh.;
- Xây dựng CSDL lưu trữ ảnh bitmap;
- Tìm hiểu cấu trúc ảnh bitmap;
- Xây dựng phần mềm giấu và tách tin trên C#.

23


TÀI LIỆU THAM KHẢO

[1] Nguyễn Diễm Hương, Kỹ thuật giấu tin trên k bit LSB của ảnh, Trường
đại học dân lập Hải Phòng, 2012.
[2] Nguyễn Xuân Huy, Trần Quốc Dũng, Giáo trình giấu tin và thuỷ vân
ảnh, Trung tâm thông tin tư liệu, TTKHTN - CN 2003.
[3] Ingemar Cox, Jeffrey Bloom, Matthew Miller, Ton Kalker, Jessica
Fridrich, Digital Watermarking and Steganography, Morgan Kaufmann, 2008.

24


×