Advanced Encryption Standard : Algoritmin toteutus Rust-ohjelmointikielellä

Kuvaus

Tässä diplomityössä käsitellään Advanced Encryption Standard -salausalgoritmia. Tämä symmetrinen algoritmi on laajalti käytössä erityisesti sulautetuissa järjestelmissä, koska se on laskennallisesti nopea ja vaatii vain vähän muistia. Advanced Encryption Standard -algoritmi tukee kolmea eri avaimen pituutta sekä useita erilaisia salausmoodeja. Diplomityön tarkoituksena on luoda ohjelmistototeutus tälle algoritmille Rust-ohjelmointikielellä, koska valmiina löytyy helposti ainoastaan valmiita kirjastoja. Laaditulla salausohjelmalla voidaan salata tekstitiedostoja sekä purkaa niiden salauksia. Toisena tavoitteena tällä työllä on suunnitella ohjelmisto siten, että sitä voidaan helposti laajentaa tukemaan muita salausmoodeja. Salausalgoritmi on toteutettu vaihe vaiheelta Rust-ohjelmointikielellä ja jokainen vaihe on testattu erikseen yksikkötasolla. Testauksessa on käytetty apuna Rust-kieleen sisäänrakennettua testausominaisuutta. Algoritmin eri vaiheet on ohjelmassa yhdistetty, jolloin ne muodostavat kierroksen, algoritmin toiminnallisen selkärangan. Algoritmin toiminta kokonaisuudessaan koostuu useasta toistuvasta kierroksesta. Salauksen toiminta on testattu syöttämällä ohjelmalle testivektori, jota vastaava salattu vektori tunnetaan, ja vertaamalla ohjelman vastetta tähän. Salausalgoritmia käytetään aina yhdessä jonkin hyväksytyn toimintamoodin kanssa, joita ohjelmaan on toteutettu kolme erilaista. Salausohjelmaan on määritelty valmiita rajapintoja, joiden avulla tuettujen toimintamoodien lisääminen helpottuu. Ohjelman käyttäjää varten algoritmin yläpuolelle on toteutettu yksinkertainen käyttöliittymä, jolla käyttäjä syöttää tekstitiedostojen kautta datan ohjelmalle, ja valitsee terminaali-ikkunassa halutun toimintamoodin. Ohjelma kirjoittaa laskennan tulokset omiin tekstitiedostoihinsa. Työssä on kehitetty yleiskäyttöinen salausohjelma Rust-ohjelmointikielellä, joka käyttää Advanced Encryption Standard -algoritmia. Ohjelma tukee kaikkia kolmea standardissa määriteltyä avaimen pituutta ja käyttää algoritmin yhteydessä hyväksyttyjä toimintamoodeja. Lisäksi lähdekieliseen ohjelmaan on sisällytetty valmiiksi rajapintoja, joiden avulla muiden toimintamoodien käyttöönottaminen helpottuu. Ohjelman oikeanlainen toiminta on varmistettu julkisilla testivektoreilla, ja huolellisesti laaditun testaussuunnitelman noudattamisen havaittiin nopeuttavan testausprosessia huomattavasti. Työn aikana Rust-ohjelmointikielen todettiin soveltuvan hyvin kryptografisen algoritmin toteuttamiseen. Sen periaatteisiin kuuluva muistiturvallisuus ehkäisee tahattomia datamuokkauksia, jotka muutoin johtaisivat salauksen epäonnistumiseen ja datan korruptoitumiseen. Samalla havaittiin, että Rust-kielen iteraattorit mahdollistavat algoritmissa vaadittavien tavutaulukoiden käsittelyn lyhyillä ja tiiviillä ohjelmointikäskyillä. Rust-kielelle ominaiset ohjelmointiperiaatteet vaativat muihin ohjelmointikieliin tottuneelta käyttäjältä ajattelutavan muutoksen. Tämä hidastaa toteuttamista aluksi, kunnes käyttäjä tottuu uusiin ohjelmointitapoihin. Varsinaista estettä valittu kieli ei tällaiseen toteutukseen kuitenkaan tuo.

URI

DOI

Emojulkaisu

ISBN

ISSN

Aihealue

OKM-julkaisutyyppi