Криптографические методы защиты информации

 

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

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

До изобретения в 1970-х годах шифрования с так называемым открытым ключом традиционное шифрование (иногда называемое шифрование с обычным ключом) было единственным типом шифрования. Этот тип шифрования использовался для секретного взаимодействия очень многими людьми и группами людей, начиная с Юлия Цезаря и заканчивая немецкими подводными лодками, а также современными дипломатами, военными, бизнесменами и т.п. Традиционное шифрование до сих пор остается самым популярным, используя алгоритм, при котором шифрование и дешифрование осуществляется при помощи одного и того же ключа (метода преобразования текста).

Традиционную схему шифрования образуют пять составляющих.

Открытый текст – исходное сообщение или данные, которые подаются на вход алгоритма.

Алгоритм шифрования – различные способы преобразования текста.

Секретный ключ подается также на вход алгоритма шифрования наряду с открытым текстом. Конкретные операции замены и перестановки, выполняемые алгоритмом, зависят от ключа.

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

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

Для обеспечения безопасности традиционного шифрования необходимо выполнение двух условий:

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

отправитель и получатель должны получать копии секретного ключа безопасным образом и обеспечить надежное его хранение.

Существует два основных способа атаки на традиционную схему шифрования, первый из которых называется криптоанализом, он опирается на природу алгоритма, а также на определенные сведения об общих характеристиках открытого текста, включая примеры перехваченных пар открытого и зашифрованного текстов. Цель заключается в выявлении ключа шифрования. Второй метод называется «методом грубой силы» или решением задачи «в лоб». Он включает полный перебор всех возможных вариантов ключа к зашифрованному сообщению, пока не будет получен осмысленный вариант открытого текста. Это требует зачастую вычислительных систем высокой производительности и зависит от размерности ключа шифрования, которая может изменяться от 32 до 168 бит.

Существует ряд стандартов шифрования. Так, Национальный институт стандартов и технологий США (NIST) принял следующие стандарты:

DES (Data Encryption Standard – стандарт шифрования данных), в котором открытый текст разбивается на блоки по 64 бит, каждый из которых кодируется с помощью 56-разрядного ключа;

тройной алгоритм TDEA (Tryple DEA), представляющий троекратное шифрование методом DES, разработанный в связи с потенциальной уязвимостью DES, принят как стандарт ANSI для использования в финансовых приложениях при трех различных ключах, эффективная длина ключа составляет 68 бит;

алгоритм шифрования AES (Advanced Encryption Standard – передовой стандарт шифрования), был разработан как альтернатива TDEA, который при очень высокой надежности и эффективности работал очень медленно и имел очень короткие блоки обработки (что взаимосвязано), алгоритм AES имел длину блока 128 бит с поддержкой ключей 128, 192 и 256 бит.

Шифрование с открытым ключом впервые было предложено в 1976 г. Диффи (Diffie) и Хеллманом (Hellman) и представляет прорыв в криптографии, первый за последнюю тысячу лет. Эта разновидность криптографической системы, в которой шифрование и дешифрование осуществляется при помощи двух различных ключей, один из которых называется открытым, а второй закрытым, т.е. шифрование становится асимметричным. В основе алгоритмов шифрования открытым ключом лежат математические функции, а не простые операции с последовательностью битов, характерные для симметричного шифрования.

В схему шифрования с открытым ключом входит шесть составляющих:

открытый текст – исходное сообщение или данные, которые подаются на вход алгоритма;

алгоритм шифрования, представляющий различные способы преобразования текста;

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

зашифрованный текст – искаженное сообщение, формируемое на выходе алгоритма (зашифрованный текст представляет собой функцию открытого текста и ключа, если зашифровать одно и тоже сообщение с помощью двух различных ключей, получим два различных варианта зашифрованного текста);

алгоритм дешифрования (включается, когда на его вход поступает зашифрованный текст и второй ключ пары, а на выходе генерируется оригинальный текст).

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

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

Один из наиболее популярных алгоритмов при шифровании открытым ключом является алгоритм RSA (Rivest – Shamir – Adleman), предложенный в 1977 г. сотрудником Массачусетского технологического института. В этом алгоритме открытый и зашифрованный тексты рассматриваются как целые числа в диапазоне от 0 до n – 1. Для шифрования в сети используются арифметические операции деления по модулю. Алгоритм шифрования основан на сложности разложения большого числа на множители.

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

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

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

подпись достоверна, убеждает получателя, что человек, подписавший документ, сделал это сознательно;

подпись не поддельна, она доказывает, что именно указанный человек подписал документ;

подпись невозможно использовать повторно, она часть документа, ее невозможно нанести на другой документ;

подписанный документ изменить невозможно;

от подписи нельзя отречься.

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

Однако реализация электронной подписи и передача ее в сетях требует специальной защиты, так как ситуация оказывается гораздо сложнее. Во-первых, компьютерные файлы легко копируются. Даже если подпись человека – графическое изображение, подписи от руки подделать нелегко, можно без труда «вырезать» подлинную подпись из этого документа и вставить ее в другой. Таким образом, просто наличие в документе такой подписи ничего не означает. Во-вторых, компьютерные файлы легко изменить уже после подписания документа, не оставив ни малейшего следа изменения.

В связи с этим механизм цифровой подписи, реализуемый криптографическими методами, состоит из двух процессов:

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

проверка подписи в принятом блоке данных.

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

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

Эта проблема была решена с помощью цифровых подписей.

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

Еще один вопрос, который неизбежно возникает при внедрении криптографических устройств – вопрос о месте их размещения. Имеется два варианта решения этого вопроса: шифрование в линиях и сквозное шифрование.

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

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

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

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

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

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