Tik-76.115 Toiminnallinen määrittely

Stegano

http://www.hut.fi/~tjunttil/oht/documents/tm.html
Viimeksi päivitetty Oct 29 03:16 1996.

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: piilottaa tietoa peitetiedostoon ja löytää 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 salattavan tiedon esikäsittelytavan (salaus/pakkaus), kätkemisalgoritmin ja satunnaisgeneraattorin, 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

Kentän "viestin pituus" edessä oleva 2 bitin mittainen kenttä 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.

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äyttäjällä on myös mahdollisuus valita kaksi aputoimintoa, online help joka sisältää lyhyen kuvauksen ohjelman toiminnasta, sekä toiminto jossa varsinaisen tiedon kätkemisen sijasta kuvaan vain merkitään ne pikselit joihin tieto piilotettaisiin.

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, alustavassa manuaalisivussa, on esitetty käytettävät valitsimet ja niiden tehtävä.
NAME
   stegano - hide messages to image files

SYNOPSIS

   stegano -[aN|dN] [-cNsNrN] [-w] [-h] -k "used key" cover_src [cover_dst] [message]

DESCRIPTION

COMMANDS

-aN Choose hiding algorithm. N is the name or the number of the used
    algorithm.

-dN Choose extracting algorithm. N is the name or the number of the
    used algorithm. Notice that the value of N should be same as used
    in hiding. 0 stands for all available algorithms and it should be
    used only if the hiding algorithm is not known.

-cN Choose compression algorithm. N is the name or the number of the
    used algorithm. This option is not used when extracting the message.

-sN Choose algorithm for encrypting the message before hiding. N is the
    name or the number of the used algorithm.

-rN Choose random number generator. N is the name or the number of the
    used algorithm.

-h  Online help.

-w  This option shows the pixels in the picture where the message
    would be hidden. When this option is used the message is not
    really hidden.

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

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

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

message The name of the file that includes the message to be hidden. This
    can be also stdin (or cin).

DISCLAIMER

AUTHORS

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 seuraavanlainen ns. Welcome-ikkuna.

Welcome-ikkuna
KUVA 4: Welcome-ikkuna

Aloitusikkunassa paitsi tervehditään käyttäjää, myös ilmaistaan ohjelmien copyrightit ja mahdolliset käytön ja kopioinnin rajoitukset. Tästä ikkunasta käyttäjä valitsee haluaako hän piilottaa tietoa kuvaan (Hide-näppäin) vai purkaa viestin kuvasta (Extract-näppäin). Käyttäjä voi myös selata käyttöohjeita (Help) tai poistua ohjelmasta (Exit).
Jos käyttäjä valitsee viestin piilotuksen aukeaa seuraavan kuvan kaltainen ikkuna. Käyttäjän valitessa viestin purun aukeaa kuvan 9 kaltainen ikkuna.

Cover-filen valinta
KUVA 5: Peitetiedoston valinta

Viestin kätkemis-ikkuna koostuu korteista, joissa valitaan ohjelmalle tiedostot ja kätkemiseen tarvittavat algoritmit ja generaattorit, ja tietysti salainen avain. Korttien vieressä näkyy yhteenveto tehdyistä valinnoista. Korttien toteutus tehdään siten, että aina kun käyttäjä on tehnyt valinnan, seuraava kortti aukeaa automaattisesti. Käyttäjä voi kuitenkin halutessaan liikkua korttien välillä "Next"- ja "Previous"-näppäimillä tai vaihtoehtoisesti näpäyttämällä hiirellä kortin yläosaa.

Ensimmäisessä kortissa valitaan kuvatiedosto, johon viesti halutaan kätkeä. Tiedosto valitaan normaaliin Windows-tyyliin etsimällä haluttu tiedosto tiedostolistasta. Levyasema ja hakemisto valitaan vastaavasti valitsemalla listasta. Valinta tehdään kaksoinapauttamalla oikeaa vaihtoehtoa. Tiedoston nimi voidaan myös kirjoittaa sille varattuun tilaan kortin vasemmassa yläreunassa. Kun tiedosto on valittu ilmestyy ruutuu ikkuna, jossa näytetään juuri valittu kuvatiedoston kuva. Samalla aukeaa automaattisesti seuraava kortti:

Viestin valinta
KUVA 6: Viestin valinta

Tässä kortissa valitaan tiedosto, joka halutaan kätkeä kuvaan. Tiedoston valinta tapahtuu täsmälleen samalla tavalla kuin edellisessä kortissa. Tiedoston sijasta salattava viesti voidaan kirjoittaa kortin alalaidassa olevaan tilaan. Kun tiedosto on valittu tai viesti kirjoitettu aukeaa seuraava kortti:

Kohdetiedoston valinta
KUVA 7: Kohdetiedoston valinta

Tässä kortissa annetaan tiedosto, johon viestin sisältävä kuva talletetaan. Kun tiedoston nimi on annettu aukeaa seuraava kortti:

Optioiden valinta
KUVA 8: Optioiden valinta

Tässä kortissa valitaan viestin kätkemisessä käytettävät tiivistys- ja bittien valinta algoritmit sekä tarvittava satunnaislukugeneraattori. Tässä kortissa annetaan myös salainen avain.

Kun kaikki tiedostot ja optiot on annettu, suoritetaan varsinainen kätkeminen. Kun kätkeminen on tehty, avautuu alkuperaisen kuvan sisältävän ikkunan viereen ikkunat, joissa toisessa on kuva, johon viesti on kätketty, ja toisessa on korostettu pikselit, joihin viesti on kätketty. Näin voidaan tarkastella kuvien eroja ja algoritmien toimivuutta.

Kuvien lisäksi avautuu ikkuna, jossa annetaan tilastotietoa kätkemisestä. Samalla kysytään käyttäjältä hyväksyykö hän kätkemisen vai haluaako käyttäjä muuttaa joitakin optioita tai tiedostoja.

Seuraava ikkuna avautuu, jos käyttäjä oli welcome-ikkunassa valinnut viestin purkamisen kuvasta:

Viestin purkaminen
KUVA 9: Viestin purkaminen

Tässä ikkunassa annetaan normaaliin tyyliin tiedoston nimi, josta halutaan viestiä etsiä. Tiedoston nimen lisäksi valitaan kätkettäessä käytetyt algoritmit. "View"-näppäimestä voidaan katsoa valitun kuvatiedoston sisältöä.

Jos valitusta kuvatiedostosta löytyy viesti ja avain on oikea, aukeaa ikkuna, jossa löydetty viesti näytetään. Jos viestinä oli käytetty tiedostoa, käyttäjältä kysytään millä nimellä tiedosto talletetaan (oletusarvona on kätketyn tiedoston nimi). Jos viesti ei ollut tiedosto, vaan se oli syötetty näppäimistöltä, näytetään viesti ruudulla, ja käyttäjä voi sen myös tallettaa tiedostoon.

6. Muut ominaisuudet

Ohjelmiston ei-toiminnallisia ominaisuuksia ovat: