Для TCP соединения - авторизация и шифрование не делаются. Они работают поверх TCP - например, SSL.
Я советую смотреть в сторону SSh - как там это сделано. Уверен, что в SSh уже сделано всё, что Вам хочется; а также то, что Вам пока что не хочется, но потребуется/будет полезно.
Поищите на Хабре статьи про SSh. Сначала смотрите на функциональность - что он может. Потом - копайте, как это делается.
Ещё одно направление поиска - PuTTY. Это тот же SSh, просто под Windows. Возможно, там доки лучше зайдут.
SSh - продукт открытый, код можно тянуть свободно.
Хорошее решение - запихнуть Вашу TCP-сессию в SSh-туннель, который сделает и шифрование, и авторизацию.