LINUX.ORG.RU

Алгоритм авторизации по паролю.

 , , ,


0

4

И снова здравствуйте.

Написюкал я тут свой VPN агент, который умеет трафик гонять. Вроде разобрался. Файлы льются, видео крутится, прокси работает, даже lua прикрутил для настроек и реакций на всякие события ... Время подумать о душе безопасности.

Сейчас хочу сделать простую авторизацию по паролю с дальнейшим криптованием трафика. У меня есть ChaCha20, например, с которой я могу ксорить поток (все работает по TCP). Вопрос в том, как инициализировать сам генератор?

Просто паролем - плохо ибо всегда будет одинаковое состояние.

Пока придумал так: сгенерить рандомный блок, смешать его с паролем, сделать из этого sha256, например, и вот этим уже инициализировать chacha. Сам изначальный блок потом отдать другой стороне, чтоб оно тоже смешала его с паролем и инициализировала генератор (для расшифровывания данных с другой стороны). Другая сторона должна будет сделать тоже самое.

Если у обоих сторон один и тот же пароль, то состояния будут одинаковы и обмен будет возможен. Тот, кто пароль не знает, теоретически (это я со своей колокольни так думаю), точную копию состояния не получит.

Есть еще OpenSSL. Может из него что взять для выработки начального состояния и авторизации по паролю?

(Tls какой-нить и сертификаты пока пользовать не хочу, думаю потом можно будет прикрутить).

И где про это все почитать можно? Да и с примерами «на пальцах»?

Спасибо.

Если tls не брать - или придётся как прочитать о всех усовершенствованиях, которые с годами вносились в tls для устранения дефектов, или иметь все эти известные дефекты в своём протоколе не исправленными.

Первое что приходит в голову - возможность атаки на получателя, поскольку он никак не проверяет валидность сервера: атакующий может слать этот блок всегда одинаковым, и таким образом гарантировать что получатель всегда будет инициализировать ChaCha одними и теми же данными. Таким образом, если атакующий переберёт пошлёт все возможные комбинации из 3-х байт - то получатель гарантированно интерпретирует хотя бы одну из них как «LOR».

GPFault ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.