Motiváció:
A mai világban természetes, hogy internet segítségével egymásnak üzeneteket küldünk, weblapokat böngészünk vagy online vásárunk. Viszont minden online elküldött üzenet a megfelelő eszközökkel elfogható. Hogy védjük a saját privát információinkat (üzentek, jelszavak, stb.), fontos, hogy az üzenetek ne egy az egyben, hanem titkosítva legyenek elküldve. Tehát, ha nem megfelelő személy látja az általunk elküldött titkosított üzenetet, ő nem lesz képes semmilyen információt sem kinyerni az eredeti üzenetről.
Titkosírás:
A kriptográfia szó jelentése titkosírás. A cél egy olyan eljárás használata, hogy az átküldött információból a fogadó képes legyen az eredeti üzenetet visszafejteni, de ha más személyhez jut, akkor ő viszont semmit tud kinyerni. Ezt úgy tudjuk elérni, hogy a fogadó rendelkezik egy titkos információval, amit kulcsnak hívunk. A kulcs segítségével ő képes visszafejteni az üzenetet, azonban a kulcs nélkül ez nem lehetséges.
Szemléletes az üzenetet belerakjuk egy ládába, amit a küldő bezár. A ládát csak a megfelelő kulccsal lehet kinyitni, amivel csak a fogadó rendelkezik. Bárki, aki továbbítja (vagy látja) az üzenetet, az csak a ládát látja, magát az üzenet nem.
Történelmi titkosítók:
Titkosírást már az ókorban is használtak az üznetek védelmére. Ciceró leírás alapján Julius Caesar úgy küldött üzeneteket, hogy a szövegben minden betűt (latin abc) ciklikusan hárommal eltolt. A dupla betűk nélküli magyar abc-re nézve zebra szóból a bgeuc karaktersorozat lesz (pl. a -> á -> b -> c). (a dupla betűket, mint cs, gy, sz az egyértelmű visszafejthetőség miatt érdemes két betűként kezelni).
A fenti titkosítás nyilván nem biztonságos. Bárki, aki ismeri a módszert triviálisan visszafejtheti az üzenetet. Lehetséges javítás, ha nem mindig hárommal, hanem egy véletlen értékkel toljuk el a betűket. A véletlen értéket csak a küldő és a fogadó ismeri. Például 12-vel eltolás esetén a zebra szóból íolaj karaktersorozat képződik.
Szimmetrikus kulcsú titkosítás:
A történelmi titkosítóknál felsorolt titkosítások esetén a küldő és a fogadó rendelkezett egy közös kulccsal, amit csak ők ketten ismernek. Mind a titkosítás, mind a visszafejtés ennek a kulcsnak a felhasználásával történik. Szimmetrikus kulcsú titkosítással nagyon hatékony titkosítás érhető el. A hátránya, hogy szükség van egy közös kulcsra a küldő és a fogadó között. A legelterjedt szimmetrikus kulcsú eljárás az AES (és ennek különböző fajtái). Egy kevésbé elterjedt, de szintén biztonságos titkosítás a Chacha20 nevű titkosító, ami kis számítási kapacítással rendelkező eszközöknél teljesítményben veri az AES.
Titokmegosztás:
Titokmegosztás során adott egy titok és néhány résztvevő (lehet személy vagy szerver). A cél, hogy egy osztó a titkot olyan módon ossza közöttük szét, hogy minden személy kap egy titokrészt, és a titkot a résztvevőknek csak előre kijelölt csoportjai tudják visszafejteni.
Egy egyszerű példa a következő: Adott 4 résztvevő, Anna, Béla, Cili és Dénes és a titok egy négyjegyű szám, mondjuk legyen 8356 (jelölje s). A cél, hogy a titkot csak négyen együtt tudják visszafejteni.
Rossz megoldás: Mind a 4-en kapjanak egy-egy számjegyet. Ekkor ugyan a titkot 4-en vissza tudják fejteni, azonban 3 együtt vissza tudják fejteni a titok 3/4 részét.
Majdnem jó: Válasszunk 4 pozitív egész számot, amik összege 8356, például 2114, 4120, 1201, 921. Nyilván 4-en vissza tudják fejteni a titkot, azonban az egyes titokrészek önmagukban is információt hordoznak. Például a 4120-at kapó résztvevő tudja, hogy a titok legalább 4120, ezzel ebben az esetben a lehetőségek kb. 2/5 részét ki tudja zárni. Még többet ki tudnak zárni, ha többen összefognak.
Jó megoldás: Ha az előző példában a titokrészek lehetnek negatívak is, az megoldaná a fenti problémát. Ehelyett inkább végezzük a műveleteket modulo 10000. Az első 3 titokrész tetszőleges 0 és 9999 közötti szám (jelölje a, b, c), a negyedik pedig d = s - (a + b + c) mod 10000. Ekkor s = a + b + c + d mod 10000, azonban a, b, c és d közül semelyik három sem ad információt s-ről.
A fenti példán 4 résztvevő együttesen vissza tudja fejteni a titkot, de semelyik három nem tud semmilyen információt sem visszafejteni a titokról. Természetesen 4 helyet bármely résztevőre működik a fenti eljárás. Kicsit más módszerrel az is elérhető, hogy egy adott t küszöbre bármely t résztvevő vissza tudja fejteni a titkot, de t - 1 résztvevő együttesen sem tud meg semmilyen információt a titokról.