Коллектив авторов - Защита от хакеров корпоративных сетей
Иногда разработчики используют алгоритм UUEncode для кодирования обычного печатаемого текста для скрытия смысла сообщения. В этом случае для восстановления сообщения достаточно преобразовать закодированный текст сообщения программой UUDecode. Клиенты UUEncode/UUDecode с интерфейсом командной строки доступны почти для каждой когда-либо созданной операционной системы.
Алгоритм Base64Алгоритм Base64, так же как и UUEncode/UUDecode, используется для кодирования вложений электронной почты MIME-расширений (Multipurpose Internet Mail Extensions (MIME) – многоцелевые расширения электронной почты в сети Internet. Набор стандартов для передачи мультимедийной информации посредством электронной почты). Вероятно, читатель еще столкнется с паролями и другой интересной информацией, скрываемой кодированием Base64. Примечательно, что часто встречаются Web-сервера с возможностью HTTP-аутентификации, которые хранят пароли в формате Base64. Если в руки злоумышленника попадет имя пользователя и его пароль, закодированный алгоритмом Base64, то он сможет в течение нескольких секунд раскрыть их. Характерным признаком кодировки Base64 служит наличие одного или двух знаков равенства (=) в конце строки. Знаки равенства часто используются как символы дополнения данных.
Посмотрите на простой пример программы раскодирования данных в формате Base64. Этот фрагмент программы должен выполняться на любой операционной системе, на которой установлен Perl5 или, еще лучше, модуль MIME::Base64 компании CPAN (www.cpan.org). Приведены также примеры использования программы и отчет ее работы.#!/usr/bin/perl
# Filename: base64.pl
# Encodes/Decodes Base-64 text
# Requires the MIME::Base64 module
# Written specifically for HPYN 2nd Ed.
# by FWL 01.07.02
# Use the MIME module for encoding/decoding Base-64 strings
use MIME::Base64;
# Simple input validation
sub validate() {
if (scalar(@ARGV) < 2) {
print “Error: You did not specify input correctly!n”;
print “To encode data use ./base64.pl e “String to
Encode”n”;
print “To decode data use ./base64.pl d “String to
Decode”n”;
exit;
}
}
validate();
$intext=$ARGV[1];
if ($ARGV[0] eq “e”) { # encode text
$outtext=encode_base64($intext);
print “Encoded $intext to $outtext”;
} elsif ($ARGV[0] eq “d”) { # decode text
$outtext=decode_base64($intext);
print “Decoded $intext to $outtext”;
} else { # No encode/decode information given!
print “To encode or decode? That is the question.”;
exit;
}А вот пример отчета работы программы.
$ ./base64.pl e “Secret Password”
Encoded Secret Password to U2VjcmV0IFBhc3N3b3Jk
$ ./base64.pl d “U2VjcmV0IFBhc3N3b3Jk”
Decoded U2VjcmV0IFBhc3N3b3Jk to Secret Password
Алгоритмы сжатия данных Иногда может показаться, что для скрытия данных алгоритмов сжатия недостаточно. В прошлом некоторые разработчики игр сжимали файлы состояния игры не только для сокращения необходимой для их хранения памяти, но и для затруднения внесения в них изменений при помощи разнообразных редакторов игр. В те годы для этих целей наиболее часто использовались алгоритмы SQSH (Squish or Squash) и LHA. Сами алгоритмы были унаследованы от консольных игр 1980-х, когда их использовали для сжатия образа постоянного запоминающего устройства (ROM – Read Only Memory) в картриджах. Как правило, в случае невозможности расшифровать текст стандартными методами следует проверить, а не был ли он сжат одним из многочисленных общедоступных алгоритмов сжатия....Приоткрывая завесу
Криптографические средства, ориентированные на пользователя
SDMI бросает вызов хакерам
Иногда принимается решение использовать криптографические средства, которые хотя и нельзя назвать любительскими, но тем не менее не соответствующими профессиональному уровню. Например, организация «Инициатива обеспечения безопасности музыкальных произведений» SDMI (SDMI – Secure Digital Music Initiative) попыталась разработать способ маркировки цифровой музыки «водяными знаками» при помощи специального закодированного сигнала. По замыслу разработчиков, «водяной знак» должен был защитить музыкальные произведения от неавторизованного прослушивания или копирования. В процессе разработки SDMI предложила сообществу хакеров взломать шесть схем «водяных знаков» за $10 000. Музыкальное произведение считалось взломанным при предъявлении музыкальной записи без «водяных знаков», которая была получена из образца записи с «водяными знаками». В распоряжение соискателей были предоставлены только образцы записей с «водяными знаками» без разглашения принципов их построения. До и после каждого образца записи были использованы различные схемы «водяных знаков», для того чтобы можно было найти в них различия.
Две из шести схем «водяных знаков» были отклонены сразу же после начала конкурса, а оставшиеся четыре были взломаны почти одновременно группой ученых под руководством профессора Принстонского университета Эдварда В. Фелтена (Edward W. Felten) через несколько недель. Фелтен и его партнеры решили отказаться от $10 000 и представить общественности результаты своих исследований, воспользовавшись небольшой неточностью в договоре на проведение исследований. В договоре было сказано, что приз в $10 000 может быть получен при условии сохранения результатов исследования в тайне. Но при этом ничего не говорилось об обязательствах конкурсанта при отсутствии его материальной заинтересованности. По всей видимости, SDMI намеревалась возбудить судебный процесс в соответствии с Актом авторского права цифрового тысячелетия (DMCA). Акт предусматривает ответственность за разглашение сведений, которые могут использоваться в интересах обхода средств защиты авторского права. В конечном счете SDMI приняла решение не возбуждать судебный процесс, а Фелтен и его партнеры представили свои результаты на 10-м Симпозиуме по вопросам безопасности пользователей UNIX (10th USENIX Security Symposium). Выводы Фелтена, полностью разделяемые сообществом безопасности, свидетельствуют о неизбежном взломе схем шифрования, основанных на «водяных знаках». Интересно отметить замеченный Фелтеном и его партнерами факт о том, что для взлома схем «водяных знаков» не требуется специальных знаний в области информатики. Достаточно знать общую теорию обработки сигналов.
Эта история – еще один пример попытки производителя использовать «собственные доморощенные особо безопасные алгоритмы защиты информации» и постоянного развития криптографии. Даже если утверждается, что безопасность новых приложений криптографии основана на новых криптоалгоритмах, следует проявить осторожность, скептически отнесясь к новым, до конца не проверенным алгоритмам. Особенно если они хранятся в тайне.
Резюме
В этой главе приведена краткая историческая справка о развитии криптографии, описан известный шифр Цезаря, а также подробно рассказано о значении криптографии в наши дни. Современная криптография представлена симметричными и асимметричными криптосистемами, известными также как криптография с секретным и открытым ключами.
В настоящее время широко используются симметричные криптографические алгоритмы DES, AES и IDEA. В главе было рассказано о приложенных NIST усилиях по замене DES, который постепенно сдавал свои позиции, на современный алгоритм, о том, как алгоритм Rijndael был отобран из пяти финалистов конкурса и был признан стандартом AES. Было сказано несколько слов о стартовавшей с начала 1990-х годов истории создания перспективного Европейского стандарта криптографического алгоритма IDEA и показаны его преимущества по сравнению с DES.
Впервые об асимметричных алгоритмах заговорили с середины 1970-х годов, когда Диффи и Хеллман опубликовали названный в их честь алгоритм обмена ключами (алгоритм Диффи-Хеллмана, или DH-алгоритм), предназначенный для безопасного обмена ключами в сетях общего пользования. Вслед за алгоритмом Диффи-Хеллмана появился алгоритм RSA, который провозгласил начало новой эры криптографии с открытым ключом. Алгоритмы и методы криптографии с открытым ключом впоследствии были реализованы в популярной криптосистеме PGP. Фундаментальное отличие криптосистем с открытым ключом от симметричных систем основано на проблеме факторизации (разложении на сомножители) очень больших целых чисел.
Метод «грубой силы» эффективен для взлома большинства криптографических алгоритмов, если в распоряжении исследователя достаточно времени для перебора всех ключей из ключевого пространства. На перебор ключей может потребоваться от нескольких минут до миллиарда лет. Наиболее часто этот метод используется для вскрытия паролей. Для подобных целей широко используются программы LOphtcrack и John the Ri pper.
Ошибки в реализации криптостойких алгоритмов или не предусмотренные разработчиками алгоритмов способы их использования способствуют повышенной уязвимости построенных на их основе криптографических систем. Так, для алгоритма Диффи-Хеллмана опасны атаки «злоумышленник посередине» (man-in-the-middle-type attacks). Сравнительно легко могут быть раскрыты пароли в формате кэш-величин LanManager (LANMAN), зашифрованные с помощью DES. К малоприятным результатам приводит использование легко вскрываемых паролей или ключевых фраз в симметричных криптосистемах. А неверное хранение секретного или личного паролей может вообще сделать бессмысленным шифрование сообщений.