Blum - Micali - algoritmi on kryptografisesti turvallinen algoritmi näennäissatunnaisten sekvenssien luomiseen Random siemen avulla . Bloom ja Micali hahmottelivat algoritmin taustalla olevat ideat vuonna 1984. Algoritmi kehitettiin Adi Shamirin vuotta aiemmin ehdottaman Shamir-generaattorialgoritmin perusteella [1] . Algoritmi eroaa edeltäjästään tiukemmilla vaatimuksilla tulossekvenssin laskennan monimutkaisuudesta. Toisin kuin Shamir-generaattori, tämän algoritmin tulos on bittejä, ei numeroita.
Harkitse yksinkertaisinta ideaa pseudosatunnaislukugeneraattorin rakentamisesta: meille annetaan alkusatunnaissekvenssi (siemen) ja valitaan jokin salausalgoritmi. Lisäksi jokaisessa iteraatiossa, salaamalla nykyinen tila ja valitsemalla tuloksesta bittijoukon, voimme saada numerosarjan, joka näyttää melko satunnaiselta.
Bloom-Micali-algoritmi käyttää täsmälleen tätä prosessia käyttämällä "hardcore-bittejä" (kovaydinbitti, kovaydinpredikaatti ).
Algoritmia keksiessään Bloom ja Micali esittivät kolme vaatimusta tulossekvenssille:
"Vakava lyönti" (predikaatti) B funktiolle f on jokin funktio, joka:
— Seed — funktion argumentin pituus . Hän on pituus . - muunnos arvosta muotoon , ja - arvosta arvoon {0,1} - hankala bitti kohteelle . ; ovat lopullisen generoidun sekvenssin bittejä. ; . -pseudo-satunnaisuus - sen sekvenssin ominaisuus, jolle se suoritetaan - kompleksibitti - funktion ominaisuus , jolle ,
missä on kryptanalyytikon ajassa löytämä algoritmi .
Määritellään se seuraavaksi prosessiksi: Otetaan jokin satunnainen sarja (siemen). Jos on -kompleksibitti , niin se on -pseudosatunnaislukugeneraattori.
- funktion laskenta-aika .
Lause todistetaan ristiriidalla; Oletetaan, että on olemassa algoritmi, jonka avulla voit löytää elementin, kun tiedät edellisen [2] .
Tähän algoritmiin perustuvia generaattoreita käytetään sekä yksityisen että julkisen avaimen järjestelmissä.
Kaksi kumppania, jotka ovat vaihtaneet turvallisesti salaisen alkusekvenssin, saavat yhteisen satunnaisjonon, jonka pituus on monta kertaa suurempi kuin alkuperäinen sekvenssi.
Julkisen avaimen järjestelmissä (epäsymmetrinen salaus)Goldwasser ja Micali osoittivat [3] , että olettaen, että neliötähteiden modulo-yhdistelmälukujen määrittäminen on laskennallisesti vaikea tehtävä, on olemassa salausjärjestelmä, jolla on seuraava ominaisuus:
"Hyökkääjä, joka tuntee salausalgoritmin ja jolla on salateksti, ei voi saada mitään tietoa alkuperäisestä tekstistä."
Tämä ominaisuus tunnetaan myös nimellä Kerckhoffin periaate .
Otetaan niin yksinkertainen ja , että - 1024-bittinen ja . Toiminto . Kompleksibitti on funktio, joka palauttaa vähiten merkitsevän bitin. on sellainen olettaen, että ei ole algoritmia diskreetin monimutkaisuuden logaritmin laskemiseksi, joka on parempi tai yhtä suuri kuin .
On myös osoitettu [4] , että generaattori pysyy asymptoottisesti vakaana, jos lähtösekvenssille ei valita yksi, vaan useampi alempi bitti. Mutta on syytä huomata, että tällaisessa modifikaatiossa oleva generaattori ei enää vastaa Blume-Micali-algoritmia.
Annetaan joitain numeerisia arvioita BBS:lle kahdelle hyökkäysvaihtoehdolle:
Oletetaan, että vaaditaan sekvenssin luominen, jonka pituus on , jotta mikään algoritmi ei voi erottaa tätä sarjaa todella satunnaisesta toimintojen aikana , joiden todennäköisyys on suurempi kuin 1/100. Laskelma osoittaa, että tällaisen sekvenssin luomiseen tarvitaan bittipituinen jyvä. Siinä tapauksessa, että generaattori on vaarannettava, ts. löytää siemen lähtösekvenssistä samoihin aikoihin samalla tarkkuudella, silloin suojaus tällaista hyökkäystä vastaan tarjotaan vain biteille [4] .
Antaa olla 1024- bittinen alkuluku, ja . Määritellään → nimellä .
Monimutkainen bitti
B(x) on sellainen olettaen, että ei ole algoritmia diskreetin logaritmin laskemiseksi kompleksisuusfunktiolla tai paremmalla.
Yllä olevien generaattoreiden kryptografinen vahvuus perustui vaikeuteen löytää diskreetti logaritmi. Kalinske-generaattori käyttää elliptisten käyrien ideaa.
Antaa olla alkuluku sellainen, että . Tarkastellaan käyrää x :ssä ( Galois'n kenttä ) muodossa: . Käyrän pisteet yhdessä äärettömyyden pisteen kanssa muodostavat syklisen järjestyksen ryhmän . Olkoon tämän ryhmän generaattori.
Esitetään seuraava funktio:
Sen mukaisesti generaattorissa käytettävä funktio on muotoa:
Generaattorin kompleksibitti:
Tällaisen generaattorin siemen on jossain pisteessä käyrällä.
On todistettu, että ongelma todellisen satunnaisen sekvenssin ja Bloom-Micali-kaavion mukaisesti generoidun sekvenssin erottamisessa voidaan pelkistää funktion inversion ongelmaksi [5] .
Tämän algoritmin toteutukset perustuvat pääsääntöisesti käänteisfunktioiden laskemisen monimutkaisuuteen, esimerkiksi diskreetin logaritmin laskennan monimutkaisuuteen . Siksi tämän algoritmin rikkomiseksi sinun tarvitsee vain kyetä ottamaan diskreetti logaritmi ennakoitavissa olevassa ajassa. Oikeissa tietokonetoteutuksissa oikein valituille numeroille tämä on erittäin resursseja vaativa toimenpide. Kuitenkin samanlainen algoritmi kvanttitietokoneessa antaa nopeusvahvistuksen neliöitynä, mikä tekee tällaisen generaattorin hakkerointista paljon realistisemman. Hyökkäys perustuu yhteen kvanttialgoritmien muunnelmista - amplitudihyppy , Groverin algoritmin yleistetympi versio [6] .