http://
Viimeksi päivitetty .
1. Johdanto
2. Projektin vaiheistus
3. Resurssi- ja aikasuunnitelma
4. Työmenetelmät ja työnjako
5. Ohjaussunnitelma
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ä.
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ä.
email: stegano@hut.fi
homepage:
http://www.hut.fi/~tjunttil/oht/
Valmis ohjelmisto tulee olemaan Public Domain -tyyppinen ja se tulee olemaan vapaasti levitettävissä ja kopioitavissa.
Raportit:
1. Ilmoittautumislomake
2. Projektisuunnitelma
3. Vaatimusmäärittely
Raportit:
1. Tarkennettu projektisuunnitelma
2. Tarkennettu vaatimusmäärittely
3. Toiminnallinen määrittely
4. Edistymisraportti
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
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
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
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
Tämän projektin tuloksena syntyy valmis ohjelmisto, ja projektille ei ole määritelty mitään jatkosuunnitelmia.
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 L | Tommi J | Vesa P | Lasse H | Yhteensä | |
---|---|---|---|---|---|
PS | 10 | 15 | 15 | 10 | 50 |
MÄ | 30 | 30 | 25 | 40 | 125 |
SU | 55 | 75 | 35 | 60 | 225 |
P1 | 45 | 45 | 70 | 40 | 200 |
P2 | 50 | 30 | 50 | 45 | 175 |
LU | 10 | 5 | 5 | 5 | 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).
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 | 2 | 2 | 2 | 2 | 8 |
Aiheeseen tutustuminen | 3 | 3 | 2 | 3 | 11 |
Asiakastapaamiset | 5 | 5 | 5 | 5 | 20 |
Dokumenttien laatiminen | 3 | 7 | 7 | 1 | 18 |
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 tutustuminen | 20 | 24 | 19 | 30 | 93 | ||
Asiakastapaamiset | 5 | 5 | 5 | 5 | 20 | ||
Dokumenttien laatiminen | 5 | 1 | 1 | 5 | 12 |
Seuraavassa taulukossa on suunnitteluvaiheen jako eri työvaiheisiin ja arvioidut työtunnit:
Tommi L | Tommi J | Vesa P | Lasse H | Yhteensä | Toteutunut | Erotus | |
---|---|---|---|---|---|---|---|
Asiakastapaamiset | 3 | 3 | 3 | 3 | 12 | 12 | 0 |
Rajapintojen suunnittelu | 10 | 12 | 9 | 9 | 40 | 28 | -12 |
Prototyypin koodaaminen | 20 | 30 | 6 | 10 | 66 | 50 | -16 |
Käyttöliittymäkehitys | 3 | 3 | 7 | 3 | 16 | 12 | -4 |
Kuvaformaattien yksityiskohtiin tutustuminen | 6 | 7 | 3 | 15 | 31 | 21 | -10 |
Sopivien algoritmi/formaattikirjastojen hankinta | 0 | 3 | 0 | 3 | 6 | 4 | -2 |
Kirjastojen muokkaaminen sopiviksi projektia varten | 4 | 10 | 1 | 10 | 25 | 8 | -17 |
Tietovuokaavioiden piirtäminen | 5 | 2 | 1 | 5 | 13 | 2 | -11 |
Dokumenttien laatiminen | 4 | 5 | 5 | 2 | 16 | 32 | 16 |
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 | |
---|---|---|---|---|---|---|---|
Asiakastapaamiset | 4 | 4 | 4 | 4 | 16 | 16 | 0 |
Prototyypin koodaaminen | 10 | 30 | 0 | 10 | 50 | 54 | +4 |
Käyttöliittymäkehitys | 10 | 0 | 50 | 0 | 60 | 60 | 0 |
Kuvaformaattien yksityiskohtiin tutustuminen | 5 | 5 | 5 | 15 | 30 | 20 | -10 |
Testaaminen | 5 | 5 | 5 | 5 | 20 | 4 | -16 |
Käyttöohjeiden kirjoittaminen | 1 | 0 | 4 | 4 | 9 | 6 | -3 |
Muiden dokumenttien laatiminen | 10 | 1 | 2 | 2 | 15 | 21 | +6 |
Testaaminen suoritetaan vaiheen loppupuolella, kun käyttöliittymät ja kirjastot ovat vaiheen tavoitteiden mukaisia.
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 | |
---|---|---|---|---|---|---|---|
Asiakastapaamiset | 5 | 5 | 5 | 5 | 20 | 3 | -17 |
Prototyypin koodaaminen | 35 | 40 | 30 | 40 | 145 | 195 | +50 |
Käyttöliittymäkehitys | 0 | 0 | 5 | 0 | 5 | 3 | -2 |
Testaaminen | 5 | 5 | 5 | 5 | 20 | 13 | -7 |
Dokumenttien laatiminen | 20 | 10 | 5 | 5 | 40 | 24 | -16 |
Seuraavassa taulukossa on luovutus-vaiheen jako eri työvaiheisiin ja arvioidut työtunnit:
Tommi L | Tommi J | Vesa P | Lasse H | Yhteensä | Toteutunut | Erotus | |
---|---|---|---|---|---|---|---|
Asiakastapaamiset | 4 | 4 | 4 | 4 | 16 | 0 | -16 |
Prototyypin koodaaminen | 5 | 10 | 15 | 10 | 40 | 72 | +32 |
Testaaminen | 5 | 0 | 5 | 0 | 10 | 8 | -2 |
Dokumenttien laatiminen | 10 | 5 | 0 | 5 | 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.
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.)
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.
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.
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.
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.
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.
- 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.
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.
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