Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
К экзамену (МиСЗКИ).docx
Скачиваний:
18
Добавлен:
15.04.2019
Размер:
155.29 Кб
Скачать
  1. Криптосистемы с открытым ключом: схема реализации, алгоритм rsa

Ривест – Шамир – Адлемар. Основан на примении больших простых чисел.

В таких системах для шифрования и дешифрования используются разные ключи, каждый из которых не может быть получен один из другого. Один ключ для шифрования, другой для расшифрования. Первый ключ не является секретным и может быть опубликован для использования всеми пользователями системы, которые зашифровали данные. Расшифрование данных с помощью известного ключа невозможно, и для этого используется второй ключ, который является секретным и должен передаваться по закрытому каналу связи. В основе таких не симметричных криптосистем лежит свойство односторонних функций с секретом.

Для того чтобы применить RSA алгоритм необходимо сгенерировать открытый и закрытый ключи выполнив шаги:

  1. выбирают два очень больших простых числа P и Q.

  2. определяют n как результат N=P*Q;

  3. выбирают большое случайное число d, которое должно быть взаимопростым с результатом умножения d=(P-1)(Q-1); Взаимопростыми наз. числа которые не имеют общего делителя кроме единицы.

  4. определяют такое число e, для кот-го выполняется соотношение (e*d) mod (P-1)(Q-1) = 1;

  5. числа e и n берут в качестве открытого ключа. D и N-закрытого.

Для того чтобы выполнить шифрование данных необходимо

  1. разбить шифруемое сообщение на блоки каждый из которых может быть представлен в виде числа от 1 до n-1. Обычно выбирают алфавит и каждому символу присваивают код от 0 до n-1

  2. выполнить шифрование в соответствии с выражением (xi – код открытого, yi – закрытого; yi = e^xi mod n)

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

  1. разбить дешифруемый текст на блоки, каждый из которых содержит числа от 0 до n-1 и представлен в виде числа y(i)

  2. зашифровать текст в соответствии с выражением x(i)=y (i) mod n

Чтобы расшифровать принятое сообщение, используя секретный ключ dn, необходимо выполнить вычисления по формуле x(i)=y(i) mod n.

Пример. Пусть Р=3, Q=11. Тогда n=33, d=3, e=7. В качестве чисел от 0 до 32 выберем коды русского алфавита+пробел.

А

Б

Б

А

1

2

2

1

С(1)=17 mod 33=1, C(2)= 27 mod 33=29, C(3)= 27 mod 33=29, C(4)=17mod 33=1

А

Б

Б

А

1

29

29

1

M(1)=13 mod 33=1, M(2)= 293 mod 33=2, M(3)= 293 mod 33=2, M(4)=1.

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

К сожалению к RSA алгоритму относятся с подозрением по двум причинам:

  1. Не существует строгого доказательства того, что нет другого способа определения секретного ключа по открытому, кроме как определения делителей целого числа.

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