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

Алгоритм Блум - Блум - Шуба (англ. Algorithm Blum — Blum — Shub, BBS) - генератор псевдовипадкових чисел, запропонований в 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[недоступне посилання з серпня 2019], a GPL'ed GMP-based implementation of Blum Blum Shub in C by daffodil-11
  • BlumBlumShub[недоступне посилання з серпня 2019], 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.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.