ĐẠI HỌC QUỐC GIA TP HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ CÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
BÁO CÁO AN TOÀN MẠNG
ĐỀ TÀI: TÌM HIỂU VÀ VIẾT CHƯƠNG TRÌNH ẨN DỮ LIỆU
1
Mục Lục
2
I.GIỚI THIỆU
Trong thời đại mà công nghệ thông tin và internet phát triển như hiện
nay,việc trao đổi thông tin,dữ liệu qua mạng là chiếm 1 phần lớn trong sự phát
triển ấy. vấn đề bảo mật thông tin đóng 1 vai trò cực kỳ quan trọng .có nhiều
các giải pháp bảo mật thông tin khi trao đổi trong đó phổ biến nhất là mã hóa dữ
liệu trước khi gửi.
Có nhiều các phương pháp, giải thuật mã hóa hiệu quả và độ an toàn cao
tuy nhiên phương pháp mã hóa sẽ gây tò mò,tăng sự hiếu kỳ đối với những kẻ
muốn đánh cắp thông tin,vì vậy có 1 giải pháp khác được đưa ra là ẩn giấu dữ
liệu cần trao đổi dưới dạng 1 loại dữ liệu khác qua đó đánh lừa được những
người xem không mong muốn.
II. STEGANOGRAPHY
Ngày nay, trên mạng Internet, những bức tranh hay bản nhạc có vẻ ngoài
bình thường (như bức ảnh trên) có rất nhiều, nhưng bên trong nó có thể ẩn chứa
những thông tin hoàn toàn bí mật. Ưu thế này khiến Steganography ngày càng
trở nên phổ biến và được ứng dụng rộng rãi. Ngoài lĩnh vực an toàn dùng để che
giấu sự tồn tại của thông tin, nó còn được dùng trong công nghiệp giải trí và
phần mềm như một kỹ thuật đánh dấu (watermarking) trên các hình ảnh, âm
nhạc hay phần mềm số để bảo vệ bản quyền tác giả, ngăn chặn mạo nhận, chống
sao chép, xác thực nội dung, cho phép giám sát hay lần ngược dấu vết các bản
sao bất hợp pháp.
Trong nhiều trường hợp, kỹ thuật này còn được dùng để giám sát sự quảng
bá. Ví dụ, bằng cách nhúng các dấu hiệu đánh dấu vào tệp hình ảnh cần quảng
cáo và dùng một màn hình giám sát tự động, khi đó sẽ kiểm tra được liệu thông
tin cần quảng cáo có được các cơ quan phát thanh truyền hình quảng bá đủ thời
lượng như đã thỏa thuận hay không.
3
Ngoài những ứng dụng tích cực, Steganography cũng bị những kẻ có ý đồ
xấu lợi dụng. Hãy hình dung trong một đĩa nhạc “The wall” của Pink Floyd
được nhúng các kế hoạch tuyệt mật bằng phương pháp Steganography, đĩa sẽ
được chuyển qua biên giới an toàn mà không bị phát hiện. Rồi các kế hoạch này
sẽ được truyền công khai trên Internet dưới những tệp hình ảnh hay âm thanh
bình thường, lẫn trong hàng triệu thông tin đang lưu chuyển trên nó.
Steganography là một phương tiện che khuất dữ liệu mà các thông điệp bí
mật được ẩn bên trong các tập tin máy tính như hình ảnh, tập tin âm thanh,
video và thậm chí cả các file thực thi. Không có ai ngoại trừ người gửi và người
nhận sẽ nghi ngờ sự tồn tại của thông tin ẩn trong đó. Steganography cũng có
thể liên quan đến việc sử dụng mật mã, nơi các tin nhắn được mã hóa đầu tiên
trước khi nó được giấu trong một tập tin khác. Nói chung, các thông điệp xuất
hiện như một cái gì đó khác như hình ảnh, âm thanh hoặc video để truyển dữ
liệu bí mật vẫn không bị nghi ngờ.
III.ẢNH BITMAP
1. Ảnh BITMAP là gì ? đặc điểm
-Trong đồ họa máy tính,ảnh bitmap hay window bitmap do microsoft đề
xuất ,là 1 tập tin hình ảnh khá phổ biến, các tập tin bitmap thường được lưu
với phần mở rộng là .BMP hay .DIB
-đặc điểm nổi bật nhất của ảnh BMP là ảnh không được nén với bất kì thuật
toán nào.khi lưu ảnh,các điểm ảnh được lưu trực tiếp vào tập tin- một điểm
ảnh sẽ được lưu bằng 1 hay nhiều byte tùy thuộc vào giá trị của ảnh.do đó ,1
hình ảnh được lưu dưới dạng bmp có kích thước rất lớn,gấ nhiều lần so với
các ảnh được nén.
2.
Cấu trúc của tập tin ảnh BITMAP
Cấu trúc tập tin ảnh bmp gồm 4 phần:
Bitmap header( 14 byte):giúp nhận dạng tập tin bitmap
Bitmap information(40 byte):lưu các thông tin chi tiết giúp hiển thị hình
ảnh.
Color palette(4 *X byte) với 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 hình ảnh.
4
Bitmap header: có độ dài cố định là 14 byte.
Bitmap information:
5
Color palette (bảng màu):là bảng lưu trữ màu của bmp.bảng này sẽ có giá
trị bằng 0 nếu ảnh có số màu lớn hơn 256 hay ảnh đen trắng. Với những ảnh
có số màu nhỏ hơn hoặc bằng 256 thì sẽ gồm 1 bộ có kích thước 4 byte xếp
liền nhau theo cấu trúc Blue-Green-Red và 1 byte dự trữ.kích thước của
vùng palette = 4* x với x là số màu. Vì palette màu của màn hình là R-G-B
nên khi đọc palette màu của bmp thì ta phải chuyển đổi cho phù hợp.
Với ảnh 24 bit thì color table =0
ảnh 8 bit thì color table=256*4 byte.4 bit là 16*4 bytes.
Bitmap data: vùng dữ liệu ảnh là giá trị của điểm ảnh,kích thước của vùng
dữ liệu ảnh phụ thuộc và độ rộng,chiều cao và kiểu ảnh.
Với ảnh 8 bit: Size=width*height.
ảnh có số màu lớn hơn 256: size=width*height*số bit trên 1 điểm ảnh.
ảnh 24 bit:
mỗi điểm ảnh chiếm 3 byte mô tả 3 thành phần red,green,blue.
Như vậy số lượng màu tối đa: 256^3=16.777.216
6
Ví dụ:
ảnh 256 màu(8 bit):
-mỗi điểm ảnh chiếm 1 byte,chỉ số hiệu màu của điểm ảnh này.
Số hiệu màu của các điểm ảnh:0,1,2,…255.
Màu của điểm ảnh được mô tả trong bảng màu.giả sử byte mô tả điểm ảnh
có giá trị là b và bảng màu được chứa trong mảng P thì thành phần các màu
của điểm ảnh này là P[b].R,P[b].G,p[b].B.
Ví dụ: 1 điểm ảnh có số hiệu màu là 20, thì trong bảng màu sẽ được lưu là
P[20].R, P[20].G, P[20].B
IV.TÌM HIỂU FILE WAV
1. Định dạng wav
Dữ liệu âm thanh trong tập tin WAV là dạng dữ liệu âm thanh không
nén(RAW data) dựa trên định dạng mã hóa PCM (Pulse Code Modulation).
7
Caáu truùc cuûa Wave File thuoäc vaøo lôùp file ñöôïc söû duïng bôûi caùc
haøm Multimedia cuûa Windows: ñoù laø RIFF FILE. RIFF laø chuõ vieát
taét cuûa Resource Interchange File Format (daïng file trao ñoåi taøi
nguyeân). Moät RIFF file goàm moät hoaëc nhieàu loaïi chunks, trong moãi
chunk laïi chöùa con troû chæ ñeán chunk keá tieáp.
Định dạng WAV có ưu điểm là ấu trúc đơn giản , chất lượng âm thanh được
bảo toàn , nhưng
nhược điểm là dùng lượng file khá lớn. Nếu được lấy mẫu với tần số 44.1
kHz
(44100 lần/giây), độ phân giải 16 bit (tương đương với chất lượng CD) thì 1
phút âm
thanh sẽ tiêu tốn tới 10 MB , nghĩa là một bài hát khoảng 5 phút sẽ mất dung
lượng
50MB ổ cứng.
2.
Cấu trúc tập tin wav.
Tập tin wav có độ dài phần header là 44 byte, Phần dưới đây liệt kê các chunk
và nội dung của chúng theo thứ tự: vị trí (từ byte ?? tới byte ??), kích thước (??
bytes) và mô tả.
•
RIFF chunk
Vị trí
0-3
Giá trị
“RIFF”
Mô tả
Cho biết file là 1 riff
file
8
4-7
8-11
•
•
Kích thước file
“WAVE”
Luôn luôn là chuỗi
“WAVE”
FORMAT chunk
12-15
“fmt ”
16-19
16
20-21
22-23
1
2
24-27
44100
28-31
176400
32-33
4
34-35
16
Chuỗi fmt, ký tự cuối là
dấu khoảng trắng, mã
ASCII 32
Kích thước FORMAT
chunk, mặc nhiên là 16.
Kiểu của định dang(PCM)
Số kênh-1 là mono,2 là
stereo
Tần số lấy mẫu- Các giá
trị phổ biến là 44.100
(CD), 48000 (DAT).
Sample Rate = Số mẫu
trên mỗi giây, hoặc Hertz.
Số byte dữ liệu trên 1
giây(Sample Rate *
BitsPerSample *
Channels) / 8
Số byte trong một mẫu
trích. (BitsPerSample *
Channels)
Số bit trên 1 mẫu(chiều
sâu bit)
DATA chunk
36-39
“data”
40-43
File size
44 – hết
data
Lưu chuỗi data,cho biết
phần tiếp theo sẽ là dữ
liệu âm thanh.
Kích thước dữ liệu âm
thanh.
Dữ liệu âm thanh.
Dữ liệu trên tập tin WAVE tuân theo quy tắc Little-endian.
Thí dụ, ta có tần số trích mẫu bằng 44100 Hz. Giá trị 4 bytes, hệ thập lục
phân của nó là 0x0000AC44 (mỗi cặp số là một byte). Trên tập tin, con
9
số này sẽ được lưu theo thứ tự: 44 AC 00 00. Như vậy gọi là Littleendian.(Kiểu sắp xếp bình thường gọi là Big-endian.)
Về cơ bản các file wave thường có cấu trúc các chunk như trên,nghĩa là
đều có các chunk RIFF,FORMAT,DATA tuy nhiên thực tế thì có nhiều
file wav mà các chunk fmt không phải luôn cùng kích thước,chúng có thể
là 1 trường hợp của WAVEFORMATEX có thêm các byte ở cuối.vì vậy
tốt nhất là nên kiểm tra trường subchunk1 size để biết chính xác kích
thước của trường này.cũng cần phải lưu ý rằng data chunk không nhất
thiết là ở ngay sau format chunk, 1 wav file thướng có nhiều hơn 1 frm
chunk và 1 data chunk vì vậy trong demo nhóm sẽ tìm trong file wav
chuỗi “data” từ đó xác định trường dữ liệu âm thanh ở đâu để có thể giấu
thông tin vào đó.
10
V.KỶ THUẬT GIẤU TIN TRONG ẢNH
1. kỹ thuật substitution-sự thay thế.
-phương pháp này sử dụng việc thay thế các thông tin ít quan trọng trong
việc quyết định nội dung của file gốc,và dữ liệu được thay thế những phần
đó ít gây ảnh hưởng đến chát lượng file chứa gốc.
Mô hình thuật toán:
Mô hình thuật toán Substitution
Ưu điểm của kỹ thuật này là file chứa gốc sau khi giấu tin thì kích thước
không thay đổi=> tránh việc bị nghi ngờ dẫn đến lấy cắp thông tin.
Nhược điểm là làm giảm chất lượng của file chứa gốc ban đầu ,số lượng tin
giấu được cũng bị hạn chế do phụ thuộc vào kích thước file chứa,số bít ít
quan trọng của file chứa.
2.
kỹ thuật giấu tin trong ảnh sử dụng các bít LSB.
11
-nằm trong số các kỹ thuật substitution thì kỹ thuật sử dụng các bít có trọng
số thấp nhất (Least significant bit) là phổ biến nhất.với kỹ thuật này thì nó
thay thế các bit được coi là ít quan trong nhất ở các file ảnh chứa gốc.và việc
thay thế được tiến hành thei trình tự số lượng byte nhất định.
-kỹ thuật này ít ảnh hưởng đến file chứa gốc,với file ảnh thì nó ít ảnh hưởng
đến các pixel.
Ví dụ:
Màu :
0 205(11001101) 0
0 204(11001100) 0
Một ví dụ với ảnh bmp 24 bit như đã nói ở trên thì việc giấu 1 chữ cái “a”
có thể tiến hành như sau: chữ a trong mã ascii là 97 và giá trị nhị phân là
01100001-có 8 bit vì vậy cần 8 byte ảnh để chứa được chữ cái a này theo như
thuật toán LSB.8 byte ảnh sau khi giấu chữ a sẽ như sau:
10010010
01010011
10011011
11010010
10001010
00000010
01110010
00101011
Và để lấy lại thông tin giấu thì ta tiến hành đọc 8 bit LSB của các byte
tương ứng để tái tạo lại thành 01100001 và đổi lại thành ký tự “a”.
Ta có thể thấy được luôn luôn có ít nhiều nhất là 50% số bit trùng nhau
giữa thông tin cần giấu và file chứa gốc do đó file chứa gốc ít bị ảnh hưởng về
chất lượng.
12
VI.DEMO VÀ SOURCE CODE
1. Giao diện chính của chương trình.
-
Chương trình được viết bằng ngôn ngữ C# và công nghệ WPF.
Chương trình gồm 4 khung chính:
1. Khung 1: chứa File wav hoặc .bmp , các file này sẽ được ẩn bên trong các dữ liệu
chúng ta muốn giấu.
- Một textbox để hiển thị đường dẫn file.
- Một button để dẫn đến file cần mở.
- Một Picture box để hiện hình ảnh.
2. Khung 2: chứa file đã được phục hồi-là dữ liệu mà chúng ta muốn giấu
- Một Picture box để hiện hình ảnh.
3. Khung 3: chứa dữ liệu chúng ta muốn giấu.
- 2 radio button để cho phép lựa chọn loại dữ liệu muốn giấu: text hay hình ảnh.
- textbox để nhập pass word.
- textbox để nhập text cần giấu.
- Các button Your Picture để chọn hình ảnh cần giấu,kế bên là textbox hiển thị hình
ảnh cần giấu. hình ảnh này sẽ được hiển thị ở khung 2.
13
- Các button giấu thông tin, khôi phục thông tin có chúc năng như tên gọi của chúng.
4. Khung 4: gồm 1 picture box để hiển thị hình ảnh sau khi đã giấu dữ liệu vào file ở
khung 1.
2. MỘT SỐ CODE TIÊU BIỂU.
-Hàm mã hóa: hàm này có liên quan trực tiếp đến giải thuật LSB. Hàm này nằm trong class HideData.
private void Mahoa(FileStream ins, FileStream outs, byte[] message)
{
file chứa.
ThaotacBit thaotacBit = new ThaotacBit();
int i = 0, j = 0;
int read;
byte write;
while ((read = ins.ReadByte()) != -1)
{
write = (byte)read;
if (i < message.Length)
{
//Tách từng bít của thông điệp cần giấu.
byte bit = thaotacBit.TachBit(message[i], j++);
//Thay thế các bít tách được vào bít cuối cùng của từng byte của
thaotacBit.ThaytheBit(ref write, 0, bit);
if (j == 8)
{
j = 0;
i++;
}
}
outs.WriteByte(write);
}
-
-
}
Hàm Giải mã: Hàm này sẽ lấy lại dữ liệu đã giấu trong file trước đó bằng cách tách ra từng bít
cuối cùng trong file và ghi lại từng thành mảng byte và trả về mảng byte đó. Hàm này trong
class GetDataBack:
public static int Offset = 0;
public byte[] Giaima(string inputPath, int offset, int inputLength, int
passLength)
{
ThaotacBit thaotacBit = new ThaotacBit();
//Tạo luồng mới để ghi thành file mới.
FileStream outs = new FileStream(inputPath, FileMode.Open,
FileAccess.Read);
int header = Offset + passLength * 8;
//bỏ qua phần header của file.
outs.Seek(header + offset, 0);
byte[] docMang = new byte[inputLength * 8];
outs.Read(docMang, 0, docMang.Length);
byte[] dulieu = new byte[inputLength];
int byteIndex = 0, bitIndex = 0, i = 0;
14
-
//Tách từng bit cuối cùng của từng byte trong file chứa và lưu vào
mảng dulieu.
-
while (i < docMang.Length)
{
byte bit = thaotacBit.TachBit(docMang[i], 0);
thaotacBit.ThaytheBit(ref dulieu[byteIndex], bitIndex++, bit);
if (bitIndex == 8)
{
bitIndex = 0;
byteIndex++;
}
if (byteIndex == inputLength) break;
i++;
}
outs.Close();
return dulieu;
-
-
}
Xin Cảm ơn !!!
15
- Xem thêm -