butteff
@butteff
Раз в тысячу лет заправляю свитер в носки

Как безопасно передать openvpn ключи от сервера клиенту, что будет если ключи словят?

По всем мануалам, что я смог нагуглить, ключи генерируются на сервере, что для клиента, что для сервера. Затем передаются.
И тут встает ряд вопросов, т.к. я малокомпетентен:

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

2. Если, предположим, ключи поймали, то они смогут трафик собрать и расшифровать, верно? Ведь в этом случае, обменявшись ключами с сервером, смогут узнать ключ, которым шифруют (в случае с диффи-хэлманом). Или ключи нужны только для подключения, мол схватив ключи смогут подключиться, но не смогут прослушать трафик и он будет зашифрован?
  • Вопрос задан
  • 1932 просмотра
Решения вопроса 1
@ComodoHacker
Полагаю, среди всех нагугленных мануалов вы не обошли вниманием и официальный, а именно раздел про генерацию сертификатов: https://openvpn.net/index.php/open-source/document... В конце этого раздела есть ответ на ваш первый вопрос.

The final step in the key generation process is to copy all files to the machines which need them, taking care to copy secret files over a secure channel.

Now wait, you may say. Shouldn't it be possible to set up the PKI without a pre-existing secure channel?

The answer is ostensibly yes. In the example above, for the sake of brevity, we generated all private keys in the same place. With a bit more effort, we could have done this differently. For example, instead of generating the client certificate and keys on the server, we could have had the client generate its own private key locally, and then submit a Certificate Signing Request (CSR) to the key-signing machine. In turn, the key-signing machine could have processed the CSR and returned a signed certificate to the client. This could have been done without ever requiring that a secret .key file leave the hard drive of the machine on which it was generated.


Как верно заметил res2001, для исключения перехвата по незащищенному каналу нужно передавать не приватный ключ, а запрос на сертификат. В скриптах build-key и build-key-server, входящих в поставку OpenVPN и используемых в примерах, шаги по генерации пары ключей, генерации запроса к CA и подписи сертификата объединены, но их можно разделить. Загляните внутрь скриптов и поймете.

Что касается второго вопроса. Если в руки злоумышленника попадет клиентский сертификат с приватным ключом, то он сможет подключиться к серверу от имени клиента. Ключ для шифрования трафика генерируется свой для каждой сессии. Вашу сессию злоумышленник сможет прослушать, если перехватит ваш трафик в момент подключения и применит MitM атаку.

Это все отностися к работе в режиме PKI. Есть еще режим работы со статическим ключом (описан здесь: https://openvpn.net/index.php/open-source/document..., там ключ один единственный и общий, передавай как хочешь. А если ключ утек - считай все пропало, можно расшифровывать любые сессии, в том числе записанные ранее.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg Куратор тега Компьютерные сети
Любые ответы на любые вопросы
Через ssh ключи передайте и все.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Правильно как раз ключи генерировать на клиенте, в центр сертификации передается запрос на сертификат, ЦС возвращает сертификат, клиент передает сертификат на сервер. ЦС и сервер в общем случае это разные сущности, и, если по взрослому, это даже разные организации.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Регистрация пользователя на сайте (двухфакторная, SSL/TLS) - по клику из почты сохраняем токен на клиенте.
2. После захода пользователя по токену и попытке скачать сертификат - шифруем файл на сервере с помощью токена и парольного хеша.
3. На клиенте расшифровываем токеном и парольным хешем, который формируем после того, как пользователь введёт пароль.

Таким образом, двухфакторная регистрация (сайт+почта, всё через SSL/TLS) и никогда не пересылаемый клиентский токен, позволяют максимально обезопасить сертификат от MiTM-атаки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы