Tik-76.115 Ylläpito-ohje

Stegano

http://
Viimeksi päivitetty .

Sisällysluettelo

1. Johdanto
2. Ympäristö
3. Tukiohjelmat
4. Järjestelmän komponentit
5. Ylläpitotehtävät
6. Ohjelmiston kuvaus

1. Johdanto

Tämä dokumentti kuvaa kuinka Stegano -ohjelmisto asennetaan ja kuinka sitä voidaan ylläpitää ja kehittää.

Ohjelmistossa käytettävä erikoissanasto.

1.1 Sovellusalueen kuvaus

Steganografisen systeemin ympäristö on kuvattu kuvassa 1. Lähettäjällä (sender) on jokin salainen viesti (secret message), jonka hän haluaa lähettää vastaanoottajalle (receiver) jotakin turvatonta kanavaa (insecure channel) esimerkiksi internetiä pitkin. Paitsi että lähettäjä ei tahdo kenenkään saavan tietää salaisen viestin sisältöä (tämän takaamiseksi riittäisi pelkästään viestin salaaminen jollain vahvoja kryptografisia algoritmejä käyttävällä ohjelmalla, kuten PGP:llä), vaan hän tahtoo ettei kukaan edes tiedä salaisen viestin olemassaolosta. Viestien huomaamatonta lähetystä varten salainen viesti kätketään johonkin viattomaan peitetiedostoon (cover file), kuten esimerkiksi digitoituun kuvaan.

Yleiskuva systeemistä
Kuva 1: Steganograafisen systeemin ympäristö

Stegano on tiedon kätkemisen ja purkamisen suorittava ohjelmisto. Ohjelmisto soveltaa valittavia algoritmejä salaiseen viestiin ja peiteviestiin salaisen avaimen avulla tuottaen tuloksena kätköviestin. Ohjelmisto ilmenee kuvassa 1 laatikoina Hiding ja Extracting.

2. Ympäristö

Ohjelmiston tekemiseen on käytetty kahta valmista, vapaassa levityksessä olevaa kirjastoa: Wei Dain kryptografista kirjastoa Crypto++ 2.1 ja Independent JPEG Group'n JPEG -kirjastoa (versio 6a). Crypto++ 2.1 kirjasto sisältyy ohjelmistoon kokonaisuudessaan, mutta JPEG -kirjastosta on jätetty pois siinä valmiina olevat käyttäjän ohjelmat.

Stegano kirjasto toimii sekä Unix että Windows -95 käyttöjärjestelmissä. Ohjelmistolla ei ole mitään erityisiä laitteisto vaatimuksia. Se toimii hyvin 486 50MHz PC:ssä, jossa on 20 Mt muistia ja käyttöjärjestelmänä Linux RedHat. Varsinkin suurien viestien kätkemiseen suositellaan kuitenkin vähintään Pentium -prosessorilla varustettua konetta.

Ohjelmisto on tehty käyttäen C++ -ohjelmointikieltä lukuunottamatta IJG:n JPEG -kirjastoa, joka on ohjelmoitu C -kielellä. Ohjelmisto kääntyy ainakin GNU g++ kääntäjällä ja Visual C++ kääntäjällä.

3. Tukiohjelmat

Ohjelmisto ei tarvitse mitään erikoisia työkalu- tai muita tukiohjelmistoja. Unixissa tarvitaan C++ kääntäjä (GNU g++ testattu) ja make -ohjelma. Windows -95:ssä tarvitaan ohjelmiston kääntämiseksi Visual C++ kääntäjä (saattaa toimia muillakin). Windows -95 versio sisältää ohjelmiston mukana kuvien katseluoption. Unix -versioon ei sisälly kuvankatseluoptiota, joten siihen tarvitaan erillinen ohjelma esim. XView.

Ohjelmiston testaus tapahtuu yksinkertaisesti siten, että kuviin kätketään sanoma ja se luetaan sieltä pois. Sanoman tulee säilyä täsmälleen samanlaisena kuin alkuperäinen, kätketty sanoma. Unixissa sanomia voidaan verrata esim. diff -komennolla. Kun kuvaan on kätketty sanoma, on hyvä tarkistaa, ettei kuvaan tule visuaalisesti huomattavaa muutosta.

4. Järjestelmän komponentit

Kaikki ohjelmiston toimintaan tarvittavat osat toimitetaan yhdessä paketissa. Siten siihen sisältyvät myös Crypto++ 2.1 ja JPEG -kirjastot.

Stegano -ohjelmistoon kuuluvat tiedostot.

Ohjelmiston toimintoja on kuvattu toiminnallisessa määrittelyssä.

5. Ylläpitotehtävät

Ohjelmiston asennus:

Ohjelmiston asennus on melko helppoa. Seuraavassa kuvaus ohjelmiston asennuksen vaiheista.

Ohjelmistoa ei jatkokehitetä työryhmän puolesta eikä ohjelmistolle anneta minkäänlaista käyttötukea. Siten myöskään ohjelmistosta ei ole tulossa päivityksiä. Bugeista voi kuitenkin lähettää tietoja työryhmälle, mutta niille ei luvata tehtävän mitään.

6. Ohjelmiston kuvaus

Stegano -kirjasto on pyritty tekemään mahdollisimman modulaariseksi. Tämän vuoksi uusien ominaisuuksien lisääminen kirjastoon on melko helppoa. Kirjastoon voidaan lisätä uusia salausalgoritmeja, pakkausalgoritmejä, valinta-algoritmejä ja uusia kuvaformaatteja tekemättä muutoksia varsinaiseen kirjaston runkoon. Lisäksi uusien toteutettujen ominaisuuksien liittäminen jo olemassa olevien ominaisuuksien kanssa on vaivatonta.

Jotta ohjelmiston tiedostorakenne säilyisi selkeänä, kannattaa tiedostot jakaa samalla tavalla hakemistoihin kuin ne nyt ovat. Uudet valinta-algoritmit kannattaa laittaa selectors -hakemistoon, uudet kuvaformaatit omiin hakemistoihinsa jne.

Ohjelman koodin pitäisi olla melko helppolukuista. Siten uusia ominaisuuksia lisättäessä kannattaa vastaavaa koodia katsoa valmiista ohjelmasta. Kuvaformaateille selkein esimerkki lienee PGM. Varsinkin JPEG sisältää joitakin erikoisuuksia johtuen käytetetystä JPEG -kirjastosta, joten se ei välttämättä anna hyvää kuvaa millainen kuvaformaatin käsittelyn periaate on.

Seuraavassa on viitteitä muiden ohjelmiston dokumenttien osiin, jotka helpottavat ohjelmiston rakenteen ja riippuvuuksien ymmärtämistä.

Tiedon kulku eri osien välillä.
Kirjaston rakenne.
Moduli- ja prosessikuvaus.
Luokkien ja metodien kuvaus.