728 x 90

Steganografia z poziomu teoretycznego i programowalnego

Steganografia z poziomu teoretycznego i programowalnego

Steganografia cyfrowa umożliwia ukrywanie informacji w innych plikach informacyjnych, takich jak zdjęcia czy pliki muzyczne w taki sposób, aby osoba niepowołana nie była wstanie wykryć ich istnienia. Celem przykładu będzie ukrycie informacji w pliku graficznym w oparciu o klasyczną metodę modyfikacji najmniej znaczącego bitu (LSB – Least Significant Bit) oraz z wykorzystaniem języka Python.

Pojęcie steganografii wywodzi się z języka greckiego. Składają się na nie dwa słowa steganos oraz grapho oznaczają kolejno potajemny i piszę. W potocznym tłumaczeniu pojęcie oznacza ukryte pismo. Sztuka steganografii polega na ukrywaniu informacji w innych informacjach. Pojęcie „ukrywanie informacji” zostało po raz pierwszy użyte w 1972 roku przez D. Parnasa w pracy On the criteria to be used  in decomposing systems into modules. W niniejszej publikacji chciałbym się skupić na praktycznej stronie steganografii cyfrowej omawiając ukrywanie informacji w obrazach cyfrowych wykorzystując metodę najmniej znaczącego bitu i plikach audio posiłkując się spektrogramem. W kontekście metody najmniej znaczącego bitu wykorzystywane będą nadmiarowe informacje o kolorze w obrazie (ludzkie oko nie jest w stanie rozróżnić każdej zmiany koloru). W przypadku plików audio znowu bazą będą uwarunkowania biologiczne. Informacje zostaną ukryte na częstotliwościach, których człowiek nie słyszy.  Im lepsza jest jakość pliku z obrazem lub dźwiękiem tym więcej nadmiarowych informacji taki plik posiada co stwarza możliwość umieszczenia większej ilości informacji w stosunku do plików niskiej jakości. Najlepiej jest wykorzystać pliki graficzne o 24 bitowej głębi kolorów i 16 bitowe pliki audio.

Przebieg procesu

Proces stegograficzny musi zadziałać tak aby w pliku wynikowym nie można było zauważyć zmian typu: obraz znacznie różni się od oryginalnego, w pliku audio słychać szumy, plik wynikowy ma rozmiar kilka razy większy od pliku wejściowego. Nie tylko ukrywamy informacje w nośniku, ale również musimy zagwarantować niezauważalność zmian w nośniku.

Wady steganografii

Niewątpliwą wadą steganografii cyfrowej jest fakt, że informacja może zostać odczytana przez każdego kto zna metodę ukrywania informacji i wie, że została ona zastosowana w danym pliku. Mowa tutaj oczywiście o przypadku, w którym mamy do czynienia domyślnie z jedną warstwą bezpieczeństwa. W przypadku kiedy użytkownik zechce dodatkowo zaszyfrować ukryte informacje (przypuśćmy, że użyje szyfrowania asymetrycznego), osoba która odkryje informacje będzie musiała dodatkowo złamać klucz.

W przypadku kiedy mamy ukryte informacje w pliku PNG i chcemy się ich szybko pozbyć wystarczy, że dokonamy konwersji z pliku PNG na plik JPEG. Algorytm kompresji, który wykorzystywany jest w formacie JPEG usunie ukryte przez nas dane.

Ukrywane informacje muszę być stosunkowo małe, tak aby plik wynikowy nie różnił się mocno rozmiarem od pliku źródłowego. Przykładowo ukrycie pliku wideo w pliku graficznym spowoduje znaczny i zauważalny wzrost rozmiaru pliku graficznego. Zadziała to jednak w drugą stronę. Dla przykładu plik avi, którego klatki składają się z obrazów bmp jest idealny do ukrycia informacji właśnie w pojedynczych klatkach.

Studium przypadku – ukrycie informacji w obrazie

Przed przystąpieniem do zaprezentowania metody ukrywania informacji w obrazach należy zdefiniować podstawowe pojęcia, które będą potrzebne aby zrozumieć cały proces.

Bit – jest to najmniejsza jednostka logiczna stanowiąca wartościowanie 0 lub 1

Bajt – (umownie) najmniejsza adresowalna jednostka informacji pamięci komputerowej składająca się z 8 bitów, 1 bajt = jeden znak np. „z”

System binarny – system liczbowy, którego podstawą jest liczba 2. Do zapisu liczb potrzebne są tylko dwie cyfry: 0 i 1.

Przykładowo liczba 1010 w systemie binarnym to 10 w systemie dziesiętnym.

Zamiana liczby binarnej na dziesiętną.

Konwersja w drugą stronę odbywa się za pomocą wyznaczania reszty z dzielenia przez 2 danej liczby.

10           0

5              1

2             0

1              1

(1010)2 = (10)9

Zamiana liczby dziesiętnej na binarną, wynik czytany jest od dołu

 

Metoda najmniej znaczącego bitu (LSB – Leas significant bit) – metoda polega na zamianie najmniej znaczących bitów każdego piksela w obrazie na bity, które odpowiadają treści wiadomości do ukrycia. Należy zwrócić uwagę, że bity po prawej stronie mają coraz mniejszy wykładnik potęgi, ich zmiana niewiele wprowadzi w stan końcowy liczby.

(11 1111)2 = (77)9

(11 1110)2 = (76)9

(01 1111)2 = (37)9

Modyfikacja ostatniego bitu znacznie wpływa na liczbę końcową.

Aby odzwierciedlić tę metodę w przypadku kolorów, należy zmodyfikować ostatnie bity danego koloru. Kolor biały ma reprezentację:

R                     G                     B

11111111        11111111        11111111

RGB(255, 255, 255)

Po modyfikacji ostatnich bitów kolor biały zmieni swój poziom. Zmiana poziomu koloru jest niezauważalna dla ludzkiego oka.

RGB(254, 254, 254)

RGB(253, 253, 253)

RGB (153, 253, 253)

Praktyka

Wykorzystując metodę najmniej znaczącego bitu ukryta zostanie litera w obrazku, który składa się z trzech pikseli.

W obrazku zostanie ukryta litera K, której reprezentacja binarna wygląda w następujący sposób:

K = 0100 1011

Poszczególne kolory są zaprezentowane w postaci tabelek z bitami.

Reprezentacja koloru czerwonego

Reprezentacja koloru zielonego

Reprezentacja koloru niebieskiego

Litera K

Literę traktowana jest jako wiersz i dokonywane jest wstawianie danych z wiersza na ostatnie kolumny danych kolorów. W rezultacie otrzymujemy:

Reprezentacja koloru czerwonego

Reprezentacja koloru zielonego

Reprezentacja koloru niebieskiego

 

Obrazek prze ukryciem

 

Obrazek po ukryciu

Jak widać na rysunku zmiany w obrazku są niezauważalne dla ludzkiego oka. Zdekodowanie takiego obrazka polega na przeczytaniu ostatnich bitów danego koloru i zamienienie ich na kod ASCII, jest to oczywiście najprostsza metoda. Jeżeli ukrywana informacja jest dodatkowo szyfrowana lub kompresowana należy najpierw zbadać wyciągnięte bity i ocenić z jakiej metody dalej skorzystać najczęściej na zasadzie prób i błędów.

Większy fragment tekstu – zmiana rozmiaru

Z wykorzystaniem skryptu napisanego w języku Python został ukryty większy fragment tekstu w obrazku, który oryginalnie ma 12,2 KB. Ukryty tekst to: „to jest kawalek tekstu ktory chce ukryc poufna wiadomość”

 

Obrazek przed – 12,2 KB

Obrazek po – 14,9 KB

 

Ukrywanie informacji w plikach audio

W przypadku plików audio zaprezentowane zostanie ukrywanie informacji w spektrogramie audio. Metoda będzie miała również uwarunkowania biologiczne. Do ukrycia informacji zostaną wykorzystane te częstotliwości, których w normalnych warunkach człowiek nie słyszy. Informacje zostaną ukryte w pliku typu wav długości 6 sekund, rozmiar pliku to 1,15 Mb. W pliku audio słuchać kilka dźwięków pianina.

Spektrogram pliku audio, odbicie lustrzane drugiego kanału

Na wyższych częstotliwościach zostanie ukryty 24 bitowy obrazek bmp o rozmiarze 56,3 kb.

Obrazek do ukrycia

Z wyżej pokazanego obrazka generowany jest spektrogram. Wynikiem jest plik wav o rozmiarze 689kb. Wynikiem odtworzenia pliku są szumy.

 

Wygenerowany spektrogram na podstawie obrazka

Ostatni etap to złączenie dwóch plików audio. W wyniku otrzymamy plik ze słyszalnym dźwiękiem pianina oraz ukrytą informacją na wyższych częstotliwościach, którą da się zobaczyć na spektrogramie pliku. Plik wynikowy ma rozmiar 1,34 Mb.

Ukryte informacja na wyższych częstotliwościach w pliku audio

Literatura i źródła internetowe

  1. Gynvael Coldwind, Zrozumieć programowanie, PWN, 2016
  2. Volodymyr Mosorov, Steganografia cyfrowa. Sztuka ukrywania informacji, Wydawnictwo Uniwersytetu Łódzkiego, 2013
  3. Marta Walenczykowska, Analiza wybranych aplikacji steganograficznych
  4. Paweł Korus, Linux Magazine 62/2009, Zabawy ze steganografią
  5. Cox, M.Miller, Digital Watermarking and Steganography, Morgan Kaufmann, 2002
  6. Viswanathan V., Information  hiding  in  wave  files  through  frequency  domain, Elseivier Inc. 2007
  7. Basic methods of Audio Steganography (spectrograms), https://solusipse.net/blog/post/basic-methods-of-audio-steganography-spectrograms/

Leave a Comment

Your email address will not be published. Required fields are marked with *

Cancel reply

Inne artykuły

Zapraszamy na WMiI UMK

Studia na Wydziale Matematyki i Informatyki

Nasze szkolenia

iOS11 Design Patterns: szkolenie w Warszawie, 22-24.09.2017


Python – i Ty możesz programować: szkolenie dla nauczycieli, 13-14 września 2017 w Toruniu


Od zera do Apple kodera – szkolenie dla początkujących, 8-10 września 2017 w Warszawie


Xamarin – programowanie wieloplatformowe, 9-10 września 2017 w Toruniu

Ostatnie artykuły

Zapraszamy na UMK