Nghiên cứu kỹ thuật “che giấu” tin trong tài liệu “số hoá”

Cũng giống như giấu tin trong ảnh hay trong audio, giấu tin trong video cũng được quan tâm, và 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 và bảo vệ bản quyền tác giả. Các kỹ thuật giấu tin trong video phát triển mạnh mẽ, và cũng theo hai khuynh hướng là thuỷ vân số và data hiding. 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 là phân phối tin giấu dàn trải theo tần số của dữ liệu chứa (gốc). Người ta đã dùng hàm cosin riêng và hệ số truyền sóng riêng để giấu tin. Trong các thuật toán khởi nguồn, kỹ thuật cho phép giấu ảnh vào video, nhưng thời gian gần đây các kỹ thuật cho phép giấu cả âm thanh và hình ảnh vào video. Phương pháp Swanson đã giấu theo khối, đã giấu được 2 bít vào khối 8*8. Gần đây nhất là phương pháp Mukherjee, giấu audio vào video sử dụng cấu trúc lưới đa chiều.

doc50 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2569 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu kỹ thuật “che giấu” tin trong tài liệu “số hoá”, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
I Như vậy, eπ(a) = X, eπ(b) = N,…hàm giải mã là phép hoán vị ngược. Điều này được thực hiện bằng cách viết hàng thứ hai lên trước rồi sắp xếp theo thứ tự chữ cái. Ta nhận được: A B C D E F G H I J K L M d l r y v o h e z x w p T N O P Q R S T U V W X Y Z b g f j q n m u s k a c I Bởi vậy dπ(A) = d, dπ(B) = l,… 1.2.1.3 Mã Affine Mã dịch vòng là một trường hợp đặc biệt của mã thay thế chỉ gồm 26 trong số 26! các hoán vị có thể của 26 phần tử. Một trường hợp đặc biệt khác của mã thay thế là mã Affine được mô tả dưới đây. Trong mã Affine, ta giới hạn chỉ xét các hàm mã có dạng: e(x) = a * x + b mod 26 (a, b Z26. Các hàm này được gọi là hàm Affine, chú ý rằng khi a = 1 ta có mã dịch vòng). Định nghĩa: Cho P = C = Z26 và giả sử K = {(a, b) Z26 × Z26: UCLN (a, 26) = 1} Với K = (a, b) K ta định nghĩa: ek(x) = a * x + b mod 26 và dk(y) = a-1 (y - b) mod 26 với x, y Z26 Để có được phép giải mã tương ứng, tức để cho phương trình: a * x + b = c mod 26 có lời giải đối với x (với bất kì c cho trước) thì điều kiện cần và đủ là a nguyên tố với 26, tức UCLN(a, 26) = 1. Khi UCLN (a, 26) = 1, thì có số a-1 Z26 sao cho a * a-1 = a-1 * a = 1 mod 26 và do đó, nếu y = a * x + b mod 26, thì x = a-1 (y - b) mod 26 và ngược lại. 1.2.1.4 Mã Vigenere Trong cả hai hệ mã dịch vòng và mã thay thế (một khi đã được chọn) mỗi kí tự sẽ được ánh xạ vào một kí tự duy nhất. Vì lý do đó, các hệ mật mã còn lại được gọi là hệ thay thế đơn biểu. Bây giờ ta sẽ trình bày một hệ mật mã không phải là bộ chữ đơn, đó là hệ mật mã Vigenere nổi tiếng. Mật mã này lấy tên của Blaise de Vigenere sống vào thế kỷ 16. Sử dụng phép tương ứng A 0, B 1,…, Z 25 mô tả ở trên, ta có thể gắn cho mỗi khoá K với một chuỗi kí tự có độ dài m được gọi là từ khoá. Mã Vigenere sẽ mã hoá đồng thời m kí tự: Mỗi phần tử của bản rõ tương đương với m kí tự. Định nghĩa: Cho m là một số nguyên dương cố định nào đó. P = C = K = (Z26)m. Với khoá K = (k1, k2,…, km) ta xác định: ek(x1, x2,…, xm) = (x1 + k1, x2 + k2,…, xm + km) và dk(y1, y2,…, ym) = (y1 – k1, y2 – k2,…, ym - km) trong đó tất cả các phép toán được thực hiện trong Z26. 1.2.1.5 Mã Hill Trong phần này sẽ mô tả một hệ mật thay thế đa biểu khác đựoc gọi là mật mã Hill. Mật mã này do Lester S.Hill đưa ra vào năm 1929. Giả sử m là một số nguyên dương, đặt P = C = (Z26)m. Ý tưởng ở đây là lấy m tổ hợp tuyến tính của m kí tự trong một phần tử của bản rõ để tạo ra m kí tự ở một phần tử của bản mã. Như vậy, khoá sẽ được cho bởi một ma trận cấp m, tức là một phần tử của Z26m*n. Để phép biến đổi tuyến tính xác định bởi ma trận K Z26m*n có phép nghịch đảo, ma trận K cũng phải có phần tử nghịch đảo K-1 Z26m*n. Điều kiện cần và đủ để ma trận K có ma trận nghịch đảo là định thức của nó, kí hiệu det K nguyên tố với m. Định nghĩa: Cho m là số nguyên dương. P = C = Z26m, К = {K Z26m*n: (det K, 26) = 1 } Với mỗi K К, ta có: ek (x1, x2, …, xm) = (x1, x2, …, xm) * K và dk (y1, y2, …, ym) = (y1, y2, …, ym) * K-1. 1.2.1.6 Mã hoán vị Tất cả các hệ mật mã trên ít nhiều đều xoay quanh phép thay thế: các kí tự của bản rõ được thay bằng các kí tự khác trong bản mã. Ý tưởng của mã hoán vị là giữa các kí tự của bản rõ không thay đổi nhưng sẽ thay đổi vị trí của chúng bằng cách sắp xếp lại các vị trí này. Mã hoán vị (còn được gọi là mã chuyển vị) đã được dùng từ hàng trăm năm nay. Thật ra thì sự phân biệt giữa mã hoán vị và mã thay thế đã được Giovani Porta chỉ ra từ những năm 1563. Không giống như mã thay thế, ở đây không có các phép toán đại số nào cần thực hiện khi mã hoá và giải mã nên thích hợp hơn cả là dùng luôn các kí tự mà không dùng các thặng dư theo module 26. Định nghĩa: Cho m là một số nguyên dưong xác định nào đó. Cho P = C = (Z26)m và К gồm tất cả các hoán vị của {1, …, m}. Đối với một khoá π (tức là một hoán vị) ta xác định: eπ (x1, …, xm) = (xπ(1), …, xπ(m)) và dπ (y1, …, ym) = (yπ-1(1), …, yπ-1(m)) trong đó π-1 là hoán vị ngược của π. 1.2.1.7 Mã dòng Trong các hệ mật mã nghiên cứu ở trên, các phần tử liên tiếp của bản rõ đều được mã hoá bằng cùng một khoá K. Tức xâu bản mã y nhận được có dạng: y = y1y2y3…. = ek (x1) ek (x2)…. Các hệ mật mã thuộc dạng này thường được gọi là các mã khối. Một quan điểm sử dụng khác là mật mã dòng. Ý tưởng cơ bản ở đây là tạo ra một dòng khoá z = z1z2… và dùng nó để mã hoá một xâu bản rõ x = x1x2…. theo quy tắc: y = y1y2y3…. = (x1) (x2)…. Mã dòng hoạt động như sau: Giả sử k K là khoá và x1x2.... là xâu bản rõ. Hàm fi được dùng để tạo zi (zi là phần tử thứ i của dòng khoá) trong đó fi là một hàm của khoá K và i – 1 kí tự đầu tiên của bản rõ. z = fi (K, x1, …, xi - 1) Phần tử zi của dòng khoá được dùng để mã xi tạo ra yi = ezi (xi). Bởi vậy, để mã hoá xâu bản rõ x1x2.... ta phải tính liên tiếp: z1, y1, z2, y2… Việc giải mã xâu bản mã y1y2…. có thể được thực hiện bằng cách tính liên tiếp: z1, x1, z2, x2…. Định nghĩa: Mật mã dòng là một bộ (P, C, K, L, F, E, D) thoả mãn các điều kiện sau: P là tập hữu hạn các bản rõ có thể C là tập hữu hạn các bản mã có thể K là tập hữu hạn các khoá có thể (không gian khoá) L là tập hữu hạn bộ chữ của dòng khoá F = (f1f2….) là bộ toạ dòng khoá. (Với i ≥ 1) fi : K × P-1 → L Với mỗi z L có một quy tắc mã ez E và một quy tắc giải mã tương ứng dz D. (ez : P → C và dz : C → P là một hàm thoả mãn dz (ez (x)) = x với mọi bản rõ x P ). 1.2.2 Hệ mã hoá đối xứng hiện đại 1.2.2.1 Mã theo chuỗi bit Trong hệ mã theo chuỗi bit, thông điệp là các bit và khoá được phát sinh bởi một bộ phát sinh bit ngẫu nhiên. Bản rõ được mã hoá theo từng bit một để được bản mã: M K 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 0… 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1… C 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1… Khoá được cung cấp cho bộ phát sinh bit ngẫu nhiên để tạo ra dãy tín hiệu nhị phân. Chuỗi bit khoá K sau đó được trộn với bản rõ M, thường theo phép XOR (phép cộng mod 2), để sinh ra bản mã C. Giải mã được thực hiện bằng cách XOR bản mã với cùng khoá K do sử dụng bộ phát sinh chuỗi bit ngẫu nhiên tạo ra: C K 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1… 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1… M 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 0… 1.2.2.2 Mã theo chữ Các hệ mã ban đầu thường dựa trên cơ sở phép biến đổi một chữ cái trong bản rõ thành một chữ cái khác trong bản mã. Kỹ thuật mã hoá này còn được gọi là mã thay thế, do một ký tự được chuyển thành một ký tự khác bằng cách thay thế. Để thực hiện phương pháp này, cần định nghĩa một bảng mã (như bảng mã ASCII) để số hoá bản rõ, vì các phép toán này làm việc trên các số thay vì các ký tự. Minh hoạ: A B C D E F G H I K L … R S T U V W X Y Z 00 01 02 03 04 05 06 07 08 09 10 …17 18 19 20 21 22 23 24 25 1.2.2.3 Mã theo khối Trong mã khối, bản rõ và bản mã được chia thành từng khối ký tự trước khi thi hành mã hóa và giải mã. Kỹ thuật mã theo khối được mô tả như sau: - Chia văn bản M thành nhiều khối, M = M1M2…Mj, mỗi khối Mi, 1 ≤ i ≤j là một khối n ký tự. - Chuyển các ký tự thành các số tương đương và xây dựng bản mã: Ci = AMi + B( mod n), i = 1,2,…,j Trong đó, (A, B) là khoá, A là một ma trận khả nghịch cấp n, với gcd(det(A), n) = 1, B = (B1, B2,…, Bn)T, C = (c1, c2, …, cn) và Mi = (m1, m2,…, mn)T. - Để giải mã, ta thi hành phép toán: Mi = A-1(Ci - B)(mod n). trong đó A-1 là ma trận nghịch đảo của A. 1.2.2.4 Mã mũ Mã mũ do Pohlig và Hellman giới thiệu năm 1976, có thể được mô tả như sau. Chọn p là số nguyên tố, M là một số tương ứng của bản rõ với mỗi ký tự trong bản rõ được thay thế bằng mã tương ứng như trong bảng (có mở rộng để xử lý ký tự trắng): ‘‘ A B C D E F G H I K L … R S T U V W X Y Z 00 01 02 03 04 05 06 07 08 09 10 11 …18 19 20 21 22 23 24 25 26 - Chia M thành các khối Mi, 0 < Mi < p. Gọi k là một số nguyên thoả mãn 0 < k < p và gcd (k, p-1) = 1. - Mã hoá khối Mi thành: Ci = E(k,Mi) Mik (mod p) - Ci được giải mã theo công thức Mi = D(v,Ci) Civ (Mik)v Mi (mod p) trong đó, kv 1 (mod p-1). 1.2.2.5 DES Mô hình mã khoá bí mật (mã hoá đối xứng) phổ biến nhất đang được sử dụng là DES – Data Encryption Standard - được IBM đề xuất và được uỷ ban Chuẩn Quốc gia Mỹ, hiện gọi là Viện Quốc gia về chuẩn và công nghệ (NIST), chấp nhận như một chuẩn chính thức. DES sử dụng một phép toán hoán vị, thay thế, và một số toán tử phi tuyến. Các phép toán tử phi tuyến này được áp dụng (16 lần) vào từng khối của thông điệp 32 bit. Bản rõ, trước hết, được chia thành các khối thông điệp 64 bit. Khoá sử dụng 56 bit nhận được từ khoá bí mật 64 bit, có chứa 8 bit kiểm tra chẵn lẻ. Thuật giải giải mã được thực hiện theo chiều ngược lại, với cùng một khoá bí mật đã dùng khi mã hóa. 1. 3 HỆ MÃ HOÁ KHOÁ CÔNG KHAI Phương pháp mã hoá công khai là sự phối hợp giữa một khoá riêng (Private Key) và một khoá công khai (Public Key). Khoá riêng chỉ được biết bởi mỗi máy tính, trong khi khoá công khai được máy tính này cung cấp cho các máy tính khác giao tiếp với nó. Để giải mã một thông điệp đã mã hoá, máy tính nhận thông điệp phải dùng khoá bí mật. 1.3.1 Hệ mật mã RSA 1.3.1.1 Định nghĩa sơ đồ hệ mật Hệ mật mã RSA sử dụng các tính toán trong Zn, trong đó n là tích của 2 số nguyên tố phân biệt p và q. Ta nhận thấy rằng = (p - 1)(q - 1). Định nghĩa: Cho n = p * q với p, q là số nguyên tố lớn. Đặt P = C = Zn Chọn b nguyên tố với , = (p - 1)(q - 1). K = {(n, a, b): a * b 1 (mod )}. Giá trị n và b là công khai, và a là bí mật Với mỗi K = (n, a, b), mỗi x P, y C, ta có: Hàm mã hoá: y = ek(x) = xb mod n Hàm giải mã: dk (x) = ya mod n 1.3.1.2 Thực hiện hệ mật Có nhiều khía cạnh cần thảo luận về hệ mật mã RSA, bao gồm các chi tiết về việc thiết lập hệ mật mã, tính hiệu quả của phép mã và giải mã và độ mật của hệ. Để thiết lập hệ thống, R sẽ tuân theo các bước sau: R tạo 2 số ngưyên tố lớn p và q R tính n = p * q và = (p - 1)(q - 1) R chọn một số ngẫu nhiên b (1 < b < ) sao cho UCLN(b, ) = 1 R tính a = b-1 mod dùng thuật toán Euclide mở rộng R công bố n và b trong một danh bạ và dùng chúng làm khoá công khai. 1.3.1.3 Các phương pháp tấn công hệ mật Cách tấn công dễ thấy nhất đối với hệ mật mã này là thám mã cố gắng phân tích n ra các thừa số nguyên tố. Nếu thực hiện được phép phân tích này thì có thể dễ dàng tính được = (p -1)*(q - 1) và tính số mũ a và b đúng như R làm. Vì thế để hệ RSA được coi là mật thì nhất thiết n = p*q phải là một số đủ lớn để việc phân tích nó sẽ không có khả năng về mặt tính toán. Vì vậy để đảm bảo an toàn, nên chọn các số p và q có chừng 100 chữ số, khi đó n sẽ có tới 200 chữ số. Phép mã (hoặc giải mã) sẽ xoay quanh phép lấy luỹ thừa theo module n. Vì n là một số rất lớn nên ta phải sử dụng số học lấy chính xác nhiều lần để thực hiện các tính toán trong Zn và thời gian tính toán cần thiết sẽ phụ thuộc vào số các bit trong biểu diễn nhị phân của n. 1.3.2 Hệ Elgamal Năm 1985, Elgamal đề nghị một hệ mã khoá công khai dựa trên bài toán logarithm rời rạc. Chúng ta sẽ bắt đầu bằng việc mô tả bài toán này khi thiết lập một trường hữu hạn Zp, p là số nguyên tố. Bài toán logarithm rời rạc trong Zp là đối tượng trong nhiều công trình nghiên cứu và được xem là bài toán khó nếu p được chọn cẩn thận. Cụ thể là không có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây khó khăn cho các phương pháp tấn công đã biết, p phải có ít nhất 150 chữ số và p – 1 phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarithm rời rạc trong xây dựng hệ mật là khó tìm được các logarithm rời rạc, song bài toán ngược lấy luỹ thừa lại có thể tính toán hiệu quả cao theo thuật toán nhân và bình phương. Nói cách khác, luỹ thừa theo module p là hàm một chiều với các số nguyên tố p thích hợp. Elgamal đã phát triển một hệ khoá công khai dựa trên bài toán logarithm rời rạc. Hệ mật mã Elgamal là một hệ mật mã không tất định vì bản mã phụ thuộc vào bản rõ x lẫn giá trị ngẫu nhiên k do người gửi chọn. Bởi vậy, sẽ có nhiều bản mã được mã từ cùng bản rõ. Định nghĩa: Cho p là số nguyên tố sao cho bài toán logarithm rời rạc trong Zp là khó giải. Cho Zp* là phần tử nguyên thuỷ. Giả sử P = Zp*, C = Zp* × Zp*. Ta định nghĩa: K = {(p, α, a, β): β α a(mod p) } Các giá trị p, α, β được công khai, còn a giữ bí mật. Với K = (p, α, a, β) và một số ngẫu nhiên bí mật k Zp - 1, ta xác định: ek(x, k) = (y1, y2) trong đó: y = α k mod p và y2 = x * βk mod p với y1, y2 Zp* ta xác định: dk (y1, y2) = y2 (y1a)-1 mod p. Chương 2 VẤN ĐỀ GIẤU TIN 2.1 KHÁI NIỆM VỀ GIẤU TIN 2.1.1 Khái niệm thông tin “số hoá” Thông tin là một khái niệm trừu tượng, thể hiện dưới nhiều dạng thức khác nhau. Thông tin có thể phát sinh, được lưu trữ, được biến đổi trong những vật mang tin. Thông tin có thể được truyền đi, được sao chép hoặc xử lý, để cho chúng ta các thông tin có ý nghĩa thiết thực. Thông tin được biểu hiện bằng các tín hiệu vật lý. Máy tính không thể hiểu được từ ngữ, sách báo tranh ảnh theo nghĩa thông thường. Máy tính chỉ lưu trữ, xử lý những thông tin đã được số hoá thành từng bit – giá trị nhỏ nhất của thông tin, hoặc thành một nhóm bit gọi là byte. Bit có thể có hai giá trị tắt-off/mở-on, hoặc hai giá trị có/không, 0 – zero/1- one. Máy tính được chế tạo với các thiết bị chuyển mạch (switching device), có thể chuyển trạng thái dữ liệu sang dạng những số 0 và 1 của hệ thống số nhị phân. Đó là hệ thống số bao gồm tất cả các số biểu diễn bởi hai ký hiệu 0 và 1. 2.1.2 Khái niệm giấu tin Giấu tin là giấu (hoặc nhúng) một lượng thông tin số vào trong đối tượng dữ liệu số khác. “Giấu tin” nhiều khi không phải chỉ hành động giấu theo nghĩa thông thường, mà chỉ mang ý nghĩa quy ước. Mục đích của giấu tin Giấu tin phục vụ cho hai mục đích trái ngược nhau: - Bảo mật cho những dữ liệu được giấu trong đối tượng chứa. - Bảo đảm an toàn (bảo vệ bản quyền) cho chính đối tượng chứa dữ liệu giấu trong đó. Hai mục đích giấu tin phát triển thành hai lĩnh vực với yêu cầu và tính chất khác nhau : - Giấu thông tin bí mật (Steganography). - Thuỷ vân số (Watermarking). Giấu thông tin Giấu thông tin bí mật Thuỷ vân số Hình 2: Hai lĩnh vực của giấu tin 2.1.3 Mô hình giấu tin 2.1.3.1 Mô hình giấu tin vào phương tiện chứa Thông tin cần giấu M Phương tiện chứa tin đã được giấu (S) Bộ nhúng thông tin Phân phối Phương tiện chứa tin C Khoá giấu tin Hình 3: Sơ đồ giấu tin Đầu vào: - Thông tin cần giấu: Tuỳ theo mục đích của người dùng, nó có thể là thông điệp (với giấu tin bí mật) hay là 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 để giấu tin. - Khoá: thành phần để góp phần làm tăng độ bảo mật. Bộ nhúng thông tin: là chương trình thực hiện việc giấu tin. Đầu ra: là phương tiện chứa, đã có tin giấu trong đó. 2.1.3.2 Mô hình tách tin từ phương tiện chứa Diễn ra theo quy trình ngược lại với giấu tin: đầu ra là các thông tin được giấu và phương tiện chứa. Khoá giấu tin Bộ nhúng thông tin Phương tiện chứa tin đã được giấu (S) Phương tiện chứa tin C Thông tin đã giấu M Hình 4: Sơ đồ tách tin Một số thuật ngữ cơ bản: Giấu dữ liệu (Datahiding) (Information hiding): Kỹ thuật giấu thông tin nói chung bao gồm: Giấu tin bí mật (steganography) và giấu tin thuỷ vân (watermaking). Giấu tin (Steganography): Kỹ thuật giấu tin mật trong một đối tượng. Kỹ thuật thuỷ vân (watermaking): Kỹ thuật giấu tin (kiểu đánh dấu), được dùng để bảo vệ chính đối tượng chứa tin giấu. Phương tiện chứa (Cover Object): Phương tiện được lựa chọn để giấu (hoặc nhúng) thông tin vào trong đó. Phương tiện chứa sau khi đã giấu tin (Stego Object): Phương tiện chứa tin, sau khi đã giấu thông tin vào trong đó. Thông điệp (Message): Thông tin được giấu trong phương tiện chứa, để chuyển đi. 2.1.4 Phân loại kỹ thuật giấu tin Có nhiều cách để tiến hành phân loại các phương pháp giấu thông tin theo các tiêu chí khác nhau, như theo các phương tiện chứa tin, các phương pháp tác động lên phương tiện chứa tin, hay phân loại theo các ứng dụng cụ thể. 2.1.4.1 Phân loại theo phương tiện chứa tin - Giấu thông tin trong ảnh. - Giấu thông tin trong các file âm thanh. - Giấu thông tin trong video. - Giấu thông tin trong văn bản dạng text. 2.1.4.2 Phân loại theo cách thức tác động lên phương tiện - Phương pháp chèn dữ liệu: tìm vị trí trong file dễ bị bỏ qua, và chèn các dữ liệu cần giấu vào đó (vd: dữ liệu được giấu sau các ký tự EOF) . - Phương pháp thay thế: thay thế các phần tử không quan trọng của phương tiện chứa, bằng các dữ liệu của thông điệp cần giấu (vd: thay thế các bit ít quan trọng, thay thế trong miền tần số, các kỹ thuật trải phổ, thống kê…) - Phương pháp tạo các phương tiện chứa: Từ thông điệp cần chuyển đi, sẽ tạo ra hợp lý phương tiện chứa, để phục vụ cho việc truyền thông tin đó. 2.1.4.3 Phân loại theo mục đích sử dụng - Giấu thông tin bí mật. - Giấu thông tin thuỷ vân. 2.1.5 Các thành phần trong kỹ thuật giấu tin 2.1.5.1 Phương tiện chứa tin Để có thể che giấu thông tin an toàn và hiệu quả, ngoài việc phải có thuật toán giấu tin tốt, giao thức liên lạc đảm bảo, phương tiện chứa phù hợp cũng là yếu tố quan trọng. Phương tiện chứa C có thể là bất kỳ dạng dữ liệu nào mà máy tính có thể đọc được như file hình ảnh, âm thanh số, bản tin dạng text…Nhưng phương tiện chứa phải có đủ lượng thông tin dư thừa tối thiểu, để có thể giấu thông tin, vì dữ liệu khi biến đổi để giấu tin, có thể bị phát hiện. Có hai yêu cầu đặt ra với phương tiện chứa: Phương tiện chứa tin phải được giữ bí mật. Không sử dụng phương tiện chứa tin đến lần thứ hai. Yêu cầu thứ nhất để tránh kẻ tấn công có phương tiện chứa đó, thì việc giấu tin trở lên vô nghĩa. Yêu cầu thứ hai để tránh kể tấn công có thể so sánh hai “phiên bản” phương tiện chứa đó, để phát hiện những chỗ khác nhau, dẫn đến nghi ngờ về một liên lạc bí mật. Do đó phải huỷ toàn bộ các phương tiện chứa đã được dùng tại phía người gửi, và phương tiện chứa sau khi đã tách lấy thông tin ở người nhận. Để tránh việc nghi ngờ của kẻ tấn công, phương tiện chứa trước khi giấu tin (C) và sau khi giấu tin (S), phải đảm bảo giống nhau về mặt tri giác, sau đó mới đến các yêu cầu về thuộc tính thống kê, về chất lượng… Có thể sử dụng nhiều loại phương tiện chứa khác nhau, nhưng vì lý do phổ biến và dễ thực hiện, ảnh luôn được coi là phương tiện chứa chủ yếu. 2.1.5.2 Thông tin cần che giấu Thông điệp mà hai đối tác cần trao đổi, có thể là bất cứ loại dữ liệu nào. Với kỹ thuật hiện nay, có thể giấu nhiều loại dữ liệu trong phương tiện chứa. Do yêu cầu an toàn, kích thước của phương tiện chứa phải lớn hơn rất nhiều kích thước của thông điệp, nên thông điệp dạng text (có kích thước nhỏ) thường được dùng nhiều nhất. Tuy nhiên người ta có thể giấu cả ảnh, bản đồ với yêu cầu ở mức độ cần thiết, phương tiện chứa là ảnh hay bản đồ khác. 2.1.5.3 Khoá giấu tin Khoá giấu tin là thành phần quan trọng quyết định độ bảo mật của hệ thống giấu tin. Khoá giấu tin có thể phân loại theo hình thức phân phối và ta có hai hình thức: - Phân phối khoá: Một trung tâm sản xuất, phân phối khoá tới các đối tác liên lạc theo một kênh an toàn. Cách làm này khá phức tạp vì đòi hỏi một kênh an toàn để chuyển khoá, khi các đối tác ở xa thì việc chuyển khoá là một vấn đề đáng quan tâm. - Thoả thuận khoá: Hai đối tác có thể trực tiếp thoả thuận khoá với nhau hay thông qua một trung tâm. Khoá được quy ước lấy từ cơ sở dữ liệu nào đó mà hai phía cùng sở hữu. Cách làm này tuy có một số yếu tố bất lợi, nhưng thực hiện đơn giản hơn so với trao đổi khoá. Trong giấu tin bí mật có thể dùng cả khoá bí mật và khoá công khai. Để đảm bảo bí mật liên lạc, khoá giấu tin cần đáp ứng được hai yêu cầu: - Một là khoá giấu tin phải đảm bảo “tính tri giác”, tức là khoá phải góp phần tàng hình thông tin giấu, để tránh bị đối phương phát hiện. - Hai là khoá đồng thời phải đủ mạnh, để nếu đối phương có nghi ngờ và kiểm tra phương tiện chứa, cũng “khó” thể lấy được thông tin giấu trong đó. 2.2 CÁC GIAO THỨC GIẤU TIN Khi một thuật toán giấu tin được sử dụng, thuật toán đó sẽ nằm trong khuôn khổ một giao thức xác định, thích hợp để xử lý dữ liệu. Theo lý thuyết, có ba kiểu giao thức cơ bản: giấu tin thuần tuý, giấu tin với khoá bí mật, giấu tin với khoá công khai. Trong đó kiểu giấu tin sau cùng được xây dựng trên nguyên tắc mật mã khoá công khai. 2.2.1 Giấu tin thuần thuý Giấu tin thuần tuý là hệ thống giấu tin, không yêu cầu phải trao đổi trước một số thông tin bí mật. Trong hệ thống giấu tin thuấn tuý, người giấu tin và người tách tin phải thực hiện cùng một thuật toán nhúng và tách thông tin, thuật toán này phải được giữ bí mật. Định nghĩa 1: Giấu tin thuần tuý Bộ bốn giá trị δ = (C, M, D, E) được gọi là Hệ giấu tin thuần tuý trong đó: C là tập các phương tiện chứa thông tin có thể, M là tập các thông điệp cần giấu |C| ≥ |M|. E: C×M ® C là hàm nhúng và D: C ® M là hàm tách, với tính chất D(E (c, m) ) = m với m € M và c € C. Trong giấu tin thuần tuý, độ bảo mật thông tin dựa trên chính thuật toán, phương tiện chứa trước và sau khi nhận tin giấu cũng phải được bảo vệ cẩn thận. Nếu đối phương tấn công vào nơi cất giữ phương tiện chứa, việc giấu thông tin sẽ không hiệu quả, khi đó đối phương không những phát hiện được việc liên lạc bí mật, mà còn lấy được cả thông tin giấu trong đó. Phương pháp giấu tin thuần tuý phải được kết hợp với việc mã hoá thông tin. Trước tiên việc mã hoá sẽ làm tăng độ bảo mật của thông điệp, sau đó nhúng bản mã vào trong phương tiện chứa. Cách này sẽ làm tăng độ bảo mật và vẫn đảm bảo tính vô hình của kênh liên lạc, nó thực sự khó khăn cho việc phát hiện hay tấn công các thông điệp. 2.2.2 Giấu tin sử dụng khoá bí mật Đối với hệ thống giấu thông tin thuần tuý, độ an toàn phụ thuộc hoàn toàn vào độ bí mật của thuật toán giấu và tách thông tin. Để cho hệ thống an toàn hơn, người ta thực hiện trao đổi một số thông tin bí mật giữa hai đối tác. Trong hệ thống giấu tin với khoá bí mật, người gửi chọn phương tiện chứa thông tin, sử dụng khoá bí mật k, tiến hành nhúng thông điệp vào phương tiện chứa tin đó. Giấu tin với khoá bí mật vẫn phải đảm bảo phương tiện chứa (trước và sau khi giấu tin) phải giống nhau về cảm nhận, để tránh kẻ giám sát phát hiện được phiên liên lạc. Đây là một tiêu chuẩn khi chọn khoá. Định nghĩa 2: Giấu tin sử dụng khoá bí mật Bộ năm giá trị δ = (C, M, K, Dk, Ek) được gọi là hệ giấu tin sử dụng khoá bí mật, trong đó: C là tập các phương tiện chứa có thể, M là tập các thông điệp cần giấu với |C| ≥ |M|, K là tập các khoá bí mật. Ek: C ×M×K ® C và Dk: C ×K ® M với điều kiện Dk(Ek (c, m, k), k) = m với mọi m € M, c € C và k € K. Giao thức truyền thông tin bằng giấu tin sử dụng khoá bí mật, yêu cầu các bên tham gia phải trao đổi khoá trước. Có thể dùng một số đặc tính của chính phương tiện chứa làm khoá, hàm băm tính toán các giá trị này để làm khoá. Người nhận cũng tính hàm băm trên chính các giá trị này, để lấy khoá giải mã tách thông tin. Với cách này, không phải trao đổi khoá trên kênh an toàn, nhưng vì hàm băm không phải là bí mật, nên việc liên lạc bí mật sẽ không đảm bảo. Có thể chọn các thành phần quan trọng trong phương tiện chứa để làm khoá, các thành phần đó nếu bị thay đổi sẽ ảnh hưởng nghiêm trọng tới phương tiện chứa, và có thể nhận ra được. 2.2.3 Giấu tin với khoá công khai Hệ thống giấu tin với khoá công khai cũng yêu cầu có hai khoá: khóa bí mật và khóa công khai. Khóa công khai được lưu trong Cơ sở dữ liệu khoá công khai, giống như mật mã với khoá công khai, và được dùng trong quá trình nhúng thông tin. Khoá bí mật chỉ người nhận mới biết và được dùng trong quá trình tách lấy thông tin, tái tạo lại thông điệp ban đầu. Cách dễ nhất để xây dựng hệ thống giấu tin với khoá công khai là sử dụng hệ mật mã với khoá công khai. Giả sử hai đối tác đã trao đổi khoá công khai của thuật toán mã hoá công khai. Nguyên lý của giấu tin với khoá công khai là dùng hàm giải mã D để giải mã trên mọi phương tiện chứa thông tin C, mà không cần quan tâm việc nó chứa hay không chứa thông điệp bí mật (D là hàm trên tập C). Trong trường hợp phương tiện chứa không có thông tin thu được khi giải mã, ta chỉ thu được các phần tử ngẫu nhiên m, ta gọi là các phần tử “ngẫu nhiên tự nhiên ” của phương tiện chứa. Trong giao thức giấu tin với khoá công khai, khi cố gắng để tách tin, kẻ tấn công chỉ có thể nhận được các thông tin “ngẫu nhiên”, vì không có khoá giải mã tương ứng. 2. 3 GIẤU TIN TRONG DỮ LIỆU ĐA PHƯƠNG TIỆN 2.3.1 Giấu tin trong ảnh Giấu tin trong ảnh, hiện nay, là bộ phận chiếm tỉ lệ lớn nhất trong các hệ giấu tin trong đa phương tiện, bởi lượng thông tin được trao đổi bằng ảnh là rất lớn, mặt khác giấu tin trong ảnh đóng vai trò quan trọng trong các ứng dụng bảo vệ thông tin như: 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ả, điều khiển truy cập, giấu thông tin mật... Chính vì thế vấn đề này đã nhận được sự quan tâm rất lớn của các cá nhân, tổ chức, trường đại học, và viện nghiên cứu trên thế giới. Thông tin được giấu vào dữ liệu ảnh nhưng chất lượng ảnh ít thay đổi, và “khó” biết được đằng sau ảnh đó mang thông tin có ý nghĩa. Ngày nay, khi ảnh số đã được dùng phổ biến, thì giấu tin trong ảnh đã đem lại nhiều ứng dụng quan trọng trong đời sống xã hội. Ví dụ như các nước phát triển, chữ kí tay đã được số hoá, lưu trữ, sử dụng như là hồ sơ cá nhân của các dịch vụ ngân hàng và tài chính, nó được dùng để nhận thực trong các thẻ tín dụng của người tiêu dùng. Một đặc điểm của giấu tin trong ảnh là thông tin được giấu trong ảnh một cách vô hình. Nó như là một cách mà truyền thông tin mật cho nhau mà người khác “khó” thể biết được, bởi sau khi giấu tin, thì chất lượng ảnh gần như không thay đổi, đặc biệt là đối với ảnh mầu hay ảnh xám. 2.3.2 Giấu tin trong audio Giấu tin trong audio mang đặc điểm riêng, không giống với giấu tin trong đối tượng đa phương tiện khác. Một trong những yêu cầu cơ bản của giấu tin 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 gốc. Để đảm bảo yêu cầu này, kỹ thuật giấu tin trong ảnh phụ thuộc vào hệ thống thị giác của con người - HVS (Human Vision System), kỹ thuật giấu tin trong audio lại phụ thuộc vào hệ thống thính giác HAS (Human Auditory System). Một vấn đề khó khăn ở đây là hệ thống thính giác của con người nghe được các tín hiệu ở các giải tần rộng và công suất lớn, nên đã gây khó dễ đối với các phương pháp giấu tin trong audio. Nhưng thật may là HAS lại kém trong việc phát hiện sự khác biệt các dải tần và công suất, điều này có nghĩa là các âm thanh to, cao tần có thể che giấu được các âm thanh nhỏ thấp một cách dễ dàng. Các mô hình phân tích tâm lí đã chỉ ra điểm yếu trên, và thông tin này sẽ giúp ích cho việc chọn các audio thích hợp cho việc giấu tin. Vấn đề khó khăn thứ hai đối với giấu tin trong audio là kênh truyền tin. Kênh truyền hay băng thông chậm sẽ ảnh hưởng đến chất lượng thông tin sau khi giấu. Ví dụ để nhúng một đoạn java applet vào một đoạn audio (16 bit, 44.100 Hz) có chiều dài bình thường, thì các phương pháp nói chung cũng cần ít nhất là 20 bit/s. Giấu tin trong audio đòi hỏi yêu cầu rất cao về tính đồng bộ và tính an toàn của thông tin. Các phương pháp giấu tin trong audio đều lợi dụng điểm yếu trong hệ thống thính giác của con người. 2.3.3 Giấu tin trong video Cũng giống như giấu tin trong ảnh hay trong audio, giấu tin trong video cũng được quan tâm, và 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 và bảo vệ bản quyền tác giả. Các kỹ thuật giấu tin trong video phát triển mạnh mẽ, và cũng theo hai khuynh hướng là thuỷ vân số và data hiding. 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 là phân phối tin giấu dàn trải theo tần số của dữ liệu chứa (gốc). Người ta đã dùng hàm cosin riêng và hệ số truyền sóng riêng để giấu tin. Trong các thuật toán khởi nguồn, kỹ thuật cho phép giấu ảnh vào video, nhưng thời gian gần đây các kỹ thuật cho phép giấu cả âm thanh và hình ảnh vào video. Phương pháp Swanson đã giấu theo khối, đã giấu được 2 bít vào khối 8*8. Gần đây nhất là phương pháp Mukherjee, giấu audio vào video sử dụng cấu trúc lưới đa chiều. Kỹ thuật giấu tin sử dụng cả đặc điểm thị giác và thính giác của con người. 2. 4 PHƯƠNG PHÁP GIẤU TIN TRONG MÔI TRƯỜNG ĐA PHƯƠNG TIỆN Có nhiều phương pháp giấu tin trong các phương tiện chứa, nhưng trong phần này chỉ xin trình bày phương pháp thay thế. Đó là thay thế các phần tử ít quan trọng của phương tiện chứa bằng các bit của thông điệp cần chuyển đi. 2.4.1 Một số ký hiệu Ký hiệu c là phương tiện chứa, giả sử nó có độ dài là l(c), được biểu diễn bằng chuỗi các thành phần ci (1 ≤ i ≤ l(c)). Ví dụ là các vectơ ảnh, dòng các ảnh theo thứ tự từ trái sang phải và từ trên xuống dưới, hoặc chuỗi các mẫu theo thời gian của âm thanh số. Các giá trị của ci là {0,1}, khi đó là ảnh đen trắng. Các giá trị của ci nằm trong (0, 256), trường hợp đó là các ảnh lượng tử hoá hay các ảnh số. Ảnh màu là phương tiện được sử dụng nhiều nhất hiện nay, có nhiều cách biểu diễn màu, trong đó hệ màu RGB là phổ biến nhất. Phương tiện chứa đã có tin giấu, ký hiệu là s, là chuỗi các phần tử si, và độ dài phương tiện chứa (đã có giấu tin) không thay đổi. Khoá được dùng để giấu tin, ký hiệu là k. Thông điệp bí mật cần giấu là m, có độ dài là l(m). Các bit của m là mi, ta có 1 ≤ i ≤ l(m). mi có giá trị là 0,1 trừ trường hợp đặc biệt. 2.4.2 Nguyên lý giấu tin bằng cách thay thế Giấu tin bằng cách thay thế hiện đang rất phổ biến, kỹ thuật giấu tin này không làm tăng kích thước của phương tiện chứa. Khi kết hợp với các thuật toán khác để “khảo sát môi trường” quanh điểm cần giấu tin, kẻ giám sát rất khó phát hiện được các thông tin cần giấu. Lưu ý là giấu tin ở đây không có nghĩa là hành động giấu thực tế, việc giấu tin dựa vào các quy ước. Nếu tính chất nào đó của một phần tử trong phương tiện chứa thoả mãn điều kiện, thì xem như đã giấu tin vào phần tử đó. Khi giấu tin mật, người ta có thể giấu tin trong nhiều loại phương tiện chứa khác nhau, tuy nhiên với điều kiện kỹ thuật hiện nay, phương tiện chứa là ảnh được lựa chọn nhiều nhất, bởi tính phổ biến của ảnh và các phương tiện tạo ảnh số, đồng thời đáp ứng được yêu cầu bảo mật và dung lượng. Phương tiện chứa như âm thanh số hiện nay cũng rất phổ biến, nhưng gặp nhiều khó khăn do kỹ thuật giấu tin phức tạp hơn. Có hai cách thay thế: Thay thế các bit ít quan trọng (LSB) (Least Significant Bit) được thực hiện với ảnh màu (ví dụ loại 16 bit và 24 bit) và ảnh đa cấp xám. Với các loại ảnh này, mỗi điểm ảnh được biểu diễn bằng số lượng lớn các bit, vai trò các bit là không giống nhau. Nếu có sự thay đổi ở các bit ít quan trọng nhất, thì phương tiện chứa cũng bị biến động không đáng kể, và đối phương cũng khó nhận ra. Người giấu tin sẽ thay thế các bit LSB trong phương tiện chứa tin bằng các bit của thông điệp bí mật. Người nhận có thể dễ dàng tách các tin mà anh ta có hiểu biết nhất định về thuật toán giấu thông tin mật và khoá giấu thông tin. Thay thế các bit trong các vùng ma trận ảnh: Phương pháp này khó thực hiện hơn, nhưng bù lại có tác dụng hơn so với việc thay thế LSB. Ta hãy xét các file ảnh đen trắng, mỗi điểm ảnh chỉ được biểu diễn bằng một bit có trạng thái 0 hoặc 1, biểu diễn điểm đó là đen hay trắng. Người ta không thể vận dụng phép thay thế LSB và cũng không thể tuỳ tiện đảo bit 0 → 1 hay ngược lại, vì làm như vậy sẽ dễ xuất hiện các chấm màu lạ, dễ bị phát hiện. Người ta phải chia ma trận ảnh ra thành các khối không giao nhau, thường là các khối hình vuông, hình chữ nhật. Dựa trên các tính chất của mỗi khối đó, người ta giấu tin bằng phép đảo bit theo quy ước. 2.4.3 Thay đổi các bit ít quan trọng nhất Ý tưởng Ta biết rằng khi một số được biểu diễn bằng một dãy các giá trị nhị phân, vai trò của các bit là rất khác nhau trong dãy đó, khi các bit ít quan trọng mà bị thay đổi, thì giá trị mà nó biểu diễn thay đổi không đáng kể. Thuật toán Thay thế các bit LSB (các bit ít quan trọng nhất) có lẽ là kỹ thuật đơn giản nhất trong các kỹ thuật giấu tin. Ta xét phương tiện chứa là ảnh, sẽ trình bày các bước cơ bản của thuật toán giấu tin, qua việc thay đổi LSB. + Lựa chọn tập con { j1,….., jl(m)} các phần tử trong phương tiện chứa. + Thực hiện thay đổi LSB của bởi mi (mi có giá trị 0 hoặc 1). Khi tách thông tin ra khỏi phương tiện chứa, người ta thực hiện ngược lại: các điểm tương ứng được lựa chọn, các bit LSB của các phần tử được lựa chọn này, được tách ra theo đúng quy ước, rồi tất cả được ghép lại để có được thông tin ban đầu. Thuật toán 2.4.3.1: Quá trình nhúng bằng phương pháp thay đổi LSB For i : = 1 to l(c) do si : = ci ; End for For i : = 1 to l(m) do Tính toán ji để lưu trữ bit thứ i của thông điệp; : = ; mi : = LSB() ; End for Thuật toán 2.4.3.2 : Quá trình tách bằng phương pháp thay đổi LSB For i : = 1 to l(m) do Tính toán ji để lưu trữ bit thứ i của thông điệp ; mi : = LSB() ; End for Ảnh dùng làm phương tiện chứa là ảnh mầu hoặc là ảnh đa cấp xám. Ảnh đã giấu tin có kích thước không đổi so với ảnh làm phương tiện chứa ban đầu. Ảnh F dùng làm phương tiện chứa Thuật toán lựa chọn các điểm giấu tin Giấu tin bằng cách thay đổi LSB Ảnh F’ đã chứa tin Hình 5 : Các thành phần trong thuật toán giấu tin LSB Nhận xét Phương pháp giấu tin mật bằng cách thay đổi các bit LSB là kỹ thuật đơn giản, dễ thực hiện, nhưng đồng thời cũng dễ bị tấn công phá vỡ. Nếu các điểm trong phương tiện chứa được lựa chọn một cách tuần tự, liên tục, thì kẻ tấn công bình thường nhất, với năng lực tính toán thông thường, cũng có thể dễ dàng tách các bit, và tái lập được thông điệp đã giấu vào trong đó. Đây là loại bảo mật mà độ an toàn dựa trên giả thiết “đối phương không hiểu biết gì về thuật toán giấu tin đang dùng”. Để sử dụng phương pháp giấu tin này an toàn, người ta phải mã hoá thông điệp trước khi giấu. Một phép mã hoá đơn giản cũng sẽ làm cho kẻ tấn công lạc đường, bởi khi tách tin từ các LSB và sắp xếp chúng lại, kẻ tấn công sẽ bị nhầm với các ký tự ngẫu nhiên, khi đó phương tiện chứa được xem là không mang tin. Với cách này, độ mật của hệ thống sẽ tuỳ thuộc vào thuật toán mã hoá, kỹ thuật giấu tin đảm nhận vai trò tàng hình phiên liên lạc, để không gây nên sự chú ý của đối phương. Ngoài cách tiền xử lý, mã hoá thông tin cần gửi đi, người ta có thể dùng cách lựa chọn các điểm giấu tin trên phương tiện chứa theo một thuật toán quy ước giữa hai phía người gửi và người nhận. Ví dụ như thuật toán sử dụng một mầm khoá k, thông qua bộ tạo số giả ngẫu nhiên, để chọn các vị trí giấu tin. (còn gọi là phương pháp lặp ngẫu nhiên). Cả hai phía đối tác cùng sở hữu một khoá giấu tin k, được sử dụng như một mầm cho bộ tạo số ngẫu nhiên, chuỗi ngẫu nhiên được tạo ra là k1,…., kl(m). j1 : = k1 ; ji : = ji-1 + ki ; với i ≥ 2 Thuật toán 2.4.3.3 : Nhúng thông tin sử dụng lặp ngẫu nhiên. For i : = 1 to l(c) do si : = ci ; End for Tạo chuỗi ngẫu nhiên ki sử dụng mầm khoá k: n : = k1 ; for i : = 1 to l(m) do sn : = cn ; mi : = LSB(cn) ; n : = n + ki ; end for Thuật toán 2.4.3.4 : Tách thông tin sử dụng lặp ngẫu nhiên Tạo chuỗi ngẫu nhiên ki sử dụng mầm khoá k: n : = k1 ; for i : = 1 to l(m) do mi : = LSB(cn) ; n : = n + ki ; end for Khi dùng bộ tạo số giả ngẫu nhiên để xác định vị trí các điểm sẽ giấu tin, nghĩa là khoảng cách giữa các điểm dùng để nhúng tin được quyết định bởi một số giả ngẫu nhiên, như vậy độ an toàn của phương pháp giấu tin này sẽ tăng lên khá nhiều (tuỳ thuộc vào thuật toán tạo khoá). Tại phía người nhận, nhờ có chung mầm khoá và cùng một thuật toán, anh ta có thể dễ dàng xác định được vị trí của các điểm đã thay thế LSB, để tái tạo lại các thông tin đã được giấu vào đó. Phương pháp giấu tin này có thể áp dụng với nhiều loại phương tiện chứa khác nhau, nhưng thường dùng nhất là với các file hình ảnh. Đối với ảnh đa cấp xám hay ảnh mầu 16 bit hoặc 24 bit, đây là điều kiện lý tưởng, bởi khi thay thế các bit LSB của một điểm ảnh, rất khó có thể nhận ra sự thay đổi độ xám hay mầu sắc, bởi nó biến đổi không đáng kể. Đối với file âm thanh, do có yếu tố thời gian tác động, có cảm giác rằng khi giấu tin bằng cách thay đổi LSB, sẽ rất khó bị phát hiện, nhưng thực tế không phải vậy. Rất khó xác định các giá trị LSB trong các file âm thanh, thêm vào đó, khả năng cảm nhận âm thanh của con người là khá tốt, nên những phép biến đổi sẽ gây nghi ngờ và dễ bị phát hiện. Để giấu tin trong các file âm thanh, người ta phải lợi dụng các thành phần pha, tiếng vọng, và với kỹ thuật thực hiện khó hơn nhiều. Phương pháp giấu tin vào các vùng của phương tiện chứa Ý tưởng Như trên đã trình bày, khi giấu tin người ta cố gắng làm giãn cách các điểm giấu tin để kẻ giám sát khó phát hiện. Đó là với ảnh màu và ảnh đa cấp xám, với ảnh đen trắng thì mỗi điểm chỉ được biểu diễn bằng một bit. Không có khái niệm bit LSB nữa, lúc này, người ta không lấy điểm ảnh làm phần tử cơ bản, mà phải lựa chọn khối điểm ảnh (vùng ảnh) làm phần tử cơ bản, để giấu tin. Định nghĩa: Vùng của phương tiện chứa là một tập con khác rỗng {c1, …, cl(c)}. Bằng việc chia phương tiện chứa thành các vùng không giao nhau, ta có thể thực hiện: - Giấu thông tin trên một vùng, hay một số vùng của phương tiện chứa tin, chứ không phải trên toàn bộ phương tiện chứa tin. - Giấu một bit thông tin lên một vùng phương tiện chứa tin, chứ không phải lên một phần tử của phương tiện chứa tin. Thuật toán Một bit chẵn lẻ của một vùng chứa I trong phương tiện chứa, được tính theo công thức: p( I ) = Trong bước nhúng, l(m) được chọn để không giao nhau với các vùng trong phương tiện chứa tin Ii (1 ≤ i ≤ l(m)), mỗi bước mã một bit mi bí mật trong bit chẵn lẻ p(Ii). Nếu bit chẵn lẻ của một vùng không phù hợp với bit mi, một LSB của giá trị trong Ii được thay đổi. Kết quả là p(Ii) = mi. Trong quá trình giải mã, các bit chẵn lẻ của tất cả các vùng chọn lựa, được tính và sắp xếp để tái cấu trúc thông điệp. File ảnh bitmap đen trắng F File ảnh bitmap đen trắng F Hệ thống giấu tin bí mật File ảnh đã giấu tin F’ File thông điệp cần giấu P Ma trận khoá giấu tin k Hình 6: Giấu tin trong ảnh đen trắng Sau khi chia ảnh thành các khối nhỏ, ta chọn các khối để giấu tin theo một quy tắc nào đó. Ví dụ chọn các khối liên tục và tuần tự, giấu theo quy ước chẵn lẻ: Sau khi giấu tin, tổng số bit 1 trong một khối và bit thông tin giấu sẽ có cùng tính chẵn lẻ. - Nếu cần giấu bit 1 vào một khối, để thoả mãn điều kiện chẵn lẻ thì + Nếu tổng các bit 1 trong một khối là lẻ, thì ta không cần thực hiện gì và coi như đã giấu. + Nếu tổng các bit 1 trong một khối là chẵn, thì ta phải thay đổi khối đó sao cho thoả mãn điều kiện, bằng cách đảo trị ngẫu nhiên một bit. - Nếu cần giấu bit 0 vào khối, ta cũng làm tương tự. Quá trình giấu tin lặp đi lặp lại như vậy, cho tới khi hết các bit của thông điệp cần giấu. Sau khi giấu xong, ghép lại các phần Header, bảng màu… (các thành phần được tách ra từ ảnh F ban đầu) cùng với dữ mới này, ta có ảnh F’ đã giấu thông tin. Nhận xét Thuật toán giấu tin này phức tạp hơn LSB không nhiều, kích thước của khối (m × n) có thể xem như là khoá của quá trình giấu tin. Người nhận căn cứ trên các giá trị m, n để khôi phục lại thông tin đã được giấu. Nếu biết m, n, kẻ tấn công có thể dễ dàng lấy thông tin giấu trong đó. Ta đã biết vị trí của các bit bị “thay đổi” càng ở xa nhau, thì càng khó bị phát hiện, đồng thời để chống lại các tấn công dựa trên các phép phân tích thống kê, người ta sẽ trải đều các bit của thông điệp cần giấu trên toàn bộ phương tiện chứa, vì vậy chọn kích thước của các khối cần dựa trên tỷ lệ giữa độ lớn của phương tiện chứa và độ lớn của thông điệp. Ví dụ cần giấu thông điệp có độ dài khoảng 100 ký tự (khoảng 800 bit nhị phân) vào trong ảnh kích thước 512 × 512 pixel, cần tối thiểu 800 khối. Để đáp ứng hai yêu cầu trên kích thước mỗi khối sẽ không vượt qua 327 điểm ảnh. Với mục đích giấu tin bí mật thì càng giấu được nhiều càng tốt, nhưng để đảm bảo an toàn tránh bị phát hiện, cần phải giới hạn tối đa kích thước thông điệp có thể giấu trong đó. Ví dụ với tỷ lệ an toàn là 60 (60 pixel cho một bit), file ảnh 512 × 512 nêu trên chỉ cho phép giấu thông điệp có kích thước tối đa: 4369 bit tương đương với khoảng 546 ký tự ASCII. Cũng giống như phương pháp thay đổi LSB, để tăng độ bảo mật, người ta không giấu tin tuần tự, mà dùng thuật toán lựa chọn các khối để giấu tin. Cách này thực hiện đơn giản, hiệu quả cao. Một cách khác là thay đổi kích thước của các khối giấu tin (thay đổi m, n) theo một thuật toán thống nhất giữa hai phía người gửi, nhận. Cả hai cách trên đều giống như việc sử dụng đồng thời hai khoá, và độ phức tạp để thám mã tăng lên nhiều. Hoán vị giả ngẫu nhiên Ý tưởng: Trong các thuật toán giấu tin đã trình bày trên đây, các thông tin bí mật được giấu theo cách tuần tự cho dù là giấu trong các khối (hoặc các điểm), liên tiếp hay bỏ cách. Cách làm này đơn giản hơn cho người giấu tin, nhưng dễ bị tấn công, bởi chúng có khả năng kết hợp giữa tấn công vét cạn và nhận dạng tự động [5,6]. Người ta còn có thể giấu tin một cách ngẫu nhiên, để tăng cường độ bảo mật. Nếu một phương tiện chứa tin mà tất cả các bit của nó đều có thể truy nhập được trong quá trình nhúng tin, các bit thông điệp bí mật có thể được phân bố ngẫu nhiên trên toàn bộ phương tiện chứa mà không cần tuân theo một thứ tự nào. Kỹ thuật này gây nhiều khó khăn cho kẻ muốn tấn công, bởi chúng khó có thể xác định được trật tự khi gắn vào. Thuật toán Cách thứ nhất: Để làm như vậy người gửi phải dùng chương trình tạo số giả ngẫu nhiên, tạo ra chuỗi j1, …, jl(m) các phần tử chỉ mục, và lưu bit thứ k trong phần tử chỉ mục thứ jk. Cách giấu tin như vậy rất dễ xảy ra xung đột (giấu nhiều hơn một bit vào một điểm của phương tiện chứa), vì chương trình tạo số giả ngẫu nhiên không thực hiện việc kiểm soát các giá trị đầu ra. Khi có xung đột, người gửi có thể chèn thử nhiều hơn một bit vào một phần tử của phương tiện chứa, bằng cách sửa một số bit của nó. Tuy nhiên nếu số lượng các bit của thông điệp cần giấu, ngắn hơn nhiều so với số các phần tử của phương tiện mang tin, số xung đột sẽ không đáng kể, có thể tính được xác suất xảy ra xung đột bằng công thức sau: p 1- exp Trong công thức này, khi l(c) là hằng số, p hội tụ về 1 khi l(m) tăng. Chúng ta có thể thấy nếu với thông điệp rất ngắn so với phương tiện chứa tin, thì xác suất xảy ra xung đột là không đáng kể. Ví dụ nếu dùng ảnh 600 * 600 pixel để làm phương tiện chứa tin, nếu lưu vào trong đó thông điệp dài 200 bit và chọn 200 pixel để mang tin thì xác suất có thể xảy ra xung đột là 5%. Nhưng nếu ta chọn 600 pixel để truyền thông tin, thì xác suất là 40 %, như vậy là quá lớn. Cách thứ 2: Để giải quyết vấn đề xung đột, ta cần kiểm soát đầu ra của bộ tạo số giả ngẫu nhiên. Rất đơn giản, ta kiểm soát các phần tử đã được giấu tin trong đó, chỉ giấu tin vào các phần tử chưa được giấu tin mà thôi. Nhận xét Trong kỹ thuật giấu tin này, người ta vẫn dùng thuật toán thay đổi các bit LSB, hay thuật toán giấu tin trong các khối dữ liệu, nhưng thuật toán tạo số giả ngẫu nhiên chính là chìa khoá của phép mã hoá và giải mã. Người nhận cần phải có nó, để xác định được vị trí và trình tự các điểm ảnh có giấu tin, như vậy mới có thể tách và khôi phục lại thông điệp được gửi đi. Độ phức tạp của thuật toán tăng lên đáng kể. Giảm chất lượng ảnh để giấu tin. Ý tưởng Với các thuật toán trên đây, chủ yếu dùng để giấu thông điệp dạng text vào phương tiện chứa (được sử dụng nhiều nhất là ảnh). Do kích thước các file có tỷ lệ chênh lệch khá lớn, ta có thể dễ dàng lựa chọn kích thước khối giấu tin và thuật toán. Chấp nhận giảm chất lượng ảnh để giấu tin cũng là một trường hợp đặc biệt của hệ thống giấu tin thay thế, trong đó bức ảnh đóng vai trò là phương tiện chứa tin, đồng thời là thông điệp bí mật. Thuật toán Với một ảnh làm phương tiện chứa và một ảnh bí mật cần gửi đi, bằng các kỹ thuật tách các bit LSB, người gửi thay đổi 4 bit có trọng số thấp nhất (của các giá trị xám hoặc màu) của ảnh làm phương tiện chứa, bằng 4 bit có trọng số cao nhất của ảnh bí mật. Tại phía người nhận một thủ tục ngược lại sẽ được thực hiện để tách các dữ liệu bí mật ra khỏi phương tiện chứa. Trong nhiều trường hợp, khi thay đổi 4 bit có trọng số thấp nhất của phương tiện chứa, người ta khó nhận thấy được sự suy giảm chất lượng của ảnh phương tiện chứa. Nhưng với 4 bit có trọng số cao nhất trong ảnh bí mật, người nhận có thể tái tạo lại được một hình ảnh khá hoàn hảo của thông điệp truyền đi. Giấu tin trong ảnh màu Trong điều kiện khoa học kỹ thuật phát triển như hiện nay, ảnh màu đang ngày càng phổ biến và đang dần thay thế ảnh đen trắng. Tính đa dạng về màu sắc trong ảnh làm tăng khả năng cảm nhận của con người, nhưng cũng làm cho con người khó nhận biết những thay đổi nhỏ về màu sắc. Vì những điều kiện đó, ảnh màu trở thành phương tiện chứa hữu hiệu đối với các kỹ thuật giấu tin. Ảnh màu có dung lượng lớn, nên cho phép giấu được nhiều thông tin hơn và khó bị kẻ giám sát phát hiện ra. Tuy vậy với nhiều loại định dạng màu khác nhau như hiện nay, để có thể giấu tin trong ảnh màu, chúng ta phải hiểu rõ bản chất của từng loại ảnh, qua đó sẽ dùng kỹ thuật giấu tin tương ứng. Sau đây chúng ta tìm hiểu các kỹ thuật giấu tin với các loại định dạng ảnh khác nhau. 2.4.7.1 Giấu tin trong các định dạng ảnh dùng bảng màu Ý tưởng Ảnh có sử dụng bảng màu thường gồm hai phần, một bảng màu xác định N màu và một danh sách cặp chỉ số (i, ci) gán vectơ màu ci cho mỗi chỉ mục i, phần tử thứ hai là dữ liệu ảnh thực sự được gán chỉ số màu cho mỗi điểm chứ không phải là một màu. Với cách biểu diễn này, các ảnh có số lượng màu nhỏ sẽ có dung lượng giảm đáng kể. (Các định dạng chủ yếu là GIF và BMP). Thuật toán Đối với loại ảnh này, do có cấu tạo dữ liệu đặc biệt, người ta có thể giấu tin vào bảng màu, dựa trên trật tự sắp xếp trong bảng màu. Trong ảnh có sử dụng N màu, như vậy có thể có N! cách sắp xếp các màu trong bảng màu, với giá trị N không lớn, N! cũng đủ độ lớn để cho ta mã hoá một thông điệp cỡ nhỏ. Nhưng giấu tin theo cách này rất dễ bị tổn thương, chỉ cần vô tình sắp xếp lại bảng màu, các thông tin giấu trong đó sẽ không còn ý nghĩa nữa, mặc dù lúc này ảnh không bị tác động gì. Phương pháp giấu tin bằng cách thay đổi giá trị các bit LSB, cũng có thể sử dụng tốt đối với loại ảnh này. Nhưng phải sắp xếp lại bảng màu sao cho các giá trị lân cận nhau trong bảng màu phải rất gần nhau về mặt cảm nhận. Vì cấu trúc dữ liệu ảnh này không yêu cầu các giá trị màu lân cận nhau (trong bảng màu) phải tương đối giống nhau về cảm nhận, nếu khi thay thế LSB, giá trị màu của một điểm sẽ thay đổi rất ít, nhưng khi đó có thể sẽ tham chiếu vào một màu khác và điểm có giấu tin lại có màu khác quá nhiều so với xung quanh, thì đó là một sai lầm nghiêm trọng về kỹ thuật. Việc sắp xếp lại bảng màu cũng cần phải dựa trên độ nhạy trong cảm nhận của mắt người, phải lựa chọn sắp xếp theo thành phần mà mắt người có cảm nhận thay đổi kém nhất. Sau khi sắp xếp, người ta có thể thay đổi các bit LSB, các thay đổi của giá trị màu sẽ ánh xạ sang một màu gần với màu ban đầu hơn và mắt người sẽ khó cảm nhận hơn. Nhận xét Các định dạng ảnh màu có sử dụng bảng màu, trước đây được dùng khá nhiều do ưu điểm là kích thước nhỏ. Nhưng gần đây các nhà nghiên cứu đã đề xuất khá nhiều thuật toán nén mạnh, cho phép có được ảnh màu chất lượng cao và nhiều màu nhưng dung lượng nhỏ. Các ảnh màu có dùng bảng màu đang dần được ít sử dụng, và các phương pháp giấu tin trên chúng cũng ít dần. 2.4.7.2 Giấu tin trong các ảnh màu thông thường Với kỹ thuật hiện đại, thuật toán nén có chất lượng cao và dung lượng của thiết bị lưu trữ ngày càng lớn, dùng ảnh màu chất lượng đang trở lên phổ biến hơn. Các ảnh màu (ví dụ như loại 16 bit và 24 bit) và ảnh đa cấp xám (từ đây sẽ gọi chung là ảnh màu) – do có quá nhiều màu và cấp độ màu, nên thực sự là môi trường lý tưởng để giấu tin và người ta có thể áp dụng nhiều kỹ thuật giấu tin trên đó. Ý tưởng Với kỹ thuật giấu tin bằng cách thay đổi các giá trị LSB, người ta có thể thay đổi không chỉ 1 bit, mà còn nhiều hơn, để tăng thêm tỷ lệ tin được giấu. Các nghiên cứu sinh học cho thấy, hệ cảm nhận của mắt người rất kém nhạy cảm với màu xanh dương tức là có thể thay đổi nhiều hơn, mà vẫn khó bị phát hiện bằng mắt thường. Thuật toán Như đã nói trên, ảnh màu thực sự là môi trường lý tưởng để giấu tin. Đối với thuật toán thay đổi LSB, thay thế theo quy ước rồi ghép ngược trở lại, tuỳ theo kích thước của thông điệp và kích thước ảnh, ta có thể thay đổi tại một hay một số bit LSB trong ba thành phần màu RGB. Riêng thành phần Blue là khi thay đổi khó bị phát hiện nhất, nên ta có thể thay đổi một số lượng bit nhiều hơn trong thành phần đó, mà vẫn có thể đảm bảo an toàn. Đối với phương pháp giấu tin trong các khối của phương tiện chứa, để có các ma trận ảnh nhị phân đầu tiên ta tách lấy các giá trị LSB của mỗi điểm ảnh từ ảnh màu F đó, như vậy từ ảnh màu đã tạo ra được ảnh đen trắng F1 với kích cỡ (số điểm ảnh) tương đương và một phần “phụ” F2. Với ảnh đen trắng F1 này người ta giấu tin theo thuật toán giấu tin trong các khối ảnh đen trắng đã nêu trên, và thu được ảnh đen trắng F1’. Sau đó ta lại ghép ngược ảnh đen trắng F1’ này vào với thành phần F2 đã tách ra trước đây, để có được ảnh màu đã giấu tin F’. Như vậy trong chương trình ta chỉ cần có thêm thủ tục để tách các bit LSB từ các ảnh màu. Với phương pháp này, ta sẽ không phải thực hiện việc kiểm tra các điểm lân cận hay tính hệ số phân bố bit D. Tách bit LSB Kết hợp Phần ảnh F2 Ảnh màu F Ảnh màu F’ Giấu tin Ảnh BW F1 Ảnh BW F1’ Hình 7: Sơ đồ nguyên lý giấu tin trong ảnh màu Nhận xét - Xét trên khía cạnh bảo mật: Giấu tin trong ảnh màu có độ bảo mật không mạnh hơn so với ảnh đen trắng, về tỷ lệ thông tin giấu cũng không cao hơn (do ảnh màu thường có kích thước lớn hơn ảnh đen trắng). - Xét về khả năng che giấu tin: Giấu tin trong ảnh màu có khả năng che giấu tin cao hơn nhiều, do trong ảnh màu khó thể nhận biết được sự thay đổi các màu với mức độ nhỏ. Phương pháp giảm chất lượng ảnh để giấu tin trên đây có thể coi như một trường hợp riêng của giấu tin trong ảnh màu, trong đó người ta giấu một ảnh màu trong một ảnh màu khác.

Các file đính kèm theo tài liệu này:

  • docNghiên cứu kỹ thuật che giấu tin trong tài liệu số hoá.doc