- •Безопасность
- •Аппаратное обеспечение
- •Программное обеспечение
- •Линии связи и сети
- •15.2. Защита
- •Защита памяти
- •Контроль доступа, ориентированный на пользователя
- •Контроль доступа, ориентированный на данные
- •15.3. Взломщики
- •Методы вторжения
- •Защита паролей
- •Уязвимость паролей
- •Контроль доступа
- •Стратегии выбора паролей
- •Выявление вторжений
- •15.4. Зловредное программное обеспечение
- •Зловредные программы
- •Логические бомбы
- •Троянские кони
- •Природа вирусов
- •Виды вирусов
- •Макровирусы
- •Подходы к борьбе с вирусами
- •Обобщенное дешифрование
- •Цифровая иммунная система
- •15.5. Системы с доверительными отношениями
- •Защита от троянских коней
- •15.6. Безопасность операционной системы windows 2000
- •15.7. Резюме, ключевые термины и контрольные вопросы
- •Контрольные вопросы
- •15.8. Рекомендуемая литература
- •Приложение. Шифрование
- •Стандартное шифрование
- •Стандарт шифрования данных
- •Тройной алгоритм шифрования данных
- •Улучшенный стандарт шифрования
- •Шифрование с открытым ключом
- •А.2. Архитектура протоколов tcp/ip
- •Уровни протокола tcp/ip
- •Приложения tcp/ip
- •Б.1. Мотивация
- •Б.З. Преимущества объектно-ориентированного подхода
- •Б.2. Объектно-ориентированные концепции
- •Структура объектов
- •Классы объектов
- •Наследование
- •Полиморфизм
- •Включение
- •Список литературы
Улучшенный стандарт шифрования
У алгоритма 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.б, шифрование с открытым ключом можно использовать и по-другому. Предположим, что Боб хочет отправить сообщение Алисе, и хотя не так важно, чтобы сообщение хранилось в секрете, он хочет, чтобы Алиса не сомневалась, что сообщение пришло действительно от него. В этом случае Боб кодирует сообщение с помощью своего закрытого ключа. Когда Алиса получит зашифрованный текст, она обнаружит, что может его расшифровать с помощью открытого ключа Боба. Это послужит для нее доказательством, что сообщение было зашифровано Бобом, потому что больше ни у кого нет его закрытого ключа и никто другой не смог бы создать зашифрованный текст, который расшифровывался бы с помощью открытого ключа Боба.
Универсальный криптографический алгоритм с открытым ключом основан на паре ключей. Один из них применяется для шифрования, а другой, который отличается от первого (хотя и связан с ним), применяется для дешифровки. Кроме того, подобные алгоритмы обладают следующими важными характеристиками.
Если известен алгоритм шифрования и ключ, применяющийся для шифрования, то раскрытие ключа для дешифровки требует неоправданно высоких затрат вычислительных ресурсов.
Для шифрования может быть использован один из пары подходящих друг к другу ключей. При этом для дешифровки применяется другой ключ из этой пары.
В процессе работы выполняются такие основные шаги.
Каждый пользователь создает пару ключей, которые предназначены для шифрования и дешифровки сообщений.
Каждый пользователь помещает один из двух ключей в открытый реестр или другие открытые для других файлы. Этот ключ является открытым. Дополняющий ключ хранится в секрете. Как видно из рис. 15.14,а, каждый пользователь поддерживает коллекцию открытых ключей, полученных от других пользователей.
Если Бобу нужно отправить Алисе частное сообщение, он шифрует это со общение с помощью открытого ключа Алисы.
Получив сообщение, Алиса дешифрует его с помощью своего закрытого ключа. Никто другой из получателей не может расшифровать это сообщение, потому что только Алиса знает свой закрытый ключ.
При таком подходе все участники имеют доступ к открытым ключам, а закрытые ключи генерируются каждым из них отдельно, и поэтому их распространять нельзя. До тех пор, пока пользователь защищает свой ключ от других, его входящие сообщения — в безопасности. Пользователь в любой момент времени может поменять свой закрытый ключ и опубликовать соответствующий ему открытый ключ, заменив им старый открытый ключ.
Ключ, который применяется в стандартном шифровании, обычно называется секретным ключом (secret key). Два ключа, использующиеся при шифровании с открытым ключом, называются открытым ключом (public key) и закрытым ключом (private key). Закрытый ключ должен неизменно храниться в секрете, но он называется не секретным, а закрытым ключом, чтобы его не путали с секретным ключом, применяющимся в стандартном шифровании.
Алгоритм Ривеста-Шамира-Адлемана (Rivest- Shamir- Adi eman — RSA)
Одна из первых схем шифрования с открытым ключом была разработана в 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. НЕОБХОДИМОСТЬ АРХИТЕКТУРЫ ПРОТОКОЛОВ
В процесс обмена информацией между компьютерами, терминалами и/или другими предназначенными для обработки данных устройствами могут вовлекаться довольно сложные процедуры. Рассмотрим, например, передачу файла от одного компьютера к другому. Для этого между двумя компьютерами должен существовать путь для данных, реализованный либо напрямую, либо с помощью сети, предназначенной для обмена информацией. Однако этого недостаточно. Обычно нужно выполнить такие задачи.
Передающая система должна либо активизировать прямой канал передачи данных, либо сообщить в сеть идентификатор той системы, для которой она передает данные.
Передающая система должна убедиться в том, что система-получатель готова к приему данных.
Приложение передачи файлов, которое находится на передающей системе, должно убедиться, что программа управления файлами системы-получателя готова принять и сохранить файл, предназначенный для данного пользователя.
Если форматы файлов, которые используются на двух обменивающихся информацией системах, несовместимы, то одна из них должна выполнить преобразование формата.
Ясно, что между такими двумя компьютерными системами должно быть хорошо налажено взаимодействие. Эта сложная задача реализуется не в виде одного модуля, а разбивается на подзадачи, каждая из которых реализуется отдельно. В архитектуре протоколов эти модули размещаются в виде вертикальной структуры. Каждый из уровней структуры выполняет определенный набор функций, необходимых для обмена информацией с другой системой. Работа каждого уровня основывается на более низком уровне, в котором выполняются более простые функции, и таким образом скрываются детали выполняемых функций. Каждый уровень предоставляет сервисы ближайшему уровню, который находится выше него. В идеале уровни должны быть определены так, чтобы изменения в одном из них не влекли за собой изменений в других.
В обмене информацией, несомненно, участвуют две системы, поэтому в обеих системах должен быть задан один и тот же набор разбитых на уровни функций. Обмен информацией происходит тогда, когда удается наладить взаимодействие соответствующих (или равных (peer)) уровней обеих систем. Равные уровни обмениваются блоками данных заданного формата, определяющихся набором правил или соглашений, которые называются протоколом (protocol). Основные особенности протокола такие:
синтаксис (syntax) — определяет формат блоков данных;
семантика (semantics) — содержит в себе управляющую информацию, предназначенную для координации и обработки ошибок;
синхронизация (timing) — включает в себя согласование скоростей и уста новление последовательности данных.