Selainpohjaisen kuvasteganografiatyökalun toteuttaminen
Lindström, Roope (2020)
Lindström, Roope
2020
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202004165156
https://urn.fi/URN:NBN:fi:amk-202004165156
Tiivistelmä
Työn tarkoituksena oli toteuttaa selainpohjainen sovellus, jonka avulla voidaan piilottaa kuvatiedostoon teksti- tai kuvamuotoinen viesti tai paljastaa viesti kuvasta. Tätä kutsutaan steganografiaksi, joka on kryptografian eli salakirjoitustekniikan muoto. Kuvasteganografiaa käytetään muun muassa digitaalisen materiaalin vesileimaamiseen.
Piilotettava data koodataan alkuperäisen kuvatiedoston pikseleiden värikanavien vähiten merkitseviin bitteihin, jolloin lopputuloksena tuotetusta kuvasta on vaikea paljaalla silmällä huomata eroa alkuperäiseen kuvaan. Kuvatiedostojen muokkaustoiminnot toteutettiin Python-ohjelmointikielellä, johon pohjautuvaa Flask-sovelluskehystä on hyödynnetty sovelluksen REST-rajapinnan toteuttamisessa. Sovelluksen verkkokäyttöliittymä toteutettiin JavaScript-ohjelmointikieleen pohjautuvan React-käyttöliittymäkirjaston avulla, ja käyttöliittymän kautta voidaan lähettää palvelimelle kuvatiedostoja ja piilotettavaa dataa sekä vastaanottaa palvelimelta muokkaustoimintojen tuloksena tuotettuja kuvatiedostoja.
Työn tuloksena on yksinkertainen selainkäyttöliittymä ja palvelintoteutus, jonka REST-rajapintaa voidaan hyödyntää myös käyttöliittymästä irrallisena komponenttina. Sovelluksen avulla tuotetuista kuvista nähdään myös, miten toiminnoissa käytettyjen vähiten merkitsevien bittien määrä vaikuttaa lopputuloksen kuvanlaatuun.
Toteutettua sovellusta voidaan käyttää esimerkkinä kryptografian ja steganografian mahdollisuuksista. Työssä käytetyt menetelmät ovat yksinkertaisia, eikä esimerkiksi steganografisten kuvien analysointityökaluilta suojautumiseen ole otettu kantaa. Huomiota on kuitenkin kiinnitetty sovelluksen laajennettavuuteen, joka on mahdollista toteuttaa esimerkiksi parantamalla kuvatiedostojen muokkaustoiminnoissa käytettyjä algoritmeja.
Piilotettava data koodataan alkuperäisen kuvatiedoston pikseleiden värikanavien vähiten merkitseviin bitteihin, jolloin lopputuloksena tuotetusta kuvasta on vaikea paljaalla silmällä huomata eroa alkuperäiseen kuvaan. Kuvatiedostojen muokkaustoiminnot toteutettiin Python-ohjelmointikielellä, johon pohjautuvaa Flask-sovelluskehystä on hyödynnetty sovelluksen REST-rajapinnan toteuttamisessa. Sovelluksen verkkokäyttöliittymä toteutettiin JavaScript-ohjelmointikieleen pohjautuvan React-käyttöliittymäkirjaston avulla, ja käyttöliittymän kautta voidaan lähettää palvelimelle kuvatiedostoja ja piilotettavaa dataa sekä vastaanottaa palvelimelta muokkaustoimintojen tuloksena tuotettuja kuvatiedostoja.
Työn tuloksena on yksinkertainen selainkäyttöliittymä ja palvelintoteutus, jonka REST-rajapintaa voidaan hyödyntää myös käyttöliittymästä irrallisena komponenttina. Sovelluksen avulla tuotetuista kuvista nähdään myös, miten toiminnoissa käytettyjen vähiten merkitsevien bittien määrä vaikuttaa lopputuloksen kuvanlaatuun.
Toteutettua sovellusta voidaan käyttää esimerkkinä kryptografian ja steganografian mahdollisuuksista. Työssä käytetyt menetelmät ovat yksinkertaisia, eikä esimerkiksi steganografisten kuvien analysointityökaluilta suojautumiseen ole otettu kantaa. Huomiota on kuitenkin kiinnitetty sovelluksen laajennettavuuteen, joka on mahdollista toteuttaa esimerkiksi parantamalla kuvatiedostojen muokkaustoiminnoissa käytettyjä algoritmeja.