И снова здравствуйте.
Написюкал я тут свой VPN агент, который умеет трафик гонять. Вроде разобрался. Файлы льются, видео крутится, прокси работает, даже lua прикрутил для настроек и реакций на всякие события ... Время подумать о душе безопасности.
Сейчас хочу сделать простую авторизацию по паролю с дальнейшим криптованием трафика. У меня есть ChaCha20, например, с которой я могу ксорить поток (все работает по TCP). Вопрос в том, как инициализировать сам генератор?
Просто паролем - плохо ибо всегда будет одинаковое состояние.
Пока придумал так: сгенерить рандомный блок, смешать его с паролем, сделать из этого sha256, например, и вот этим уже инициализировать chacha. Сам изначальный блок потом отдать другой стороне, чтоб оно тоже смешала его с паролем и инициализировала генератор (для расшифровывания данных с другой стороны). Другая сторона должна будет сделать тоже самое.
Если у обоих сторон один и тот же пароль, то состояния будут одинаковы и обмен будет возможен. Тот, кто пароль не знает, теоретически (это я со своей колокольни так думаю), точную копию состояния не получит.
Есть еще OpenSSL. Может из него что взять для выработки начального состояния и авторизации по паролю?
(Tls какой-нить и сертификаты пока пользовать не хочу, думаю потом можно будет прикрутить).
И где про это все почитать можно? Да и с примерами «на пальцах»?
Спасибо.