Tải bản đầy đủ (.docx) (5 trang)

Tiểu luận GIẤU TIN TRONG ẢNH MÀU HƯỚNG CẢI TIẾN THUẬT TOÁN CPT (Có Source 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 (154.98 KB, 5 trang )

GV hướng dẫn : ĐÀO THANH TĨNH Ngô Thị Tiến. Lớp TH1

THUYẾT MINH CHỦ ĐỀ :
GIẤU TIN TRONG ẢNH MÀU HƯỚNG CẢI TIẾN THUẬT TOÁN CPT
1. Giới thiệu
Với sự phát triển ngày càng cao của Công nghệ thông tin, phát sinh nhiều mối
đe dọa. 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 mã hóa ra đời và đã chứng minh được hiệu quả của nó. Và một trong
phương pháp bảo mật mới nhất là giấu tin.
Giấu tin 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 vào đối
tượng vỏ sẽ khó xác định được thông tin có giấu trong đó hay không.
Có nhiều cách thức tiến hành giấu thông tin trong ảnh bảo mật thông tin và có
tính hiệu quả cao, tuy nhiên không phải phương pháp nào cũng áp dụng tốt, đảm
bảo tính toàn vẹn của thông tin được giấu cũng như không làm thay đổi ảnh gốc
khi có một sô tác động trong việc thay đổi định dạng ảnh, nén ảnh …
Áp dụng thuật toán CPT ( Chen- Pan- Tseng) giấu tin trong khối bít áp dụng
cho ảnh đen trắng. Bài viết trình bày hướng phát triển đề xuất thuật toán cho ảnh
màu và ảnh đa cấp xám bằng cách sử dụng các bít ít quan trọng LSB (Least
Significant Bit) của ảnh.
2. Quy trình thực hiện
- Với mỗi byte của điểm ảnh ( có thể là ảnh xám hoặc các loại ảnh màu) trích
ra bít ít có giá trị nhất, hay còn gọi là bit LSB là các bít khi bị thay đổi giá trị
hầu như không làm ảnh hưởng tới chất lượng của ảnh gốc. Trong bài này sử
dụng bít thứ 7.
- Chuyển đổi tất cả thông tin cần giấu vào ảnh thành chuỗi dạng bít.
- Tạo thành các khối ma trận nhị phân ( Fi ) từ tập hợp bit LSB với kích
thước 4x4 (mặc định sẵn ) .
- Sinh ngẫu nhiên các ma trận khóa W, K (các ma trận K là khác nhau trong
mỗi lần giấu ) , có kích thước bằng kích thước của Fi .
- Thực hiện giấu tin vào từng khối Fi theo thuật toán CPT.


- Trả các bit LSB về ảnh gốc để tạo thành ảnh mới đã giấu tin.
1
GV hướng dẫn : ĐÀO THANH TĨNH Ngô Thị Tiến. Lớp TH1

3. Thuật toán CPT
- Input :
 Ma trận điểm ảnh Fi có kích thước 4x4,
 r là số bít có thể giấu vào Fi ( r thỏa mãn điều kiện 2
r
< 4x4 -1,
hay r=3).
 Ma trận nhị phân K (ma trận khóa) có cùng kích thước với Fi
(4x4) được sinh ngẫu nhiên trong mỗi lần giấu tin.
 Ma trận trọng số W chứa các phần tử là số nguyên, có giá trị từ
1…2
r
– 1 xuất hiện ít nhất một lần trong W. W mặc định trong
chương trình :

 Lượng thông tin cần dấu bi = b
1
b
2
b
3
 Độ chênh lệch trọng số d.
- Out put :
 Ma trận ảnh Fi

đã chứa thông tin giấu vào

Thuật toán sẽ thực hiện giấu r bít thông tin vào khối ma trận ảnh Fi bằng cách thay
đổi nhiều nhất 2 bít của Fi và Fi được biến đổi thành Fi

sao cho luôn thõa mãn
điều kiện :
SUM ((Fi K) W) mod 2
r
= b
1
b
2
b
3
- Algorithm :
 Bước 1 : Tính array3 = (Fi K)
 Bước 2 : Tính array4 = SUM ((Fi K) W)
 Bước 3 : Xác định các tập vị trí
S
w
= {(x,y)| (W(x,y) = w ^ (Fi K)=0) V (W(x,y) = 2
r
- w ^ (Fi K)=1)}
Trong đó : w lấy các giá trị 1,2…,2
r
– 1.
 Bước 4 : d= b
1
b
2
b

3
- SUM ((Fi K) W) mod 2
r
- Nếu d = 0 ta coi như đã giấu được lượng thông tin bi và khối Fi. Do đó,
không cần thay đổi gì trong ma trận Fi. Muốn lấy lại bi từ Fi đã chứa bi ta
chỉ cần :
bi= SUM ((Fi K) W) mod 2
r
2
GV hướng dẫn : ĐÀO THANH TĨNH Ngô Thị Tiến. Lớp TH1

- Nếu d>0 :
 Th1 : Nếu chọn được (Fi K)[i,j]=0 mà W[i,j]=d , cần thay đổi bít tại
[i,j] trong Fi , Fi[i,j] = 1 để “ SUM ((Fi K) W) mod 2
r
“ tăng lên
một lượng d. Dừng thuật toán.
 Ngoài ra, nếu không xảy ra Th1 mà chọn được (Fi K)[i,j]=1 và
W[i,j] = h sao cho h = 2
r
– d. Tiến hành cần thay đổi bít tại [i,j] trong
Fi Fi[i,j] = 0 để “ SUM ((Fi K) W) mod 2
r
“ giảm đi một lượng
h. Dừng thuật toán.
 Khi 2 trường hợp trên không xảy ra ta xét tới việc cần thay đổi 2 bít
trong ma trận ảnh Fi :
• Nếu (Fi K)[i,j] = 0, W[i,j] = t & (Fi K)[n,m] = 1 ,
W[n,m] = h sao cho h = t - d. Tiến hành đổi Fi [i,j] = 1, Fi
[n,m] = 0 . Fi


tạo ra sau khi đổi các bít trên Fi. Dừng thuật
toán.
• Nếu (Fi K)[i,j] = 1, W[i,j] = t & (Fi K)[n,m] = 1 ,
W[n,m] = h sao cho h + t = 2
r
– d . Tiến hành đổi Fi [i,j] = 0,
Fi [n,m] = 0 . Fi

tạo ra sau khi đổi các bít trên Fi. Dừng thuật
toán.
• Nếu (Fi K)[i,j] = 0, W[i,j] = t & (Fi K)[n,m] = 0 ,
W[n,m] = h sao cho h + t = d . Tiến hành đổi Fi [i,j]=1,
Fi[n,m]=1 . Fi

tạo ra sau khi đổi các bít trên Fi. Dừng thuật
toán
- Tương tự : Nếu d<0 :
 Th1 : Nếu chọn được (Fi K)[i,j] = 1 mà W[i,j] = |d| , cần thay đổi bít
tại [i,j] trong Fi , Fi[i,j] = 0 để “ SUM ((Fi K) W) mod 2
r
“ giảm
đi một lượng h= - d (h>0) . Dừng thuật toán .
 Ngoài ra, nếu không xảy ra Th1 mà chọn được (Fi K)[i,j] = 0 và
W[i,j] = h sao cho h = 2
r
– |d|. Tiến hành cần thay đổi bít tại [i,j] trong
Fi Fi[i,j] = 1 để “ SUM ((Fi K) W) mod 2
r
“ tăng lên một lượng

h. Dừng thuật toán.
 Khi các điều kiện trên không thõa mãn ta xét tới việc cần thay đổi 2
bít trong ma trận ảnh Fi :
• Nếu (Fi K)[i,j] = 0, W[i,j] = t & (Fi K)[n,m] = 1 ,
W[n,m] = h sao cho h = |d| + t . Tiến hành đổi Fi [i,j] = 1,
Fi[n,m] = 0 . Fi

tạo ra sau khi đổi các bít trên Fi. Dừng thuật
toán.
3
GV hướng dẫn : ĐÀO THANH TĨNH Ngô Thị Tiến. Lớp TH1

• Nếu (Fi K)[i,j] = 1, W[i,j] = t & (Fi K)[n,m] = 1 ,
W[n,m] = h sao cho h = |d| - t. Tiến hành đổi Fi [i,j] = 0, Fi
[n,m] = 0 . Fi

tạo ra sau khi đổi các bít trên Fi. Dừng thuật
toán.
• Nếu (Fi K)[i,j] = 0, W[i,j] = t & (Fi K)[n,m] = 0 ,
W[n,m] = h sao cho h + t = 2
r
–|d| . Tiến hành đổi Fi [i,j] =1,
Fi [n,m] = 1 . Fi

tạo ra sau khi đổi các bít trên Fi. Dừng thuật
toán.
4. Lấy thông tin ra khỏi ảnh.
- Lấy lại các bít LSB từ ImageResult, tạo thành từng ma trận Fi

.

- Lấy các ma trận khóa K,W đã sử dụng giấu tin để giải mã.
- Thực hiện tính bi = SUM ((Fi

K) W) mod 2
r
- Lưu bi dạng mảng 3 bít.
- Copy tất cả bi vào mảng lớn, biến đổi thành dạng byte chứa giá trị ASCCI
của kí tự.
- Hiển thị thông tin đã giấu.
5. Các phương thức và thuộc tính trong chương trình.
Lớp Class_Image : // thao tác với ảnh
 public int getktString // đưa ra kích thước dạng byte
của thông tin.
 public void Gray(Bitmap ImageInput)://tạo ảnh xám
 public void LSB(Bitmap ImageInput, string xau): //giấu
ảnh vào bít LSB
 public bool[] ChangeString(string xau): //đưa ra mảng
chứa bít thông tin
 BitArray Divide(int temp) ://trả về mảng nhị phân 8bit
 byte UnchangeString(BitArray a)://trả về giá trị của
từng byte.
 byte [] Alter(string beginString, byte[] value): //trả
về mảng byte đã giấu tin vào bít LSB.
 int NumberByte(Bitmap ImageInput)://kiểm tra số byte
của ảnh.
 int[] ArrayLSB( byte[] value)://tạo mảng chứa các bít
LSB của ảnh
 int[,] CPT(int[,] matrix, int gtInformation)// thuật
toán CPT.
 int[,] matrixW(): //tạo ma trận W

 int[,] matrixK(): //tạo ma trận K
 public void hideCPT(Bitmap Input, string xau)://giấu
ảnh theo CPT
 public byte [] AppearCPT(Bitmap Input)://lấy thông tin
4
GV hướng dẫn : ĐÀO THANH TĨNH Ngô Thị Tiến. Lớp TH1

 public int[] mang3bit(int b)://tạo mảng 3bit với đầu
vào là số nguyên.
6. Một số chú ý
- Ưu điểm :
 Do sử dụng bít thông tin ít giá trị để giấu nên ảnh sau khi có thông tin
không bị biến đổi nhiều.
 Tính bảo mật của thông tin giấu trong ảnh cao phụ thuộc vào hình
thức lấy bít LSB và các ma trận khóa K, W.
 Với bất kì ảnh nào cũng thực hiện được mà không cần quan tâm tới
cấu trúc của ảnh như thế nào.
- Nhược điểm :
 Số lượng thông tin giấu vào ảnh còn ít, trung bình 16 byte ảnh cho
giấu 3 bít thông tin.
 Thông tin dễ bị mất hoặc không còn chính xác khi có bất kì tác động
gì vào ảnh như nén ảnh …
7. Hướng cải tiến trong đồ án
- Hoàn thiện hơn chương trình.
- Bít thông tin sử dụng nằm trong mặt phẳng cao.
- Giấu thông tin dạng file văn bản, dạng Image.
- Không sử dụng tới mặt phẳng bít, áp dụng thuật toán trên ngay từng điểm
ảnh.
- Kiểm tra tính toàn vẹn của thông tin được giấu trong ảnh khi biến đổi ảnh đó
thành ảnh xám và biến đổi ngược trở lại .

5

×