Predstavljajmo si, da imamo 26 strano kocko, ki predstavlja alfabetične zamike angleške abecede. Za vsako črko sporočila vržemo kocko, ki nam da nek naključni alfabetični zamik.
Tako smo dobili seznam zamikov, ki so popolnoma naključni. Sedaj dešifrator v šifri ne bo mogel dobiti nobenega repetitivnega vzorca, kot je ponavljanje ključne besede, saj je naša šifra osnovana na dveh pomembnih lastnostih:
- naključni zamiki (v ozadju se ne skriva noben algoritem)
- frekvenca črk bo za dovolj veliko sporočilo zdaj za vse črke enaka, saj so vse enako verjetne, da se pojavijo (ker je alfabetični zamik določen naključno). Enkripcija ne bo za sabo pustila nobene sledi, ki bi dešifratorju omogočala razvozlanje kode.
To vrsto šifriranja imenujemo The one time pad.
Paziti pa moramo, da je seznam naključnih zamikov enako dolg črkam sporočila ali daljši, saj tako nikoli ne pride do ponavljanja. Niti ne smemo enakega seznama večrkat uporabiti za šifriranje drugih sporočil, saj bi tako ustvarili repetitivni vzorec (kot da bi večkrat uporabili enako ključno besedo - to pa smo videli, da ni varno šifriranje).
V praksi se je izkazalo, da je generiranje popolno naključnih števil s stroji nemogoče, saj so deterministični in ne morejo zgenerirati popolnoma naključna števila brez zunanjega upliva (recimo vnosa uporabnika).
Izumili so tako imenovana psevdonaključna števila, ki so generirana s pomočjo posebnih algoritmov, ki simulirajo naključnost. Seznam teh števil je odvisen od začetnega stanja algoritma oz. izbire semena.
Poglejmo si en primer takega algoritma, kjer generiramo psevdonaključna števila s pomočjo kvadriranja:
V tem algoritmu smo za seme uporabili število 121 (začetno stanje oz. vrednost algoritma).
Več o tem algoritmu si lahko preberete na naslednji povezavi: Middle square method
Ker so to psevdonaključna števila, se bodo enkrat začela ponavljati, saj se bo enkrat neko število zaporedja ponovilo in zaporedje bo dobilo periodo. Dolžina periode je odvisna od izbire začetnega semena. Nekatera števila približno enake velikosti so sposobna zgenerirati dalješe zaporedje od ostalih. Največja možna dolžina periode je seveda enaka velikosti semena, saj bo vsako zaporedje dobilo svojo periodo. To pa ne pomeni nujno, da bo večje seme zagotovo zgeneriralo daljše zaporedje, kot manjše seme.
Glede na dolžino teksta, ki ga želimo šifrirati izberemo primerno veliko seme, ki bo tvorilo vsaj tako dolgo zaporedje naključnih alfabetičnih zamikov, kot je dolžina teksta. Tako bomo zagotovili, da pri šifriranju ne bo prišlo do ponavljanja zamikov in vzorcev (lahko si predstavljamo, da je to šifriranje s ključno besedo, ki je enaka ali večja od dolžine šifriranega teksta). Če bi uporabili zaporedje zamikov s neko periodo, bi namreč ustvarili šifriranje s ključno besedo. Za to šifriranje smo pa že pokazali da v splošnem ni varno.
Torej za varno šifriranje mora pošiljatelj zagotoviti, da izbrano seme tvori zaporedje z dovolj veliko periodo. Perioda zaporedja mora biti enaka ali večja od dolžine teksta, ki ga pošiljatelj želi zašifrirati.
Prejemnik morata poznati seme in algoritem za tvorbo psevdonaključnih števil, da lahko razšifrirat sporočilo pošiljatelja.
Seme in algoritem psevdonaključnih števil pri One time padu predstavljata skrivni ključ.