Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Криптография.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
591 Кб
Скачать
☆

Рекомендации

Следующие рекомендации основаны на теоретических и экспериментальных результатах.

  1. Число битов для n должно быть, по крайней мере, 1024. Это означает, что n должно быть приблизительно 21024, или 309 десятичных цифр.

  2. Два простых числа p и q должны каждый быть по крайней мере 512 битов. Это означает, что p и q должны быть приблизительно 2512 или 154 десятичными цифрами.

  3. Значения p и q не должен быть очень близки друг к другу.

  4. p – 1 и q – 1 должны иметь по крайней мере один большой простой сомножитель.

  5. Отношение p/q не должно быть близко к рациональному числу с маленьким числителем или знаменателем.

  6. Модуль n не должен использоваться совместно.

  7. Значение e должно быть 216 + 1 или целым числом, близким к этому значению.

  8. Если произошла утечка частного ключа d, Боб должен немедленно изменить n так же, как e и d. Было доказано, что знание n и одной пары (e, d) может привести к открытию других пар того же самого модуля.

  9. Сообщения должны быть дополнены, используя OAEP, который рассматривается далее.

Оптимальное асимметричное дополнение шифрования (oaep — Optimal Assimetric Encryption Padding)

Как мы упоминали ранее, короткое сообщение в RSA делает зашифрованный текст уязвимым к атакам короткого сообщения. Там же показано, что простое добавление фиктивных данных (дополнение) к сообщению затрудняет работу Евы, но, приложив дополнительные усилия, она может все еще атаковать зашифрованный текст. Решение, предложенное группой RSA и некоторыми другими разработчиками, состоит в том, чтобы применить процедуру, названную оптимальным асимметричным дополнением шифрования (OAEP). Рисунок 14.9 показывает простую версию этой процедуры; реализация может использовать более сложную версию.

Рис. 14.9. Оптимальное асимметричное дополнение шифрования (OAEP)

Идея, показанная на рисунке 14.9, — это то, что P = P1 || P2, где P1 — замаскированная версия дополненного сообщения, М; P2 передается, чтобы позволить Бобу найти маску.

Шифрование. Ниже показаны шаги процесса шифрования.

  1. Алиса дополняет сообщение, чтобы сделать его m -битовым. Мы обозначим его М.

  2. Алиса выбирает случайное число r из k бит. Обратите внимание, что r применяется только однажды и затем уничтожается.

  3. Алиса использует общедоступную одностороннюю функцию G, которая принимает целое r -битовое число, и создает m -разрядное целое число ( m — размера М, и r <m ). Это — маска.

  4. Алиса применяет маску, G (r), чтобы создать первую часть исходного текста является замаскированным сообщением.

  5. Алиса создает вторую часть исходного текста . Функция H — другая общедоступная функция, которая принимает m -битовые входные сообщения и создает k -битовые выходные сообщения. Эта функция может быть криптографической хэш-функцией ю P2 используется для того, чтобы дать возможность Бобу снова создать маску после дешифрации.

  6. Алиса создает C = Pe = (P1 || P2) e и передает C Бобу.

Дешифрование. Следующие шаги показывают процесс дешифрования:

  1. Боб создает P = Cd = (P1 || P2).

  2. Боб сначала обновляет значение r, используя .

  3. Боб применяет , чтобы обновить значение дополненного сообщения.

  4. После удаления дополнения М, Боб находит первоначальное сообщение.

Ошибка в передаче

Если хотя бы один бит в течение передачи принят с ошибкой, текст, зашифрованный RSA, будет принят неправильно. Если полученный зашифрованный текст отличается от переданного, приемник не может определить первоначальный исходный текст. Исходный текст, вычисленный на стороне приемника, может очень отличаться от передаваемого передатчиком. Среда передачи должна быть освобожденной от ошибок за счет добавления избыточных бит или обнаружения и исправления ошибки в зашифрованном тексте.

Пример 14.8

Вот — реальный пример. Мы выбираем 512 -битовые p и q, вычисляем n и , затем выбираем e и испытываем, что оно взаимно простое с . Затем мы вычисляем d. Наконец, мы показываем результат шифрования и дешифрования. Целое число p — это число со 159 цифрами.

P = 961303453135835045741915812806154279093098455949962158225831508

796479404550564706384912571601803475031209866660649242019180878

0667421096063354219926661209

Целое число q содержит 160 цифр.

q = 12060191957231446918276794204450896001555925054637033936061

798321731482148483764659215389453209175225273226830107120695604

602513887145524969000359660045617

Модуль . Это число имеет 309 цифр.

n = 1159350417396761496889250986461588752377145737545414477548552613

7614788540S32635081727687881596832516846884930062548576411125016

241455233918.292716250765677272746009708271412773043496050055634

7274566628060099924037102991424472292215772798531727033839381334

692684137 327622000966676671831831088373420823444370953

имеет 309 цифр.

Боб выбирает e = 35535 (идеально 65537 ), и испытание на простое число показывает, что это число и — взаимно простые числа. Затем Боб находит инверсию — это обозначается d.

e = 35535

________________________________________________________________

d = 58008302S6003776393609366128967791759466906208965096218042286

6111380593852S2235873170628691003002171085904433840217072986908

760061153062025249598844480475682409662470814858171304632406440

777048331340108509473852956450719367740611973265574242372176176

74620776371642 0760033708533328853214470885955136670294831

Алиса хочет передать сообщение "THIS IS TEST", которое может быть представлено числовыми значениями, используя схему кодирования 00-26 ( 26 — пробел).

P = 1907081826081826002619041819

Шифрованный текст, вычисленный Алисой, — это C = Pe, числовое значение приведено ниже.

С = 4753091236462268272063655506105451809423717960704917165232392

430544529606131993285666178434183591141511974112520056829797945

717360361012782188478927415660904800235071907152771859149751884

658886321011483541033616578984679683867637337657774656250792805

2114814184404814184430812773059004692874248559166462108656

Боб может восстановить из зашифрованного текста исходный

Боб может восстановить из зашифрованного текста исходный текст, используя P = Cd.

P = 1907081826081826002619041819

После расшифровки восстановленный исходный текст — "THIS IS TEST".