Отвлечемся на некоторое время от вирусов и поговорим о криптографии. А именно о том её разделе, который называется шифрованием с открытым ключом Итак, шифрование с открытым ключом уходит корнями в 1975 год, когда перед специалистами криптологами встали две серьёзные проблемы, которые нуждались в немедленном решении. Первая проблема была связана с распространением секретных ключей, вторая - проблема электронной подписи. Обе проблемы были решены одним методом - шифрованием с открытым ключом (public key cryptography). В основе этого метода лежат, так называемые, односторонние, или необратимые функции: при заданном значении x вычислить значение f(x), однако, зная y=f(x), определить x черезвычайно трудно.
Система шифрования с открытым ключом представляет собой пару семейств алгоритмов
{Ek}, kО {K} и {Dk}, kО {K}
, определяющих обратимые преобразования: До изобретения систем с открытым ключом, ключи для шифрования и для дешифровки были неразделимы, имея ключ для шифрования, не стоило большого труда использовать этот-же ключ для дешифровки сообщений. Пользователь генерирует пару взаимно обратных преобразований (ключей) E и D, преобразование D он держит в секрете (личный ключ), а преобразование E публикуется (открытый ключ). Каждый кто хочет связаться с данным пользователем, выполняет над сообщением преобразование E (шифрует сообщение открытым ключом) и отправляет его владельцу секретного ключа D. Таким образом, сообщение может дешифровать только владелец ключа D. Для примера рассмотрим одну из немногих систем с открытым ключом получивших практическое воплощение. RSA, была так названа в честь её изобретателй - R.Rivest, A.Shamir, L.Aldman. Кстати, этот алгоритм генерации ключей использовался в старых версиях PGP, но об этом мы ещё поговорим.
В RSA используется то факт, что нахождение больших простых чисел осуществляется легко, но
разложение на множители произведения двух таких чисел практически невыполнимо. На практике
это выглядит так: случайным образом выбираются два довольно больших числа, например, по 100 бит каждое, назовём
эти числа P и Q. Эти числа перемножаются и в результате получается некоторое число, назовём его
N. Число N опубликовывается, а числа P и Q содержатся в секрете. Используя их можно вычислить
специальную функцию Эйлера F(N) т.е. количество целых
чисел, меньших N и взаимно простых по отношению к N. Затем случайным образом выбирается число из интервала от 2 до F(N) , это число, назовём его E, также публикуется. В результате получается открытый ключ, который представляет собой пару чисел (N,E).
Шифровка исходного блока текста M производится следующим образом:
C=ME(mod N), 1.2 О PGP подробнееСамым популярным на сегодняшний день криптографическим пакетом использующим шифрование с открытым ключом является PGP (pretty good privacy) написанный Филипом Зиммерманом (Philip Zimmermann) PGP предоставляет выбор из ряда различных алгоритмов с секретным ключом, используемых для шифрования тела сообщения. Под алгоритмом с секретным ключом мы понимаем обычный, или симметричный, блочный шифр, который использует для шифрования и расшифровки один и тот же ключ. PGP предоставляет три симметричных блочных шифра, включая CAST, тройной DES и IDEA. Эти алгоритмы не являются "домашними поделками"; все они разработаны командами криптографов с выдающейся репутацией. Для интересующихся криптографией: все три шифра оперируют 64-битными блоками открытого текста и шифровки. CAST и IDEA работают со 128-битным ключом, а тройной DES - с ключом длиной 168 бит. Как и Стандарт шифрования данных (DES), любой из этих шифров может использоваться в режимах CFB (контекстно-зависимого шифрования) и CBC (односторонне-контекстно-зависимого шифрования). PGP использует их в режиме CFB с размером блока 64 бит. Открытые ключи, генерируемые PGP версий 6.0 или более ранних, содержат информацию, которая сообщает отправителю, какие из блочных шифров поддерживаются программным обеспечением получателя, так что программное обеспечение отправителя знает, какие из шифров могут быть использованы. С открытыми ключами DSS/DH могут использоваться блочные шифры CAST, IDEA и тройной DES, причем CAST является выбором по умолчанию. С открытыми ключами RSA в настоящее время может использоваться только IDEA, так как ранние версии PGP поддерживают лишь RSA и IDEA. 1.3 Виды атак на PGP1.3.1 Силовая атакаСоздатель PGP Ф.Зиммерман допускал возможность взлома RSA с помощью огромной вычислительной системы. Однако, когда он писал свои первые версии PGP, производительность ВС была настолько низкой, что это было практически невозможно, в те времена даже на подбор пароля из 8 символов ушло бы огромное количество времени, сейчас же на это уйдёт минут двадцать. С резким скачком производительности предпринимались успешные попытки взлома некоторых криптоалгоритмов. И RSA, для взлома которого требуется решить задачу факторизации, не исключение. В марте 1994 была закончена длившаяся в течение 8 месяцев факторизация числа из 129 цифр (428 бит). Для этого было задействовано 600 добровольцев и 1600 машин, связанных посредством электронной почты. Затраченное машинное время было эквивалентно примерно 5000 MIPS-лет. 1.3.2 Вирусы и троянские компонентыДля похищения секретного ключа может использоваться вирус или троянец, отсылающий, например, ключи по электронной почте. Нам уже известен один такой вирус, это WordMacro97.Caligula, в нём использовалась технология отсылки секретного ключа по протоколу FTP. Но даже в случае если злоумышленник получит ваш секретный ключ, ему придётся поработать над паролем. Для получения также и пароля может использоваться его перехват. Я не буду об этом рассказывать, так как существует очень много способов перехватить то, что вы вводите с клавиатуры и на обсуждение этих способов уйдёт много времени, да и к делу это не относится. 1.3.3 РадиоатакаЭтот вид атаки был описан самим Зиммерманом в одной из его статей. Взломщик может предпринять перехват электромагнитных излучений от вашего компьютера, что позволит ему получать сведения о нажатии клавиш и отображении сообщений на экране вашего монитора. Такая атака может быть предотвращена экранированием всей поверхности компьютерного оборудования и сетевых кабелей. 1.4 Советы по повышению безопасности шифрования1.4.1 Генерация ключейНекоторые специалисты в области компьютерной безопасности рекомендуют генерировать ключ по алгоритму RSA, а не DH/DSS, к сожалению я не знаю особенностей Diffie-Hellman/DSS, поэтому ничего сказать не могу, однако создаётся впечатление, что есть некоторое предубеждение против этого алгоритма. Также рекомендуется генерировать ключ максимальной длины, для RSA - это 2048 байт, для DH/DSS - 4096 байт, чем длинее ключ тем труднее его вскрыть. 1.4.2 ПаролиДлина вашего пароля должна быть максимальной, при этом пароль должен быть максимально рандомизирован, рекомендуется запоминать пароли, а не записывать их где либо. 1.4.3 Какой версией PGP лучше всего пользоватьсяЯ настоятельно рекомендую пользоваться ранними (досовскими) версиями PGP, 2.6.2 и 2.6.3. PGP под Windows более подвержена различного рода атакам, ведь в Windows есть такая бяка как файлы подкачки, да и мало ли ещё всякой гадости о которой мы не знаем. Файлы подкачки позволяют вам запускать на своем компьютере огромные программы, размер которых больше, чем объем установленных на машине полупроводниковых микросхем памяти. Это удобно, поскольку с тех пор, как графический интерфейс стал нормой, программы занимают все больше и больше места, а пользователи норовят запускать по несколько больших приложений одновременно. Операционная система сохраняет фрагменты программного обеспечения, которые в настоящий момент не используются, на жестком диске. Это значит, что операционная система может записать некоторые данные, о которых вы думаете, что они хранятся только в оперативной памяти, на диск без вашего ведома. Например, такие данные, как ключи, пароли, расшифрованные сообщения. PGP не оставляет подобного рода секретные данные в памяти дольше, чем это необходимо, однако остается возможность того, что операционная система успеет сбросить их на диск. 1.4.4 Последний советСледите за тем, чтобы стоимость обеспечения защиты информации не превышала стоимость самой информации.
В статье были использованы материалы из:
|