Шифрование OpenVPN. Выбор метода шифрования для OpenVPN Такие конфигурации обычно должны иметь строку

> > Не производный, а случайный ключ, который генерируется прямо во время
> > сеанса. Асимметричное шифрование излишне ресурсоёмкое, поэтому данные
> > сеанса им не шифруются. Им шифруется только стадия обмена сеансовым
> > ключом симметричного шифрования. Дальнейшее шифрование сеанса
> > происходит без участия ключей ассиметричного шифрования.
>
> Я так понял, что при коннекте клиента к openvpn, с использованием x.509
> происходит:
>
> 1. "Использование" "tls-auth ta.key" для "для предотвращения DoS-атак и
> UDP port flooding", который хранится и на сервере и у клиента. (как
> используется? Алгоритм пока непонятен.)
> 2. Авторизация по x.509 (ключи х.509 никак не используются для шифрации
> трафика). Клиент проверяет, что его сертификат и серт клиента подписанны
> одним СА, и то что сертификата клиента нет в списке отозванных (при
> опции --crl-verify).
> 3. Пересылка клиенту производного от закрытого dh dh2048.pem (который,
> в отличие от ta.key хранится только на сервере) открытого ключа который
> используется для ассимитричного(!) шифрования, для пересылки сессионного
> ключа.
> 4. Генерация произвольного сессионного симметричного ключа сервером
> (видимо сервером, ведь клиент не обязан иметь библиотеку openssl ?)


Обязан.

> и пересылка его клиенту.
>
> Это правильное понимание?

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

Далее. Как именно в OpenVPN используется DH, я тоже сходу не скажу, но он в
принципе не используется для шифрования. Не может. Он используется для
выработки общего ключа обеими сторонами без собственно пересылки оного ключа.
В принципе, потом этот общий ключ можно использовать для пересылки "рабочего"
ключа (так происходит в S/MIME, если пользоваться алгоритмами ГОСТ - там как
раз подобная схема), а можно - для раздельной выработки рабочих ключей на
обеих сторонах (так происходит в TLS). Насколько я себе представляю, вариант
с пересылкой рабочего ключа с "честным" DH нигде не используется. В S/MIME с
ГОСТ он используется из тех соображений, что прямого аналога RSA у нас нет, а
существующие приложения по-другому просто не умеют. Поэтому приходится
мудрить с эфемерным ключом и шифрованием рабочего ключа на парном.

> > OpenVPN пользуется именно библиотекой OpenSSL. Я думаю документацию
> > нужно рыть там.
>
> Кто-нибудь может посоветовать краткую, но глубокую доку (rus/eng) из
> серии "как это работает" (а не "что надо сделать, чтобы заработало") ?

Для начала надо брать описание протокола OpenVPN. Это нестандартная хрень,
поэтому искать надо в его доке. Там, где он будет отсылать к TLS - брать RFC
на TLS:-) Ну, дальше по вкусу, вплоть до "Прикладной криптографии".

--
Artem Chuprina
RFC2822: Jabber.

Довольно часто встречается ситуация, когда в организации уже настроена и функционирует виртуальная сеть OpenVPN с шифрованием по алгоритму RSA, причем клиенты рассредоточены в лучшем случае в пределах одного города. Рано или поздно возникает необходимость шифровать канал по ГОСТу.

В этой статье Вы сможете узнать о том, как осуществить полный переход на криптоалгоритмы ГОСТ в рамках OpenVPN не выходя из офиса. Все примеры берутся на основе операционной системы Debian, однако алгоритм и нюансы одинаковы для всех поддерживаемых нами ОС, отличаются только команды.

Миграция серверной части.

  1. Установить средство криптографической защиты информации «МагПро КриптоПакет» в исполнении «OpenVPN-ГОСТ».
  2. Создать файл инициализации программного ДСЧ, для этого запустить
    sudo -H /opt/cryptopack3/bin/mkseed -r
    и следовать указаниям программы.

    После выполнения первых двух пунктов будет установлен полный набор ПО, необходимого для работы OpenVPN с алгоритмами ГОСТ. При этом уже настроенный канал с шифрованием по RSA продолжит работать.

  3. В каталоге /etc/openvpn-gost/ создать конфигурационный файл openvpn-gost.conf , в котором будет описано создание дополнительного канала с шифрованием по ГОСТ. За основу можно взять устанавливаемый в этот же каталог файл server.conf.sample (вполне вероятно, что в нем не понадобится ничего изменять).
  4. Сгенерировать необходимые ключи и сертификаты для запуска сервера (сделать это можно с помощью набора скриптов easy-gost, который входит в состав поставки, и указать к ним правильный путь в конфигурационном файле.
  5. Запустить OpenVPN-ГОСТ
    sudo -H /etc/init.d/openvpn-gost start

Миграция клиентов

Далее необходимо перевести клиентов на использование «OpenVPN-ГОСТ». Удобного для всех способа замены комплекта пользователя не существует, однако в общем случае этот процесс может выглядеть так:
  1. Подготовка дистрибутива пользователя (например, написание корректного конфигурационного файла, который обеспечит требуемую функциональность)
  2. Размещение данного дистрибутива на внутреннем файловом сервере организации
  3. Оповещение пользователей о том, что необходимо скачать и установить новую версию ПО

В идеальном случае закрытые ключи клиентов и запросы на сертификаты должны генерироваться на стороне пользователя при помощи предоставленного СКЗИ, после чего запрос на сертификат должен передаваться в УЦ (в роли УЦ может выступать серверный комплект СКЗИ «МагПро КриптоПакет»).
Однако при использовании ПО внутри организации зачастую практикуется централизованная генерация клиентского комплекта (включающего в себя в том числе закрытые ключи). Стоит понимать, что при передаче закрытых ключей следует удовлетворить требованиям Правил эксплуатации СКЗИ и ПКЗ-2005 , в частности передавая ключи по защищенному каналу связи.

Также пользователей полезно снабдить инструкцией. Для ОС Windows в общем виде она будет следующей:

  1. Скачать дистрибутив "OpenVPN-ГОСТ" по ссылке <ссылка>
  2. Удалить старую версию OpenVPN с помощью стандартных средств системы
  3. Установить новую версию, используя загруженный с файл-сервера дистрибутив
  4. Поместить <следующие файлы> (например, ключи и сертификаты) в каталог <каталог>
  5. Запустить "OpenVPN-ГОСТ", используя иконку на рабочем столе

Разумеется, миграция клиентов займет некоторое время, в зависимости от скорости реагирования пользователей.

В целом же, данный способ наиболее удобен и позволяет произвести перевод пользователей на новую версию OpenVPN-ГОСТ не выходя из офиса.

Шифрование OpenVPN

OpenVPN — программное решение с открытым исходным кодом, предназначенное для реализации виртуальных частных сетей — безопасных зашифрованных туннелей передачи информации через «опасную» сеть — интернет.

Для шифрования данных OpenVPN использует библиотеку OpenSSL. Это набор готовых криптографических решений с возможностью создания ключей шифрования и работы с сертификатами. Библиотека имеет открытый исходный код и совместима со многими операционными системами.

При установке защищенных соединений доступно использование двух методов шифрования OpenVPN — симметричного и асимметричного. Разница между ними заключается в создании и использовании ключей шифрования и дешифрования.

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

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