Протоколы HTTP и SSL
HTTP(сокр. от англ. HyperTextTransfer Protocol, «протокол передачи гипертекста») - протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса,производят необходимые действия и возвращают обратно сообщение с результатом. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб-сайтов.
HTTP используется также в качестве«транспорта» для других протоколов прикладного уровня, таких как SOAP, XML-RPC,WebDAV.
Основным объектом манипуляции в HTTP является ресурс, на который указывает URI (англ. Uniform Resource Identifier - унифицированный(единообразный) идентификатор ресурса) в запросе клиента. Обычно такими ресурсами являются хранящиеся на сервере файлы, но ими могут быть логические объекты или что-то абстрактное. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя данный протокол является текстовым.
HTTP — протокол прикладного уровня,аналогичными ему являются FTP и SMTP. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URI. В отличие от многих других протоколов, HTTP не сохраняет своего состояния.Это означает отсутствие сохранения промежуточного состояния между парами«запрос-ответ». Компоненты, использующие HTTP, могут самостоятельно осуществлять сохранение информации о состоянии, связанной с последними запросами и ответами. Браузер, посылающий запросы, может отслеживать задержки ответов. Сервер может хранить IP-адреса и заголовки запросов последних клиентов. Однако в самом протоколе не предусмотрена внутренняя поддержка состояния.
Первоначально протокол HTTP разрабатывался для доступа к гипертекстовым документам Всемирной паутины. Поэтому основными реализациями клиентов являются браузеры (агенты пользователя). Популярные браузеры: Internet Explorer, Mozilla Firefox, Opera, и др.
Использование текстового формата в протоколе порождает соответствующий недостаток - большой размер сообщений по сравнению с передачей двоичных данных. Из-за этого возрастает нагрузка на оборудование при формировании, обработке и передаче сообщений. Для решения данной проблемы в протокол встроены средства для обеспечения кэширования на стороне клиента, а также средства компрессии передаваемого контента.Нормативными документами по протоколу предусмотрено наличие прокси-серверов,которые позволяют получить клиенту документ с наиболее близкого к нему сервера.Также в протокол было внедрено diff-кодирование, чтобы клиенту передавался не весь документ, а только его изменённая часть.
И хотя протокол разрабатывался как средство работы с ресурсами сервера, у него отсутствуют в явном виде средства навигации среди этих ресурсов. Например, клиент не может явным образом запросить список доступных файлов, как в протоколе FTP. Предполагалось, что конечный пользователь уже знает URI необходимого ему документа, закачав который, он будет производить навигацию благодаря гиперссылкам. Это вполне нормально и удобно для человека,но затруднительно, когда стоят задачи автоматической обработки и анализа всех ресурсов сервера без участия человека. Решение этой проблемы лежит полностью на плечах разработчиков приложений, использующих данный протокол.
Например, со стороны клиента используются «веб-пауки»- специальные программы, которые составляют список ресурсов сервера проходя по всем найденным гиперссылкам. Со стороны сервера данная проблема решается с помощью карты сайта (англ. site map) - специальной веб-страницы, где перечислены все доступные для посещения ресурсы. Она предназначена не только для людей, играя аналогичную содержанию в книге роль, но и полезна для тех же роботов-пауков позволяя уменьшить глубину - минимальное необходимое количество переходов с главной страницы. Для тех же целей служат файлы формата Sitemap, которые предназначены уже непосредственно для роботов.
Всё программное обеспечение для работы с протоколом HTTP разделяется на три больших категории:
· Серверы как основные поставщики услуг хранения и обработки информации (обработка запросов).
· Клиенты - конечные потребители услуг сервера(отправка запроса).
· Прокси для выполнения транспортных служб.
Для отличия конечных серверов от прокси в официальной документации используется термин исходный сервер (англ. origin server.). Разумеется, один и тот же программный продукт может одновременно выполнять функции клиента, сервера или посредника в зависимости от поставленных задач. В спецификациях протокола HTTP подробно описывается поведение для каждой из этих ролей.
HTTP протокол предлагает достаточно простой, парольный способ идентификации того или иного пользователя. В момент соединения с сервером, пользователь вводит пароль, пароль передается серверу вот крытом, не зашифрованном виде, и далее, проверив соответствие пароля и имени пользователя, сервер открывает или не открывает затребованное соединение.
Не секрет, что можно без особых технических ухищрений просматривать данные, которыми обмениваются между собой клиенты и серверы. Был даже придуман специальный термин для этого – sniffer (рус. нюхач) . А в связи с увеличением объема использования Интернета в коммерческих целях, неизбежно вставал вопрос о защите передаваемых данных. Было создано несколько различных безопасных протоколов. Официальный протокол,разработку которого спонсировала IETF, назывался Secure HTTP (SHTTP). Помимо него, разрабатывались, и были созданы, еще несколько не официальных проектов,один из которых, под названием SSL (Secure Sockets Layer), созданный Netscape,получил большую популярность и широкое распространение. Не смотря на свою популярность, SSL не является официальным Интернет стандартом.
Протокол SSL (secure socket layer) разработанный фирмой Netscape, как протокол обеспечивающий защиту данных между сервисными протоколами (такими как HTTP, NNTP, FTP и т.д.) и транспортными протоколами(TCP/IP). Часто для него используется аббревиатура HTTPS. Именно эта латинская буква "s" превращает обычный, не защищенный канал передачи данных в Интернете по протоколу HTTP, в засекреченный или защищенный.
Протокол SSL предоставляет "безопасный канал",который имеет три основные свойства:
· Канал является частным. Шифрование используется для всех сообщений после простого диалога, который служит для определения секретного ключа.
· Канал аутентифицирован. Серверная сторона диалога всегда аутентифицируется, в то время как клиентская - аутентифицируется опционно.
· Канал надежен. Транспортировка сообщений включает в себя проверку целостности (с привлечением MAC).
Появление такого протокола как SSL было вполне закономерным явлением. С одной стороны остаются все возможности сервисных протоколов (для программ-серверов), плюс к этому все данные передаются в зашифрованном виде. И раскодировать их довольно трудно. Следует отметить, что SSL не только обеспечивает защиту данных в Интернете, но так же производит опознание сервера и клиента (server/client authentication).
Использование SSL
Чаще всего, этот протокол используется в составе любого Интернет-ресурса, осуществляющего манипуляции с личными или финансовыми данными посещающих его пользователей Интернета. Чаще всего, это банки, Интернет-магазины или любые другие виртуальные места, в которых приходящие по своим делам пользователи, вынуждены передавать свои личные, и зачастую, секретные данные. Этого может потребовать и простая регистрация, и процедура оплаты какого-либо товара, или любая другая процедура, при которой пользователи вынуждены честно выдавать свои паспортные данные, PIN коды и пароли.
Итак,главным назначением SSL-протокола, является обеспечение приватного и надежного способа обмена информацией между двумя удаленно взаимодействующими приложениями. Протокол реализуется в виде двухслойной (многослойной) среды,специально предназначенной для безопасного переноса секретной информации, через не засекреченные каналы связи. В качестве первого слоя, в такой среде используется некоторый надежный транспортный протокол; TCP к примеру. По слову "транспортный", не трудно догадаться, что TCP берет на себя функции "несущей", и в дальнейшем, становится извозчиком, для всех лежащих выше слоев (протоколов). Вторым по счету слоем, накладываемым на TCP, является SSL Record Protocol. Вместе, эти два слоя, TCP и SSL Record Protocol, формируют своеобразное ядро SSL. В дальнейшем, это ядро становится первичной герметизирующей оболочкой, для всех последующих более сложных протокольных инфраструктур. В качестве одной из таких структур, используется SSL Handshake Protocol - позволяющий серверу и клиенту идентифицировать друг друга и согласовывать криптографические алгоритмы и ключи, перед тем как приложения,работающие на серверной и клиентской стороне, смогут начать передачу или прием информационных байтов в защищенном режиме.
Одним из не мало важных преимуществ SSL, является его полная программно-платформенная независимость. Протокол разработан на принципах переносимости, и идеология его построения, не зависит, от тех приложений, в составе которых он используется. Помимо этого, важно и то, что поверх протокола SSL, могут прозрачно накладываться и другие протоколы; либо для еще большего увеличения степени защиты целевых информационных потоков,либо, для адаптации криптографических способностей SSL под какую-нибудь другую, вполне определенную задачу.
Использование SSL начинается в тот момент,когда пользователь вводит в адресной строке своего браузера URL начинающийся с аббревиатуры HTTPS. В результате, он подключается к порту за номером 443,который для SSL обычно используется по умолчанию (для стандартного HTTP соединения, чаще всего используется порт 80). В процессе подключения, браузер пользователя (в дальнейшем клиент), посылает серверу приветственное сообщение(hello message). В свою очередь сервер, также должен посылать клиенту свое приветственное сообщение. Приветственные сообщения, являются первичными,инициализирующими сообщениями и содержат информацию, используемую при дальнейшей настройке открываемого секретного канала. В общем случае,приветственное сообщение устанавливает четыре основных параметра: версия протокола, идентификатор сессии, способ шифрования, метод компрессии, а также, два специально сгенерированных случайных числа; и сервер, и клиент, генерируют такие числа независимо друг от друга, а затем, просто обмениваются ими друг с другом.
После получения приветственного сообщения от клиента, сервер отсылает свой сертификат, если таковой у него имеется.Также, при необходимости, сервер может послать и некое ключевое сообщение,например в случае отсутствии сертификата. Если сервер авторизирован (т.е. имеет соответствующий сертификат), он может потребовать и клиентский сертификат, если того потребует выбранный способ шифрования данных. После этого, производится еще ряд промежуточных обменных операций, в процессе которых, производится окончательное уточнение выбранного алгоритма шифрования, ключей и секретов, и далее, сервер посылает клиенту некое финальное сообщение, после чего обе стороны приступают к обмену зашифрованной информации.
На практике, процесс обмена ключами и сертификатами, иногда может занимать относительно много времени. С этой целью,часто предусматривается возможность повторного использования одних и тех же идентификационных данных. Бывают ситуации, когда после установления соединения с SSL-сервером, у пользователя появляется желание открыть еще одно окно браузера, и через него, осуществить еще одно подключение к тому же SSL-серверу.В этом случае, чтобы не повторять весь цикл предварительных обменных операций, браузер может отправить серверу идентификатор сессии предыдущего соединения, и если сервер примет этот идентификатор, весь набор шифровочных и компрессионных параметров, будет взят от предыдущего соединения.
SSL как таковой, теоретически, может обеспечить практически полную защиту любого Интернет соединения. Однако,программы так или иначе использующие SSL протокол, является порой самым уязвимым местом этой технологии. Именно из-за ошибок в этих программах,возможна почти полная потеря, всех, достигнутых после использования SSL щитов и заслонов. К таким программным инструментам, прежде всего, относятся активно используемые нами Интернет-браузеры.
Одним из самых показательных критериев уровня защиты, является размер используемых ключей. Чем больше этот размер, тем соответственно надежнее защита. Браузеры в основном используют три размера: 40,56 и 128 бит, соответственно. Причем, 40-а битный вариант ключа недостаточно надежен. Таким образом, предпочтительнее использовать именно 128-ми битные ключи.
Но размер ключа, не будет играть решающий роли, если в защите браузера имеется внутренняя брешь. Сообщения об открытии таких брешей, в тех или иных браузерах, появляются с регулярными интервалами.Такая брешь напоминает открытую форточку в протапливаемой комнате - все тепло мгновенно выветривается.
Все эти и им подобные прорехи, не идут нив какое сравнение с той угрозой, которую могут представлять для пользователя вовремя не отозванные сертификаты. Дело в том, что браузеры обычно поставляются с неким, вполне определенным набором действительных сертификатов, но автоматического механизма проверки этой годности по прошествии некоторого времени - не существует. Таким образом, возможно, что действие, того или иного,используемого вашим браузером сертификата, уже, давно кончилось; мог истечь срок годности, мог быть потерян контроль над личным ключом соответствующим этому сертификату и.т.д. В любом из этих случаев, сертификат автоматически отзывается, и помещается в специальный, так называемый revocation list, или список не годных сертификатов, создаваемый и обновляемый тем или иным сертификационным сообществом (CA). Теперь, если не удалить такой сертификат из вашего браузера, он по прежнему будет числиться как годный, со всеми вытекающими отсюда последствиями.
Следует заметить, что идея, заложенная в протоколе SSL безусловно, хороша. Хотя у нее есть и свои плюсы, и свои минусы,но в целом, этот протокол можно назвать одним из наиболее удачных решений проблемы защиты пользовательских данных при их распространении "открытым"каналом. Этот протокол вполне бы мог стать некой сетевой панацеей. Но, к сожалению, практика, показывает что идея это еще не решение. Без соответствующей практической составляющей, идея так и остается идеей, а потому,пользователи безусловно, должны помнить, что символ замка, появляющийся в строке состояния их Интернет-браузеров, еще не гарантия того, что все наши секреты и тайны находятся под действительно надежной защитой
Протокол DHCP
DHCP (англ. Dynamic Host Configuration Protocol, протокол динамической конфигурации узла) - это сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. Данный протокол работает по модели «клиент-сервер». Протокол DHCP представляет собой стандартный протокол, определенный RFC 1541 (заменен на RFC2131), который позволяет серверу динамически присваивать клиентам IP-адреса и сведения о конфигурации. Сетевой администратор может задать диапазон адресов,распределяемых сервером среди компьютеров. Это позволяет избежать ручной настройки компьютеров сети и уменьшает количество ошибок. Протокол DHCP используется в большинстве крупных (и не очень) сетей TCP/IP.
DHCP является расширением протокола BOOTP, использовавшегося ранее для обеспечения бездисковых рабочих станций IP-адресами при их загрузке. DHCP сохраняет обратную совместимость с BOOTP.
Протокол DHCP предоставляет три способа распределения IP -адресов:
· Ручное распределение. При этом способе сетевой администратор сопоставляет аппаратному адресу (для Ethernet сетей это MAC -адрес) каждого клиентского компьютера определённый IP -адрес.Фактически, данный способ распределения адресов отличается от ручной настройки каждого компьютера лишь тем, что сведения об адресах хранятся централизованно(на сервере DHCP ), и потому их проще изменять при необходимости.
· Автоматическое распределение. При данном способе каждому компьютеру на постоянное использование выделяется произвольный свободный IP -адрес из определённого администратором диапазона.
· Динамическое распределение. Этот способ аналогичен автоматическому распределению, за исключением того, что адрес выдаётся компьютеру не на постоянное пользование, а на определённый срок. Это называется арендой адреса. По истечении срока аренды IP -адрес вновь считается свободным, и клиент обязан запросить новый (он, впрочем, может оказаться тем же самым). Кроме того,клиент сам может отказаться от полученного адреса.
Некоторые реализации службы DHCP способны автоматически обновлять записи DNS ,соответствующие клиентским компьютерам, при выделении им новых адресов. Это производится при помощи протокола обновления DNS , описанного в RFC 2136.
Помимо IP-адреса, DHCP также может сообщать клиенту дополнительные параметры, необходимые для нормальной работы в сети. Эти параметры называются опциями DHCP. Список стандартных опций можно найти в RFC2132.
Некоторыми из наиболее часто используемых опций являются:
· IP-адрес маршрутизатора по умолчанию;
· маска подсети;
· адреса серверов DNS;
· имя домена DNS.
Некоторые поставщики программного обеспечения могут определять собственные, дополнительные опции DHCP
Рассмотрим пример процесса получения IP -адреса клиентом от сервера DHCP . Предположим, клиент ещё не имеет собственного IP -адреса,но ему известен его предыдущий адрес - 192.168.1.100. Процесс состоит из четырёх этапов.
Обнаружение DHCP
Вначале клиент выполняет широковещательный запрос по всей физической сети с целью обнаружить доступные DHCP -серверы. Он отправляет сообщение типа DHCPDISCOVER , при этом в качестве IP -адреса источника указывается 0.0.0.0 (так как компьютер ещё не имеет собственного IP -адреса), а в качестве адреса назначения — широковещательный адрес 255.255.255.255.
Клиент заполняет несколько полей сообщения начальными значениями:
· В поле xid помещается уникальный идентификатор транзакции, который позволяет отличать данный процесс получения IP -адреса от других, протекающих в то же время.
· В поле chaddr помещается аппаратный адрес ( MAC -адрес) клиента.
· В поле опций указывается последний известный клиенту IP -адрес. В данном примере это 192.168.1.100. Это необязательно и может быть проигнорировано сервером.
Сообщение DHCPDISCOVER может быть распространено за пределы локальной физической сети при помощи специально настроенных агентов ретрансляции DHCP , перенаправляющих поступающие от клиентов сообщения DHCP серверам в других подсетях.
Предложение DHCP
Получив сообщение от клиента, сервер определяет требуемую конфигурацию клиента в соответствии с указанными сетевым администратором настройками. В данном случае DHCP-сервер согласен с запрошенным клиентом адресом 192.168.1.100. Сервер отправляет ему ответ ( DHCPOFFER ), в котором предлагает конфигурацию. Предлагаемый клиенту IP -адрес указывается в поле yiaddr . Прочие параметры(такие, как адреса маршрутизаторов и DNS -серверов) указываются в виде опций в соответствующем поле.
Это сообщение DHCP -сервер отправляет хосту, пославшему DHCPDISCOVER , на его MAC . Клиент может получить несколько различных предложений DHCP от разных серверов; из них он должен выбрать то, которое его «устраивает».
Запрос DHCP
Выбрав одну из конфигураций, предложенных DHCP -серверами, клиент отправляет запрос DHCP (DHCPREQUEST). Он рассылается широковещательно; при этом к опциям, указанным клиентом в сообщении DHCPDISCOVER , добавляется специальная опция — идентификатор сервера — указывающая адрес DHCP -сервера, выбранного клиентом (в данном случае — 192.168.1.1).
Подтверждение DHCP
Сервер получив запрос DHCPREQUEST подтверждает его и направляет подтверждение (DHCPACK) клиенту. После этого клиент должен настроить свой сетевой интерфейс, используя предоставленные опции.
Если после получения подтверждения ( DHCPACK ) от сервера клиент обнаруживает,что указанный сервером адрес уже используется в сети, он рассылает широковещательное сообщение отказа DHCP ( DHCPDECLINE ),после чего процедура получения IP -адреса повторяется. Использование IP -адреса другим клиентом можно обнаружить, выполнив запрос ARP .
Если по каким-то причинам сервер не может предоставить клиенту запрошенный IP -адрес,или если аренда адреса удаляется администратором, сервер рассылает широковещательное сообщение отмены DHCP (DHCPNAK).При получении такого сообщения соответствующий клиент должен повторить процедуру получения адреса.
Клиент может явным образом прекратить аренду IP -адреса. Для этого он отправляет сообщение освобождения DHCP (DHCPRELEASE) тому серверу, который предоставил ему адрес в аренду. В отличие от других сообщений DHCP , DHCPRELEASE не рассылается широковещательно.
Информация DHCP
Сообщение информации DHCP ( DHCPINFORM )предназначено для определения дополнительных параметров TCP/IP (например, адреса маршрутизатора по умолчанию, DNS -серверов и т. п.) теми клиентами, которым не нужен динамический IP -адрес (то есть адрес которых настроен вручную). Серверы отвечают на такой запрос сообщением подтверждения ( DHCPACK ) без выделения IP -адреса.
Дата добавления: 2019-09-30; просмотров: 561;