Suunnitelma

Edellinen Seuraava

Koodinimi 'AGENDA', James Bond -elokuviin liittyviä salakirjoitustehtäviä, sopivan helppoja jokaiselle salaiselle nojatuoli-agentille.

Allekirjoituksen laadinta

Kun lukija on ratkaissut tietyn tehtävän, voi hän tarkistaa ratkaisunsa. Jos ratkaisu on oikein, hän saa todisteen siitä että on ratkaissut tehtävän oikein.

Ratkaisun oikeellisuus todistetaan digitaalisella allekirjoituksella. Allekirjoitettavia tietoja ovat:

Lukijan tarvitsee vain antaa lomakkeelle oma nimensä tai nimimerkkinsä, vähintään kolme merkkiä. Muut allekirjoitettavat tiedot tulevat palvelimelta. On turvallisempaa ettei käyttäjä voi valita kaikkia tietoja. Nimeä ei tallenneta palvelimelle.

Digitaalista allekirjoitusta on vaikea väärentää. Periaatteessa olisi mahdollista sattumalta näppäillä oikea allekirjoitus vaikkapa sokkona, mutta onnistumisen todennäköisyys on erittäin pieni. Allekirjoitus kannattaa säilyttää, sillä sen avulla voi todistaa ratkaisseensa ko. tehtävän oikein.

ECDSA-menetelmällä tehdyssä allekirjoituksessa on 2 osaa. Allekirjoitus on eräs elliptisen käyrän piste, joten sillä on kaksi koordinaattia, x ja y.

Allekirjoituksen yhteydessä täytyy säilyttää myös ne tiedot jotka on allekirjoitettu, eli yllämainitut 4 tietoa. Allekirjoitus yksinään on merkityksetön, se kuuluu yhteen allekirjoitettujen tietojen kanssa. Käyttäjän on helppo kopioida allekirjoitetut tiedot ja niiden allekirjoitus selaimen ikkunasta ja tallentaa ne omalle koneelleen.

Sivut tulevat olemaan dynaamisia, PHP:lla toteutettuja, mutta käyttäjän IP-osoitetta ei tutkita eikä tallenneta.

Allekirjoituksen tarkistus

Kun lukija haluaa jälkikäteen todistaa ratkaisseensa tehtävän oikein, tarvitsee hän yllämainitusta peräisin olevat 4 allekirjoitettua tietoa ja niiden allekirjoituksen. Tehtävän oikeaa ratkaisua hän ei enää tässä tarvitse.

Hän syöttää lomakkeelle nuo 4 allekirjoitettua tietoa sekä niiden digitaalisen allekirjoituksen täsmälleen alkuperäisessä muodossa. Kirjainten koko ja välimerkit ovat merkitseviä.

Tiedot tarkistetaan palvelimella. Jos tunnari on oikein, yritetään verifioida digitaalinen allekirjoitus. Jos allekirjoitus on noiden tietojen allekirjoitus, katsotaan tämän todistavan että ko. lukija on ratkaissut sen tehtävän jonka numero on allekirjoitetuissa tiedoissa.

Oikea ratkaisu ei siis sisälly allekirjoitettuihin tietoihin. Tämän toiminnon avulla voi todistaa että ... öh ... "joku" on ratkaissut tehtävän oikein, paljastamatta tehtävän oikeaa ratkaisua.

Jokainen voi itse päättää miten yksilöivää nimeä tai nimimerkkiä käyttää. Mutta jos antaa nimekseen vaikkapa 007, niin saattaa olla vaikea saada kaveriaan vakuuttumaan siitä että ko. allekirjoitetut tiedot ovat juuri hänen itsensä tietoja, eikä kenenkään muun.

Digitaalisen allekirjoituksen tarkistuksessa nimi menee ehkä lokiin (ainakin jos verifiointi ei onnistu), mutta sen avulla vain seurataan softan toimintaa virhetoimintojen varalta.

Harkinnassa on pitäisikö näihin varmuuden vuoksi kehittää jonkinlainen robottiesto, ettei robotti Ruttunen käy täällä räpläämässä ECDSA-allekirjoituksen muodostusta ja verifiointia. Käyttäjän inhimillisyyttä mahdollisesti testataan ennenkuin hänet päästetään käsiksi kaikkein pyhimpään. Jonkinlainen sisäänkirjautuminen on siis mahdollinen.