turvaline veebirakendus oma rahavoogude kontrollimiseks

Teenused

Disain, front-end arendus (React.js), back-end arendus, süsteemi disain ja arhitektuur, testimine, projektijuhtimine

Meeskond

Nele Erikson (NOPE-st) disain
Sander Orav front end
Mihkel Eidast front-end
Pärt Erikson back-end
Ivo Klaas back-end
Ardo Aednik PM

Taust

MyFinancier asutati 2017. aasta novembris ning ettevõte kasvas välja meeskonnast, kellele on alati meeldinud oma rahavoogudel silma peal hoida. Varasemalt tegelesid nad isikliku raamatupidamisega kas Exceli abil või siis kasutades enda programmeeritud väga algelist MyFinancieri desktopi rakendust. Kuna nende arendatud rakendus oli ajale jalgu jäämas, otsustasid nad kogu projekti järgmisele tasemele viia.

Veebirakenduse eesmärgiks on aidata kasutajatel oma rahaasjadel silma peal hoida – kuhu nende raha läheb ja kust see tuleb. Selleks, et veebikasutaja saaks näha oma kulusid, peab ta rakendusse laadima netipangast tõmmatud kokkuvõtva CSV faili. Seejärel loeb rakendus andmed ise failist sisse ja kõik andmed on automaatselt graafikutel koos siltidega, kus raha kulutati või teeniti.

Väljakutse

Projekt oli väga omapärane. Kui teemaks on inimese rahaasjad, siis privaatsus ja turvalisus on kaks asja, milles kasutaja tahab kõige enam kindel olla. Seetõttu pidime leidma viisi, et kõik andmed, mis rakendusse sisestatakse, oleksid maksimaalselt kaitstud igasuguste pahatahtlikke häkkerite eest. Me ei olnud kunagi varem nii kõrge tasemelise krüptograafiaga kokku puutunud, mis tegi sellest vägagi meenutamist väärt projekti.

Selleks, et ära hoida igasuguseid infolekkeid andmebaasi, pidi kogu krüpteerimine toimuma rakenduse front-end poolel, kasutaja enda arvuti poolt. Tehnika nimi, mille kasutusele võtsime oli Salted Challenge Response Authentication Mechanism või siis lühidalt – SCRAM

Teekond betani

Kogu töö sai alguse 2018. aasta jaanuaris.

Esmalt lõime front-end vaate Reacti abil ning seejärel saime samm-sammult hakata uurima võimalusi seoses krüptograafiaga. Lõppude lõpuks valisime lahendusviisi, mille käigus pidime abi küsima antud eriala spetsialistidelt. Täpselt nii turvaliseks me kogu programmi teha tahtsimegi.

Meie tegevuskava koos MyFinancieri arendusmeeskonnaga oli järgmine: selleks, et ära hoida igasuguseid infolekkeid andmebaasi, pidi kogu krüpteerimine toimuma rakenduse front-end poolel, kasutaja enda arvuti poolt. Tehnika nimi, mille kasutusele võtsime oli Salted Challenge Response Authentication Mechanism või siis lühidalt – SCRAM. SCRAM on paroolipõhine kahepoolne autentimise protokoll, mis muudab pealtkuulamisrünnaku (ehk man-in-the-middle) keerulisemaks. See on tehnika, mille abil kasutaja saab tõestada serverile, et nemad teavad saladust, mis on nende endi paroolist tuletatud ja samamoodi saab server tõestada kasutaja poolele, et tema teab salasõna ilma tunnussõna avaldamata.

Paroolide krüpteerimise juures kasutasime AES-GCM’i, et kõik kasutaja andmed oleksid nii ära turvatud kui vähegi võimalik ja häkkerite võimalused kellegi kasutaja andmete kättesaamiseks oleksid nullilähedased.

Kogu andmestik pannakse kaitstud konteinerisse ja viimaks saadetakse andmebaasi. Andmebaas näeb samaaegselt lihtsalt üht krüpteeritud seifi, muud midagi. Kui kasutaja soovib oma andmetele ligi pääseda, siis andmebaas ise ei tea kasutaja parooli, küll aga oskab see kindlaks teha, kas kasutaja poolt sisestatud parool on õige. AES võtmed on 128-bitised sümmeetrilised võtmed ning on välja arvutatud, et kui superarvuti üritaks suvaliste sõnade ja kombinatsioonidega parooli ära arvata, kuluks tal selleks keskmiselt miljard aastat.

Täpselt sellise turvakindluse me koostöös MyFinancieriga nende veebilehe jaoks ehitasimegi.

Arendustöö lõppes 2018. aasta novembris.

Kontod
Kasutajad saavad jälgida kogu oma arveldust lisades süsteemi pangakonto. Kõik leibkonna kontod saab lisada perekonnaks, et saada parem ülevaade.
Tehingud
Kasutajad saavad ülevaate kõigist ülekannetest, sissetulekutest ja väljaminekutest mugavalt filtreeritavas vaates.
Sissetulekud ja kulud
Importides enda konto väljavõtte saab süsteem automaatselt paigutada tehingud kategooriatesse. See loob selge pildi kõigist sissetulekutest ja kuludest. Kõik kategooriad on jagatud ka alamkategooriatesse, nii saab kasutaja vajadusel täpsema pildi enda raha liikumisest.
Reeglid
Vajadusel saab loogikareeglite abil ajaloost kindlaid ridu eemaldada. Süsteem õpib sellest ning tulevikus on automaatne kategoriseerimine juba targem.
Vara
MyFinancier suudab silma peal hoida ka sinu varalisel seisul, olgu see auto, kinnisvara või näiteks kuld.
Kohustused
Kasutajad saavad silma peal hoida ka kõiksugu finantskohustustel, nagu kodulaen, auto liising või näiteks laen sõbralt.

Tulevik

Pärast arendustöödega lõpetamist võttis MyFinancieri arendusmeeskond projekti üle ning nad avaldasid rakenduse beta versiooni 2019. aasta augustis. 2020. aasta augustiks oli ettevõte oma kasutajate hulka suurendanud kuni 850 igakuise külastajani.

Tagasiside

MyFinancier tuli gotoAndPlay juurde üsnagi ebatavalise ja ambitsioonika ülesandepüstitusega ning selle asemel, et öelda meile, et minevikus seda pole nii tehtud ja teised teevad teisiti, aitasid nad meil kaasa mõelda ning seeläbi välja töötada (ning edukalt implementeerida) täiesti uue standardi sellele, kuidas ühes tundlikke andmeid sisaldavas veebirakenduses andmevahetus front-endi ja back-endi vahel võiks aset leida. Lisaks käis tehtud tööga kaasas mitmeid ettepanekuid funktsionaalsuste osas ning nõuandeid rakenduse haldamise ja edasiarendamise osas tulevikus. Kunagi ei tekkinud tunnet nagu nende ülesanne oleks olnud ainult ettekirjutatud funktsionaalsuste koodi kirjutamine, rakenduse arenduse ajal olid nad osa meie meeskonnast, kes koos meiega arendasid rakendust, mille abil kasutaja saaks kiirelt ja lihtsalt ülevaate enda rahaasjadest.

Kadri Mäsak
CEO of MyFinancier