**Ühekordne šifriplokk** on krüptograafias kasutatav šifreerimise algoritm, mida ei ole võimalik lahti murda. Tegemist on ainsa teada oleva šifreerimise algoritmiga, mille murdmatus on matemaatiliselt tõestatud. 

Selleks, et šifreerimine tõesti murdmatu oleks, peavad algoritmi kasutades olema rahuldatud järgmised tingimused:

* šifreerimiseks kasutatav võti on vähemalt sama pikk kui šifreeritav tekst,
* võti on juhuslik,
* võtit ei kasutata šifreerimiseks rohkem kui üks kord,
* võtit hoitakse saladuses.

Šifreerimisel seatakse lihttekst paari vähemalt sama pika privaatse võtmega. Seejärel seotakse iga märk lihttekstis vastava märgiga privaatses võtmes ning vastavad märgid kombineeritakse omavahel, kasutades modulaarset liitmist (tihti kasutatakse ka välistavat disjunktsiooni). Dešifreerimine töötab vastupidi – paari seatakse šifreeritud tekst ja privaatne võti ning seejärel kombineeritakse vastavad märgid omavahel.

Näide
-----

Oletame, et Alice tahab saata Bobile šifreeritud sõnumi "TERE" ja kasutab selleks juhuslikku võtit "AKTP". Esmalt seame iga tähega vastavusse numbri, mis väljendab tähe positsiooni ladina tähestikus (alates arvust 0). Seejärel seame paari iga tähe lihttekstis vastava tähega võtmes. Järgmiseks kombineerime iga paari liikmeid, kasutades modulaarset liitmist mooduliga 26 (tähtede arv ladina tähestikus). 

```
T		E		R		E		lihttekst
19 (T) 		4 (E)		17 (R)		4 (E)		lihttekst
0 (A)		10 (K)		19 (T)		15 (P)		võti
19		14		36		19		võti + lihttekst
19 (T)		14 (O)		10 (K)		19 (T)		(võti + lihttekst) mod 26
T		O		K		T		šifreeritud tekst
```

Alice saadab Bobile šifreeritud teksti "TOKT". Bob kasutab sõnumi dešifreerimiseks sama võtit ja sama algoritmi vastupidises järjekorras ehk modulaarse liitmise asemel kasutatakse modulaarset lahutamist. 

```
T		O		K		T		šifreeritud tekst
19 (T)		14 (O)		10 (K)		19 (T)		(šifreeritud tekst
0 (A)		10 (K)		19 (T)		15 (P)		võti
19		4		-9		4		šifreeritud tekst – võti
19 (T)		4 (E)		17 (R)		4 (E)		(šifreeritud tekst – võti) mod 26
T		E		R		E		dešifreeritud tekst
```

Puudused
--------

Hoolimata ühekordse šifriploki turvalisusest on algoritmi rakendamisel praktikas palju tõsiseid puudujääke, sest perfektse salastatuse püsimiseks peab see rahuldama mitut nõudmist. 

### Juhuslikkus

Selleks, et ühekordne šifriplokk oleks turvaline, peavad šifreerimisel kasutatavad võtmed olema juhuslikud. Tõeliselt juhusliku võtme genereerimine on aga matemaatiliselt keeruline ülesanne ja isegi tuntud krüptograafias kasutatavad juhusliku numbri generaatorid võivad genereerimiseks kasutada funktsioone, mille turvalisus pole matemaatiliselt tõestatud. 

### Võtme kasutamine ja vahetamine

Ühekordse šifriploki kasutamise turvalisuse püsimiseks ei tohi ühte ja sama võtit šifreerimiseks kasutada rohkem kui ühe korra, sest muidu on võimalik šifreeritud tekstide peal rakendada krüptoanalüüsi, mis viib väga suure tõenäosusega sõnumite paljastamiseni. Seega on iga uue sõnumi saatmisel vaja uut juhuslikku võtit, mida tuleb šifreerimist kasutavatel osalistel omavahel vahetada ning seetõttu on ühekordne šifriplokk täpselt sama turvaline, kui on poolte vaheline võtme vahetamise meetod, sest võtme lekkimisel on lihtne paljastada ka sõnumivahetus. 

### Võtme pikkus

Lisaks on ühekordse šifriploki suureks puuduseks ka tingimus, et võti peab olema vähemalt sama pikk kui sõnum. See teeb pikkade šifreeritud sõnumite saatmise väga ebaefektiivseks ja ebaturvaliseks, sest võti võib osutuda elektrooniliseks vahetamiseks liiga pikaks ja vaja võib minna andmekandjaid. Võtmete talletamine aga andmekandjatele on ebaturvaline, sest sealt on hiljem võimalik (ka kustutatud) andmeid välja lugeda.

Viited
------

1. 1 2 3 4 5 6 7 8  The One-time pad, Dirk Rijmenants, vaadatud 05.11.2018
2. ↑  The One-time pad, Commonlounge, Howard Poston, Keshav Dhandhania, vaadatud 29.11.2018
3. ↑  Discuss about data security, DiskGetor, vaadatud 29.11.2018