Egyirányú funkció

Megoldatlan problémák a számítástechnikában : '' Vannak egyirányú függvények?''

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.

Definíció

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] .

Létezés

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:

Használat

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] .

Munka igazolása

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.

A kriptográfiai sémák erőssége

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]. .

Jelöltek egyirányú funkciókra

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.

Szorzás és szorzás

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 ).

Négyzetre emelés és a négyzetgyök vétele modulo

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ú.

Diszkrét exponenciális és logaritmus

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] .

Kriptográfiai hash függvények

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.

További versenyzők

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.

Lásd még

Jegyzetek

  1. 1 2 Ptitsyn, 2002 , p. 38-39.
  2. Hitelesítési séma .
  3. Hashcash – A szolgáltatásmegtagadás elleni ellenintézkedés (2002)
  4. Russell Impagliazzo, Steven Rudich. A személyes adatok visszakeresése nem jelent egyirányú permutációt .
  5. 1 2 Smart, 2005 , p. 185-186.
  6. 1 2 3 Smart, 2005 , p. 187-188.

Linkek