Tik-76.115 Vaatimusmäärittely

Tiedon kätkeminen

http://
Viimeksi päivitetty .


Sisällysluettelo

1. Johdanto
2. Yleiskuvaus
3. Toiminnot
4. Ulkoiset liittymät
5. Muut ominaisuudet
6. Laatusuunnitelma


1. Johdanto

Tämä dokumentti

Luvussa 1 "Johdanto" määritellään ohjelmiston käyttäjät, tavoitteet, määritelmät ja termit sekä lähteet.

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.

Käyttäjät

Ohjelmisto on tarkoitettu kaikille niille tietokoneen käyttäjille, joilla on jokin tarve lähettää lyhyitä sanomia kenenkään havaitsematta sekä tilaajan tutkimustyöhön.

Tavoitteet

Ohjelmiston tavoitteena on tarjota siirrettävä ohjelmakirjasto, joka tarjoaa turvallisen tavan kätkeä tietoa. Ohjelmakirjaston tulee käyttää (parhaan tietämyksen mukaan) turvallisia krypto- ja steganografisia algoritmejä.

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.

Määritelmät ja termit

Lähteet

2. Yleiskuvaus

Ohjelmisto ja sen käyttöympäristö

Steganograafisen 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.
Esimerkiksi:

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.

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

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.

Ohjelmiston rakenne
Kuva 2: Ohjelmiston rakenne

Kätkentäalgoritmin looginen rakenne on esitetty kuvassa 3:

Kunkin modulin vieressä on annettu joitain esimerkkejä modulissa (mahdollisesti) käytettävistä algoritmeistä ja formaateista. Ohjelmakirjaston rakenne ja projektin jako osatehtäviin tulee todennäköisesti noudattamaan jossain määrin kuvassa näkyvää loogista jakoa.

Ohjelmakirjaston rakenne
Kuva 3: Ohjelmakirjaston rakenne

Käyttöympäristö

Projektin ensisijaisena tavoitteena on luoda siirrettävä ohjelmakirjasto, joka tarjoaa turvallisen tavan kätkeä tietoa. Kirjaston tulee olla mahdollisimman siirrettävä, eli käytön laitteistoympäristöstä riippumaton.

Ohjelmakirjaston päälle rakennetaan lisäksi käyttöliittymät UNIX- ja Windows95 ympäristöihin. Nämä käyttöliittymät ovat kuitenkin toissijaisia ohjelmakirjaston toteutukseen verrattuna.

Yleiset rajoitteet

3. Toiminnot

Käyttöliittymällä varustettuna ohjelmiston toiminnot ovat:

Ohjelmakirjaston (kuva 3) tulee tarjota salaisen viestin kätkemiseen liittyvät toiminnot (kts. luku "Yleiskuvaus").

4. Ulkoiset liittymät

Ohjelmakirjaston ulkoiset liittymät ovat hyvin määriteltyjä C++-kielen luokkien rajapintoja.

Ohjelmistoon rakennettava käyttöliittymä on

  1. UNIX-ympäristössä:

    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).

  2. Windows95-ympäristössä:

    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.

5. Muut ominaisuudet

Ohjelmiston ei-toiminnallisia ominaisuuksia ovat:

6. Laatusuunnitelma

  1. Toimivan kokonaisuuden suunnittelu ja toteutus kirjallisuudessa esitetyistä algoritmeistä.

    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ä.

  2. Kätkemisformaatin (otsikot, tavujärjestys) määrittely, jotta kuka tahansa pystyy tekemään yhteensopivan ohjelman.

    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ä.

  3. Kirjaston rajapinnan selkeys ja siirrettävyys.

    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.

  4. Ohjelmiston modulaarisuus, jotta algoritmiversioita ja tiedostoformaatteja on mahdollista myöhemmin lisätä.

    Kaikista parametrisoitavista algoritmeista toteutetaan kirjastoon vähintään kaksi vaihtoehtoa. Näin ohjelman rakenne tulee varmasti suunniteltu sellaiseksi, että algoritmeja voi olla useita.

  5. Dokumentaation tulee liittää ohjelmisto ja toteutus kirjallisuudessa esitettyihin algoritmeihin.

    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.

  6. Lopputuloksen oltava valmis, käyttökelpoinen tuote, joka toimii stabiilisti ja jonka käyttöliittymä on harkittu. Käyttöliittymän on oltava mahdollisimman yksinkertainen.

    Selviää testaamalla. Bugiraportteja käyttäjiltä ole julkaisun jälkeen juurikaan odotettavissa, sillä ne joilla on tarve kätkeä tietoa, tuskin haluavat kertoa siitä.