Сетевая безопасность — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (rollbackEdits.php mass rollback)
 
(не показана 21 промежуточная версия 3 участников)
Строка 31: Строка 31:
 
По сути это атака на доступность какого-либо ресурса (DDoS (Distributed Denial of Service) атаки). Выглядит примерно так:
 
По сути это атака на доступность какого-либо ресурса (DDoS (Distributed Denial of Service) атаки). Выглядит примерно так:
 
[[Файл:Interrupted_flow.png]]
 
[[Файл:Interrupted_flow.png]]
 +
===Перехват данных===
 +
Эта атака происходит с целью похищения каких-либо конфиденциальных данных, при этом не меняя их. Изобразить можно следующим образом:
 +
 +
[[Файл:Intercepted_flow.png]]
 +
===Модификация потока данных===
 +
Это атака на целостность данных. В данном случае трафик на середине пути перехватывается и злоумышленник подменяет его на другой, который пойдет в итоге получателю. То есть изобразить такую передачу данных можно следующим образом:
 +
 +
[[Файл:Modified_flow.png]]
 +
===Фабрикация данных===
 +
Данная атака производится на целостность данных, то есть трафик маскируется под настоящий, заставляя получателя думать, что он подлинный. В итоге получатель передает свои данные злоумышленнику. Выглядит это так:
 +
 +
[[Файл:Fabricated_flow.png]]
 +
 +
=Подходы сетевой безопасности=
 +
==Криптография==
 +
Допустим, что Алиса и Боб общаются между собой, а кто-то другой имеет возможность перехватить, удалить или добавить любое сообщение. Алиса и Боб хотят общаться безопасно, чтобы никто не мог им помешать. Тут на помощь им приходят алгоритмы криптографии.
 +
 +
[[Файл:The_Language_Of_Cryptography.png]]
 +
 +
В данном случае нам нужны такие ключи <tex>K_{A}</tex> и <tex>K_{B}</tex>, что <tex>m = K_{B}(K_{A}(m))</tex>, где <tex>m</tex> - исходное сообщение, а <tex>K_{A}(m)</tex> - зашифрованное сообщение. Самое простое решение - использовать в качестве ключа некоторую другую перестановку алфавита, то есть словарь соответствия каждой букве какой-то другой. Минус такого подхода заключается в том, что очень быстро простым перебором можно подобрать ключ. Что же можно сделать? Разберемся, на чем основана криптография. Идея заключается в том, что алгоритм шифрования известен всем, а вот ключи являются секретными. Существует 2 основных типа криптографии: по симметричному ключу и по публичному ключу.
 +
 +
===Шифрование по симметричному ключу===
 +
Оба собеседника используют один и тот же симметричный ключ. По факту у обоих есть ключ <tex>K_{AB}</tex> такой, что <tex>m = K_{AB}(K_{AB}(m))</tex>, где <tex>m</tex> - передаваемое сообщение, а <tex>K_{AB}(m)</tex> - зашифрованное сообщение.
 +
 +
[[Файл:Symmetric_Key_Cryptography.png]]
 +
 +
Есть 2 типа симметричного ключа:
 +
# Потоковый шифр - симметричный шифр, в котором каждый символ сообщения преобразуется в символ зашифрованного текста в зависимости от используемого ключа и его расположения в сообщении. Одним из самых популярных шифров данного типа является RC4. Он широко используется в алгоритмах обеспечения безопасности беспроводных сетей WEP и WPA, а также может использоваться в протоколах SSL и TLS. Этот шифр строится на основе генератора псевдослучайных битов. На вход генератора записывается ключ, а на выходе читаются псевдослучайные биты. Длина ключа может составлять от 40 до 2048 бит. Генерируемые биты при этом имеют равномерное распределение. Основными преимуществами RC4 являются высокая скорость работы и переменный размер ключа. При этом он довольно уязвим, если используются не случайные или связанные ключи или один ключевой поток используется дважды.
 +
# Блочный шифр - симметричный шифр, оперирующий группами бит фиксированной длины - блоками, характерный размер которых меняется в пределах 64-256 бит. Если исходный текст (или его остаток) меньше размера блока, перед шифрованием его дополняют. Фактически, блочный шифр представляет собой подстановку на алфавите блоков, которая, как следствие, может быть моно- или полиалфавитной. Главным достоинством блочных шифров является сходство алгоритмов шифрования и расшифрования, которые почти всегда отличаются лишь порядком действий. Блочный шифр сам по себе состоит из двух алгоритмов: шифрования и расшифрования. Оба алгоритма можно представить в виде функций. Функция шифрования <tex>E</tex> (англ. ''encryption'' - шифрование) на вход получает блок данных <tex>M</tex> (англ. ''message'' - сообщение) размером <tex>n</tex> бит и ключ <tex>K</tex> (англ. ''key'' - ключ) размером <tex>k</tex> бит и на выходе отдает блок шифротекста <tex>C</tex> (англ. ''cipher'' - шифр) размером <tex>n</tex> бит: <tex>E_{K}(M) := E(K, M) : \{0, 1\}^{k} \times \{0, 1\}^{n} \rightarrow \{0, 1\}^{n}</tex>. Для любого ключа <tex>K</tex>, <tex>E_{K}</tex> является биекцией на множестве <tex>n</tex>-битных блоков. Функция расшифрования <tex>D</tex> (англ. ''decryption'' - расшифрование) на вход получает шифр <tex>C</tex>, ключ <tex>K</tex> и на выходе отдает <tex>M</tex>: <tex>D_{K}(C) := D(K, C) : \{0, 1\}^{k} \times \{0, 1\}^{n} \rightarrow \{0, 1\}^{n}</tex>, являясь, при этом, обратной к функции шифрования: <tex>D = E^{-1}</tex>, <tex>\forall K : D_{K}(E_{K}(M)) = M</tex> и <tex>E_{K}(D_{K}(C)) = C</tex>. Можно заметить, что ключ, необходимый для шифрования и дешифрования, один и тот же - следствие симметричности блочности шифра.
 +
 +
===Шифрование по публичному ключу===
 +
Данный подход принципиально отличается от шифрования по симметричному ключу. Во-первых, у отправителя и получателя есть своя пара публичного и секретного ключа, при этом секретными ключами они не делятся даже друг с другом. Во-вторых, публичный ключ шифрования известен всем. И, наконец, приватный ключ дешифрования известен только получателю. Вот как это выглядит:
 +
 +
[[Файл:Public_Key_Cryptography.png]]
 +
 +
Можно сделать вывод, что должно выполняться 2 требования: <tex>K_{B}^{-}</tex> и <tex>K_{B}^{+}</tex> такие, что <tex>K_{B}^{-}(K_{B}^{+}(m)) = m</tex>, и, зная публичный ключ, человек не должен иметь возможности посчитать приватный. Одним из самых известных алгоритмов является RSA (Rivest-Shamir-Adleman). Это криптографический алгоритм с открытым ключом, который основывается на вычислительной сложности задачи факторизации больших целых чисел. В криптографической системе RSA каждый ключ состоит из пары целых чисел. Каждый участник создает свой открытый и закрытый ключ самостоятельно, при этом эти ключи являются согласованной парой в том смысле, что они являются взаимно обратными, то есть:
 +
 +
<tex>\forall</tex> допустимых пар открытого и закрытого ключей <tex>(p, s)</tex>
 +
 +
<tex>\exists</tex> соответствующие функции шифрования <tex>E_{p}(x)</tex> и расшифрования <tex>D_{s}(x)</tex> такие, что
 +
 +
<tex>\forall</tex> сообщений <tex>m \in M</tex>, где <tex>M</tex> - множество допустимых сообщений,
 +
 +
<tex>m = D_{s}(E_{p}(m)) = E_{p}(D_{s}(m))</tex>.
 +
 +
RSA-ключи генерируются следующим образом:
 +
# Выбираются два различных простых числа <tex>p</tex> и <tex>q</tex> заданного размера (например, 1024 бита каждое).
 +
# Вычисляется их произведение <tex>n = p \cdot q</tex>, которое называется модулем.
 +
# Вычисляется значение функции Эйлера от числа <tex>n</tex>: <tex>\phi (n) = (p - 1) \cdot (q - 1)</tex>.
 +
# Выбирается целое число <tex>e</tex> <tex>(1 < e < \phi (n))</tex>, взаимно простое со значением функции <tex>\phi (n)</tex>. Обычно в качестве <tex>e</tex> берут простые числа, содержащие небольшое количество единичных бит в двоичной записи, например, простые числа Ферма <tex>17</tex>, <tex>257</tex> или <tex>65537</tex>. Число <tex>e</tex> называется открытой экспонентой.
 +
# Выбирается число <tex>d</tex>, мультипликативно обратное к числу <tex>e</tex> по модулю <tex>\phi (n)</tex>, то есть число, удовлетворяющее сравнению: <tex>d \cdot e \equiv 1 (mod\ \phi (n))</tex>. Число <tex>d</tex> называется секретной экспонентой.
 +
# Пара <tex>\{e, n\}</tex> публикуется в качестве открытого ключа RSA.
 +
# Пара <tex>\{d, n\}</tex> играет роль закрытого ключа RSA и держится в секрете.
 +
 +
Теперь, чтобы зашифровать сообщение <tex>m</tex>, нужно посчитать <tex>c = m^{e}\ mod\ n</tex>, а чтобы расшифровать - <tex>m = c^{d}\ mod\ n</tex>. Однако такая схема не используется на практике по причине того, что она не является практически надежной, так как односторонняя функция является детерминированной. Чтобы избежать такого, используют сеансовый ключ. С помощью RSA шифрования собеседники обмениваются симметричными ключами сессии, и дальше уже общаются с их помощью.
 +
 +
==IPSec==
 +
'''IPSec''' - набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, является безопасностью на сетевом уровне. IPSec может шифровать и проводить проверку подлинности IP-пакетов. Поэтому IPSec предоставляет возможность защищать передачу данных в сетях LAN, в открытых и закрытых WAN, а также в сети Интернет.
 +
 +
== Межсетевой экран ==
 +
{{Определение
 +
|definition=
 +
'''Межсетевой экран''' (англ. ''firewall'', нем. ''brandmauer'') - это система аппаратных или программных компонентов, предназначенных для ограничения доступа между сетями, чаще всего между Интернетом и частной сетью. Межсетевой экран является частью системы безопаснсти, направленных на защиту информационных ресурсов организации.
 +
}}
 +
 +
==== Цели====
 +
# Предоставить людям из организации доступ к интернету так, чтобы лишние люди не могли получить доступ к внутренней информации компании.
 +
# Воздвигнуть барьер между ненадежным программным обеспечением, общественными веб-серверами Вашей организации и конфиденциальной информацией, которая находится во внутренней сети.
 +
 +
====Основные идеи====
 +
# Поместить специальное утройство-шлюз между внешним миром и внутренней сетью организации.
 +
# Все сигналы должны сначала идти к шлюзу, где заранее определено, допустим ли подобный сигнал или нет.
 +
Межсетевые экраны не защищают от атак, которым удалось проникнуть за "стену", от передачи внутренней информации недобросовестными сотрудниками во снешний мир и от передачи во внутреннюю сеть файлов или программ, содержащих вирусы.
 +
 +
===Типы межсетевых экранов===
 +
==== Пакетные фильтры====
 +
[[Файл:packet_filtering.gif|left|Пакетный фильтр.]]
 +
Пакетный фильтр (англ. ''packet-filter'') исходя из ограничений, определяет может или не может данный пакет пройти сквозь "стену". Фильтр основывается на данных,содержащихся в пакетах: источнике, адресе назначения, порте, транспортном протоколе и интерфейсе. Межсетевой экран может иметь разные настройки по умолчанию: либо он пропускает все неотфильтрованные пакеты, либо пропускает только отфильтрованные.  Плюсом такого подхода явлется простота и быстрота. Недостатком является низкий уровень защищенности. В коммерческом мире, простые пакетные фильтры становятся все более редкими: все основные межсетевые экраны имеют некоторую степень мониторинга состояния.
 +
<br clear="both" />
 +
==== Шлюзы сеансового уровня ====
 +
[[Файл:Stateful_packet_filtering.gif|left|Пакетный фильтр с учетом состояния.]]
 +
Шлюз сеансового уровня (англ. ''stateful packet-filtering firewal'') - это пакетный фильтр с таблицей состояний. В самом простом варианте шлюз сеансового уровня поддерживает отслеживание состояния TCP соединения, начиная с "тройного рукопожатия" (SYN, SYN/ACK, ACK), которое происходит на старте каждой TCP транзакции и заканчивая последним пакетом сессии (FIN или RST).
 +
Обычно, после того как шлюз сеансового уровня проверил, что данная транзакция разрешена(основываясь на источике/адресе назначения/порте), он фиксирует изначачальное рукопожатие. Если рукопожатие совершилось в разумное время, проверяются все заголовки всех TCP подпакетов для этой транзакции на соответствие с таблицей состояний. IP адрес источника, порт источника, IP адрес назначения, порт назначения и номер сообщения проверяются пока одна из сторон не закроет транзакцию, посылая FIN или RST.
 +
 +
Данный вид межсетегого экрана работает лучше, чем обычная пакетная фильтрация, так как без данных о состоянии соединений межсетевой экран не может знать, является ли данное сообщение частью уже установленной сессии или является первым сообщением сессии. Некоторые простые пакетные фильтры могут считать, что все сообщения с проставленным ACK флагом являются частью установленной сессии, что является потенциальной уязвимостью. Также знание о состоянии соединений защищает внутреннюю сеть от сканирования(например утилитой nmap), так как межсетевой экран сразу же обнаруживает любое несоответствие с данными в таблице и блокирует подозрительный ip адрес.
 +
<br clear="both" />
 +
==== Посредники прикладного уровня====
 +
[[Файл:Application-layer_proxy.jpg|left|400px|Шлюз сеансового уровня]]
 +
Посредники прикладного уровня (англ. ''application-layer proxying''). В отличие от предыдущих пакетных фильтров, которые проверяют, но не изменяют пакетов их (кроме некоторых случаев переадресации), данные межсетевые экраны выступают в качестве посредника во всех сеансах передачи данных.
 +
Шлюзы сеансового уровня называют прикладными, так как они используют множество прикладных данных о сервисах, с помощью которых они обеспечивают не только улучшение производительности, но и безопасности, в отличие от обычных прокси(посредников).
 +
Недостатками данного типа межсетевых экранов являются большие затраты времени и ресурсов на анализ каждого пакета. По этой причине они обычно не подходят для приложений реального времени. Другим недостатком является невозможность автоматического подключения поддержки новых сетевых приложений и протоколов, так как для каждого из них необходим свой агент.
 +
<br clear="both" />
 +
==== Инспекторы состояния. ====
 +
Инспектор состояния - такой межсетевой экран, который использует технологию проверки состояния (англ. ''Stateful Inspection''). Он представляет собой межсетевой экран, сочетающий фильтрацию трафика с сетевого по прикладной уровень.
 +
 +
<br clear="both" />

Текущая версия на 19:21, 4 сентября 2022

Понятие сетевой безопасности

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

Сама по себе сетевая безопасность включает в себя 3 основных аспекта:

  1. Как взломщики могут атаковать компьютерные сети
  2. Как можно защитить компьютерные сети от атак
  3. Как разработать архитектуру сети, чтобы она была устойчива к атакам

Вредоносное ПО

Злоумышленник может передать вредоносное ПО на компьютер по сети интернет с помощью вируса, червя или Троянского коня. После этого у злоумышленника есть несколько возможностей использования зараженного компьютера, в основном следующие:

  1. Шпионское ПО может записывать все нажатые клавиши на клавиатуре, посещенные веб-сайты и передавать их злоумышленнику, например, с целью хищения паролей
  2. Зараженный компьютер может использоваться ботнетом для спам или DDoS-атак
  3. Часто вредоносное ПО реплицируется и передается с зараженного компьютера дальше еще не зараженным

Троянский конь

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

Вирус

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

Червь

По сути очень похож на вирус, но отличается тем, что вместо репликации в других программах в пределах компьютера, червь распространяется по другим машинам в сети.

Логическая бомба

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

Зомби

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

Типы сетевых атак

Нормальный поток данных

Нормальный поток данных выглядит идейно следующим образом: Normal flow.png

Прерывание потока данных

По сути это атака на доступность какого-либо ресурса (DDoS (Distributed Denial of Service) атаки). Выглядит примерно так: Interrupted flow.png

Перехват данных

Эта атака происходит с целью похищения каких-либо конфиденциальных данных, при этом не меняя их. Изобразить можно следующим образом:

Intercepted flow.png

Модификация потока данных

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

Modified flow.png

Фабрикация данных

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

Fabricated flow.png

Подходы сетевой безопасности

Криптография

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

The Language Of Cryptography.png

В данном случае нам нужны такие ключи [math]K_{A}[/math] и [math]K_{B}[/math], что [math]m = K_{B}(K_{A}(m))[/math], где [math]m[/math] - исходное сообщение, а [math]K_{A}(m)[/math] - зашифрованное сообщение. Самое простое решение - использовать в качестве ключа некоторую другую перестановку алфавита, то есть словарь соответствия каждой букве какой-то другой. Минус такого подхода заключается в том, что очень быстро простым перебором можно подобрать ключ. Что же можно сделать? Разберемся, на чем основана криптография. Идея заключается в том, что алгоритм шифрования известен всем, а вот ключи являются секретными. Существует 2 основных типа криптографии: по симметричному ключу и по публичному ключу.

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

Оба собеседника используют один и тот же симметричный ключ. По факту у обоих есть ключ [math]K_{AB}[/math] такой, что [math]m = K_{AB}(K_{AB}(m))[/math], где [math]m[/math] - передаваемое сообщение, а [math]K_{AB}(m)[/math] - зашифрованное сообщение.

Symmetric Key Cryptography.png

Есть 2 типа симметричного ключа:

  1. Потоковый шифр - симметричный шифр, в котором каждый символ сообщения преобразуется в символ зашифрованного текста в зависимости от используемого ключа и его расположения в сообщении. Одним из самых популярных шифров данного типа является RC4. Он широко используется в алгоритмах обеспечения безопасности беспроводных сетей WEP и WPA, а также может использоваться в протоколах SSL и TLS. Этот шифр строится на основе генератора псевдослучайных битов. На вход генератора записывается ключ, а на выходе читаются псевдослучайные биты. Длина ключа может составлять от 40 до 2048 бит. Генерируемые биты при этом имеют равномерное распределение. Основными преимуществами RC4 являются высокая скорость работы и переменный размер ключа. При этом он довольно уязвим, если используются не случайные или связанные ключи или один ключевой поток используется дважды.
  2. Блочный шифр - симметричный шифр, оперирующий группами бит фиксированной длины - блоками, характерный размер которых меняется в пределах 64-256 бит. Если исходный текст (или его остаток) меньше размера блока, перед шифрованием его дополняют. Фактически, блочный шифр представляет собой подстановку на алфавите блоков, которая, как следствие, может быть моно- или полиалфавитной. Главным достоинством блочных шифров является сходство алгоритмов шифрования и расшифрования, которые почти всегда отличаются лишь порядком действий. Блочный шифр сам по себе состоит из двух алгоритмов: шифрования и расшифрования. Оба алгоритма можно представить в виде функций. Функция шифрования [math]E[/math] (англ. encryption - шифрование) на вход получает блок данных [math]M[/math] (англ. message - сообщение) размером [math]n[/math] бит и ключ [math]K[/math] (англ. key - ключ) размером [math]k[/math] бит и на выходе отдает блок шифротекста [math]C[/math] (англ. cipher - шифр) размером [math]n[/math] бит: [math]E_{K}(M) := E(K, M) : \{0, 1\}^{k} \times \{0, 1\}^{n} \rightarrow \{0, 1\}^{n}[/math]. Для любого ключа [math]K[/math], [math]E_{K}[/math] является биекцией на множестве [math]n[/math]-битных блоков. Функция расшифрования [math]D[/math] (англ. decryption - расшифрование) на вход получает шифр [math]C[/math], ключ [math]K[/math] и на выходе отдает [math]M[/math]: [math]D_{K}(C) := D(K, C) : \{0, 1\}^{k} \times \{0, 1\}^{n} \rightarrow \{0, 1\}^{n}[/math], являясь, при этом, обратной к функции шифрования: [math]D = E^{-1}[/math], [math]\forall K : D_{K}(E_{K}(M)) = M[/math] и [math]E_{K}(D_{K}(C)) = C[/math]. Можно заметить, что ключ, необходимый для шифрования и дешифрования, один и тот же - следствие симметричности блочности шифра.

Шифрование по публичному ключу

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

Public Key Cryptography.png

Можно сделать вывод, что должно выполняться 2 требования: [math]K_{B}^{-}[/math] и [math]K_{B}^{+}[/math] такие, что [math]K_{B}^{-}(K_{B}^{+}(m)) = m[/math], и, зная публичный ключ, человек не должен иметь возможности посчитать приватный. Одним из самых известных алгоритмов является RSA (Rivest-Shamir-Adleman). Это криптографический алгоритм с открытым ключом, который основывается на вычислительной сложности задачи факторизации больших целых чисел. В криптографической системе RSA каждый ключ состоит из пары целых чисел. Каждый участник создает свой открытый и закрытый ключ самостоятельно, при этом эти ключи являются согласованной парой в том смысле, что они являются взаимно обратными, то есть:

[math]\forall[/math] допустимых пар открытого и закрытого ключей [math](p, s)[/math]

[math]\exists[/math] соответствующие функции шифрования [math]E_{p}(x)[/math] и расшифрования [math]D_{s}(x)[/math] такие, что

[math]\forall[/math] сообщений [math]m \in M[/math], где [math]M[/math] - множество допустимых сообщений,

[math]m = D_{s}(E_{p}(m)) = E_{p}(D_{s}(m))[/math].

RSA-ключи генерируются следующим образом:

  1. Выбираются два различных простых числа [math]p[/math] и [math]q[/math] заданного размера (например, 1024 бита каждое).
  2. Вычисляется их произведение [math]n = p \cdot q[/math], которое называется модулем.
  3. Вычисляется значение функции Эйлера от числа [math]n[/math]: [math]\phi (n) = (p - 1) \cdot (q - 1)[/math].
  4. Выбирается целое число [math]e[/math] [math](1 \lt e \lt \phi (n))[/math], взаимно простое со значением функции [math]\phi (n)[/math]. Обычно в качестве [math]e[/math] берут простые числа, содержащие небольшое количество единичных бит в двоичной записи, например, простые числа Ферма [math]17[/math], [math]257[/math] или [math]65537[/math]. Число [math]e[/math] называется открытой экспонентой.
  5. Выбирается число [math]d[/math], мультипликативно обратное к числу [math]e[/math] по модулю [math]\phi (n)[/math], то есть число, удовлетворяющее сравнению: [math]d \cdot e \equiv 1 (mod\ \phi (n))[/math]. Число [math]d[/math] называется секретной экспонентой.
  6. Пара [math]\{e, n\}[/math] публикуется в качестве открытого ключа RSA.
  7. Пара [math]\{d, n\}[/math] играет роль закрытого ключа RSA и держится в секрете.

Теперь, чтобы зашифровать сообщение [math]m[/math], нужно посчитать [math]c = m^{e}\ mod\ n[/math], а чтобы расшифровать - [math]m = c^{d}\ mod\ n[/math]. Однако такая схема не используется на практике по причине того, что она не является практически надежной, так как односторонняя функция является детерминированной. Чтобы избежать такого, используют сеансовый ключ. С помощью RSA шифрования собеседники обмениваются симметричными ключами сессии, и дальше уже общаются с их помощью.

IPSec

IPSec - набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, является безопасностью на сетевом уровне. IPSec может шифровать и проводить проверку подлинности IP-пакетов. Поэтому IPSec предоставляет возможность защищать передачу данных в сетях LAN, в открытых и закрытых WAN, а также в сети Интернет.

Межсетевой экран

Определение:
Межсетевой экран (англ. firewall, нем. brandmauer) - это система аппаратных или программных компонентов, предназначенных для ограничения доступа между сетями, чаще всего между Интернетом и частной сетью. Межсетевой экран является частью системы безопаснсти, направленных на защиту информационных ресурсов организации.


Цели

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

Основные идеи

  1. Поместить специальное утройство-шлюз между внешним миром и внутренней сетью организации.
  2. Все сигналы должны сначала идти к шлюзу, где заранее определено, допустим ли подобный сигнал или нет.

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

Типы межсетевых экранов

Пакетные фильтры

Пакетный фильтр.

Пакетный фильтр (англ. packet-filter) исходя из ограничений, определяет может или не может данный пакет пройти сквозь "стену". Фильтр основывается на данных,содержащихся в пакетах: источнике, адресе назначения, порте, транспортном протоколе и интерфейсе. Межсетевой экран может иметь разные настройки по умолчанию: либо он пропускает все неотфильтрованные пакеты, либо пропускает только отфильтрованные. Плюсом такого подхода явлется простота и быстрота. Недостатком является низкий уровень защищенности. В коммерческом мире, простые пакетные фильтры становятся все более редкими: все основные межсетевые экраны имеют некоторую степень мониторинга состояния.

Шлюзы сеансового уровня

Пакетный фильтр с учетом состояния.

Шлюз сеансового уровня (англ. stateful packet-filtering firewal) - это пакетный фильтр с таблицей состояний. В самом простом варианте шлюз сеансового уровня поддерживает отслеживание состояния TCP соединения, начиная с "тройного рукопожатия" (SYN, SYN/ACK, ACK), которое происходит на старте каждой TCP транзакции и заканчивая последним пакетом сессии (FIN или RST). Обычно, после того как шлюз сеансового уровня проверил, что данная транзакция разрешена(основываясь на источике/адресе назначения/порте), он фиксирует изначачальное рукопожатие. Если рукопожатие совершилось в разумное время, проверяются все заголовки всех TCP подпакетов для этой транзакции на соответствие с таблицей состояний. IP адрес источника, порт источника, IP адрес назначения, порт назначения и номер сообщения проверяются пока одна из сторон не закроет транзакцию, посылая FIN или RST.

Данный вид межсетегого экрана работает лучше, чем обычная пакетная фильтрация, так как без данных о состоянии соединений межсетевой экран не может знать, является ли данное сообщение частью уже установленной сессии или является первым сообщением сессии. Некоторые простые пакетные фильтры могут считать, что все сообщения с проставленным ACK флагом являются частью установленной сессии, что является потенциальной уязвимостью. Также знание о состоянии соединений защищает внутреннюю сеть от сканирования(например утилитой nmap), так как межсетевой экран сразу же обнаруживает любое несоответствие с данными в таблице и блокирует подозрительный ip адрес.

Посредники прикладного уровня

Шлюз сеансового уровня

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

Инспекторы состояния.

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