Ламерский вопрос по безопасности сессий

Фанат

oncle terrible
Команда форума
Кром
да ну?
а теперь скажи мне, какой в этом смысл?
вот чем хеширование пароля на клиенте лучше хеширования на сервере.
Умоляю тебя объяснить!
 

Кром

Новичок
Обьясняю.
Это лучше тем, что при хешировании на сервере, пароль по сети передается в открытом виде.
При хешировании на клиенте пароль передается в виде хеша. Соответственно его перехват не представляет для злоумышленника никакого интереса.
Я думаю эти вещи ты и сам прекрасно знаешь. Что тут еще обьяснять?
 

Фанат

oncle terrible
Команда форума
как это - не представляет????
он перехватывает хэш и посылает его от своего имени!

Очень жаль, что ты, столько времени читая темы про хэширование, так и не понял смысла, а лишь заучил пару слов.

Будь добр - проследи логическую цепочку полностью.
Если будут затруднения - обращайся за помощью.
 

Кром

Новичок
Да, необходимое дополнение. При авторизации пользователя сам хеш по сети уже не передается. Это происходит только в первый раз. В дальнейшем используется алгоритм описанный в статье, ссылка на которую приведена выше.

Еще вопросы?
 

Фанат

oncle terrible
Команда форума
ты правда такой смешной?
кто мешает хакеру отправить запрос на авторизацию, получить все ключи, "описанные выше", и включить в процесс не пароль, а готовый хэш от пароля?
 

Кром

Новичок
>получить все ключи, "описанные выше", и включить в процесс не пароль, а готовый хэш от пароля?

В этом случае, да. Твоя взяла.
Но я в любом случае не планирую предавать открытый пароль при авторизации во первых потому, что, хеш от пароля все таки может остановить достаточно большое количество "хакеров".
Во вторых самого пароля хакер все равно не узнает. И это самый важный момент. Учитывая, что пароль к различным системам у пользователя может совпадать, хакер сможет получить доступ только к конкретной системе.
 

Фанат

oncle terrible
Команда форума
Ну слава богу.
планировать ты можешь все, что угодно - хоть Клавдию Шиффер.
Это не в моей компетенции.
Главное, чтобы нелогичных вещей не писал :)
 

HEm

Сетевой бобер
Фанат
оффтопик: а почему Клаву а не Королеву? ;)
 

valyala

Новичок
Почему это не подойдет при регистрации? Хеширование прекрасно подходит.
Расскажи, как с помощью хэширования передать пароль на сервер, чтобы его по дороге не перехватили. А не то мой деревянный ум никак не может до этого додуматься.
 

Фанат

oncle terrible
Команда форума
valyala
уже проехали эту тему. товарищ признал, что неправ :)
внимательность когда тренировать начнем? :)
 

Merk

Guest
Автор оригинала: Фанат
сформулируй внятно, что ты боишься, что перехватят и в какой момент.
Если еще не разобрался.
Перехвата пароля во время пересылки ПОСТом. Но, в принципе, если пропускать его через md5 предварительно и в базе хранить не пароли, а их md5 суммы, то вроде нормально получается. В этом случае, даже если базу сопрут - никто ни до чего не докопается. На данный момент так и сделал.

-~{}~ 05.03.04 18:55:

Автор оригинала: valyala
Объясни, зачем шифровать случайный uid? Энтропия uid'а от этого не увеличится. А если еще будешь использовать хэширование вместо обратимого шифрования, то энтропия может уменьшиться из-за возможных коллизий хэш-функции.
Да ладно, это ты уже слишком в дебри полез, никто не будет проверять такую вот строку "jfJHenkcjkhe543kjdfdsvjKJHlhfs4dsfv" на уровень энтропии в оной :) А делаю я это на всякий случай. Так...чтобы жизнь медом не казалась.
 

lucas

Guest
А делаю я это на всякий случай.
Один товарищ в этом форуме "на всякий случай" применял функцию md5 к строке несколько (десятков) раз, утверждая, что повышает ее криптостойкость и энтропию. :) :) :)
 

Merk

Guest
Я тут подумал, а что если сделать так md5(uniqid(random()))
посчитаешь энтропию? :)
 

valyala

Новичок
тут подумал, а что если сделать так md5(uniqid(random()))
посчитаешь энтропию?
Считаем вместе. Во-первых, где ты в РНР нашел функцию random()? Предположим, что имелась ввиду функция rand(), которая генерирует псевдослучайное число из равномерно распределенного множества целых чисел. Для простоты вычислений предположим, что мощность (количество элементов) этого множества равна N = 2^32 = 4294967296 и функция rand() генерирует равномерно распределенную последовательность истинно случайных чисел. Энтропия такого генератора равна H1 = log(N) = log(2^32) = 32 бит. На самом деле энтропия всех детерменированных генераторов псевдослучайных чисел заведомо меньше энтропии генераторов равномерно распределенной случайной последовательности (например, аппаратных) и неуклонно стремится к нулю при увеличении длины генерируемой последовательности.
Далее ты предлагаешь воспользоваться функцией uniqid(), которая возвращает 13-разрядное hex число, основанное на текущем времени с точностью до микросекунд. Для простоты вычислений также предположим, что все 13-разрядные hex-числа имеют равную вероятность появления (что, конечно же, совсем не так). Тогда ее энтропия равна H2 = log(16^13) = 52 бит, а энтропия функции uniqid(rand()) равна H3 = H1 + H2 = 32 + 52 = 84 бит. Это выражение справедливо только в том случае, если значения, возвращаемые функциями uniqid() и rand(), некоррелированны (что, тоже, не совсем так).
Ну, и наконец, ты воспользовался 128-битной хэш-функцией md5(). Она полностью детерменированна и необратима, поэтому может только уменьшить энтропию передаваемого ей аргумента.
Итого - в идеальном случае энтропия предложенного генератора равна 84 бит. На самом деле она намного ниже вследствие сделанных выше допущений.
 
Сверху