Steganografia z wykorzystaniem cyklicznych kodów korekcji błędów

Podobne dokumenty
Laboratorium ochrony danych

Wykorzystanie losowych kodów liniowych w steganografii

Algorytm steganograficzny PM1 wykorzystujący trójkowy kod Hamminga

W11 Kody nadmiarowe, zastosowania w transmisji danych

Zmniejszenie wrażliwości zmodyfikowanego algorytmu LSB na wybrane ataki statystyczne

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

0 + 0 = 0, = 1, = 1, = 0.

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Matematyka dyskretna

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

1 WPROWADZENIE 1. Agata Pilitowska. parzysta. 3. Znaleźć odległość kodu kontroli parzystości nad ciałem GF (q).

Sieci Komputerowe Mechanizmy kontroli błędów w sieciach

Detekcja i korekcja błędów w transmisji cyfrowej

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Detekcja i korekcja błędów w transmisji cyfrowej

Podstawy Informatyki: Kody. Korekcja błędów.

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

1 WPROWADZENIE 1. Agata Pilitowska. parzysta. 3. Znaleźć odległość kodu kontroli parzystości nad ciałem GF (q).

Kody blokowe Wykład 2, 10 III 2011

Zastosowanie kompresji w kryptografii Piotr Piotrowski

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Polska-Brazylia 5:0, czyli o poprawianiu błędów w przekazywanych informacjach

Modulacja i Kodowanie. Labolatorium. Kodowanie Kanałowe Kody Hamminga

Systemy bezpieczne i FTC (Niezawodne Systemy Cyfrowe)

Kody splotowe. Zastosowanie

Ocena wpływu algorytmu dupleksowego systemu transmisji danych na szybkość transmisji

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

Przetworniki cyfrowo analogowe oraz analogowo - cyfrowe

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

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

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

2 Kryptografia: algorytmy symetryczne

Zadanie 1. Suma silni (11 pkt)

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

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej

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

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

Analiza metod wykrywania przekazów steganograficznych. Magdalena Pejas Wydział EiTI PW

Technologie Informacyjne

Kody blokowe Wykład 1, 3 III 2011

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Kody splotowe (konwolucyjne)

Kodowanie informacji. Kody liczbowe

Algorytm. a programowanie -

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8

METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH

Sieci komputerowe. Wykład 11: Kodowanie i szyfrowanie. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Interfejsy systemów pomiarowych

Technologie informacyjne - wykład 12 -

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

Teoria Informacji - wykład. Kodowanie wiadomości

SCENARIUSZ LEKCJI. Dzielenie wielomianów z wykorzystaniem schematu Hornera

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

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Algorytmy i struktury danych. Wykład 4

Pracownia Komputerowa wykład V

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

Wstęp do informatyki- wykład 2

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

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

ćwiczenie 202 Temat: Układy kombinacyjne 1. Cel ćwiczenia

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

Zadanie 1. Potęgi (14 pkt)

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

4. Systemy algebraiczne i wielomiany nad ciałami zastosowania Rodzaje systemów algebraicznych ciała, grupy, pierścienie

RS-H0-05 (K)* Czytnik RFID MHz Mifare. Karta użytkownika

Najciemniej pod latarnią czyli ukryte na widoku

Quality characteristics of finite linear codes

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Macierze RAID MARCEL GAŃCZARCZYK 2TI 1

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Wojewódzki Przedmiotowy Konkurs z informatyki dla uczniów szkół gimnazjalnych ETAP REJONOWY 2010/2011 TEST

Macierze. Rozdział Działania na macierzach

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Rijndael szyfr blokowy

Niezawodność i diagnostyka systemów cyfrowych projekt 2015

WŁADYSŁAW MOCHNACKI KODY KOREKCYJNE I KRYPTOGRAFIA

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

EGZAMIN MATURALNY Z INFORMATYKI 11 MAJA 2018 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Zapis liczb binarnych ze znakiem

Metodyki i techniki programowania

DZIESIĘTNY SYSTEM LICZBOWY

φ(x 1,..., x n ) = a i x 2 i +

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Idea. θ = θ 0, Hipoteza statystyczna Obszary krytyczne Błąd pierwszego i drugiego rodzaju p-wartość

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

Podstawy OpenCL część 2

Transkrypt:

Biuletyn WAT Vol. LXII, Nr 4, 2013 Steganografia z wykorzystaniem cyklicznych kodów korekcji błędów KAMIL KACZYŃSKI Wojskowa Akademia Techniczna, Wydział Cybernetyki, Instytut Matematyki i Kryptologii, 00-908 Warszawa, ul. gen. S. Kaliskiego 2, kkaczynski@wat.edu.pl Streszczenie. Kody cykliczne, będące podklasą kodów liniowych, znalazły największe zastosowanie praktyczne w korekcji błędów. Ich główne zalety to efektywność konstruowania kodów o wymaganych właściwościach, a także prosta realizacja koderów i dekoderów za pomocą LFSR.W niniejszej publikacji omówiono jeden z najważniejszych typów kodów cyklicznych kody BCH. Opracowano i zaimplementowano stegosystem, będący modyfikacją algorytmu LSB i wykorzystujący właściwości syndromu kodu BCH. Dokonano porównania efektywności obydwóch algorytmów, a także wyników stegoanalizy algorytmem RS oraz metodami porównawczymi. Słowa kluczowe: steganografia, kody cykliczne, LSB, BCH 1. Wstęp Podstawowe algorytmy steganograficzne dla bitmap, takie jak LSB (z ang. najmniej znaczący bit) powodują wprowadzenie dużej liczby zmian do obrazu nośnika. Alternatywą dla prostych algorytmów stają się algorytmy zmodyfikowane, wykorzystujące tzw. kodowanie syndromami. Pierwszym algorytmem, który wykorzystywał liniowy kod Hamminga, był algorytm F5 stworzony przez Westfelda w 2001 roku. Kod Hamminga jest kodem doskonałym, co oznacza, że każdy syndrom reprezentuje dokładnie jeden wektor błędu. W przypadku kodu Hamminga (7,4) możliwe stało się ukrycie trzech bitów wiadomości przy zmianie zaledwie jednego z siedmiu bitów nośnika. Rozwiązanie to jest bardzo wygodne w implementacji, niestety ukrycie pewnej wiadomości zawsze wprowadza taki sam wektor błędu do nośnika. Alternatywą dla kodów doskonałych stają się zatem kody cykliczne takie jak

268 K. Kaczyński BCH. Ich główną zaletą jest fakt, że każdy syndrom opisuje kilka wektorów błędu. Właściwość ta może zostać wykorzystana w procesie wbudowywania wiadomości tak, aby wprowadzić ją w tych obszarach obrazu, w których wykrycie w procesie stegoanalizy będzie najtrudniejsze. W poniższym artykule zaprezentowany zostanie stegosystem wykorzystujący kod BCH (15,7). 2. Kody BCH (Bose-Chaudhuri-Hocquenghem) Kody BCH są podklasą cyklicznych kodów korekcji błędów zbudowanych nad ciałami skończonymi. Zostały wynalezione w 1959 r. przez francuskiego matematyka Hocquenghema i niezależnie w 1960 r. przez Bose go i Ray-Chadhuriego. Skrót BCH powstał z połączenia pierwszych liter nazwisk twórców. Główną zaletą kodów BCH jest możliwość dokładnego określenia liczby korygowanych błędów w czasie projektowania kodu. Kolejną zaletą jest możliwość łatwej korekcji błędów przy wykorzystaniu syndromów. Kody BCH można konstruować zarówno nad ciałami binarnymi, jak i ciałami rozszerzonymi, najczęściej stosowane są kody binarne. Dla każdej liczby całkowitej m i t < 2 m-1 istnieje kod BCH o długości n = 2 m 1, który może korygować maksymalnie t błędów i ma nie więcej niż mt elementów kontrolnych. Długość wektora kodowego n = 2 m 1, liczba pozycji kontrolnych n k mt, odległość minimalna d 2t + 1. Praktyczne wykorzystanie kodu BCH wymaga wyznaczenia tzw. wielomianu generującego kod BCH. Metoda wyznaczenia wielomianu generującego została zaczerpnięta z [1]. Niech α będzie elementem pierwotnym ciała GF(2 m ). Zbiór {f(x)} jest zbiorem ciągów kodowych kodu BCH, jeśli pierwiastkami dowolnie wybranego wielomianu f(x) są elementy ciała α, α 2, α 3,, α 2t. Każdy element ciała o parzystym wykładniku ma w tej sekwencji taką samą funkcję minimalną jak któryś z poprzedzających go elementów o wykładniku nieparzystym. Na przykład α 2 i α 4 są pierwiastkami m 1 (x), α 6 jest pierwiastkiem m 3 (x) itd. Uwzględniając ten fakt podczas wyznaczania wielomianu generującego kod BCH, wystarczy wziąć pod uwagę elementy ciała z wykładnikami nieparzystymi. Wielomian generujący kod BCH o zdolności korekcyjnej t jest najmniejszą wspólną wielokrotnością funkcji minimalnych m 1 (x), m 3 (x),, m 2t-1 (x). g(x) = NWW(m 1 (x), m 3 (x),, m 2t-1 (x)). 3. Kod BCH (15,7) Na potrzeby opracowywanego stegosystemu wykorzystany został kod BCH (15,7), zbudowany nad ciałem GF(2 4 ) o długości słowa kodowego 15 bitów, który może

Steganografia z wykorzystaniem cyklicznych kodów korekcji błędów 269 korygować dwa błędy. Długość syndromu wynosi 8 bitów. Wielomian generujący dla powyższego kodu ma postać: g(x) = (x 4 + x + 1)(x 4 + x 3 + x 2 + x + 1) = x 8 + x 7 + x 6 + x 4 + 1. Efektywna realizacja stegosystemu wymaga wyznaczenia macierzy kontrolnej kodu BCH. Macierz ta jest wyznaczana na podstawie macierzy generującej kod cykliczny. Może ona zostać wyznaczona przy wykorzystaniu właściwości przesunięcia cyklicznego kodu. Dla powyższego kodu BCH (15,7) macierz ta ma 7 wierszy i 15 kolumn. Poniżej przedstawiona jest postać macierzy generującej: 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 G = 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1. 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 Słowa kodowe są uzyskiwane w wyniku mnożenia słów wiadomości przez macierz G. Słowo kodowe to wektor: c = (c 0, c 1,, c n-1 ), słowo wiadomości to wektor m = (m 0, m 1,, m k-1 ). Zależność pomiędzy wektorem c i m przedstawia poniższa formuła: c = mg. Macierz kontroli parzystości H jest macierzą o wymiarach 8 wierszy na 15 kolumn. Wiersze macierzy G są ortogonalne do wierszy macierzy H, co oznacza, że G H T = 0, gdzie H T jest transponowaną macierzą H. Macierz kontroli parzystości można obliczyć na podstawie znajomości macierzy generującej G. Przestrzeń wektorowa generowana przez macierz G oraz przestrzeń wektorowa generowana przez macierz H są podprzestrzeniami przestrzeni wektorowej zawierającej wszystkie wektory 15-elementowe i dlatego stanowią one kody liniowe. Dla kodu BCH (15,7) transponowana macierz kontroli parzystości H T ma następującą postać:

270 K. Kaczyński 1 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 0 1 = 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 T H. Macierz kontroli parzystości pozwala na obliczenie syndromu s. Syndrom informuje o położeniu błędu w przesłanym ciągu. Syndrom obliczany jest przy wykorzystaniu następującej formuły: s = c H T. Wektor s zawiera informacje o dodanym w czasie transmisji wektorze błędu e. Zerowa wartość syndromu oznacza, że otrzymany wektor c jest wektorem kodowym. Niezerowa wartość syndromu sygnalizuje, że otrzymany wektor c nie jest wektorem kodowym i zostały wykryte błędy transmisyjne. Dla kodu BCH (15,7) syndrom ma długość 8 bitów, a wartości kolejnych bitów mogą zostać obliczone przy wykorzystaniu poniższego układu równań:

Steganografia z wykorzystaniem cyklicznych kodów korekcji błędów 271 s 0= c 0 4 6 7 (mod 2) s 1= c 0 1 4 5 6 8 (mod 2) s 2= c 0 1 2 4 5 9 mod 2 s 3= c 1 2 3 5 6 10 mod 2 s 4 = c 0 2 3 11 mod 2 s 5= c 1 3 4 12 mod 2 s 6 = c 2 4 5 13 mod 2 s 7 = c 3 5 6 14 (mod 2). ( ) ( ) ( ) ( ) ( ) 4. Algorytm LSB Algorytm LSB (ang. Najmniej Znaczący Bit Least Significant Bit) to jeden z najbardziej rozpowszechnionych i najlepiej zbadanych algorytmów steganograficznych. Zasada działania algorytmu jest wyjątkowo prosta najmniej znaczący bit nośnika jest zamieniany na bit wiadomości. Najczęściej stosowaną wersją algorytmu LSB jest algorytm ulosowiony. Nadawca oraz odbiorca posiadają wspólny klucz, który jest używany jako ziarno generatora pseudolosowego. Generator tworzy sekwencję indeksów pikseli, w których ukrywana będzie wiadomość. Dwie główne cechy tej metody to dodatkowe zabezpieczenie przesyłanych danych przed nieuprawnionym dostępem, a także równomierne rozmieszczenie bitów wiadomości w nośniku. Poniższy rysunek przedstawia schemat algorytmu LSB. START TAK Indeks wskazany przez PRNG NIE TAK Wbudowano całą wiadomość NIE ZamieńLSB nośnika na kolejny bit wiadomości indeks + 1 STOP Rys. 1. Schemat blokowy algorytmu LSB

272 K. Kaczyński Główną zaletą algorytmu LSB jest bardzo duża pojemność nośnika. Dla zaproponowanego algorytmu pojemność c standardowej bitmapy o wymiarach h na w pikseli jest w przybliżeniu równa: h* w C. 2 Przykładowo, bitmapa o wymiarach 128 128 pikseli, przy modyfikacji tylko jednego bitu koloru niebieskiego i wykorzystaniu pseudolosowego wzorca, pozwala na ukrycie ok. 8192 bitów, co daje 1 kb danych 1000 znaków. Podstawową wadą algorytmu jest liczba zmian wprowadzanych do obrazu nośnika. Średnia liczba zmienionych pikseli wynosi ¼ całości. W przypadku ogólnym ukrycie dwóch bitów wiadomości wymaga zmiany wartości jednego piksela nośnika. Im więcej zmian algorytm wprowadza do nośnika, tym łatwiej wykryć istnienie ukrytego przekazu w nośniku. Rys. 2. Obraz nośnik Rys. 3. Obraz z wbudowaną wiadomością 5. Zmodyfikowany algorytm LSB Kodowanie syndromami kodu BCH (15,7) pozwala na ukrycie 8 bitów danych w bloku 15-bitowym przy zmianie zera, jednego, dwóch lub trzech bitów nośnika. Pojemność (w bitach) standardowej bitmapy o wymiarach h na w pikseli jest w przybliżeniu równa: h* w*8 C =. 15 Przyjmijmy, że oryginalny blok danych nośnika to V = {v 0, v 1,, v 14 }, natomiast blok danych po modyfikacji to R = {r 0, r 1,, r 14 }. Ukrywana wiadomość m = {m 0, m 1,, m 7 } może być obliczona z poniższej zależności: m = R H T.

Steganografia z wykorzystaniem cyklicznych kodów korekcji błędów 273 Ukrycie wiadomości m wymaga zatem odnalezienia takiego R, że R H T = m. Różnica E = {e 0, e 1,, e 14 } pomiędzy blokiem V i R wskazuje liczbę oraz położenie bitów, które powinny zostać zmienione. E = V R. Ostatnim krokiem ukrycia wiadomości m do nośnika jest dodanie wektora błędu E do bloku bitów nośnika R. Przykładowo, gdy w słowie kodowym 110100011001011 chcemy ukryć bity 11011001: a) obliczamy syndrom dla słowa kodowego: c H T = [0 1 0 0 1 0 1 0]; b) obliczamy różnicę pomiędzy obliczonym syndromem a ukrywaną wiadomością s m = [1 0 0 1 0 0 1 1]; c) wyznaczamy wektor błędu E, dla którego syndrom jest równy [1 0 0 1 0 0 1 1], E = [1 0 0 0 0 1 0 0 0 0 0 1 0 0 0]; d) dodajemy wektor błędu E do wektora V R = E + V = [0 1 0 1 0 1 0 1 1 0 0 0 0 1 1]. Poniższy rysunek przedstawia schemat blokowy zmodyfikowany algorytmu LSB. START TAK Czy wstawiono całą wiadomość NIE TAK Wczytaj kolejne 15 bitów nośnika STOP Obliczyć syndrom Zmień bity nośnika zgodnie z wyznaczonym wektorem błędu NIE Czy syndrom jest równy kolejnym 8 bitom wiadomości Rys. 4. Schemat blokowy zmodyfikowanego algorytmu LSB

274 K. Kaczyński Przykładowo, bitmapa o wymiarach 128 128 pikseli, przy modyfikacji tylko jednego bitu koloru niebieskiego i wykorzystaniu macierzy parzystości kodu BCH (15,7) pozwoliła na ukrycie 8736 bitów wiadomości, co daje 1092 znaki. W przypadku ogólnym, ukrycie 8 bitów wiadomości wymaga zmiany 2,47 bitu nośnika. 6. Implementacja W celu sprawdzenia poprawności założeń przyjętych w artykule wykonano implementację opisywanych algorytmów steganograficznych. Implementacja została wykonana z wykorzystaniem języka programowania C# oraz środowiska projektowego Microsoft Visual Studio 2010. Program umożliwia wbudowanie oraz wyodrębnienie wiadomości przy wykorzystaniu podstawowego algorytmu LSB oraz algorytmu zmodyfikowanego. Na potrzeby analizy statystycznej zaimplementowano moduł tworzący histogram dla wybranego koloru bitmapy. Rys. 5. Aplikacja BSH LSB Praktyczna realizacja algorytmu zmodyfikowanego wymagała utworzenia tablicy wektorów błędu odpowiadających wszystkim syndromom. Ze względu na dużą złożoność czasową poszukiwania rozwiązań, utworzono pomocniczą

Steganografia z wykorzystaniem cyklicznych kodów korekcji błędów 275 aplikację, której zadaniem było odnalezienie wektorów błędu o minimalnej wadze Hamminga. Czynność ta pozwoliła na znaczne przyspieszenie pracy algorytmu zmodyfikowanego. Aplikacja pozwala na dodanie wiadomości do plików o rozszerzeniu bmp, dla których każda składowa koloru RGB składa się z 8 bitów. Wiadomość może być dowolnym ciągiem binarnym, jednak na potrzeby testowania aplikacji przyjęto, że będzie tekstem kodowanym zgodnie ze standardem UTF-8. 7. Stegoanaliza W celu porównania algorytmu podstawowego oraz algorytmu zmodyfikowanego została przeprowadzana analiza utworzonych plików wynikowych, do której zostały wykorzystane najpopularniejsze algorytmy stegoanalityczne. Stegoanaliza algorytmem RS wykorzystuje funkcje dyskryminacji oraz operację przerzucania do identyfikacji trzech grup pikseli regularnych (Regular R), pojedynczych (Singular S) oraz niezmienionych (Unchanged U). Przypisanie jest zależne od zmiany wartości funkcji dyskryminacji po wykonaniu operacji przerzucania. Wielkość grupy pikseli i odpowiadająca maska przerzucania M jest zakładana na wstępie. Przykładowo, gdy M = [0 1 0] odpowiada to testowi przeprowadzanemu na grupie 3 pikseli, w której tylko piksel środkowy został przerzucony. W typowych obrazach stosowanie maski przerzucania algorytmu LSB będzie częściej prowadziło do wzrostu funkcji dyskryminacji niż do jej spadku. Stąd całkowita liczba grup regularnych w obrazie będzie większa niż grup pojedynczych. Losowość, jaką wprowadza algorytm LSB, powoduje, że różnica ta będzie dążyła do zera wraz ze wzrostem długości wbudowanej wiadomości. Wbudowywanie wiadomości o względnej długości p (p = 1 oznacza wykorzystanie wszystkich pikseli obrazu) do obrazu źródłowego wymusza przeciętne przerzucenie p/2 pikseli. Przerzucenie wszystkich pikseli w obrazie będzie skutkowało utworzeniem obrazu, w którym udział zmienionych pikseli będzie równy 1 1/2. W procesie stegoanalizy obrazu zakładamy, że wartość p nie jest znana. Względna liczba grup R i S jest obliczana zarówno dla obrazu oryginalnego, jak i wersji obrazu, dla którego przerzucono wszystkie wartości LSB. Wynikiem są cztery punkty tzw. diagramu RS, który jest wykorzystywany do estymacji wartości p. Szczegółowy opis metody znajduje się w [2]. W ramach realizacji zadania dokonano analizy kolejno obrazu oryginalnego, obrazu z wiadomością wbudowaną klasycznym algorytmem LSB oraz obrazu z wiadomością wbudowaną przy wykorzystaniu algorytmu zmodyfikowanego. Do wykonania analizy użyte zostało oprogramowania Stegsecret oraz Virtual Steganographic Laboratory. Tabela 1 przedstawia wyniki analizy.

276 K. Kaczyński Wyniki analizy algorytmem RS Tabela 1 Obraz oryginalny Algorytm LSB Zmodyfikowany algorytm LSB Procent zmienionych bitów (kolor niebieski) 9,13% 62,21% 38,65% Procent zmienionych bitów (kolor czerwony) 13,6% 13,6% 13,6% Procent zmienionych bitów (kolor zielony) 10,07% 10,07% 10,07% Szacowana długość wiadomości [B] 672 1759 1276 Rys. 6. Różnica dla zmodyfikowanego algorytmu LSB Rys. 7. Różnica dla algorytmu LSB Kolejna analiza polegała na porównaniu zmian wprowadzonych w obrazie oryginalnym przez obydwa algorytmy. W wyniku porównania została wykonana operacja xor na najmniej znaczącym bicie koloru niebieskiego obrazu oryginalnego oraz obrazów zmodyfikowanych. 8. Podsumowanie Na podstawie przeprowadzonych badań jasno wynika, że zmodyfikowany algorytm LSB wprowadza znacząco mniej zmian do nośnika niż algorytm podstawowy, przy jednoczesnym zwiększeniu pojemności nośnika. Zmniejszenie liczby zakłóceń wprowadzanych do obrazu pozwala na zwiększenie bezpieczeństwa stosowanego algorytmu. Warto zaznaczyć, że publikacja zawiera opis wykorzystania jedynie macierzy kontroli parzystości kodu BCH (15,7), a zastosowany algorytm opierał się na stablicowanych wartościach wektora błędu. Teoria kodowania dysponuje jednak wieloma innymi kodami, które z powodzeniem mogą zostać wykorzystane do modyfikacji większości aktualnie wykorzystywanych algorytmów steganograficznych.

Steganografia z wykorzystaniem cyklicznych kodów korekcji błędów 277 LITERATURA [1] W. Mochnacki, Kody korekcyjne i kryptografia, Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 2000. [2] J. Fridrich, M. Goljan, D. Hogea, D. Soukal, Quantitative steganalysis of digital images: estimating the secret message length, Multimedia Systems, 9, 2003, 288-302. [3] E. Cole, Hiding in Plain Sight: Steganography and the Art of Covert Communication, Wiley Publishing, Inc., 2003. [4] S. Katzenbeisser, F.A.P. Petitcolas, Information Hiding Techniques for Steganography and Digital Watermarking, Artech House, 2000. [5] I.J. Cox, M.L. Miller, J.A. Bloom, J. Fridrich, T. Kalker, Digital Watermarking and Steganography, second edition, Morgan Kaufmann, 2008. [6] P. Forczmański, M. Węgrzyn, Virtual Steganographic Laboratory for Digital Images, In Information Systems Architecture and Technology: Information Systems and Computer Communication Networks, Wrocław, Polska, 2008, 163-174. [7] P. Forczmański, M. Węgrzyn, Open Virtual Steganographic Laboratory, International Conference on Advanced Computer Systems, ACS-AISBIS, 2009. [8] J. Gawinecki, N. Courtois, G. Song, Contradiction immunity and guess-then-determine attacks on GOST, Tatra Mt. Publ., 53, 65-79. [9] J.A. Gawinecki, N.T. Courtois, D. Hulme, K. Hussain, On Bad Randomness and Cloning of Contactless Payment and Building Smart Cards, Security and Privacy Workshop, IEEE, 2013, 105-110. K. KACZYŃSKI Steganography and cyclic error-correcting codes Abstract. Cyclic codes, which are subclass of linear codes, are of particularly widespread use in error correction. Their main advantages are: the effectiveness of constructing codes with required properties and simple implementation of decoders and encoders using LFSR. This paper discusses one of the most important cyclic codes BCH code. Developed and implemented stegosystem is a modification of LSB algorithm, which uses the properties of BCH code syndromes. Comparison of simple and modified algorithm efficiency was made. Steganalysis of both algorithms were made and the results were compared. Keywords: steganography, cyclic code, error correction codes, LSB, BCH