Metoda najmniej znaczącego bitu

LSB  (Least Significant Bit), czyli metoda najmniej znaczącego bitu,  jest to najpopularniejsza metoda ukrywania informacji w obrazach cyfrowych. Algorytm ten polega na zmianie najmniej znaczących bitów każdego piksela na bity odpowiadające treści wiadomości.

W obrazach cyfrowych  barwa piksela opisywana jest za pomocą wartości liczbowych. W przypadku obrazów czarno-białych te wartości pikseli wynoszą 0 – dla bieli oraz 1 – dla czerni, czyli barwa każdego piksela zapisywana jest na 1 bicie, a zmiana jego wartości zmieni także kolor piksela. W przypadku obrazów reprezentowanych w skali szarości barwa zapisywana jest na 8 bitach, co daje 256 różnych możliwości. Zwiększanie wartości liczbowej powoduje rozjaśnienie (255 – biały) natomiast zmniejszanie powoduje ściemnianie (0 – czarny). Obrazy używane do ukrywania informacji reprezentowane są w 24 głębi koloru, oznacza to, że barwa każdego piksela zapisywana jest na 24 bitach, a więc na 3 bajtach. Każdy bajt odpowiada innej składowej koloru i zapisuje się je najczęściej stosując model przestrzeni barw RGB. Nazwa RGB powstała od pierwszych liter angielskich nazw barw, czyli Red – czerwony, Green – zielony, Blue – niebieski. Chcąc nadać pikselowi barwę białą należałoby nadać wszystkim jego składowym wartość 255, czyli RGB(255,255,255). Każdą wartość odpowiadającej składowej koloru można przedstawić w postaci bitowej, tak więc kolor biały zapisany w postaci RGB(255,255,255) w postaci bitowej wygląda tak:

R                     G                     B

11111111        11111111        11111111

Po zmianie trzech najmniej znaczących bitów każdej barwy powstanie:

R                     G                     B

11111110        11111110        11111110

Co daje kolor biały o jeden stopień ciemniejszy, zapisany w postaci RGB(254,254,254). Oko ludzkie jest na tyle niedoskonałym narządem, że tak znikoma zmiana barwy jest dla niego niezauważalna i ignorowana, dzięki czemu można swobodnie modyfikować wartości najmniej znaczących bitów, nie narażając obrazu na widoczne gołym okiem zmiany. Każda litera lub znak może być także przedstawiona w postaci bitowej, dzięki czemu można ją ukryć w obrazie.

Metoda najmniej znaczącego bitu została wyjaśniona na poniższym filmie.

Ukrywając wiadomość w obrazie im więcej najmniej znaczących bitów danego piksela się zmieni, tym większą ilość informacji można w nim ukryć. Należy jednak pamiętać, że im więcej najmniej znaczących bitów się zmieni, tym bardziej zmienia się obraz w stosunku do oryginału.

Na rysunku 1 przedstawiono proces ukrywania litery S modyfikując najmniej znaczący bit w obrazie składającym się z trzech pikseli – czerwonym, zielonym oraz niebieskim. Piksel czerwony odpowiada funkcji RGB(255,0,0), zielony RGB(0,255,0), a niebieski RGB(0,0,255). Do zakodowania litery S w obrazie potrzeba 8 bitów, na rysunku zostały zaznaczone kolorem jasno zielonym. Kod binarny litery S wygląda następująco: 01010011. Podczas ukrywania pierwszy bit litery S zastępuje najmniej znaczący bit składowej R pierwszego piksela. Następnie drugi bit litery S zastępuje najmniej znaczący bit składowej G pierwszego piksela itd. aż zastąpionych zostanie najmniej znaczących bitów, a tym samym zostanie ukryty kod binarny litery S. Pogrubioną czcionką zostały zaznaczone bity, które rzeczywiście wymagały zmiany. Statystycznie rzecz ujmując jedynie co drugi najmniej znaczący bit wymaga zmiany, jednak w tym przypadku zmianie uległo aż 6 z 8 bitów. Po ukryciu informacji funkcje opisujące poszczególne piksele będą wyglądały następująco: czerwony – RGB(254,1,0), zielony – RGB(1,254,0), niebieski – RGB(1,1,255). Tak znikoma zmiana jest niewykrywalna przez ludzkie oko.

Proces ukrywania litery S za pomocą zmiany najmniej znaczącego bitu w obrazie.
Rys. 1. Proces ukrywania litery S za pomocą zmiany najmniej znaczącego bitu w obrazie składającym się z trzech pikseli mających kolory czerwony, zielony i niebieski.

Na rysunku 2 przedstawiono proces ukrywania litery S za pomocą zmiany dwóch najmniej znaczących bitów każdej składowej piksela. Ponownie do ukrycia informacji potrzebne będzie 8 bitów, tym razem w każdej składowej piksela zamienione zostaną dwa najmniej znaczące bity. Bity, które ulegną zmianie zaznaczone zostały kolorem jasnozielonym. Drugi najmniej znaczący bit składowej R piksela czerwonego zastąpiony zostaje pierwszym bitem ukrywanej informacji, natomiast najmniej znaczący bit zastąpiony zostaje drugim bitem informacji. Analogicznie kolejne bity informacji zastępują dwa najmniej znaczące bity kolejnej składowej piksela czerwonego, aż do ukrycia całej informacji. Pogrubioną czcionką zostały zaznaczone bity, które rzeczywiście zostały zmienione. Jak widać są to 4 z 8 modyfikowanych bitów. Po zmianie funkcje opisujące poszczególne piksele będą wyglądały następująco: czerwony – RGB(253,1,0), zielony – RGB(3,255,0), niebieski – RGB(0,0,255). Jak widać piksel niebieski nie uległ zmianie, gdyż cała informacja została zapisana w pierwszych dwóch pikselach. Różnica między oryginałem, a obrazem z ukrytą wiadomością jest nadal tak znikoma, że ludzkie oko nie jest jej w stanie wychwycić.

Proces ukrywania litery S za pomocą zmiany dwóch najmniej znaczących bitów w obrazie.
Rys. 2. Proces ukrywania litery S za pomocą zmiany dwóch najmniej znaczących bitów w obrazie składającym się z trzech pikseli mających kolory czerwony, zielony i niebieski.

Na rysunkach 3-4 pokazane zostało jak zmienił się obraz po modyfikacji jednego najmniej znaczącego bitu każdej barwy pikela. Jak widać zmiany są niedostrzegalne gołym okiem, a wszystkie trzy rysunki wyglądają identycznie.

Obraz przed ukryciem litery S
Rys. 3. Obraz przed ukryciem litery S     

Obraz po ukryciu litery S zmieniając najmniej znaczący bit.
Rys. 4. Obraz po ukryciu litery S zmieniając najmniej znaczący bit.

Wiadomości najlepiej ukrywać w obrazach o 24 bitowej głębi kolorów, bo można w nich zmieścić więcej danych niż w przypadku obrazów 8 bitowych. Dzieje się tak ponieważ w obrazach o głębi 24 bitowej każdy piksel zapisany jest za pomocą 3 bajtów, które opisują poszczególne składowe barwy.

O historii steganografii przeczytać możesz w artykułach: Historia steganografii – czasy dawne oraz Historia steganografii – ostatnie lata.

Dodaj komentarz