#sockets #encryption #chat #ssl
#сокеты #шифрование #Чат #ssl
Вопрос:
Я хотел бы написать базовое приложение для чата сокетов, кроме зашифрованного. Вы знаете все эти примеры программирования сокетов, когда вы запускаете сервер и клиент в командной строке, и он отправляет сообщения туда и обратно. Вот так, только с хорошим шифрованием.
Обмен ключами Диффи-Хеллмана, ничего из этого дерьма с центром сертификации и, возможно, немного ECDSA после установления соединения.
GnuTLS поддерживает все это, но собирать воедино фрагменты документации намного сложнее, чем видеть, что что-то уже работает.
PS: Язык не имеет значения, после нескольких недель поиска в Google и не нахождения ничего, кроме фрагментов документации, мне действительно все равно. Это просто должен быть какой-то работающий код.
Спасибо!
Ответ №1:
Python имеет отличную поддержку GnuTLS.
Если вы используете debian / ubuntu, все, что вам нужно сделать, это apt-get install python-gnutls
. В документации приведены примеры для базового зашифрованного клиента / сервера с использованием twisted.
Ответ №2:
Я бы настоятельно рекомендовал использовать библиотеку SSL, такую как OpenSSL. Хорошей отправной точкой может бытьhttp://www.rtfm.com/openssl-examples /. Я нашел это с помощью быстрого Google, но, вероятно, есть много других.
Комментарии:
1. Эй, спасибо за совет, но, согласно документации моего IRCD, GnuTLS работает лучше. wiki.inspircd.org/Modules/ssl_gnutls Возможно, это зависит от конкретной реализации, и, вероятно, в большинстве случаев это не имеет значения. Просто мысль.
2. Вообще не отвечает на вопрос. 1) SSL, 2) OpenSSL, а не GnuTLS.
3. @rachelderp — Я просто думал о простоте использования. SSL хорошо документирован и прост в использовании. Я не имел в виду конкретную реализацию.
4. @Xorlev — TLS — это просто SSL 3.x.
Ответ №3:
Прочитав вопрос, я могу понять, что вы плохо разбираетесь в базовой технологии. Если вам нужны примеры, вы можете проверить примеры gnutls по адресу:http://www.gnu.org/software/gnutls/manual/html_node/Client-examples.html#Client-examples Но для вас было бы лучше прочитать все руководство, чтобы понять, что происходит на самом деле, и как Диффи Хеллман и ECDSA вступают в игру. (ECDSA — это алгоритм подписи, используемый для подписи сертификатов). Если вы хотите вообще избежать сертификатов, GnuTLS поддерживает ciphersuites, которые вообще не требуют сертификатов (проверьте аутентификацию SRP и PSK).
(кстати. Я один из авторов GnuTLS, поэтому считаю любые предложения предвзятыми)