Steganography - Kỹ thuật ẩn giấu thông điệp bí mật trong văn bản và số ký tự
Đoạn văn này ẩn chứa một thông điệp bí mật - nếu ai đó nói với bạn như vậy, bạn sẽ tìm ở đâu? Chữ cái đầu mỗi câu? Khoảng cách giữa các ký tự nhất định? Hay có thể là các ký tự vô hình được nhúng vào? Steganography là nghệ thuật ẩn giấu chính sự tồn tại của thông điệp. Nếu mã hóa làm cho thông điệp "không đọc được," thì steganography làm cho nó "không phát hiện được." Và kỹ thuật này đôi khi có thể được phát hiện thông qua hành động đơn giản là đếm ký tự.
Nghệ thuật "ẩn giấu" từ thời cổ đại
Lịch sử steganography có thể truy ngược đến thế kỷ 5 TCN ở Hy Lạp. Trong câu chuyện nổi tiếng được sử gia Herodotus ghi lại, để cảnh báo về cuộc xâm lược của Đế quốc Ba Tư, đầu nô lệ được cạo trọc, thông điệp được xăm lên da đầu, và sau khi tóc mọc lại, nô lệ được gửi đi làm sứ giả. Đây là phương thức truyền thông băng thông thấp tối thượng, cần hàng tuần để thông điệp đến nơi.
Châu Âu thời Trung cổ sử dụng rộng rãi mực vô hình (nước chanh, sữa, nước tiểu, v.v.) cho liên lạc bí mật. Trong Thế chiến II, gián điệp Đức sử dụng công nghệ vi điểm (thu nhỏ tài liệu bằng ảnh đến kích thước cực nhỏ và ngụy trang thành dấu chấm). Công nghệ có thể ẩn cả trang văn bản trong một dấu chấm này được Giám đốc FBI Hoover gọi là "bước tiến lớn nhất trong hoạt động gián điệp của kẻ thù."
Các kỹ thuật Steganography dựa trên văn bản
Steganography văn bản thời đại kỹ thuật số có một số kỹ thuật đại diện.
Acrostic - Thông điệp ẩn trong chữ cái đầu
Acrostic là kỹ thuật mà khi nối chữ cái đầu mỗi dòng hoặc câu sẽ hiện ra thông điệp bí mật. Đây là hình thức steganography văn bản cổ điển nhất, được sử dụng trong thơ ca từ thời cổ đại.
Ví dụ nổi tiếng: năm 2003, Tổng chưởng lý California Bill Lockyer gửi thư cho nghị sĩ bang từ chức. Khi nối chữ cái đầu mỗi đoạn lại đọc được "I FUCK YOU," gây ra vụ bê bối lớn. Acrostic có thể nhúng thông điệp mà không tăng số ký tự, nhưng dễ bị phát hiện khi cố tình tìm kiếm.
Thao tác khoảng trắng
Kỹ thuật nhúng thông tin bit bằng cách thao tác số lượng dấu cách giữa các từ. 1 dấu cách biểu thị "0," 2 dấu cách biểu thị "1," mã hóa dữ liệu nhị phân. Sự khác biệt tinh tế về khoảng cách khó nhận ra bằng mắt thường, nhưng công cụ đếm ký tự có thể phát hiện "có quá nhiều dấu cách so với số từ nhìn thấy."
Steganography ký tự zero-width - Thế giới ký tự vô hình
Kỹ thuật steganography văn bản mạnh nhất hiện đại sử dụng ký tự vô hình zero-width. Unicode định nghĩa nhiều "ký tự zero-width" không hiển thị trên màn hình nhưng tồn tại dưới dạng dữ liệu ký tự.
| Mã Unicode | Tên | Mục đích ban đầu | Vai trò trong Steganography |
|---|---|---|---|
| U+200B | Zero Width Space | Chỉ định vị trí ngắt dòng | Biểu thị bit "0" |
| U+200C | Zero Width Non-Joiner | Ngăn chặn chữ ghép | Biểu thị bit "1" |
| U+200D | Zero Width Joiner | Thúc đẩy chữ ghép | Giá trị bit bổ sung |
| U+FEFF | Zero Width No-Break Space (BOM) | Dấu thứ tự byte | Ký tự phân cách |
Sử dụng 2 loại ký tự zero-width U+200B và U+200C, có thể biểu thị 1 bit với 2 giá trị (0 và 1). 8 ký tự zero-width tạo thành 1 byte, tức 1 ký tự ASCII. Ẩn thông điệp 5 ký tự "Hello" cần 40 ký tự zero-width.
Phân tán 40 ký tự zero-width này giữa các từ trong văn bản bình thường, ngoại hình hoàn toàn không thay đổi. Tuy nhiên, so sánh "số ký tự nhìn thấy" với "số ký tự thực tế (số byte)" bằng công cụ đếm ký tự sẽ phát hiện sự khác biệt bất thường. Hiểu kiến thức cơ bản về Unicode giúp xác định nguyên nhân là ký tự zero-width.
Ví dụ triển khai Steganography ký tự zero-width
Hãy xem quy trình nhúng cụ thể. Xét trường hợp ẩn thông điệp bí mật "Hi" trong văn bản bình thường "Good morning."
"H" có mã ASCII 72, nhị phân 01001000. "i" là 105, nhị phân 01101001. Chuyển 0 thành U+200B (zero-width space) và 1 thành U+200C (zero-width non-joiner) tạo ra chuỗi 16 ký tự zero-width.
Chèn 16 ký tự zero-width này giữa "Good" và "morning." Ngoại hình vẫn là "Good morning" nhưng dữ liệu thực chứa 16 ký tự vô hình. Trình soạn thảo đếm 12 ký tự, nhưng đếm bằng chương trình cho 28 mã Unicode. Chênh lệch 16 ký tự chính là thông điệp ẩn.
Triển khai nâng cao hơn sử dụng 3 loại ký tự zero-width trở lên cho mã hóa tam phân hoặc cao hơn. Dùng U+200B, U+200C, U+200D cho khoảng 1,58 bit mỗi ký tự (log₂3), biểu thị ký tự ASCII 8 bit bằng khoảng 5 ký tự zero-width.
Tấn công Homoglyph - Ký tự khác nhau trông giống hệt
Homoglyph là các ký tự trông gần như giống hệt nhau nhưng có mã Unicode khác nhau. Ví dụ, chữ Latin "a" (U+0061) và chữ Cyrillic "а" (U+0430) trông hoàn toàn giống nhau trong nhiều phông chữ.
| Ký tự Latin | Mã | Ký tự Cyrillic | Mã | Khác biệt thị giác |
|---|---|---|---|---|
| a | U+0061 | а | U+0430 | Gần như giống hệt |
| e | U+0065 | е | U+0435 | Gần như giống hệt |
| o | U+006F | о | U+043E | Gần như giống hệt |
| p | U+0070 | р | U+0440 | Gần như giống hệt |
| c | U+0063 | с | U+0441 | Gần như giống hệt |
Tấn công homoglyph khai thác đặc tính này. Thay "a" trong "apple.com" bằng chữ Cyrillic "а" trong URL lừa đảo trông giống hệt nhưng chuyển hướng đến tên miền hoàn toàn khác. Trong steganography, thay thế ký tự cụ thể bằng homoglyph nhúng thông tin bit.
Phát hiện homoglyph cần kiểm tra mã Unicode của mỗi ký tự. Như thảo luận trong độ dài mật khẩu và bảo mật, trường hợp ngoại hình giống nhau nhưng chuỗi byte khác nhau tạo ra rủi ro bảo mật nghiêm trọng.
Để đối phó, các trình duyệt chính hạn chế hiển thị IDN (Tên miền quốc tế hóa). Khi tên miền trộn lẫn nhiều hệ chữ viết, trình duyệt hiển thị tên miền dạng Punycode (định dạng mã hóa bắt đầu bằng xn--) để cảnh báo người dùng. Chrome áp dụng biện pháp này từ phiên bản 58 năm 2017.
Công nghệ watermark văn bản
Là ứng dụng của steganography, công nghệ watermark kỹ thuật số cho văn bản tồn tại. Dù watermark hình ảnh và video được biết rộng rãi, kỹ thuật nhúng watermark vào văn bản cũng có.
| Phương pháp watermark | Nguyên lý | Phương pháp phát hiện | Khả năng chống chịu |
|---|---|---|---|
| Nhúng ký tự zero-width | Lưu thông tin bit trong ký tự vô hình | Đếm ký tự | Có thể mất khi sao chép-dán |
| Thay thế từ đồng nghĩa | "lớn" → "to lớn" thay thế đồng nghĩa | So sánh với bản gốc | Chống chịu tốt với chỉnh sửa |
| Chuyển đổi cú pháp | Chủ động → bị động chuyển đổi cú pháp | So sánh với bản gốc | Chống chịu tốt với chỉnh sửa |
| Thao tác khoảng trắng | Thao tác số lượng dấu cách và tab | Phân tích thống kê khoảng trắng | Mất khi thay đổi định dạng |
Watermark thay thế từ đồng nghĩa nhúng thông tin bit mà không thay đổi nghĩa văn bản. Phương pháp này có thể thay đổi số ký tự nhưng chống chịu tốt với chỉnh sửa và sao chép-dán.
Mã hóa vs. Steganography
Mã hóa và steganography thường bị nhầm lẫn nhưng là công nghệ khác nhau về cơ bản.
| Đặc tính | Mã hóa | Steganography |
|---|---|---|
| Mục đích | Làm nội dung không đọc được | Ẩn sự tồn tại của thông điệp |
| Khả năng phát hiện | Sự tồn tại của bản mã rõ ràng | Sự tồn tại của thông điệp không được biết |
| Ảnh hưởng đến số ký tự | Tương đương văn bản gốc | Số ký tự văn bản che có thể tăng |
| Yêu cầu khóa | Cần khóa để giải mã | Có thể trích xuất nếu biết kỹ thuật |
| Kết hợp | Có thể dùng đơn lẻ | Mạnh nhất khi kết hợp với mã hóa |
Cách tiếp cận an toàn nhất là mã hóa thông điệp rồi ẩn bằng steganography. Ngay cả khi steganography bị phá và sự tồn tại của thông điệp bị phát hiện, nội dung vẫn không đọc được nếu đã mã hóa.
Phát hiện Steganography qua đếm ký tự
Phương pháp đơn giản nhất để phát hiện steganography văn bản là đếm ký tự. Các bất thường sau đây là gợi ý phát hiện.
Không khớp giữa số ký tự nhìn thấy và số ký tự thực tế (số mã). Khi nhúng ký tự zero-width, số ký tự nhìn thấy trong trình soạn thảo ít hơn số đếm bằng chương trình. Ví dụ, văn bản trông 100 ký tự nhưng thực chứa 180 ký tự dữ liệu, có thể 80 ký tự zero-width đã được nhúng.
Kích thước mã hóa ký tự bất thường cũng là manh mối. Văn bản ASCII thuần (chỉ chữ số) trong UTF-8 phải là 1 ký tự = 1 byte. Nhưng nếu trộn homoglyph Cyrillic, một số ký tự trông ASCII trở thành 2 byte.
Biện pháp đối phó ký tự zero-width của Twitter
Twitter (nay là X) áp dụng quy tắc đếm ký tự riêng để ngăn steganography và lách giới hạn ký tự bằng ký tự zero-width. Thư viện đếm ký tự "twitter-text" của Twitter tính các ký tự Unicode nhất định bao gồm ký tự zero-width vào số ký tự. Nghĩa là nhúng nhiều ký tự zero-width khiến văn bản trông ngắn cũng đạt giới hạn 280 ký tự.
Biện pháp này không chỉ ngăn steganography mà còn đảm bảo sử dụng dịch vụ công bằng.
Công cụ và kỹ thuật phát hiện Steganography
Có một số công cụ và kỹ thuật chuyên dụng để phát hiện steganography văn bản.
| Phương pháp phát hiện | Mục tiêu | Nguyên lý | Hạn chế |
|---|---|---|---|
| So sánh số ký tự vs byte | Ký tự zero-width | Không khớp giữa số nhìn thấy và byte thực | Khó phân biệt với ký tự zero-width hợp lệ |
| Phân tích danh mục Unicode | Homoglyph | Xác minh tính nhất quán khối Unicode | Nhiều dương tính giả trong văn bản đa ngữ |
| Phân tích thống kê | Thao tác khoảng trắng | Xác minh phân bố dấu cách phù hợp thống kê ngôn ngữ tự nhiên | Độ chính xác thấp cho văn bản ngắn |
| Phân tích entropy | Tổng quát | Xác minh entropy thông tin trong phạm vi ngôn ngữ tự nhiên | Khó đối phó kỹ thuật nâng cao |
Phương pháp phát hiện đơn giản và hiệu quả nhất là sao chép-dán văn bản thành plain text rồi so sánh số byte với bản gốc. Nếu chứa ký tự zero-width hoặc homoglyph, số byte sẽ khác nhau.
Mạng xã hội và Steganography - Các trường hợp thực tế
Năm 2016, các nhà nghiên cứu bảo mật báo cáo việc sử dụng thực tế steganography ký tự zero-width trên Twitter (nay là X). Tweet trông như văn bản bình thường trong 280 ký tự, nhưng bao gồm ký tự zero-width thì lượng dữ liệu thực lớn hơn nhiều.
Một số công ty thực hiện "dấu vân tay tài liệu" bằng cách nhúng ID nhân viên vào tài liệu nội bộ bằng ký tự zero-width. Nếu tài liệu mật bị rò rỉ ra ngoài, phân tích ký tự zero-width nhúng có thể xác định ai đã rò rỉ. Kỹ thuật này khó phát hiện hơn watermark truyền thống vì hoàn toàn không thay đổi ngoại hình tài liệu.
Steganography là công nghệ quan trọng cho cả bảo vệ quyền riêng tư và an ninh thông tin. Ở các nước kiểm duyệt nghiêm ngặt, các nhà hoạt động sử dụng steganography để phát tán thông tin. Mặt khác, khủng bố và tội phạm cũng có thể dùng nó để ẩn liên lạc. Công cụ đếm ký tự tưởng chừng đơn giản có thể trở thành tuyến phòng thủ đầu tiên trong việc phát hiện những thông điệp ẩn này.
Sách về an ninh thông tin và kỹ thuật mật mã có thể tìm thấy trên Amazon.