Kandidatexamensarbete för Daniel Hultgren & Tomas Andréasson

Ett system för lingvistisk steganografi genom synonymsubstitution

Sammanfattning

Vi har undersökt diverse metoder för lingvistisk steganografi: läran om att dölja data i till synes oskyldig naturlig text. Ett möjligt användningsområde för detta är överföringen av hemliga meddelanden med en osäker kommunikationsmetod utan att väcka misstankar. Projektet har också involverat skapande, implementation och analys av ett eget steganografiskt system.

Vårt system baseras på synonymers utbytbarhet, en redundans i naturligt språk som kan utnyttjas för att lagra data. För varje grupp av ord med samma betydelse kan vi tilldela en binär sträng till varje synonym, gå igenom en text och byta ut orden med kända synonymer mot de vars binära sträng matchar nästa stycke data att lagra. En omvänd metod kan användas för att läsa och skriva ut den binära data som kodats i texten. Vidare har vi även fokuserat på korruptionstolerans, det vill säga förmågan att helt eller delvis återskapa den kodade datan om en del av texten raderats eller modifierats.

Testerna vi gjort på systemet visar en dålig datadensitet - i genomsnitt en bit rå data per 37 ord - orsakad av den restriktiva synonymdatabasen som använts samt en acceptabel korruptionstolerans för "naturliga" sorters korruption, trots att den snabbt kollapsar vid mer kaotiska korruptionsmetoder.

A system for linguistic steganography by means of synonym substitution

Abstract

We have been studying various means of linguistic steganography: the science of hiding data in a seemingly innocent natural text. A possible use of this field is the transmission of secret messages using an insecure method of communication without arousing suspicion. The project has also involved creating, implementing and analyzing our own steganographic system.

Our system is based on the interchangeability of synonyms, a redundancy in natural language that can be used to store data. For each group of words with identical meaning, we can assign a binary string to each synonym, scan through a text and swap words with known synonyms for the ones with the binary string matching the next piece of data to be stored. A reverse procedure is used to read and output the binary data encoded in the text. Furthermore, we've also focused on corruption tolerance, that is, the ability to retain some or all encoded data if a portion of the text is removed or changed.

The tests of our system show a poor data density - on average one bit of raw data for every 37 words - caused by the restrictive synonym database used as well as an acceptable corruption tolerance for "natural" kinds of corruption, even though it quickly falls apart when a more chaotic method of destruction is applied.