Алгоритм Блюма — Микали

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 93.175.1.49 (обсуждение) в 13:04, 26 января 2012. Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

Алгоритм Блюма — Микали (англ. Blum-Micali algorithm) — это криптографически стойкий алогоритм генерации псевдослучайных последовательностей, с использованием сида. Идеи алгоритма были изложены Блюмом и Микали в 1984 году. Алгоритм был разработан на основе алгоритма генератора Шамира, предложенного Ади Шамиром годом ранее[1]. Алгоритм отличается от предшественника более сильными требованиями к сложности вычисления выходной последовательности. В отличие от генератора Шамира выходом данного алгоритма являются биты, а не числа.

Основная идея алгоритма

Рассмотрим простейшую идею построения генератора псевдослучайных чисел: мы задаёмся некоторой начальной случайной последовательностью (Seed) и выбираем некоторый алгоритм шифрования. Далее на каждой итерации шифруя текущее состояния и выбирая из полученного результата набор битов, мы можем получать последовательность чисел, которая выглядит довольно случайным образом.

Алгоритм Блюма — Микали использует именно этот процесс, используя «хардкор-биты» (hard-core bit, hard-core predicate).

Понятие хардкор-бита

«Хардкор-битом»(предикатом) B для функции f называют некоторую функцию, такую, что:

  1. Выходное значение B — 1 бит.
  2. Для неё нет такого полиномиально-временного(Класс BPP — Bounded-error probabilistic polynomial) алгоритма, который может вычислить B(x) из f(x) с вероятностью отличной от 1/2.

Теорема Блюма - Микали

— Seed — длина аргумента функции . Она же — длина . - преобразование из в , а — из в {0,1} - сложный бит для . ; — биты конечной генерируемуой последовательности. ; . -псевдослучайность - свойство последовательности для которой выполнено -сложный бит - свойство функции , для которой , где — время нахождения алгоритма криптоаналитиком за время .



Определим как следующий процесс: Возьмем некоторую случайную последовательность (seed). Если является -сложным битом, то -генератор псевдослучайных чисел. - время вычисления функции .

Теорема доказывается от противного; Предполагается, что существует алгоритм позволяющий найти элемент, зная предыдущих[2].

Атаки на алгоритм

Реализации данного алгоритма как правило опираются на сложность вычисления обратных функций в поле Галуа, например на сложности вычисления дискретного логарифма. Следовательно, для взлома этого алгоритма необходимо лишь уметь брать дискретный алгоритм за обозримое время. На настоящих реализациях компьютеров для правильно подобранных чисел - это очень ресурсоёмкая операция. Однако, аналогичный алгоритм на квантовом компьютере даёт выигрыш в скорости в квадрате, что делает взлом такого генератора весомо более реальным. Атака основана на одном из вариантов квантовых алгоритмов - подскоке амплитуды, более обобщенном варианте Алгоритма Гровера[3].

Примеры генераторов

Генератор Блюма — Блюма — Шуба

Возмём такие простые и , что — 1024-битное и . Функция . В качестве сложного бита берется функция, возвращающая наименьший значимый бит. является таковым в допущении, что не существует алгоритма вычисления дискретного логарифма сложности лучше либо равной .

Dlog generator

Пусть — 1024 битное простое число, а принадлежит . Определим , как .
Сложный бит


B(x) является таковым в допущении, что не существует алгоритма вычисления дискретного логарифма c функцией сложности или лучше.

Генератор Калински

Криптостойкость вышепреведённых генераторов базировалась на сложности нахождения дискретного логарифма. Генератор Калински использует идею эллиптических кривых.

Пусть - простое число, такое что . Рассмотрим кривую в x (поле Галуа) вида: . Точки кривой вместе с точкой на бесконечности образуют циклическую группу порядка . Пусть — генератор этой группы. Введём следующую функцию:
Соответственно, функция, используемая в генераторе имеет вид:
Сложный бит генератора:

Seed такого генератора - некоторая точка на кривой.

Примечания

  1. Adi Shamir On the generation of cryptographically strong pseudorandom sequences, 1983
  2. [Manuel Blum and Silvio Micali, How to Generate Cryptographically Strong Sequences of Pseudorandom Bits, SIAM Journal on Computing 13, no. 4 (1984): 850-864.
  3. Elloá B. Guedes, Francisco Marcos de Assis, Bernardo Lula Jr — Examples of the Generalized Quantum Permanent Compromise Attack to the Blum-Micali Construction. http://arxiv.org/abs/1012.1776

См. также


Литература