Kurssin lopuksi

Hienoa, olet päässyt kurssin loppuun! Kurssin aikana olemme oppineet paljon kryptografiasta. Tiedämme, miten erilaiset kryptografiset menetelmät toimivat ja osaamme käyttää niitä tiedon suojaamiseen ja salaamiseen.


Kerrataan, mitä kaikkea opimme:

  1. Opimme kryptografian keskeiset tavoitteet, hallitsemme kryptografiassa käytettyä terminologiaa ja perehdyimme eri hyökkäysmaleihin.

  2. Käytimme muutamaa historiallista salainta, tutustuimme kryptoanalyysiin ja näimme, miten substituutio, permutaatio ja moduloaritmetiikka toimivat.

  3. Prehdyimme satunnaisuuten ja osaamme tuottaa kryptografisesti vahvan avaimen. Katsoimme, miten jono- ja lohkosalain toimivat.

  4. Käytimme oikeaa AES-salainta sen eri toimintamoodeissa ja opimme, mikä on kertakäyttönumero.

  5. Opimme, mistä tiivisteissä on kyse ja tuotimme niitä myös itse. Samoin ymmärrämme, mitä tarkoittaa yksisuuntainen funktio.

  6. Käsittelimme suuria lukuja ja diskreetin logaritmin ongelmaa, ja opimme käyttämään Diffie–Hellman- ja RSA-menetelmiä yhteisen salaisuuden luomiseksi ja myöhemmin digitaalisen allekirjoituksen tuottamiseksi.

  7. Opimme luomaan digitaalisen allekirjoituksen ja käytimme julkisen avaimen infrastruktuuria varmenteilla ja varmenneketjuilla. Opimme tarkastelemaan varmenteen sisältöä verkkoselaimissa.

  8. Lopuksi katsoimme, miten kaikkia oppimiamme asioita hyödynnetään TLS protokollassa, millaisia uhkia kvanttitietokoneet aiheuttavat nykyisin käytössä oleville salausmenetelmille ja millaisia aiheita kryptologit tutkivat tällä hetkellä aktiivisesti.

Olet kurssin aikana nähnyt käytännössä, miten matematiikkaa voidaan suoraan hyödyntää kryptografiassa. Lisäksi olet itse päässyt kokeilemaan Python-koodilla eri primitiivien toimintaa sekä suorittamaan salauksia ja tiivisteiden laskemisia. Ymmärrät, miten algoritmeja tulee käyttää.

Kurssin jälkeen osaat siis jo alkeet kryptografiassa käytetystä matematiikasta ja olet nähnyt esimerkkejä Python koodista, jolla voi suorittaa kryptografisia toimenpiteitä. Tämän lisäksi pystyt nyt selittämään satunnaiselle ohikulkijalle (jos hän on valmis kuulemaan), mihin digitaalinen luottamus internetissä perustuu.

Toivottavasti olet viihtynyt tällä kurssilla! Kryptografia on fuusio tietotekniikkaa ja matematiikkaa, ja joissain tapauksissa myös elektroniikka. Jos haluat perehtyä kryptografian elektroniseen puoleen tarkemmin, puolijohteiden tuntemisesta on paljon hyötyä.


Paluu kehyskertomukseen

Alice ja Bob halusivat järjestää syntymäpäiväjuhlat ystävälleen Carolille. Muistamme, että Alice on saanut aikaisemmin kakkureseptin Emilialta, mutta tuolloin Alice ei vielä pystynyt varmentamaan kakkuohjeen lähettäjää. Tehdään se siis nyt.

Emilia siis lähettää Alicelle kakkureseptin, jonka BLAKE2s-tiivisteen hän on allekirjoittanut omalla salaisella avaimellaan.

Alice varmentaa, että Emilia on todellakin kakkureseptin lähettäjä.

Inactive
import hashlib
from xip import modulo_potenssiin
from xip import alusta_1005

# Alice luottaa varmentajan julkiseen RSA avaimeen
n_v, e_v = (324409,65537)

# Emilian resepti, allekirjoitus ja varmenne
resepti, emilian_allekirjoitus, emilian_varmenne = alusta_1005()

# Katsotaan miltä varmenne näyttää.
print("Emilian varmenne näyttää seuraavalta::")
print(emilian_varmenne)

# Poimitaan varmenteen tiedot (RSA julkinen avain ja CA allekirjoitus)
emilian_n, emilian_e = emilian_varmenne.julkinenavain
varmentajan_allekirjoitus = emilian_varmenne.ca_allekirjoitus

# Lasketaan tarkiste ca allekirjoituksella ja julkisella avaimella
print("Suoritetaan Emilian julkisen avaimen tarkistaminen.")
ca_tarkiste = modulo_potenssiin(varmentajan_allekirjoitus, e_v, n_v)

# Verrataan täsmääkö emilian julkiseen avaimeen
assert emilian_n == ca_tarkiste, "Emme pystyneet varmistamaan Emilian julkista avainta."
print("Emilian julkinen avain näyttää olevan oikein!")
print("Tarkistetaan Emilian allekirjoitus.")

allekirjoituksen_tarkiste = modulo_potenssiin(emilian_allekirjoitus, emilian_e, emilian_n)
print("Allekirjoituksen tarkiste:", allekirjoituksen_tarkiste)

# Alice laskee kakkureseptin tiivisteen blake algoritmilla
h = hashlib.blake2s(digest_size=2)
h.update(resepti)
tiiviste = int.from_bytes(h.digest(),"big")

print("Alicen reseptistä laskema tiiviste:", tiiviste)

# Alice tarkistaa täsmääkö allekirjoitus tiivisteeseen

assert tiiviste == allekirjoituksen_tarkiste, "Allekirjoitus ei täsmää! Hylätään resepti"

print("Mitä Alice teki:")
print("0. Alice luottaa varmentajaan ja varmentajan julkiseen avaimeen.")
print("1. Alice tarkisti että Emilian julkinen avain on luotettava.")
print("2. Alice tarkasti että resepti on Emilian allekirjoittama.")
print("Voimme siirtyä juhlien järjestämiseen!!!")

Mihin seuraavista Alice voi lähtökohtaisesti aina luottaa?

Millä algoritmilla Alice ja Emilia laskivat tiivisteen?

Mitä kryptografian elementtejä ja osa-alueita allekirjoituksessa hyödynnettiin? Valitse kaikki oikeat vaihtoehdot.

Pitääkö Alicen aina saada lähettäjältä valmiiksi laskettu tiiviste?

Valitse alta ne asiat, joissa Alice onnistuu. Valitse kaikki oikeat vaihtoehdot.



Osoite juhliin

Alice ja Bob kutsuvat ystävänsä juhlimaan ja lähettävät tutuilleen juhlien päivämäärän, kellonajan ja osoitteen johon saapua. Salaus on mahdollista purkaa kurssilla opituilla tiedoilla, mutta jätetään se kaikista motivoituneimpien häkkereiden hoidettavaksi.

Tehtävä on niin sanottu ciphertext-only-attack, eli se noudattaa COA-hyökkäysmallia.

Inactive
IV = b'\xbao\xd0\x9b\xd5N/\x14\x1d%\x10L\xf8PF\x15'
Salattu_viesti = [b'\xac\xd4(\xa0\xfaE`\xd3\x93\x996\xffK\xda\x93\xd5k\x8c\xf3\x1bnA\xc9\x9a\x80)\xfa]L\xc1)s7\xe9\t\xc3\x88\xb9\xb7\x9e\xae0\x04\xde\xf0\xb4\xbe1@D\xcf\xb5z\x96\x8a\x93\x15\\\x8e\xb8v\x93GA\xf2\x88\xdd\x92\xfb\x0fP\x8e\x18\xec\xa0\xe6\xb7|\xc1\x92\xe1D\xf1r\x1a\xbc\xfc\xa5>\x95\xbfT\xe9\x1a\xa9\xc6\xe1n\xf1\xedj:O\xea^;\x10\xad\xb7\xad\x8b\xfe:\xe7\x1d\xc79\xfd\xe5\x08!\x86\x8fd\xb5\x0c\xa6\x7f', b'\xbe\xed\x99\xe6\r\xe0\xa15\x14\xe2\x15\x87\xd7B{p\x9b\x93%2\xd2rpMr\x1f\x18\x83\xa8\xd9\xc4\xa2w\xff\x1ezs\x89\xe3l[\xdac\x9b\xc5\xac\xf9\xf2\xdb\xa6Oi\x08\xa9\xf67\x12\xb6\xd8\x1f,F\xdc^\xd9\xfb\xf8\xc7\x8e\x8a9\xc9[&\xd8\xe0s\xa65K\x81\x02\xa8\x80_\x0f\x93\xc3\xfdJ\xed\x9e\xe4\xa9a\xc2\xfc\xa1\xe5\xc5,\xe5!\x823\x89Dp\xed&\x83\x07']

print("Keksitkö avaimen?")
print("Voitko päätellä käytetyn salaimen?")
print("Avain on pääteltävissä kurssin nimestä ja kurssin tekijöiden tiedoista, mutta siinäkin on aika paljon kokeiltavaa ;)")

Missä voin opiskella aiheesta lisää?

Suomessa on useita oppilaitoksia, joissa voi opiskella kryptografiassakin käytettyä matematiikkaa sekä teoriassa että soveltaen. Ohjelmointikursseja järjestetään lähes kaikissa yliopistoissa, ja sitä pystyy opiskelemaan myös monilla MOOC-kursseilla. Monessa oppilaitoksessa tarjotaan myös kyberturvallisuuden opetusta, mutta varsinaista kryptografian opetusta on tarjolla vain muutamassa yliopistossa:

  • Aalto-yliopisto

  • Helsingin yliopisto

  • Oulun yliopisto

  • Jyväskylän yliopisto

  • Tampereen yliopisto

  • Turun yliopisto

Jos sait kipinän kryptografiaa, ohjelmointia, matematiikkaa tai vaikka kvanttitietokoneita kohtaan, kannattaa olla yhteyksissä edellä mainittujen yliopistojen opintoneuvojiin. He opastavat, miten heille voi hakea opiskelemaan.

Onnittelut! Olet nyt yksi harvoista, joilla on salaiset avaimet hallussa.

Muistutus: Miten saan opintopisteet opintorekisteriin?

Aalto-yliopiston tutkinto-opiskelija

  • Ilmoittaudu kurssille normaalisti Sisussa.

Muiden korkeakoulujen opiskelijat ja aikuisopiskelijat

  • Suoritettuasi kurssin voit lähettää hakemuksen opintopisteiden rekisteröintiä varten Opintopolussa. Hakemuksen täyttämiseksi ja henkilöllisyytesi vahvistamiseksi tarvitset suomalaisen henkilötunnuksen sekä verkkopankkitunnukset tai jonkun muun suomalaisen sähköiseen tunnistautumiseen tarkoitetun tunnuksen.

  • Jos opiskelet parhaillaan kandidaatin tai maisterin tutkintoa suomalaisessa yliopistossa tai ammattikorkeakoulussa, täytä hakemuksesi täällä:.

  • Jos olet aikuisopiskelija (et suorita suorita parhaillaan tutkintoa suomalaisessa korkeakoulussa) täytä hakemuksesi täällä.

Kun hakemuksesi on hyväksytty, saat ilmoitussähköpostin, jossa on linkki opiskelupaikan vastaanottoon. Tämä on vain henkilöllisyytesi vahvistamista varten. Noudata ohjeita ja ota paikka vastaan Oma Opintopolussa.

Hakemuksia käsitellään viisi kertaa vuodessa. Valitettavasti emme voi tehdä poikkeuksia aikatauluun. Opintopisteet rekisteröidään Aalto-yliopiston opiskelijarekisteriin. Näet kaikki kurssit, joihin olet hakenut kirjautumalla Oma Opintopolkuun.

Aikuisopiskelijat voivat saada kurssista digitaalisen suoritusmerkin, jonka voit helposti jakaa esim. LinkedIn-profiilissasi. Merkkiä voi hakea, kun opintopisteet on rekisteröity. Lisätietoja FITechin digitaalisista suoritusmerkeistä FITech-verkkosivustolla.

Palautusta lähetetään...