Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
234.doc
Скачиваний:
11
Добавлен:
30.04.2022
Размер:
1.48 Mб
Скачать

9.8. Сис­те­мы шифрации с от­кры­тым клю­чом

Как бы ни бы­ли слож­ны и на­деж­ны крип­то­гра­фи­че­ские сис­те­мы ­– их сла­бое ме­сто при прак­ти­че­ской реа­ли­за­ции – про­блема рас­пре­де­ле­ния клю­чей. Для то­го, что­бы был воз­мо­жен об­мен кон­фи­ден­ци­аль­ной ин­фор­ма­ци­ей ме­ж­ду дву­мя субъ­ек­та­ми ИС, ключ дол­жен быть сге­не­ри­ро­ван од­ним из них, а за­тем ка­ким-то об­ра­зом опять же в кон­фи­ден­ци­аль­ном по­ряд­ке пе­ре­дан дру­го­му. Т.е. в об­щем слу­чае для пе­ре­да­чи клю­ча опять же тре­бу­ет­ся ис­поль­зо­ва­ние ка­кой-то крип­то­си­сте­мы.

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

Суть их со­сто­ит в том, что ка­ж­дым ад­ре­са­том ИС ге­не­ри­ру­ют­ся два клю­ча, свя­зан­ные ме­ж­ду со­бой по оп­ре­де­лен­но­му пра­ви­лу. Один ключ объ­яв­ля­ет­ся от­кры­тым, а дру­гой за­кры­тым. От­кры­тый ключ пуб­ли­ку­ет­ся и дос­ту­пен лю­бо­му, кто же­ла­ет по­слать со­об­ще­ние ад­ре­са­ту. Секретный ключ сохра­няется в тайне.

Ис­ход­ный текст шиф­ру­ет­ся от­кры­тым клю­чом адресата и пе­ре­да­ет­ся ему. За­шиф­ро­ван­ный текст в прин­ци­пе не мо­жет быть рас­шиф­ро­ван тем же от­кры­тым клю­чом. Де­шиф­ро­ва­ние со­об­ще­ние воз­мож­но толь­ко с ис­поль­зо­ва­ни­ем за­кры­то­го клю­ча, ко­то­рый из­вес­тен толь­ко са­мо­му ад­ре­са­ту.

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

  1. Разложение больших чисел ан простые множители.

  2. Вычисление логарифма в конечном поле.

  3. Вычисление корней алгебраических уравнений.

Сле­ду­ет от­ме­тить, что ал­го­рит­мы криптосистемы с от­крытым ключом (СОК) мож­но ис­поль­зо­вать в трех на­зна­че­ни­ях.

  1. Как са­мо­стоя­тель­ные сред­ст­ва за­щи­ты пе­ре­да­вае­мых и хра­ни­мых дан­ных.

  2. Как сред­ст­ва для рас­пре­де­ле­ния клю­чей. Ал­го­рит­мы СОК бо­лее тру­до­ем­ки, чем тра­ди­ци­он­ные крип­то­си­сте­мы. По­это­му час­то на прак­ти­ке ра­цио­наль­но с по­мо­щью СОК рас­пре­де­лять клю­чи, объ­ем ко­то­рых как ин­фор­ма­ции не­зна­чи­те­лен. А по­том с по­мо­щью обыч­ных ал­го­рит­мов осу­ще­ст­в­лять об­мен боль­ши­ми ин­фор­ма­ци­он­ны­ми по­то­ка­ми.

  3. Сред­ст­ва ау­тен­ти­фи­ка­ции поль­зо­ва­те­лей «Электрон­ная подпись».

9.8.1. Ал­го­ритм rsa

Не­смот­ря на до­воль­но боль­шое чис­ло раз­лич­ных СОК, наиболее популярна – криптосистема RSA, разработанная в 1977 году и по­лу­чив­шая на­зва­ние в честь ее соз­да­те­лей: Рона Ри­ве­ста, Ади Ша­ми­ра и Леонарда Эй­дель­ма­на. Они вос­поль­зо­ва­лись тем фак­том, что на­хо­ж­де­ние боль­ших про­стых чи­сел в вы­чис­ли­тель­ном от­но­ше­нии осу­ще­ст­в­ля­ет­ся лег­ко, но раз­ло­же­ние на мно­жи­те­ли про­из­ве­де­ния двух та­ких чи­сел прак­ти­че­ски не­вы­пол­ни­мо. До­ка­за­но (тео­ре­ма Ра­би­на), что рас­кры­тие шиф­ра RSA эк­ви­ва­лент­но та­ко­му раз­ло­же­нию. По­это­му для лю­бой дли­ны клю­ча мож­но дать ниж­нюю оцен­ку чис­ла опе­ра­ций для рас­кры­тия шиф­ра, а с уче­том про­из­во­ди­тель­но­сти со­вре­мен­ных ком­пь­ю­те­ров оце­нить и не­об­хо­ди­мое на это вре­мя.

В настоящее время алгоритм RSA используется во мно­гих стандартах, среди которых SSL, S-HHTP, S-MIME, S/WAN, STT и PCT.

Чтобы использовать алгоритм RSA, надо сначала сгене­рировать открытый и секретный ключи, выполнив следующие шаги.

  1. Выберем два очень больших простых числа p и q.

  2. Определим число n как результат умножения р на q:

n = р * q.

  1. Выберем большое случайное число d. Это число должно быть взаимно простым с результатом умножения

(р - 1) * (q - 1).

  1. Определим такое число e, для которого является истин­ным соотношение:

(e * d) mоd ( (р - 1) * (q - 1) = l.

  1. Назовем открытым ключом числа e и n, а секрет­ным ключом – числа d и n.

Чтобы зашифровать данные по известному ключу {е, n}, необходимо сделать следующее:

  • разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде чисел Mi = 0, 1,..., n-1;

  • зашифровать текст, рассматриваемый как последова­тель­ность чисел Мi, по формуле:

Сi=(Mei) mоd(n).

Чтобы расшифровать эти данные, используя секретный ключ {d, n}, необходимо определить последовательность чи­сел Mi по формуле:

Мi = (Cdi) mоd(n).

Полученное множество чисел Mi представляет собой ис­ходный текст.

Приведем простой пример использования метода RSA для шифрования сообщения «САВ». Для простоты будем ис­пользовать очень маленькие числа (на практике используются намного большие числа).

  1. Выберем р = 3 и q = 11.

  2. Определим n = 3711 = 33.

  3. Найдем (р - 1) * (q - 1) = 20. Следовательно, в качестве числа d выберем любое число, которое является взаимно про­стым с 20, например d = 3.

  4. Выберем число е. В качестве такого числа может быть взято любое число, которое удовлетворяет соотношению:

(е * 3) mоd(20) = l. например, 7.

  1. Представим шифруемое сообщение как последова­тель­ность целых чисел в диапазоне 0... 32. Пусть бу­ква А изо­бражается числом 1, буква В – числом 2, буква С – числом 3. Тогда сообщение можно представить в виде после­довательно­сти чисел 3 1 2. Зашифруем сообщение, используя ключ {7, 33}:

C1 = (37) mod(33) = 2187 mod(33) = 9,

C2 = (17) mod(33) = 1 mod(33) = 1,

C3 = (27) mod(33) = 128 mod(33) = 29.

Попытаемся расшифровать сообщение {9, 1, 29}, полу­ченное в результате зашифровывания по известному ключу, на основе секретного, ключа {3, 33}:

M1 = (97) mod(33) = 729 mod(33) = 3,

M2 = (17) mod(33) = 1 mod(33) = 1,

M3 = (297) mod(33) = 24389 mod(33) = 2.

Таким образом, в результате расшифровывания сообще­ния получено исходное сообщение «САВ».

Криптостойкость алгоритма RSA основывается на пред­положении, что исключительно трудно определить секретный ключ по известному, поскольку для этого необходимо решить задачу о существовании делителей целого числа. Данная за­дача не имеет в настоящее время эффективного (полиномиаль­ного) решения. В связи с этим для чисел, состоящих из 200 цифр (а именно такие цифры рекомендуется использовать), традиционные методы требуют выполнения огромного числа операций (около 1023).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]