Алгоритм Блум - Блум - Шуба

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

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

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

xn+1=xn2modM,

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

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

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

xn=x02nmodλ(M)modM,

де λ - функція Кармайкла: в даному випадку λ(M)=λ(pq)=lcm(p1,q1) - найменше спільне кратне чисел (p1) і (q1).

Надійність

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

Приклад

Нехай p=11, q=19 та s=3. Ми можемо розраховувати отримати велику довжину циклу для таких малих чисел, тому що gcd(φ(p1),φ(q1))=2. Генератор починає рахувати x0 за допомогою x1=s і створює послідовність x0, x1, x2, x5 = 9, 81, 82, 36, 42, 92. У наступній таблиці показано вихідні дані (у бітах) для різних методів вибору бітів, що використовуються для визначення виходу.

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

Посилання

Література

  • 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 Шаблон:Webarchive
  • 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 Шаблон:Webarchive.