На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Шифрование по маске...
    Подскажите пожалуйста толковый пример.

    Задача примерно такая : при коннекте клиента к серверу, сервер отправляет маску, по которой клиент должен будет зашифровать логин\пароль и отправить серверу.
    Маска в идеале должна генерится рандомайзом, или как минимум выбираться из списка.

    Я не преследую цель достигнуть максимальной безопастности, просто чтоб нельзя было заснифить. Желательно чтоб алгоритм был не перегружен, так как такая процедура будет повоторяться довольно часто.
    Сообщение отредактировано: APsyL -
      А какого вида маску ты хочешь? Просто пример хоть какой-то приведи.
        Свободно распространяемых реализаций MD5 достаточно много и они существуют практически для всех сред разработки, от ПХП до С++.

        Можешь построить алгоритм идентификации/аутентификации так:

        Клиент К знает свой идентификатор И пароль П -- строки символов произвольной длины.
        Сервер С хранит пары И(i) и П(i) всех своих клиентов.

        1. К -> С Клиент подключается к серверу и выдает запрос на аутентификацию в системе.
        2. Сервер генерирует и запоминает случайную строку Р
        3. С -> К Сервер сообщает клиенту строку Р
        4. К -> С Клиент вычисляет и сообщает серверу Т = MD5(П+Р) (хеш MD5 от строки, полученной конкатенацией пароля П и случайной строки Р) и И (свой идентификатор/логин)
        5. Сервер тоже вычисляет Н = MD5(П(i)+Р), где П(i) -- пароль, хранящийся на сервере и соответствующий переданному клиентом идентификатору И.
        6. С -> К Сервер сравнивает Т и Н. Если они совпадают, то клиент знает пароль, следовательно, аутентифицирован.

        Вместо MD5 можно использовать схему Эль-Гамаля (с возведением в степень по модулю), RSA или другие односторонние функции...
        Сообщение отредактировано: Visitor -
          В твоем случае правильным будет создавать предварительный зайищенный канал для обмена масками и зашифрванными данными. Посмотри алгоритм Diffie-Hellman'а для генерации ключей для создания предварительного защищенного канала (клиенти сервер вырабатывают симетричные ключи, при этом прослушивающая сторона не может узнать их). В поисковиках его можно легко найти и программируется он не сложно.
          Проснифирить это, как и то, что предложил Visitor можно атакой Man-In-The-Middle. Злоумышленник устанавливает с клиентом коннект, выдавая себя за сервера, а с сервером выдает себя за клиента, разумеется трафик должен полностью перехватываться, то есть настоящий клиентский трафик не доходит до сервера.
          Посомтри OpenSSL (www.openssl.org) - том есть реализация DH и MD5, и SSL'а.

          P.S. Если все таки надо, чтобы совсем секьюрно было смотри IKE (протокол установки защищенного соединения, в частности IPSec)
            Цитата Visitor,1.03.04, 12:51
            Свободно распространяемых реализаций MD5 достаточно много и они существуют практически для всех сред разработки, от ПХП до С++.

            Можешь построить алгоритм идентификации/аутентификации так:

            Клиент К знает свой идентификатор И пароль П -- строки символов произвольной длины.
            Сервер С хранит пары И(i) и П(i) всех своих клиентов.

            1. К -> С Клиент подключается к серверу и выдает запрос на аутентификацию в системе.
            2. Сервер генерирует и запоминает случайную строку Р
            3. С -> К Сервер сообщает клиенту строку Р
            4. К -> С Клиент вычисляет и сообщает серверу Т = MD5(П+Р) (хеш MD5 от строки, полученной конкатенацией пароля П и случайной строки Р) и И (свой идентификатор/логин)
            5. Сервер тоже вычисляет Н = MD5(П(i)+Р), где П(i) -- пароль, хранящийся на сервере и соответствующий переданному клиентом идентификатору И.
            6. С -> К Сервер сравнивает Т и Н. Если они совпадают, то клиент знает пароль, следовательно, аутентифицирован.

            Вместо MD5 можно использовать схему Эль-Гамаля (с возведением в степень по модулю), RSA или другие односторонние функции...

            Вот!

            Это как раз что мне и нужно, я что-то подобное думал, но такой вариант подходит мне больше.

            А где можно достать сорс MD5 ?

            Спасибо.
            Сообщение отредактировано: APsyL -
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0296 ]   [ 16 queries used ]   [ Generated: 5.05.24, 23:27 GMT ]