Chương 2 GIẤU TIN TRÊN ẢNH TĨNH
3.1 Cơ sở lý thuyết toán học
3.1.2 Ứng dụng trong xây dựng thuật toán giấu tin mật
Trên cơ sở những kết quả đạt được có tính lý thuyết như đã trình bày ở trên, chúng tôi đã nghiên cứu và xây dựng một thuật toán giấu tin mật vào ảnh tĩnh với nội dung cụ thể như sau. Thuật toán được phân thành hai phần.
- Phần offline là thành phần có thể được thực hiện một lần dùng trong một thời gian nhất định, chẳng hạn 1 tháng, 6 tháng hay 1 năm mới xây dựng lại ma trân khác. - Phần online là chương trình thực hiện quá trình giấu tin và giải tin mật dựa trên
kết quả tính toán của phần offline.
Input: Một từ khóa tùy ý có độ dài ít nhất là 8 ký tự Output: Hai ma trận cấp 8x8 A và A-1
Các bước được thực hiện như sau: Bước 1:
Chuyển từ khóa thành ma trận vuông C cấp 8x8 bởi bộ mã ACSII mở rộng. 1.1 Giả sử từ khóa là C1C2...C8. Ta viết từ khóa theo cột như sau :
C1 C2 . . . C8
1.2 Ứng với mỗi ký tự Ci (i = ) ta cho ứng với một vector nhị phân 8 thành phần: Ci = Ci1Ci2...Ci8 với Cij {0,1}, i,j = .
Ta có : C = (Cij)8x8 với Cij {0,1}, i,j = là ma trận nhị phân nhận được từ từ khóa.
Bước 2 : Đặt A = (aij)8x8 trong đó,
Bước 3 : Xác định ma trận nghịch đảo A-1 của ma trận A. Ma trận A-1 luôn tồn tại (theo định lý 3.2).
3.1, Đặt N = (A-I), với I là ma trận đơn vị cấp 8x8 3.2, Áp dụng mệnh đề 3 và thuật toán tính nhanh Nk
với k = 1,2,..,8. Ta tính được N, N2
,..,N8
3.3, Áp dụng mệnh đề 3 ta nhận được ma trận A-1 là : A-1 = I + N +N +N2 + ..+ N8
Phần offline kết thúc ở đây, ta chuyển sang tính toán phần online.
Input: một ảnh môi trường C và một thông điệp M = m1m2..mn cần nhúng. Trong đó mi = {a, b, c,...,z} là bảng chữ cái của thông điệp M.
Giả sử, khởi điểm giấu tin và ma trận giải mã đã được hai bên gửi và nhận thống nhất trước đó. Chú ý rằng, người nhận thông điệp không cần biết ma trận A mà chỉ cần biết A-1 và biết khởi điểm giấu tin. Ma trận A sẽ do bên gửi (trung tâm) quản lý. Bên nhận, muốn gửi tin mật cho bên gửi thì cứ dùng ma trận A-1
để nhúng thông điệp. Bên gửi thông điệp sẽ tiến hành các bước sau đây:
Bước 1: Chuyển M thành dãy nhị phân (theo bảng mã ASCII mở rộng)
M = m1m2..mn M’ = (m11m12..m18, m21m22..mn,1mn,2..mn,8) (M’ là chuyển vị của M).
Với mij {0,1}, i = , j =
Bước 2 : Tiến hành mã hóa từng khối 8 bit một
Yj = mjA, trong đó mj = mi1mi2..mi8 với i,j = 1, 2, ..,n. Phép nhân được thực hiện theo mod 2.
Bước 3 : Thay toàn bộ các giá trị Yj , j=1,2,..,n cho các bit LSB của điểm ảnh bắt đầu từ khởi điểm ngẫu nhiên được thống nhất giữa người gửi với người nhận. Ở đây, khởi điểm là một LSB của một pixel ở một vị trí nào đó trong ảnh. Kết thúc bước này ta nhận được ảnh Stego.