Giới thiệu về Steganography

15:02 | 04/04/2007

Trong những năm gần đây, chúng ta thường nghe nói nhiều đến thuật ngữ Steganography. Đây là một kỹ thuật mà theo nhiều chuyên gia trong lĩnh vực này - là một bộ môn nghệ thuật và khoa học nhằm che giấu sự tồn tại của thông tin. Khác với mật mã, mục tiêu của Steganogrpahy là che giấu các thông báo cần giữ bí mật trong các dữ liệu “vô hại” khác để đối phương không thể phát hiện được sự hiện diện của thông báo.

Dưới đây là hình ảnh minh họa cho kỹ thuật này:



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.
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ó.
Vậy Steganography thực chất là gì và lịch sử của nó ra sao?
Thực ra, kỹ thuật này đã có từ rất lâu. Thuật ngữ Steganography có xuất xứ từ tiếng Hy Lạp cổ (Stanos có nghĩa là phủ, còn graphy là viết hoặc vẽ). Thời đó, để gửi thông tin mật đi, người ta dùng các bảng gỗ khắc các thông báo và hình ảnh cần giấu rồi phủ sáp ong lên hoặc xăm tin tức lên đầu của người mang tin, để một thời gian cho tóc mọc lại, rồi lại cạo trọc đi khi muốn đọc bản tin đó... Thời kỳ đầu của Chiến tranh Thế giới lần thứ 2, quân đội Đức dùng kỹ thuật này dưới dạng mực không màu (nguồn mực này có thể là sữa, nước hoa quả, nước tiểu... Khi muốn đọc chỉ cần hơ nóng lên). Khi kỹ thuật này đã trở nên dễ bị phát hiện, người ta đã cải tiến và lại dùng null ciphers - các kỹ thuật dùng những bản tin có vẻ ngoài hoàn toàn bình thường. Người nhận sẽ ghép các từ theo quy luật nào đó (ví dụ các ký tự thứ ba của mỗi từ) sẽ nhận được một thông báo bí mật…
Ngày nay, do sự bùng nổ của cuộc cách mạng trong lĩnh vực tin học - điện tử  - viễn thông mà đại diện cho nó là mạng Internet, cùng với sự phát triển vượt bậc của bộ môn xử lý số tín  hiệu, các kỹ thuật Steganography được hồi sinh trở lại và ngày càng đa dạng hơn, đặc biệt là với kỹ thuật dùng các vật chứa là các tệp hình ảnh và âm thanh. Chúng có hai đặc điểm đáng lưu ý:
Các hình ảnh và âm thanh số hóa có thể biến đổi mà không làm mất đặc tính của chúng;
Con người không có khả năng phân biệt những thay đổi nhỏ về màu sắc hình ảnh hay chất lượng âm thanh.
Trong xử lý ảnh, hình ảnh có thể được mô tả như một mảng số biểu diễn cường độ sáng tại những điểm khác nhau. Cường độ sáng hay các khoảng cách màu được gọi là các pixel. Việc lấy mẫu là quá trình đo giá trị của hàm hình ảnh f(x,y) tại những điểm rời rạc. Mỗi mẫu là một ô hình ảnh (pixel) và kích thước của hình ảnh sẽ được đo theo pixel. Cũng vì thế, độ phân giải của hình ảnh theo không gian là kích thước vật lý của pixel trong hình ảnh.
Mỗi pixel nói chung được lưu dưới dạng 8 bit hay 24 bit. Với biểu diễn 24 bit,  mỗi pixel trải trên 3 byte, mỗi byte ứng với các màu đỏ, xanh da trời và xanh lá cây (RGB). Các màu là sự kết hợp của 3 màu trên. Mỗi byte có giá trị từ 0 - 255 ứng với cường độ màu. Màu tối nhất có giá trị 0, màu sáng nhất có giá trị 255.
Biểu diễn 8 bit có ưu điểm là kích thước nhỏ song nhược điểm là chỉ có 256 mầu để dùng. Điều này có thể là vấn đề tiềm ẩn trong quá trình che giấu. Thường thì mầu ở gam xám hay được dùng (chẳng hạn GIF) vì nó thay đổi mầu từ từ sẽ khó phát hiện hơn sau khi hình ảnh được che giấu với thông báo mật. Các hình ảnh biểu diễn 24 bit linh hoạt hơn do số mầu lớn (trên 16 triệu), vượt quá khả năng cảm nhận thị giác của con người, làm cho việc phát hiện  thông báo mật ẩn trong nó rất khó. Có thể mã vào một hình ảnh 24 bit một lượng lớn dữ liệu cần che giấu nhưng khi gửi qua một hệ thống mở như Internet, nhược điểm chính đối với hình ảnh 24 bit là kích thước quá lớn  (thường là cỡ MB).
Có rất nhiều phương pháp để che giấu thông tin trong các hình ảnh số nhưng có ba phương pháp phổ biến là: Gài hay chèn vào bit có trọng số nhỏ nhất; ngụy trang và lọc; các thuật toán và phép biến đổi.
Trong số đó, thông dụng nhất là phương pháp chèn bit có trọng số nhỏ nhất (LSB). Ví  dụ: 11111111 là một số nhị phân 8 bit. Bit tận cùng bên phải được gọi là bit LSB vì sự thay đổi của nó có ảnh hưởng ít nhất đến giá trị của số. Khi đó, nếu thay thế hay ghi đè LSB của mỗi byte bằng một giá trị khác sẽ gây nên sự thay đổi ít nhất tới toàn tệp. Dữ liệu nhị phân của thông báo mật sẽ bị chia nhỏ ra và gài vào LSB của mỗi pixel trong tệp hình ảnh.
Phép thế bit trọng số nhỏ nhất có thể được dùng để ghi đè các mã màu RGB, hoặc các con trỏ bảng màu trong các tệp GIF và BMP, các hệ số trong các tệp JPEG, các mức điều chế mã xung trong các tệp âm thanh. Bằng cách ghi đè bit trọng số nhỏ nhất, giá trị số của byte thay đổi rất ít và vì thế rất ít khả năng bị phát hiện bởi thị giác và thính giác của con người.
Hình ảnh định dạng GIF dưới đây che giấu một bản đồ có 11.067 byte của sân bay Quốc tế Burlington, Vermont:
Hình ảnh ở trên dùng phần mềm Gif-It-Up, một chương trình của Nelsonsoft để che giấu thông  tin trong các tệp ảnh có đuôi GIF dùng phép thế các bit trọng số nhỏ nhất.
Trong xử lý tín hiệu âm thanh, tín hiệu tương tự được xử lý thành một chuỗi bit số. Quá trình này bao gồm việc lấy mẫu và chuyển các mẫu này thành các mức điện áp. Điện áp hay mức tín hiệu sau đó lại được chuyển thành giá trị số nhờ một sơ đồ gọi là điều chế mã xung. Thiết bị thực hiện chuyển đổi này gọi là bộ mã, giải mã (code). Điều chế mã xung chỉ cung cấp giá trị xấp xỉ của tín hiệu tương tự ban đầu. Nếu âm tương tự được đo ở mức nào đó thì nó được chuyển thành giá trị 5 trong điều chế mã xung và tạo nên sai số lượng tử. Các ứng dụng âm thanh khác xác định một số mức điều chế mã xung khác nhau để sai số này gần như không thể phát hiện được bởi tai của con người. Mạng điện thoại chuyển mỗi mẫu tiếng nói thành một giá trị 8 bit (0 - 255), trong khi đó, các ứng dụng nhạc thường dùng các giá trị 16 bit    (0 - 65, 535).
Các tín hiệu tương tự cần được lấy mẫu ở tốc độ bằng 2 lần thành phần tần số cao nhất của tín hiệu ban đầu để có thể khôi phục được chính xác từ các mẫu. Trong mạng điện thoại, tiếng nói con người nằm trong dải tần từ 0 - 4000 Hz (mặc dù chỉ khoảng 400 - 3400 Hz thực sự được dùng để tải tiếng nói); bởi vậy, tiếng nói được lấy mẫu ở tần số 8000 Hz. Trong khi đó, các ứng dụng âm nhạc lấy toàn bộ phổ của tai con người (20 - 20.000 Hz) và nói chung dùng tốc độ lấy mẫu là 44,1 kHz. 
Các tệp âm thanh thực tế được làm nhỏ hơn nhờ dùng các kỹ thuật nén khác nhau, trong một số trường hợp thấp chỉ khoảng 11 kHz. Tuy nhiên, tất cả các giải pháp này đều làm giảm phần nào chất lượng âm thanh.




So sánh hình ảnh ở mức tín hiệu của một tệp mang âm thanh kiểu WAV trước (hình trên)
và sau khi (hình dưới) giấu bản đồ sân bay nói trên

S-tools, một chương trình do Andy Brown viết, dùng để che giấu thông tin bên trong các tệp kiểu GIF, BMP và WAV. S-Tools dùng phép thế bit thấp nhất trong các tệp dùng kỹ thuật nén không mất dữ liệu, chẳng hạn điều chế mã xung màu 8 bit hay 24 bit. S-Tools dùng một mật khẩu để ngẫu nhiên hóa bit thấp nhất và có thể mã hóa dữ liệu bằng DES, IDEA, Message Digest Cipher (MDC), hoặc DES bội ba. Dưới đây là hình ảnh ở mức tín hiệu của một tệp mang âm thanh kiểu WAV trước và sau khi giấu bản đồ sân bay nói trên. Tệp WAV ban đầu có 178,544 bytes trong khi tệp WAV Steganography là 178,298 bytes. Các tệp âm thanh rất thích hợp để che giấu thông tin vì chúng thường tương đối lớn, khó tìm ra các dữ liệu nhỏ bị che giấu.
Thực tế, sự che giấu thông tin không chỉ ở trong các thiết bị đa phương tiện số như các tệp văn bản, hình ảnh, âm thanh mà còn ở việc sử dụng các kênh liên lạc hoặc nhiều phương tiện khác. Chẳng hạn, sử dụng các header (vẫn còn nhiều trường không dùng đến) trên mỗi gói dữ liệu trong giao thức TCP/IP hoặc dùng ổ cứng trong một phân đoạn (partition) mật. Partition mật sẽ không nhìn thấy được trong các tình  huống thông thường, dù cấu hình đĩa và các công cụ khác có thể cho phép truy nhập hoàn toàn tới phân hoạch ẩn. Lý thuyết này đã được thực hiện trong hệ thống File Ext2fs Steganography cho Linux. Hệ thống File ẩn rất đáng quan tâm vì nó bảo vệ người dùng không bị buộc chặt vào thông tin nào đó trên ổ cứng của họ, người dùng có thể che giấu số các tệp trên đĩa, bảo đảm tính bí mật của nội dung tệp và không phá vỡ các tệp gốc bằng cách loại bỏ chương trình điều khiển tệp Steganography.
Tóm lại, với sự hoàn hảo của các tiện ích đa phương tiện số và những tiến bộ của công nghệ, kỹ thuật này ngày càng phát triển nhanh chóng và được ứng dụng khắp nơi. Trong lĩnh vực an toàn, nó được kết hợp với các phương pháp mật mã để có thể chuyển các thông báo mật đi dưới một bức tranh, một bản nhạc vô hại, nhờ thế làm tăng thêm vòng bảo mật của chúng. Trong lĩnh vực sở hữu trí tuệ, nó được xem như một cơ chế tuyệt hảo để chống gian lận, giả mạo và lạm dụng bản quyền. Các nhà công nghiệp đã đầu tư hàng triệu đô la vào các kỹ thuật che giấu các logo của các công ty và các dấu hiệu bản quyền khác trong các hình ảnh số, các bản ghi video và âm nhạc…
Trong khi đó, Steganography cũng bị lợi dụng cho những mục đích không tốt. Những kẻ xấu đang phát triển các phương pháp tấn công máy tính dùng  Steganography để che giấu sự có mặt của mã ác ý. Đôi khi chúng còn được phát triển trong các giao thức, nơi có thể lợi dụng các “con ngựa thành Toroa” để giải các thông báo ẩn nằm thường trú bên trong các kênh liên lạc định tuyến. Khi đó, thông báo và kẻ tấn công có thể không bị phát hiện và điều này trở nên nguy hiểm