chi-kwadrat a Stegoanaliza

0

Witam,

Chcę napisać algorytm wykrywający atak steganograficzny (ukrycie informacji w najmniej znaczących bitach - LSBs) dokładnie chodzi o algorytm X2.

Szczegóły tutaj, punkt 3.2 i niżej. Podobny wykresy mam zamiar uzyskać w swoim programie.
http://www.guillermito2.net/stegano/tools/

Do obliczeń wykorzystuję się "chi-kwadrat" i za bardzo nie wiem jak podstawić dane do wzorów...i w jaki sposób zinterpretować wyniki.

Z tego co na razie zrozumiałem mam :

  • z wszystkich pikseli pobrać wartość RGB i zamienić je na postać binarną.
  • wybrać najczęściej powtarzającą się wartość np. 100100100
  • porównać jej występowanie z wartością 100100101

Korzystając z tego http://www.naukowiec.org/wzory/statystyka/test-zgodnosci-chi-kwadrat_20.html (2 tabelka)

Wartości obserwowane = liczbie największej ilości powtórzeń dalej wartości oraz taka sama wartość z przeciwnym LSBs 0/1
Wartość oczekiwana = Suma wartości obserwowanych ?
Różnica,kwadrat różnicy i Iloraz kwadratu różnicy i wartości oczekiwanej = wiadomo
Liczba stopni swobody = 1 ponieważ porównujemy dwie wartości.

Dalej trzeba obliczyć prawdopodobieństwo, nie znalazłem jeszcze wzoru ale można chwilowo się posłużyć tym kalkulatorem : http://www.naukowiec.org/prawdopodobienstwo.html

I dalej patrząc na tabele : http://www.naukowiec.org/tablice/statystyka/rozklad-chi-kwadrat-_247.html

Wyciągamy konkretną wartość i dalej nie wiem w jaki sposób zinterpretować wyniki...rozumiem że końcowym wynikiem jest "true lub false" ale nie wiem jak to połączyć z wartościami LSBs z danego obrazka...

Wiem że temat mocno zagmatwany ale za jakakolwiek pomoc dziękuje. Liczę tylko na małe rozjaśnienie o co w tym chodzi i czy mój tok myślenia jest prawidłowy.

0

Trochę późno, ale lepiej późno niż wcale :)
Nie zagłębiając się w szczegóły, żeby przeprowadzić atak chi-kwadrat dla LSB trzeba:

  • zliczyć wystąpienia różnych wartości bajtów (256 wartości od 0 do 255)
  • utworzyć pary wartości różniących się najmniej znaczącym bitem: (0,1);(2,3);(4,5),...,(254,255)
  • dla każdej z par zsumować liczbę wystąpień poszczególnych składowych, czyli dla pierwszej pary należy zsumować liczbę wystąpień wartości 0 i 1
  • obliczyć teoretyczną(spodziewaną) liczbę wystąpień poszczególnych składowych, która wynosi połowę[1 s.9] wartości obliczonej w poprzednim podpunkcie
  • podstawić do wzoru na test zgodności:
    X = sum[(fi - fti)^2 / fti], gdzie

X - wartość chi-kwadrat
sum - suma dla wszystkich par (od 0 do 127)
fi - liczba wystąpień jednej(dowolnej) z wartości w i-tej parze
fti - teoretyczna liczba wystąpień jednej(dowolnej) z wartości w i-tej parze

  • obliczyć prawdopodobieństwo dla wyliczonej wartości chi-kwadrat przy 127 stopniach swobody
    metoda 1: obliczenie skomplikowanej funkcji z całką [1 s.11]
    metoda 2: odczytanie przybliżonych wartości z tabeli

Interpretacja wyników
Ekspertem od statystyki nie jestem, ale w uproszczeniu w teście zgodności chi-kwadrat chodzi o to, żeby stwierdzić czy to co zmierzyliśmy jest znacząco różne od wartości, które teoretycznie powinnyśmy uzyskać. Zakładając, że wartości teoretyczne są prawdziwe. W odniesieniu do ataku na LSB chodzi o sprawdzenie jak bardzo odczytane bity są zbliżone do danych losowych. Jeśli są zbliżone to istnieje duże prawdopodobieństwo, że w obrazie została ukryta zaszyfrowana wiadomość. Jeśli nie są zbliżone to prawdopodobieństwo, że w obrazie zostały ukryte zaszyfrowane dane jest małe.

Żeby wyrysować takie wykresy jak w tym linku: http://www.guillermito2.net/stegano/tools/ trzeba obliczać prawdopodobieństwo dla wartości chi-kwadrat liczonej co 128 odczytanych bajtów danych (odczytując od dołu obrazka).

Dla ciekawskich oryginalne źródło:
[1] "Attack on Steganographic Systems" s.8-11
https://www2.htw-dresden.de/~westfeld/publikationen/ihw99.pdf

0

Dzięki sporo tutaj nie zaglądałem ale przyda się. Jeszcze raz dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1