Steganografi i bilder och ljud
Bädda in data i mediefiler.
Steganografi i bilder och ljud är en gratis lektion i Cyber Security Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Cyber Security Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.
Hur bilder lagrar pixlar
För att dölja data i en bild måste ni först förstå hur bilder lagrar färg. En pixel i en RGB-bild har tre kanaler: röd, grön och blå – var och en vanligtvis ett 8-bitars tal mellan 0 och 255.
En pixel består alltså av tre byte. En liten bild på 800x600 har 480 000 pixlar och 1,44 miljoner färgbyte. Det är denna redundans som steganografi utnyttjar: det finns betydligt fler byte än ögat kan granska.
Den viktiga insikten är att det mänskliga synsystemet inte kan skilja färgvärdet 200 från 201. Det omärkliga spelrummet är där den dolda datan finns.
LSB-inbäddning
LSB-inbäddning ersätter den minst signifikanta biten i varje färgbyte med en bit av hemligheten. Eftersom den lägsta biten bara ändrar värdet med 1 blir den visuella förändringen osynlig.
Anta att ni vill dölja biten 1 i ett rött kanalvärde på 200 (binärt 11001000). Om den sista biten ersätts med 1 blir resultatet 11001001 = 201 – en förändring som ingen människa kan se.
Över tusentals pixlar återskapar ni nyttolasten genom att läsa tillbaka LSB:erna i rätt ordning.
# 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 LSBKoda ett helt meddelande
Ett meddelande är en sekvens av byte, där varje byte består av 8 bitar. För att dölja meddelandet med en header för längden omvandlar ni nyttolasten till en bitström och skriver en bit per färgkanal.
Ett praktiskt inbäddningsverktyg lagrar också ett längdprefix eller en unik avslutningssekvens, så att extraheraren vet när den ska sluta läsa. Annars går det inte att skilja nyttolasten från bruset i täckobjektet.
Detta är exakt vad verktyg som steghide, zsteg och stegano automatiserar, ofta med ett lösenord och ett krypteringslager.
# 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'Välja rätt bildformat
Formatet spelar stor roll på grund av komprimering:
- Förlustfria format (PNG, BMP) bevarar varje pixel exakt. LSB-data överlever helt – idealiska bärare.
- Format med kvalitetsförlust (JPEG) kastar bort fina detaljer under komprimeringen, vilket förstör naiv LSB-data.
För JPEG måste inbäddningen ske i DCT-koefficienterna, alltså värdena i frekvensdomänen som används under komprimeringen, i stället för i råpixlar. Verktyg som steghide och de klassiska JSteg/OutGuess arbetar där, så att nyttolasten överlever komprimeringssteget.
Den naiva LSB-metodens känslighet
Naiv pixelbaserad LSB-inbäddning är känslig. Alla åtgärder som ändrar pixelvärden förstör de dolda bitarna:
- Spara om som JPEG förstörande komprimering skriver om byten.
- Ändra storlek eller beskära omsampling ändrar varje värde.
- Färgjusteringar ändrar ljusstyrka och kontrast.
- Uppladdning till sociala medier plattformar kodar automatiskt om bilder.
Detta är robusthetshörnet i triangeln. Om en nyttolast måste tåla redigering (t.ex. ett vattenmärke), bäddar man in den i frekvensdomänen (DCT/DWT) och accepterar lägre kapacitet som motprestation.
Ökad smygbarhet: intelligent placering
Naiv LSB-inbäddning skriver sekventiellt till pixlar från det övre vänstra hörnet, vilket skapar en detekterbar statistisk signatur. Metoder med bättre smygförmåga sprider nyttolasten för att undvika analys:
- Pseudoslumpmässig placering en stego-nyckel initierar en PRNG som väljer vilka pixlar som ska bära bitar, så att mönstret ser slumpmässigt ut.
- Brusiga områden inbäddning i strukturerade områden (gräs, hår) där variation redan finns, i stället för i jämna himlar.
- Adaptiv inbäddning moderna algoritmer minimerar en kostnadsfunktion för detekterbarhet.
Stego-nyckeln fungerar också som ett lösenord: utan den kan en analytiker inte återskapa bitordningen, även om analytikern misstänker att något har dolts.
Grunderna i ljudsteganografi
Ljud fungerar enligt samma princip som bilder, men i tids- eller frekvensdomänen. En WAV-fil lagrar samplingar, vanligtvis 16-bitars tal som representerar amplituden tusentals gånger per sekund.
LSB-inbäddning i ljud skriver över den lägsta biten i varje sampling. En förändring med ett steg i en 16-bitars amplitud ligger långt under människans hörseltröskel, så ljudet låter identiskt.
Med 44 100 samplingar per sekund och kanal erbjuder ljud stor kapacitet, även om förlustbringande format som MP3 förstör LSB-bitar i råa samplingar på samma sätt som JPEG förstör LSB-bitar i pixlar.
# 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.Avancerade ljudtekniker
Utöver LSB använder ljudsteganografi perceptuella knep som bygger på hur hörseln fungerar:
- Faskodning ändrar ljudkomponenternas fas; örat är okänsligt för absolut fas.
- Ekodöljning introducerar små, omärkliga ekon vars fördröjning kodar bitar.
- Spridningsspektrum sprider nyttolasten över ett brett frekvensband som lågnivåbrus som tål redigering.
- Toninsättning döljer data med toner som maskeras av starkare ljud i närheten (psykoakustisk maskering).
Dessa metoder byter kapacitet mot robusthet och smygbarhet, på samma sätt som bildmetoder i frekvensdomänen.
Rumslig domän kontra frekvensdomän
En gemensam idé för olika medier är valet av domän:
- Rumslig/tidsdomän bädda in direkt i pixlar eller samplingar. Enkelt och med hög kapacitet, men känsligt för komprimering.
- Frekvensdomän transformera signalen (DCT för JPEG, DWT för wavelets, FFT för ljud), bädda in data i koefficienterna och transformera sedan tillbaka. Robustare och mindre detekterbart, men med lägre kapacitet och högre komplexitet.
Regeln är: om bäraren kommer att komprimeras, ändra storlek på eller delas, bör ni bädda in data i frekvensdomänen. För felfria, förlustfria bärare fungerar rumslig LSB-inbäddning bra.
Kapacitetsplanering
Uppskatta före inbäddningen hur mycket data ni kan dölja på ett säkert sätt. En användbar riktlinje är inbäddningsgrad – antalet dolda bitar per bit i täckobjektet.
- 1 bit per kanal (full LSB) maximal kapacitet, men också lättast att upptäcka.
- Delvisa inbäddningsgrader att bara använda en del av pixlarna minskar kapaciteten, men förbättrar omärkligheten avsevärt.
En RGB-bild på 1920x1080 har ungefär 6,2 miljoner färgbyte, vilket motsvarar ungefär 777 KB vid full LSB. Säkerhetsmedveten inbäddning använder dock bara en del av detta, eftersom statistiska avvikelser uppstår när varje LSB fylls och lätt upptäcks av steganalysverktyg.
# 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.Viktiga slutsatser för försvarare
Ur försvararens perspektiv visar förståelse för inbäddning vad man bör vara uppmärksam på:
- Formatavvikelser en PNG/BMP där JPEG förväntas kan tyda på att en förlustfri bärare har valts för LSB.
- Storleksavvikelser en fil vars storlek inte står i proportion till det synliga innehållet.
- Omkodning som försvar plattformar som komprimerar om alla uppladdningar förstör naiva LSB-nyttolaster – en billig motåtgärd.
- Statistisk analys full LSB-inbäddning jämnar ut den naturliga fördelningen av bitvärden, vilket kan upptäckas genom steganalys.
Dessa signaturer leder vidare till nästa lektion: att upptäcka dold data.
Snabb kontroll
Testa er förståelse av valet av format.
Repetition: Steganografi i bilder och ljud
Ni har lärt er hur data faktiskt bäddas in i mediefiler.
- LSB-inbäddning skriver över den lägsta biten i varje färg- eller ljudsampling – en omärklig förändring med ett steg.
- Ett längdprefix eller en avslutningssekvens markerar var nyttolasten slutar; verktyg som steghide och stegano automatiserar detta med valfri kryptering.
- Förlustfria format (PNG, BMP, WAV) bevarar LSB-data; format med kvalitetsförlust (JPEG, MP3) kräver inbäddning i frekvensdomänen (DCT/ekodöljning/spridningsspektrum).
- Smygbarheten förbättras genom pseudoslumpmässig placering, inbäddning i brusiga områden och adaptiva algoritmer som styrs av en stego-nyckel.
- Valet mellan rumslig domän och frekvensdomän innebär en avvägning mellan kapacitet och robusthet.
- Försvarare letar efter formatavvikelser, storleksavvikelser och statistiska signaturer och använder omkodning för att förstöra naiva nyttolaster.
Härnäst lär vi oss att upptäcka dold data genom steganalys.
Lär dig Cyber Security Academy med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 303
Vanliga frågor
Är lektionen ”Steganografi i bilder och ljud” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Cyber Security Academy, inklusive ”Steganografi i bilder och ljud”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Steganografi i bilder och ljud”?
Bädda in data i mediefiler. Ni övar på Cyber Security Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cyber Security Academy?
Du behöver inga förkunskaper. Utbildningen i Cyber Security Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Steganografi i bilder och ljud”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cyber Security Academy-lektionen?
Ja. Varje Cyber Security Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Vad steganografi är
- Steganografi i bilder och ljud
- Upptäcka dold data (steganalys)
- Dolda kanaler och exfiltrering