Thứ Sáu, 6 tháng 11, 2015

Giới thiệu kỹ thuật giấu tin trong ảnh Steganography

1. Giới thiệu

Ngày nay chúng ta thường nghe nói đến Steganography. Đó là một hình thức che dấu sự tồn tại của thông điệp. Khác với Cryptography thì Steganography ẩn đi các thông tin cần giữ bí mật trong các dữ liệu vô hại để đối phương không thể biết được sự hiện diện của thông điệp.
Thực chất Steganography đã được con người biết tới từ rất lâu rồi. Năm 440 trước công nguyên, người Herodotus (Người Hy Lạp xa xưa) đã cạo trọc đầu các nô lệ tin cậy rồi xăm lên đó các thông điệp và chờ tóc mọc lại. Mục đích của việc này là nhằm gửi tin đi trong cuộc chiến tranh giữa người Herodotus và Persians (Người Ba Tư).
Trong cuộc cách mạng của Mỹ, mực không màu cũng được sử dụng để trao đổi thông điệp giữa người Mỹ và người Anh.
Trong các cuộc chiến tranh thế giới, Steganography cũng được sử dụng. Người Đức đã sử dụng mực không màu để viết các dấu chấm nhỏ lên phía trên và dưới các chữ cái bằng cách thay đổi chiều cao các chữ trong đoạn văn bản. Trong chiến tranh thế giới thứ nhất, các tù nhân cũng sử dụng mã Morse để gửi thư về nhà bằng cách viết các dấu chấm và gạch ngang lên các chữ cái i,j,t,f.
Trong chiến tranh thế giới thứ 2, các gián điệp của Đức đã sử dụng đoạn văn bản sau:
“Apparently neutral’s protest is thoroughly discounted and ignored. Isman hard hit. Blockade issue affects for pretext embargo on by-products, ejecting suets and vegetable oils.”
Bằng cách đọc những chữ thứ 2 của các từ ta sẽ được đoạn thông điệp sau:
“Pershing sails for NY June 1”.
Ngày nay trên mạng có rất nhiều đoạn nhạc hay các bức hình tưởng chừng như bình thường nhưng nó lại chứa các thông tin hoàn toàn bí mật. Điều này càng làm cho Steganography càng trở nên phổ biến.
Dưới đây là hình ảnh minh họa cho điều này:
anh1
Bức ảnh trên có chứa một thông điệp mà nếu chỉ nhìn bằng mắt thường thì khó có thể nhận thấy được.

2. Quá trình mã hóa và giải mã của Stegranography

Tiếp theo ta sẽ cùng tìm hiểu về ẩn thông tin trong Steganography. Đầu tiên, thông điệp và bức ảnh ban đầu sẽ được đưa vào trong bộ mã hóa (encoder). Trong bộ mã hóa, một bộ giao thức sẽ được thực thi để nhúng thông điệp vào trong bức ảnh. Kiểu của giao thức sẽ phụ thuộc vào kiểu của thông điệp và cách ta nhúng. Ví dụ hình dưới đây sẽ cho ta thấy giao thức để ẩn thông điệp trong các bức ảnh.
anh2
Khóa là cần thiết trong quá trình giấu thông tin. Người gửi có thể dùng khóa chính để mã hóa và người nhận có thể dùng khóa công khai để giải mã. Điều này có thể giảm thiểu khả năng bên thứ 3 biết được thông điệp và giải mã.

3. Một số cơ chế trong Stegranography

3.1 Cơ chế ẩn thông điệp trong văn bản hoặc đoạn ký tự
Đối với các tài liệu giấy thì khi bạn copy, bạn có thể sẽ không vi phạm bản quyền vì chất lượng của các tài liệu này khác nhau. Tuy nhiên đối với các tài liệu trên máy tính thì các bản copy sẽ giống hệt các bản gốc nên bạn rất dễ vi phạm bản quyền. Sở dĩ có thể biết được là do trong các tài liệu này đã được chèn thêm vào một số đoạn text để đánh dấu. Những đoạn này là ẩn với người dùng và bằng mắt thường khó có thể nhận biết được. Chúng ta chỉ có thể giải mã nhờ máy tính thì mới có thể nhìn thấy được.
anh3
Dưới đây  là một số cách để ẩn đoạn text trong văn bản.
3.1.1 DỊCH CHUYỂN VỊ TRÍ  DÒNG
Chúng ta sẽ dịch chuyển vị trí của các dòng một khoảng nhỏ khoảng 1/300 inch. Điều này rất khó có thể phát hiện bằng mắt thường vì khoảng cách thay đổi khá nhỏ. Chúng ta chỉ có thể phát hiện nhờ máy tính bằng cách đo khoảng cách giữa các dòng. Trong các khoảng trống đó ta có thể chèn vào các bit 0 hoặc 1, do đó trong toàn bộ văn bản, ta có thể ẩn đi một lượng thông tin khá lớn.
3.1.2 DỊCH CHUYỂN VỊ TRÍ TỪ
Cơ chế này cũng giống như dịch chuyển vị trí dòng, nhưng ta sẽ dịch chuyển vị trí các từ. Sau đó tùy vào khoảng trống đó nằm bên trái hay bên phải từ mà ta quy định nó là bit 0 hay bit 1. Dịch trái sẽ là bit 0 còn dịch phải sẽ là bit 1.
Dưới đây là một ví dụ:
anh9-300x48
Trong ví dụ trên, dòng thứ nhất các chữ có vị trí không bị thay đổi. Còn dòng thứ 2 các chữ bị dịch trái hoặc phải để mã hóa cho chuỗi 01000001(65-A). Nếu không so sánh với chuỗi ban đầu thì ta khó có thể nhận biết được chuỗi đó có bị thay đổi hay không.
3.1.3 CHÈN VÀO KHOẢNG TRẮNG CUỐI MỖI DÒNG
Một cách khác để ẩn đoạn text là sử dụng các khoảng trắng. Bằng cách vận dụng khéo léo các khoảng trắng, ta có thể lưu trữ được một lượng lớn các bit. Các khoảng trắng ở cuối mỗi dòng có thể bị bỏ qua và không hiện lên các bởi các ứng dụng đọc văn bản. Trong toàn bộ văn bản, ta có thể có đủ không gian để lưu trữ chuỗi bí mật. SNOW là một chương trình sử dụng cơ chế này. Bạn có thể tham khảo theo link sau:  http://www.darkside.com.au/snow/index.html.
3.1.4 ẨN THÔNG ĐIỆP TRONG NỘI DUNG CỦA CÁC ĐOẠN VĂN BẢN KHÁC
Một trong những cách khác để ẩn thông điệp là ta thay đổi cấu trúc của văn bản ban đầu sao cho nghĩa không bị thay đổi để mà ta có thể lưu trữ được thông điệp. TextHide là một chương trình sử dụng cơ chế này. Bạn có thể truy nhập vào link sau và tìm hiểu thêm: http://www.compris.com/TextHide/en/.
Ngoài ra ta có thể ẩn thông điệp trong các đoạn email spam. Điểu này có thể thực hiện bởi chương trình SpamMimic theo link sau: http://www.spammimic.com.
Ở đây mình sẽ thêm chuỗi “Hi ! How are you ?” vào email spam:
anh4
Khi đó ta được email sau:
anh5
Dear Friend , Especially for you – this breath-taking
news ! If you no longer wish to receive our publications
simply reply with a Subject: of “REMOVE” and you will
immediately be removed from our database . This mail
is being sent in compliance with Senate bill 2116 ,
Title 8 ; Section 309 . This is not multi-level marketing
. Why work for somebody else when you can become rich
within 65 weeks ! Have you ever noticed how many people
you know are on the Internet & society seems to be
moving faster and faster . Well, now is your chance
to capitalize on this ! We will help you turn your
business into an E-BUSINESS and decrease perceived
waiting time by 150% ! You are guaranteed to succeed
because we take all the risk ! But don’t believe us
. Mr Ames of Iowa tried us and says “Now I’m rich,
Rich, RICH” . This offer is 100% legal ! We beseech
you – act now ! Sign up a friend and you get half off
! God Bless ! Dear Friend ; This letter was specially
selected to be sent to you . This is a one time mailing
there is no need to request removal if you won’t want
any more . This mail is being sent in compliance with
Senate bill 1620 , Title 9 , Section 302 . THIS IS
NOT MULTI-LEVEL MARKETING . Why work for somebody else
when you can become rich in 41 DAYS . Have you ever
noticed people love convenience plus most everyone
has a cellphone . Well, now is your chance to capitalize
on this . We will help you deliver goods right to the
customer’s doorstep & turn your business into an E-BUSINESS
. The best thing about our system is that it is absolutely
risk free for you ! But don’t believe us . Ms Anderson
of Hawaii tried us and says “I was skeptical but it
worked for me” ! We are licensed to operate in all
states ! We BESEECH you – act now ! Sign up a friend
and you get half off ! God Bless .

3.2 Cơ chế ẩn thông điệp trong tệp tin âm thanh

Định dạng MP3 là định dạng phổ biến của các file nhạc.Do đó ta có thể sử dụng chúng để ẩn các đoạn text trong đó.Có nhiều công cụ có thể giúp bạn ẩn thông tin trong file .MP3 và  MP3Stego là một chương trình trong số đó. Dưới đây là giao diện của chương trình này:
anh6
Khi ẩn thông điệp bạn cần phải chọn thông điệp là file có định dạng .txt và file âm thanh có định dạng .wav. Bạn có thể dùng phần mềm để chuyển đổi file âm thanh từ định dạng .mp3 về .wav.
anh7
Còn đây là giao diện khi bạn muốn giải mã:
anh8
Bạn cần chọn file .mp3 đã bị ẩn thông điệp ở trong rồi click vào button “DECODE FILE”. Khi đó file .txt của bạn sẽ được tách ra khỏi file nhạc .mp3.
Trong phần trên mình đã trình bày với các bạn tổng quan về SteganoGraphy và một số cơ chế cơ bản để ẩn thông điệp trong các file văn bản, hình ảnh, âm thanh. Trong phần sau mình sẽ trình bày kỹ hơn về cơ chế ẩn thông điệp trong file ảnh.

3.3 CƠ CHẾ ẨN THÔNG ĐIỆP TRONG FILE ẢNH

Cấu trúc nói chung của ảnh gồm có 3 phần :Header,Dữ liệu(chứa các thông tin về ảnh) , bảng màu.

3.3.1 DƯỚI ĐÂY LÀ MỘT SỐ ĐỊNH DẠNG ẢNH CƠ BẢN

3.3.1.1 ĐỊNH DẠNG ẢNH IMG

Ảnh IMG là ảnh đen trắng.Phần đầu của ảnh gồm 16 byte chứa một số thông tin về ảnh:
  • 6 byte đầu:Đánh dấu định dạng ảnh.
  • 2 byte:Chứa độ dài mẫu tin.Dãy các byte lặp đi lặp lại một số lần nào đó và số lần lặp này sẽ được lưu lại.
  • 4 byte tiếp:Mô tả kích thước của pixel.
  • 2 byte tiếp:Số pixel trên một dòng ảnh.
  • 2 byte cuối:Số dòng trong ảnh.

3.3.1.2 ĐỊNH DẠNG ẢNH PCX

Định dạng ảnh này có lẽ là cổ nhất trong các định dạng.Nó sử dụng phương pháp mã hóa loạt dài RLC(Run Length Coding) để nén dữ liệu ảnh.Quá trình nén và giải nén được thực hiện trên từn dòng ảnh.Dưới đây là cấu trúc tệp PCX:
anh1

Phương pháp giải nén PCX kém hơn so với IMG nhưng định dạng này hay được sử dụng để lưu trữ ảnh vì tốc độ nén và giải nén nhanh.

3.3.1.3 ĐỊNH DẠNG ẢNH GIF

Ảnh GIF là kiểu định dạng dành cho các ảnh có ít hơn 256 màu sắc.GIF thường dùng cho sơ đồ ,hình vẽ ,nút bấm ,hình màu.Đây là định dạng nén đặc biệt rất hữu ích cho việc truyền ảnh.
GIF sử dụng thuật toán LOSS LESS ,chính vì thế ta có thể tạo ra file kích thước nhỏ mà ảnh không bị mờ hay mất dữ liệu.
Dưới đây là cấu trúc của ảnh GIF:

3.3.1.4 ĐỊNH DẠNG ẢNH .JPEG

Đây cũng là một định dạng phổ biến nhưng nó lại là một kiểu ảnh nén.Đây là một trong những định dạng của kiểu JPEG(Joint Photographic Experts Group).Do sự mất mát thông tin có thể xảy ra nên chất lượng hình ảnh trước và sau khi nén có thể bị suy giảm,sự suy giảm này tăng theo hệ số nén.Ưu điểm của phương pháp này là nhẹ hơn ảnh định dạng BMP rất nhiều .
anh2

3.3.1.5 ĐỊNH DẠNG FILE ẢNH BITMAP

Cấu trúc file ảnh Bitmap được chia làm 4 phần:Header,Image Header,Color table và Pixel data.
  • File Header(14 byte ):
anh3

  • Image Header:Đưa ra thông tin về ảnh và định dạng dữ liệu
anh4

anh5
  • Color Table:Tiếp theo là bảng màu của Bitmap, 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.
  • Pixel Data:Với ảnh 8 bit ,mỗi pixel biểu diễn 1 byte đơn vị còn ảnh 24bit thì mỗi file pixel biểu diễn 3 byte đơn vị.

3.3.2 CƠ CHẾ ẨN THÔNG ĐIỆP TRONG ẢNH THEO CƠ CHẾ LSB

Đối với ảnh 8 bit ta chỉ có thể ẩn 1 bit dữ liệu cho mỗi pixel còn đối với ảnh 24 bit ta có thể ẩn 3 bit dữ liệu cho mỗi pixel.
Quá trình mã hóa để giấu thông điệp vào bức ảnh:
  • Trước hết chúng ta cần chuyển thông điệp sang dạng nhi phân.
Nếu ta muốn giấu chữ A thì ta cần giấu đoạn mã sau:10000001
  • Đọc các pixel trong bức ảnh (Original Image),để tìm ra các giá trị R-G-B của từng pixel một.
Giả sử ta chọn ra 3 pixel để ẩn 3bit của byte thấp của kí tự A như sau:
00100111 11101001 11001000
00100111 11001000 11101001
11001000 00100111 11101001
  • Ta sẽ thay từng bit của mã nhị phân của kí tự A vào từng pixel trên .Lúc này ta có pixel sau:
00100111 11101001 11001000
00100111 11001000 11101000
11001000 00100111 11101001
Như vậy chỉ có 3 bit thay đổi trong 3 pixel nên chúng ta rất khó có thể phát hiện bằng mắt thường.
Quá trình giải mã để lấy thông điệp ra khỏi bức ảnh:
  • Đọc từng pixel của bức ảnh nhận được .
  • Đọc giá trị R-G-B của từng pixel, đọc các LSB của từng giá trị R-G-B, ta được một chuỗi nhị phân ban đầu của thông điệp gốc. Sau đó ta chuyển chuỗi nhị phân về dạng ASCII là xong .

4 MỘT SỐ HẠN CHẾ CỦA STEGANOGRAPHY

  • Đối với mã hóa, nếu An muốn trao đổi bí mật với Bình đầu tiên họ phải đồng ý về phương pháp đang được sử dụng. Bình không thể chắc chắn rằng ông đã nhận được một thông điệp bí mật hay có thể nó giống như tập tin vô nghĩa gửi đến. Do đó ta cần một cơ chế để xác định xem tập tin gửi đến chỉ đơn thuần là một bức ảnh,một file âm thanh… hay bên trong nó còn ẩn dữ liệu và làm thế nào để có thể lấy được thông tin đó ra.
  • Khi ta ẩn thêm thông điệp vào một bức ảnh hay file âm thanh có kích thước nhỏ mà dung lượng của thông điệp lại quá lớn thì nó sẽ tạo ra sự chênh lệch giữa dung lượng của file ban đầu và file sau khi ẩn thông điệp. Điều này có thể được giải quyết nếu như chúng ta dùng video để ẩn thông điệp. Khi đó sự chênh lệch về kích thước file không đáng kể.

5 TỔNG KẾT

Như bạn đã biết, Steganography trở nên được sử dụng rộng rãi hơn trong cuộc sống. Có một loạt các kỹ thuật khác nhau với những điểm mạnh và điểm yếu riêng của chúng. Đôi khi Stegno cũng được sử dụng cho mục đích tốt nhưng đôi khi lại được sử dụng cho mục đích xấu. Ví dụ trong chiến tranh thì Stegano có thể dùng trong truyền tin.Còn đối với mục đích không tốt thì stegano có thể bị dùng để ẩn các file ảnh hay video không tốt trong máy tính mà không muốn người khác biết.
Trên đây mình đã trình bày tổng quan về một số định dạng ảnh và sơ lược về cơ chế LSB trong việc giấu thông điệp trong file ảnh. Hy vọng bài viết của mình có thể giúp ích cho các bạn. Bài viết trên có thể có những chỗ thiếu sót ,mong các bạn góp ý để bài viết được hoàn thiện hơn.
Tài liệu tham khảo:
  1. Steganography and Digital Watermarking
  2. https://en.wikipedia.org/wiki/Steganography
  3. Một số tài liệu khác trên Internet.
 securitydaily

Không có nhận xét nào:

Đăng nhận xét