Как zeromq работает вместе с SSL? - PullRequest
18 голосов
/ 22 марта 2011

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

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

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

Есть идеи?

Ответы [ 3 ]

6 голосов
/ 07 ноября 2013

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

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

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

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

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

4 голосов
/ 25 ноября 2011

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

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

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

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

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

3 голосов
/ 23 марта 2011

Согласно zeromq.org, пока не поддерживается , но они изучают его. Похоже, что он предложен в качестве проекта для Google Summer of Code .

...