33634

RSA (буквенная аббревиатура от фамилий Rivest, Shamir и Adleman)

Доклад

Информатика, кибернетика и программирование

Алгоритм RS состоит из следующих пунктов: Выбрать простые числа p и q заданного размера например 512 битов каждое. Вычислить n = p q Вычисляется значение функции Эйлера от числа n: m = p 1 q 1 Выбрать число d взаимно простое с m Два целых числа называются взаимно простыми если они не имеют никаких общих делителей кроме 1. Выбрать число e так чтобы e d = 1 mod m Числа e и d являются ключами. Шифруемые данные необходимо разбить на блоки числа от 0 до n 1.

Русский

2013-09-06

92.5 KB

11 чел.

53. RSA (буквенная аббревиатура от фамилий Rivest, Shamir и Adleman) - криптографический алгоритм с открытым ключом. RSA стал первым алгоритмом такого типа, пригодным и для шифрования, и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений.

В криптографической системе с открытым ключом каждый участник располагает как открытым ключом (public key), так и секретным ключом (secret key). Каждый ключ - это часть информации. В криптографической системе RSA каждый ключ состоит из пары целых чисел. Каждый участник создаёт свой открытый и секретный ключ самостоятельно. Секретный ключ каждый из них держит в секрете, а открытые ключи можно сообщать кому угодно или даже публиковать их. Открытый и секретный ключи каждого участника обмена сообщениями образуют «согласованную пару» в том смысле, что они являются взаимно обратными.

Алгоритм RSA состоит из следующих пунктов:

  1.   Выбрать простые числа p и q заданного размера (например, 512 битов каждое).

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

  1.   Вычислить n = p * q 
  2.   Вычисляется значение функции Эйлера от числа n:

 m = (p - 1) * (q - 1)

  1.   Выбрать число d взаимно простое с m 

Два целых числа называются взаимно простыми, если они не имеют никаких общих делителей, кроме ±1. Примеры: 14 и 25 взаимно просты, а 15 и 25 не взаимно просты (у них имеется общий делитель 5).

  1.   Выбрать число e так, чтобы e * d = 1 (mod m)

Числа e и d являются ключами. Шифруемые данные необходимо разбить на блоки - числа от 0 до n - 1.

Шифрование и дешифровка данных производятся следующим образом:

Шифрование: P(M) = Me mod n

Дешифровка: S(C) = Cd mod n

Следует также отметить, что ключи e и d равноправны, т.е. сообщение можно шифровать как ключом e, так и ключом d, при этом расшифровка должна быть произведена с помощью другого ключа.

Схема шифрования и дешифрования RSA представлена на рис.4. Предположим, сторона B хочет послать стороне А сообщение М. Сообщением являются целые числа от 0 до n-1.



Рис.4 – Схема шифрования/дешифрования RSA

Размер ключа в алгоритме RSA связан с размером модуля n. Два числа p  и q,  произведением  которых  является  модуль,  должны  иметь  приблизительно одинаковую  длину,  поскольку  в  этом  случае  найти  сомножители  (факторы) сложнее, чем в случае, когда длина чисел значительно  различается.  Например, если предполагается использовать 768-битный модуль, то каждое  число  должно иметь длину приблизительно 384 бита. Обратите внимание, что если  два  числа чрезвычайно близки  друг  к  другу  или  их  разность  близка  к  некоторому предопределенному значению, то возникает потенциальная угроза  безопасности, однако  такая  вероятность  –  близость  двух  случайно  выбранных  чисел  – незначительна.

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

На 2009 год система шифрования на основе RSA считается надёжной, начиная с размера n = p * q  в 1024 бита. В Более подробную информацию о данном алгоритме шифрования и конкретные примеры можно получить из справки, а также из источников, указанных в литературе.

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


 

А также другие работы, которые могут Вас заинтересовать

69075. ТЕХНОЛОГІЯ ADO .NET. ВІД’ЄДНАНІ ОБ’ЄКТИ 76.35 KB
  В попередній лекції ми розглядали роботу з даними через приєднані об’єкти, тобто через постійне з’єднання з джерелом даних. Програма відкривала з’єднання з базою даних і не закривала його принаймні до завершення роботи з джерелом даних. В цей час з’єднання з джерелом підтримувалося постійно.
69076. АРХІТЕКТУРА ТА ПРОЕКТУВАННЯ КОМПОНЕНТНИХ СИСТЕМ 153.12 KB
  У попередніх лекціях ми розглядали створення локальних (автономних) Windows-застосунків. В результаті компіляції і збирання застосунку створювався один програмний компонент у формі збірки. У вигляді локальних застосунків розробляють сервісні програми, системні утиліти...
69077. ПРОМІЖНЕ ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ 144.91 KB
  Важливу роль у створенні кросплатформних програмних систем відіграють додаткові загальносистемні програмні засоби, які вирішують завдання взаємодії та інтеграції компонентів. Ці засоби розміщуються між рівнем операційної системи (ОС) і рівнем прикладного програмного забезпечення...
69078. РОЗПОДІЛЕНІ МОДЕЛІ ПРОМІЖНОГО РІВНЯ ДЛЯ WINDOWS 254.25 KB
  Друга рання модель, про яку говорилося в лекції 2, заснована на віддалених викликах процедур (Remote Procedure Calls, RPC). У цій моделі акцент робиться на приховуванні мережевого обміну за рахунок того, що процесу дозволяється викликати процедури, реалізація яких знаходиться на віддаленій машині.
69079. КОМПОНЕНТНА МОДЕЛЬ CORBA 118.86 KB
  CORBA (Common Object Request Broker Architecture) - це набір відкритих специфікацій інтерфейсів, що визначає архітектуру технології міжпроцесної взаємодії і незалежного маніпулювання об'єктами. Розробниками технології інтерфейсів є OMG і X/Open.
69080. Технологія EJB для побудови розподілених систем 66.54 KB
  JavaBeans забезпечують основу для багаторазово використовуваних і модульних компонентів ПЗ. Компоненти JavaBeans можуть приймати різні форми, але найбільш широко вони використовуються в елементах графічного інтерфейсу користувача (на стороні клієнта).
69081. КОМПОНЕНТНА ІДЕОЛОГІЯ 207.5 KB
  Крос-платформними можна назвати більшість сучасних мов програмування високого рівня. Наприклад, C, С++ і Object Pascal — крос-платформні мови на рівні компіляції, тобто для цих мов є компілятори під різні платформи. Java і C# — крос-платформні мови на рівні виконання, тобто їх виконувані файли...
69082. СТРАТЕГІЇ ІНТЕГРАЦІЇ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 174.41 KB
  Модульність — принцип організації великих систем у вигляді наборів підсистем, модулів або компонентів. Цей принцип наказує організовувати складну систему у вигляді набору простіших систем — модулів, що взаємодіють один з одним через чітко визначені інтерфейси.
69083. Розробка та збирання компонентів типу Windows Forms 148.18 KB
  Для компілятора – це збірка (Assembly). Рішення може складатися з одного або кількох проектів. Кожний проект може складатися з кількох форм і інших файлів, рисунків, ресурсів, маніфесту (опису збірки). Відкомпільована збірка є готовим до використання компонентом.