Tik-76.115 Toiminnallinen määrittely

Stegano

http://
Viimeksi päivitetty .

Sisällysluettelo

1. Johdanto
2. Yleiskuvaus
3. Tiedot
3.1. Tietovuokaavio
3.2. Otsikko
4. Toiminnot
5. Ulkoiset liittymät
5.1 Unix -käyttöliittymä
5.2 Windows -käyttöliittymä
6. Muut ominaisuudet


Yhteenveto

Ohjelmistolla on kaksi päätoimintoa: kätkeä tietoa peitetiedostoon ja purkaa salattu tieto kätköviestistä. Piilotettaessa tietoa peitetiedostoon käyttäjä antaa ohjelmistolle avaimen, jonka avulla kätkentäbitit valitaan. Salattu tieto saadaan ulos kätköviestistä vain samalla avaimella. Käyttäjä voi halutessaan valita kompressio-algoritmin, salausalgoritmin ja kätkemisalgoritmin ja kätköbittien valinta-algoritmin, mutta ohjelmisto osaa valita nämä automaattisestikin.
Salaisen viestin lisäksi peitetiedostoon pitää laittaa tietoa viestistä (nimi, pituus) ja sen esikäsittelytavoista. Tämän vuoksi salaiseen viestiin liitetään tarkoin määritelty otsikko-kenttä joka sisältää tarvittavat tiedot.
Käyttöliittymät toteutetaan UNIX- ja Windows-ympäristöihin. UNIX-käyttöliittymä on yksinkertainen komentorivipohjainen liittymä, kun taas Windows-liittymä on graafinen.

1. Johdanto

Tämä dokumentti

Luvussa 1 "Johdanto" määritellään ohjelmiston käyttäjät, tavoitteet, määritelmät ja termit sekä luetellaan lähteet.

Luvussa 2 "Yleiskuvaus" kuvataan lyhyesti järjestelmän käyttöympäristö ja yleiset rajoitteet.

Luvussa 3 "Tiedot" kuvataan järjestelmän käsittelemän tiedon kulkua ja tietosisältöä.

Luvussa 4 "Toiminnot" kuvataan kaikki käyttäjän valittavissa olevat toiminnot.

Luvussa 5 "Ulkoiset liittymät" kuvataan käyttöliittymät: Unix -käyttöliittymä ja Windows -käyttöliittymä

Luvussa 6 "Muut ominaisuudet" kuvataan ohjelmiston ei-toiminnallisia ominaisuuksia.

Käyttäjät

Ohjelmisto on tarkoitettu kaikille niille tietokoneen käyttäjille, joilla on jokin tarve lähettää lyhyitä sanomia kenenkään havaitsematta. Ohjelmisto soveltuu myös tutkimustyöhön.

Tavoitteet

Ohjelmiston tavoitteena on tarjota siirrettävä ohjelmakirjasto, joka tarjoaa turvallisen tavan kätkeä tietoa.

Lisäksi ohjelmakirjaston päälle rakennetaan unix- ja Windows käyttöliittymät, joiden avulla mahdollistetaan kirjaston helppo käyttö ja joilla demonstroidaan kirjaston toimivuutta erilaisissa käyttöjärjestelmäympäristöissä.

Ohjelmiston tarkoituksena on toimia kokeiluvälineenä tutkimustyössä sekä osoittaa tiedon siirron täydellisen valvomisen olevan teknisesti mahdotonta.

Määritelmät ja termit

Lähdeluettelo

2. Yleiskuvaus

Projetissa kehitetään kirjasto, jonka avulla voidaan rakentaa ohjelmisto sanoman kätkemiseksi peitetiedostoon. Seuraava kuva kuvaa tilanteen jossa projektissa kehitettyä ohjelmaa voidaan käyttää.

overview
Kuva 1: Projektin tarkoitus

Tarkempi kuvaus löytyy vaatimusmäärittelystä.

Lisäksi projektissa tehdään käyttöliittymät Unix ja Windows ympäristöihin. Unixiin tehdään komentorivipohjainen käyttöliittymä ja Windowsiin tehdään valikko/nappi -pohjainen käyttöliittymä. Kirjaston tekemiseen käytetään valmiita kryptografisia- ja formaattikirjastoja. Käytettävät algoritmit ja formaatit esitellään tarkemmin seuraavassa vaiheessa. Kirjasto toteutetaan C++ kielellä. Kryptografisena kirjastona tullaan ensisijaisesti käyttämään Crypto++ 2.0 kirjastoa ja tiedostoformaateissa apuna käytetään kirjastoja netpbm (bmp, gif) ja Independent JPEG Group's free JPEG software.

3. Tiedot

Käyttäjä syöttää järjestelmälle avaimen, peitetiedoston ja salaisen sanoman (avattaessa vain avaimen ja peitetiedoston).

3.1. Tietovuokaavio

Kuvassa 2 on esitetty karkea tietovuokaavio kätkentävaiheesta.

vuo
Kuva 2: Kätkentävaiheen tietovuokaavio

Vuokaavio sanallisesti selitettynä:

  1. Käyttäjän valitsema peitetiedosto (cover file) sisältää sekä kätkentäbittejä (cover bits) (kuva voidaan ajatella mittausdataksi, jolloin kätkentäbitit ovat mittausdatan vähiten merkitseviä bittejä) että muita ei-kätkentäbittejä (non-cover bits).
  2. Ei-kätkentäbiteistä muodostetaan yhdessä käyttäjän antaman mielivaltaisen pitkän salasanan (passphrase) kanssa jollakin menetelmällä (esimerkiksi SHA-algoritmillä) avainmateriaalia (key material), josta muut kätkennässä käytettävät algoritmit saavat avaimensa.
  3. Käyttäjän antama kätkettävä viesti (plain message) kompressoidaan niin haluttaessa ja siihen lisätään seuraavassa alikappaleessa määriteltävä otsikkokenttä, joka kertoo mm. viestin pituuden ja käytetyn kompressiomenetelmän.
  4. Kompressoitu otsikollinen viesti salataan otsikoineen jollain symmetrisellä salausalgoritmillä (encrypt), jolloin saadaan piilotettava viestidata (message to hide).
  5. Peitetiedoston kätkentäbiteistä (cover bits) valitaan (select hiding bits) valinta-algoritmilla (esim. pseudorandom permutation) ne bitit, joihin piilotettava viestidata sisällytetään (substitute).

3.2. Otsikko

Jotta salattu sanoma voidaan purkaa oikein peitetiedostosta, täytyy sanoman lisäksi kätkeä otsikko, joka sisältää sanomatiedoston nimen, käytetyn kompressio-algoritmin, käytetyn viestin pituuden ja tunnuksen algoritmille jolla sanoma on kätketty tiedostoon. Seuraavassa kuvassa on esitetty tämän otsikon rakenne ja kenttien pituudet.

Kätketyn tiedon otsikko
Kuva 3: Kätketyn tiedon otsikko

Information -kentän alikentän "length of the message length" arvo ilmaisee kuinka monta tavua tarvitaan viestin pituuden ilmaisemiseen. Kentän arvo 00 merkitsee että viestin pituuden ilmaisemiseen tarvitaan 1 tavu. Arvo 01 merkitsee 2 tavua, arvo 10 merkitsee 3 tavua ja arvo 11 merkitsee 4 tavua. Alikentän "reserved for future use" bitit ovat toistaiseksi käyttämättä ja niitä voidaan käyttää esimerkiksi Steganon mahdolliseen jatkokehitykseen.

Varsinaisen tiedostonimen loppuun lisätään null -merkki, joka ilmoittaa tiedostonimen ja koko otsikon päättymisen. Siten tiedostonimen pituus voi olla minimissään yksi (1) tavu (tällöin lukeminen tapahtuu esim. UNIX:ssa stdin:stä).

Otsikossa eniten merkitsevä tavu on kaikkein vasemmanpuoleisin ja vähiten merkitsevä tavu on kaikkein oikeanpuoleisin. Tavun eniten merkitsevä bitti on vasemmanpuoleisin ja vähiten merkitsevä bitti on oikeanpuoleisin.

Sanoman kätkemisnopeus riippuu hyvin paljon käytetyistä algoritmeista ja kuvaformaatista. Oletamme näiden algoritmien olevan tehokkaita. Vaatimukseksi tehokkuuden osalta projektissa tehtävälle ohjelmalle on asetettu, että ohjelma pyritään totettamaan mahdollisimman optimaalisesti. Siten sen ei tulisi heikentää käytettävien algoritmien toimintaa oleellisesti. Edellä oleva pätee myös kapasiteettivaatimuksille.

4. Toiminnot

Käyttäjältä vaadittavat syötteet kunkin toiminnon aikaansaamiseksi (molemmille käyttöliittymille) on kuvattu tarkemmin Luvussa 5. Ohjelmistolla on kaksi perustoimintoa: Salaisen viestin piilottaminen peitetiedostoon ja peitetiedostoon piilotetun salaisen viestin avaaminen selväkieliseen muotoon. Piilotettaessa on käyttäjän annettava avain, peitetiedoston nimi ja salainen (piilotettava) sanoma. Avattaessa riittää peitetiedoston nimi ja avain. Näiden lisäksi käyttäjällä on valittavissaan useita optioita: Kätkemisen jälkeen ohjelma kertoo, kuinka suuri osa mahdollisista kätkentäbiteistä tuli käytettyä.

5. Ulkoiset liittymät

Projektissa tehdään siis käyttöliittymät sekä UNIX:iin että Windowsiin. Näin on tarkoitus osoittaa kirjaston siirrettävyys sekä antaa esimerkki kirjaston käytöstä. Seuraavissa kappaleissa on kuvattu molemmat käyttöliittymät.

5.1 Unix -käyttöliittymä

Unixin käyttöliittymä on komentorivipohjainen. Seuraavassa manuaalisivussa on esitetty käytettävät valitsimet ja niiden tehtävä.
NAME
   stegano - hide/extract messages in/from image files

SYNOPSIS
   stegano -h [-v] [-q] [-f msgfile] [-r selector] [-c compression algorithm]
           [-s encryption algorithm] key coverfile stegofile
   stegano -e [-v] [-t] [-r selector] [-s encryption algorithm] key stegofile
   stegano coverfile

DESCRIPTION
   Stegano is a steganography program that hides files in images.
   A secret key is used to hide the data into a cover file, extracting
   (or detecting that there is any data hidden) is not possible without
   the correct key.
   It's possible to select which compression, encryption and selection
   algorithms program will use. You can see the list of algorithms a
   cover file supports by typing 'stegano coverfile'.

FLAGS

-h  Encrypt and hide a file into the cover file.

-e  Extract and decrypt a file hidden in the cover file.

-v  Verbose mode, displays more detailed information.

-q  Doesn't display hiding statistics.

-t  Shows the original name and lenght of the hidden message.

-f msgfile
    Read the data from file 'msgfile' instead of standard input.
    The same file name will be used when extracting the data.

-s ea
    Choose encryption algorithm. 'ea' is the name of the used algorithm.
    If you don't use this option when extracting, Stegano will try
    to decrypt file with every possible encryption algorithm. It's
    not necessary to type the full name of the algorithm.

-c ca
    Choose compression algorithm. 'ca' is the name of the used algorithm.
    This option is not used when extracting the message. It's not necessary
    to type the full name of the algorithm.

-r sa
    Choose selector algorithm. 'sa' is the name of the used algorithm.
    It's not necessary to type the full name of the algorithm.


PARAMETERS

key
    The secret key which is used hiding/extracting the message in/from
    the cover file.

coverfile
    The name of the cover file where the message will be hidden.

stegofile
    The name of the cover file which includes the hidden message.

EXAMPLES

    1. To hide msgdile into the 'picture.gif' using IDEA encrytion
       algorithm, enter:

           Stegano -h -f msgfile -s ID abcdef picture.gif picture2.gif

       In this example 'abcdef' is the secret key.


    2. To extract the hidden message enter:

           Stegano -e abcdef picture2.gif
5.2 Windows -käyttöliittymä

Windows-ympäristöön tehty käyttöliittymä on pyritty tekemään mahdollisimman "Windowsmaisesti" siten, että jokainen, joka on aiemmin joskus käyttänyt Windowsia, osaa käyttöliittymää käyttää.
Tässä luvussa on esitelty käyttöliittymän tyyli ja käytön perusperiaate. Ikkunoiden lopullinen asu ja toiminnat tulevat luultavasti jonkin verran muuttumaan ohjelmiston kehittyessä.
Kun ohjelma käynnistetään, avautuu stegano-sovelluksen perusnäyttö. Perusnätössä käyttäjä valitsee joko viestin piilotuksen peitetiedostoon (hide-toiminto) tai viestin purkamisen peitetiedostosta (extract-toiminto). Näiden toimintojen lisäksi menuvalikoissa on valittavina Windowsin yleisperiaatteen mukaisesti ikkunoiden hallintaan liittyviä toimintoja, sekä help-toiminnot.
Kun käyttäjä valitsee viestin piilotuksen peitetiedostoon avautuu seuraavan kuvan kaltainen ikkuna, jossa peitetiedosto valitaan.

Peitetiedoston valinta
KUVA 4: Peitetiedoston valinta hide-toiminnossa

Peitetiedosto valitaan Windowsille tyypillisen ikkunan avulla, jolla voidaan kätevästi selailla tiedostojärjestelmään talletettuja tiedoston nimiä. Kun käyttäjä on valinnut peitetiedoston päästään varsinaiseen viestin piilotusvaiheeseen, jossa käyttäjä syöttää piilotettavan viestin tai jos käyttäjä haluaa piilottaa peitetiedostoon olemassa olevan tiedoston, niin käyttäjä syöttää tämän tiedoston nimen. Käyttäjä voi kirjoittaa piilotettavan tiedoston nimen suoraan sille varattuun paikkaan tai tiedoston voi valita myös "browse"-aputoiminnon avulla.

Lisäksi käyttäjä valitsee piilotuksessa käytettävät algoritmit sekä luonnollisesti antaa piilotuksessa käytettävän avaimen. Viestin kätkemisessä käytettävät algoritmivaihtoehdot sekä oletusarvoiset algoritmit määräytyvät peitetiedoston tyypin perusteella.

Piilotusvaiheen tietojensyöttöikkunan lisäksi näyttöön avautuu ikkuna jossa näytetään peitetiedoston sisältämä kuva. Seuraavassa kuvassa on esitetty stegano-sovelluksen ulkoasu peitetiedoston valinnan jälkeen viestin piilotustoiminnossa.

Viestin piilotus
KUVA 5: Viestin piilotus

Kun kaikki tarvittavat tiedot on annettu, suoritetaan varsinainen kätkeminen. Kun kätkeminen on tehty, avautuu alkuperaisen kuvan sisältävän ikkunan viereen ikkuna, jossa on esitetty kuva, johon viesti on kätketty. Näin voidaan tarkastella kuvien eroja ja algoritmien toimivuutta.

Kuvien lisäksi ohjelma tulostaa käyttäjälle tilastotietoa kätkemisestä.

Jos käyttäjä on aloitustilanteessa valinnut viestin purkamisen peitetiedostosta, valitsee hän peitetiedoston vastaavalla tavalla kuin viestin piilotuksessakin (Ks. Kuva 4). Peitetiedoston valinnan jälkeen avautuu viestin purkamiseen tarvittavien tietojen syöttöikkuna sekä ikkuna, jossa on peitetiedoston sisältämä kuva.

Viestin purkaminen
KUVA 6: Viestin purkaminen

Tässä ikkunassa käyttäjä syöttää kätkettäessä käytetyt algoritmit. Algoritmivaihtoehdot sekä oletusalgoritmit riippuvat peitetiedoston tyypistä.

Jos valitusta kuvatiedostosta löytyy viesti ja avain on oikea, tulostetaan löydetty viesti ikkunan alalaidassa olevaan laatikkoon. Jos viestinä oli käytetty tiedostoa, käyttäjältä kysytään millä nimellä tiedosto talletetaan (oletusarvona on kätketyn tiedoston nimi).

6. Muut ominaisuudet

Ohjelmiston ei-toiminnallisia ominaisuuksia ovat: