0Pricing
Cyber Security Academy · Lekcja

Steganografia obrazu i dźwięku

Osadzanie danych w plikach multimedialnych

Steganografia obrazu i dźwięku to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Jak obrazy przechowują piksele

Aby ukryć dane w obrazie, trzeba najpierw wiedzieć, jak obrazy przechowują kolory. Piksel obrazu RGB ma trzy kanały: czerwony, zielony i niebieski — każdy jest zazwyczaj 8-bitową liczbą z zakresu od 0 do 255.

Pojedynczy piksel zajmuje więc trzy bajty. Niewielki obraz o wymiarach 800x600 ma 480 000 pikseli i 1,44 miliona bajtów koloru. Steganografia wykorzystuje tę nadmiarowość: bajtów jest znacznie więcej, niż oko może dokładnie przeanalizować.

Kluczowa obserwacja jest następująca: ludzki system wzrokowy nie potrafi odróżnić wartości koloru 200 od 201. To niezauważalne przesunięcie stanowi miejsce, w którym można ukryć dane.

Osadzanie w najmniej znaczącym bicie

Osadzanie LSB zastępuje najmniej znaczący bit każdego bajtu koloru jednym bitem sekretu. Ponieważ najmniej znaczący bit zmienia wartość tylko o 1, zmiana obrazu pozostaje niewidoczna.

Rozważmy ukrywanie bitu 1 w kanale czerwonym o wartości 200 (binarnie 11001000). Zastąpienie ostatniego bitu wartością 1 daje 11001001 = 201 — zmiana, której człowiek nie zauważy.

W przypadku tysięcy pikseli ładunek odtwarza się, odczytując te bity LSB z powrotem we właściwej kolejności.

# Embed: keep top 7 bits, set LSB to the secret bit
# value 200 = 1100100 0  -> hide 1 -> 1100100 1 = 201
#
# In Python terms (read-only illustration):
# new_byte = (color_byte & 0xFE) | secret_bit   # 0xFE clears the LSB

Kodowanie pełnej wiadomości

Wiadomość jest sekwencją bajtów, z których każdy ma 8 bitów. Aby ukryć słowo wraz z nagłówkiem zawierającym jego długość, spłaszcza się ładunek do strumienia bitów i zapisuje po jednym bicie w każdym kanale koloru.

Praktyczne narzędzie do osadzania przechowuje również prefiks długości lub unikatową sekwencję terminującą, aby ekstraktor wiedział, kiedy zakończyć odczyt; w przeciwnym razie nie może odróżnić ładunku od szumu nośnika.

Właśnie to automatyzują narzędzia takie jak steghide, zsteg i stegano, często dodając hasło oraz warstwę szyfrowania.

# Embed a secret into a PNG with the open-source 'stegano' tool
stegano-lsb hide -i cover.png -m 'meet at noon' -o stego.png

# steghide with a passphrase (encrypts then embeds)
steghide embed -cf cover.jpg -ef secret.txt -p 'p@ss'

Wybór odpowiedniego formatu obrazu

Format ma ogromne znaczenie ze względu na kompresję:

  • Formaty bezstratne (PNG, BMP) zachowują każdy piksel dokładnie. Dane LSB przetrwają bez zmian — są to idealne nośniki.
  • Formaty stratne (JPEG) odrzucają drobne szczegóły podczas kompresji, co niszczy naiwne dane LSB.

W przypadku JPEG osadzanie musi odbywać się we współczynnikach DCT — wartościach w dziedzinie częstotliwości używanych podczas kompresji — a nie w surowych pikselach. Narzędzia takie jak steghide oraz klasyczne JSteg/OutGuess działają w tej dziedzinie, dzięki czemu ładunek przetrwa etap kompresji.

Kruchość naiwnego osadzania LSB

Naiwne osadzanie LSB w pikselach jest kruche. Każda operacja zmieniająca wartości pikseli niszczy ukryte bity:

  • Ponowny zapis w formacie JPEG kompresja stratna przepisuje bajty.
  • Zmiana rozmiaru lub przycinanie ponowne próbkowanie zmienia każdą wartość.
  • Korekty kolorów zmiany jasności i kontrastu.
  • Przesłanie do serwisu społecznościowego platformy automatycznie ponownie kodują obrazy.

To narożnik odporności w tym trójkącie. Jeśli ładunek musi przetrwać edycję (np. znak wodny), osadza się go w dziedzinie częstotliwości (DCT/DWT) i akceptuje mniejszą pojemność w zamian za odporność.

Zwiększanie dyskrecji: inteligentne rozmieszczanie

Naiwne LSB zapisuje dane w pikselach kolejno, od lewego górnego rogu, co tworzy wykrywalny ślad statystyczny. Bardziej dyskretne metody rozpraszają ładunek, aby utrudnić analizę:

  • Rozmieszczanie pseudolosowe klucz stego inicjuje PRNG, który wybiera piksele przechowujące bity, dzięki czemu wzorzec wygląda losowo.
  • Obszary zaszumione osadzanie w teksturowanych obszarach (trawie, włosach), w których zmienność już występuje, zamiast na gładkim niebie.
  • Osadzanie adaptacyjne nowoczesne algorytmy minimalizują funkcję kosztu wykrywalności.

Klucz stego działa również jak hasło: bez niego analityk nie może odtworzyć kolejności bitów, nawet jeśli podejrzewa ukrywanie danych.

Podstawy steganografii dźwiękowej

Dźwięk działa na tej samej zasadzie co obrazy, ale w dziedzinie czasu lub częstotliwości. Plik WAV przechowuje próbki — zazwyczaj 16-bitowe liczby reprezentujące amplitudę, rejestrowane tysiące razy na sekundę.

Osadzanie LSB w dźwięku nadpisuje najmniej znaczący bit każdej próbki. Zmiana amplitudy o 1 w 16-bitowej próbce jest znacznie mniejsza od progu słyszalności, dlatego dźwięk brzmi identycznie.

Przy 44 100 próbkach na sekundę na kanał dźwięk oferuje dużą pojemność, choć formaty stratne, takie jak MP3, niszczą surowe bity LSB próbek tak samo, jak JPEG niszczy bity LSB pikseli.

# Hide a file in a WAV using the open-source steghide
steghide embed -cf song.wav -ef secret.txt -p 'p@ss'

# WAV is lossless (raw PCM samples) - LSB survives.
# MP3 is lossy - embed in the encoded domain or it is destroyed.

Zaawansowane techniki dźwiękowe

Poza LSB steganografia dźwiękowa wykorzystuje właściwości percepcji słuchowej:

  • Kodowanie fazowe zmienia fazę składowych dźwięku; ucho jest niewrażliwe na fazę absolutną.
  • Ukrywanie w echu wprowadza niewielkie, niezauważalne echa, których opóźnienie koduje bity.
  • Widmo rozproszone rozkłada ładunek w szerokim paśmie częstotliwości jako szum o niskim poziomie, odporny na edycję.
  • Wstawianie tonów ukrywa dane za pomocą tonów maskowanych przez głośniejsze dźwięki w pobliżu (maskowanie psychoakustyczne).

Metody te poświęcają pojemność na rzecz odporności i dyskrecji, podobnie jak obrazowe metody działające w dziedzinie częstotliwości.

Dziedzina przestrzenna a dziedzina częstotliwości

Wspólną zasadą dla różnych rodzajów mediów jest wybór dziedziny:

  • Dziedzina przestrzenna/czasowa osadzanie bezpośrednio w pikselach lub próbkach. Proste rozwiązanie o dużej pojemności, ale podatne na kompresję.
  • Dziedzina częstotliwości przekształcenie sygnału (DCT dla JPEG, DWT dla falek, FFT dla dźwięku), osadzenie danych we współczynnikach, a następnie przekształcenie sygnału z powrotem. Większa odporność i dyskrecja, ale mniejsza pojemność oraz większa złożoność.

Zasada jest następująca: jeśli nośnik będzie kompresowany, skalowany lub udostępniany, dane należy osadzać w dziedzinie częstotliwości. W przypadku niezmienionych nośników bezstratnych wystarczy przestrzenne LSB.

Planowanie pojemności

Przed osadzaniem należy oszacować, ile danych można bezpiecznie ukryć. Przydatną wskazówką jest wskaźnik osadzania — liczba bitów ukrytych na bit nośnika.

  • 1 bit na kanał (pełne LSB) maksymalna pojemność, ale największa wykrywalność.
  • Wskaźniki ułamkowe wykorzystanie tylko części pikseli zmniejsza pojemność, ale znacznie poprawia niezauważalność.

Obraz RGB o wymiarach 1920x1080 ma około 6,2 miliona bajtów koloru, co przy pełnym LSB daje w przybliżeniu 777 KB. Jednak osadzanie z myślą o bezpieczeństwie wykorzystuje tylko ułamek tej pojemności, ponieważ wypełnienie każdego bitu LSB powoduje anomalie statystyczne łatwo wykrywane przez narzędzia steganalizy.

# Rough capacity at 1 bit/channel full LSB:
# width x height x channels / 8 bytes
# 1920 x 1080 x 3 / 8  =  ~777,600 bytes (~759 KB)
# In practice use a fraction to stay below detection thresholds.

Wnioski dla obrońców

Z perspektywy obrońcy zrozumienie sposobu osadzania danych podpowiada, na co zwracać uwagę:

  • Niezgodność formatu plik PNG/BMP w miejscu, w którym oczekiwany byłby JPEG, może wskazywać na wybór bezstratnego nośnika dla LSB.
  • Anomalie rozmiaru plik większy, niż uzasadniałaby jego widoczna zawartość.
  • Ponowne kodowanie jako obrona platformy, które ponownie kompresują wszystkie przesyłane pliki, niszczą naiwne ładunki LSB — to niedrogi sposób ograniczania ryzyka.
  • Analiza statystyczna osadzanie z użyciem pełnego LSB spłaszcza naturalny rozkład wartości bitów, co można wykryć za pomocą steganalizy.

Te ślady prowadzą do następnej lekcji: wykrywania ukrytych danych.

Szybki test

Sprawdź, czy rozumieją Państwo wybór formatu.

Powtórzenie: steganografia obrazów i dźwięku

Poznali Państwo sposób faktycznego osadzania danych w plikach multimedialnych.

  • Osadzanie LSB nadpisuje najmniej znaczący bit każdej próbki koloru lub dźwięku, powodując niezauważalną zmianę o 1.
  • Prefiks długości lub terminator wyznacza koniec ładunku; narzędzia takie jak steghide i stegano automatyzują ten proces, oferując opcjonalne szyfrowanie.
  • Formaty bezstratne (PNG, BMP, WAV) zachowują dane LSB; formaty stratne (JPEG, MP3) wymagają osadzania w dziedzinie częstotliwości (DCT/echo/widmo rozproszone).
  • Dyskrecję zwiększają rozmieszczanie pseudolosowe, osadzanie w zaszumionych obszarach oraz algorytmy adaptacyjne sterowane kluczem stego.
  • Wybór między dziedziną przestrzenną a dziedziną częstotliwości oznacza kompromis między pojemnością a odpornością.
  • Obrońcy zwracają uwagę na niezgodność formatów, anomalie rozmiaru i ślady statystyczne, a także stosują ponowne kodowanie w celu niszczenia naiwnych ładunków.

Następnie nauczą się Państwo wykrywać ukryte dane za pomocą steganalizy.

Często zadawane pytania

Czy lekcja „Steganografia obrazu i dźwięku” jest bezpłatna?

Tak — pełny tekst „Steganografia obrazu i dźwięku” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Steganografia obrazu i dźwięku”?

Osadzanie danych w plikach multimedialnych Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Steganografia obrazu i dźwięku”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym jest steganografia
  2. Steganografia obrazu i dźwięku
  3. Wykrywanie ukrytych danych (steganaliza)
  4. Kanały ukryte i eksfiltracja
← Powrót do Cyber Security Academy