UNIWERSYTET PEDAGOGICZNY. im. Komisji Edukacji Narodowej W KRAKOWIE. Wydział Matematyczno-Fizyczno-Techniczny

Podobne dokumenty
Analiza i Przetwarzanie Obrazów. Szyfrowanie Obrazów. Autor : Mateusz Nawrot

Wykład II. Reprezentacja danych w technice cyfrowej. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Systemy multimedialne. Instrukcja 5 Edytor audio Audacity

Wymiana i Składowanie Danych Multimedialnych Mateusz Moderhak, EA 106, Pon. 11:15-12:00, śr.

Co to jest dźwięk. Dźwięk to wyrażenie słuchowe wywołane przez falę akustyczną. Ludzki narząd wyłapuje dźwięki z częstotliwością 16 do 20 Hz

Audacity jest darmowym edytorem audio

Technologie Informacyjne

Przygotowali: Bartosz Szatan IIa Paweł Tokarczyk IIa

Zastosowanie kompresji w kryptografii Piotr Piotrowski

Formaty plików. graficznych, dźwiękowych, wideo

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

O sygnałach cyfrowych

Programowanie w języku Python. Grażyna Koba

Techniki multimedialne

Księgarnia internetowa Lubię to!» Nasza społeczność

Wykład VII. Systemy kryptograficzne Kierunek Matematyka - semestr IV. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

lekcja 8a Gry komputerowe MasterMind

Podstawy Przetwarzania Sygnałów

Cechy karty dzwiękowej

Laboratorium. Szyfrowanie algorytmami Vernam a oraz Vigenere a z wykorzystaniem systemu zaimplementowanego w układzie

Zastosowanie Informatyki w Medycynie

Systemy i Sieci Telekomunikacyjne laboratorium. Modulacja amplitudy

Dźwięk podstawowe wiadomości technik informatyk

2. STRUKTURA RADIOFONICZNYCH SYGNAŁÓW CYFROWYCH

Neurobiologia na lekcjach informatyki? Percepcja barw i dźwięków oraz metody ich przetwarzania Dr Grzegorz Osiński Zakład Dydaktyki Fizyki IF UMK

E.14.1 Tworzenie stron internetowych / Krzysztof T. Czarkowski, Ilona Nowosad. Warszawa, Spis treści

Spis treści. Format WAVE Format MP3 Format ACC i inne Konwersja między formatami

16MB - 2GB 2MB - 128MB

Spis treści. Format WAVE Format MP3 Format ACC i inne Konwersja między formatami

Zasady programowania Dokumentacja

Temat: Algorytm kompresji plików metodą Huffmana

Przykładowe zagadnienia na sprawdzian z wiedzy ogólnej. Linux to nazwa: A. Programu biurowego. B. Systemu operacyjnego. C. Przeglądarki internetowej.

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania KOMPUTEROWE SYSTEMY STEROWANIA (KSS)

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Biblioteka: sound. RGui. Podstawowe funkcje do działań na plikach.wav i próbkach dźwięku. Autor biblioteki: Matthias Heymann

Cała prawda o plikach grafiki rastrowej

Sprawdzian wiadomości z jednostki szkoleniowej M3.JM1.JS3 Użytkowanie kart dźwiękowych, głośników i mikrofonów

Przetwornik analogowo-cyfrowy

ZASTOSOWANIE TRANSFORMATY FOURIERA W STEGANOGRAFII DŹWIĘKU

Memeo Instant Backup Podręcznik Szybkiego Startu

Wizualizacja pogody dla windsurferów

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

1. Pobieranie i instalacja FotoSendera

Andrzej Leśnicki Laboratorium CPS Ćwiczenie 9 1/5 ĆWICZENIE 9. Kwantowanie sygnałów

Kompresja dźwięku w standardzie MPEG-1

Transpozer czasowy mowy

INSTRUKCJA DO OPROGRAMOWANIA KOMPUTEROWEGO

INSTRUKCJE WIKAMP Dotyczy wersji systemu z dnia

kodowanienaekranie.pl

Ćwiczenie II. Edytor dźwięku Audacity

Technika audio część 2

Autorzy: Tomasz Sokół Patryk Pawlos Klasa: IIa

Wykrywanie twarzy na zdjęciach przy pomocy kaskad

Konwersja dźwięku analogowego do postaci cyfrowej

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

SCENARIUSZ LEKCJI. Fale akustyczne oraz obróbka dźwięku (Fizyka poziom rozszerzony, Informatyka poziom rozszerzony)

Transformata Fouriera

Percepcja dźwięku. Narząd słuchu

Logiczny model komputera i działanie procesora. Część 1.

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE STOPNIE Z INFORMATYKI W KLASIE 8 opracowane na podstawie podręcznika

Przesył mowy przez internet

Spis treści. 1. Cyfrowy zapis i synteza dźwięku Schemat blokowy i zadania karty dźwiękowej UTK. Karty dźwiękowe. 1

Kwantowanie sygnałów analogowych na przykładzie sygnału mowy

1 Podstawy c++ w pigułce.

instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI

Wpływ szumu na kluczowanie fazy (BPSK)

Programowanie w języku C++ Grażyna Koba

Nagrywamy podcasty program Audacity

Etap I V Gminnego Konkursu Informatycznego.

Zastowowanie transformacji Fouriera w cyfrowym przetwarzaniu sygnałów

Platforma e-learningowa

Rozdział 1. Zastosowanie komputera w życiu codziennym Rozdział 2. Elementy zestawu komputerowego...11

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

System diagnostyki słuchu

Politechnika Szczecińska Wydział Elektryczny Elektronika i Telekomunikacja

Audio i video. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Tematy lekcji informatyki klasa 4a styczeń 2013

wagi cyfry pozycje

POLITECHNIKA LUBELSKA WYDZIAŁ ELEKTROTECHNIKI I INFORMATYKI INSTYTUT INFORMATYKI ZAKŁAD OCHRONY INFORMACJI

REFERAT PRACY DYPLOMOWEJ

5.4. Tworzymy formularze

5.4. Efekty specjalne

LABORATORIUM TELEMONITORINGU OBIEKTÓW I AGLOMERACJI. Temat: Metody anonimizacji obrazu

Teoria przetwarzania A/C i C/A.

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń:

1. Opis aplikacji. 2. Przeprowadzanie pomiarów. 3. Tworzenie sprawozdania

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Przetwarzanie analogowo-cyfrowe sygnałów

MOŻLIWOŚCI WYKORZYSTANIA TRANSFORMATY FOURIERA W STEGANOGRAFII DŹWIĘKU

Konwersja AVI do DVD w programie Avidemux z napisami (również w systemie Linux)

Generowanie ciągów bitów losowych z wykorzystaniem sygnałów pochodzących z komputera

PL B BUP 16/04. Kleczkowski Piotr,Kraków,PL WUP 04/09

WYMAGANIA EDUKACYJNE. Witryny i Aplikacje Internetowe klasa I

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1

Transkrypt:

UNIWERSYTET PEDAGOGICZNY im. Komisji Edukacji Narodowej W KRAKOWIE Wydział Matematyczno-Fizyczno-Techniczny Katedra Informatyki i Metod Komputerowych Kierunek Informatyka, specjalność Social Media JAKUB KRZEMIŃSKI UKRYWANIE INFORMACJI W DŹWIĘKU Implementacja systemu steganograficznego Praca licencjacka napisana pod kierunkiem dr. inż. Marcina Piekarczyka KRAKÓW 2016

Spis Treści Spis Treści... 2 Wstęp... 3 1. Historia steganografii... 4 2. Dźwięk i ludzki słuch... 6 3. Metody steganografii komputerowej... 7 LSB... 7 Ukrywanie informacji w szumie... 8 Wykorzystanie echa... 9 Metoda rozproszonego widma... 10 Wykorzystanie kodowania fazy... 11 Użycie znaczących fragmentów sygnału... 13 4. Oprogramowanie implementujące steganografię... 14 5. Autorska implementacja systemu steganograficznego... 17 Założenia projektowe... 17 Python... 17 Biblioteka Tk... 18 Struktura programu... 18 Implementacja LSB... 19 Implementacja Ukrycia w echu... 21 Odczytywanie ukrytej wiadomości... 23 6. Testy efektywności systemów... 24 7. Podsumowanie... 28 Bibliografia... 29 Spis rysunków... 31 2

Wstęp Ludzie od zawsze mieli potrzebę ukrywania informacji, aby te nie zostały odkryte przez osoby nieupoważnione. Wiązało się to z pragnieniem prywatności. Stosowano wiele metod, aby wiadomość pozostała niezauważona. W tym celu powstawały systemy, których zadaniem było utrudnić lub uniemożliwić odczytanie treści. Dla zachowania poufności informacji stosowano i stosuje się nadal różne procedury. W dzisiejszych czasach najczęściej wykorzystywane są kryptografia 1 oraz steganografia 2. Tematem pracy jest przedstawienie implementacji systemów steganograficznych ukrywających informacje w plikach dźwiękowych oraz wykonanie testów mających za zadanie sprawdzić, czy informacje ukryte za pomocą stworzonych aplikacji są trudno wykrywalne. Steganografia jest to nauka o komunikacji, która zajmuje się metodami ukrywania informacji w taki sposób, aby ta nie została wykryta. Implementacje systemów steganografii komputerowej zostały wykonane w języku Python[20]. Praca została podzielona na sześć części. W pierwszej znalazły się historyczne informacje na temat wykorzystania steganografii. W drugim rozdziale zawarto podstawowe dane dotyczące ludzkiego słuchu. Kolejna część przedstawia wybrane metody steganografii komputerowej, m.in. LSB 3, wykorzystania echa, czy wykorzystania kodowanej fazy. Czwarta część zawiera informacje na temat programów steganograficznych dostępnych na licencji Open Source. W piątym rozdziale przedstawiono autorską implementację systemu steganograficznych, w tym założenia projektowe oraz opis wykonania projektu i użytych technologii. W ostatniej części pracy zawarto wyniki testów efektywności, które porównują obie metody. Wszystkie trudne pojęcia (dla osób niezaznajomionych z informatyką) są tłumaczone na bieżąco, podczas pierwszego pojawienia się w tekście. 1 Kryptografia nauka o przekazywaniu danych w sposób zabezpieczony 2 Steganografia nauka o przekazywaniu danych w sposób utajniony 3 LSB Najmniej znaczący bit (least significant bit, LSB) 3

1. Historia steganografii Steganografia stosowana jest już od starożytności. Herodot w Dziejach [1], w księdze siódmej, opisał metodę ukrywania informacji na tabliczkach służących do pisania. Po zeskrobaniu z niej wosku, zapisywano wiadomość, a następnie tabliczkę zalewano ponownie woskiem, aby wiadomość pozostała niewidoczna. Pierwsze doniesienia o wykorzystaniu miniaturyzacji nośnika informacji w celu przesłania pochodzą z 1871 roku [2]. Podczas wojny francusko-pruskiej przesyłano raporty z frontu do Paryża na prostokątach rozmiarów 3x4cm. Technika ta została udoskonalona przez niemiecki wywiad podczas II Wojny Światowej, gdzie za pomocą specjalnego aparatu przedstawionego na rysunku 1, tworzono mikraty, zwane również mikrokropkami. Były to kropki średnicy 1 mm, na których, dzięki wykonaniu zdjęcia w skali 1:300, można było umieścić jedną kartkę rozmiaru A4. Rysunek 1 Aparat Mark IV do tworzenia mikropkropek, źródło: https://www.cia.gov/cia/information/artifacts/markiv.jpg W 1966 roku, podczas wojny w Wietnamie, została przeprowadzona konferencja prasowa, podczas której nagrywano przebieg rozmowy z jeńcami [4]. Amerykański żołnierz Jeremiah Andrew Denton, podczas rozmowy z urzędnikiem, mrugał oczami do kamery, przekazując wiadomość alfabetem Morse'a. 4

Brzmiała ona T-O-R-T-U-R-E. Dzięki odczytaniu wiadomości przez Amerykańskie służby, mężczyzna został uwolniony wraz z 591 jeńcami podczas operacji Homecoming. Przykładem niedawnych wydarzeń, podczas których wykorzystano steganografię, była komunikacja z więźniami Rewolucyjnych Sił Zbrojnych Kolumbii w 2010 roku [5]. Pułkownik Jose Espejo chciał przekazać informacje schwytanym ludziom. Poprosił o pomoc Juana Carlosa Ortiza, aby wymyślił w jaki sposób to wykonać. W wiadomości miała być zawarta informacja o tym, że przeprowadzana jest akcja uwalniania więźniów oraz, aby nie tracili nadziei na ratunek. Mężczyźni doszli do wniosku, że mogliby stworzyć piosenkę, w której będzie ukryta wiadomość. Piosenka Better Days posiadała ukrytą w refrenie wiadomość w alfabecie Morse a o treści 19 ocalonych. Jesteś następny. Nie trać nadziei. Piosenka była emitowana w 130 stacjach radiowych. Po wypuszczeniu na wolność, wielu z więźniów przyznało, że odebrało przekaz i dzięki temu zmienili swoje nastawienie: podtrzymani na duchu przetrwali. 5

2. Dźwięk i ludzki słuch Fala dźwiękowa to rozchodzące się po ośrodku sprężystym (na przykład w gazie lub cieczy) zaburzenie gęstości. Jest to odmiana fali akustycznej powodująca wrażenia słuchowe. Ludzki słuch nie jest przystosowany do słyszenia całego spektrum dźwięków. Może on odebrać sygnały w zakresie od 20 Hz do 16000 Hz [10] (rysunek 2), jednak zakres największej czułości wynosi od 1000 Hz do 3000 Hz. Niektóre zwierzęta posiadają szerszy zakres dźwięków słyszalnych. Przykładowo zakres częstotliwości słyszanych przez psy wynosi od 15 Hz do 30000 Hz. Wiedza ta wykorzystywana jest w algorytmach kompresji stratnej oraz w steganografii, gdzie wiadomość ukrywa się w częstotliwościach niesłyszalnych Rysunek 2 Powierzchnia słyszalności, źródło: Adam Kliczek, wikimedia.org 6

3. Metody steganografii komputerowej Steganografię można zastosować poprzez przekazanie wiadomości w sposób widoczny gołym okiem, tak jak w przypadku piosenki Better Days. Można również zastosować różne metody cyfrowej obróbki nośnika informacji, aby ukryć wiadomość głębiej. W opisach pojawi się pojęcie pojemności steganograficznej, czyli informacji o ilości danych, jakie możemy ukryć w kontenerze. Poniżej przedstawione zostały niektóre z technik ukrywania informacji w plikach dźwiękowych. LSB Najczęściej wykorzystywanymi metodami jest LSB w wielu wariantach, polegające na zmianie najmniej znaczących bitów w pliku. Ludzki narząd słuchu jest zbyt słaby, aby wykryć różnicę między sygnałem oryginalnym a przetworzonym. W plikach dźwiękowych modyfikujemy ostatnie bity próbki dźwięku, zamieniając je na 0 lub 1 [6]. Można zmodyfikować bardziej znaczące bity niż ostatnie, dzięki czemu zyskujemy większą pojemność steganograficzna do ukrycia informacji, lecz modyfikacja taka staje się bardziej słyszalna. Informacja ukryta w ten sposób jest bardzo podatna na zniszczenie. Większość programów do obróbki dźwięku, podczas modyfikacji pliku, niszczy zawartą w nim informację. Ograniczeniem tej metody są typy plików informację możemy ukryć tylko w plikach z kompresją bezstratną (np..wav,.bmp) 4. Najprostszą prezentacją zasady działania tej metody jest przedstawienie zmiany koloru w bitmapach (.bmp). Pojedynczy piksel, czyli punkt w grafice rastrowej 5, składa się z trzech kolorów: czerwonego, zielonego oraz niebieskiego. W każdym z nich możemy ukryć informację. Na rysunku 3 przedstawiony został podstawowy kolor (po lewej stronie) oraz kolor z ukrytymi bitami (po prawej stronie). 4.wav,.bmp rozszerzenia plików 5 Grafika rastrowa obraz reprezentowany siatką pionowo - poziomą 7

Informacja została ukryta w każdym bicie koloru, dzięki czemu możemy ukryć 3 bity informacji. W grafice o rozmiarach 400 px wysokości i 400 px szerokości jest możliwe umieszczenie 480000 bitów informacji, czyli 60000 znaków. 400 400 3 = 480000 480000 8 = 60000 Rysunek 3 Porównanie kodów kolorów w metodzie LSB, źródło: praca własna Ukrywanie informacji w szumie Kolejną z metod ukrycia informacji jest modyfikacja szumu [7], który posiada każdy sygnał dźwiękowy. Jedną z najprostszych metod wykorzystania tej techniki jest modyfikacja istniejącego szumu. W trakcie próbkowania dźwięku (czyli procesu tworzenia sygnału dyskretnego reprezentującego sygnał ciągły [14]) powstają zniekształcenia, które możemy ograniczyć przy pomocy sygnału rozpraszającego. Jest on odpowiednio dostosowanym sygnałem o niewielkiej mocy, który wprowadza do dźwięku odrobinę szumu niwelując zniekształcenia [8]. Informacje można ukryć poprzez zmodyfikowanie sygnału rozpraszającego i z jego pomocą spróbkować kontener [6]. System steganograficzny realizuje się za pomocą dwóch kwantyzerów 6, które muszą dawać różne wyniki próbek wynikowych. Dzięki temu możemy przypisać wartości zero oraz jeden dla odpowiednich wyników kwantyzacji i wykorzystać je aby ukryć informację. Aby odczytać informację musimy sprawdzić z którego kwantyzera pochodzi sprawdzany fragment dźwięku. 6 Kwantyzer - przyrząd dokonujący kwantyzacji, czyli przyporządkowujący skończoną liczbę dyskretnych poziomów do wartości sygnału analogowego 8

Rysunek 4 Wykorzystywanie kwantyzerów dla ukrycia znaków, źródło: [21] Wykorzystanie echa Jest to zbiór technik polegających na wykorzystaniu echa w celu ukrycia informacji. Metody te opierają się na fakcie, iż ludzkie ucho nie jest w stanie wykryć echa występującego w czasie do dwóch milisekund oraz posiadającego do 50% siły sygnału powielanego [12]. Jednym ze sposobów wykorzystania tej techniki jest przypisanie wartości zero oraz jeden dla różnych opóźnień echa (na przykład dla 2 ms i 1 ms), a następnie ukrycie wiadomości bit po bicie. Opóźnienie nadajemy dla bloku ramek dźwięku, a pojemność steganograficzna zależna jest od jego wielkości. Na rysunku 5 został przedstawiony proces dodawania echa do sygnału dźwiękowego. Oryginalną próbkę dźwięku umieszcza się w filtrze opóźniającym h(t), który tworzy zmodyfikowaną kopię dźwięku, a następnie łączy razem oba sygnały. W miejsce δ podaje się opóźnienie w milisekundach. 9

Rysunek 5 Dodawanie echa do próbki dźwięku, a)schemat b) wykres, źródło: praca własna Aby odczytać ukryte dane, należy obliczyć autokorelację fragmentu sygnału oraz opóźnień odpowiadającym ukrytym zerom i jedynkom. Metoda rozproszonego widma Metody rozproszonego widma opierają się na fakcie, że ludzki słuch nie wykrywa niektórych dźwięków. Rozproszenie ukrywanych danych w całym spektrum widma pliku będącego kontenerem, umożliwia na ukrycie nawet w wypadku gdy moc sygnału przekracza moc szumu [8]. Wykorzystanie częstotliwości niesłyszalnych przez ludzi pozwala na umieszczenie tam informacji z minimalnym wpływem na odbierany dźwięk. Sposób ten jest odporny na uszkodzenie ukrytych informacji ze względu na trudność w dokładnym oczyszczeniu całego dźwięku bez uszkadzania jego właściwej struktury. System ten realizuje się poprzez wymożenie wygenerowanego pseudolosowego sygnału (stworzonego za pomocą ziarna musi być powtarzalny) z informacją. Tak rozproszone widmo należy połączyć z kontenerem. Odczyt informacji polega na wygenerowaniu pseudolosowego sygnału za pomocą klucza, a następnie przeprowadzenie operacji XOR 7. Dla zachowania niskich zniekształceń, moc sygnału dodawanego do kontenera powinna mieć najwyżej 0.5% mocy sygnału kontenera [16]. 7 XOR operacja logiczna, alternatywa wykluczająca 10

Wykorzystanie kodowania fazy Tak jak w metodzie opisanej poprzednio (rozproszone widmo), ta technika oparta jest na ograniczeniach percepcji słuchowej. Jest wiele algorytmów operujących na tym zjawisku. Możemy je podzielić na grupy zależne od kodowania oraz modulacji fazy. Działanie kodowania bazuje na podziale kontenera na części o stałym rozmiarze. Informacje zostają ukryte tylko w pierwszej części poprzez modyfikację widma fazy dźwięku. Jest to zasadniczą wadą można ukryć małą ilość danych oraz stosunkowo łatwo uszkodzić wiadomość. Modulacja fazy polega na drobnej modyfikacji każdego pasma nośnika [16]. Aby zmiana była niewykrywalna słuchem, musi zostać spełniona zależność: φ(z) z < 30 φ(z) faza sygnału z skala Barka, częstotliwość krytyczna Na następnej stronie przedstawiona została tabela zależności między częstotliwością a skalą barkową Zwickera. b = 13 arctan(0.76f) + 3.5 arctan (( f 7.5 ) 2 ) f częstotliwość wyrażona w hercach Modyfikację wykonać należy dla każdego z wcześniej stworzonych grup danych. Duże bloki zapewniają niewielkie zmiany fazy w czasie. Ukrytą wiadomość należy zapisać jako zmiany fazy, aby modyfikacja o jeden stopień w skali odzwierciedlała informację o jednym bicie. Im większy zakres zmiany kodujący bit, tym większa odporność dodanych informacji. Tracimy jednak przy tym na pojemności steganograficznej. Informacje odczytujemy poprzez porównanie wyjściowego pliku z oryginałem. Warto zaznaczyć, że niewielkie modyfikacje kontenera nie oddziaływają na ukryte dane. 11

Numer pasma Częstotliwość środkowa [Hz] 1 50 100 2 150 100 3 250 100 4 350 100 5 450 110 6 570 120 7 700 140 8 840 150 9 1000 160 10 1170 190 11 1370 210 12 1600 240 13 1850 280 14 2150 320 15 2500 380 16 2900 450 17 3400 550 18 4000 700 19 4800 900 20 5800 1100 21 7000 1300 22 8500 1800 23 10500 2500 24 13500 3500 Tabela 1Podział na 24 pasma krytyczne według Zwickera, źródło: http://edu.pjwstk.edu.pl/wyklady/mul/scb/main16.html Szerokość pasma [Hz] 12

Użycie znaczących fragmentów sygnału Operacje modyfikujące czas trwania (ang. Time Scale Modification, TSM) mogą spowodować usunięcie ukrytej informacji. Niewiele algorytmów steganograficznych jest odpornych na modyfikacje plików w ten sposób. Aktualnie wykorzystywane algorytmy TSM zostały stworzone w taki sposób, aby otrzymać jak najwyższą jakość dźwięku dzięki operacjom na poszczególnych fragmentach sygnału. Najpierw plik jest analizowany, aby znaleźć fragmenty, w których słuch jest najbardziej wrażliwy i zostają one wykluczone lub modyfikowane w jak najmniejszym stopniu. Wei Li oraz Xiangyang Xue w swojej publikacji [6] przedstawili, że można dołączyć znak wodny, który nie jest podatny na modyfikację czasu trwania. Trzeba wykonać pasmowo filtrowanie przepustowe sygnałów wykluczając pasmo w zakresie od 3 khz do 5 khz. Zakres ten jest pomijany przez TSM ze względu na bardzo dobry odbiór dźwięków przez człowieka. Największe wartości w analizowanym pliku pokazują miejsca, które nie są poddawane modyfikacji przez algorytm i tam należy dodać znak wodny. Dla regionu wielkości 4096 próbek można maksymalnie dołączyć 64 bity danych. Zanim informacja zostanie dodana, powinna zostać przetworzona algorytmem binarnego kluczowania fazy, aby zamienić wartości 0 oraz 1 na -1 oraz 1. Następnie dane są dołączane do regionu poprzez modyfikację współczynników transformaty Fouriera. Podczas badań twórcy algorytmu potwierdzili, że metoda ta pozwala informacji przetrwać kompresję do mp3 (przepustowość 32kb/s), dodanie szumu, TSM do 16% i wiele innych przekształceń 13

4. Oprogramowanie implementujące steganografię Istnieje wiele programów, które implementują systemy steganograficzne. Niektóre z nich są darmowe a inne wymagają wykupienia licencji. Poniżej zostało zaprezentowanych kilka przykładowych programów na darmowej licencji. Pierwszym z nich jest OpenPuff, której pierwsza wersja pochodzi z grudnia 2004 roku. Obsługuje on, jako kontenery danych, zarówno pliki graficzne, dźwiękowe jak również wideo. Możliwe jest ukrycie wiadomości w dokumentach PDF. Głównymi cechami programu jest możliwość ukrycia do 256 MB informacji i losowo wybierany algorytm szyfrujący (256 bitowy). Ciekawym zabiegiem, jaki możemy zastosować dzięki programowi, jest steganografia oraz szyfrowanie wraz z możliwością zaprzeczenia. Oznacza to, że program umożliwia dodanie informacji jako wabik, czyli danych o małej wartości, które także są ukryte i podczas ataku na ukryte dane te zostaną wykryte wcześniej. Program dostępny jest na licencji freeware [17]. Rysunek 6 Aplikacja OpenPuff, źródło: http://embeddedsw.net/openpuff_steganography_home.html 14

Kolejnym programem wykorzystującym steganografię jest s-tools, napisany przez Andrew Brown a. Aplikacja pozwala ukryć informacje zarówno w plikach graficznych jak i w audio. Podstawowymi formatami jakie można wykorzystać jako kontenery są WAV, BMP oraz GIF. S-tools do wykonania steganografii wykorzystuję technikę LSB w losowo wybranych miejscach kontenera, jednak przed dołączeniem do pliku bazowego, dane są szyfrowane za pomocą jednego z zaimplementowanych algorytmów kryptograficznych (IDEA, DES oraz MDC)[18]. Rysunek 7 Aplikacja s-tools, źródł: http://bit599.netai.net/s_tools.htm 15

Większość aplikacji dostępnych w sieci, potrafi ukryć dane tylko w plikach z kompresją bezstratną. Z powodu rozmiarów plików WAV, przesyłanie ich przez Internet może wydawać się podejrzane. Rozwiązanie tego problemu znalazł Fabien Petitcolas, który stworzył program o nazwie MP3Stego. Aplikacja bazuje na ukrywaniu informacji w trakcie kompresji pliku do formatu MP3. Wiadomość podatna jest na zniszczenie w trakcie dekompresji i ponownej kompresji pliku. Dla zmniejszenia objętości i zwiększenia losowości ukrytej informacji zastosowana jest dodatkowa kompresja oraz szyfrowanie [19]. Aplikacja nie posiada graficznego interfejsu i obsługuje się ją wyłącznie za pomocą konsoli poleceń. Rysunek 8 Program MP3Stego, źródło: http://www.petitcolas.net/steganography/mp3stego/ 16

5. Autorska implementacja systemu steganograficznyego Założenia projektowe Celem pracy jest implementacja systemu steganograficznego, ukrywającego informację w sygnale audio. Dla sprecyzowania zakresu pracy, zostało przyjęte iż jako kontener wykorzystane zostały pliki WAVE posiadające dwa kanały dźwiękowe. Ukrywane mogą być dowolne dokumenty. Pierwszą informacją, która została umieszczona w sygnale wynikowym, jest bit mówiący o metodzie, jaką wykorzystano. W kolejnym kroku zostały ukryte 32bity mówiące o wielkości informacji, następne 32bity informują o ilości znaków rozszerzenia plików a na koniec zakodowane zostało rozszerzenie wiadomość oraz sama informacja. Wybranymi metodami ukrywania jest LSB oraz wykorzystanie echa. Python Język programowania, w którym zostały zaimplementowane systemy steganograficzne, to Python. Jest to język programowania wysokiego poziomu, który powstał w 1991 roku, a jego twórcą był Guido van Rossum. Python, podobnie jak język C++, nie wymaga stosowania usystematyzowanego stylu programowania. Na chwilę obecną najnowsza wersja języka nosi numer 3.5.2 (27 czerwca 2016), jednak starsza wersja również jest rozwijana i aktualizowana (Python 2.7.12 25 czerwca 2016) [20]. Aktualnie starsza wersja języka (2.7) nadal jest bardzo popularna ze względu na dużą ilość udostępnionego kodu źródłowego i bibliotek, które nie są kompatybilne z wersją 3.5. Głównymi zaletami języka jest pokaźnych rozmiarów biblioteka standardowa, brak wymogu deklarowania zmiennych oraz instrukcje grupowane za pomocą wcięć zamiast nawiasów. Najważniejszą wadą tego języka jest prędkość z jaką wykonywane są obliczenia. Fakt, iż język jest interpretowany, ma znaczący wpływ na szybkość działania programów.

Biblioteka Tk Tk jest biblioteką na licencji opensource 8, która służy do budowania aplikacji posiadających GUI (Graficzny Interfejs Użytkownika). Twórcą tej biblioteki jest John Ousterhout. Początkowo stosowano ją tyko dla języka skryptowego TCL. Dzięki zastosowaniu Tk, możliwe jest stworzenie GUI które będzie działać po uruchomieniu na większości systemów operacyjnych oraz powstało wiele dowiązań do innych języków. Jednym z takich dowiązań jest Tkinter dla języka Python. Biblioteka Tk została wykorzystana w implementacji systemów steganograficznych, aby ułatwić pracę z programem. Struktura programu Główna częścią programu jest klasa Application. Znajdują się w niej zmienne które przechowują najważniejsze dane wykorzystywane w trakcie działania programu, takie jak container (zmienna przechowująca wczytany plik.wav, w którym ukrywana będzie wiadomość) lub information (przechowuje wiadomość do ukrycia). Podczas inicjalizacji klasy, program buduje swoje GUI tworząc obiekty modułu Tkinter. Rysunek 9 Przygotowany program realizujący systemy steganograficzne, źródło: praca własna Na rysunku 9 przedstawiony został graficzny interfejs użytkownika. Po naciśnięciu przycisków Wybierz Kontener, użytkownik wybiera plik, w którym ma zostać ukryta wiadomość. Przycisk Wybierz informacje służy do wczytania informacji, którego zawartość ma zostać poddana procesowi steganografii. Po wybraniu kontenera oraz informacji do ukrycia, pojawiają się dwa przyciski: Metoda LSB oraz Wykorzystanie echa (rysunek 10). Po naciśnięciu 8 Opensource odłam ruchu wolnego oprogramowania 18

jednego z nich, rozpoczyna się proces ukrywania wiadomości. Z racji faktu, że procesy są dosyć złożone, program przestaje reagować na działania użytkownika. Po zakończeniu procesu ukrywania informacji, program znów staje się aktywny. Rysunek 10 Przygotowany program po wybraniu kontenera oraz informacji, źródło: praca własna Implementacja LSB Pierwszą implementacją systemu steganograficznego jest metoda ukrywania informacji wykorzystująca najmniej znaczący bit (Metoda LSB). Metoda ta została opisana wcześniej w rozdziale 4. Metody steganografii komputerowej. Rozpoczynając działanie, program otwiera nowy plik o nazwie output.wav i przypisuje mu parametry oraz framerate. Dla bezpieczeństwa plik będący kontenerem jest przewijany do początku pliku, aby podczas operacji ukrywania wiadomości nie doszło do błędów. def lsb(self): print("rozpoczynam ukrywanie za pomocą metody LSB!") self.container.rewind() newfile = wave.open('output.wav', 'wb') newfile.setparams(self.container.getparams()) newfile.setframerate(newfile.getframerate()) Rysunek 11 Fragment kodu źródłowego metody LSB, źródło: praca własna Po wykonaniu tych operacji, program rozpoczyna pętlę, której celem jest przekopiowanie ramek do nowego pliku. Podczas pętli sprawdzane są warunki określające, co aktualnie jest wykonywane. Pętla wykonuje się do czasu aż zmienna 19

i nie jest równa zmiennej self.maxframes (zmienna ta przechowuje liczbę ramek, jaką posiada plik będący kontenerem). Przy każdym rozpoczęciu operacji będących w pętli, pobierana jest jedna ramka kontenera i zostaje przekonwertowana za pomocą funkcji from_bytes() (pochodzącej z klasy int), na liczbę całkowitą. Następnie sprawdzana jest wielkość zmiennej i. Jeśli jest większa lub równa od 1 oraz mniejsza od 33 ukrywana jest liczba znaków ukrytych w wiadomości. 32 bity ukrywane w tym czasie odpowiadają wielkości liczby całkowitej w pamięci komputera. Jeśli i jest większe lub równe liczbie 33, a mniejsze od 33 plus ilość znaków wiadomości (zmienna self.infolen). Jeśli ten warunek jest prawdziwy, program sprawdza jaki znak przechowywany jest w tablicy infostrint[i-34] i zależnie czy jest to zero czy jeden, taki znak zostaje ukryty za pomocą zero_lsb() lub one_lsb(). @staticmethod def zero_lbs(number): if number % 2 == 0: LSBZero = number else: LSBZero = number - 1 return LSBZero @staticmethod def one_lsb(number): if number % 2 == 1: LSBOne = number else: LSBOne = number + 1 return LSBOne Rysunek 12 Kod funkcji ukrywającej jeden lub zero, źródło: praca własna Jeżeli żaden z powyższych warunków nie został spełniony, ukryta zostaje liczba zero (czyli w przypadku ramki będącej pierwszą oraz jeśli zmienna i przekracza zakres (34+self.infolen)). 20

Rysunek 13 Porównanie kontenera z plikiem wynikowym w programie Audacity, źródło: praca własna Rysunek 13 przedstawia porównanie pierwszych 500 milisekund pliku wynikowego (output.wav) oraz pliku-kontenera (test.wav). Oba pliki nie posiadają widocznych różnic, przez co można wywnioskować że operacja przebiegła pomyślnie. Informacje zostają ukryte w prawym kanale dźwięku. Implementacja Ukrycia w echu Drugim zaimplementowanym systemem steganograficznym jest jedna z metod wykorzystujących echo. Huynh Ba Dieu z wietnamskiego Uniwersytetu Duy Tan w swoim artykule [13] przedstawia opracowaną przez siebie metodę, która została wykorzystana w programie. Głównymi założeniami tej metody jest przypisanie dla pliku z echem wartości jeden, a dla pliku bez echa zera. Pierwszą rzeczą jaką należy wykonać, jest utworzenie kopii pliku, która zawiera echo. Zgodnie z założeniami przedstawionymi w rozdziale 4. tej pracy, powtórzenie dźwięku musi zachodzić z opóźnieniem do 2ms oraz z mocą nie przekraczającą 50% mocy dźwięku kontenera. Przygotowany program tworzy plik o nazwie plik_z_echo.wav, posiadający echo o sile 10% i występujące po czasie dwóch milisekund. 21

Rysunek 14 Porównanie pliku posiadającego stałe echo i kontenera, źródło: praca własna Na rysunku 14 przedstawiono porównanie pliku posiadającego echo, utworzonego w pierwszej części działania metody ukrywającej informację w echu. W programie Audacity, na ekranie przedstawiającym ścieżki w dźwięku, od 0 do 0,1 sekundy dostrzegalna jest subtelna zmiana amplitudy. Oznacza to, że echo zostało poprawnie dołączone do kontenera. Kolejnym etapem który zostaje wykonany, jest utworzenie nowego pliku o nazwie output_echo.wav oraz otworzenie poprzednio stworzonego plik_z_echo.wav. Po przekopiowaniu parametrów z kontenera, rozpoczyna się działanie pętli, której działanie kończy się gdy zmienna iteracyjna i będzie miała wartość równą ilości ramek kontenera (self.container.getnframes()). Podczas działania pętli sprawdzane są warunki. Pierwszy z nich to: czy zmienna i wynosi 0. Jeśli tak, ukryta zostaje wartość jeden w pierwszej ramce pliku. Następny warunek sprawdza czy i jest większe od 0 oraz czy i nie przekracza wartości 33. W tym warunku ukrywana jest ilość bitów ukrytej wiadomości, dla łatwiejszego odczytania jej przez program. Ostatnim warunkiem jest sprawdzenie czy i jest większe lub równe liczbie 33 oraz czy nie jest mniejsze od 33+self.infolen. Jest ten warunek jest prawdziwy, zostają ukryte bity wiadomości. Jeśli żaden z warunków nie jest prawdziwy, przekopiowane zostają ramki kontenera, bez echa. Ukrywanie informacji polega na zapisie do pliku 1024 ramek pliku kontenera dla ukrywanej wartości zero oraz 1024 ramek pliku z echem dla wartości jeden. W tej metodzie kluczowe jest aby zaraz po sprawdzeniu warunku pobrać 22

odpowiednia ilość ramek z obu plików dla zachowania spójności podczas zapisu do pliku wynikowego. Rysunek 15 Porównanie kontenera i wynikowego pliku metody ukrywania w echu, źródło: praca własna Na rysunku 15 zostało przedstawienie porównania pliku output_echo.wav oraz kontenera test.wav. Różnice są niemal niewykrywalne. Odczytywanie ukrytej wiadomości Aby odwrócić proces steganografii, a tym samym odczytać ukrytą wiadomość, należy nacisnąć przycisk przedstawiony na rysunku 16 Po wybraniu pliku, z którego chcemy odczytać wiadomość, program automatycznie wykryje która metoda została wykorzystana do ukrycia. Rysunek 16 Przycisk odczytywania wiadomości, źródło: praca własna Rysunek 17 przedstawia informacje zwracane do konsoli podczas odkrywania informacji. W pierwszej linii wypisywana jest metoda, z której pomocą została ukryta wiadomość, druga to ciąg bitów wiadomości. Kolejne linie prezentują zawartość odkrytych danych, w tym przypadku wiadomość Ukryta wiadomość.. Ostatnia linia informuje użytkownika że informacje zostały zapisane w pliku ukryta_wiadomość.txt. W trakcie działania programu odkrywane były informacje zarówno z pliku output.wav (wykorzystanie metody LSB) oraz output_echo.wav (metoda wykorzystująca echo). 23

Rysunek 17 Odkrywanie ukrytej wiadomości, źródło: praca własna Podczas odkrywania wiadomości, która została ukryta za pomocą metody LSB, program automatycznie wykonuje potrzebne działania. W przypadku pliku, w którym informacja została ukryta drugą metodą, wymagane jest podanie pliku będącego kontenerem, do porównania ramek w trakcie odczytu wiadomości. 6. Testy efektywności systemów Podczas testów aplikacji, wykorzystano piętnastosekundowe pliki dźwiękowe: głos lektora z fragmentami ciszy, instrumentalny podkład dźwiękowy, wygenerowany biały szum o amplitudzie 0,8 oraz ciszę. Podczas prezentacji działania powyższych metod, wykorzystywany był piętnastosekundowy fragment nagrania instrumentalnego. Dla obu przypadków, udało się ukryć i odczytać wiadomość bez błędów. Kolejnym testowanym plikiem był głos lektora. Podczas ukrywania wiadomości nie doszło do błędów, wiadomość została ukryta poprawnie. Rysunek 18 Porównanie próbki głosu i plików z ukrytymi informacjami, źródło: praca własna 24

Rysunek 18 przedstawia porównanie plików wynikowych z kontenerem. Plik znajdujący się w środku z zakreślonym fragmentem ścieżki na czerwono, posiada ukrytą wiadomość metodą LSB. Poniżej niego znajduje się ścieżka pliku z ukrytą wiadomością metodą wykorzystującą echo. Odczyt z output.wav przebiegł pomyślnie lecz, jak zostało zaznaczone na rysunku 16, widać lekką zmianę amplitudy. W przypadku pliku output_echo.wav ma dostrzegalnych zmian. Wykorzystanie szumu białego jako kontenera dla steganografii okazało się bardziej sprzyjające dla metody LSB. Na rysunku 19 widać, że plik z ukrytą wiadomością wykorzystującą echo, ma widoczne skoki amplitudy. Zmiana w obu przypadkach nie jest wykrywalna słuchem, jednak zobaczenie skoków widocznym w pliku output_echo.wav może zdradzić obecność wiadomości. 25

Rysunek 19 Porównanie próbki szumu i plików z ukrytymi informacjami, źródło: praca własna 26

Ostatni plik dźwiękowy, wykorzystany jako kontener to cisza. W tym przypadku obie metody również podołały zadaniu udało się ukryć oraz odczytać informacje. Rysunek 20 przedstawia wykresy plików kolejno: kontener, output.wav oraz output_echo.wav. W obu plikach wynikowych, zauważalne są różnice graficzne, jednak słuch nie potrafi wykryć zmiany. Rysunek 20 Porównanie ciszy i plików z ukrytymi informacjami, źródło: praca własna Oprócz przeprowadzenia testów kontenera, wykonano test pojemności steganograficznej. Ze względu na wykorzystanie 1024 ramek dla ukrycia jednego bitu w metodzie wykorzystującej echo, pojemność drastycznie się zmniejsza, co przedstawia rysunek 21. W obu przypadkach ukryte zostały dwa akapity Lorem Ipsum, jednak tylko w przypadku metody LSB cała wiadomość została ukryta. Rysunek 21 Problem pojemności steganograficznej, źródło: praca własna 27

7. Podsumowanie Celem pracy była implementacja systemów steganograficznych, ukrywających informacje w dźwięku. Zarówno metoda LSB jak również metoda wykorzystująca echo przyniosła pozytywne rezultaty w działaniu, jednak ostateczne zastosowanie tych metod jest całkowicie różne Zaletą metody LSB jest duża pojemność steganograficzna oraz fakt, że dla kontenera o małej zmianie amplitudy (na przykład szum) jest niewykrywalna. Do zalet metody wykorzystującej echo zaliczyć można niewidoczne ukrywanie w plikach o zmiennej amplitudzie (głos lub muzyka). Głównymi wadami obu metod jest wrażliwość na uszkodzenie informacji przy operacjach na plikach z ukrytymi danymi. Przy zmianie głośności, odszumianiu czy normalizacji, spójność danych zostaje przerwana. Dodatkowo na niekorzyść metody wykorzystującej echo działa fakt, iż wymaga ona pliku-kontenera. Metoda ta mogła by znaleźć zastosowanie gdyby plik z ukrytymi danymi został umieszczany na stronie internetowej przez osoby posiadające plik oryginalny. Niski poziom pojemności steganograficznej tej metody można zwiększyć poprzez zmniejszenie ilości ramek ukrywających jeden bit (na przykład zamiast ukrywać w 1024, użyć 256 ramek). Istnieje jednak prawdopodobieństwo powstania zakłamań w odczycie wiadomości, przez co informacje mogę zostać źle odczytane. W przyszłości możliwe jest rozwinięcie projektu o obsługę innych informacji takich jak pliki binarne oraz obsługę innych formatów plików dźwiękowych jako kontenery 28

Bibliografia [1]. Herodot Dzieje, wyd. Czytelnik, 2015r. ISBN 978-83-07-03357-0 [2]. G. Kipper Investigator's Guide to Steganography. Boca Raton: Auerbach Publications, 2003. [3]. Piekałkiewicz J. Dzieje szpiegostwa, wyd. Czytelnik, 1999r., ISBN: 83-07-02643-1 [4]. Langer E. Washington Post Jeremiah A. Denton Jr., Vietnam POW and former U.S. senator, dies at 89 28.03.2014r., dostęp: 18.06.2016r. https://www.washingtonpost.com/national/jeremiah-a-denton-jr-vietnam- pow-and-us-senator-dies/2014/03/28/1a15343e-b500-11e3-b899-20667de76985_story.html [5]. Kędzierski R. Gazeta.pl Next 5 spektakularnych przykładów użycia steganografii, 14.01.2015r., dostęp: 25.04.2016r. http://next.gazeta.pl/internet/56,104530,17252608,5_spektakularnych_prz ykladow_uzycia_steganografii.html [6]. Czerwinski S., Fromm R. - "Digital music distribution and audio watermarking", http://citeseerx.ist.psu.edu, dostęp: 25.04.2016 [7]. Boney L., Tewfik A. H., Hamdy K. N.: "Digital watermarks for audio signals", Proceedings of the 1996 International Conference on Multimedia Computing and Systems pp. 473-477, 1996 http://citeseerx.ist.psu.edu, dostęp: 25.04.2016 [8]. Katzenbeisser S., Petitcolas F. A. P.: "Information hiding techniques for steganography and digital watermarking", Artech House 2000 https://www.researchgate.net/, dostęp: 25.04.2016 [9]. Li W., Xue X.: "Audio Watermarking Based on Music Content Analysis: Robust against Time Scale Modification", Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) pp. 289-300, 2004 [10]. Jorasz U. Selektywność układu słuchowego, Wydaw. Naukowe UAM 1999, ISBN 8323209413 [11]. Łopatka K., Opracowanie Katedry Systemów Multimedialnych Politechniki Gdańskiej: "Perceptualne skale częstotliwości", 29

http://sound.eti.pg.gda.pl/student/amowy/am_04_parametryzacja.pdf, dostęp:13.04.2016 [12]. Dymarski P., Pobłocki A., Baras C., Moreau N.: Algorytmy znakowania wodnego sygnałów dźwiękowych, Krajowe Sympozjum Telekomunikacji 2003 s. 26-34, 2003 [13]. Huynh Ba Dieu, An Improvement for Hiding Data in Audio Using Echo Modulation, Duy Tan University [14]. Ziółko B., Ziółko M. Przetwarzanie mowy, Wydawnictwa AGH, 2011. [15]. Erhard J., Technika cyfrowa - przetwarzanie analogowo-cyfrowe. Kwantowanie, http://livesound.pl/tutoriale/kursy/4011-technikacyfrowa-przetwarzanie-analogowo-cyfrowe-kwantowanie dostęp: 10.07.2016r. [16]. Bender W., Gruhl D., Morimoto N., Lu N.: "Techniques for data hiding", IBM system Journal (5) 1996 [17]. http://embeddedsw.net/openpuff_steganography_home.html dostęp 10.07.2016r. [18]. http://bit599.netai.net/s_tools.htm dostęp 10.07.2016r. [19]. http://www.petitcolas.net/steganography/mp3stego/ dostęp 10.07.2016r. [20]. Lutz M., Python. Wprowadzenie. Wydanie IV, Helion 2010. [21]. Chen B., Wornell G., Quantization Index Modulation Methods for Digital Watermarking and Information Embedding of Multimedia Journal of VLSI Signal Processing 27, 7 33, 2001 30

Spis rysunków Rysunek 1 Aparat Mark IV do tworzenia mikropkropek, źródło: https://www.cia.gov/cia/information/artifacts/markiv.jpg... 4 Rysunek 2 Powierzchnia słyszalności, źródło: Adam Kliczek, wikimedia.org... 6 Rysunek 3 Porównanie kodów kolorów w metodzie LSB, źródło: praca własna... 8 Rysunek 4 Wykorzystywanie kwantyzerów dla ukrycia znaków, źródło: [21]... 9 Rysunek 5 Dodawanie echa do próbki dźwięku, a)schemat b) wykres, źródło: praca własna... 10 Rysunek 6 Aplikacja OpenPuff, źródło: http://embeddedsw.net/openpuff_steganography_home.html... 14 Rysunek 7 Aplikacja s-tools, źródł: http://bit599.netai.net/s_tools.htm... 15 Rysunek 8 Program MP3Stego, źródło: http://www.petitcolas.net/steganography/mp3stego/... 16 Rysunek 9 Przygotowany program realizujący systemy steganograficzne, źródło: praca własna... 18 Rysunek 10 Przygotowany program po wybraniu kontenera oraz informacji, źródło: praca własna... 19 Rysunek 11 Fragment kodu źródłowego metody LSB, źródło: praca własna... 19 Rysunek 12 Kod funkcji ukrywającej jeden lub zero, źródło: praca własna... 20 Rysunek 13 Porównanie kontenera z plikiem wynikowym w programie Audacity, źródło: praca własna... 21 Rysunek 14 Porównanie pliku posiadającego stałe echo i kontenera, źródło: praca własna... 22 Rysunek 15 Porównanie kontenera i wynikowego pliku metody ukrywania w echu, źródło: praca własna... 23 Rysunek 16 Przycisk odczytywania wiadomości, źródło: praca własna... 23 Rysunek 17 Odkrywanie ukrytej wiadomości, źródło: praca własna... 24 Rysunek 18 Porównanie próbki głosu i plików z ukrytymi informacjami, źródło: praca własna... 24 Rysunek 19 Porównanie próbki szumu i plików z ukrytymi informacjami, źródło: praca własna... 26 Rysunek 20 Porównanie ciszy i plików z ukrytymi informacjami, praca własna. 27 Rysunek 21 Problem pojemności steganograficznej, źródło: praca własna... 27 31