2.4.1. Phân tích yêu cầu:
a. Yêu cầu của ngƣời sử dụng đối với hệ thống:
Chƣơng trình giấu tin trong ảnh về cơ bản đáp ứng các yêu cầu sau: Về giao diện: Giao diện thân thiện, dễ sử dụng.
Về chức năng: Đƣa thông tin mật vào trong một tài liệu sau đó ẩn thông tin đó đi làm cho ngƣời khác không có khả năng phát hiện ra trong tài liệu đó có thông tin đƣợc giấu bên trong.
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 30
Dữ liệu đầu vào: Dữ liệu cần nhúng hay cần giấu đó có thể là một đoạn văn bản, một tệp .doc hay một file ảnh cộng với đối tƣợng để nhúng vào là một file ảnh với mật khẩu của ngƣời dùng.
Dữ liệu đầu ra: tƣơng ứng với dữ liệu đầu vào, gần nhƣ giống hoàn toàn với dữ liệu đầu vào nhƣng thực chất bên trong chúng ẩn chứa một kho dữ liệu bí mật mà chỉ có ngƣời giấu chúng mới biết đƣợc, hoặc một ngƣời khác nếu muốn biết dữ liệu bí mật đó thì họ phải có mật khẩu do ngƣời giấu cung cấp.
Chƣơng trình giúp chúng ta có thể giấu thông tin vào một file đồng thời hỗ trợ lấy thông thông tin đã đƣợc giấu từ file đã đƣợc nhúng.
2.5. Phân tích chức năng:
2.5.1. Sơ đồ phân cấp chức năng:
Hình 2.5. Sơ đồ phân cấp chức năng
Giấu đoạn văn bản
Chƣơng trình nhúng tin trong ảnh Giấu thông tin
Lấy thông tin
Giấu tệp văn bản Giấu file ảnh
Lấy đoạn văn bản Lấy tệp văn bản Lấy file ảnh
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 31
2.5.2. Chức năng giấu thông tin: a. Giấu đoạn văn bản: a. Giấu đoạn văn bản:
Đƣa đoạn văn bản cần giấu vào sau đó thiết lập mật khẩu riêng cho nó rồi tiến hành mã hóa đoạn văn bản cùng với mật khẩu, sau khi mã hóa xong đẩy thông tin đó vào trong ảnh ta sẽ đƣa ra một ảnh mới gần giống hệt so với ảnh cũ về hình thức nhƣng nội dung bên trong lại chứa đựng thông tin mà ta đã giấu muốn lấy đƣợc thông tin đó cần phải có mật khẩu của thông tin đó.
b. Giấu tệp văn bản:
Công nghệ gần giống nhƣ giấu đoạn văn bản
c. Giấu file ảnh:
Tƣơng tự nhƣ giấu đoạn văn bản.
2.5.3. Chức năng lấy thông tin
Ngƣợc lại của quá trính giấu thông tin, bạn phải đƣa ảnh chứa dữ liệu cần lấy trong đó vào sau đó nhập mật khẩu riêng của nó và tiến hành lấy ra bình thƣờng.
CHƢƠNG III: XÂY DỰNG CHƢƠNG TRÌNH GIẤU TIN TRONG ẢNH BẰNG MÃ HÓA LSB
3.1. khái niệm bit ít quan trọng LSB(LSB- Least significant bit)
Bit LSB 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ũ. Ví dụ đối với ảnh 16 bit
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 32
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… 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 đó.
3.2. Cấu trúc của file ảnh BMP:
File này là file nhị phân, đƣợc phân chia thành 4 phần. Bao gồm File Header, Image Header, Color Table, và cuối cùng là Pixel Data.
* FileHeader: (14 BYTE) Chức năng chính:
+ Xác định đây có phải là file BMP hay không.(2 byte đầu tiên) + Độ lớn của file ảnh (4 byte tiếp theo)
+ Xác đinh vị trí của dữ liệu ảnh Tên trƣờng Kích thƣớc
(byte)
Miều tả
Type 2 Là 2 kí tự „B‟ và „M‟
Size 4 Kích thƣớc của file
Reserved 1 2 Không đƣợc sử dụng, phải có giá trị là 0.
Reserved 2 2
OffBits 4 Vị trí bắt đầu phần The Pixel Data
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 33
Bảng 3.1. Bảng mô tả FileHeader * ImageHeader: (40 BYTE)
Chức năng chính: Đƣa ra thông tin chi tiết về ảnh và định dạng dữ liệu nhƣ: + Chiều rộng và chiều cao của ảnh
+ Bao nhiêu bit đƣợc sử dụng cho 1 pixel + Dữ liệu ảnh có đƣợc nén hay không.
Tên trƣờng Kích thƣớc (byte) Miêu tả
Size 4 Kích thƣớc phần Header, phải nhỏ hơn 40.
Width 4 Chiều rộng file theo Pixel
Height 4 Chiều cao file theo Pixel
Planes 2 Phải là 1
BitCount 2 Số bit trên 1 Pixel : 1, 2, 4, 8, 16, 24, hoặc 32.
Compression 4 Kiểu nén (0 = Không đƣợc nén)
SizeImage 4 Kích thƣớc ảnh, phải là 0 đối với ảnh không đƣợc nén
XPelsPerMeter 4 Uu tiên độ phân giải pixels/ meter YPelsPerMeter 4 Uu tiên độ phân giải pixels/ meter
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 34
ClrImportant 4 Số mày có ý nghĩa
Bảng 3.2. bảng mô tả ImageHeader * ColorTables:
Tiếp theo là Palette màu của BMP, gồm nhiều bộ có kích thƣớc 4 byte xếp liền nhau theo cấu trúc Blue-Green-Red và một Byte dành riêng cho Itensity. Kích thƣớc của vùng Palette màu bằng 4 x số màu của ảnh. Nếu số bits màu của ảnh (byte 15-16 của Info là 24 hoặc 32 thì không có vùng Palette). Vì Palette màu của màn hình có cấu tạo theo thứ tự Red-Green-Blue nên khi đọc Palette màu của ảnh BMP vào ta phải chuyển đổi lại cho phù hợp. Số màu của ảnh đƣợc biết dự trên số Bits cho 1 pixel cụ thể là:
Nếu là ảnh 24 bit, thì ColorTable không đƣợc biểu diễn.
Nếu là ảnh 8 bit thì ColorTable chứa 256 “entries” với mỗi “entry” chứa 4 byte của dữ liệu. 3 byte đầu tiên là giá trị cƣờng độ màu Blue, Green, Red. Byte cuối cùng không đƣợc sử dụng và phải bằng zero.
* The Pixel Data:
Với ảnh 8 bit, mỗi pixel đƣợc biểu diễn bởi 1 byte đơn của dữ liệu.Với ảnh 24 bit, mỗi pixel đƣợc biểu diễn bởi 3 byte tuần tự của dữ liệu
3.3. Chƣơng trình giấu tin trong ảnh Bitmap 3.3.1. kĩ thuật giấu thông tin trong ảnh Bitmap 3.3.1. kĩ thuật giấu thông tin trong ảnh Bitmap
Chúng ta sử dụng kỹ thụât “Thay thế” (substitution) để ẩn thông tin trong một file. Với công nghệ này, bạn thay thế những bit ít quan trọng nhất của file gốc với dữ liệu mà bạn muốn ẩn. Để sử dụng công nghệ này ta thực hiện các bƣớc sau:
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 35
Khi sử dụng kĩ thuật thay thế sẽ có một số ƣu nhƣợc điểm sau:
+Ƣu điểm: Kích thƣớc của file sẽ không bị thay đổi sau khi thực hiện việc ẩn thông tin.
+ Nhƣợc điểm: Có thể giảm chất lƣợng ảnh sau khi ẩn thông tin; giới hạn kích thƣớc thông tin muốn ẩn.
Trong kỹ thuật “Thay thế”, phƣơng thức rất phổ biến là mã hóa LSB (Least Significant Bit).Phƣơng thức mã hóa này thay thế bit ít quan trọng nhất trong một vài byte của file để ẩn tuần tự những byte dữ liệu chứa thông tin muốn ẩn. Cách này có hiệu quả trong trƣờng hợp mà thay thế LSB không ảnh hƣởng đến chất lƣợng ảnh. Ví dụ nhƣ đối với ảnh Bitmap 24 bit.
* Tại sao giấu thông tin trong ảnh Bitmap 24 bit lại có hiệu quả hơn:
- Ảnh Bitmap 24 bit: tức là sẽ có 24 bit biểu diễn cho 1 pixel và ảnh này có 2^24 màu. Thông tin màu cho mỗi pixel đƣợc chứa trong 3 byte liên tiếp của dữ liệu với mỗi byte tƣơng ứng với 3 màu Blue, Green, Red.
- 24 bit màu là dữ liệu đơn giản để đọc. Dữ liệu hình ảnh đi theo ngay trực tiếp sau đầu mục thông tin và ở đó không có bảng màu nào.
- Các điểm ảnh đƣợc lƣu theo chiều từ trái sáng phải trên một dòng và các dòng lại đƣợc lƣu theo thứ tự từ dƣới lên trên .
- Mỗi byte trong vùng BimapData biểu diễn 1 hoặc nhiều điểm ảnh theo số Bít cho một pixel
- 8 bit dữ liệu cần 8 byte dữ liệu nguồn.
Nhƣ vậy, với mỗi Pixel sẽ có 8 bit biểu diễn cho mỗi giá trị màu. Giả sử, ta chỉ xem xét với màu Blue, sẽ có 28 giá trị khác nhau. Sự khác nhau giữa các giá trị
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 36
hay gọi cách khác là cƣờng độ của Blue nhƣ 11111111 và 11111110 sẽ không bị phát hiện bởi thị giác của con ngƣời.
- Đối với ảnh 24 bit, ta có thể nhúng 3 bit dữ liệu muốn ẩn trong 1 pixel. Trong khi đó với ảnh 8 bit ta chi có thể nhúng 1 bit dữ liệu cho mỗi pixel. Nhƣ vậy, ảnh 24 bit cung cấp nhiều khoảng trống hơn so với ảnh 8 bit.
Ví dụ: muốn ẩn 1 ký tƣ A vào trong 1 file ảnh. Giá trị nhị phân của A là 10000001 Lúc này kí tự A đƣợc ẩn trong 3 pixel.
+ Giả sử dữ liệu của 3 pixel có thể là (00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001)
+ Sau khi ẩn kí tự A, giá trị của 3 pixel là: (00100111 11101000 11001000)
(00100110 11001000 11101000) (11001000 00100111 11101001)
Nhƣ vậy, chỉ có 3 bit bị thay đổi trong 3 byte. Và sẽ không bị phát hiện bởi thị giác của con ngƣời.
3.4. Các bƣớc giải quyết vấn đề 3.4.1. Giấu thông tin trong ảnh: 3.4.1. Giấu thông tin trong ảnh:
a. Trình tự thực hiện:
- Mã hoá thông tin trƣớc khi ẩn bằng cách thông qua mật khẩu và ta mã hoá thông tin muốn giấu với mật khẩu tạo ra một mảng byte kí tự mã hoá.
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 37
b. Chương trình “Giấu tin trong file ảnh (.BMP)”
Có 3 chức năng chính:
Chức năng “Giấu một đoạn văn bản trong file ảnh”. Chức năng “Giấu file văn bản(.doc, .txt) trong file ảnh”. Chức năng “Giấu file ảnh(.bmp) trong file ảnh”.
Hình 3.3. Sơ đồ giấu tin trong ảnh bitmap(.bmp)
Mục đích: Là để giấu những thông tin trong một file ảnh.
Xây dựng phƣơng thức CreateStegoFile với 3 tham số: tên file ảnh mới, nội dung message và password.
- Chỉ làm việc với ảnh bitmap : Phải kiểm tra file ảnh muốn giấu phải là ảnh Bitmap. dựa vào 2 byte đầu tiên để xác định file ảnh Bitmap.
Giấu cả thông tin về chiều dài của đoạn Message vào 4 byte đầu tiên trong phần Data Pixel. Tức là bắt đầu từ byte thứ 54 của file ảnh sẽ lƣu trữ chiều dài của message.
Giấu tin trong ảnh
Giấu 1 đoạn văn bản
Giấu file ảnh Giấu file văn bản
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 38
Vậy ta xây dựng 1 hàm đƣa chiều dài của mess vào 4 byte đầu tiên , sau đó là nội dung của mess dƣới dạng byte. Kết quả trả về là một mảng byte. Lúc này ta giấu cả mảng byte này vào trong file ảnh.
Một thủ tục ẩn thông tin vào file ảnh: thay thế LSB với đầu vào là 1 luồng để dọc các byte ảnh và mảng byte của HiddenMessage. Đầu ra sẽ là luồng output mới chứa HiddenMessage trong file ảnh.Trong thủ tục này ta chỉ thao tác với các bit dữ liệu của thông điệp với các bit của phần Data Pixel trong file ảnh
Vậy có thể sử dụng kỹ thuật này cho phép giấu một byte file ẩn vào 8 byte file chứa gốc(file ảnh chứa gốc). Từ trên có thể thấy đƣợc lợi thế khi sử dụng cách này là gì? đó chính là lúc nào cũng có nhiều nhất 50% số bít trùng nhau giữa tin cần giấu và file chứa gốc(file ảnh chứa gốc) do đó file chứa gốc ít bị ảnh hƣởng lớn khi có tin giấu thêm vào trong file chứa gốc(file ảnh chứa gốc) đó.
3.5. Thuật toán CPT
Đây là thuật toán giấu tin trong khối bit do Yu-Yuan Chen, Hsiang-Kuang Pan, Yu-Chee Tseng của đại học Đài loan đề xuất cho ảnh đentrắng.
Thuật toán CPT(Chen-Pan-Tseng) thực hiện nhƣ sau:
* Input (Dữ liệu vào): Một ảnh gốc F dùng để giấu thông tin, F đƣợc chia thành các khồi nhỏ Fi, mỗi ma trận điểm ảnh Fi có kích thƣớc m*n, r là số bít để giấu trong mỗi khối Fi (r thỏa mãn điều kiện 2r-1<m*n). Ma trận nhị phân K(ma trận khóa) cùng kích thƣớc với khối Fi, ma trận trọng số W(các phần tử là số nguyên, các giá trị từ 1 đến 2r-1 xuất hiện ít nhất một lần trong W) cùng kích thƣớc của K. Lƣợng thông tin cần giấu B B=b1b2…..bz mỗi bi có r bít), độ chênh lệch trọng số d.
* OutPut (Dữ liệu ra): Một ảnh F‟ đã có thông tin giấu, trong đó F‟ đƣợc tạo bởi các khối Fi‟ do giấu tin vào khối Fi tạo thành. Thuật toán sẽ thực hiện giấu r
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 39
bít thông tin vào mỗi khối Fi bằng cách thay đổi nhiều nhất 2 bit của Fi và Fi biến đổi thành Fi‟ sao cho luôn thỏa mãn điều kiên:
SUM(Fi‟ K) W mod 2r=b1b2…br. * Quá trình thực hiện gồm 4 bƣớc:
- Bƣớc 1. Tính T=Fi K - Bƣớc 2. Tính SUM(T W)
- Bƣớc 3. Xác định tập Sw={(x,y)|(W[x,y]=w ^ T[x,y]=0)V (W[x,y]=2r – w ^ T[x,y]=1)} trong đó w lấy các giá trị từ 1,2,…,2 r-1.
- Bƣớc 4. Kí hiệu d=(b1b2…bz) - SUM((Fi K) W) mod 2r. Thực hiện việc đảo bít trên Fi để đƣợc Fi‟ sao cho tổng SUM tính đƣợc ở bƣớc 2 khi thay Fi bởi Fi‟ sẽ tăng lên d.
(trong đó là phép XOR và là phép nhân các phần tử tại các vị trí tƣơng ứng của 2 ma trận cùng kích thƣớc. Ma trận K và W đƣợc sử dụng bí mật giữa ngƣời gửi và ngƣời nhận tin)
* Đánh giá thuật toán:
độ an toàn của thuật toán phụ thuộc vào hai ma trận K và W. Để xác định đƣợc cả K và W cần kiểm tra (tổ hợp chập 2r-1của m*n)*(2r-1)!*(2r- 1)m*n-2^r- 1* 2m*n điều này không thể thực hiện đƣợc nếu m và n đủ lớn. Và khối bít tối đa có thể giấu trong khối Fi là Log2(m*n+1) và vì vậy lƣợng tin giấu phụ thuộc vào kích thƣớc các khối Fi
3.6. Ứng dụng thuật toán cho ảnh màu
Để ứng thuật toán CPT cho ảnh màu và ảnh đa cấp xám để tạo thành ma trận nhị phân F. Thực hiện việc giấu tin vào F theo thuật toán CPT với ma trận K và W
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 40
đƣợc sinh ngẫu nhiên. Sau đó trả các bít LSB trở về ảnh gốc để tạo thành ảnh mới đã giấu tin quá trình đó nhƣ sau:
Hình 3.4. Sơ đồ ứng dụng thuật toán của ảnh màu Bƣớc tiền xử lý gồm các thao tác chính:
Số hóa thông tin giấu và nén để tăng dung lƣợng.
Trích các bít LSB từ ảnh gốc một cách ngẫu nhiên bằng một hàm băm để tạo thành ma trận F và chia thành các khối Fi.
Sinh ngẫu nhiên ma trận khóa K và ma trận trọng số W. Tạo ảnh đã giấu tin Sinh file khóa Giấu tin vào khối bits LSB Tiền xữ lý Ảnh gốc để giấu tin Thông tin giấu
Nhóm: Mai Văn Thủ - Trần Thanh Tâm Trang 41
File khóa chứa các thông tin cơ bản để giải mã thông tin: chiến lƣợc trích các bít LSB, số khối và kích thƣớc các khối Fi, ma trận khóa K và ma trận trọng số W. Tính bảo mật trong thuật toán với việc sử dụng LSB đã tăng thêm độ bảo mật đó là ngoài phụ thuộc vào ma trận K, W còn phụ thuộc vào chiến lƣợc trích các bít LSB và kỹ thuật nén thông tin.
Vì sử dụng các bit LSB để tạo thành ma trận F nên chất lƣợng của ảnh sau khi đã giấu tin rất tốt.
Để tăng dung lƣợng giấu tin, thay vì sử dụng thuật toán CPT giấu thông tin trong khối bít. Có thể thay đổi trực tiếp các bit của ma trận F để giấu thông tin. Nhƣợc điểm của giải pháp này là tính bảo mật của thuật toán chỉ phụ thuộc vào chiến lƣợc trích các bit LSB. Tuy nhiên có thể khắc phục nhƣợc điểm này bằng cách mã hóa thông tin cần giấu bằng một hệ mật mã nào đó trƣớc khi tiến hành giấu tin trong ảnh. Đây cũng là phƣơng pháp em tìm hiểu quá trình giấu tin trong ảnh.
3.7. Lấy thông tin từ ảnh:
a.Trình tự thực hiện: