Interested Article - Алгоритм Блюма — Микали
- 2020-12-13
- 1
Алгоритм Блюма — Микали ( англ. Blum-Micali algorithm ) — это криптографически стойкий алгоритм генерации псевдослучайных последовательностей, с использованием зерна ( ). Идеи алгоритма были изложены Блюмом и Микали в 1984 году. Алгоритм был разработан на основе алгоритма , предложенного Ади Шамиром годом ранее . Алгоритм отличается от предшественника более сильными требованиями к сложности вычисления выходной последовательности. В отличие от выходом данного алгоритма являются биты, а не числа.
Основная идея алгоритма
Рассмотрим простейшую идею построения генератора псевдослучайных чисел: мы задаёмся некоторой начальной случайной последовательностью (зерно) и выбираем некоторый алгоритм шифрования. Далее на каждой итерации шифруя текущее состояния и выбирая из полученного результата набор битов, мы можем получать последовательность чисел, которая выглядит довольно случайным образом.
Алгоритм Блюма — Микали использует именно этот процесс, используя «хардкор-биты» (hard-core bit, ).
Придумывая алгоритм, Блюм и Микали выдвинули три требования к выходной последовательности:
- Количество выходных битов должно полиномиально зависеть от длины зерна (в силу конечной длины цикла алгоритма).
- Получение битов должно быть простым в вычислительном плане — количество действий должно быть ограничено сверху некоторой полиномиальной функцией от длины зерна.
- Биты должны быть непредсказываемы. При известном генераторе и известных первых битах последовательности , но не зная зерна, определение следующего бита c вероятностью, отличной от 50%, должно являться вычислительно сложной задачей. То есть, такое вычисление не должно выполняться за полиномиальное от длины зерна количество операций.
Понятие хардкор-бита
«Хардкор-битом» (предикатом) B для функции f называют некоторую функцию, такую, что:
- Выходное значение B — 1 бит.
- Для неё нет такого полиномиально-временно́го (то есть из класса BPP — Bounded-error probabilistic polynomial) алгоритма, который может правильно указать B(x) по известной f(x) с вероятностью, отличной от 1/2.
Теорема Блюма - Микали
— Seed
— длина аргумента функции
. Она же — длина
.
- преобразование из
в
, а
— из
в {0,1} - сложный бит для
.
;
— биты конечной генерируемуой последовательности.
;
.
-псевдослучайность - свойство последовательности для которой выполнено
-сложный бит - свойство функции
, для которой
,
где
— алгоритм, найденный криптоаналитиком за время
.
Определим
как следующий процесс:
Возьмем некоторую случайную последовательность (seed).
Если
является
-сложным битом, то
—
-генератор псевдослучайных чисел.
- время вычисления функции
.
Теорема доказывается от противного; Предполагается, что существует алгоритм позволяющий найти
элемент, зная
предыдущих
.
Применение
Генераторы, основанные на данном алгоритме находят применение в системах как с закрытым, так и с открытым ключом.
В системах с закрытым ключом
Два партнёра безопасно обменявшись секретной начальной последовательностью, получают общую случайную последовательность длиной во много раз большей, чем начальная последовательность.
В системах с открытым ключом (асимметричное шифрование)
Гольдвассер и Микали показали
, что в предположении что определение
квадратичных вычетов
по модулю от составных чисел - вычислительно сложная задача, существует шифровальная схема, обладающая следующим свойством:
"Злоумышленник, зная алгоритм шифрования и имея зашифрованный текст не может получить никакой информации об оригинальном тексте."
Это свойство так же известно под названием
принципа Керкгоффса
.
Примеры генераторов
Генератор Блюма — Блюма — Шуба (BBS)
Возьмём такие простые
и
, что
— 1024-битное и
. Функция
. В качестве сложного бита берется функция, возвращающая наименьший значимый бит.
является таковым в допущении, что не существует алгоритма вычисления дискретного логарифма сложности лучше либо равной
.
Также было показано
, что генератор остаётся асимптотически стойким, если для выходной последовательности выбирать не один, а несколько младших битов. Но стоит отметить, что генератор в такой модификации уже не будет соответствовать алгоритму Блюма-Микали.
Приведём некоторые численные оценки для BBS для двух вариантов атаки:
Допустим, требуется сгенерировать последовательность длиной
, такую что ни один алгоритм не сможет отличить эту последовательность от истинно случайной за время
операций с вероятностью больше чем 1/100. Расчет показывает, что для генерации такой последовательности требуется зерно длиной
бит. В случае, если требуется скомпрометировать генератор, т.е. найти зерно по выходной последовательности за те же времена с той же точностью, то защита от подобной атаки будет обеспечиваться всего при
бит
.
Dlog generator
Пусть
— 1024 битное простое число, а
принадлежит
. Определим
→
, как
.
Сложный бит
B(x) является таковым в допущении, что не существует алгоритма вычисления дискретного логарифма c функцией сложности
или лучше.
Генератор Калински
Криптостойкость вышеприведённых генераторов базировалась на сложности нахождения дискретного логарифма. Генератор Калински использует идею эллиптических кривых.
Пусть
- простое число, такое что
. Рассмотрим кривую в
x
(
поле Галуа
) вида:
.
Точки кривой
вместе с точкой на бесконечности
образуют
циклическую группу
порядка
. Пусть
— генератор этой группы.
Введём следующую функцию:
Соответственно, функция, используемая в генераторе имеет вид:
Сложный бит генератора:
такого генератора - некоторая точка на кривой.
Уязвимости алгоритма
Доказано, что проблема, состоящая в том, чтобы различить истинную случайную последовательность и последовательность сгенерированную согласно схеме Блюма-Микали может быть сведена к задаче обращения функции
.
Реализации данного алгоритма, как правило, опираются на сложность вычисления обратных функций, например на сложности вычисления
дискретного логарифма
. Следовательно, для взлома этого алгоритма необходимо лишь уметь брать дискретный логарифм за обозримое время. На настоящих реализациях компьютеров для правильно подобранных чисел - это очень ресурсоёмкая операция. Однако, аналогичный алгоритм на квантовом компьютере даёт выигрыш в скорости в квадрате, что делает взлом такого генератора весомо более реальным. Атака основана на одном из вариантов
квантовых алгоритмов
-
, более обобщенном варианте
Алгоритма Гровера
.
Примечания
- Adi Shamir On the generation of cryptographically strong pseudorandom sequences, 1983
- [Manuel Blum and Silvio Micali, How to Generate Cryptographically Strong Sequences of Pseudorandom Bits, SIAM Journal on Computing 13, no. 4 (1984): 850-864.
- S.Goldwasser and S.Micali, Probabilistic encryption and how to play mental poker keeping secret all partial information, Proc 14th ACM Symposium on Theory of Computing, 1982, pp. 365-377
- ↑ Andrey Sidorenko and Berry Schoenmakers, State Recovery Attacks on Pseudorandom Generators, 2005.
- O.Goldreich. Foundations of Cryprography. Basic Tools. Cambridge University Press, Cambridge, United Kingdom, 2001.
- Elloá B. Guedes, Francisco Marcos de Assis, Bernardo Lula Jr — Examples of the Generalized Quantum Permanent Compromise Attack to the Blum-Micali Construction. от 15 августа 2016 на Wayback Machine
См. также
Литература
- B. S. Kaliski. Elliptic Curves and Cryptography: A Pseudorandom Bit Generator and Other Tools. PhD thesis, MIT, Cambridge, MA, USA, 1988.
- 2020-12-13
- 1