A Blum-Blum-Shub algoritmus ( angol. Algorithm Blum-Blum-Shub , BBS) egy pszeudo-véletlen számgenerátor , amelyet 1986-ban Lenore Blum , Manuel Blum és Michael Shub javasolt .
A BBS így néz ki:
ahol két nagy prímszám és a szorzata . Az algoritmus minden lépésében a kimenet vagy a paritásbitből vagy egy vagy több legkisebb jelentőségű bitből származik .
A és a két prímnek egybe kell esnie 3 modulo 4 értékkel (ez garantálja, hogy minden másodfokú maradéknak van egy négyzetgyöke , ami egyben másodfokú maradék is ), és a legnagyobb közös osztónak , a gcd - nek kicsinek kell lennie (ez növeli a ciklus hosszát).
Ennek az algoritmusnak egy érdekessége, hogy a megszerzéséhez nem szükséges az összes előző számot kiszámítani, ha a generátor kezdeti állapota és a és számok ismertek . -adik érték "közvetlenül" kiszámítható a következő képlet segítségével:
,ahol a Carmichael függvény : ebben az esetben a számok legkisebb közös többszöröse és .
Ez a generátor alkalmas titkosításra , de nem szimulációra, mert nem elég gyors. Ugyanakkor szokatlanul nagy a tartóssága, amit a generátor minősége biztosít a számtényezős probléma számítási összetettsége alapján . Ha a prímszámokat gondosan választják ki, és mindegyik bitje a kimenet, akkor a határérték gyorsan növekszik, és a kimeneti bitek kiszámítása ugyanolyan nehéz lesz, mint a faktorizálás .
Ha az egész számok faktorizálása olyan nehéz (ahogy annak lennie kell), akkor egy nagy BBS kimenete mentes minden nem véletlenszerű mintától, amely elegendő számítással kimutatható. A faktorizálás gyors algoritmusa azonban lehetséges, ezért a BBS nem garantált megbízhatósága.