Коллектив авторов - Защита от хакеров корпоративных сетей
Вопрос: Существует ли версия grep с возможностью рекурсивного построения отчета? Ответ: Да. Версии grep фонда открытых программных средств (Free Software Foundation), поддерживающие флаг рекурсии (-r), доступны по адресу www.gnu.org.
Вопрос: Что, если я захочу для создания своих собственных программных средств использовать язык С вместо Perl? Ответ: У вас будет больше возможностей. В состав большинства открыто распространяемых UNIX-подобных операционных систем входит компилятор с языка С. Для операционной системы Windows можно порекомендовать DJGPP, который можно найти по адресу www.delorie.com/djgpp.
Вопрос: Где можно найти другие свободно распространяемые утилиты? Ответ: Sourceforge.net имеет большое хранилище открытых программных средств. Кроме того, Freshmeat.net предоставляет машину поиска свободно доступного программного обеспечения.
Глава 6 Криптография
В этой главе обсуждаются следующие темы:
• Концепции криптографии
• Стандарты алгоритмов шифрования
• «Грубая сила»
• Неверное использование алгоритмов шифрования
• Любительская криптография
· Резюме
· Конспект
· Часто задаваемые вопросы
Введение
Ныне криптография используется всюду: при кэшировании паролей, шифровании почты, в протоколе IPSec виртуальных частных сетей (IPSec – комплект протоколов, предложенных IETF для передачи информации в виртуальных частных сетях. Он обеспечивает аутентификацию, проверку целостности и шифрование пакетов) и шифровании файловых систем. Одна из причин шифрования объясняется желанием обезопасить зашифрованные данные. Обеспечить безопасность данных можно только в том случае, если понимать принципы работы криптографических алгоритмов. Материала, изложенного в этой главе, недостаточно для профессионального изучения криптографии. Для этого нужны годы. Но его хватит для понимания, как использовать криптографические функции (конечно, без изучения их сложного математического обоснования).
В главе будет бегло рассмотрена история криптографии и изучены популярные криптографические алгоритмы, включая улучшенный стандарт шифрования AES, недавно принятый США для защиты важной информации на правительственном уровне. Будут рассмотрены причины широкого использования криптографии с открытым ключом и обмена ключами, а также вопросы их использования на практике. Будет показана теоретическая уязвимость практически всех криптографических алгоритмов к атаке «грубой силы» (атаки в лоб).
Попутно с рассмотрением возможностей криптографической защиты будет рассмотрено восстановление зашифрованных сообщений на примере взлома паролей и атак «злоумышленник посередине» (man-in-the-middle-type attacks). Также будут рассмотрены атаки, позволяющие разрушить систему защиты, основанную на плохой реализации криптостойких алгоритмов. В заключение будет показан способ легкого взлома устаревших криптографических алгоритмов.
Концепции криптографии
Что означает слово крипто ? Оно происходит от греческого слова «криптос» – скрытый. Поэтому целью криптографии является скрытие сути информации от посторонних лиц таким образом, чтобы с ней мог ознакомиться только тот, кому она предназначена. В терминах криптографии скрытие информации называется шифрованием, а ее чтение – расшифрованием, или дешифрованием. Словарь Merriam-Webster's Collegiate Dictionary определяет шифр как «метод преобразования текста для скрытия его значения». Информация, которая подлежит скрытию, называется открытым (незашифрованным) текстом (plaintext), а зашифрованные данные – зашифрованным текстом (ciphertext). Зашифрованное сообщение можно передавать, не опасаясь, что его сможет прочитать кто-либо, кроме получателя. А тот, кому оно предназначено, всегда сможет расшифровать его.
Историческая справка
Фред Кохен (Fred Cohen) предал гласности документально подтвержденные факты использования криптографии в Древнем Египте более 4000 лет тому назад. Юлий Цезарь (Julius Caesar) использовал свой собственный способ шифровки писем, который получил название шифра Цезаря. Идея шифра Цезаря заключалась в замене каждой буквы на третью букву далее по алфавиту. Например, S заменялась на букву V, а E – на H. По современным меркам шифр Цезаря слишком прост, но он хорошо служил Цезарю в его дни. Читателю, желающему углубить свои знания по истории криптографии, автор рекомендует посетить сайт www.all.net/books/ip/Chap2-1.html.
Подобный шифру Цезаря алгоритм ROT13 (алгоритм сдвига символов на 13 позиций английского алфавита – примитивный способ скрытия электронных посланий от посторонних глаз) используется в системах UNIX до сих пор. Он не годится для хранения секретов в тайне. Алгоритм ROT13 больше подходит для скрытия решений ребусов, шуточных посланий и потенциально оскорбительного текста. Если же подобный текст будет расшифрован, то ответственность за возможно нанесенную обиду ляжет не на отправителя, а на того, кто расшифровал его. Например, мистер G. может получить приведенное ниже сообщение, расшифровав которое он, возможно, оскорбится. Но в зашифрованном виде сообщение никого обидеть не может: V guvax Jvaqbjf fhpxf.
Алгоритм ROT13 очень прост, для того чтобы с ним можно было работать с карандашом в руке и листком бумаги. Достаточно написать алфавит в два ряда со смещением второго ряда на тринадцать букв относительно первого:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
NOPQRSTUVWXYZABCDEFGHIJKLM
Типы криптосистем
В криптографии используется два типа криптосистем: симметричные и асимметричные. В симметричных криптосистемах используются более длинные ключи, причем один и тот же ключ используется как для зашифровки, так и для расшифровки текста. Такой ключ называется секретным ключом, и его следует хранить в тайне из-за того, что любой владелец секретного ключа может расшифровать данные, зашифрованные этим же ключом. Большинство симметричных криптосистем используются много лет и хорошо известны. Единственное, что действительно является тайной, – это используемый ключ. Практически все действительно полезные алгоритмы, применяемые на практике сегодня, полностью открыты обществу....Инструментарий и ловушки…
Оценка криптостойкости алгоритма
Проверить алгоритмическую безопасность криптографического алгоритма можно, только атакуя его. Поскольку намного чаще подвергаются атаке криптографические алгоритмы, опубликованные в открытой печати, то чем дольше алгоритм доступен для всеобщего изучения, тем больше будет предпринято попыток перехитрить или взломать его. Ненадежные криптографические алгоритмы взламываются очень быстро, обычно за несколько дней или месяцев, в то время как криптостойкие алгоритмы шифрования могут десятилетиями оставаться неприступными. В любом случае, открытость алгоритма для публичного анализа – важное условие доказательства его безопасности. Хотя если отсутствуют какие-либо сведения о сложности используемых в криптосистеме алгоритмов, то взломать криптосистему сложнее (вне зависимости от криптостойкости используемых в ней алгоритмов). Но при использовании общеизвестного алгоритма всегда есть некоторые предположения относительно его безопасности. Отчасти взлом алгоритма противоречит праву собственности на него. Однако слабый алгоритм может быть взломан, даже если криптограф до конца его и не понял. Очевидно, следует доверять запатентованным алгоритмам только в рамках их долгосрочных обязательств. Именно из-за необходимости тщательного изучения внутреннего устройства алгоритмов для обеспечения их безопасности многие из применяемых на практике запатентованных алгоритмов, как, например, RC6 компании RSA Laboratories, общедоступны.
Применению симметричных криптографических алгоритмов присущ ряд проблем. Во-первых, где гарантия, что отправитель и получатель используют один и тот же ключ для зашифровки и расшифровки сообщений? Обычно для обеспечения идентичности ключей отправителя и получателя пользуются услугами курьерской службы или каким-либо другим средством пересылки ключей. Во-вторых, что делать, если у получателя не окажется ключа, которым были зашифрованы принимаемые данные? Например, представьте себе ситуацию, когда ключ симметричной криптосистемы, реализованной аппаратными средствами, изменяется каждое утро в 4.00 на приемном и передающем конце. Что произойдет, если на одном из концов «забудут» изменить ключ в нужное время (вне зависимости от того, как это будет реализовано: при помощи полоски ленты, дополнительной аппаратуры или каким-либо другим способом) и передадут зашифрованные старым ключом данные, а на приемной стороне ключ будет изменен? Получатель, используя правильный ключ, не сможет расшифровать принятые данные. В результате во время кризиса могут возникнуть проблемы. Особенно если старый ключ был удален. Этот простой пример показывает, к чему может привести использование получателем и отправителем разных ключей шифрования.