A Blum- Micali algoritmus egy kriptográfiailag biztonságos algoritmus pszeudo-véletlen sorozatok generálására Random seed segítségével . Az algoritmus mögött meghúzódó ötleteket Bloom és Micali vázolta fel 1984-ben. Az algoritmust az Adi Shamir által egy évvel korábban javasolt Shamir generátor algoritmus alapján fejlesztették ki [1] . Az algoritmus abban különbözik elődjétől, hogy szigorúbb követelményeket támaszt a kimeneti sorozat kiszámításának bonyolultságával szemben. A Shamir generátorral ellentétben ennek az algoritmusnak a kimenete bitek, nem számok.
Tekintsük a pszeudo-véletlenszám-generátor felépítésének legegyszerűbb ötletét: kapunk egy kezdeti véletlenszerű sorozatot (magot), és válasszunk valamilyen titkosítási algoritmust. Továbbá minden iterációnál az aktuális állapot titkosításával és az eredményből egy bitkészlet kiválasztásával egy meglehetősen véletlenszerűnek tűnő számsorozatot kaphatunk.
A Bloom-Micali algoritmus pontosan ezt a folyamatot használja, "kemény biteket" (hard-core bit, hard-core predikátum ) használ.
Az algoritmus kidolgozása során Bloom és Micali három követelményt támaszt a kimeneti szekvenciára vonatkozóan:
Az f függvény B "kemény üteme" (predikátuma) olyan függvény, amely:
— Seed — a függvény argumentumának hossza . Ő a hossz . - konverzió -ról -ra és -ról -ról {0,1}-re - trükkös bit a -hoz . ; a végső generált sorozat bitjei. ; . -pszeudo-véletlenség - annak a sorozatnak a tulajdonsága, amelyre végrehajtják - összetett bit - annak a függvénynek a tulajdonsága, amelyre ,
ahol a kriptoanalitikus által időben talált algoritmus .
Definiáljuk a következő folyamatként: Vegyünk valamilyen véletlenszerű sorozatot (mag). Ha egy -komplex bit, akkor egy -pszeudo-véletlen számgenerátor.
- függvény számítási idő .
A tételt ellentmondás bizonyítja; Feltételezzük, hogy létezik egy algoritmus, amely lehetővé teszi az elem megtalálását az előző [2] ismeretében .
Az ezen az algoritmuson alapuló generátorokat privát és nyilvános kulcsú rendszerekben is használják.
Két partner, miután biztonságosan felcseréltek egy titkos kezdeti sorozatot, egy közös véletlenszerű sorozatot kapnak, amelynek hossza sokszorosa a kezdeti sorozatnak.
Nyilvános kulcsú rendszerekben (aszimmetrikus titkosítás)Goldwasser és Micali kimutatta [3] , hogy feltételezve, hogy a másodfokú maradékok modulo összetett számok meghatározása nehéz számítási feladat, létezik egy titkosítási séma, amely a következő tulajdonsággal rendelkezik:
"A titkosítási algoritmus ismeretében és a titkosítással rendelkező támadó nem tudja megszerezni bármilyen információ az eredeti szövegről."
Ezt a tulajdonságot Kerckhoff-elvnek
is nevezik .
Vegyünk olyan egyszerű és , hogy - 1024 bites és . Funkció . Az összetett bit egy olyan függvény, amely a legkisebb jelentőségű bitet adja vissza. olyan, ha feltételezzük, hogy nincs algoritmus a komplexitás diszkrét logaritmusának kiszámítására, amely jobb vagy egyenlő, mint .
Azt is megmutattuk [4] , hogy a generátor aszimptotikusan stabil marad, ha nem egy, hanem több alsó bitet választunk a kimeneti sorozatnak. De érdemes megjegyezni, hogy az ilyen módosításban lévő generátor már nem felel meg a Blume-Micali algoritmusnak.
Adjunk meg néhány numerikus becslést a BBS-re két támadási lehetőséghez:
Tegyük fel, hogy egy hosszúságú sorozatot kell generálni , hogy egyetlen algoritmus sem tudja megkülönböztetni ezt a sorozatot a valóban véletlenszerű sorozattól 1 /100-nál nagyobb valószínűséggel végzett műveletek során. A számítás azt mutatja, hogy egy ilyen sorozat létrehozásához bithosszúságú szemcse szükséges. Abban az esetben, ha szükséges a generátor kompromittálása, pl. keresse meg a magot a kimeneti sorozatból ugyanazon időkre azonos pontossággal, akkor az ilyen támadások elleni védelem csak a bitek számára lesz biztosítva [4] .
Legyen egy 1024 bites prímszám, és . Definiáljuk a → -t mint .
Bonyolult kicsit
B(x) olyan, feltételezve, hogy nincs algoritmus a diszkrét logaritmus kiszámítására komplexitásfüggvénnyel vagy jobbval.
A fenti generátorok kriptográfiai erőssége a diszkrét logaritmus megtalálásának nehézségén alapult. A Kalinske generátor az elliptikus görbék ötletét használja.
Legyen olyan prímszám, hogy . Tekintsünk egy görbét x -ben ( Galois mező ) a következő alakban: . A görbe pontjai a végtelenben lévő ponttal együtt ciklikus rendű csoportot alkotnak . Legyen ennek a csoportnak a generátora.
Vezessük be a következő függvényt:
Ennek megfelelően a generátorban használt függvény alakja:
A generátor komplex bitje:
Egy ilyen generátor magja a görbe valamely pontján van.
Bebizonyosodott, hogy a valódi véletlen sorozat és a Bloom-Micali séma szerint generált sorozat megkülönböztetésének problémája a függvényinverzió problémájára redukálható [5] .
Ennek az algoritmusnak a megvalósítása általában az inverz függvények kiszámításának bonyolultságán alapul, például a diszkrét logaritmus kiszámításának bonyolultságán . Ezért ennek az algoritmusnak a megszakításához csak egy diszkrét logaritmust kell tudnia venni előre látható időn belül. Valódi számítógépes megvalósításokon a helyesen kiválasztott számok esetében ez nagyon erőforrás-igényes művelet. Egy kvantumszámítógépen alkalmazott hasonló algoritmus azonban négyzetes sebességnövelést ad, ami sokkal reálisabbá teszi egy ilyen generátor feltörését. A támadás a kvantumalgoritmusok egyik változatán – az amplitúdóugráson –, a Grover-féle algoritmus [6] általánosabb változatán alapul .