Mikä on tärkein ero avaimen, IV:n ja nonce:n välillä?
Symmetrisen kryptografian yhteydessä avain on jotakin, joka pidetään salassa. Kuka tahansa, joka tietää avaimesi (tai osaa arvata sen), voi purkaa kaikki sillä salatut tiedot (tai väärentää kaikki sillä laskemasi todennuskoodit jne.).
(On olemassa myös ”epäsymmetrinen” eli julkisen avaimen kryptografia, jossa avaimessa on käytännössä kaksi osaa: yksityinen avain, joka mahdollistaa salauksen purkamisen ja/tai allekirjoittamisen, ja julkinen avain (joka on johdettu vastaavasta yksityisestä avaimesta), joka mahdollistaa salauksen ja/tai allekirjoituksen todentamisen.)
Vektori (IV) eli alkuvektori on laajimmassa merkityksessä vain alkuarvo, jota käytetään jonkun iteroidun prosessin aloittamiseen. Termiä käytetään muutamissa eri yhteyksissä ja se merkitsee erilaisia turvallisuusvaatimuksia kussakin niistä. Esimerkiksi kryptografisilla hash-funktioilla on tyypillisesti kiinteä IV, joka on vain mielivaltainen vakio, joka sisältyy hash-funktion spesifikaatioon ja jota käytetään hash-funktion alkuarvona ennen kuin mitään dataa syötetään:
Kääntäen suurin osa lohkosalakirjoitustapojen toimintatavoista vaativat IV:n, joka on sattumanvarainen ja ennalta arvaamaton tai ainakin ainutkertainen kullekin tietyllä avaimella salatulle viestille. (Tietenkin, jos kutakin avainta käytetään aina vain yhden viestin salaamiseen, voidaan tyytyä käyttämään kiinteää IV:tä). Satunnainen IV varmistaa, että jokainen viesti salataan eri tavalla, jolloin useiden samalla avaimella salattujen viestien näkeminen ei anna hyökkääjälle enempää tietoa kuin yhden pitkän viestin näkeminen. Erityisesti se varmistaa, että salaamalla sama viesti kahdesti saadaan kaksi täysin erilaista salaustekstiä, mikä on välttämätöntä, jotta salausjärjestelmä olisi semanttisesti turvallinen.
Joka tapauksessa IV:tä ei tarvitse koskaan pitää salassa – jos se olisi, se olisi avain, ei IV. Itse asiassa useimmissa tapauksissa IV:n pitäminen salassa ei olisi käytännöllistä, vaikka niin haluttaisiinkin, koska vastaanottajan on tiedettävä se voidakseen purkaa datan salauksen (tai todentaa hashin jne.).
Nonce on laajassa merkityksessä vain ”vain kerran käytettävä numero”. Ainoa asia, jota noncelta yleisesti vaaditaan, on se, että sitä ei saa koskaan käyttää kahdesti (asiaankuuluvassa laajuudessa, kuten salauksessa tietyllä avaimella).Lohkosalakirjoituksessa käytettävät yksilölliset IV-luvut kelpaavat nonceiksi, mutta monet muutkin salausmenetelmät käyttävät nonceja.
On jonkin verran erimielisyyttä siitä, kumpaa termiä ”IV” ja ”nonce” käytetään eri lohkosalakirjoitustapojen toimintatapojen kohdalla: jotkin kirjailijat käyttävät yksinomaan jompaakumpaa, kun taas jotkin käyttävät eroa näiden välillä. Erityisesti CTR-toimintatavan osalta jotkut kirjoittajat varaavat termin ”IV” koko salakirjoituksen syöttölohkolle, joka muodostuu nonce-arvon ja alkulaskurin arvon (yleensä kaikki nollabitit sisältävä lohko) ketjuttamisesta, kun taas toiset eivät käytä termiä ”IV” CTR-toimintatavan osalta lainkaan. Tätä kaikkea mutkistaa se, että on olemassa useita variaatioita siitä, miten CTR-tilassa viestin mukana lähetetty nonce/IV todellisuudessa liitetään alkulohkosalakirjoitussyötteeseen.
Kääntäen muissa tiloissa kuin CTR:ssä (tai niihin liittyvissä tiloissa, kuten EAX:ssä tai GCM:ssä) termi ”IV” on melkeinpä yleisesti suositeltavampi kuin ”nonce”. Tämä pätee erityisesti CBC-tilassa, koska siinä IV:lle asetetaan vaatimuksia (erityisesti, että ne ovat arvaamattomia), jotka menevät pidemmälle kuin tavanomainen vaatimus ainutkertaisuudesta, jota odotetaan nonceilta.