Допустим, оба -- клиент и сервер знают короткий логин и короткий пароль. Какими пакетами им следует обменяться, чтобы сгенерировать длинный общий секрет, который они будут использовать как ключ например AES для шифрования текущей сессии?
При этом должна обеспечиваться
1. Аутентификация клиента сервером.
2. Аутентификация сервера клиентом.
3. Стойкость перед разными осмысленными атаками, например man-in-the-middle attack (терморектальный криптоанализ исключаем :-)
Лучше всего была бы готовая реализация на С/С++.
(З.Ы. дыры в ссш задолбали, да и не нужна несимметричная криптуха для логина на сервер.)