September 20, 2019
  • 6:30 pm Office 365 – Yksittäisten tai useiden käyttäjätilien luominen | Office 365 Admin Center & PowerShell
  • 10:09 pm Office 365 – Yhdistäminen tenanttiin PowerShellillä
  • 2:15 pm NameCheap – Kaupallisen SSL-sertifikaatin uusiminen
  • 9:48 pm Ubuntu Server 18.04.3 – Tietoturvapäivitysten automatisointi
  • 1:54 am Tuotantopalvelimen päivitys – Ubuntu Server 16.04 -> 18.04

Ohjelman asennus

Asensin KeePass 2.40 version projektin virallisilta nettisivuilta: https://keepass.info/download.html. (Latauslinkki ohjaa SourceForgen mirroriin.)

KeePass on avoimen lähdekoodin salasanojen hallintatyökalu, jota suositellaan monien tietoturva-asiantuntijoiden toimesta. Se on auditoitu ainakin vuonna 2016, jolloin tulokset tiivistettiin näin:

To conclude, the code review confirmed that the code has a good level from a security point of view, with only a few findings, none of which were critical or high-risk in nature. It is important to highlight that these findings cannot be directly considered security flaws that can be exploited, given that ‘Security’ is a set of layers and, therefore, several risky findings are necessary to compromise the software.

Lähde PDF-tiedostoon: https://joinup.ec.europa.eu/sites/default/files/inline-files/DLV%20WP6%20-01-%20KeePass%20Code%20Review%20Results%20Report_published.pdf

KeePass-ohjelmasta on myös cross-platform versio Linuxille ja macOS:lle nimeltä KeePassXC (pohjautuu KeePassiin, mutta eri projekti).

Alustava asennus oli tyypillinen, eli hyväksyin käyttöehdot ja valitsin asennuksen kohdekansion. Seuraavassa vaiheessa valitsin normaalin asennuksen, jossa kaikki lisäosat olivat oletuksena valittu.

Viimeisessä vaiheessa jätin valinnan “Yhdistä KeePass tiedostopäätteeseen .kdbx”.

Asennus valmistui ja käynnistin KeePassin.


Tietokannan konfigurointi

Jatkoin luomalla uuden tietokannan salasanojani varten.

Aukesi ikkuna, jossa mm. suositeltiin tietokannan varmuuskopioimista säännöllisesti. Itse siirrän kopion USB-muistille ja toiselle kiintolevylle.

Painoin OK.

Seuraavaksi tallensin tietokantatiedoston nimellä. Loin uuden kansion “KeePass” hakemistoon C:\Users\%username%\Documents\.

Loin tietokannalle vahvan master-salasanan, joka vaaditaan tietokannan lukemiseksi. Käytännössä siis kaikki muut käyttäjätunnukseni ja salasanat tulevat tämän salasanan taakse. Tämä mahdollistaa sen, että voin käyttää kätevämmin vahvoja salasanoja muissa palveluissa, koska minun tarvitsee enää muistaa jatkossa vain tämä yksi salasana. (Muistetaan kuitenkin tietokannan varmuuskopiot).

Salasanan lisäksi loin kuitenkin avaintiedoston, joka vaaditaan salasanan ohella. Tämä vaihtoehto löytyi “Show expert options” valinnan alta:

Loin uuden avaimen painamalla “Create…“. Tallensin avaimen kansioon keyfiles.

Generoin 256-bittisen avaimen liikuttelemalla hiirtä satunnaisesti KeePass:in määrittelemällä alueella. SSH-avaimet luodaan vastaavasti PuTTYgen:issä. Vaihtoehtoisesti olisin voinut luoda avaimen satunnaisilla näppäinpainalluksilla.

Kun mittari oli täynnä ja näytti “256 bits“, avain oli valmis ja painoin OK.

Tietokanta oli nyt suojattu sekä salasanalla että avaintiedostolla.

Seuraavaksi määrittelin tietokannan asetukset. Nimesin tietokannan tallentamani tietokantatiedoston mukaisesti “masterDatabase“. Annoin tietokannalle kuvauksen ja nimesin oletuskäyttäjän “masterdb“.

Security-välilehdellä valitsin tietokannan salaustyypiksi ChaCha20 (256-bit key, RFC 7539). Vaihtoehtoisesti olisin voinut käyttää AES/Rijndael (256-bit key, FIPS 197) salausta, mutta ChaCha on teoreettisesti nopeampi moderneilla prosessoreilla. Vaikka AES onkin aikalailla alan standardi (NSA:n kehittämä), niin ChaCha20:tä käytetään mm. OpenSSH:ssä ja Googlen toimesta TLS/SSL-liikenteessä.

Kumpi tahansa valinta on kuitenkin yleisesti katsottuna turvallinen.

Key derivation funktioksi valitsin Argon 2.

Aloitin asetusten optimoinnin asettamalla parallelismin vastaamaan koneeni prosessorin säikeiden määrää. Koneessani on i7-6700K 4,0 GHz prosessori (4 core, 8 thread), joten asetin parallelismiksi 8.

Muistin määrä kannattaa asettaa niin korkealle, kuin vain omalla tietokoneella on käytännössä mahdollista. Tulee siis selvittää, paljonko vapaata muistia on koneella keskimäärin tavallisessa käytössä. Itse varasin keskusmuistia 512 MB, vaikkakin koneeni 16 gigasta käytetään tavallisessa käytössä tyypillisesti jotain 4-8 GB väliltä. Olisin siis voinut nostaa muistimäärän korkeammaksi, ja jätin ehkä turhankin paljon pelivaraa oman tietokoneeni speksit huomioon ottaen.

Parrallelismin jälkee nostin iterations arvoa, kunnes nopeudet olivat siedettävällä tasolla. Mitä suurempi iterations määrä, sitä enemmän aikaa menee. “Test”-painikkeella voi ajaa nopeustestin, jonka perusteella noita kolmea parametria voidaan optimoida. Itse tähtäsin alle neljän sekunnin nopeuksiin, jolloin päädyin iterations arvoon 16.

StackExchange-käyttäjä “otus” tiivisti kunkin parametrin pointin näin:

Unlike bcrypt or traditional crypt, argon2 does not have a single iteration count, but three parameters affecting the computational cost:

  • Number of iterations t, affecting the time cost.
  • Size of memory used m, affecting the memory cost.
  • Number of threads h, affecting the degree of parallelism.

Source: https://crypto.stackexchange.com/questions/37137/what-is-the-recommended-number-of-iterations-for-argon2

Mitä suuremmat arvot, sitä kauemmin hyökkääjällä menee mahdollisen sanalistahyökkäyksen toteuttamiseksi.

Valitsemillani asetuksilla, tietokannan lataamisessa kesti alle 4 sekuntia, mikä on mielestäni vielä siedettävää. Moni käyttäjä kuitenkin tuntuisi tähtäävän yhden sekunnin nopeuksiin.

Compression-välilehdellä jätin asetukset oletuksiksi, eli tietokannan pakkausalgoritmina käytetään GZip.

Recycle Bin-välilehdellä pidin myös oletukset, sillä haluan, että poistetut tunnukset menevät ensin roskakoriin, josta poistan ne sitten lopullisesti itse.

Advanced-välilehdellä en tehnyt muutoksia.

Lopulta painoin OK ja tulostin KeePassin suositteleman Emergency Sheetin, johon voi itse kirjottaa kaikki oleelliset tiedot tietokannan avaamiseksi. Paperi tulee säilyttää turvallisessa paikassa varmuuskopiona.

Tulostettava lomake näytti tältä:

Noiden vaiheiden jälkeen tietokanta oli luotu ja ohjelma on valmis käyttöä varten.


Ohjelman käyttö

Avatessani ohjelman, KeePass pyytää luomani master-salasanan. Lisäksi polku luomaani avaintiedostoon tulee olla määritelty. Tietokanta on luettavissa ainoastaan koneelta, jolta avaintiedosto löytyy, vaikka itse tietokantatiedosto ja master-salasana olisivatkin tiedossa.

Syötin salasanan, jonka jälkeen tietokannan salauksen purkamisessa kesti noin neljä sekuntia omien määrityksieni mukaisesti.

Salasanat voidaan luokitella ryhmien alle. KeePass luo oletuksena muutaman ryhmän ja esimerkkitunnuksen.

Poistin oletuksena luodut tunnukset ja ryhmät (oikea click, delete entry tai delete group), jonka jälkeen loin ryhmähierarkian omaan käyttööni. Poistetut ryhmät ja tunnukset menevät oletuksena ensin roskakoriin, josta ne poistetaan vielä erikseen.

Loin uuden ryhmän klikkaamalla tietokantaani hiiren oikealla painikkeella ja valitsemalla “Add group…“.

Annoin ryhmälle nimen ja pikakuvakkeen:

Loin muutaman ryhmän, joiden alle tulen varmasti tallentamaan tunnuksia. Ryhmiä voi jäsennellä toistensa alle kansioiden tapaan. Niitä voi myös siirtää vetämällä eri kansioiden alle.

Ärsyttävästi ryhmien järjestystä ei kuitenkaan voinut muuttaa raahaamalla, vaan ryhmää piti klikata hiiren oikealla ja valita “Rearrange“.

Kun sain ryhmät kuntoon, aloin lisäämään käyttäjätunnuksia. Luonnollisesti en näytä julkisesti oikean tunnuksen lisäämistä, joten teen yhden esimerkkitunnuksen tätä artikkelia varten.

Valitsin sen ryhmän, johon halusin tunnuksen lisätä ja klikkasin ylävalikosta “Add Entry…“.

Annoin tietokantamerkinnälle kuvaavan nimen ja lisäsin tallennettavan käyttäjätunnuksen. Kuvake on oletuksena sama, kuin ryhmällä, mutta sen voi halutessaan muuttaa.

KeePass arpoo oletuksena satunnaisen salasanan, mutta sen pystyy halutessaan määritellemään itse. Voi myös itse valita, miten KeePass generoi satunnaisen salasanan.

Vanhat jo olemassa olevat salasanat luodaan toki manuaalisesti, mutta jatkossa aion generoida kaikille uusille tunniksille uniikin satunnaisen salasanan.

KeePass tarjoaa muutamia perusvaihtoehtoja salasanan generoimiseen, mm. 40-256 bittiset hexadesimaaliset arvot. Niissä ei käytetä erikoismerkkejä ollenkaan, mutta esimerkiksi 256-bittistä käytettäessä sillä ei juurikaan ole merkitystä salasanan pituus huomioon ottaen.

Itse kuitenkin loin salasanan kattavammalla salasanageneraattorilla valitsemalla “Open Password Generator…

Profiiliksi (Custom).

Laitoin täpän ruutuun “Generate using character set:“, jolloin sain itse valita, mitä merkkejä salasanoissa voidaan käyttää.

Salasanojen pituudeksi asetin 32. Tässä täytyy kuitenkin huomioida se, että jotkut palvelut rajoittavat salasanan pituutta vielä nykyäänkin säälittävän lyhyeksi.

Sallin suurten ja pienten kirjainten, numeroiden sekä tiettyjen erikoismerkkien käytön.

Advanced-välilehdeltä voi halutessaan pakottaa asetuksen, jonka mukaan kunkin merkin tulee esiintyä salasanassa vähintään kerran. Voi myös suodattaa tietyn merkit salasanoista pois, vaikka ne olisikin sallittu Settings-välilehdellä.

Preview-välilehti näytti, millaisia salasanoja valitsemillani säännöillä saatettaisiin generoida:

Painoin OK, jolloin KeePass generoi minulle asettamieni sääntöjen mukaisesti monimutkaisen salasanan, joka oli 32 merkkiä pitkä ja kooltaan 198 bittiä.

Halutessaan salasanan voi laittaa vanhenemaan haluamanaan päivänä (toimii lähinnä muistutuksena vaihtaa salasana oikeasta palvelusta).

Properties-välilehdeltä voi halutessaan muuttaa kyseisten tunnuksien taustavärin ohjelman sisällä. Esimerkiksi, jos haluaa erotella tärkeimmän tunnukset vaikka punaisella välillä tms.

Tallensin tunnukset painamalla OK.

Käyttäjätunnus ja salasana oli nyt talletettuna haluamani ryhmän sisälle, josta voin helposti kopioida salasanan tai käyttäjätunnuksen niitä tarvitsiessani. Salasanan voi nopeasti kopioida pikanäppäimillä Ctrl + C, kun kyseinen tunnus on valittuna, tai oikealla klikillä “Copy Password“.

Jos tallensi sivuston URL:in tunnuksien yhteydessä, voi myös kätevästi navigoida suoraan kyseiselle sivulle valitsemalla “URL(s)” > “Open“. Voit myös valita erikseen, millä selaimella linkin avaat, jos et halua avata käyttöjärjestelmäsi oletusselaimella.

Lopuksi tallennetaan muutokset tietokantaan. Jos tietokantaan on tehty muutoksia, ja ohjelman yrittää sulkea tallentamatta, KeePass huomauttaa asiasta:


Lähteet

Projektin sivut. URL: https://keepass.info/

Tietoa ohjelman tietoturvaominaisuuksista. URL: https://keepass.info/help/base/security.html

Keskustelua salaustyypeistä. URL: https://crypto.stackexchange.com/questions/37137/what-is-the-recommended-number-of-iterations-for-argon2

Lähdekoodi auditoinnin tulokset. URL: https://joinup.ec.europa.eu/sites/default/files/inline-files/DLV%20WP6%20-01-%20KeePass%20Code%20Review%20Results%20Report_published.pdf


TÄTÄ DOKUMENTTIA SAA KOPIOIDA JA MUOKATA GNU GENERAL PUBLIC LICENSE (VERSIO 3 TAI UUDEMPI) MUKAISESTI. HTTP://WWW.GNU.ORG/LICENSES/GPL.HTML
MARKUS PYHÄRANTA
Markus Pyhäranta

RELATED ARTICLES
LEAVE A COMMENT