Algoritmus Blum- Micali je kryptograficky bezpečný algoritmus pro generování pseudonáhodných sekvencí pomocí Random seed . Myšlenky algoritmu nastínili Bloom a Micali v roce 1984. Algoritmus byl vyvinut na základě algoritmu generátoru Shamir navrženého Adi Shamirem o rok dříve [1] . Algoritmus se od svého předchůdce liší vyššími požadavky na složitost výpočtu výstupní sekvence. Na rozdíl od generátoru Shamir jsou výstupem tohoto algoritmu bity, nikoli čísla.
Zvažte nejjednodušší myšlenku sestavení generátoru pseudonáhodných čísel: dostaneme nějakou počáteční náhodnou sekvenci (seed) a zvolíme nějaký šifrovací algoritmus. Dále, při každé iteraci, zašifrováním aktuálního stavu a výběrem sady bitů z výsledku, můžeme získat sekvenci čísel, která vypadá spíše náhodně.
Algoritmus Bloom-Micali používá přesně tento proces s použitím "hardcore bitů" (hard-core bit, hard-core predikát ).
Bloom a Micali, kteří přišli s algoritmem, předložili tři požadavky na výstupní sekvenci:
"Hardcore beat" (predikát) B pro funkci f je nějaká funkce taková, že:
— Seed — délka argumentu funkce . Ona je délka . - převod z na a - z na {0,1} - složitý bit pro . ; jsou bity konečné generované sekvence. ; . -pseudo-randomness - vlastnost sekvence, pro kterou se provádí -komplexní bit - vlastnost funkce , pro kterou ,
kde je algoritmus nalezený kryptoanalytikem v čase .
Definujme to jako následující proces: Vezměte nějakou náhodnou sekvenci (seed). Jestliže je -komplexní bit, pak je -generátor -pseudonáhodných čísel.
- doba výpočtu funkce .
Věta se dokazuje kontradikcí; Předpokládá se, že existuje algoritmus, který vám umožní najít prvek se znalostí předchozího [2] .
Generátory založené na tomto algoritmu se používají v systémech soukromých i veřejných klíčů.
Dva partneři, kteří si bezpečně vyměnili tajnou počáteční sekvenci, obdrží společnou náhodnou sekvenci o délce mnohonásobně větší než počáteční sekvence.
V systémech veřejného klíče (asymetrické šifrování)Goldwasser a Micali ukázali [3] , že za předpokladu, že určení kvadratických reziduí modulo složených čísel je výpočetně obtížný úkol, existuje schéma šifrování s následující vlastností:
„Útočník, který zná šifrovací algoritmus a má šifrovaný text, nemůže získat jakékoli informace o původním textu."
Tato vlastnost je také známá jako Kerckhoffsův princip .
Vezměme si takové jednoduché a , že - 1024-bit a . Funkce . Komplexní bit je funkce, která vrací nejméně významný bit. je takový za předpokladu, že neexistuje žádný algoritmus pro výpočet diskrétního logaritmu složitosti lepšího nebo rovného .
Bylo také ukázáno [4] , že generátor zůstává asymptoticky stabilní, pokud není pro výstupní sekvenci zvolen jeden, ale několik nižších bitů. Je však třeba poznamenat, že generátor v takové modifikaci již nebude odpovídat algoritmu Blume-Micali.
Uveďme nějaké numerické odhady pro BBS pro dvě možnosti útoku:
Řekněme, že je potřeba vygenerovat sekvenci délky , takže žádný algoritmus nedokáže rozlišit tuto sekvenci od skutečně náhodné během operací s pravděpodobností větší než 1/100. Výpočet ukazuje, že pro generování takové sekvence je zapotřebí zrno bitové délky. V případě, že je potřeba kompromitovat generátor, tzn. najít seed z výstupní sekvence pro stejné časy se stejnou přesností, pak bude ochrana proti takovému útoku poskytnuta pouze pro bity [4] .
Nechť je 1024bitové prvočíslo a . Definujme → jako .
Složitý kousek
B(x) je takové za předpokladu, že neexistuje žádný algoritmus pro výpočet diskrétního logaritmu s funkcí složitosti nebo lepší.
Kryptografická síla výše uvedených generátorů byla založena na obtížnosti nalezení diskrétního logaritmu. Kalinske generátor využívá myšlenku eliptických křivek.
Nechť je prvočíslo takové, že . Uvažujme křivku v x ( Galoisovo pole ) ve tvaru: . Body křivky spolu s bodem v nekonečnu tvoří cyklickou uspořádanou skupinu . Nechť je generátorem této skupiny.
Představme si následující funkci:
Podle toho má funkce použitá v generátoru tvar:
Komplexní bit generátoru:
Zárodkem takového generátoru je nějaký bod na křivce.
Je dokázáno, že problém rozlišení mezi skutečnou náhodnou sekvencí a sekvencí generovanou podle Bloom-Micaliho schématu lze redukovat na problém inverze funkce [5] .
Implementace tohoto algoritmu se zpravidla spoléhají na složitost výpočtu inverzních funkcí, například na složitost výpočtu diskrétního logaritmu . Chcete-li tedy tento algoritmus prolomit, musíte být schopni provést diskrétní logaritmus v dohledné době. Na reálných počítačových implementacích je to pro správně zvolená čísla operace velmi náročná na zdroje. Podobný algoritmus na kvantovém počítači však poskytuje nárůst rychlosti na druhou, díky čemuž je hackování takového generátoru mnohem realističtější. Útok je založen na jedné z variant kvantových algoritmů – skoku amplitudy , zobecněné verzi Groverova algoritmu [6] .