Tik-76.115 Projektisuunnitelma

Stegano

http://
Viimeksi päivitetty .


Sisällysluettelo

1. Johdanto
2. Projektin vaiheistus
3. Resurssi- ja aikasuunnitelma
4. Työmenetelmät ja työnjako
5. Ohjaussunnitelma


1. Johdanto

1.1 Yleiskuvaus projektista

Työ liittyy TKK:ssa tehtävään tietoturvajärjestelmien tutkimukseen, jossa eräänä osa-alueena on tiedon kätkeminen ja salakuljettaminen suojausten läpi. Tuloksilla on enemmän periaatteellista merkitystä kuin suoria käytännön sovelluksia. Tiedon kätkemisellä on vaikutusta mm. siihen, miten tiedon kulkua ja salakirjoituksen käyttöä pystytään säätelemään organisaation sisäisillä säännöillä tai lainsäädännöllä.

1.2. Projektin tavoite

Tavoitteena on laatia ohjelmisto, jolla kätketään salaisia sanomia kohinaa sisältäviin digitoituihin kuviin. Käyttäjän kannalta valmis tuote muistuttaa salakirjoitusohjelmistoa. Salaisen sanoman lähettäjä kätkee sanoman esim. digitaalisella kameralla ottamaansa kuvaan salaisen avaimen (salasanan) avulla. Vastaanottaja, joka tuntee avaimen, pystyy lukemaan sanoman kuvasta, mutta muut eivät kykene havaitsemaan sanoman olemassaoloa. Kätkemiseen käytetään kryptografisesti vahvoja menetelmiä toisin kuin useimmissa aiemmissa vastaavissa ohjelmistoissa. Käyttäjä voi lisäksi valita käytettävät salaus- ja kätkemisalgoritmit sekä kätkemiseen käytetyn digitoidun kuvan formaatin.

Ohjelmistolla on kaksi tarkoitusta: osoittaa algoritmien toimivuus käytännössä ja vertailla vaihtoehtoisten menetelmien toimintaa. Ohjelmistosta laaditaan käyttöliittymä kahteen eri käyttöjärjestelmäympäristöön: UNIX-komentoriviliittymä ja graafinen Windows95-liittymä.

1.3. Projektiryhmä

email: stegano@hut.fi
homepage: http://www.hut.fi/~tjunttil/oht/

Tommi Liittokivi

Tommi Junttila

Vesa Peltola

Lasse Huovinen

Tuomas Aura

1.4 Ohjelmiston oikeudet

Valmis ohjelmisto tulee olemaan Public Domain -tyyppinen ja se tulee olemaan vapaasti levitettävissä ja kopioitavissa.

2. Projektin vaiheistus

2.1. Projektin suunnittelu

Projektin suunnitteluvaiheen aikana projekti perustetaan ja se organisoi toimintansa. Lisäksi työhön liittyviä ongelmia analysoidaan niin pitkälle, että laadittava järjestelmä ja sen toteutus voidaan kohdistaa ja mitoittaa oikein. Tähän liittyen selvitetään ja kuvataan ohjelmiston toiminnot ja toteutukselle asetettavat vaatimukset ja rajoitukset. Ohjelmiston vaatimusmäärittely perustuu pitkälti projektin tilaajan asettamiin vaatimuksiin.

Raportit:
1. Ilmoittautumislomake
2. Projektisuunnitelma
3. Vaatimusmäärittely

2.2. Määrittely

Määrittelyvaiheessa ongelmaan liittyvät toiminnot, tiedot ja niiden väliset riippuvuudet selvitetään ja kuvataan. Koko ryhmä tutustuu tiedon salaamiseen ja kätkemiseen liittyviin algoritmeihin ja teorioihin tiiviissä yhteistyössä projektin ohjaajan kanssa. Lisäksi määritellään käyttöliittymiltä vaadittavat toiminnot. Projektin aiheen luonteen takia tässä projektissa esitutkimusvaihe on suhteellisen laaja osa-alue.

Raportit:
1. Tarkennettu projektisuunnitelma
2. Tarkennettu vaatimusmäärittely
3. Toiminnallinen määrittely
4. Edistymisraportti

2.3. Suunnittelu

Suunnitteluvaiheessa tehdään ohjelman eri modulien rajapintojen yksityiskohtainen suunnittelu ja dokumentointi. Ohjelman rakennetta suunniteltaessa luodaan ohjelmamodulien väliset tietovuokaaviot ja OMT-mallit.

Kuvaformaatteihin ja niihin liittyviin kätkemisalgoritmeihin tutustumista jatketaan. Tämä pätee erityisesti JPG-formaattiin joka lisätään ohjelmaan seuraavassa vaiheessa.

Suunnitteluvaiheessa tehdään alustava prototyyppi UNIX-ympäristöön. Prototyyppi osaa käsitellä vain yhtä kuvaformaattia (PGM) ja tukee vain sen oletusarvoisia algoritmeja.

Windows-käyttöliittymän kehitettäminen aloitetaan myös tässä vaiheessa, mutta toimiva käyttöliittymä on tarkoitus saada aikaan vasta seuraavassa vaiheessa.

Valmiita kirjastoja muokataan tarvittaessa projektia varten sopiviksi.

Suunnitteluvaiheessa tuotetaan lisäksi testaussuunnitelma järjestelmän toimivuuden tarkastamiseksi ja mahdollisten virheiden havaitsemiseksi.

Raportit:
1. Tarkennettu projektisuunnitelma
2. Tarkennettu vaatimusmäärittely
3. Tarkennettu toiminnallinen määrittely
4. Tekninen määrittely
5. Testaussuunnitelma
6. Edistymisraportti

2.4. Prototyyppi 1

Edellisessä vaiheessa tehtyä prototyyppiä laajennetaan lisäämällä yksi uusi kuvaformaatti (JPEG). Tässä prototyypissä käyttäjällä on lisäksi jo mahdollisuus valita halututtu kätkemisalgoritmi, satunnaislukugeneraattori ja salaisen viestin esikäsittelytapa.

Windows-käyttöliittymästä tehdään ensimmäinen toimiva versio joka sisältää kaikki perustoiminnot: peitetiedoston valinta, salattavan tiedoston valinta, avaimen syöttö sekä kaikki optiot. UNIX-käyttöliittymä hiotaan jo lopulliseen muotoonsa.

Prototyyppiä testataan ja palautetaan testiraportti suoritetuista testeistä ja niiden tuloksista.

Kuvaformaatteihin tutustumista jatketaan edelleen. Erityisesti eri kuvaformaateissa käytettäviä kätkemisalgoritmeja on tutkittava asiakkaan kanssa.

Tässä vaiheessa myös kirjoitetaan käyttöohjeet UNIX ja Windows käyttöliittymille.

Raportit:
1. Tarkennettu projektisuunnitelma
2. Tarkennettu vaatimusmäärittely
3. Tarkennettu toiminnallinen määrittely
4. Tarkennettu tekninen määrittely
5. Tarkennettu testaussuunnitelma
6. Testiraportti
7. Käyttöohje
8. Edistymisraportti

2.5. Prototyyppi 2

Viimeistellään keskenjääneen JPEG-kuvaformaatin lisääminen kirjastoon.

Lisätään GIF- kuvaformaatti ja loput halutuista algoritmeista: gzip-pakkausalgoritmi sekä kätköbittien valinta-algoritmit RandomIndexArray ja RandomIndexTable.

Windows-käyttöliittymä rukataan toimintakuntoon ja ulkoasu viimeistellään lopulliseen muotoonsa.

Tehdään ylläpito-raportti jossa kuvataan käytetyt työkalut ja järjestelmän komponentit.

Käydään aikaisemmat dokumentit huolellisesti läpi ja viimeistellään ne lopulliseen kuntoon.

Lopuksi valmis ohjelmisto testataan perusteellisesti ja palautetaan tarkennettu testiraportti suoritetuista testeistä ja niiden tuloksista.

Raportit:
1. Tarkennettu projektisuunnitelma
2. Tarkennettu vaatimusmäärittely
3. Tarkennettu toiminnallinen määrittely
4. Tarkennettu tekninen määrittely
5. Tarkennettu testaussuunnitelma
6. Tarkennettu testiraportti
7. Tarkennettu käyttöohje
8. Ylläpito-ohje
9. Edistymisraportti

2.6. Luovutus

Lisätään JPEG-tuki myös Windows-käyttöliittymään.

Korjataan testauksessa ilmenneet ja vielä korjaamatta olevat virheet.

Kirjoitetaan loppuraportti jossa käydään läpi projektin vaiheita ja arvioidaan tehtyjä ratkaisuja.

Demonstraatiossa osoitetaan järjestelmän toimivuus, ja valmis ohjelmisto luovutetaan asiakkaalle.

Raportit:
1. Tarkennettu projektisuunnitelma
2. Tarkennettu vaatimusmäärittely
3. Tarkennettu toiminnallinen määrittely
4. Tarkennettu tekninen määrittely
5. Tarkennettu testaussuunnitelma
6. Tarkennettu testiraportti
7. Tarkennettu käyttöohje
8. Tarkennettu ylläpito-ohje
9. Loppuraportti

2.7. Jälkihoito

Tämän projektin tuloksena syntyy valmis ohjelmisto, ja projektille ei ole määritelty mitään jatkosuunnitelmia.

3. Resurssi- ja aikasuunnitelma

3.1. Koko projekti

Koko projekti pyritään viemään läpi 800 tunnin työmäärällä (200h/hlö). Työmäärä jakautuu tasaisesti koko projektin ajalle poislukien jouluna pidettävä kahden viikon joululoma (21.12.96 - 5.1.97). Myös satunnaisia muista työ- tai koulukiireistä johtuvia vapaita kukin ryhmän jäsen voi oman harkintansa mukaan pitää, kuitenkin siten, että niistä ei ole haittaa projektin aikataulussa pysymiselle.

Koska projektia varten ei tarvitse tehdä uusia laitehankintoja, ainoat projektista johtuvat kustannukset ovat työkustannukset. Näin ollen projektin budjetoidut kulut ovat 800h x 100mk/h x 1.88 = 150 400mk.

Seuraavassa taulukko suunnitelluista työtunneista:

Tommi LTommi JVesa PLasse HYhteensä
PS10 15 15 10 50 
30 30 25 40 125 
SU55 75 35 60 225 
P145 45 70 40 200 
P250 30 50 45 175 
LU10 25 
Yhteensä200 200 200 200 800 

Suunitellut tuntimäärien jakaumat perustuvat työntekijöiden roolijakoon (ks. luku 4.5. Jäsenten roolit ja tehtäväjako).

3.2. Projektin suunnittelu

Seuraavassa taulukossa on esitetty projektin suunnitteluvaiheen jakautuminen eri työvaiheisiin ja niissä kuluneet työmäärät tunteina:

Tommi L Tommi J Vesa P Lasse H Yhteensä
Projektin käynnistäminen
Aiheeseen tutustuminen11 
Asiakastapaamiset20 
Dokumenttien laatiminen18 

3.3. Määrittely

Seuraavassa taulukossa on määrittelyvaiheen jako eri työvaiheisiin ja arvioidut työtunnit:

Tommi L Tommi J Vesa P Lasse H Yhteensä Toteutunut Erotus
Menetelmiin tutustuminen20 24 19 30 93   
Asiakastapaamiset20   
Dokumenttien laatiminen12   

3.4. Suunnittelu

Seuraavassa taulukossa on suunnitteluvaiheen jako eri työvaiheisiin ja arvioidut työtunnit:

Tommi L Tommi J Vesa P Lasse H Yhteensä Toteutunut Erotus
Asiakastapaamiset12 12 
Rajapintojen suunnittelu10 12 40 28 -12 
Prototyypin koodaaminen20 30 10 66 50 -16 
Käyttöliittymäkehitys16 12 -4 
Kuvaformaattien yksityiskohtiin tutustuminen15 31 21 -10 
Sopivien algoritmi/formaattikirjastojen hankinta-2 
Kirjastojen muokkaaminen sopiviksi projektia varten10 10 25 -17 
Tietovuokaavioiden piirtäminen13 -11 
Dokumenttien laatiminen16 32 16 

Ryhmän eri jäsenet käyttävät hyvin erilaiset ajat projektiin suunnitteluvaiheessa. Rajapintojen suunnittelussa kaikki ovat mukana, koska on hyvin tärkeää, että rajapinnat saadaan määriteltyä oikein ja kenelläkään ei ole epäselvyyksiä niiden suhteen. Muihin tehtäviin käytettävät ajat vaihtelevat jäsenen roolin mukaan. Suunnitteluvaiheessa käytetään jo paljon aikaa koodaamiseen, koska projektin onnistumisen kannalta on tärkeää tietää mitkä algoritmit toimivat ja mitkä osoittautuvat mahdottomiksi. Siten tarvitaan jossain määrin toimiva prototyyppi, jolla toimivuutta voidaan testata. Kuvaformaattien tarkan toiminnan selvittäminen vie todennäköisesti paljon aikaa. Myös apuna käytettävien kirjastojen muokkaamisessa sopivaan kuntoon projektin kannalta menee melkoisesti aikaa. Käyttöliittymän kehitys aloitetaan jo nyt, mutta siihen ei panosteta vielä kovin voimakkaasti.

3.5. Prototyyppi 1

Seuraavassa taulukossa on prototyyppi 1 -vaiheen jako eri työvaiheisiin ja arvioidut työtunnit:

Tommi L Tommi J Vesa P Lasse H Yhteensä Toteutunut Erotus
Asiakastapaamiset16 16 
Prototyypin koodaaminen10 30 10 50 54 +4 
Käyttöliittymäkehitys10 50 60 60 
Kuvaformaattien yksityiskohtiin tutustuminen15 30 20 -10 
Testaaminen20 -16 
Käyttöohjeiden kirjoittaminen-3 
Muiden dokumenttien laatiminen10 15 21 +6 

Vaiheen suurimmat urakat ovat Windows- käyttöliittymän toteutus ja monimutkaisen JPEQ-peitetiedostoformaatin lisääminen. Näitä voidaan kehittää rinnakkain, sillä jo toteutetussa alpha-prototyypissä on steganograafisen kirjaston ja käyttöliittymän välinen rajapinta valmis ja näinollen sitä voidaan käyttää windows-käyttöliittymän rakentamisen apuna.

Testaaminen suoritetaan vaiheen loppupuolella, kun käyttöliittymät ja kirjastot ovat vaiheen tavoitteiden mukaisia.

3.6. Prototyyppi 2

Seuraavassa taulukossa on prototyyppi 2 -vaiheen jako eri työvaiheisiin ja arvioidut työtunnit:

Tommi L Tommi J Vesa P Lasse H Yhteensä Toteutunut Erotus
Asiakastapaamiset20 -17 
Prototyypin koodaaminen35 40 30 40 145 195 +50&#;
Käyttöliittymäkehitys-2 
Testaaminen20 13 -7 
Dokumenttien laatiminen20 10 40 24 -16 

3.7. Luovutus

Seuraavassa taulukossa on luovutus-vaiheen jako eri työvaiheisiin ja arvioidut työtunnit:

Tommi L Tommi J Vesa P Lasse H Yhteensä Toteutunut Erotus
Asiakastapaamiset16 -16 
Prototyypin koodaaminen10 15 10 40 72 +32 
Testaaminen10 -2 
Dokumenttien laatiminen10 20 60 +40 

Vaiheen alussa TL ja LH keskittyvät JPEG-tuen lisäämiseen Windows-käyttöliittymään. TJ ja VP etsivät ja korjaavat yhteensopivuustesteissä löydetyn virheen. Lopuksi suoritetaan vielä testaus niiltä osin kuin se on tarpeellista ja kirjoitetaan tarvittavat dokumentit.

3.8. Kustannusarvio

Koska korkeakoulu tarjoaa ohjelmiston kehityksessä tarvittavat laitteet ja ohjelmat käyttöömme, ja ohjelmistossa käytetään ns. "public domain"-tyyppisiä kirjastoalgoritmejä, koostuvat projektin kokonaiskustannukset pelkästään työkustannuksista. Täten koko projektin kustannusarvioksi tulee 150 400mk. (Tarkempi budjetti kohdassa 3.1.)

4. Työmenetelmät ja työnjako

4.1. Työkalut ja laitteistot

Ohjelmisto kehitetään korkeakoulun ATK-keskuksen koneissa, ja sen kehittämiseen käytetään koneissa valmiina olevia ohjelmistoja ja kirjastoja.

Ohjelmat kirjoitetaan C++/C -kielellä, ja niiden kääntäminen ja linkitys hallitaan MAKE-työkalulla. Kääntäjänä käytetään g++ -kääntäjää ja debuggerina gdb-ohjelmaa. Ohjelmakoodi ja dokumentit kirjoitetaan Emacs/XEmacs -editoreilla. Varsinaista projektinhallintatyökalua ei käytetä, mutta ohjelmiston eri versiot talletetaan omiin hakemistoihinsa.

Windows95-käyttöliittymä kehitetään Visual C++ -ohjelmistolla.

4.2. Dokumentointimenetelmät

Kurssin vaatimat dokumentaatiot kirjoitetaan WWW:hen suomeksi.

Ohjelmakoodi kirjoitetaan ja kommentoidaan englanniksi, ja kommentointi pyritään suorittamaan siten, että erillistä ohjelman toimintadokumentaatiota ei tarvita. Lisäksi ohjelman käyttöohjeet, man-sivu ja laitteistovaatimusspesifikaatiot kirjoitetaan englanniksi.

Projektipäällikkö antaa ohjeet dokumenttien formaateista, ja tarkistaa jokaisen dokumentin ennen hyväksymistä.

Kaikki ns. "epäviralliset" dokumentit (käsin kirjoitetut luonnokset ym.) talletetaan projektiarkistoon.

4.3. Työmenetelmät

Ryhmä pitää vähintään yhden kokouksen työn tilaajan kanssa projektin jokaisen työvaiheen alkaessa ja päättyessä. Ryhmä kokoontuu keskenään noin kerran viikossa riippuen kulloisesta työtilanteesta.

Jokainen ryhmän jäsen kirjaa ylös käyttämänsä työajan. Työajat summataan ja kirjataan ryhmän omissa palavereissa.

Ryhmän sisäinen tiedonkulku hoidetaan pääasiassa sähköpostitse. Kiireellisissä tilanteissa voidaan käyttää puhelinta tai jopa henkilökohtaista kommunikointia.

4.4. Riskien hallinta

Suurimpia ongelmia projektin edetessä voivat aiheuttaa valmiiden kirjastojen käännösongelmat ja laitteistoriippuvuudet. Tämä pyritään ehkäisemään hankkimalla mahdollisimman paljon tietoa eri kirjastoista etukäteen. Monista algoritmeistä on monia eri versioita, joiden laitteistoriippuvuusominaisuudet saattavat poiketa toisistaan. Tämän takia on tärkeää tutustua eri versioihin ennen kuin mukaanotettava versio valitaan.

4.5. Jäsenten roolit ja tehtävänjako

Projektipäällikkö: Tommi Liittokivi
- Projektin koordinaattori
- Varaa ryhmän sisäiset tapaamisajat ja -paikat
- Valvoo projektin aikataulussa pysymistä

Algoritmisuunnittelija: Tommi Junttila
- Tutustuu algoritmikirjastojen oikeellisuuteen ja yhteensopivuuteen
- Suunnittelee ohjelman tarvitsemat algoritmit
- Asiakkaan yhteyshenkilö

Käyttöliittymäsuunnittelija: Vesa Peltola
- Suunnittelee käyttöliittymät

Kuvatiedostoformaattiasiantuntija: Lasse Huovinen
- Tutustuu eri kuvatiedostoformaatteihin
- Osallistuu kuviin liittyvien algoritmien suunnitteluun

Koska tässä työssä esitutkimuksen tarve on varsin suuri, joutuu jokainen työryhmän jäsen roolistaan riippumatta tutustumaan laajasti aiheen vaatimiin formaatteihin ja algoritmeihin. Roolijako on lahinnä vastuutusjako; Varsinaiseen suunnittelu- ja koodaustyöhön jokainen ryhmän jäsen osallistuu.

4.6. Lähdeluettelo

- Kurssiesite
- Aihe-esite
- Bruce Schneier. Applied Cryptography. 2.p. John Wiley & Sons, Inc. 1996.
- Tuomas Aura. Practical invisibility in digital communication, Workshop on Information Hiding, University of Cambridge, May 1995.
- Maxwell T. Sandford II, Jonathan N Bradley, and Theodore G. Handel. The data embedding method. In Proceeding of the SPIE Photonics East Conference, Philadelphia, September 1995.
- Michael Luby and Charles Rackoff. How to construct pseudorandom permutations from pseudorandom functions. SIAM Journal on Computing, 17(2):373-386, April 1988.
- Steffen Möller, Andreas Pfizmann, and Ingo Stierand. Rechnergstutzte Steganographie: Wie sie funktioniert und warum folglich jede Reglementierung von Verschlusselung unsinnig ist. Dateschultz und Datensicherung, (6):318-326, June 1994.

5. Ohjaussuunnitelma

5.1. Projektin tilan seuranta

Projektin aikataulussa pysymistä ja tulosten laatua pohditaan jokaisessa ryhmän sisäisessä palaverissa. Mahdollisten ongelmatilanteiden jälkeen pidetään kokous, jossa pohditaan mistä ongelma johtui ja miten vastaava tilanne on ehkäistävissä tulevaisuudessa.

Tulosten laatutarkastelu otetaan myös aiheeksi tilaajan kanssa käydyissä kokouksissa.

5.2. Aikataulu

Projekti seuraa tiiviisti kurssin aikataulua, kuitenkin siten että kunkin vaiheen tulokset pyritään saamaan valmiiksi viikkoa ennen kurssin vastaavaa ajankohtaa. Tällöin ryhmä pitää ns. vaiheen päättöpalaverin, jossa varmennetaan kaikkien vaiheessa vaadittavien töiden ja raporttien oikeellisuus. Jos jossakin vaiheen osa-alueessa on jotain korjattavaa, niin korjaukseen on aikaa vielä viikko.

Ryhmän sisäiset kokouksia pidetään noin kerran viikossa ja työn tilaajan kanssa pidetään palaveri jokaisen vaiheen alkaessa ja päättyessä. Tarkemmat palaveriajat sovitaan erikseen kyseisen ajankohdan lähestyessä.

Seuraavassa lista projektin tärkeimmistä vaiheista:

- 01.10.96: Projektin suunnittelun päättöpalaveri
- 22.10.96: Määrittely-vaiheen päättöpalaveri
- 19.11.96: Suunnittelu-vaiheen päättöpalaveri (ensimmäinen prototyyppi valmis)
- 29.01.97: Prototyyppi I valmis, testaaminen alkaa
- 04.02.97: Prototyyppi I:n päättöpalaveri
- 04.03.97: Prototyyppi II valmis, testaaminen alkaa
- 11.03.97: Prototyyppi II:n päättöpalaveri
- 25.04.97: Luovutus