Алгоритм Блум - Блума - Шуба () - генератор псевдовипадкових чисел, запропонований в 1986 році Ленорою Блум, Мануелем Блумом і Майклом Шубом.

BBS має такий вигляд:

де є добуток двох великих простих чисел і . На кожному кроці алгоритму вихідні дані обчислюють з шляхом взяття або біта парності, або одного чи більше найменш значущих бітів .

Два простих числа, і , повинні бути конгруентні з 3 по (це гарантує, що кожен квадратний залишок має один квадратний корінь, який також є квадратним залишком) і найбільший спільний дільник НСД має бути маленьким (це збільшує довжину циклу).

Цікавою особливістю цього алгоритму є те, що для отримання необов'язково обчислювати всі попередні числа, якщо відомо початковий стан генератора і числа і . - е значення може бути обчислено безпосередньо використовуючи формулу:

,

де - функція Кармайкла: в даному випадку - найменше спільне кратне чисел () і ().

Надійність

Цей генератор підходить для криптографії, але не для моделювання, тому що він недостатньо швидкий. Однак, він має високу стійкість, яка забезпечується якістю генератора виходячи з обчислювальної складності завдання факторизації чисел. Коли прості числа обрані правильно, і біт кожного є вихідними даними, тоді межа, при швидкозростаючому , відрізнити вихідні біти від випадкових буде настільки ж складно, як і факторизація .

Приклад Нехай , та . Ми можемо розраховувати отримати велику довжину циклу для таких малих чисел, тому що . Генератор починає рахувати за допомогою і створює послідовність , , , = 9, 81, 82, 36, 42, 92. У наступній таблиці показано вихідні дані (у бітах) для різних методів вибору бітів, що використовуються для визначення виходу.

Парний біт Непарний біт Найменш значущий біт 0 1 1 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0

Посилання GMPBBS, a GPL'ed GMP-based implementation of Blum Blum Shub in C by daffodil-11 BlumBlumShub, a GPL'ed implementation of Blum Blum Shub in Java by daffodil-11 An implementation in Java Randomness tests

Література Lenore Blum, Manuel Blum, and Michael Shub. «A Simple Unpredictable Pseudo-Random Number Generator», SIAM Journal on Computing, volume 15, pages 364—383, May 1986. Lenore Blum, Manuel Blum, and Michael Shub. «Comparison of two pseudo-random number generators», Advances in Cryptology: Proceedings of Crypto '82. Available as PDF. Pascal Junod, «Cryptographic Secure Pseudo-Random Bits Generation: The Blum-Blum-Shub Generator», August 1999. 21 page PDF file Martin Geisler, Mikkel Krøigård, and Andreas Danielsen. «About Random Bits», December 2004. Available as PDF and Gzipped Postscript. Randomness Recommendations for Security — RFC 1750 .