Подтвердить что ты не робот

Как zeromq работает вместе с SSL?

Я считаю, что использовать zeromq в качестве уровня обмена сообщениями между моими приложениями. По крайней мере, в некоторых случаях я хочу, чтобы сообщение было безопасным, и я думаю о SSL.

Есть ли стандартный способ, как ssl-enable zeromq? Насколько я понимаю, это не поддерживает его.

Было бы неплохо, если бы у меня был параметр при подключении к сокету (bool: useSsl):)

Любые идеи?

4b9b3361

Ответ 1

Понимая, что это не является ответом на ваш вопрос, я буду шифровать сообщения напрямую с помощью RSA, прежде чем отправлять их с 0mq.

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

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

Изменить: теперь я знаю больше о шифровании, чем когда писал, RSA не является подходящим выбором для шифрования данных сообщений. Используйте AES либо с ключами для совместного использования вручную (это наш подход на короткий срок), либо реализуем схему обмена ключами, как в ответе Джима Миллера... но будьте осторожны, если вы воспользуетесь последним подходом, надежно создавая и реализуя схему обмена ключами трудно. Путь сложнее, чем вы думаете. Вы можете реализовать SSL/TLS напрямую (используя BIO-сообщения), а другие сделали это, это также не просто, но, по крайней мере, известно, что схема SSL является отраслевым стандартом и поэтому соответствует минимальным требованиям безопасности.

Короче говоря, до криптографии Elliptic Curve, запеченной в ZMQ 4, считается надежным и становится стандартным, "принятым решением" будет внедрение SSL/TLS через соединение вручную, и в противном случае используйте AES 128 или 256 с безопасный механизм обмена ключами (совместное использование ключей - это то, где RSA будет надлежащим образом использоваться).

Ответ 2

В настоящее время мы реализуем решение с предварительным общим ключом с использованием 0mq, которое реализует протокол обмена ключами, основанный на TLS/SSL.

По существу, у нас есть служба агрегатора данных, которая публикует зашифрованные данные о состоянии здоровья через многоадресный 0mq издатель. Симметричный ключ используется (AES128) для шифрования данных и может быть извлечен из второго сервиса, запущенного в качестве более простой модели запроса/ответа за 0 мк.

Чтобы получить симметричный ключ (PSK), мы реализуем следующий протокол: Клиент подключается Сервер отправляет свой сертификат Клиент проверяет сертификат сервера на цепочку доверия CA Клиент отправляет свой сертификат Сервер проверяет сертификат клиента на свою цепочку CA Сервер шифрует PSK с использованием открытого ключа клиента Сервер отправляет зашифрованный PSK клиенту Клиент расшифровывает PSK

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

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