Hatékony algoritmus


A hatékony algoritmus elnevezést a matematikusok meglehetősen precízen tudják definiálni. Itt csak egy szemléletes, és "pongyola" megfogalmazást adunk.

Egy algoritmus akkor hatékony, ha a probléma méretének, vagy más szavakkal valamelyik bemenő paraméter értékének növelésével az algoritmus erőforrás igénye nem nő drasztikusan.

Erőforrás igény tipikusan lehet memória vagy futási idő.

A prímszámok felbontására nincsen hatákony algoritmus. A probléma mérete a felbontandó szám mérete, például bit-ben mérve. Az alapvető aritmetikai műveletek sebessége ezzel a mérettel arányosan, vagy maximum kis kitevőjű polinomiálisan nő. Ha a számok méretét kétszeresére növeljük, akkor az összeadáshoz kétszer, a szorzáshoz, osztáshoz négyszer annyi idő kell. Ugyanakkor n prímtényezős felbontáshoz nem ismert olyan algoritmus, amelyik lényegileg gyorsabb lenne, mint az az algoritmus, amelyik az összes egésszámot kipróbálja 1 és gyök n között. Ennek időigénye pedig a szám méretének exponenciális függvénye.

Emiatt ha növeljük az RSA rejtjelezésben használt n értékét, olyan értékekhez jutunk, ahol a rejjelezés folyamata pár másodperc alatt, míg a kulcs ismerete nélküli feltörés évezredekig, ha nem évmilliókig tart a mai számítási kapacitások mellett.

A sebesség növekedésével időközönként felül kell vizsgálni a használható, és ajánlott n értéket, és ennek növelésével ismét biztonságos tartományba kerül a titkosítás. A számítási kapacitás növelésével a feltörési és rejtjelezési idő aránya egyre nagyobb lesz, így a rejtjelezés egyre gyorsabban megoldható ugyanolyan biztonság mellett.


toc