- Безопасность в сети Интернет
- HTTP
- HTTPS
- S-HTTP
- SET
- Куки
- SSH
- IPSec
- Атаки
- Атака «Только шифротекст»
- Атака «Известный открытый текст»
- Атака «Выбранный открытый текст»
- Атака «Выбранный шифротекст»
- Дифференциальный криптоанализ
- Линейный криптоанализ
- Атаки с использованием побочных каналов
- Атаки повтора
- Алгебраические атаки
- Аналитические атаки
- Статистические атаки
- Резюме
Веб (web) – это не то же самое, что Интернет. Можно сказать, что веб работает над Интернетом. Веб – это множество HTTP-серверов, на которых хранятся и работают используемые нами веб-сайты. А Интернет – это множество физических устройств и коммуникационных протоколов, используемых для работы этих сайтов и взаимодействия с ними. Внешний вид и поведение веб-сайтов зависит от использованного разработчиками языка, который определяет порядок взаимодействия с сайтом и его функциональность. Веб-браузеры позволяют пользователям просматривать веб-страницы, преобразуя этот язык (HTML, DHTML, XML и т.д.) в понятный и удобный для человека вид. Браузер – это окно пользователя во «всемирную паутину» (World Wide Web).
Браузеры понимают и могут обрабатывать множество различных протоколов и команд, но не все. Если браузер пользователя не может работать с определенным протоколом или набором команд, пользователь должен скачать и установить специальную программу просмотра или плагин (модульный компонент, который интегрируется в систему или браузер). Это быстрый и простой способ расширения функциональности браузера. Однако установка плагинов может привести к нарушению безопасности, поскольку такие модули могут содержать вирусы и другое нежелательное программное обеспечение, которое пользователь не заметит, пока не будет уже слишком поздно.
Зачем мы подключаемся к Интернету? Чтобы скачать музыку, проверить электронную почту, заказать книги по безопасности, посмотреть веб-сайты, пообщаться с друзьями, выполнить другие задачи. Но что мы в действительности делаем? Мы используем различные сервисы, предоставляемые компьютерными протоколами и программами. Такими сервисами может быть передача файлов через FTP, удаленные подключения через Telnet, интернет-соединения через HTTP, безопасные соединения через SSL и многое другое. Без этих протоколов мы не можем использовать ресурсы Интернет.
Руководство компании должно принять решение, какие функции сети Интернет должны быть доступны сотрудникам, а администратор должен реализовать это решение на практике и организовать контроль использования сервисов снаружи и внутри сети. Использование сервисов может быть ограничено различными способами, например: разрешение запуска в системе только определенных сервисов и ограничение доступа к системе; использование только безопасных версий сервисов; фильтрация запросов к сервисам; блокирование нежелательных сервисов. Выбор необходимых сервисов и способов ограничения доступа к остальным сервисам определяет безопасность и указывает технологии, которые нужны для обеспечения защиты.
Рассмотрим основные технологии и протоколы, из которых состоит «всемирная паутина».
HTTP
TCP/IP – это набор протоколов сети Интернет, а НТТР – это протокол веб. НТТР находится наверху TCP/IP. Когда пользователь нажимает на ссылку на веб-странице, его браузер использует НТТР для отправки запроса на веб-сервер, на котором размещен веб-сайт. Веб-сервер находит соответствующий файл и отправляет его пользователю также с помощью НТТР. Но где же здесь TCP/IP? Протокол TCP управляет процедурой «рукопожатия» и поддерживает соединение между пользователем и сервером, а протокол IP гарантирует правильную маршрутизацию и доставку файлов через Интернет пользователю. Таким образом, протокол IP находит способ передачи данных между веб-сервером и пользователем, TCP обеспечивает корректность отправителя и получателя, а НТТР представляет содержимое, которым является веб-страница.
Протокол НТТР не создает постоянных соединений – клиент и сервер создают и разрывают временное соединение для каждой операции. Когда пользователь запрашивает определенную веб-страницу, веб-сервер находит эту страницу, предоставляет ее пользователю и сразу разрывает соединение. Если пользователь нажимает на ссылку на полученной веб-странице, устанавливается новое соединение, на веб-сервер отправляется новый запрос, веб-сервер в ответ отправляет запрошенную страницу и снова разрывает соединение. Веб-сервер не запомнинает пользователей, запрашивающих у него веб-страницы, поскольку это потребовало бы гораздо больше ресурсов.
HTTPS (HTTP Secure) – это HTTP, работающий через SSL (НТТР работает на прикладном уровне, а SSL – на транспортном). SSL (Secure Socket Layer) использует криптографию с открытым ключом и обеспечивает шифрование данных, аутентификацию сервера, целостность сообщений и (опционально) аутентфикацию клиента. Веб-сайт может одновременно иметь как безопасную, так и открытую часть. Для доступа в безопасную часть может требоваться аутентификация пользователя. При переходе пользователя с открытой страницы веб-сайта на безопасную страницу, веб-сервер обращается к SSL для защиты передаваемых данных.
Сервер возвращает сообщение обратно клиенту, указывая, что необходимо установить безопасное соединение, а клиент в своем ответе направляет параметры безопасности. Сервер выполняет сверку этих параметры безопасности со своими собственными, пока не найдет совпадение. Это и есть фаза «рукопожатия» (handshaking phase). Аутентификация сервера клиентом производится с помощью цифрового сертификата сервера. Если клиент принимает решение о доверии серверу, процесс продолжается. Сервер также может потребовать цифровой сертификат клиента для выполнения аутентификации клиента (взаимная аутентификация), но это делается довольно редко.
Клиент генерирует сеансовый ключ и зашифровывает его на открытом ключе сервера. Зашифрованный ключ направляется веб-серверу, который расшифровывает его на своем закрытом ключе. Теперь они оба имеют симметричный сеансовый ключ, который в дальнейшем используют для шифрования данных, передаваемых в обоих направлениях. Таким образом создается безопасный канал.
SSL поддерживает созданный коммуникационный канал в открытом состоянии, пока одна из сторон не пришлет запрос на окончание сеанса. Обычно окончание сеанса инициируется клиентом, который отправляет на сервер пакет FIN, указывающий на необходимость закрытия соединения.
Для использования SSL требуется его поддержка как сервером, так и браузером пользователя. SSL обеспечивает безопасность соединений, но не безопасность полученных данных, т.е. данные зашифрованы только в процессе их передачи, но не после их доставки на компьютер получателя. Таким образом, если пользователь отправляет в банк свою финансовую информацию через защищенное SSL-соединение, он может быть уверен в защите этих данных в процессе передачи, но он должен доверять банку, получившему эту информацию.
Пользователь может убедиться, что используется безопасное соединение, взглянув на адрес сайта и проверив, что в начале строки адреса присутствует https://. Также пользователю следует проверить наличие в нижнем углу окна браузера изображения с закрытым замком или ключом (зависит от конкретного браузера).
В стеке протоколов, SSL расположен ниже прикладного уровня, но выше сетевого уровня. Это обеспечивает независимость SSL от конкретных прикладных протоколов и возможность использования им транспортных коммуникационных стандартов Интернета. В различных источниках SSL может быть расположен на различных уровнях модели OSI, что может вызвать непонимание. Нужно учитывать, что модель OSI – это концептуальная конструкция, которая пытается описать сетевую реальность. В действительности SSL состоит из двух протоколов: один работает внизу сеансового уровня, а другой работает наверху транспортного уровня. Именно поэтому одни источники ставят SSL на сеансовый уровень, а другие – на транспортный. Для сдачи экзамена CISSP запомните, что SSL работает на транспортном уровне.
Хотя SSL практически всегда используется в паре с НТТР, он также может использоваться и с другими протоколами. Если вы видите название обычного протокола, к которому прибавлено окончание «s», это безопасная версия протокола, использующая SSL для шифрования передаваемых данных.
Текущей версией SSL является версия 3.0. Поскольку SSL был разработан Netscape, он не является открытым протоколом. В связи с этим расширение функциональности SSL не является простой задачей. В спецификации и функции закрытого, защищенного авторскими правами протокола, независимые разработчики не могут вносить изменений. Открытой версией протокола SSL является протокол TLS (Transport Layer Security). Различия между SSL 3.0 и TLS незначительны, однако TLS имеет значительно больше возможностей для расширения функциональности и при этом он обратно совместим с SSL.
Между S-HTTP (Secure HTTP) и HTTPS (HTTP Secure) есть существенные различия, хотя их названия очень похожи. S-HTTP – это технология, которая защищает каждое сообщение, передаваемое между двумя компьютерами, тогда как HTTPS защищает коммуникационный канал между двумя компьютерами, в том числе сообщения и все остальное. HTTPS использует SSL и HTTP для организации защищенного канала между клиентом и сервером. S-HTTP следует использовать при необходимости шифрования отдельных сообщений, но если нужно шифровать всю информацию, передаваемую между двумя компьютерами, следует использовать HTTPS.
Ссылки по теме:
SET (Secure Electronic Transaction – защищенные электронные транзакции) – это технология безопасности, предложенная Visa и MasterCard для повышения безопасности транзакций с банковскими картами. Ожидалось, что SET одержит быструю победу и вскоре будет принят в качестве стандарта и повсеместно внедрен. Хотя SET и обеспечивает эффективный способ передачи информации банковских карт, компании и пользователи не восприняли его, поскольку требовалось координировать работу различных сторон, каждому участнику нужно было устанавливать и настраивать много дополнительного (обновленного) программного обеспечения, к тому же это требовало значительно больших усилий и затрат, чем широко используемый метод, основанный на SSL.
SET – это криптографический протокол и инфраструктура, он разработан для передачи через Интернет зашифрованных номеров кредитных карт. В транзакциях SET принимают участие следующие субъекты, которые должны обновить свое программное обеспечение и, вероятно, аппаратные устройства:
- Эмитент (Issuer, банк держателя карты). Финансовая организация, предоставляющая банковские карты своим клиентам.
- Держатель карты (Cardholder). Человек, уполномоченный на использование банковской карты.
- Торговая организация (Merchant). Субъект, осуществляющий продажу товаров или услуг.
- Эквайер (Acquirer, банк, в котором обслуживается торговая организация). Финансовая организация, обрабатывающая платежи по банковским картам.
- Платежный шлюз (Payment gateway). Платежный шлюз принимает и обрабатывает платежи торговой организации. Эту функцию может выполнять эквайер.
Для использования SET, пользователь должен ввести номер своей банковской карты в электронный "бумажник". Эта информация сохраняется на жестком диске пользователя или на смарт-карте. Программное обеспечение электронного "бумажника" создает пару ключей – открытый и закрытый, которые используются для шифрования финансовой информации перед ее отправкой.
Предположим, что Таня хочет с помощью своей кредитной карты купить на интернет-сайте подарок маме. Для покупки найденного ей подарока она должна отправить зашифрованные данные своей банковской карты на веб-сервер торговой организации. Торговая организация не расшифровывает эти данные, она просто подписывает их своей цифровой подписью и пересылает в банк. Платежный сервер банка расшифровывает полученные данные, проверяет, что на карте Тани есть достаточно денег для выполнения транзакции, после чего переводит деньги со счета Тани на счет торговой организации. Затем платежный сервер отправляет торговой организации сообщение, которое подтверждает успешное выполнение транзакции, а также квитанцию Тане и торговой организации. На каждом этапе очередной участник проверяет цифровую подпись отправителя (от которого он получил данные), и ставит свою цифровую подпись перед отправкой данных следующему участнику, вовлеченному в процесс. Это требует наличия у всех участников цифровых сертификатов и работы в PKI.
Это значительно более безопасный способ для выполнения транзакций через Интернет, но на сегодняшний день достаточно того уровня безопасности, который обеспечивает SSL. Ни держатели кредитных карт, ни финансовые организации не чувствуют достаточных мотивов для перехода на новую, более сложную, технологию. Также это связано с большим объемом изменений, которые нужно произвести в современных технологических процессах, и финансовых затрат, необходимых для этого.
Куки (cookie) – это текстовые файлы, которые браузер хранит на жестком диске пользователя. Куки имеют множество различных вариантов использования, например, в некоторых случаях они применяются для сбора демографической информации или в рекламных целях. Когда пользователь переходит с сайта на сайт в Интернете, эти сайты могут записывать данные в куки, сохраняемые в системе пользователя. С помощью этих данных сайты могут отслеживать перемещения пользователя по Интернету, его привычки и предпочтения в отношении определенных сайтов. Например, Эмили посещает в Интернете в основном сайты по садоводству, и эти сайты (что весьма вероятно) записывают информацию о ее посещениях, а также об элементах сайтов, которые вызывают у нее наибольший интерес. Когда Эмили возвращается на тот же или открывает похожий сайт, он запрашивает куки с ее компьютера, и находит в них информацию о том, что раньше ее интересовали книги по садоводству. На основании этой информации сайт показывает ей ссылку на новую серию книг по садоводству. Это существенно увеличивает вероятность того, что Эмили выберет и купит понравившуюся книгу. Это одна из современных маркетинговых тактик.
Порядок использования куки определяют серверы веб-сайтов. Если пользователь добавляет товар в свою корзину покупок на сайте, данные об этом обычно записываются в куки. Затем, когда пользователь закончил выбирать товары и готов оплатить покупку, данные о выбранных им товарах извлекаются из соответствующего куки и рассчитывается итоговая сумма покупки.
Как было сказано ранее, протокол НТТР не устанавливает соединений, поэтому веб-сервер не расходует память на хранение информации о предыдущих соединениях. Это является одной из причин использования куки. С помощью них сохраняются данные о предыдущих соединениях пользователя, которые могут использоваться последующими HTTP-соединениями.
Например, если вы выполняете банковские операции в системе интернет-банкинга, веб-сервер вашего банка отслеживает ваши действия с помощью куки. Если вы сначала заходите на открытую часть банковского сайта и смотрите информацию о местонахождении офисов, времени их работы, курсах валют, конфиденциальная информация не передается ни в одном из направлений. Как только вы запрашиваете доступ к своему банковскому счету, веб-сервер устанавливает соединение SSL и требует, чтобы вы прошли аутентификацию перед предоставлением вам доступа. Как только вы проходите аутентификацию, сервер создает куки, в который записывает информацию о вашей аутентификации и вашем счете. Сервер отправляет этот куки вашему браузеру, а он сохраняет куки на жестком диске или в памяти вашего компьютера.
ПРИМЕЧАНИЕ. Некоторые куки храняются на жестком диске в виде текстовых файлов. Эти файлы не должны содержать критичной информации, такой как номера кредитных карт или пароли. Куки, в которых хранится критичная информация, обычно содержатся только в памяти компьютера и не записываются на жесткий диск.
Предположим, что вы проверяете свой текущий счет, выполняете с ним некие операции, а затем запрашиваете информацию о своем депозитном счете. Веб-сервер отправляет запрос вашему браузеру для проверки куки, чтобы убедиться, что вы уже были надлежащим образом аутентифицированы.
Большинство систем интернет-банкинга периодически запрашивает куки у вашего браузера, чтобы убедиться в отсутствии «человека посередине», перехватившего ваш сеанс взаимодействия с банком.
Также важно обеспечить, чтобы безопасные соединения были ограничены по времени. Для этого в куки добавляются штампы времени. Если вы работали на веб-сайте через SSL-соединение, а затем на время отошли от компьютера, не закрывая сайт, программное обеспечение сайта через определенное время разорвет соединение и вам потребуется снова пройти аутентификацию, чтобы продолжить его использование.
Основная часть данных, хранящихся в куки, связана с серверами соответствующих сайтов, но некоторые куки могут содержать имена пользователей и пароли для различных учетных записей пользователя на интернет-сайтах. Куки, содержащие критичную информацию, должны в обязательном порядке быть зашифрованы сервером распространяющего их сайта, но так происходит не всегда, поэтому атакующие могут найти критичную информацию на жестком диске пользователя и попытаться воспользоваться ей в собственных интересах. Некоторые люди настраивают браузер таким образом, чтобы он вообще не принимал куки. Хотя это обеспечивает высокий уровень защиты против различных угроз, связанных с куки, при этом снижается функциональность интернет-сайтов и удобство их использования. Некоторые сайты в обязательном порядке требуют использования куки, они необходимы им для корректной работы в процессе обслуживания пользователей.
ПРИМЕЧАНИЕ. Некоторые программные продукты позволяют ограничить использование куки, разрешая загружать только определенные их типы, скрывать идентификационные данные пользователя в процессе его путешествия по Интернету, скрывать адрес электронной почты пользователя и почтовые сервера, которые он использует, а также все остальное, что позволяет идентифицировать личность пользователя.
SSH (Secure Shell - Безопасная оболочка) – является разновидностью механизма туннелирования, обеспечивающего терминальный доступ к удаленным компьютерам. SSH – это программа и протокол, которые могут использоваться для входа на другие компьютеры через сеть. К примеру Поль, работающий на компьютере А, может с помощью SSH получить доступ к файлам на компьютере Б, запускать на компьютере Б приложения, выполнять настройку операционной системы на компьютере Б, работая при этом на компьютере А и физически не касаясь компьютера Б. SSH обеспечивает аутентификацию и безопасную передачу данных через небезопасные каналы связи, такие как Интернет.
ПРИМЕЧАНИЕ. SSH также может использоваться для организации безопасных каналов передачи файлов и перенаправления портов.
SSH может заменить Telnet, FTP, rlogin, rexec и rsh – он может обеспечить ту же функциональность, что и перечисленные средства, но, в отличие от них, SSH делает это значительно более безопасно. SSH – это программа и набор протоколов, которые работают совместно для создания безопасного туннеля между двумя компьютерами. При установлении соединения оба компьютера проходят через процедуру «рукопожатия» и обмениваются (с помощью алгоритма Диффи-Хеллмана) сеансовым ключом, который используется на протяжении всего сеанса взаимодействия этих компьютеров для шифрования и защиты передаваемых данных. Шаги процесса установления соединения SSH показаны на Рисунке 6-26.
Рисунок 6-26. SSH используется для осуществления терминального доступа
После завершения «рукопожатия» и создания безопасного канала, два компьютера получают возможность для защищенного обмена данными, в процессе которого обеспечивается конфиденциальность и целостность передаваемой информации.
Ссылки по теме:
- SSH (Secure Shell) FAQ, by Thomas Koenig
- The Secure Shell Frequently Asked Questions, by Anne Carasik and Steve Acheson
- Unix System Administration, Chapter 29, “Secure Shell, SSH,” by Frank G. Fiamingo
Набор протоколов IPSec (Internet Protocol Security) предоставляет способ создания защищенного канала для безопасного обмена данными между двумя устройствами. Такими устройствами, работающими через защищенный канал, могут быть два сервера, два маршрутизатора, рабочая станция и сервер, два шлюза между двумя различными сетями. IPSec – это общепринятый стандарт, обеспечивающий защиту на сетевом уровне. Он может быть более гибок и менее дорог, по сравнению с методами сквозного и канального шифрования.
В IPSec применяются стойкие методы шифрования и аутентификации. Обычно он применяется для создания VPN-туннелей между сетями через Интернет, хотя может использоваться и для создания коммуникационных туннелей между отдельными компьютерами.
IPSec – это не жесткий протокол, диктующий тип алгоритма, ключей и используемых методов аутентификации. IPSec – это открытая модульная платформа, обеспечивающая большую гибкость для компаний, выбравших эту технологию. В состав IPSec входят два основных протокола безопасности: AH (Authentication Header - Аутентификация заголовка) и ESP (Encapsulating Security Payload - Безопасная инкапсуляция содержимого). AH – это протокол аутентификации, а ESP – протокол аутентификации и шифрования, используемый криптографическими механизмами для выполнения аутентификации источника, а также обеспечения конфиденциальности и целостности сообщений.
IPSec может работать в одном из двух режимов: транспортный режим, в котором защищено содержимое сообщений, и туннельный режим, в котором защищено не только содержимое сообщений, но и заголовки пакетов, и информация маршрутизации. При работе ESP в транспортном режиме, он выполняет шифрование только содержимого сообщений, что в случае их перехвата не позволит неуполномоченным лицам прочитать информацию. Туннельный режим обеспечивает более высокий уровень защиты, дополнительно шифруя заголовки и окончания пакетов данных, в которых атакующий может найти полезные для него сведения. Рисунок 6-27 в общих чертах показыват процесс установления соединения IPSec.
Рисунок 6-27. Шаги, выполняемые двумя устройствами для использования IPSec
Каждое устройство должно иметь одну или более ассоциаций безопасности (SA – security association) на каждое используемое им безопасное соединение. SA – это конфигурационная запись в настройках устройства, необходимая для работы соединения IPSec. SA играет одну из важнейших ролей в архитектуре IPSec. Когда два устройства завершили процесс «рукопожатия», в рамках которого они достигли соглашения по большому количеству различных коммуникационных параметров, эти параметры должны быть где-то сохранены. Именно для этого и нужна SA. SA может содержать ключи аутентификации и шифрования, информацию о согласованных алгоритмах, срок жизни ключа, IP-адрес отправителя. Когда устройство получает пакет посредством протокола IPSec, именно SA говорит устройству, что нужно делать с этим пакетом. Так, если устройство Б получает пакет от устройства В посредством IPSec, устройство Б должно посмотреть в соответствующую SA, чтобы узнать, как расшифровать пакет, как правильно аутентифицировать отправителя пакета, какой ключ использовать, как отвечать на сообщение при необходимости.
SA учитывает только одно направление передачи данных, поэтому устройство должно иметь для каждого отдельного коммуникационного канала одну SA для исходящего трафика и одну – для входящего. Таким образом, если устройство подключено к трем другим устройствам, оно должно иметь не менее шести SA – по две (одна для исходящего трафика, другая – для входящего) на каждое удаленное устройство. Каким образом устроойства хранят SA и обеспечивают применение нужных SA для соответствующих соединений? Это осуществляется с помощью индексов параметров безопасности (SPI – security parameter index). На каждом устройстве есть SPI,который отслеживает различные SA и сообщает устройству, какой ему нужен SA для обработки того или иного пакета. Значение SPI указывается в заголовке пакета IPSec, устройство считывает это значение, чтобы найти нужный SA. Это изображено на Рисунке 6-28.
Рисунок 6-28. SPI и SA помогают системе обрабатывать пакеты IPSec
IPSec может аутентифицировать устройства, отправляющие пакеты, с помощью МАС (коды MAC были рассмотрены ранее в раздле «Односторонние хэши»). Протокол ESP может обеспечить аутентификацию, целостность и конфиденциальность (если устройстве включена и настроена эта функциональность). Таким образом, если компании достаточно просто обеспечить уверенность в источнике пакетов и в целостности пакетов, ей следует выбрать АН. Если компании помимо этих функций необходимо обеспечить конфиденциальность, ей следует использовать протокол ESP, т.к. он предоставляет функции шифрования. В большинстве случаев применение ESP обуславливается наличием у компании потребности в создании безопасных VPN-соединений.
Может показаться, что шифрование является дополнением в протоколе ESP, а в остальном функциональность AH и ESP пересекается. АН обеспечивает аутентификацию и целостность, а ESP может обеспечивать помимо этих функций еще и конфиденциальность. Зачем в таком случае нужен АН? В большинстве случаев это вызвано использованием NAT (трансляция сетевых адресов). IPSec генерирует контрольное значение целостности (ICV – integrity check value), которое в действительности является тем же значением МАС, вычисленным для части пакета. Помните, что отправитель и получатель генерируют свои собственные значения для проверки целостности? В IPSec эти значения называются ICV. Получатель сравнивает самостоятельно рассчитанное значение ICV с аналогичным значением, полученным от отправителя. Если значения совпадают, получатель может быть уверен, что пакет не был изменен в процессе передачи. Если значения отличаются, пакет был изменен и получатель отбрасывает его.
Протокол АН рассчитывает значение ICV как над самими данными, так и над транспортным и сетевым заголовками. Если затем пакет проходит через устройство NAT, это устройство изменяет IP-адрес отправителя пакета. Это его работа. Однако при этом часть содержимого пакета (заголовок сетевого уровня), включенная ранее в расчет значения ICV, изменяется и, если получатель сгенерирует свое значение ICV для полученного пакета, оно будет отличаться от значения ICV, указанного в пакете, и пакет будет автоматически уничтожен.
Протокол ESP выполняет аналогичные шаги, за исключением того, что он не включает заголовок сетевого уровня в расчет значения ICV. Когда устройство NAT изменяет IP-адрес отправителя, это не влияет на значение ICV, т.к. заголовок сетевого уровня в расчете ICV не участвует. Эти отличия показаны на Рисунке 6-29.
Рисунок 6-29. AH и ESP используют различные части пакета для расчета ICV
Поскольку IPSec является платформой, он не диктует конкретные алгоритмы хэширования и шифрования или процедуры обмена ключами. Управление ключами может выполняться вручную или автоматически с использованием протокола управления ключами. Стандартом «де-факто» для IPSec является использование IKE (Internet Key Exchange - Обмен ключами в Интернет), который является комбинацией протоколов ISAKMP и OAKLEY. ISAKMP (Internet Security Association and Key Management Protocol - Протокол управления ключами и ассоциациями безопасности в Интернете) – это архитектура обмена ключами, независящая от типа используемых механизмов, связанных с ключами. ISAKMP предоставляет платформу, соглашение о деталях использования которой достигается в процессе создания соединения IPSec (алгоритмы, протоколы, режимы, ключи). Протокол OAKLEY – это протокол, который как раз и реализует достижение этого соглашения. Представьте, что ISAKMP – это игровое поле (инфраструктура), а OAKLEY – это парень, бегающий по полю туда и обратно (выполнение шагов заключения соглашения).
ПРИМЕЧАНИЕ. SKIP (Simple Key Management Protocol for IP - Простой протокол обмена ключами для IP) – это другой протокол обмена ключами, обеспечивающий в основном аналогичную IKE функциональность. Важно знать, что все эти протоколы работают на сетевом уровне.
IPSec со всеми этими компонентами и различными возможными конфигурациями очень многообразен. Это многообразие обеспечивае высокую степень гибкости, поскольку компания имеет большой выбор конфигураций для достижения необходимого ей уровня защиты.
Ссылки по теме:
- “A Cryptographic Evaluation of IPSec,” by N. Ferguson and Bruce Schneier
- “An Introduction to IP Security (IPSec) Encryption,” Cisco Systems, Inc.
Перехват и прослушивание передаваемых по сети данных называется пассивной атакой, т.к. атакующий не воздействует на протокол, алгоритм, ключ, само сообщение, какие-либо части системы шифрования. Пассивную атаку очень сложно обнаружить, в большинстве случаев проще попытаться предотвратить ее, чем выявить и остановить.
Активными атаками является изменение сообщений, изменение системных файлов, попытки выдать себя за другого человека. При выполнении активных атак атакующий что-то реально делает, а не просто собирает данные. Пассивные атаки обычно используются для сбора информации перед проведением активной атаки. В следующих разделах рассмотрены некоторые активные атаки, имеющие отношение к криптографии.
При выполнении атаки этого типа, атакующий имеет шифротекст нескольких сообщений. Каждое из сообщений зашифровано одним и тем же алгоритмом. Целью атакующего является вскрытие ключа, использованного в процессе шифрования. Если атакующий сможет вскрыть ключ, он сможет расшифровать все остальные сообщения, зашифрованные на том же ключе.
Атака «только шифротекст» (cipher-only attack) – это самый распространенный тип активных атак, поскольку получить шифротекст достаточно просто, например, прослушивая чей-то сетевой трафик. Однако это сложнейшая атака, в которой крайне сложно добиться успеха, поскольку атакующий имеет слишком мало информации о процессе шифрования.
При выполнении атаки типа «известный открытый текст» (known-plaintext attack), у атакующего есть открытый текст и соответствующий ему шифротекст одного или нескольких сообщений. Целью также является вскрытие ключа, использованного при шифровании этих сообщений, чтобы расшифровать и прочитать другие сообщения.
Обычно сообщения начинаются и заканчиваются одним и тем же текстом. Например, атакующий может узнать, что большинство сообщений сотрудников компании начинается с определенного приветствия и заканчивается подписью, в которую входит имя сотрудника, должность и контактная информация. Таким образом, атакующий имеет некоторый объем открытого текста (одинаковые данные в каждом сообщении) и может перехватить зашифрованное сообщение и извлечь из него шифротекст. Это позволит вскрыть несколько частей этой головоломки, а для завершения атаки нужно будет провести обратный инжиниринг, частотный анализ или брутфорс-атаку. Атаки типа «известный открытый текст» использовались США против Германии и Японии во Второй Мировой войне.
При выполнении атаки типа «выбранный открытый текст» (chosen-plaintext attack), у атакующего также есть открытый текст и соответствующий ему шифротекст, но он имеет возможность самостоятельно выбирать открытый текст и получать его в зашифрованном виде. Это дает атакующему дополнительные возможности для более глубокого изучения механизмов работы процесса шифрования, а также для сбора большего объема информации об используемом ключе. Если ему удастся вскрыть ключ, он сможет расшифровать другие сообщения, зашифрованные на этом ключе.
Как это делается? Например, атакующий может подготовить специальное сообщение, которое заставит получателя переслать его кому-то еще. Атакующий отправляет это сообщение пользователю, тот пересылает его своему коллеге, а почтовая программа на его компьютере автоматически зашифровывает сообщение перед отправкой. После этого атакующий перехватывает трафик пользователя и получает копию шифротекста к написанному им самим открытому тексту.
При выполнении атаки типа «выбранный шифротекст» (chosen-ciphertext attack), атакующий может выбирать шифротекст для расшифрования и имеет доступ к получаемому в результате открытому тексту. Целью опять же является вскрытие ключа. Это более сложная атака по сравнению с предыдущей. Для ее реализации атакующему может потребоваться контроль над системой, содержащей криптосистему.
ПРИМЕЧАНИЕ. Для всех перечисленных выше типов атак, существуют аналогичные производные типы атак, в начале названия которых добавляется слова «адаптированная»: например, «адаптированная атака с выбранным открытым текстом» (adaptive chosen-plaintext attack) или «адаптированная атака с выбранным шифротекстом» (adaptive chosen-cipertext attack). Слово «адаптированная» здесь означает, что атакующий выполняет одну из атак обычного типа, а затем, в зависимости от полученной в результате информации, изменяет свою следующую атаку. Так реализуются атаки с помощью обратного инжиниринга или криптоанализа – полученные знания используются для повышения эффективности последующей атаки.
Открытые и секретные алгоритмы. В настоящее время в мире в основном используются хорошо известные и понятные криптографические алгоритмы, а не секретные. Криптографы знают, насколько стойким и хорошо спроектированным должен быть алгоритм, представляемый на суд общественности. Тысячи умов лучше, чем пять, и часто это помогает найти в алгоритме проблемы, которые не заметили разработчики. Именно поэтому различные производители и компании устраивают соревнования по взлому их кодов и процессов шифрования. Если кому-то удается их взломать, разработчики возвращаются к чертежной доске и усиливают ту или иную часть алгоритма.
Однако не все алгоритмы сделаны общедоступными, например, некоторые алгоритмы, разработанные Агентством национальной безопасности США, являются секретными. Поскольку уровень критичности данных, с которыми работают шифры АНБ, настолько велик, они хотят максимально сохранить процесс в секрете. АНБ не проводит публичных тестов и исследований своих алгоритмов, однако это не говорит о слабости алгоритмов АНБ. Эти алгоритмы разрабатываются, исследуются и тестируются лучшими криптографами, имеющими очень высокую квалификацию.
Целью атаки этого типа также является вскрытие ключа, использованного при шифровании. Эта атака анализирует пары шифротекста, созданного при зашифровании пар открытого текста с определенными различиями, и анализирует их воздействие и результат, получаемый в результате этих различий. Первая такая атака была проведена в 1990 году против алгоритма DES. В дальнейшем она эффективно и успешно применялась для взлома DES и других блочных алгоритмов.
Атакующий берет два сообщения в виде открытого текста и следит за изменениями, которые происходят с блоками при их прохождении через различные S-боксы. (Каждое сообщение зашифровывается на одном и том же ключе). Выявленные расхождения в значениях получаемого в результате шифротекста используются в качестве карты вероятных значений для различных возможных значений ключа. Атакующий выполняет этот процесс для максимально возможного набора различных сообщений и определяет вероятные значения ключа. Постепенно ключ проявляется, и это с высокой вероятностью будет именно тот ключ, который использовался в процессе шифрования. Поскольку атакующий для атаки выбирает сообщения в виде открытого текста, это является атакой с «выбранным открытым текстом».
Линейный криптоанализ является другим вариантом атаки, направленной на выявление наиболее вероятного значения ключа, использованного в процессе шифрования блочным алгоритмом. Атакующий выполняет атаку «известный открытый текст» на несколько различных сообщений, зашифрованных на одном и том же ключе. Чем больше сообщений потенциально может использовать атакующий для этой атаки, тем вероятность нахождения правильного ключа.
Атакующий анализирует входящие и исходящие значения для каждого S-бокса. Он анализирует вероятность того, что определенные входящие значения дают в результате определенную комбинацию. Выявление таких результирующих комбинаций позволяет ему оценивать вероятность для различных значений ключа, пока он не найдет повторяющийся шаблон, имеющий высокую вероятность.
Все рассмотренные нами ранее атаки, основаны в первую очередь на математических аспектах криптографии. Использование открытого текста и шифротекста, а также применение мощных математических инструментов, направлено на вскрытие ключа, использованного в процессе шифрования.
Но существуют и другие методы. Предположим, мы видим какое-то животное, похожее на утку. Оно ходит как утка, издает звуки как утка, плавает в воде, ест жуков и маленьких рыб. Мы можем с уверенностью сделать вывод о том, что это утка. Так же и в криптографии, мы можем увидеть некоторые факты и сделать вывод о значении ключа. Например, мы можем измерить, сколько расходуется электроэнергии при зашифровании и расшифровании (по колебаниям электрического напряжения). Мы можем также перехватить создаваемые при этом излучения и затем рассчитать, сколько времени выполняются процессы. Анализ происходящего вне криптосистемы, измерение различных свойств и характеристик отличается от анализа того, что происходит в самой криптосистеме, но также дает данные, используя которые можно попытаться провести математические расчеты.
Если мне нужно узнать ваши привычки и предпочтения, но я не хочу, чтобы вы знали об этом, я не буду спрашивать вас напрямую. Вместо этого я прослежу, когда вы приходите на работу, когда уходите домой, какую одежду вы носите, что вы делаете, о чем говорите... Это тоже примеры получения информации с помощью побочных каналов (side-channel).
Таким образом, в криптографии сбор «внешней» информации с целью вскрытия ключа шифрования – это просто еще один способ атаки на криптосистемы.
Атакующий измеряет потребляемую энергию, излучения, время обработки определенных данных. Полученную информацию он использует при проведении обратного инжиниринга процесса для вскрытия ключа шифрования или получения критичных данных. Например, атака, при которой анализируется потребляемая энергия, анализирует производимое тепло. Эта атака успешно применяется для взлома смарт-карт и получения с них конфиденциальной информации. В 1995 году закрытый ключ алгоритма RSA был взломан с помощью измерения относительного времени, которое расходуется на различные криптографические операции.
Идея этого заключается в том, что вместо атаки устройство, мы просто смотрим, как оно работает. В биологии, ученые часто проводят «бесконтактные» эксперименты, в процессе которых они смотрят, как организм питается, спит, спаривается и т.д. Ученые пытаются изучить организм путем анализа его поведения, вместо того, чтобы убить его и заглянуть внутрь.
Большое проблемой в распределенной среде являются атаки повтора (replay attack), при выполнении которых атакующий перехватывает определенные данные, а затем отправляет их снова, надеясь, что получившее их устройство примет их за легитимную информацию. Чаще всего атакующий пытается перехватить и повторно использовать аутентификационные данные, чтобы пройти аутентификацию в системе от имени легитимного пользователя и получить таким образом несанкционированный доступ к ней.
Контрмерами против атаки повтора является использование штампов времени и номеров последовательности. Пакеты могут содержать номера последовательности и каждое получившее их устройство будет проверять эти номера. Если пакет имеет уже использовавшийся ранее номер, это указывает на атаку повтора. Также на пакеты может ставится штамп времени. При этом на каждом компьютере настраивается пороговое значение, определяющее временной интервал, в рамках которого указанное в пакете время будет считаться корректным. Если в пакете указано время, выходящее за пределы этого интервала, это также может говорить об атаке повтора.
При выполнении алгебраической атаки (algebraic attack), атакующий анализирует уязвимости в математических частях алгоритма и использует его внутренние алгебраические структуры. Для примера, атака на версию «текстовой книги» криптосистемы RSA использует такие свойства алгоритма, как факт, что при шифровании 0 получается 0.
Аналитические атаки (analytics attack) выявляют структурные слабости и недостатки алгоритма, вместо выполнения брутфорс-атаки, при которой просто перебираются все возможные значения, без учета специфических свойств алгоритма. Примерами являются Атака на Double DES и Атака разложения на множители в RSA.
Статистические атаки (statistical attack) выявляют статистические слабости в структуре алгоритма – например, если удается выявить статистический шаблон, например, сравнивая количество значений «0» с количеством значений «1». Это может быть вызвано, например, использованием некачественного генератора случайных чисел. Если ключи берутся напрямую из выдачи RNG, распределение ключей может быть предсказуемым. Знания о статистической предсказуемости могут использоваться для снижения времени на поиск ключей.
Ссылки по теме:
- Wikipedia entry for ciphertext-only attack
- Frequently Asked Questions about Today’s Cryptography, Version 4.1, Section 2.4.2, “What Are Some of the Basic Types of Cryptanalytic Attacks?” by RSA Laboratories
- “Linear Cryptanalysis: A Literature Survey,” by Terry Ritter
- “Linear Cryptanalysis of Block Ciphers,” by Edward Schaefer
- “Introduction to Side Channel Attacks,” by Hagai Bar-El, Discretix Technologies Ltd.
Криптография применяется в том или ином виде на протяжении 4000 лет, а атаки на нее выполняются примерно 3999 лет и 364 дня. Одна группа людей работает над поиском новых способов скрытия и передачи секретов, тогда как другая – занимается писком дыр в новых идеях и продуктах. Хотя это выглядит нехорошим и деструктивным поведением, в компьютерном мире это способствует созданию все лучших и все более защищенных продуктов и сред.
Криптографические алгоритмы предоставляют низкоуровневые инструменты для большинства протоколов безопасности, используемых в современных инфраструктурах. Алгоритмы используют математические функции и предоставляют различные функции и уровни безопасности. Большой скачок произошел при переходе шифрования от чисто симметричных ключей к использованию криптографии с открытыми ключами. Это дало пользователям гораздо больше свободы и гибкости при взаимодействии с другими пользователями по всему миру.
Шифрование может выполняться на различных уровнях модели OSI широким спектром приложений, протоколов и механизмов. Сегодня уже не так просто забыть про криптографию или выполнении функций шифрования, поскольку многие операционные системы, приложения и протоколы заботятся об этом самостоятельно в фоновом режиме. Однако администраторам, занимающимся поддержкой таких сред, а также профессионалам по безопасности, которые выбирают и внедряют решения по безопасности, знание криптографии необходимо.
Алан Сугано. Безопасность сертификатов SSL. http://www.osp.ru/win2000/2010/11/13006816/
ОтветитьУдалить