Знаете какие-нибудь хорошие примеры для базового зашифрованного чата? (GnuTLS?)

#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, поэтому считаю любые предложения предвзятыми)