Современные информационные технологии/ 4. Информационная безопасность

Лимарева И.Г., Терлецкая А.М., Райц Н.Р., Мурых Е.Л., Фомичева Е.К.

Карагандинский государственный технический университет, Казахстан

ШИФРОВАНИЕ ДАННЫХ НА ОСНОВЕ АЛГОРИТМА RSA

 

Вопрос защиты переписки от несанкционированного доступа стар, как мир, и напрямую связан с вопросом защиты нашей privacy. Люди, эти странные существа, почему-то упорно не хотят, чтобы их письма читали. А другие люди и правительственные учреждения многих стран почему-то упорно желают их прочесть. Зачем нужно защищать свою переписку от чужих глаз законопослушному гражданину. А за тем же, зачем, пользуясь обычной почтой, отправляют обычно письма в конверте, а не почтовой открыткой. [1]

Любая система защиты информации — это комплекс организационно-технических мероприятий, который включает в себя совокупность правовых норм, организационных мер и программно-технических средств защиты, направленных на противодействие угрозам объекту информатизации с целью сведения до минимума возможного ущерба пользователям и владельцам системы. Без организационных мер, наличия четкой организационно-распорядительной системы на объекте информатизации эффективность любых технических СЗИ снижается.

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

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

Криптографические меры подразумевают применение шифрования и кодирования для сокрытия обрабатываемой и передаваемой информации от несанкционированного доступа [2].

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

Обычные средства криптографии (с одним ключом для шифровки и дешифровки) предполагали, что стороны, вступающие в переписку, должны были в начале обменяться секретным ключом, или паролем, с использованием некоего секретного канала (дупло, личная встреча), для того, чтобы начать обмен зашифрованными сообщениями. Получается замкнутый круг: чтобы передать секретный ключ, нужен секретный канал. Чтобы создать секретный канал, нужен ключ.

Описание RSA было опубликовано в 1977 году Р. Райвестом (Ronald Linn Rivest), А. Шамиром (Adi Shamir) и Л. Адлеманом (Leonard Adleman) из Массачусетского Технологического Института (MIT).

Британский математик К. Кокс (Clifford Cocks), работавший в центре правительственной связи (GCHQ) Великобритании, описал аналогичную систему в 1973 году во внутренних документах центра, но эта работа не была раскрыта до 1977 года и Р. Райвест, А. Шамир и Л. Адлеман разработали RSA независимо от работы К. Кокса.

Алгоритм RSA относится к так называемым асимметричным двухключевым криптосистемам. Один ключ служит для шифрования (открытый, public), другой - для расшифровки (секретный, private). Логично, что взломщику будет мало пользы от открытого ключа (конечно, при условии, что разрядность ключа высока), поэтому открытый ключ просто идеально подходит для того, чтобы безбоязненно передавать его по любым линиям связи, всячески распространять и т.п. Второй же ключ должен храниться в секрете, что, кстати, организовать не сложно, так как передавать его куда-либо по линиям связи в общем случае не нужно. Каким же образом работает такая криптосистема? Не очень сложно. Понятно, что для начала работы необходимо сгенерировать пару подходящих ключей. Делается это по следующему алгоритму:

1. Выбираются какие-нибудь достаточно большие простые числа P и Q.

2. Пусть теперь N = P * Q, а M = (P - 1) * (Q - 1).

3. Находим число D, взаимно простое с М.

4. Подбираем число E так, чтобы E * D = 1 (mod M).

Полученные таким образом пары чисел (E,N) и (D,N) станут ключами! Осталось только выбрать, какой из них будет открытым, а какой - секретным. На самом деле неважно, как будет сделан такой выбор. Но допустим, что мы выбрали секретным ключом пару (D,N) и хорошенько припрятали его от посторонних глаз. Значит, пара (E,N) будет служить открытым ключом, и мы можем смело отсылать ее своему скрытному собеседнику. Он будет использовать его, чтобы произвести шифрование секретной информации А (будем считать эту информацию числом) следующим образом: B = A^E (mod N). Шифровка B пересылается обратно (нам) и подвергается расшифровке:      A = B^D (mod N).

Разумеется, тут есть и свои тонкости. Например, шифруемые данные необходимо разбить на блоки - числа от 0 до N - 1 (технически это легко реализуемо). Кроме того, не все действия, из которых  состоит приведенный выше алгоритм конструирования ключей, так уж тривиальны. Например, выбор самих простых чисел P и Q не такой простой, особенно учитывая тот факт, что они должны обладать приличной разрядностью для того, чтобы их было практически невозможно вычислить с помощью факторизации числа N на классическом (не квантовом) компьютере.

Литература:

1.   Барбара Гутман, Роберт Бэгвилл. Политика безопасности при работе в Интернете. Техническое руководство. Пер. с англ. В. Казеннов. Издательство: National Institute of Standards and Technology (NIST), 2010г. – 102с.

2.   Стюарт Мак-Клар, Джоел Скембрей, Джордж Курц; «Секреты хакеров. Безопасность сетей - готовые решения». 4-е издание.: Пер. с англ. – М.: Издательский дом "Вильямс", 2008. – 656с.