Обеспечение шифрованного канала




Лекция 7. Безопасность при передаче по сети

 

Алгоритмы шифрования информации

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

 

Симметричные алгоритмы

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

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

Разумеется, устойчивость к взлому подбором для таких алгоритмов зависит от длины ключа. В современном мире наиболее часто встречающимися являются ключи длиной 128 бит (16 байт). Такие ключи гарантируют сохранность зашифрованной информации в течение нескольких лет (разумеется, если не произойдет какого-нибудь технологического рывка, при котором появятся сверхбыстрые компьютеры, подбирающие ключ).

В качестве примеров алгоритмов с симметричным ключом можно привести AES, DES и BlowFish.

 

Алгоритмы с открытым ключом

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

Ключи называются «открытый» и «закрытый» из-за их применения. Закрытый ключ, известен только одной стороне, в то время как открытый ключ доступен вообще всему миру.

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

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

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

Длина ключей алгоритмов с открытым ключом гораздо больше, чем длина ключей симметричных алгоритмов. В современном мире наиболее часто встречаются ключи длиной в 1024 бита и 2048 бит (128 и 256 байт, соответственно).

В качестве примеров алгоритмов с открытым ключом, можно привести DSA и RSA.

 

Для шифрования применяется односторонняя функция. Что такое односторонняя функция? К примеру есть функция удвоение, т.е удвоить(4)=8, она двухсторонняя, т.к. из результата 8 легко получить исходное значение 4. Односторонняя функция – та функция после применения которой практически невозможно получить исходное значение. К примеру смешивание желтой и синей краски – пример односторонней функции. Смешать их легко, а вот получить обратно исходные компоненты – невозможно. Одна из таких функций в математике – вычисление по модулю.

За основу алгоритма Хеллман предложил функцию Y^x (mod P). Обратное преобразование для такой функции очень сложно, и можно сказать что, по сути, заключается в полном переборе исходных значений.

К примеру, вам сказали, что 5^x (mod 7) = 2 (x == 1), попробуйте найдите x, а? Нашли? А теперь представьте, что за Y и P взяты числа порядка 10^300.

Кстати сказать, для повышения стойкости, число P должно являться простым числом, а Y – являться первообразным корнем по модулю P. Но так как мы все же пытаемся понять теорию, то смысла заморачиваться на этом я не вижу.

 

Обеспечение шифрованного канала

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

Сторона А подключается к стороне Б;

Сторона Б создает пару ключей (открытый и закрытый) и передает стороне А открытый ключ в незашифрованном виде (открытый ключ доступен всему миру);

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

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

 

Аутентификация

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

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

Сторона А пытается подключиться к Б, но соединение перехватывает З и А подключается к З;

Сторона З создает пару ключей, передает открытый ключ А и инициализирует шифрованный канал к стороне А;

Сторона З создает второе шифрованное соединение к стороне Б с помощью другого набора ключей;

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

 

Третья сторона

Для того, чтобы избежать описанной атаки «человек посередине», стороне А всего лишь достаточно удостовериться в том, сторона Б – это действительно сторона Б, а не злоумышленник, который пытается выдать себя за сторону Б, то есть аутентифицировать сторону Б.

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

Минус такого способа аутентификации в том, что сторона А должна знать открытый ключ стороны Б заранее, что просто невозможно обеспечить, например, для передачи зашифрованной информации между человеком и сайтом, на который человек пришел впервые. Именно здесь вступают в силу «третьи стороны».

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

 

Аутентификация – процедура проверки подлинности, например:

– проверка подлинности пользователя путём сравнения введённого им пароля с паролем, сохранённым в базе данных пользователей;

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

– проверка контрольной суммы файла на соответствие сумме, заявленной автором этого файла.

Авторизация – предоставление определённому лицу или группе лиц прав на выполнение определённых действий; а также процесс проверки (подтверждения) данных прав при попытке выполнения этих действий.

 

Аутентификация по паролю

Аутентификация по сертификату

 

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

Протокол SSL предоставляет «безопасный канал», который имеет три основных свойства:

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

– Канал аутентифицирован. Серверная сторона диалога всегда аутентифицируется, а клиентская делает это опционально.

– Канал надёжен. Транспортировка сообщений включает в себя проверку целостности.

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

 

Использовать сертификат, выданный CA

Использовать самоподписанный сертификат

Использовать «пустой» сертификат

 

HTTPS – расширение протокола HTTP, для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов SSL или TLS. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443.

HTTPS не является отдельным протоколом. Это обычный HTTP, работающий через шифрованные транспортные механизмы SSL и TLS. Он обеспечивает защиту от атак, основанных на прослушивании сетевого соединения – от снифферских атак и атак типа man-in-the-middle, при условии, что будут использоваться шифрующие средства и сертификат сервера проверен и ему доверяют.

 

Прокси-сервер – сервер (комплекс программ) в компьютерных сетях, позволяющий клиентам выполнять косвенные запросы к другим сетевым службам. Сначала клиент подключается к прокси-серверу и запрашивает какой-либо ресурс (например, e-mail), расположенный на другом сервере. Затем прокси-сервер либо подключается к указанному серверу и получает ресурс у него, либо возвращает ресурс из собственного кэша (в случаях, если прокси имеет свой кэш). В некоторых случаях запрос клиента или ответ сервера может быть изменён прокси-сервером в определённых целях. Прокси-сервер позволяет защищать компьютер клиента от некоторых сетевых атак и помогает сохранять анонимность клиента.

 

Чаще всего прокси-серверы применяются для следующих целей:

– Обеспечение доступа компьютеров локальной сети к сети Интернет.

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

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

– Защита локальной сети от внешнего доступа: например, можно настроить прокси-сервер так, что локальные компьютеры будут обращаться к внешним ресурсам только через него, а внешние компьютеры не смогут обращаться к локальным вообще (они «видят» только прокси-сервер).

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

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

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

 

SOCKS – сетевой протокол, который позволяет пересылать пакеты от клиента к серверу через прокси-сервер прозрачно (незаметно для них) и таким образом использовать сервисы за межсетевыми экранами.

Клиенты за межсетевым экраном, нуждающиеся в доступе к внешним серверам, вместо этого могут быть соединены с SOCKS прокси сервером. Такой прокси сервер контролирует права клиента на доступ к внешним ресурсам и передаёт клиентский запрос внешнему серверу. SOCKS может использоваться и противоположным способом, осуществляя контроль прав внешних клиентов соединяться с внутренними серверами, находящимися за межсетевым экраном (брандмауэром).

В отличие от HTTP прокси-серверов, SOCKS передаёт все данные от клиента, ничего не добавляя от себя, то есть с точки зрения конечного сервера, данные, полученные им от SOCKS-прокси, идентичны данным, которые клиент передал бы напрямую, без проксирования. SOCKS более универсален, он не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и оперирует на уровне TCP-соединений (4‑й уровень модели OSI). Зато HTTP-прокси кэширует данные и может более тщательно фильтровать содержимое передаваемых данных.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-07-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: