{autotoc}

Algoritmikus rendszer

A rejtjelezés, hitelesítés, partnerazonosítás és egyéb kriptográfiai "szolgáltatások", matematikai algoritmusait tartalmazza.

Az algoritmus

Olyan matematikai apparátus, amely egy tetszőleges, "nyílt" adathalmazból úgy állít elő egy transzformált, "kódolt" adathalmazt, hogy abból az eredeti nyílt adathalmaz visszanyerhető, visszafejthető legyen.

Kriptográfiai rendszert úgy kell kialakítani, hogy a "külső, vagy belső (konspiratív) támadás" az algoritmus ismeretében se veszélyeztesse a rejtjelezett adatokat, azok az algoritmus ismeretében is "megfejthetetlenek" legyenek (pl. DES, RSA).

Az algoritmus erősségét - szakszerűtlenül - a megfejtési idővel (gépidővel) is szokták jellemezni.

Az algoritmusok zöme a többszintű rejtjelezést is megengedi, így kialakítható olyan üzenetkapcsolat is, amely a küldő titkos kulcsával és a fogadó nyilvános kulcsával is rejtjelezve van. A fogadó oldalon a küldő nyilvános kulcsával és a fogadó saját titkos kulcsával történő megfejtés olyan partnerazonosítási szintet biztosít, amely erősebb a hagyományos bizonylati rendszereknél is. Az adatcsere hitelesítési funkciók teljesítésére alkalmazható.

Lecserélhető algoritmus (a különböző védettségi szintnek megfelelően).

Kriptográfiai algoritmusok

A rejtjelezés lehetőségei:

  • Transzpozíció: a nyílt szöveg betűinek sorrendjét valamilyen módon megváltoztatjuk, összekeverjük.
  • Helyettesítő eljárás: a nyílt szöveg betűit, vagy betűcsoportjait egy előre meghatározott módon más jellel, vagy jelcsoporttal helyettesítjük. 
  • Kombinált eljárás: a két módszert együtt alkalmazzuk.

Alapvető kriptográfiai algoritmusok

A régebbi kriptográfiai módszerek a titkosítási-megfejtési algoritmus titkosságán alapultak.

A mai kriptográfiai módszerek olyanok, hogy a kulcs nélkül a módszer ismeretében sem megfejthető a titkosított üzenetet (gyakorlati haszonnal).

A modern algoritmusok valamilyen kulcsot használnak a titkosításhoz és a megfejtéshez.

A kulcs-alapú algoritmusoknak két osztálya van:

  • Szimmetrikus (vagy titkos kulcsú, Secret key) algoritmusok ugyanazt a kulcsot használják a titkosításra és a megfejtésre
    • Folyamatos titkosító - megfejtő eljárásokra
    • Blokk titkosító - megfejtő eljárásokra
  • Aszimmetrikus (vagy nyílt kulcsú, Public-key) algoritmusok más kulcsot használnak a titkosításra és mást a megfejtésre és a megfejtési kulcs nem állítható elő a titkosítási kulcs ismeretében.

A szimmetrikus algoritmusok általában gyorsabbak, mint az aszimmetrikusak.

A gyakorlatban a kétféle algoritmust gyakran együttesen alkalmazzák: egy nyilvános kulcsú algoritmussal titkosítanak egy véletlenszerűen generált titkosító kulcsot, amellyel szimmetrikus algoritmust használva titkosítják az üzenetet.

Klasszikus algoritmusok

Az egyszerű helyettesítés

Minden betűt különböző, előre meghatározott jellel helyettesítünk. A vevőnek ismernie kell a helyettesítés módját. A lehetséges kulcsok száma: 26! = 4 * 1026 (31! = 8.2 * 1033) A fejtés a nyelvben rejlő statisztikai valószínűségek alapján lehetséges.

Többábécés eljárások

Statisztikai módszerekkel ez is egyszerűen megfejthető.

Véletlen átkulcsolás: (One time pad).

Minden üzenethez új, az előzőktől független, sorsolt kulcsszöveget használnak, amit az adó és a vevő "abszolút" megbízható csatornán cserél ki egymással. A kulcs hossza megegyezik a nyílt szöveg hosszával. Az egymás utáni kulcsbetűk egymástól teljesen függetlenek, azaz az ábécé bármelyik betűje azonos valószínűséggel fordul elő. Matematikai egzaktsággal bizonyítható, hogy elméletileg is fejthetetlen.

Transzpozíció

A blokkrejtjelezés kategóriájába sorolható. A blokkon belüli nyílt betűk sorrendjének megváltoztatásával állítják elő a rejtjeles szöveget.

Egy 50 karakteres blokk esetén a lehetséges permutációk közelítő száma: 50! = 1.7 * 1063

A teljes kipróbálás "lehetetlen".

Kódkönyvek

Főként a diplomáciai levelezésben használták.

A szöveg hatékony tömörítése is elérhető.

Ceasar-féle rejtjelezés

Polübiosz tábla

Egyszeri szalag

Vigenere rejtjelezés

Titkosító gépek: ENIGMA

A nyílt szöveg minden egyes betűjéhez egy-egy betűt rendelt a titkosított szövegben, de minden betűhöz más-más kulccsal tette ezt, és csak nagyon-nagyon hosszú ciklus után kezdte újra alkalmazni ugyanazt a kulcs-sorozatot. Az ismétlési ciklus hossza akár százezer betű is lehetett, de magát a kulcs-sorozatot már azelőtt megváltoztatták, mielőtt az ismétlődésére sor kerülhetett volna.

DES (Data Encryption Standard)

A civil szférában mindmáig nagyon elterjedt és több mint 20 évig kiválóan bevált titkosítási módszer. Elődje az 1971-ben elkészült LUCIFER.

Az IBM és Carl Meyer és Walter Tuchman eljárását 1997-ben szabványosították. Gyakorlatilag feltörhetetlennek nyilvánították, dema már akármilyen személyi számító-géppel is feltörhető.

Erősebb titkosításra a háromszoros kulcshosszúságú (168 bites) Triple DES-t, majd Tuchman két kulcsot használó 3DES rendszerét használták. Utóbbi manapság is használatos.

A DES szabvány a DEA (Data Encryption Algorithm eljárást alkalmazza.

A DEA iterációs kriptorendszer, amely 64 bites bináris információs blokkokat titkosít 64 bites kulccsal, és egy-egy iterációban a következő lépéseket hajtja végre:

  1. Végrehajt egy kezdeti kezdeti permutációt (IP) a teljes 64 bites blokkon. A kezdeti transzpozíciónál nincs szerepe a kulcsnak.
  2. Egy igen komplex, kulcsfüggő produkt transzformáció, amely blokktitkosítást alkalmaz, hogy növelje a helyettesítések és a bitsorrend átrendezéseinek a számát.
  3. Egy befejező transzpozíciós művelet, amelyet a kezdeti permutáció inverzének neveznek és IP-1-gyel jelölnek.

Az S dobozok (Selection Box):

Mindegyik S doboznak 4 kimenete van. Együttesen a 8x6=48 bites bemenetből előállítják a 8x4=32 bites kimenetet

A Dupla DES két, egymást követő DES titkosítást alkalmaz, s mindegyiket más-más kulccsal.

Tripla DES (Triple DES): 3 kulccsal háromszori titkosítás.

3DES: két kulcs használatával ugyanolyan kriptográfiai erősségű titkosításra alkalmas, mint a háromkulcsos DES.

Mit kínál a Rijndael?

  • Szimmetrikus és párhuzamos struktúrát
  • Rugalmas eszközkelést
  • Nincsenek megengedve az effektív „cryptanalytic” támadások
  • Jól alkalmazkodik a modern processzorokhoz
  • Pentium kompatibilis
  • Használható RISC és párhuzamos processzorok esetén
  • Alkalmas Smart Card-okon
  • Alkalmazhatják nagy szerverek kommunikációs folyamataihoz

Támogatja a 128, 192 és 256 bites kulcsok alkalmazását. A 128 bites kulcs generálásakor 340-szer tíz a 36-odikon számú lehetséges eredmény létezik. A feltöréshez több időre volna szüksége a világ ma rendelkezésre álló összes számítógépének, mint mióta a világegyetem létezik.

A Rijndael elve a Ceasar kódoláshoz hasonló. Változó blokkmérettel és kulcsmérettel operál

IDEA (International Data Encryption Algorithm):64 bites nyíltszöveg blokkokon 128 bites titkos kulccsal operál

Aszimmetrikus, vagy nyilvános kulcsú algoritmusok

Az RSA (Rivest-Shamir-Adleman, 1976.) eljárás

Az elképzelés Hellmantól származik. Az első és máig az egyetlen megbízhatónak látszó, technikailag kivitelezhető eljárást adja meg.
Matematikai alapja a számelmélet Fermat tétele, és az a tény, hogy nagy számok osztóinak meghatározása rendkívül bonyolult feladat.

Az első 10 év eredményeit Diffie (1988) foglalja össze.

Az algoritmus biztonságának alapja, hogy a nagy egész számokat nehéz prímtényezőire bontani.

Az RSA algoritmus

A nyilvánosságra hozott kulcs egy (E,M) egészekből álló számpár. A titkosítás ezek segítségével történik. Először a nyíltszöveg adott hosszúságú blokkjait az M modulusnál kisebb egész számmá alakítják, majd ezt a számot M modulusban felemelik az E-edik hatványra. Ez a szám lesz a titkosított üzenet.

A titkos kulcs hasonlóan egy (D,M) számpár, ahol M azonos az előzővel, míg a D dekódoló exponens úgy van megválasztva, hogy a titkosított üzenetnek megfelelő modulo-M számot ennyiedik hatványra emelve az eredeti üzenet adódik.

Megbízható algoritmushoz M-et két nagyon-nagy prímszám szorzatának, E-t véletlenszerűen választják.

Mivel a modulus hatványozás idő- és költségigényes, szinte kizárólag hardware megoldások jönnek számításba.

Olyan algoritmusok, amelyeket a chip-gyártók alkalmaznak:

  • Montgomery redukció, lásd Montgomery(1985).
  • Barret redukció, lásd Barret(1986).
  • FastMM algoritmus, lásd Posch, Posch(1989).

Ismereteink szerint a leggyorsabb megvalósítás 1024 bit nagyságú kulcs esetén 1 Mbit/s sebességet ígér.

Az RSA alkalmazásai:

  • hozzáférés védelem,
  • digitális aláírás
  • üzenethitelesítés
  • partnerhitelesítés

Hash függvények

A kriptográfiai hash függvényeket arra használják, hogy kiszámítsák egy üzenet lenyomatát.

A hash függvény egy üzenet bitjeit egy rögzített méretű un. hash-értékbe koncentrálja úgy, hogy a lehetséges üzeneteket egyenlően osztja szét a lehetséges hash-értékek között.

Ha előre megadunk egy hash-értéket, akkor nagyon nehéz olyan üzenetet előállítani, amelyből a kriptográfiai hash függvény pontosan ezt a hash értéket állítja elő.

A hash függvények legalább 128 bites hash értékeket állítanak elő. A 128 (vagy még több) bites bináris számok összes lehetséges változata jóval nagyobb, mint azoknak az üzeneteknek a száma amelyeket az emberek valaha is váltanak egymással a világon.

A jól ismert kriptográfiai hash függvények közé tartozik az MD5 és az SHA.

Kriptográfiai véletlenszám generátorok

A kriptográfiai véletlenszám generátorok kriptográfiai alkalmazásokhoz, mint pl. kulcsokhoz állítanak elő véletlen számokat.

Valódi véletlenszámok

Fizikai véletlen forrásokon alapulnak, amelyek véletlen eseményeit semmiképp sem lehet előre megjósolni.

Ilyen forrás lehet pl. egy félvezető eszköz zaja, egy hangbemenet legkisebb helyértékű bitje, vagy egy számítógép valamelyik I/O eszközének megszakításai közötti idő-intervallum, stb.

A fizikai forrásból származó zajt aztán egy kriptográfiai hash-függvénnyel átalakítják úgy, hogy a hash érték minden egyes bitje összefüggjön ugyanennek az értéknek minden más bitjével.

Több ezer bitet tartalmazó véletlenszám tárolóterületet is alkalmazhatnak, amelyben minden bitet valamilyen fizikai alapú, valódi véletlenszám generátorral állítottak elő és a több ezer bit mindegyike kriptográfiai szempontból erős összefüggésben van az összes többi ott tárolt bittel is.

Hogy a generált adat külső megfigyelő számára megjósolhatatlan legyen, a véletlenszám tárolóterületnek legalább 128 bitnyi valódi bizonytalanságot (entrópiát) kell tartalmaznia.

Pszeudovéletlen-szám generátorok

Általános célú számítógépek alkalmazásakor használják.

Nagyszámú tárolt kiinduló magot használnak hozzá, amelyek mindegyike igazi véletlen szám. A használt magot keresztülfuttathatják egy hash függvényen, és visszateszik.

Ha több bitre van szükség, a véletlenszám-tár tartalmát összekeverik egy alkalmas, véletlen kulcsú eljárással. Erre a célra a véletlen kulcsot ugyanabból a véletlenszám-tárból vehetik (még a tár összekeverése előtt), de ezt a véletlenszámot nem szabad visszatenni a tárba.

Ez az eljárás biztosítja, hogy a véletlenszám-tár tartalmának minden egyes bitje függjön az összes többi bittől is.

Az is szokás, hogy a véletlenszám-tár összekeverése előtt annak a tartalmához külső környezeti forrásból új zajt adnak hozzá, hogy még inkább lehetetlenné tegyék a korábbi és a jövőbeli értékek kitalálását.          

A kriptográfiai véletlen számok előállítására könnyen válhat az egész rendszer leggyengébb pontjává.