Russian Qt Forum

Qt => Работа с сетью => Тема начата: onlik от Февраль 07, 2009, 17:47



Название: Безопасное общение между клиентом и сервером
Отправлено: onlik от Февраль 07, 2009, 17:47
Есть два сервера TCP и UDP, нужно шифровать все пакеты и датаграммы, которые идут на эти сервера. Как я себе это думаю:
1. Клиент делает запрос серверу
2. Сервер отправляет открытый ключ
3. Клиент отправляет тот же открытый ключ серверу
4. Сервер отправляет сообщение, что все ок и устанавливает соединение
5. Клиент начинает отправлять шифрованные сообщения серверу
Вопрос 1: может ли быть подмена пунктов 2 и 4, т.е. пользователь получит пакеты не от сервера? Соответсвенно когда пользователь отправит шифрованные данные, их можно будет перехватить и расшифровать.

Вопрос 2: какой алгоритм шифрования выбрать, есть ли у кого реализация в виде маленькой библиотечки, набора функций? Я искал уже готовые алгоритмы, нашел библиотеки QCA, OpenSSL, все довольно громоздкие, мне ж нужно самое простое и что бы работало с двумя протоколами. В QT есть класс QSslSocket, но не понимаю что такое сертификат и как его может генерировать программа (сервер - это не сервер, а клиент, который сможет принимать пакеты на статический порт) и как его прикрутить к UDP.

Буду благодарен за любую помощью.

Спасибо


Название: Re: Безопасное общение между клиентом и сервером
Отправлено: Dendy от Февраль 08, 2009, 00:00
Вам нужен OpenSSL, благо используя Qt всё становится тривиально просто, почитайте документацию к классам. Сертификат нужен для проверки достоверности что это именно тот сервер, к которому вы хотели подключиться. Чтобы не попасться на фишинг. Если вам эта проверка достоверности не нужна, а важно только шифрование - то сертификат можно игнорировать.