http://www.hut.fi/~tjunttil/oht/documents/vm.html
Viimeksi päivitetty Oct 29 02:56 1996.
1. Johdanto
2. Yleiskuvaus
3. Toiminnot
4. Ulkoiset liittymät
5. Muut ominaisuudet
6. Laatusuunnitelma
Luvussa 2 "Yleiskuvaus" kuvataan järjestelmän liittymät ympäristöön sekä käyttäjät ja käyttöympäristö. Kerrotaan lyhyesti ohjelman toimintaperiaatteet siihen liityvine käsitteineen. Kuvataan yleiset rajoiteet.
Luvussa 3 "Toiminnot" kuvataan järjestelmältä vaadittavat toiminnot yleisellä tasolla, esimerkiksi kuinka käyttäjä käyttää ohjelmistoa.
Luvussa 4 "Ulkoiset liittymät" kuvataan ohjelmiston käyttöliittymää tarkemmin eri vaihtoehdoilla. Lisäksi kuvataan ohjelmakirjaston liittymä.
Luvussa 5 "Muut ominaisuudet" kuvataan ohjelmakirjaston ei-toiminnallisia ominaisuuksia, kuten mitä algoritmejä ohjelmakirjasto vähintään sisältää ja kuinka ohjelmakirjasto tulee ohjelmoida.
Luvussa 6 "Laatusuunnitelma" kuvataan asiakkaan asettamia vaatimuksia ohjelmiston laadulle ja projektin päätavoitteille.
Lisäksi ohjelmakirjaston päälle rakennetaan käyttöliittymät, joiden avulla mahdollistetaan kirjaston helppo käyttö. Projektin pääpaino on kuitenkin ohjelmakirjaston kehityksessä.
Ohjelmiston tarkoituksena on toimia kokeiluvälineenä tutkimustyössä sekä osoittaa tiedon siirron täydellisen valvomisen olevan teknisesti mahdotonta.
Sellainen peitetiedoston kohinainen bitti, johon salainen viesti kätketään. Kaikki kohinaiset bitit eivät ole välttämättä kätkentäbittejä.
Tiedosto, johon salainen viesti kätketään. Tiedoston täytyy sisältää kohinaa, johon salainen viesti kätketään.
Peitetiedosto kätkennän jälkeen, eli viesti, joka kuljettaa kätkettyä salaista viestiä.
Kätkennässä käytetään apuna salaista avainta (secret key), jonka täytyy olla sekä lähettäjän että vastaanottajan, muttei muiden tiedossa. Käytetyn kätkentämenetelmän tulee olla sellainen, ettei turvatonta kanavaa mahdollisesti kuunteleva tunkeilija (suspicious agent) saatuaan kätköviestin (stego message) käsiinsä pysty edes todistamaan, että siihen on kätketty jotain.
Tässä projektissa tehtävä ohjelmisto on itse tiedon kätkemisen suorittava ohjelmisto. Ohjelmisto soveltaa valittavia algoritmejä salaiseen viestiin ja peiteviestiin salaisen avaimen avulla tuottaen tuloksena kätköviestin. Keino, jolla kätköviesti siirretään lähettäjältä vastaanottajalle, ei ole tämän projektin tai ohjelmiston kannalta oleellinen. Ohjelmisto ilmenee kuvassa 1 laatikoina Hiding ja Extracting. Myöskään salaisen avaimen siirto lähettäjältä vastaanottajalle ei ole ohjelmiston alueeseen kuuluva asia.
Ohjelmiston rakenne on esitetty kuvassa 2. Projektin päätavoite, eli kätkemiseen tarvittavat algoritmit ja peitetiedoston käsittelyyn tarvittavat funktiot on toteutettu ohjelmakirjastona (library). Ohjelmistoon toteutettavat käyttöliittymät käyttävät tätä kirjastoa apunaan suorittaessaan käyttäjän antamia toimenpiteita.
Kätkentäalgoritmin looginen rakenne on esitetty kuvassa 3:
Ohjelmakirjaston päälle rakennetaan lisäksi käyttöliittymät UNIX- ja Windows95 ympäristöihin. Nämä käyttöliittymät ovat kuiten toissijaisia ohjelmakirjaston toteutukseen verrattuna.
Ohjelmakirjaston (kuva 3) tulee tarjota salaisen viestin kätkemiseen liittyvät toiminnot (kts. luku "Yleiskuvaus").
Ohjelmistoon rakennettava käyttöliittymä on
Komentoriviliittymä, jolloin kätkemiseen vaikuttavat valinnat (eri vaiheiden algoritmit yms.) annetaan komentoriviltä ohjelman optioina. Syöte ja tulostus voivat olla joko tiedostoja tai tietovirtoja (esim. standard input ja standard output).
Graafinen liittymä, jolloin ohjelmaa ohjataan Windows95-käyttöliittymän graafisten symbolien (painonapit, valikot, yms.) avulla. Syöte ja tulostus ovat tiedostoja.
Käyttöliittymä on projektin kannalta toissijainen, tärkeintä on määritellä ja toteuttaa ohjelmakirjasto hyvin. Käyttöliittymä toteutetaan kahteen eri ympäristöön, jotta kirjaston yleiskäyttöisyys ja siirrettävyys tulee todettua.
Uusien algoritmien ja peitetiedostoformaattien lisäyksen tulee olla helppoa.
Vähintään: 8- ja 24-bittiset raakakuvat, GIF, JPG, BMP, PGM
Vähintään: pseudorandom interval method, pseudorandom permutation
Jokin Keystream generator, esimerkiksi DES, SHA tai jokin muu
Jokin Pseudorandom function, esimerkiksi KeyedSHA tai jokin muu
Toimivuus nähdään testaamalla. Algoritmit ovat luonteeltaan sellaisia, että niitä on jopa mahdoton testata ennen kuin ne toimivat kokonaan.
Tilaajalla on kokemuksia siitä, miten hankalaa steganografisen algoritmin debuggaus on. Kätketyistä tiedoista on nimittäin erittäin vaikea nähdä, mikä meni vikaan. Vertauksena voisi sanoa, että ohjelma on taika, joka muuttaa tiedot näkymättömäksi. Jos näkymättömyystaian tekee oikein, saa tiedot takaisin näkyviksi tekemällä vastaavan näkyvyystaian. Jos näkymättömyystaian tekee vahingossa väärin, ei kukaan tiedä, miten tiedot saa takaisin näkyviksi. Eikä myöskään ole mahdollista katsoa, mikä näkymättömissä tiedossa on vialla, koska ne ovat näkymättömiä.
Formaatti määritellään suunnitteluvaiheessa ja sitä noudatetaan mahdollisuuksien mukaan ensimmäisestä prototyypistä alkaen. Jos formaattia ei tarvitse muuttaa prosessin aikana, on se suunniteltu hyvin. Todennäköisesti jonkin verran muutostarvetta, kuitenkin tulee, jolloin formaattia voidaan karttuvien kokemusten perusteella parantaa. Hyvän ja pitkäikäisen tiedostoformaatin suunnittelu on tunnetusti vaikea tehtävä.
Kirjasto siirretään ja käyttöliittymä toteutetaan 2 eri käyttöjärjestelmäympäristöön eri tekniikoilla, jotta siirrettävyys tulee varmasti todettua.
Kaikista parametrisoitavista algoritmeista toteutetaan kirjastoon vähintään kaksi vaihtoehtoa. Näin ohjelman rakenne tulee varmasti suunniteltu sellaiseksi, että algoritmeja voi olla useita.
Täydellistä dokumentaatiota ei ole mahdollista tehdä. Käyttöohjeiden ja selkeän käyttöliittymän perusteella alaa tuntevan henkilön pitää pystyä käyttämään ohjelmistoa turvallisesti. Järjestelmäkäsikirjan ja selkeän koodin perusteella kirjallisuuslähteisiin huolellisesti tutustuneen henkilön pitää pystyä ymmärtämään ohjelmiston toiminta ja muuttamaan sitä tarpeidensa mukaan.
Selviää testaamalla. Bugiraportteja käyttäjiltä ole julkaisun jälkeen juurikaan odotettavissa, sillä ne joilla on tarve kätkeä tietoa, tuskin haluavat kertoa siitä.