Чтение онлайн

на главную - закладки

Жанры

Защита от хакеров корпоративных сетей

авторов Коллектив

Шрифт:

Предположим, что известны величина «B» и результат шифрования сообщения «ciphertext». Как найти неизвестный ключ «A»? Требуется восстановить ключ для раскодирования другого закодированного сообщения «ciphertext2», битовое представление которого 00011010. Для этого нужно выполнить операцию XOR с операндами «B» и «ciphertext» и восстановить ключ «A». Результат воcстановления показан в табл. 6.4.

Таблица 6.4.

Результат операции XOR на операндах «ciphertext» и «В»

После восстановления ключа им можно воспользоваться для декодирования «cipher2» и в результате закодировать символ «Z» (см. табл. 6.5).

Таблица 6.5.

Результат операции XOR на операндах «cipher2» и «А»

Конечно, это слишком простой пример. Скорее всего, на практике придется столкнуться с ключами, состоящими из нескольких символов. Кроме

того, кодирование сообщений операцией XOR может выполняться последовательно несколько раз.

Манипуляции над абстрактными 0 и 1 могут оказаться трудными для восприятия, если ранее читатель не сталкивался с двоичными числами и величинами. Поэтому автор решил привести пример простой программы, которая выполняет серию из трех операций XOR на различных перестановках ключа для кодирования сообщения. В этой короткой программе на языке Perl используется свободно распространяемый модуль IIIkey для обращения к внутренней функции шифрования XOR. Для того чтобы воспользоваться приведенной программой, следует загрузить модуль IIIkey по адресу www3.marketrends.net/encrypt.#!/usr/bin/perl

#!/usr/bin/perl

# Encodes/Decodes a form of XOR text

# Requires the IIIkey module

# Written specifically for HPYN 2nd Ed.

# by FWL 01.07.02

# Use the IIIkey module for the backend

# IIIkey is available from http://www3.marketrends.net/

encrypt/

use IIIkey;

# Simple input validation

sub validate {

if (scalar(@ARGV) < 3) {

print “ Error: You did not specify input correctly!\n” ;

print “ To encode data use ./xor.pl e \“ Key\” \“ String

to Encode\”\n”;

print “ To decode data use ./xor.pl d \“ Key\” \“ String

to Decode\”\n”;

exit;

}

}

validate;

$tmp=new IIIkey;

$key=$ARGV[1];

$intext=$ARGV[2];

if ($ARGV[0] eq “e”) { # encode text

$outtext=$tmp->crypt($intext, $key);

print “Encoded $intext to $outtext”;

} elsif ($ARGV[0] eq “d”) { # decode text

$outtext=$tmp->decrypt($intext, $key);

print “Decoded $intext to $outtext”;

} else { # No encode/decode information given!

print “To encode or decode? That is the question.”;

exit;

}

А вот пример отчета работы программы.

$ ./xor.pl e “my key” “secret message”

Encoded secret message to 8505352480^0758144+510906534

$ ./xor.pl d “my key” “8505352480^0758144+510906534”

Decoded 8505352480^0758144+510906534 to secret message

Алгоритм UUEncode

UUEncode – алгоритм, который обычно используется для преобразования двоичных данных в текстовый формат для передачи по электронной почте. (UUEncode – кодирование Unix-Unix (метод преобразования файлов из двоичного формата в текстовый и обратно для обеспечения пересылки по сети Internet посредством электронной почты)). Вероятно, читателю известно, что большинство программ электронной почты не могут непосредственно обрабатывать двоичные вложения к письмам электронной почты. Поэтому в случае присоединения двоичного файла (как, например, рисунка в формате JPEG) к письму электронной почты клиент электронной почты преобразует двоичные данные в текстовый эквивалент, возможно, с помощью алгоритма, подобного UUEncode. Присоединенный файл преобразуется из двоичного формата в поток печатаемых символов, который может быть обработан почтовой программой. После получения письма вложение преобразуется обратным алгоритмом кодирования (UUDecode) для преобразования к оригинальному двоичному файлу.

Иногда разработчики используют алгоритм 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. Фундаментальное отличие криптосистем с открытым ключом от симметричных систем основано на проблеме факторизации (разложении на сомножители) очень больших целых чисел.

Поделиться:
Популярные книги

Жребий некроманта 2

Решетов Евгений Валерьевич
2. Жребий некроманта
Фантастика:
боевая фантастика
6.87
рейтинг книги
Жребий некроманта 2

Предатель. Вернуть любимую

Дали Мила
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Предатель. Вернуть любимую

Бывший муж

Рузанова Ольга
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Бывший муж

Мама для дракончика или Жена к вылуплению

Максонова Мария
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мама для дракончика или Жена к вылуплению

Жандарм 5

Семин Никита
5. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 5

Менталист. Эмансипация

Еслер Андрей
1. Выиграть у времени
Фантастика:
альтернативная история
7.52
рейтинг книги
Менталист. Эмансипация

Кодекс Охотника. Книга XXIV

Винокуров Юрий
24. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXIV

Лорд Системы 14

Токсик Саша
14. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 14

Смерть может танцевать 4

Вальтер Макс
4. Безликий
Фантастика:
боевая фантастика
5.85
рейтинг книги
Смерть может танцевать 4

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Не отпускаю

Шагаева Наталья
Любовные романы:
современные любовные романы
эро литература
8.44
рейтинг книги
Не отпускаю

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Темный Патриарх Светлого Рода 3

Лисицин Евгений
3. Темный Патриарх Светлого Рода
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 3