Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 15 Безопасность.doc
Скачиваний:
66
Добавлен:
11.05.2015
Размер:
795.14 Кб
Скачать

Улучшенный стандарт шифрования

У алгоритма TDEA имеется два преимущества, способствующих его распро­странению в течение нескольких ближайших лет. Во-первых, благодаря 168-битовому ключу устраняется уязвимость по отношению к атаке "в лоб". Во-вторых, в основе алгоритма TDEA лежит тот же алгоритм шифрования, что и в основе алгоритма DEA. В течение долгого времени этот алгоритм подвергался более тщательным испытаниям, чем любой другой алгоритм шифрования, и за это время против него не найдено ни одной криптоаналитической атаки, которая основывалась бы на особенностях самого алгоритма, а не на методе прямого пе­ребора. Поэтому алгоритм TDEA с высокой степенью надежности устойчив про­тив криптоанализа. Если бы во внимание принималась только безопасность, то на несколько ближайших десятилетий этот алгоритм мог бы вполне подойти в качестве стандартного алгоритма шифрования.

Принципиальным недостатком алгоритма TDEA является то, что его про­граммная реализация является довольно медленной. Первоначальный алгоритм DEA был разработан в средине 70-х годов для аппаратной реализации, и эффек­тивного программного кода для него нет. Алгоритм TDEA, в котором алгоритм DEA выполняется три раза, является еще более медленным. Вторым недостат­ком является то, что как в алгоритме DEA, так и в алгоритме TDEA использу­ются 64-битовые блоки текста. Исходя из соображений эффективности и безо­пасности, желательно было бы использовать более крупные блоки.

Из-за этих недостатков алгоритм TDEA не является приемлемым кандида­том на долгосрочное использование. В 1977 году Национальный институт стан­дартов и технологий объявил о необходимости нового улучшенного стандарта шифрования (Advanced Encryption Standard — AES), надежность которого должна быть такой же, как надежность алгоритма TDEA, или превышать ее, и который обладал бы значительно лучшей производительностью. В дополнение к этим общим условиям NIST потребовал, чтобы AES был симметричным блочным шифром с длиной блока, равной 128 бит, и поддерживал ключ длиной 128, 192 или 256 бит, В критерии, использующиеся для оценки алгоритма, входят его надежность, скорость вычислений, требования к памяти, пригодность для аппа­ратного и программного обеспечения, а также гибкость.

В первом испытательном этапе принимали участие 15 предложенных алго­ритмов. Во втором этапе круг кандидатов сузился до 5 алгоритмов. Во время на­писания этой книги институт NIST выразил надежду закончить испытания и опубликовать конечный вариант стандарта к лету 2001 года. После этого процесс признания на рынке может длиться несколько лет.

Шифрование с открытым ключом

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

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

В схеме шифрования с открытым ключом имеется шесть составляющих (рис. 15.14).

  • Открытый текст (plaintext). Это сообщение или данные, которые подаются на вход алгоритма шифрования.

  • Алгоритм шифрования (encryption algorithm). Алгоритм шифрования вы­ полняет различные преобразования открытого текста.

  • Открытый и закрытый ключ (public and private key). Это пара ключей, по­ добранных таким образом, что если один из них используется для шифро­вания, то второй используется для дешифровки. То, какие преобразования выполняет алгоритм шифрования, зависит от поступающего на его вход от­ крытого или закрытого ключа.

  • Зашифрованный текст (ciphertext). Это зашифрованное сообщение, ко­ торое получается на выходе. Каким оно получится — зависит от открытого текста и ключа. Из одного и того же первоначального сообщения, зашифрованного с помощью разных ключей, получаются два различных зашифрованных текста.

  • Алгоритм дешифровки (decryption algorithm). На вход этого алгоритма по­дается зашифрованный текст и соответствующий ключ, а в результате его выполнения получается первоначальный открытый текст.

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

Пусть, например, Боб хочет отправить Алисе частное сообщение. Предпо­ложим, что у него есть открытый ключ Алисы и что у Алисы есть соответст­вующий закрытый ключ (рис. 15.14.а). С помощью открытого ключа Алисы Боб кодирует сообщение, которое он в зашифрованном виде пересылает Алисе. По­лучив это зашифрованное сообщение, Алиса дешифрует его с помощью своего закрытого ключа. Никто, кроме Алисы, не сможет это сделать, так как только у нее есть копия закрытого ключа.

Как видно на рис. 15.14.б, шифрование с открытым ключом можно исполь­зовать и по-другому. Предположим, что Боб хочет отправить сообщение Алисе, и хотя не так важно, чтобы сообщение хранилось в секрете, он хочет, чтобы Алиса не сомневалась, что сообщение пришло действительно от него. В этом случае Боб кодирует сообщение с помощью своего закрытого ключа. Когда Алиса получит зашифрованный текст, она обнаружит, что может его расшифровать с помощью открытого ключа Боба. Это послужит для нее доказательством, что сообщение было зашифровано Бобом, потому что больше ни у кого нет его закрытого ключа и никто другой не смог бы создать зашифрованный текст, который расшифровы­вался бы с помощью открытого ключа Боба.

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

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

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

В процессе работы выполняются такие основные шаги.

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

  2. Каждый пользователь помещает один из двух ключей в открытый реестр или другие открытые для других файлы. Этот ключ является открытым. Дополняющий ключ хранится в секрете. Как видно из рис. 15.14,а, каж­дый пользователь поддерживает коллекцию открытых ключей, полученных от других пользователей.

  3. Если Бобу нужно отправить Алисе частное сообщение, он шифрует это со­ общение с помощью открытого ключа Алисы.

  4. Получив сообщение, Алиса дешифрует его с помощью своего закрытого ключа. Никто другой из получателей не может расшифровать это сообще­ние, потому что только Алиса знает свой закрытый ключ.

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

Ключ, который применяется в стандартном шифровании, обычно назы­вается секретным ключом (secret key). Два ключа, использующиеся при шифровании с открытым ключом, называются открытым ключом (public key) и закрытым ключом (private key). Закрытый ключ должен неизменно храниться в секрете, но он называется не секретным, а закрытым ключом, чтобы его не путали с секретным ключом, применяющимся в стандартном шифровании.

Алгоритм Ривеста-Шамира-Адлемана (Rivest- Shamir- Adi emanRSA)

Одна из первых схем шифрования с открытым ключом была разработана в 1977 году сотрудниками Массачусетс кого технологического института Роном Ривестом (Ron Rivest), Ади Шамиром (Adi Shamir) и Леном Адлеманом (Len Adle-man). С тех пор схема RSA доминирует и является единственным широко при­знанным и применяющимся подходом к шифрованию с открытым ключом. Ал­горитм RSA представляет собой шифр, в котором и открытый и зашифрованный текст представлен целыми числами в интервале от 0 до п - 1 с фиксированным п. При шифровании применяются арифметические операции над абсолютными значениями чисел. Надежность алгоритма основана на сложности разложения чисел на простые множители.

ПРИЛОЖЕНИЕ V.

Протокол TCP/IP

A.I. Необходимость архитектуры протоколов

А.2. Архитектура протоколов TCP/IP

В начале этого приложения вводится понятие многоуровневой архитектуры протоколов. Затем исследуется самая важная архитектура такого типа — набор 1—J протоколов TCP/IP. Протоколы TCP/IP — это основная концепция в Internet, которая служит каркасом для разработки всевозможных стандартов, предназначен­ных для обмена информацией между компьютерами. В настоящее время почти все поставщики компьютеров обеспечивают поддержку этой архитектуры.

А.1. НЕОБХОДИМОСТЬ АРХИТЕКТУРЫ ПРОТОКОЛОВ

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

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

  2. Передающая система должна убедиться в том, что система-получатель гото­ва к приему данных.

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

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

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

В обмене информацией, несомненно, участвуют две системы, поэтому в обе­их системах должен быть задан один и тот же набор разбитых на уровни функ­ций. Обмен информацией происходит тогда, когда удается наладить взаимодей­ствие соответствующих (или равных (peer)) уровней обеих систем. Равные уров­ни обмениваются блоками данных заданного формата, определяющихся набором правил или соглашений, которые называются протоколом (protocol). Основные особенности протокола такие:

  • синтаксис (syntax) — определяет формат блоков данных;

  • семантика (semantics) — содержит в себе управляющую информацию, предназначенную для координации и обработки ошибок;

  • синхронизация (timing) — включает в себя согласование скоростей и уста­ новление последовательности данных.