IT-SERVICES

Опубликовано: 23 ноября 2018 г. 9:57

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

featured-image

АЛГОРИТМ RSA

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

  1. Выбираются 2 простых числа p и q. Для нашего примера возьмём p=5, а q=11
  2. Далее вычисляется произведение этих чисел, которое называется модулем. n=p*q. В нашем примере n=5*11=55
  3. На этом этапе нужно высчитать функцию Эйлера по формуле  Функция Эйлера определяет количество целых положительных чисел, не превосходящих n и взаимно простых с n. В нашем примере =4*10=40
  4. Далее выбирается произвольное целое число . Для нашего примера я взял число 17, для стойкости алгоритма лучше брать числа содержащие небольшое количество единичных бит в двоичной записи.Таким образом у нас есть пара чисел (e,n)=(17,55), которые будут использованы для шифрования и называются открытым ключом.
  5. Теперь самая нелюбимая часть алгоритма, это выборка числа d, вычисляется по формуле  из этого мы получим соотношение . Итак, k выбирается таким образом, чтобы в итоге d стало целым числом, k=1,2,3,4,5…..пока не найдем d, в нашем примере k=14, а значит d=33.
  6. Пара чисел (33,55) являются закрытым ключом.
  7. Теперь давайте зашифруем какое-нибудь сообщение, оно шифруется по формуле , где m -шифруемый символ. Расшифруем по формуле 

Предположим нужно зашифровать слово xmalax, оно имеет символы в английском алфавите так (24, 13,1, 12, 1, 24)

  1. 24^17 mod 55=29
  2. 13^17 mod 55=18
  3. 1^17 mod 55=1
  4. 12^17 mod 55=12
  5. 1^17 mod 55=1
  6. 24^17 mod 55= 29

Теперь наше сообщение имеет вид (29,18,1,12,1,29)

  1. 29^33 mod 55=24
  2. 18^33 mod 55=13
  3. 1^33 mod 55=1
  4. 12^33 mod 55=12
  5. 1^33 mod 55=1
  6. 29^33 mod 55= 24

Расшифрованное сообщение полностью соответствует нашему xmalax = (24, 13,1, 12, 1, 24).

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

  1. Реализация генератора простых случайных чисел.
  2. Эффективная и надежная реализация больших чисел(BigInteger)
  3. Реализация алгоритма генерации ключей, не подверженных известным атакам.

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

Share on Facebook Share on LinkedIn Share on VK