Az egyirányú függvény olyan matematikai függvény , amely könnyen kiértékelhető bármilyen bemeneti érték esetén, de nehéz megtalálni az argumentumot a függvény értékének megfelelően. Itt a "könnyű" és a "nehéz" kifejezést a számítási komplexitás elmélete szerint kell érteni . Az előre és visszafelé történő transzformációk összetettsége közötti különbség meghatározza az egyirányú függvény kriptográfiai hatékonyságát. Egy függvény nem injektivitása nem elégséges feltétele annak, hogy egyoldalúnak nevezzük. Az egyirányú függvényeket nehezen visszafordíthatónak vagy visszafordíthatatlannak is nevezhetjük.
Az egyirányú függvények létezése még nem bizonyított. Létezésük bebizonyítja, hogy a P és az NP komplexitási osztályok nem egyenlőek , és az elméleti számítástechnika számos problémáját megoldják . Modern[ mikor? ] az aszimmetrikus kriptográfia azon a feltételezésen alapul, hogy léteznek egyirányú függvények.
Az egyirányú funkciók alapvető eszközök a kriptográfia , a személyazonosítás, a hitelesítés és az adatbiztonság egyéb területein. Bár az ilyen funkciók létezése még mindig nem bizonyított hipotézis, számos olyan versenyző van, amely kiállta a több évtizedes vizsgálatot. Sok közülük a legtöbb távközlési rendszer , valamint az e-kereskedelmi és internetes banki rendszer szerves részét képezi világszerte.
Legyen az összes n hosszúságú bináris karakterlánc halmaza. Egy függvény egyirányú függvény , ha hatékonyan számítja ki polinomiális időben egy determinisztikus Turing-gépen , de nincs olyan polinom valószínűségi Turing-gép , amely exponenciálisan kicsinél nagyobb valószínűséggel invertálja ezt a függvényt. Vagyis bármely valószínűségi polinomiális géphez , bármilyen polinomhoz és elég nagyhoz :
ahol a sor véletlenszerűen kerül kiválasztásra a halmazon az egységes eloszlási törvény szerint. A gép működési idejét egy polinom korlátozza a kívánt előkép hosszában [1] .
Az egyirányú függvények létezése nem bizonyított. Ha f egyirányú függvény, akkor az inverz függvény megtalálása nehéz (definíció szerint), de könnyen ellenőrizhető ( f kiértékelésével ). Így az egyirányú függvény létezéséből következik, hogy P ≠ NP. Nem ismert azonban, hogy P ≠ NP egyirányú függvények létezését jelenti-e.
Az egyirányú funkciók létezése számos más hasznos kriptográfiai objektum létezését vonja maga után, beleértve a következőket:
Egy egyirányú függvényről azt mondjuk, hogy hosszmegtartó, ha a függvényérték bithossza megegyezik az argumentum bithosszával. Ilyen függvényeket például pszeudovéletlen generátorokban használnak. Ha egy egyirányú függvény értékének bithossza bármilyen argumentumhossz esetén állandó, akkor azt hash függvénynek nevezzük . Tehát a hash funkciót jelszavak tárolására vagy elektronikus aláírás létrehozására használják [1] .
Az egyirányú függvényekből kriptográfiai sémák felépítésének problémáját a következő példa szemlélteti. Legyen egyirányú függvény, és létre kell hoznunk egy kriptorendszert egy titkos kulccsal . Egy ilyen titkosítási rendszerben csak egy kulcs van - egy titkos, amelyet a titkosított üzenet küldője és címzettje egyaránt ismer. A titkosítási és visszafejtési algoritmusok egyaránt ettől a titkos kulcstól függenek, és olyanok, mint bármely egyszerű szöveg esetén . Nyilvánvaló, hogy ha az üzenet kriptogramját a következővel számoljuk , akkor az ellenfél, aki elfogta , csak elhanyagolható valószínűséggel tud számolni . De először is nem világos, hogy egy legitim címzett hogyan tud visszaállítani egy üzenetet a kriptogramból? Másodszor, abból, hogy a függvény egyirányú, csak az következik, hogy az ellenfél nem tudja kiszámítani a teljes üzenetet. És ez a stabilitás nagyon alacsony szintje. Kívánatos, hogy egy ellenfél, aki ismeri a kriptogramot , ne tudja kiszámolni a nyílt szöveg egyetlen bitjét sem.
Az első probléma megoldására egyirányú funkciókat találtak ki titkos bejárattal . Ez egy speciális típusú egyirányú függvény, amelyhez könnyű kiszámítani adott , de nehéz kiszámítani az ismertből . Van azonban néhány további titkos információ , amely, ha ismert, könnyen kiszámítható .
Egy másik példa az egyirányú függvények kriptográfiai sémákban való használatára a következő hitelesítési séma:
Az előfizető a következő üzenetsorozatot generálja: stb. , ahol egy egyirányú függvény. Ezután egy titkos csatornán (vagy egy értekezleten) továbbítják az előfizetőnek . Amikor meg kell erősíteni a személyazonosságát, üzenetet küld egy nyitott csatornán . ellenőrzések: . Legközelebb elküldi és ellenőrzi: stb. Az üzenetek elfogása a nyitott csatorna i-edik szakaszában nem ad semmit a támadónak, mivel nem fogja tudni megszerezni a megfelelő értéket , hogy ezután előfizetőként azonosítsa magát idő . Az ilyen sémákat a "barát/ellenség" azonosítására használják [2] .
A számítógépes rendszerek szolgáltatással való visszaélésekkel szembeni védelme érdekében a kérelmező felet egy olyan probléma megoldására kérik, amelynek megoldása sok időt vesz igénybe, és az eredményt a kiszolgáló könnyen és gyorsan ellenőrzi. Az ilyen spam elleni védelemre példa a Hashcash [3] rendszer , amely részleges inverziós hash -t kér az e-mail feladójától.
A Bitcoin rendszer megköveteli, hogy a kapott hash összeg kisebb legyen egy speciális paraméternél. A kívánt hash összeg kereséséhez többször újra kell számítani a kiegészítő paraméter tetszőleges értékeinek felsorolásával. Körülbelül 10 percet vesz igénybe, amíg a rendszerben lévő összes számítógép megkeres egy hash összeget, amely szabályozza az új bitcoinok kibocsátásának sebességét. Az ellenőrzés csak egyetlen hash számítást igényel.
Az egyirányú függvények megléte szükséges feltétele sokféle kriptográfiai séma erősségének. Egyes esetekben ezt a tényt egészen egyszerűen megállapítják. Tekintsünk egy olyan függvényt , amely . Az algoritmus polinomiális időben kiszámítja. Mutassuk meg, hogy ha nem egyirányú függvény, akkor a kriptorendszer instabil. Tegyük fel, hogy létezik egy polinom valószínűségi algoritmus , amely valószínűséggel invertál legalább néhány polinom esetében . Itt van a kulcs hossza . A támadó megadhat egy kulcsot az algoritmushoz, és a megadott valószínűséggel értéket kaphat az előképből . Ezután a támadó bemenetként megadja az algoritmust, és kap egy kulcspárt . Bár nem feltétlenül ugyanaz, mint a , mégis definíció szerint egy titkosítási rendszer bármely egyszerű szöveghez . Mivel legalább a valószínűsége megtalálható , ami nem tekinthető elhanyagolhatónak a kriptográfiában, a kriptorendszer instabil.
Az elmondottakból következik, hogy az egyirányú függvények létezésének feltételezése a leggyengébb kriptográfiai feltevés, ami elegendő lehet a különféle típusú erős kriptográfiai sémák létezésének bizonyítására. Annak megállapítására, hogy ez a feltétel valóban elegendő-e, a szakemberek jelentős erőfeszítéseit irányítják.
Manapság[ mikor? ] bebizonyosodott, hogy az egyirányú függvények megléte szükséges és elégséges feltétele a titkos kulccsal rendelkező erős kriptorendszerek, valamint többféle erős kriptográfiai protokoll, köztük az elektronikus aláírási protokollok létezésének. Másrészt ott van Impagliazzo és Rudich eredménye, amely elég erős érv amellett, hogy bizonyos típusú kriptográfiai sémák (beleértve a Diffie-Hellman-típusú kulcselosztási protokollokat is) erősebb feltételezéseket igényelnek, mint az egyirányú függvényfeltevés [4]. .
Az alábbiakban az egyirányú funkciókra számos versenyzőt ismertetünk. Egyelőre nem tudni, hogy valóban egyirányúak-e, de a kiterjedt kutatások még nem tudtak mindegyikre hatékony inverz algoritmust találni.
A függvény bemenetként két prímszámot vesz fel bináris ábrázolásban, és a szorzatukat adja vissza . Ezt a függvényt a sorrendben számíthatjuk ki , ahol a bemenet teljes hossza (bináris számok száma). Egy inverz függvény felépítéséhez meg kell találni egy adott egész szám tényezőit . A tényezők meghatározása nagyon időigényes számítási művelet. Egy egész számot prímtényezőkre bontó algoritmus összetettségének becslésére gyakran használják a függvényt:
Ha az algoritmus összetettsége , akkor polinomiális időre van szüksége a futáshoz (a feladat mérete a bemeneten, a szám bitjeinek száma, ). A bonyolultság miatt exponenciális időre lesz szükség. Így a függvény növekedési üteme polinomiális és exponenciális között van. Ezért az ilyen bonyolultságú algoritmusok szubexponenciális időt igényelnek [5] .
Számos módszer létezik egy szám faktorálására prímszámokkal és . Néhány közülük:
A függvény félprímek tartományára általánosítható . Ne feledje, hogy tetszőleges esetén nem lehet egyoldalú , mivel a szorzatuk 2-es tényező ¾ valószínűséggel.
Vegye figyelembe, hogy a polinomiális összetettségű faktorizáció lehetséges kvantumszámítógépen Shor algoritmusát használva ( BQP osztály ).
A függvény két egész számot vesz fel: és , ahol két és két prímszám szorzata . A kimenet a maradék a -val való osztás után . Az inverz függvény megtalálásához ki kell számítani a modulo négyzetgyököt , vagyis meg kell találni, hogy ismert-e az is . Kimutatható, hogy ez utóbbi probléma számításilag ugyanolyan nehéz, mint a faktorizálás.
A Rabin kriptorendszer azon a feltételezésen alapul, hogy a Rabin függvény egyirányú.
A diszkrét kitevő függvény argumentumként egy prímszámot és egy egész számot vesz fel a -tól tartományba , és a maradékot adja vissza, miután elosztja néhányat -val . Ez a függvény könnyen kiszámítható időben , ahol a bitek száma a -ban . Ennek a függvénynek a megfordításához a modulo diszkrét logaritmus kiszámítása szükséges . Legyen véges Abel-csoport, például véges mező multiplikatív csoportja vagy véges mező feletti elliptikus görbe. A diszkrét logaritmusok számításának feladata egy egész szám meghatározása , amely az adatok ismeretében kielégíti a következő összefüggést:
Egyes csoportok számára ez a feladat meglehetősen egyszerű. Például ha egész számok csoportja modulo összeadás. Más csoportok számára azonban ez a feladat nehezebb. Például egy véges mezős multiplikatív csoportban a diszkrét logaritmus probléma megoldásának legismertebb algoritmusa a másodfokú szita módszer egy számmezőben . A diszkrét logaritmusok kiszámításának bonyolultságát ebben az esetben a következőre becsüljük . Az ElGamal-séma ezen a problémán alapul [6] .
Az olyan csoportok esetében, mint az elliptikus görbe, a diszkrét logaritmus probléma még nehezebb. A jelenleg elérhető legjobb módszer a diszkrét logaritmusok kiszámítására egy mező feletti általános elliptikus görbén, a Pollard -féle ρ-módszer . A komplexitása . Ez egy exponenciális algoritmus, így az elliptikus görbe titkosítási rendszerek általában kis, körülbelül 160 bites kulccsal működnek. Míg a faktoráláson vagy véges mezőkben diszkrét logaritmusok kiszámításán alapuló rendszerek 1024 bites kulcsokat használnak [6] .
A diszkrét logaritmus problémához számos szorosan kapcsolódó probléma is kapcsolódik. Adjunk meg egy véges Abel-csoportot :
Kimutatható, hogy a Diffie-Hellman-kiválasztási probléma semmivel sem nehezebb, mint a Diffie-Hellman-probléma, és a Diffie-Hellman-probléma sem nehezebb, mint a diszkrét logaritmus [6] .
Számos kriptográfiai hash függvény van (pl . SHA-256 ), amelyek gyorsan kiszámíthatók. Az egyszerűbb verziók egy része nem ment át komplex elemzésen, de a legerősebb változatok továbbra is gyors, praktikus megoldásokat kínálnak az egyirányú számításokhoz. E funkciók elméleti támogatásának nagy része a korábban sikeres támadások meghiúsítására irányul.
Az egyirányú függvények más versenyzői a véletlenszerű lineáris kódok dekódolásának nehézségén és más problémákon alapulnak.