Oppikerta 6, 16.2.1999

(1) Abadi-Needhamin artikkelin käsittely jatkuu. (2) Sen jälkeen lisää sääntöjä protokollien suunnitteluun Andersson-Needhamin artikkelista. (3) Lopuksi tiivistä allekirjoitusasiaa (jota tosin jatketaan vielä myöhemminkin)!

(1) Abadi-Needham (jatko)

Käsitellään esimerkit: 3.1 (Denning-Sacco), 3.4 (varhainen SSL), 5.1 (X.509) & 5.2 sekä 9.1 (Needham-Schroeder). Lopuksi vielä 3.2 (Woo-Lam), jossa kertautuu useampi periaate.

(2) Julkisen avaimen protokollien erityispiirteitä

Suosituksia Anderssonin ja Needhamin artikkelista:
  1. Allekirjoita ennen salausta (Abadi-Needhamin 5. periaate)
  2. Ole perillä siitä, mikä (avaintieto) erottaa oliot toisistaan. Saman avaimen käyttöä eri tarkoituksiin kannattaa välttää. Saman protokollan eri ajot pitää voida erottaa.
  3. Varmistu siitä ettei vastustaja voi käyttää allekirjoitustasi tai salauksen purkuasi oraakkelina, ts. hän ei saa sinua suorittamaan näitä operaatioitasi mille tahansa syötteelle siten, että hän saa jonkin haluamansa asian lasketuksi sinun avullasi.
  4. Pidä lukua biteistä: minkä tehtävänä on toteuttaa "ekvivokaatiota" (monimerkityksisyyttä), minkä redundanssia ja minkä laskennallista monimutkaisuutta. Redundanssin pitää perustua tukevasti sovellusyhteyteen eikä lisäbittejä saa voida käyttää sinua vastaan.
  5. Älä oleta kenenkään muiden "salaisuuksien" olevan salaisia - lukuunottamatta varmenneviranomaista (johon tyypillisesti pitää voida luottaa).
  6. Älä oleta saamasi viestin olevan mitään erityistä muotoa, ellet voi tarkistaa tätä.
  7. Kryptoprimitiivien (parametrien) rajat pitää selvittää: montako avainta tietyllä algoritmilla kannattaa enintään generoida, kuinka suuren salaliiton kynnysprotokolla sallii, montako blokkia tietyllä algoritmilla voi salata.
  8. Vankka turvallisuus perustuu eksplisiittisyyteen: pitää olla selvillä kaikista erityisominaisuuksista, joita voi käyttää julkisen avaimen primitiivin vastaiseen hyökkäykseen: Tällaisia voivat olla erityiset yhtälöt (esim. multiplikatiivinen homeomorfismi) sekä yleiset turvaominaisuudet, kuten nimeäminen, tyypitys, tuoreus sekä alkuoletukset ja tavoiteltavat tulokset.

(3) Lisää allekirjoituksesta

Otetaan esille
Luokitusta
Allekirjoitusten perusluokitukset: Deterministisiä systeemejä on kahta lajia: kertakäyttöiset ja monikertakäyttöiset (jotka ovat tavallisimpia).

Systeemiä, jossa viestin palautus on mahdollinen, voidaan käyttää samaan tapaan kuin liiteallekirjoitusta (ja usein näin tehdäänkin). Jos näin ei tehdä, tarvitaan sellaista muunnosta, jolla viestiin lisätään redundanssia ennen allekirjoitusta (esim. viesti toistetaan eli M:n sijasta onkin MM). Tällöin verifioija tuleekin palauttaneeksi ensin redundantin viestin ja hyväksymiskriteerinä toteaa onko redundanssi sellaista kuin pitääkin ja vasta sitten suorittaa käänteismuunnoksen alkuperäiseksi viestiksi. Redundanssifunktioita esitellään hieman myöhemmin.

ElGamal ja Rabin allekirjoittajina; DSA
ElGamalin salausalgoritmi ei ole kommutatiivinen, mutta vastaava allekirjoitusalgoritmi on hyvin samanlainen kuin salausalgoritmi. Lähtökohta suuri alkuluku p (diskreetti log modulo p vaikea), julkinen satunnaisluku g (p ja g voivat olla yhteisiä usealle käyttäjälle) sekä yksityinen satunnaisluku x. Lasketaan y = gx(mod p) ja julkiseksi avaimeksi otetaan kolmikko (y,g,p), salainen avain on x.

Viestin M allekirjoittaminen:

Allekirjoituksen todentaminen: annettu viesti M ja sen väitetty allekirjoitus (a,b). Tarkistetaan, toteutuuko ya*ab(mod p) = gM(mod p).

Vastaavasti Rabinin julkisen avaimen salausalgoritmista saadaan allekirjoitusalgoritmi: allekirjoitus on oleellisesti viestin neliöjuuri. Sen pystyy laskemaan vain osapuoli, joka tuntee modulin n tekijät p ja q.

DSA on DSS-standardin käyttämä algoritmi, joka muistuttaa ElGamalin allekirjoitusta, mutta parametrien valinta tehdään Schnorrin periaatteiden mukaan (1991, -93, -96)

  1. valitse 160-bittinen alkuluku q.
  2. valitse sellainen 521-1024 -bittinen alkuluku p, että (p-1)/q menee tasan.
  3. valitse satunnainen h ja laske g = h(p-1)/q mod p (Jos tulos olisi = 1 valitse uudestaan)
  4. valitse satunnainen k ja laske y = gk mod p.
  5. Julkinen avain on nelikko (p,q,g,y).

Viestin M allekirjoittaminen (H on tiivistefunktio):

Allekirjoituksen todentaminen: annettu viesti M ja sen väitetty allekirjoitus (a,b), jossa 0<a,b<q. Tarkistetaan, toteutuuko (gu*yv mod p) mod q = a, missä u = H(M)*b-1 mod q ja v = a*b-1 mod q

Fiat-Shamirin algoritmissa suoritetiin nollatietotunnistus käyttäen periaatetta "sitoutuminen-haaste-vaste". Korvaamalla todentajan lähettämä haaste viestistä laskettavalla tiivisteellä saadaan aikaan allekirjoitusalgoritmi (Feige-Fiat-Shamir). Sama muunnos toimii muissa vastaavissa nollatietoalgoritmeissa.


Luettavaksi: M. Burrows, M. Abadi, R.M. Needham: A logic of authentication. ACM Transactions on Computer Systems, 8(1), Feb 1990, 18-36. Tämä on 19-sivuinen julkaisu. Täysi 50-sivuinen raportti löytyy verkosta PS:nä.