TTKK / Tietoliikenne / J.Koskinen : Tietoturvallisuuden perusteet

3. viikko, ke 15.9.1999

Kaksi "eksoottista" protokollaa

Kumpaakin seuraavista voidaan soveltaa osana elektronisen äänestyksen protokollaa.

Sokea allekirjoitus

Olkoon B:llä RSA-avaimet n, e, ja d joista n ja e ovat julkiset ja d salainen. Miten A voi saada dokumentilleen m allekirjoituksen B:ltä ilman, että B näkee m:ää tai edes omaa RSA-allekirjoitustaan md mod n?

A valitsee satunnaisluvun r ja lähettää B:lle luvun rem mod n. B allekirjoittaa tämän eli laskee luvun (rem)d mod n, ja palauttaa sen A:lle. Koska tämä luku on sama kuin rmd, A saa haluamansa jakamalla tämän r:llä.

Yhtenä sovelluksena on myös anonyymi elektroninen käteinen, josta hieman lisää myöhemmin.

Salaisuuksien salattu myynti

Myyjällä on joukko kysymyksiä, joihin hän tarjoaa vastausta. Ostaja tarvitsee vain yhden vastauksen, mutta ei halua paljastaa minkä. Hän ei kuitenkaan halua maksaa kaikista. Seuraava protokolla on peräisin turkulaiselta Ari Renvallilta. Olkoot salaisuudet t-bittisiä lukuja s1,...,sk, joista B haluaa i:nnen eli si:n. Merkitään operaatiota XOR pelkällä +:lla.
1. A --> B : f, x1,..., xk
f on A:n tiedossa olevalla salaluukulla varustettu yksisuuntainen funktio (esim. RSA, josta pitää siis kertoa "n" ja "e"), xj:t ovat t-bittisiä satunnaislukuja.
2. B --> A : z
z = xi + f(a), missä a on satunnainen t-bittinen luku (oletus on, että f kuvaa sellaisen aina t-bittiseksi. Siis esim. RSA:ssa modulin n on oltava t-bittinen.).
3. A --> B : y1,...,yk
yj = sj + f-1(z + xj)
4. B saa selville si = yi + a.
Harjoitus: Tarkista lasku.
Salaisuuksien salaisesta myynnistä käytetään myös termiä ANDOS, All-or-Nothing Disclosure Of Secrets. Ostettava salaisuus voi käytännössä olla toki paljon pitempikin kuin t bittiä. Protokollan mukaiset salaisuudet voivat nimittäin olla salausavaimia.

Elektroninen äänestys

Vaaleja on monen muunkinlaisia kuin ensinnä mieleen tulevat valtiolliset tai kunnalliset vaalit. Yritykset järjestävät osakkailleen ja yhdistykset jäsenilleen edustuselinten vaaleja. Myös mielipiteitä kysytään ja erona tilastollisiin kyselyihin verrattuna on se, että äänioikeutettuja ovat kaikki jonkin populaation jäsenet, eikä vain otos. Monet vaaleista suoritetaan postitse, eikä silloinkaan millään valtiollisten vaalien protokollalla tietyissä ennakkoäänestyspaikoissa, vaan yksinkertaisesti palauttamalla kirjeitse saatu vaalilippu.

Miten vaali voitaisiin järjestää tietoverkon avulla? Tutustu yhdysvaltalaiseen äänestysdemonstraatioon, jossa mallina on Coloradon Boulderin piirikunnassa tietyllä äänestysalueella marraskuussa pidettävä vaali. Siinä kysytään kaikenlaista, jollaiseen suomalaisessa yhteiskunnassa ei ole totuttu. Muutama usein esiintyvä termi: Contest = äänestyksen aihe ("kisa"), jossa on valittavana eri vaihtoehtoja. Ballot = vaalilippu, oleellisesti tietorakenne, johon valinnat merkitään. Tallying = äänten (keräys ja) laskenta.

Demon alussa vaaditaan käyttäjätunnus ja salasana, joilla äänestäjä yksilöidään. Niiden jakelua demossa ei selitetä, mutta järjestelmä voisi olla sama kuin Suomessa ilmoitus äänioikeudesta, joka lähetetään postitse. Tässä järjestelmässä äänestämiseen ei kuitenkaan tarvita muuta osoitusta henkilöllisyydestä eli autentikointi kuuluu luokkaan heikko. Demossa tunnuksen ja salasanan voi tietenkin valita satunnaisesti.

Sama ohjelma, palvelin, vastaanottaa tiedot sekä äänestäjästä että hänen antamistaan äänistä. Äänestäjälle vakuutellaan seuraavasti: "Is my vote anonymous? Yes. Once you cast your vote, there is no record kept to tie your vote to your name. Your ballot is submitted anonymously to the tallying machine which records your votes." Mitä perusteita on luottaa tähän?

Äänestyksessä, toisin kuin useissa muissa protokollissa, esim. viime kerralla mainitussa avaintenhallinnassa, joudutaan rajoittamaan luotetun osapuolen roolia. Tätä ei jouduta tekemään suorituskyky- tai saatavuusvaatimusten vaan tietojenkäsittelyn uskottavuuden takia: mikään osapuoli ei saa edes periaatteessa tietää yksilöiden äänestyskäyttäytymistä. On tosin olemassa (pieneen mittakaavaan sopivia) hajautettujakin äänestysprotokollia, mutta etsitään nyt kuitenkin sellaista protokollaa, jossa on jonkinlainen keskus, vaaliviranomainen, joka kerää äänet laskentaa varten. Samalla joudutaan siis olettamaan, että se ansaitsee äänestäjien tietyntasoisen luottamuksen. Se ei esimerkiksi myy käyttämättä jääneitä vaalilipun elektronisia vastineita.

Äänestys selvästikin vaatii äänestäjän yksilöinnin jossain vaiheessa, mutta sen ei välttämättä tarvitse toteutua vielä ääniä kerättäessä. Riittää, jos se toteutuu äänten laskennassa, kunhan huijareiden takia ei tarvitse uusia koko prosessia. Yksilöinnin lähtökohtana täytyy olla jonkinlainen rekisteröinti, eli liittyminen tai pääseminen äänioikeutettujen joukkoon. Tässä vaiheessa kunkin yksilön pitää saada haltuunsa jotain sellaista "omistettua" tai "tiedettyä", jota kukaan muu ei voi kopioida eikä muuttaa (seurauksitta). "Jotain omistettua" vastaa perinteisesti vaalivirkailijan antama vaalilippu, joka on äänestäjän kädessä. Koska nyt puhutaan sähköisesti välitettävästä tiedosta, mitään omistettua ei voida pudottaa mihinkään vaaliuurnaan, vaan joudutaan jossain vaiheessa siirtymään "johonkin tiedettyyn". (Vai voisitko kuvitella, että lyijykynämerkinnät karistetaan uurnaan taitetun vaalilipun välistä?)

Äänestäjälle annetaan jotain sellaista yksilöllistä tietoa, jolla hän pystyy osoittamaan antamansa äänen tavalla tai toisella oikeaksi, mutta se on tehtävä niin, että ääntä ja yksilöä ei voi kytkeä toisiinsa. Allekirjoitus ei siis tule kysymykseen ainakaan normaalissa merkityksessä, joka on juuri kytkentä. Lisäksi äänestäjän haltuun ei saisi mielellään jäädä mitään sellaista, joka kytkee hänet annettuun ääneen siinä määrin, että hän pystyisi osoittamaan mitä/ketä hän äänesti. Tällä estettäisiin se, ettei hän voi (niin helposti) myydä ääntään ja varsinkin se ettei häntä voida valvoa tai pakottaa. Jotkin ns. kuitittomat protokollat kiinnittävät erityishuomion tähän, ja paperinen vaalilippuhan irtoaa aikanaan kädestä ja sekoittuu muihin. Jatkossa tämä asia jää kuitenkin vähemmälle huomiolle.

Pohdittavaksi tässä vaiheessa: Äänestäjä ei siis voi ääntä antaessaan käyttää salaista tietoaan allekirjoitukseen, mutta voisiko edellä luonnosteltua tavoitetta kuitenkin lähestyä allekirjoituksen keinoin jostain aivan muusta näkökulmasta? Auttaisiko sokea allekirjoitus tässä ja kuka muu voisi olla allekirjoittajana kuin äänestäjä?

Keskusjohtoisen äänestysprotokollan perusvaiheet ovat ilmeisesti:

  1. Rekisteröinti: ketkä saavat äänestää. Mukana voi olla paljon muitakin asioita vaalien julistamisesta, päivämääristä ja säännöistä alkaen mahdolliseen äänestäjien ilmoittautumiseen asti, mutta tämä vaihe voidaan jatkossa jättää vähemmälle huomiolle;
  2. Validointi eli kelpuutus: äänestäjän valtuutuksen tarkastaminen;
  3. Keräys: annettujen äänten koonta;
  4. Laskenta ja tulosten ilmoittaminen.
Yhtä ilmeiset (ja varsin yleiset) perusvaatimukset protokollalle:
  1. Tarkkuus: (1) annettua ääntä ei voi muuttaa, (2) kelvollinen ääni ei voi tulla hylätyksi (3) eikä kelvoton ääni hyväksytyksi.
  2. Demokraattisuus (haavoittumattomuus): (1) vain äänioikeutetut voivat antaa kelvollisia ääniä (2) ja kukin heistä enintään yhden.
  3. Yksityisyys: (1) kukaan (muu) ei voi kytkeä ääntä sen antajaan (2) eikä äänestäjä voi todistaa minkä äänen antoi.
  4. Todennettavuus: joka voi toteutua eriasteisena: (i) vaaliviranomaiset pystyvät havaitsemaan karkeat virheet, (ii) muutkin osapuolet pystyvät tähän, (iii) jokainen pystyy todentamaan onko oma ääni tai (iv) ovatko kaikki äänet tulleet oikein lasketuiksi. Toinen ulottuuvuus on sitten, voidaanko korjauksia tehdä ja voiko (kohdassa iii) korjauksen saada menettämättä yksityisyyttään.
Toivottavia ominaisuuksia:
  1. Helppokäyttöisyys;
  2. Joustavuus valittavana olevien vaihtoehtojen tyypin suhteen (sallitaanko jopa vapaamuotoiset vastaukset);
  3. Riippumattomuus äänestäjän sijainnista.
Mahdollinen lisäominaisuus: jokainen saa tietää, kuka äänesti ja kuka ei.

Oletetaan, että voidaan luottaa siihen, että kelpuuttaja (=validoija) ja äänten kerääjä eivät toimi yhdessä. Edellinen voi kyllä samalla olla rekisteröijä ja jälkimmäinen saa hoitaa laskennan. Järjestetään vaali seuraavasti:

  1. Äänestäjä pyytää kelpuuttajalta henkilökohtaisen kelpoisuusmerkin ('eligibility token' tai 'identification tag'), joka sellaisenaan ei kuitenkaan riitä yksilöimään äänestäjää.
  2. Äänestäjä lähettää äänensä ja kelpoisuusmerkkinsä äänten kerääjälle, joka on saanut kelpuuttajalta luettelon kaikista myönnetyistä merkeistä - siis pelkästään merkit, ei (nimi,merkki)-pareja, jotka kelpuuttajalla toki on tiedossaan.
Näissä vaiheissa tarvitaan toki erinäisiä "normaaleja" mekanismeja viestien luottamuksellisuuden, autenttisuuden ja eheyden takaamiseen. Yksi keskeinen mutta ehkä vähemmän ilmeinen vaatimus on kuitenkin, että jälkimmäistä lähetystä ei saa pystyä teknisestikään jäljittämään! Tarvitaan julkisia äänestyspäätteitä (tms.) tai jokin anonymisointipalvelu kotoaan äänestäviä varten (näistä lisää vajaan kahden viikon kuluttua; postiäänestyksessä menetelmänä ovat kaksoiskirjekuoret). Tästä huolimatta ehdotettu järjestelmä on toivoton: mikään ei estä äänten kerääjää muokkaamasta ääniä. Vaikka häneen/siihen siis luotetaan jonkin verran, niin ei sentään näin paljon (koska parempaankin pystytään).

Tehdään seuraava muunnos: äänestäjät lähettävätkin äänensä salattuna itse valitsemillaan symmetrisillä avaimilla. Kerääjä julkaisee luettelon näistä salatuista äänistä. Hän ei ole voinut tehdä mitään järkeviä muutoksia niihin. Määräajan mentyä umpeen äänestäjät lähettävät avaimensa, kerääjä purkaa salaukset ja julkaisee äänet. Äänestäjät voivat nyt tarkistaa ääntenlaskun ja sen, että oma ääni on mukana listassa (kelpoisuusmerkistä lasketun hash-arvon rinnalla). Oikaisuvaatimus on mahdollista toteuttaa nimettömänä.

Lähtökohtana ollut oletus kelpuuttajan ja kerääjän riippumattomuudesta ei valitettavasti ole yleensä realistinen. Jätetään se siis tekemättä ja pyydetään kelpuuttajalta sellainen kelpoisuusmerkintä, joka osoittaa äänioikeuden, mutta ei yksilöi äänestäjää. Toisin sanoen kelpuuttajalle lähetetään omalla nimellä varustetussa sinetöidyssä kuoressa tyhjä äänestyslippu, johon kelpuuttaja lyö kuoren läpi kelpoisuusleiman ja palauttaa äänestäjälle, joka avaa kuoren, merkitsee äänensä lippuun ja lähettää sen kerääjälle. Digitaalisessa maailmassa kelpuuttajan operaatio voidaan toteuttaa sokealla allekirjoituksella, mutta teknisten yksityiskohtien vuoksi äänestysmerkinnän pitää siinä vaiheessa jo olla tehtynä - ei mikään ongelma. Tällainen on Fujioka-Okamoto-Ohta-tyyppinen vaaliprotokolla (1993).

On toinenkin mahdollisuus saada kelpuuttajalta henkilökohtainen äänestykseen oikeuttava merkintä, jota ei silti voi kytkeä henkilöön. Ratkaisu on turkulainen (Nurmi, Salomaa, Santean) ja se perustuu edellä esiteltyyn ANDOS-ideaan, jonka toteutus tosin on melko kompleksinen. Tarvitaan nimittäin hyvin suuri salaisuuksien avaruus, josta kukin äänestäjä "ostaa" itselleen yhden kelpoisuusmerkin, joka on eri kuin kenelläkään muulla (hyvin suurella todennäköisyydellä).

Kummassakin näistä protokollista on ongelmana se, että vaaliviranomainen voi äänestää niiden puolesta, jotka jättävät äänestämättä. Yksi mahdollisuus vähentää tätä riskiä on edellyttää ilmoittautuminen rekisteröintivaiheessa ja julkaista ilmoittautuneiden lista. Äänestysprosentti suhteessa tähän listaan on todennäköisesti korkea. Jos äänestämättä jättämisen sijasta jokainen antaisi edes tyhjän äänen, ongelmaa ei olisi.

Digitaalinen maailma tarjoaa paitsi uudenlaisia ongelmia myös ennenarvaamattomia mahdollisuuksia: Olkoon f yksisuuntainen funktio ja s äänestäjän valitsema argumentin arvo. Lähettämällä äänen ja kelpoisuusmerkin mukana arvo f(s) saadaan aikaan mahdollisuus vaihtaa ääni toiseksi yksityisyyden kärsimättä. Äänen vaihtaminen toteutuu yksinkertaisesti lähettämällä vanha ääni, uusi ääni, s ja f(s'), missä s' on uusi satunnainen luku.

Fujioka-Okamoto-Ohtan protokollan läheinen muunnos on toteutettu Sensus-järjestelmässä, joka oli diplomityötä vastaava projekti. Sitä ei enää ylläpidetä, mutta sen voi edelleen ladata vuodelta 1996 peräisin olevilta sivuilta. Tässä järjestelmässä äänestäjän ei tarvitse odottaa kryptattujen äänten julkaisemista, vaan hän saa kuitin, jonka perusteella hän tietää äänensä tulleen "kuuluville" ja voi heti lähettää purkuavaimen. (Kuitti on oleellisesti sama kuin kryptattu ääni, joten ero pieni, mutta tekee järjestelmästä käytännöllisemmän.)

Tarkempaa tietoa, myös muista protokollista, löytyy mm. artikkelista L.F.Cranor, R.K.Cytron: Sensus: A Security-Conscious Electronic Polling System for the Internet (Proc. of the Hawai`i International Conference on System Sciences, Jan 7-10, 1997). Lisätietoja löytyy Cranorin ylläpitämältä elektronisen äänestyksen linkkisivulta.

Turvallinen sähköposti, PGP

Pretty Good Privacy, PGP on laajalti käytetty turvallisen sähköpostin de-facto-standardi, joka on suurelta osin yhden henkilön, Phil Zimmermannin, aikaansaannos (1991-). Kyseessä on helppokäyttöinen, parhaista kryptoalgoritmeista (alunperin IDEA ja RSA) koostuva paketti (yksi ohjelma), jonka dokumentaatio ja lähdekoodi ovat vapaasti saatavilla. Ohjelma kannattaa kytkeä olemassaolevaan email/news-ohjelmaan (esimerkki Pine'n konfiguroinnista), mutta sitä voi käyttää irrallaankin operoimalla tiedostoihin talletettuja viestejä.

Avainten jakelu tapahtuu "ruohonjuuritasolla": varmenneviranomaisten sijasta luotetut esittelijät ('introducers') toimivat avainten varmentajina. Jokaisella käyttäjällä on omassa käytössään avainrengas, jossa on

Muiden osapuolten julkisia avaimia käytetään heille lähetettävien viestien salauksessa ja niillä verifioidaan heiltä saadut allekirjoitukset. PGP ilmoittaa käyttäjälle näiden toimien yhteydessä, miten luottavaisesti käyttäjä voi suhtautua näiden operaatioiden tietoturvaan. Arvio perustuu avainrenkaassa oleviin avainten ja niiden omistajien luotettavuutta kuvaaviin tietokenttiin. Palataan tähän hetken kuluttua.

PGP:n algoritmeja ovat:

(Melko tiivistä lisätietoa algoritmeista.)

Kryptologisesti vaativampi mutta käsitteellisesti yksinkertaisempi puoli PGP:tä on sen varsinainen toiminta, josta seuraavassa esitellään miten osapuolen A viesti osapuolelle B muodostetaan. Merkintöjä:
Z = ZIP = tiivistys
H = hash = yksisuuntainen tiivistys
EK = kryptaus avaimella K
|| = katenaatio
Ks = istuntoavain, symmetrinen, joka viestille omansa. Avaimen luonnissa käytetään näppäinpainalluksia ja niiden ajoitusta, eräänlaisena satunnaistavana siemenlukuna, nimittäin osana syötettä IDEA-algoritmille.

Pelkkä autenttisuus (olettaen että B voi luottaa A:n julkiseen avaimeen KA), viesti on:
Z( EKA-1( H(M) ) || M )
Pelkkä luottamuksellisuus: (olettaen että A voi luottaa B:n julkiseen avaimeen KB):
EKs( Z(M) ) || EKB(Ks)
Sekä autenttisuus että luottamuksellisuus (vastaavin oletuksin):
EKs( Z( EKA-1( H(M) ) || M ) )  ||  EKB(Ks)
Vastaanottajan toimet viestin saavuttua ovat ilmeisiä (ensimmäisenä on radix-64-muunnos, jota ei tässä mainittu).

Avainrenkaat

Kuten yleensäkin salaus ja allekirjoittaminen hyvillä algoritmeilla ovat ongelmattomia, kunhan vain avaimiin, ja nimenomaan julkisiin, voidaan luottaa. PGP ei määrittele käytäntöä, jolla luottamuksen voi hankkia, mutta se tarjoaa mekanismit, joilla luottamusta voidaan käyttää ja liittää sitä julkisiin avaimiin.

Osapuolella B on avainrenkaassaan muiden tahojen julkisia avaimia ja kullekin niistä yksi tai useampia allekirjoituksia (sertifikaatteja) kolmansilta tahoilta. Katsotaan, mitä tietoja esiintyy osapuolen A kohdalla.

PGP laskee avaimeen KA liittyvään "pätevyys"-tietokenttään ('key legitimacy'): arvion sille, missä määrin B voi luottaa siihen, että kyseessä on A:n julkinen avain. Pätevyyttä on kolmea tasoa: ei luottamusta, marginaalinen ja täysi luottamus; lisäksi määrittelemätön ja tuntematon.

Jos avainrenkaassa on tahon C allekirjoitus avaimelle KA, PGP liittää (kopioi) siihen tiedon ('signature trust'-kentän), missä määrin B luottaa C:n kykyyn/rehellisyyteen (tms.) tuottaa tällaisia allekirjoituksia. Tässä on neljä tasoa: yleensä ei luotettava, yleensä luotettava, aina luotettava, äärimmäisen luotettava (jolloin C=B), lisäksi määrittelemätön ja tuntematon.

Jos taho C ei ole tuntematon, niin C:n julkinen avain kuuluu B:n avainrenkaaseen. Tällöin samainen B:n luottamus C:hen allekirjoittajana esiintyy myös C:hen liitetyssä kentässä 'owner trust' ja siitä PGP on se kopioinutkin (yleensä). Tarkasteltavana olleeseen tahoon A liittyy toki vastaava kenttä, mutta sillä on merkitystä vasta kun B saa A:n allekirjoittamana jonkun muun tahon julkisen avaimen. Erityisesti A:n 'owner trust' ei kerro mitään siitä, miten B luottaa A:n avaimen KA aitouteen.

Tässä mainittujen kolmen tietokentän välillä suoritetaan siis tiettyä automaattista laskentaa:

Bittitasolle ulottuvaa, mutta varsin tiivistä lisätietoa juuri tästä aiheesta saa sivulta "Keyring trust packet", joka on osa monesta paikasta löytyvää dokumenttia "File Formats Used by PGP 2.6", joka puolestaan on osa PGP:n käyttäjän opasta.

Avainten peruuttaminen on PGP:n heikoin osa. Avaimelle voidaan määrittää voimassaoloaika ja se ilmenee myös sertifikaatissa. Ennen tämän ajan umpeutumista ainoa peruutuskeino on allekirjoittaa peruutettavalla avaimella peruutusta koskeva ilmoitus ja lähettää se niille osapuolille, joiden arvelee voivan käyttää ko. avainta. Jotta käyttäjä varmasti pystyy laatimaan tämän peruutusvarmenteen ('revocation certificate'), se kannattaa tehdä ja tallettaan aina kun uusi avain on luodaan. Tällöin avain on vielä tallessa ja salauslausekin muistissa.

Tietoturvaohjelmistojen käyttöliittymiä koskien on tehty havaintoja, että kynnys on tavallisille käyttäjille korkea ja että käyttäjän tekemät virheet ovat vähintään osasyy useimpiin tietoturvaongelmiin. PGP:n version 5 käyttöliittymää pidetään yleisesti hyvänä. Silti Whitten ja Tygar tiivistävät käytettävyystutkimuksensa (ks. abstrakti) tulokset seuraavasti: "We conclude that PGP 5.0 is not usable enough to provide effective security for most computer users, despite its attractive graphical user interface, supporting our hypothesis that user interface design for effective security remains an open problem."

Intermezzo: lohkosalaus ja sen moodit

Yleinen informaatioteoreettinen tavoite salausalgoritmeissa on "diffusion and confusion". Näillä tarkoitetaan keinoja, joilla selvätekstin redundanssia kätketään, kun se algoritmissa muunnetaan salatekstiksi eli kryptotekstiksi. Konfuusio hämärtää selvä- ja salatekstin välistä yhteyttä suorittamalla korvauksia (yksinkertaisimmillaan). Diffuusiossa puolestaan hajotetaan selvätekstin jakaumia koko kryptotekstiin permutaatioiden avulla (taaskin yksinkertaisimmillaan).

Lohkosalaus eli blokkikryptaus

Edellä mainitut kaksi periaatetta tulevat selvimmin esille lohkosalauksessa, jossa algoritmia sovelletaan yhteen viestilohkoon eli kiinteään määrään viestibittejä kerrallaan. Kyseessä on siis funktio, jolla on parametrina avain ja joka muuntaa jokaisen n-bittisen vektorin joksikin toiseksi samanmittaiseksi. Pidentäminen ei olisi käytännöllistä ja lyhentävää funktiota taas ei voisi kääntää. Kompressio ennen kryptausta on sitten eri juttu (ja varsin suositeltava, koska se vähentää selvätekstin redundanssia). Tyypillinen n eli lohkon koko on 64 tai 128.

Useimmat algoritmit pohjautuvat Feistel-periaatteeseen: On jokin kiinteä funktio f, jota sovelletaan avaimeen (tai siitä laskettuun lukuun) ja viestin loppupuolikkaaseen. Tulos XOR-summataan viestin alkupuolikkaan kanssa. Seuraavaa kierrosta varten puolikkaat vaihdetaan, eli loppuun tulee äskeinen summa ja alkuun äskeinen loppupuolikas sellaisenaan. Kierroksia tehdään tietty määrä. Joka kierroksella käytetään avaimesta eri tavalla muodostettua osa-avainta. Salauksen purku ei edellytä funktion f kääntämistä vaan XOR-operaation ominaisuuden ansiosta riittää toistaa samat kierrokset, kunhan avainsekvenssi käydään lopusta alkuun.

Valitsemalla erilaisia funktioita f, ja erilaisia avainsekvenssejä saadaan erilaisia algoritmeja. On myös useita läheisiä muunnoksia Feistel-periaatteesta.

DES on vuonna 1977 standardoitu algoritmi, joka muodostuu 16 Feistel-kierroksesta. Avain on 56-bittinen. Joka 8:nneksi lisätään pariteettibitti, joten avain näyttää 64-bittiseltä. Lohkon koko on 64. Yksi tapa parantaa DES:n turvallisuutta on käyttää sitä kolminkerroin kahdella avaimella k1 ja k2. Merkitään: Ei = kryptaus ja Di = dekryptaus avaimella ki. Viestin M triple-DES-kryptaus on E1( D2 ( E1( M))). (Kolmeakin eri avainta voi tietysti käyttää, kuten PGP:ssä, mutta em. tekniikka on standardoitu.)

DES oli alunperin IBM:n ehdotus standardiksi vuodelta 1974. DES:n seuraajaksi tarkoitetun AES:n (Advanced Encryption Standard) luominen alkoi vuoden 1997 alussa. Virallinen kutsu ehdotuksille oli syyskuussa 1997. Elokuussa 1998 ensimmäisen AES-konferenssin yhteydessä NIST (National Institute of Standards and Technology) julisti 15 virallista ehdokasta julkisesti tutkittaviksi. Toinen konferenssi pidettiin maaliskuussa 1999. Ensimmäisen kierroksen julkinen kommentointiaika päättyi huhtikuussa 1999. Elokuussa 1999 julkistettiin loppukilpailuun hyväksytyt algoritmit, jotka ovat nimeltään MARS, RC6, Rijndael, Serpent ja Twofish. [AES-tilanteesta raportoiva NIST:n sivu]

Lohkoalgoritmien (käytön) moodit

Jos algoritmia käytetään kryptaamaan jokainen lohko erikseen, sanotaan että kyseessä on elektroninen koodisanakirja ECB (electronic code book mode). Siinä samanlainen lohko tuottaa aina saman kryptotekstin, mikä ei ole hyvä ominaisuus, jos teksti on pitkä. Algoritmi on kuitenkin nopea, koska se on mahdollista rinnakkaistaa.

Useimmiten on syytä käyttää jotain seuraavista ketjuttavista moodeista, joissa seuraavan lohkon kryptaus riippuu aiemmista. Kaikissa niistä tarvitaan yhden lohkon mittainen alustusvektori (IV) eli bittijono, joka toimii lohkoalgoritmin ensimmäisenä syötteenä. Sen ei tarvitse olla salainen.

Lohkoalgoritmi käytettynä OFB-moodissa tuottaa avaimesta ja alustusvektorista oleellisesti avainvirran (key stream), joka XOR-summataan selvätekstin kanssa. Virta on riippumaton selvätekstistä ja voidaan vaikkapa laskea etukäteen. Tässä on oikeastaan kyse vuokryptauksesta, jonka perusidea tuli esille jo toisella luentokerralla. Vuoalgoritmeihin palataan lyhyesti toiseksi viimeisellä kerralla.

Eri moodeilla on paitsi erilaiset kryptologiset ominaisuudet myös erilainen kyky toipua kryptotekstiin siirron aikana tulleista virheistä.