Kriptográfiailag biztonságos pszeudo-véletlen számgenerátor

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. január 26-án felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .

A kriptográfiailag biztonságos álvéletlenszám-generátor (CSPRNG ) egy  pszeudovéletlen számgenerátor , amelynek bizonyos tulajdonságai lehetővé teszik a kriptográfiában való használatát .

A kriptográfia számos alkalmazása véletlen számokat igényel, például:

Kihívás

A véletlenszerűség szükséges „minősége” feladatról feladatra változik. Például egyetlen véletlen szám generálása egyes protokollokban csak egyediséget igényel, míg egy mesterkulcs vagy egyszeri rejtjelező mező generálása nagy entrópiát igényel . Ideális esetben a véletlen számok generálása PRNG-ben egy rendkívül megbízható entrópiaforrást használ , amely lehet hardveres véletlenszám-generátor vagy a rendszerben előre nem látható folyamatok lefolyása – bár mindkét esetben előfordulhatnak váratlan sebezhetőségek [1] [2] . Információelméleti szempontból a véletlenszerűség mértéke, a megszerezhető entrópia megegyezik a rendszer által biztosított entrópiával. De gyakran valós helyzetekben több véletlenszámra van szükség, mint amennyit a meglévő entrópiával megkaphatunk. Ezenkívül a rendszerből a véletlenszerűség megszerzésének eljárása sok erőforrást (memória és idő) igényel. Ilyen esetekben indokolt a KSPRCH használata - ez lehetővé teszi a rendelkezésre álló entrópia nagyobb bitszámmal való "kinyújtását". Ha a kriptográfiai algoritmus végrehajtása előtt az összes entrópia rendelkezésre áll, egy adatfolyam titkosítást kapunk [3] . Egyes titkosítási rendszerek azonban lehetővé teszik az entrópia hozzáadását munka közben, ebben az esetben az algoritmus nem egyenértékű a stream titkosítással, és nem használható. Így a stream titkosítások és a CRNG fejlődése szorosan összefügg.

Követelmények

A hagyományos pszeudo-véletlenszám-generátorral szemben támasztott követelményeket [4] [5] a kriptográfiailag biztonságos PRNG is teljesíti, fordítva nem igaz. A CRRC követelményei két csoportra oszthatók: először is át kell menniük a véletlenszerűségi statisztikai teszteken ; másodszor pedig kiszámíthatatlannak kell maradniuk, még akkor is, ha eredeti vagy jelenlegi állapotuk egy része a kriptoanalitikus számára ismertté válik . Ugyanis:

A legtöbb pszeudo-véletlenszám-generátor nem alkalmas PRNG-ként való használatra mindkét feltétel esetén. Először is, annak ellenére, hogy sok PRNG olyan szekvenciát állít elő, amely a különböző statisztikai tesztek szempontjából véletlenszerű, nem megbízhatóak a visszafejtéssel szemben . Speciális, speciálisan hangolt teszteket találhatunk, amelyek megmutatják, hogy a PRNG által előállított véletlenszámok nem igazán véletlenszerűek. Másodszor, a legtöbb PRNG képes a teljes pszeudovéletlen sorozatot kiszámítani , ha állapotuk veszélybe kerül, így a kriptoanalizátor nem csak a jövőbeli üzenetekhez férhet hozzá, hanem az összes korábbi üzenethez. A KSHRNG fejlesztése során figyelembe vették a különféle típusú kriptoanalízisekkel szembeni ellenállást .

Megvalósítások

Tekintsük a KSPRCH megvalósításának három osztályát:

  1. Titkosító algoritmusok alapján
  2. Számításilag összetett matematikai problémák alapján
  3. Speciális megvalósítások

Ez utóbbiak gyakran használnak további entrópiaforrásokat, ezért szigorúan véve nem "tiszta" generátorok, mivel a kibocsátásukat nem teljesen határozza meg a kezdeti állapot. Ez további védelmet tesz lehetővé a kezdeti állapot meghatározását célzó támadásokkal szemben.

Titkosító algoritmusokon alapuló megvalósítások

Matematikai feladatokon alapuló megvalósítások

Speciális megvalósítások

Számos gyakorlati PRNG létezik, amelyeket például a kriptográfiai erősség figyelembevételével fejlesztettek ki

Jegyzetek

  1. Zvi Gutterman. Támadásra nyitott: A Linux véletlenszám-  generátorának sebezhetősége . Letöltve: 2010. november 15. Az eredetiből archiválva : 2011. február 27..
  2. Stealthy Dopant-Level Hardware Trojans Archiválva : 2013. december 5. a Wayback Machine -nél (a trójaiak esetleges bevezetéséről a hardveres véletlenszám-generátorba).
  3. Schneier B. 16 Álvéletlen szekvenciagenerátorok és adatfolyam-rejtjelek // Alkalmazott kriptográfia. Protokollok, algoritmusok, forráskód C nyelven = Applied Cryptography. Protokollok, algoritmusok és forráskód in C. - M .: Triumph, 2002. - 816 p. - 3000 példányban.  - ISBN 5-89392-055-4 .
  4. Schneier B. 2.8 Véletlenszerű és pszeudovéletlen sorozatok generálása // Alkalmazott kriptográfia. Protokollok, algoritmusok, forráskód C nyelven = Applied Cryptography. Protokollok, algoritmusok és forráskód in C. - M .: Triumph, 2002. - 816 p. - 3000 példányban.  - ISBN 5-89392-055-4 .
  5. Gutmann Péter. Gyakorlatilag erős véletlenszámok szoftvergenerálása  //  Proceedings of the 7th USENIX Security Symposium : folyóirat. - 1998. Archiválva : 2012. július 4.
  6. Adam Young, Moti Yung. Rosszindulatú kriptográfia : A kriptovirológia leleplezése . - 3.2. szekta: John_Wiley_%26_Sons , 2004. - P. 416. - ISBN 978-0-7645-4975-5 .  
  7. Cickafark . Letöltve: 2010. november 15. Az eredetiből archiválva : 2012. november 8..
  8. Az MSDN CryptoGenRandom funkciójának  leírása . Microsoft . Letöltve: 2010. november 15. Az eredetiből archiválva : 2012. július 4..

Linkek