как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами? |
Алгоритмы с открытыми ключами
8.5 Алгоритм Блюма-Блюма-Шуба
Одним из наиболее стойких к криптографическим атакам является алгоритм Блюма-Блюма-Шуба (BBS). Главное его достоинство состоит в том, что строго доказано, что не существует алгоритма с полиномиальной оценкой времени его выполнения, который по любым битам выходной последовательности может предсказать ее -й бит с вероятностью, существенно большей, чем 0,5.
Пусть и - два больших простых числа примерно одинакового размера, причем
Тогда число называется целым числом Блюма. Пусть - мультипликативная группа кольца вычетов по модулю , - подгруппа её квадратов. Имеем:
Каждый квадрат из имеет ровно четыре квадратных корня в , и лишь один из них, называемый примитивным, лежит в .
Пример 8.11 Если , то . Тогда , , , кроме того, учитывая, что корня из 135 по модулю 437 не существует, а , имеем:
Квадратными корнями из 139 по модулю 437 являются числа 24, 185, 252 и 413, причем 24 является примитивным, поскольку .
Задача определения примитивных квадратных корней по модулю числа вычислительно эквивалентна задаче разложения этого числа на множители. Таким образом, функция
эффективно вычисляется, а произвести обратное преобразование может только тот, кто знает секрет - разложение на множители. Таким образом, - односторонняя функция с секретом.
Опишем теперь алгоритм генерации случайной последовательности чисел.
-
Выберем в качестве инициализирующего вектора случайное число . Для этого возведём случайное число в квадрат.
- Искомой последовательностью битов длиной будет последовательность где - младший бит числа ,
Важным достоинством этого генератора является то, что при знании разложения на простые множители он допускает прямое определение отдельных битов, которые в нём вырабатываются. Имеем:
причем , поэтому
то есть с помощью двух операций модульного возведения в степень, которые эффективно вычисляются, любое число может быть найдено лишь исходя из начального вектора и индекса .
Термин вероятностное шифрование был введён Ш. Гольдвассер и С. Микали, и ими же была предложена первая схема такого шифрования, основанная на использовании BBS-генератора в качестве источника ключевой последовательности. Данная схема не обеспечивает секретности по отношению к атаке на основе выбранного шифртекста.
Пусть исходное сообщение - $m$-разрядная битовая последовательность, - случайный квадратичный вычет по модулю . Функция шифрования по схеме Гольдвассер-Микали имеет вид:
при этом включается в шифртекст для того, чтобы законный получатель мог его расшифровать. При этом для расшифровки вычисляется по следующему алгоритму:
( 8.1) |
где и находятся расширенным алгоритмом Евклида: .
Пример 8.12 Каждой букве русского алфавита (отождествим Е и Ё) поставим в соответствие её порядковый номер в двоичной записи:
Зашифруем слово "шифр" по алгоритму вероятностного шифрования.
Используя приведенную схему кодирования, получаем:
Выберем простые числа: . Тогда . Возьмём случайный квадратичный вычет по модулю . Последовательно возводя его в квадрат, получаем:
Пример 8.13 Шифртекст получен из слова в алфавите А, Б, ..., Я по схеме вероятностного шифрования с использоваем открытого ключа . Найти открытый текст. , , .
Имеем , .
Расшифровку проведем по алгоритму (8.1):
1) Вычисляем и :
2) Находим и :
3) С помощью алгоритма Евклидва найдём целые числа и такие, что , т.е. , . Получаем: , .
4) Находим :
Теперь вычисляем :
Прибавляя поразрядно последовательность , , , к шифрограмме, получаем код исходного сообщения: