Вы здесь

Безопасность. Начало 06. Основы криптографии и VPN

VPN или Virtual Private Network в конечном счёте обеспечивает подключение двух устройств, при этом используемое соединение логическое.
Чаще всего VPN используется для подключения устройств поверх небезопасной среды, например интернет.

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

Типы VPN по используемым технологиям

  • IPSec VPN - обеспечивает безопасность пакетов на 3-м уровне OSI и может быть использована в Site-to-Site VPN и Remote-Acess VPN
  • SSL VPN - Secure Sockets Layer обеспечивает безопасность TCP Sessions на 6-м уровне OSI (Presentation)
  • MPLS - Multiprotocol Label Switching и MPLS Layer 3 VPNs выполняются провайдером и обеспечивает логическое соединение между офисами клиента. Такое соединение называется MPLs L3VPN.

Типы VPN по подключению

  • Remote-access VPN - это подключение от юзерской машины на сервер VPN. Remote-access VPN могут быть IpSec или SSL.
  • Site-to-Site VPNs - как понятно из названия, данный тип обеспечивает подключение двух и более офисов. Site-to-Site VPNs базируются на технологиях IPSec

Преимущества VPN

  • Confidentiality - только участвующие стороны должны понимать передающиеся данные. Любой другой, даже в случае перехвата данных, не имеет возможности их прочитать, поскольку данные зашифрованы.
    Несмотря на то, что все алгоритмы шифрования известны, большинство из них базируются на ключе key, который знают лишь участники VPN. С помощью ключа производится шифрование и расшифрование данных.
  • Data Integrity - другой важный фактор - обеспечение целостности передаваемых данных их точки А в точку Б. Механизм Data Integrity проверяет цлостность данных и в случае несоответствия запросит повторную передачу.
  • Authentication - позволяет участникам VPN предварительно удостовериться что они будут общаться именно с тем с кем нужно.
  • Antireplay protection - Replay - метод атаки, при котором участнику отсылается копия перехваченного трафика. Функция Antireplay гарантирует, что если какой то зашифрованный пакет был выслан, то любая другая его копия будет недействительной.

Основы криптографии

Итак, VPN отличная вещь, повсеместно используемая, и всё эти замечательные свойства обеспечиваются различными технологиями криптографии (Cryptography):
Confidentiality обеспечивается через Encryption.
Data Integrity есть функция Hashing.

Шифр(Cypher) и Ключи(Keys)

Шифр(Cypher) представляет собой список правил или Algorithm, согласно которому производится encryption и decryption данных.
Существует сотни алгоритмов как доступных в свободном доступе, так и закрытых (правительство или национальная безопасность).
Можно выделить несколько типов Cipher:

  • Substitution(замена) - данный тип шифра заменяет один символ на другой. Например заменять каждый символ на предыдущий символ по алфавиту. Точный список манипуляций собственно и являются "ключом" в данном случае
  • Polyalphabetic - это похоже на замену, но вместо замены одного символв могут меняться несколько или несколько на один и т.д.
  • Transposition - перестановка символов. Существует множество различных вариаций.

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

Block Cipher и Stream Cipher

Алгоритмы шифрования могут работать с blocks of data или с bits или bytes of data.

  • Block Cipher - symmetric key cypher, работающий с группой битов, именуемых block. Например забирается блок 64-bit и после обработки отдаётся 64-bit шифрованного текста.

    Примеры Symmetric block cipher algorythms:
    ■ Advanced Encryption Standard (AES)
    ■ Triple Digital Encryption Standard (3DES)
    ■ Blowfish
    ■ Digital Encryption Standard (DES)
    ■ International Data Encryption Algorithm (IDEA)

  • Stream Cipher - symmetric key cypher, работающий с каждым битом данных отдельно, т.е можно сказать что работает в потоковом режиме.

Алгоритмы Symmetric and Asymmetric

Понятие симметричности алгоритма уже встречалось в этом материале. Рассмотрим данный вопрос подробнее:

Symmetric encryption Algorithm или Symmetrical Cypher - использует один и тот же ключ для шифрования и расшифрования данных.
Примеры Symmetric encryption Algorithm:
■ DES
■ 3DES
■ AES
■ IDEA
■ RC2, RC4, RC5, RC6
■ Blowfish

На сегодняшний день Symmetric encryption Algorithm используется в большинстве типов VPN. Причина в том, что подобные алгоритмы требуют гораздо меньшей загрузки CPU.
Чем сложнее ключ, тем сильнее шифрование.
Обычно длина ключа варьируется от 112bits до 256bits. Надежно считается шифровать ключом длиной минимум 128bits.

Asymmetric encryption Algorithm - пример такого алгоритма - Public Key Algorithm. В данном алгоритме мы используем два разных ключа, которые математически работают сообща в паре.
Такие ключи называются как Public Key и Private Key.
В этом есть нечто магическое: данные, зашифрованные с помощью Public Key можно расшифровать ТОЛЬКО с помощью Private Key и наоборот.

Использование такого алгоритма очень затратно по ресурсам CPU, поэтому Asymmetric encryption Algorithm часто используют вместе с симметричным.
Например в VPN шифрование потока данных обеспечивается симметричными алгоритмами, а для генерации новых ключей keying material используется асимметричный.

Вернёмся к понятию public key cryptography:
благодаря свойствам Asymmetric encryption Algorithm мы делаем доступным для всех один из ключей - Public Key.
Второй ключ, Private Key остаётся в секрете на устройстве владеющим этой парой ключей.
Таким образом работают вебсайты HTTPS: клиенты шифруют данные сессии с помощью открытого ключа, и прочитать эти данные не может никто кроме сайта-владельца пары.

Примеры Asymmetrical algorithms:
■ RSA: Named after Rivest, Shamir, and Adleman, who created the algorithm. The primary
use of this asymmetrical algorithm today is for authentication. It is also known as public
key cryptography standard (PKCS) #1. The key length may be from 512 to 2048, and a
minimum size for good security is at least 1024. Regarding security, bigger is better.
■ DH: Diffie-Hellman key exchange protocol. DH is an asymmetrical algorithm that allows
two devices to negotiate and establish shared secret keying material (keys) over an
untrusted network. The interesting thing about DH is that although the algorithm itself is
asymmetrical, the keys generated by the exchange are symmetrical keys that can then be
used with symmetrical algorithms such as Triple Digital Encryption Standard (3DES)
and Advanced Encryption Standard (AES).
■ ElGamal (second character is an L): This asymmetrical encryption system is based on
the DH exchange.
■ DSA: Digital Signature Algorithm was developed by the U.S. National Security Agency.
■ ECC: Elliptic Curve Cryptography .

Как уже было сказано Asymmetrical algorithms оказывают большую нагрузку на CPU, в то же время они гораздо более сильнее симметричных.
Длина ключа в Asymmetrical algorithms варьируется между 2048 и 4096.
Чаще всего для шифрования трафика https используется алгоритм RSA.

Hashes

Hashing - это метод, используемый для verify data integrity.
При хешировании берётся блок данных, на основе которого создаётся небольшая строка из символов и цифр - Hash Value (digest, message digest, hash).
Хеширование это односторонний процесс, т.е. из Hash Value нельзя получить исходный блок данных.
Главное свойство хеша заключается в том, что невозможно сгенерировать аналогичный Hash Value из другого, отличного блока данных.

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

Существует 3 наиболее популярных типов хеширования:
■ Message digest 5 (MD5): This creates a 128-bit digest.
■ Secure Hash Algorithm 1 (SHA-1): This creates a 160-bit digest.
■ Secure Hash Algorithm 2 (SHA-2): Options include a digest between 224 bits and 512 bits.

Hashed Message Authentication Code (HMAC)

HMAC также использует механизм хеширования, стой лишь разницей, что при вычислении хеша также используется secret key. тогда только тот кто знает этот secret key сможет повторно вычислить и проверить хеш. Это защитит от атаки в подмене пакетов, т.к. атакующий будет лишен возможности проверить изменённый пакет.

Digital Signatures

Наверное все слышвли о цифровой подписи. Как известно сама по себе подпись удостоверяет то, что данный документ был отправлен определённым человеком.

Digital Signatures позволяю гарантировать следующее:
■ Authentication
■ Data integrity
■ Nonrepudiation

Предположим два устройства 1 и 2 хотят инициировать соединение VPN.
1 и 2 имеют сгенерированные key pairs и обменялись друг с другом своими Public keys.

1 берет пакет и генерирует Хеш, далее шифрует этот хеш используя свой Private Key. И прикрепляет этот зашифрованный хеш к пакету.
Такой зашифрованный хеш и называется Digital Signature.

Теперь 2, который получил пакет. Может расшифровать и получить значение хеша. И сгенерировать свой хеш из полученного пакета. Если оба хеша совпадут, 2 будет знать две вещи:
- Пакет был сгенерирован устройством 1, т.к. хеш мог быть зашифрован только с помощью его Private Key. (это также называется authentication, using digital signatures)
- Пакет никем не был изменён, т.к. хеш совпал.

Очень важно, чтобы оба устройства получили свои key pairs или сертификаты из надёжной Certificate Authority (CA), т.е. CA, которая проверяет тех кому выдаёт сертификаты и которой можно доверять. Сертификат содержит информацию об устройстве, а также информацию об издателе CA.

IPsec VPN Tunnel также может использовать digital signatures для аутентификации, если у обоих устройств есть сертификаты.
Альтернативным способом для аутентификации может служить кодовая фраза.

IPSec

IPSec происходит от IP Security.
IPSec - это совокупность протоколов и адгоритмов, которые используются для защиты IP пакетов на уровне Layer3.
IPSec позволяет гарантировать:
- Confidentiality - с помощью шифрования
- Data integrity - через Hashing и HMAC\
- Authrntication - через использование Digital Signatures или Pre-shared key (PSK).

SSL

SSL может делать тоже самое что и IPSec : шифрование данных, обеспечение целостности, поддержка аутентификации на сервере.
Главное отличие в том, что IPSec не стоит на каждом клиенте, и не каждый клиент имеет установленный Digital Certificate или PSK, необходимые для аутентификации.
И напротив - SSL поддерживается любым браузером на каждом компьютере.

Итак, для того чтобы обратиться к серверу SSL пользователь пишет в строке запрос типа HTTPS.
Браузер просит сервер идентифицировать себя. Сервер высылает браузеру копию своего Digital Certificate.
Браузер определяет доверяет ли он данному серверу или нет: он просматривает есть ли в его БД Digital Signature CA, выпустившего сертификат сервера.
Если доверия нет - как минимум вывалится предупреждение об этом.
Сервер также просит клиента идентифицировать себя - чаще всего это происходит через запрос username/password.

Компоненты VPN

Далее приведём сводную таблицу протоколов:
bezopasnost._nachalo_05._osnovy_kriptografii_i_vpn_01_ciscomaster.ru.jpg

Public Key Infrastructure

Key Pair - это комбинация двух ключей, которые работают друг с другом.
Public Key может быть передан любой другой стороне, а Private Key никому не отдаётся и является секретным.
Если зашифровать данные с помощью Public Key и с использованием Asymmetric Encryption Algorithm, то расшифровать их можно будет только используя Private Key. Обратное также верно.

Asymmetric Encryption также известно как Public key cryptography или Asymmetric key cryptography.

Key и Digital Certificate
У кого физически имеются ключи и Digital Certificates?
Рассмотрим наш пример с двумя машинами 1 и 2 и процесс получения сертификатов:
- Обе машины генерируют свою пару public-private key pair.
- Ключ Public Key отдаётся на сервер CA (Certificate Authority)
- CA забирает Public Key, имена FQDN машин, их IP адреса и создаёт Individual Digital Certificate, плюс делает Digital Sign для сертификата.
- CA отдаёт машинах их сертификаты

Обмен сторонами их Public Keys
Рассмотрим действия машин, которые хотят аутентифицировать друг друга:
- Машины 1 и 2 передают друг другу их Digital Certificates
- Каждая машины проверяет переданный ей сертификат через проверку CA Signature (проверяет на наличие доверия данному CA)
- Поскольку машины обменялись Public Key, теперь они могут аутентифицировать друг друга:

Создание Digital Signature и Authentication
1 берет пакет данных и генерирует Хеш, далее шифрует этот хеш используя свой Private Key. И прикрепляет этот зашифрованный хеш к пакету.
Такой зашифрованный хеш и называется Digital Signature.

Теперь 2, который получил пакет. Может расшифровать и получить значение хеша. И сгенерировать свой хеш из полученного пакета. Если оба хеша совпадут, 2 будет знать две вещи:
- Пакет был сгенерирован устройством 1, т.к. хеш мог быть зашифрован только с помощью его Private Key. (это также называется authentication, using digital signatures)
- Пакет никем не был изменён, т.к. хеш совпал.

Certificate Authorities

Certificate Authority - это машина, которая создаёт Digital Certificates.

Что находится в сертификате:
- IP адрес устройства, FQDN
- Public Key устройства
- серийный номер этого сертификата
- Информация о CA.
- URL где можно посмотреть отозвал ли серт.
Сертификат также подписывается с помощью CA Digital Signature.

Т.е. клиент предварительно всё это отдает на CA, и CA генерирует сертификат.

Можно использовать свою Certificate Authority, или же использовать third-party Certificate Authority, которые чаще всего платные.
Одно из преимуществ third-party Certificate Authority в том, что большинство браузеров доверяют им, поскольку Trusted Public CA осуществляют проверку компаний, заказывающих сертификат.

Root certificate

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

Root Certificate включает в себя Public key CA Server и другие детали об CA Server.
Перечислим основные части сертификата:

  • Serial number - назначается CA Server
  • Issuer - CA, создавший серт.
  • Validity dates - даты валидности серта.
  • Subject of the certificate - включает в себя адрес структурированный в форме X.500 (с элементамиCN, OU, C). Subject Root Certificate есть собственно сам CA, а для identity Certificate это есть клиент.
  • Public Key - собственно открытый ключ
  • Thumbprint algorithm + Thumbprint - это есть хеш сертификата

bezopasnost._nachalo_05._osnovy_kriptografii_i_vpn_02_ciscomaster.ru.jpg

Identity Certificate

Identity Certificate похож на Root Certificate, и разница лишь в том что он описывает определённый хост, например Web server.
Такой сертификат может быть использован сервером для поддержки SSL или маршрутизатором для построения VPN с поддержкой Digital Signatures.

Сертификаты X.500 и X.509v3

X.500 - это серия стандартов, сфокусированная на Directory Services, а также на том как эти Directory организованы. Например MS AD также базируется на стандарте X.500.

Структура X.500 состоит из Common directory elements, например CN - Common name, OU - org unit.
CN= Bob, OU=engineering, O=Cisco.com

X.509v3 - это стандарт Digital Certificates, позволяющий работать с Directory Services.
Например LDAP может использовать сертификат для аутентификации, и далее базируясь на деталях сертификата можно разграничивать доступ на основании групп AD.

Authenticating and Enrolling with the CA

Предположим, мы хотим начать доверять новому CA, а также запросить и получить от этого CA сертификат.
Для этого нам понадобится два шага:

  1. Первое что нужно сделать - это аутентифицировать CA, или другими словами нам нужно начать доверять этому CA.
    К сожалению мы не можем проверить Digital Signature, поскольку у нас нет открытого ключа этого CA, а забрать открытый ключ мы не можем, т.к. не доверяем этому CA.
    В таких случаях используют Out-of-band Method: мы загружаем Root Certificate, находим там Hash и оточнаяем правильность Хеша через телефонный звонок админам этого сервера.

    Также отметим что, такой процедуры не понадобится в случае если мы имеем дело с Well-known CA, поскольку Интернет-браузер уже доверяет этому CA.

  2. После аутентификации мы можем запросить сертификат.
    Наша машина генерирует пару ключей Public-Private и делает запрос на CA.
    При этом в запрос мы включаем только Private Key.
    CA забирает открытый ключ, а также всю необходимую сопутствующую информацию, генерирует сертификат и отправляет его клиенту.
    Сертификат сделанный CA также подписан электронной подписью, поэтому клиент может проверить свой сертификат, используя открытый ключ CA.
    Если всё нормально, клиент теперь может установить сертификат и использовать его.

Public Key Cryptography Standards

PKI использует множество стандартов, которые используют Public Key Cryptography Standards numbers.
Стандарт сам по себе определяет формат файла сертификата, предназначение сертификата, формат запроса, метод шифрования и т.д.

Примеры Public Key Cryptography Standards:
■ PKCS#10: This is a format of a certificate request sent to a CA that wants to receive its
identity certificate. This type of request would include the public key for the entity desiring
a certificate.
■ PKCS#7: This is a format that can be used by a CA as a response to a PKCS#10 request.
The response itself will very likely be the identity certificate (or certificates) that had
been previously requested.
■ PKCS#1: RSA Cryptography Standard.
■ PKCS#12: A format for storing both public and private keys using a symmetric passwordbased
key to “unlock” the data whenever the key needs to be used or accessed.
■ PKCS#3: Diffie-Hellman key exchange.

Simple Certificate Enrollment Protocol

Как мы уже рассматривали, процесс аутентификации сервера CA, генерации key-pair, запрос сертификата и его проверка - не простая цепочка последовательных шагов.
Протокол Simple Certificate Enrollment Protocol (SCEP), был разработан компанией Cisco для облегчения и автоматизации всех этих процессов для установки на свою машину Identity Certificate.
Данный стандарт является проприетарным и поддерживается большинством устройств Cisco.

Revoked Certificates

Предположим, что закрытый ключ устройства "засветился" - в этом случае сертификат должен быть отозван.
Рассмотри механизмы отзыва сертификатов.

  • Certificate revocation list (CRL) - список серийных номеров отозванных сертификатов. Любой клиент может скачать CRL и проверить серийник.
    Доступ к CRL может быть получен через использование LDAP, HTTP или SCEP.
    Минус в том что CRL может быть огромных размеров.
  • Online Certificate Status Protocol (OCSP) - клиент отправляет запрос на статус серта, и получает ответ.
  • Authentication, authorization, and accounting (AAA) - поддерживается Cisco AAA services и являет проприетарным решением.

PKI Topologies

Структура PKI должна отвечать требованиям среды в зависимости от количества клиентов, их расположения, каналов связи и т.д.

Single Root CA - собственно один сервер CA обслуживающий всех клиентов.

Hierarchical CA with Subordinate CAs - с целью поддержки большего количества клиентов, fault tolerance вводится иерархическая структура, состоящая из нескольких CA(hierarchical PKI topology). В корне стоит Root CA, который выдал сертификаты нижестоящим subordinate CAs, которые в свою очередь занимаются выдачей сертов клиентам.

Таблица терминов

bezopasnost._nachalo_05._osnovy_kriptografii_i_vpn_03_ciscomaster.ru.jpg
bezopasnost._nachalo_05._osnovy_kriptografii_i_vpn_04_ciscomaster.ru.jpg

Практика

Практика работы ASA с сертификатами подробно рассмотрена в статье Работа с ASA Anyconnect VPN HUB

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image