Salasanaholvi¶
Salasanoja riittää nykyään joka sormelle ja varpaalle, eikä samaa saisi käyttää ikinä missään. Lisäksi niiden pitäisi vielä olla pitkiä! Eihän tässä ihmisen muisti riitä millään pitelemään kaikkia näitä salakaloja. Onneksi tämäkin ongelma ratkeaa sillä mistä se on lähtöisin: teknologialla. Kun laitat kaikki hyperturvalliset salasanat yhden pääsalasanan taakse, niitä kaikkia ei tarvi muistaa. Koska olemme ohjelmoinnin kurssilla, ongelma ratkaistaan tietenkin ihan omin kätösin. Koodataan siis oma terminaalissa toimiva kalaisuuksien sammio.
Ohjelman toiminnot¶
Ohjelmalta halutaan seuraavat toiminnot. Lisäominaisuuksia ei vaadita työn hyväksymiseen, mutta niistä saa luonnollisesti enemmän pisteitä. Kun ohjelmassa pyydetään syöttämään salasanoja, niiden syöttämiseen tulee käyttää input-funktion sijaan getpass-moduulia. Uutta salasanaa luodessa se pitää myös kysyä kahdesti, ja tarkistaa, että salasanat täsmäävät.
- Uuden salasanan lisääminen
- Salasanaa lisättäessä pitää valita otsikko (esim. palvelun nimi tai verkko-osoiste), käyttäjätunnus (jonka voi jättää tyhjäksi), ja tietenkin itse salasana. Otsikko ei saa olla sama kuin olemassaolevilla salasanoilla.
- Lisäominaisuus: salasanan syöttämisen sijaan käyttäjällä on mahdollisuus pyytää ohjelmaa generoimaan satunnaisen, halutun mittaisen salasanan. Täysiin pisteisiin vaaditaan, että salasana luodaan käyttämällä Pythonin secrets-moduulia randomin sijaan.
- Salasanojen listaaminen
- Tällä ominaisuudella voi listata mitä otsikoita salasanamanagerista löytyy. Otsikot näytetään numeroituna. Ominaisuus ei näytä salasanoja tai käyttäjätunnuksia.
- Lisäominaisuus: listauksesta voi valita salasanan näytettäväksi numerolla valitsemalla. Tyhjä syöte palauttaa päävalikkoon valitsematta mitään.
- Salasanan näyttäminen
- Tässä ominaisuudessa käyttäjä syöttää otsikon, jolla haluaa hakea salasanan ja käyttäjätunnuksen.
- Lisäominaisuus: salasana ja käyttäjätunnus näytetään ruudulla vain sen aikaa kun tarvitaan, ja sen jälkeen ruutu pyyhitään tyhjäksi kun käyttäjä antaa syötteen.
- Salasanan poistaminen
- Tässä ominaisuudessa käyttäjä antaa otsikon, jonka mukainen salasana poistetaan.
Tietojen hallinta¶
Minimitoteutuksessa salasanat tietoineen pidetään ainoastaan ohjelman muistissa. Suunnittele siis tarkoitukseen sopiva tietorakenne, jotta salasanojen käsittely onnistuu jouhevasti. Lisäpisteitä on saatavilla tietojen käsittelystä tiedostoissa, eli ohjelman tulee osata tallentaa salasanat käyttäjän määrittämään tiedostoon sekä ladata ne.
Tässä kohtaa on tietenkin hyvä huomata, että jos salasanat vain tallentaa tiedostoon sellaisenaan, ne voi sieltä kuka tahansa lukea. Näinpä siis oikeasti kelpoa työkalua havitteleville on tarjolla vielä mahdollisuus käyttää ihan oikeaa salausta, joka aukeaa ladattaessa syötettävällä pääsalasanalla. Näin toimimalla tiedoston joutuminen vääriin käsiin ei heti paljasta jokaista sinne tallennettua salasanaa.
Salausalgoritmien käytössä on hiukan yksityiskohtia, joiden avaaminen ei ole tämän kurssin sisältöä, joten niiden ymmärrystä vaativat osiot prosessista on annettu valmiina pienenä apumoduulina, jonka löydät alta. Kunhan ymmärrät miten moduulin funktioita tulee käyttää, pitäisi tietojen tallennus salaisesti onnistua. Lisäksi tarvitset pycryptodome-kirjaston, jonka voi asentaa tutulla tavalla.
pip install pycryptodome
Jos haluat täydet pisteet tämän moduulin käytöstä, se tulee ottaa käyttöön omassa koodissasi importin avulla. Älä kopioi moduulin sisältöä omaan kooditiedostoosi.