Bloom-Micali-algoritmi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 15. tammikuuta 2017 tarkistetusta versiosta . tarkastukset vaativat 10 muokkausta .

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.

Algoritmin pääidea

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:

  1. Lähtöbittien lukumäärän tulee riippua polynomiaalisesti raepituudesta (algoritmin äärellisen syklin pituuden vuoksi).
  2. Bittien saamisen tulee olla laskennallisesti yksinkertaista - toimintojen määrää ylhäältäpäin tulee rajoittaa jollakin raepituuden polynomifunktiolla.
  3. Ryttien tulee olla arvaamattomia. Tunnetulla generaattorilla ja tunnetuilla sekvenssin ensimmäisillä biteillä , mutta siementä tietämättä, seuraavan bitin määrittäminen muulla kuin 50 %:n todennäköisyydellä pitäisi olla laskennallisesti vaikea tehtävä. Toisin sanoen tällaista laskentaa ei pitäisi suorittaa operaatioiden raepituuden polynomissa.

Käsite hardcore beat

"Vakava lyönti" (predikaatti) B funktiolle f on jokin funktio, joka:

  1. B:n lähtöarvo on 1 bitti.
  2. Sille ei ole olemassa sellaista polynomi-aika-algoritmia ( eli BPP - Bounded-error probabilistic polynomial) -algoritmia, joka voisi oikein osoittaa B (x):n tunnetusta f (x):stä muulla todennäköisyydellä kuin 1/2.

Blum-Micalin lause

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

Sovellus

Tähän algoritmiin perustuvia generaattoreita käytetään sekä yksityisen että julkisen avaimen järjestelmissä.

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


Esimerkkejä generaattoreista

Bloom-Blum-Fur coat (BBS) generaattori

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

Dlog-generaattori

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.

Kalinsken generaattori

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

Algoritmin haavoittuvuudet

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

Muistiinpanot

  1. Adi Shamir kryptografisesti vahvojen näennäissatunnaisten sekvenssien luomisesta, 1983
  2. [Manuel Blum ja Silvio Micali, How to Generate Cryptographically Strong Sequences of Pseudorandom Bits, SIAM Journal on Computing 13, no. 4 (1984): 850-864.
  3. S. Goldwasser ja S. Micali, Probabilistinen salaus ja kuinka pelata mentaalista pokeria pitämällä salassa kaikki osittaiset tiedot, Proc 14th ACM Symposium on Theory of Computing, 1982, pp. 365-377
  4. 1 2 Andrey Sidorenko ja Berry Schoenmakers, State Recovery Attacks on pseudoradom Generaators, 2005.
  5. O. Goldreich. Kryptografian perusteet. perustyökalut. Cambridge University Press, Cambridge, Iso-Britannia, 2001.
  6. Elloá B. Guedes, Francisco Marcos de Assis, Bernardo Lula Jr - Esimerkkejä yleisestä kvantti-pysyvä kompromissihyökkäys Blum-Micali-rakenteeseen. http://arxiv.org/abs/1012.1776 Arkistoitu 15. elokuuta 2016 Wayback Machinessa

Katso myös


Kirjallisuus