Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2016, 09:49   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию Соль

Вопрос по соли

Вот смотрите. Если бы был просто md5 я брал бы хэш от введенной строки и записывал его в таблицу. Далее просто введя строчку, брал от нее хэш и искал совпадение в таблице.

Но соль??

Соль динамическая, то есть длина разная для каждой строки в таблице, скажем от 10 до 20 символов.

Собственно вопрос по самой логике(алгоритму). Код не нужен. Подскажите просто правильно ли мыслю?

Есть таблица логин:пароль:соль

При записи я беру нашу введенную строку, обычную , не хэш, скажем "123"+соль, которая была случайно сгенерирована, то есть на вход функции для взятия хэша я дам что то в виде "123J9d!0F" вот такой строки и возьму от нее уже хэш и запишу в таблицу.

Теперь в таблице у меня будет скажем admin;тут_хэш_ранее_полученный_;J9d !0F

Теперь при авторизации, я беру наш логин, ищу его в таблице, далее беру у этого логина, в его строке, соль нашу "J9d!0F". К нашей ранее введеной строке я прибавляю соль "J9d!0F" и беру от полученной в результате сложения строки - хэш и сравниваю его в строке с нашим логином что он совпадает или нет. Все ))

Верно думаю или это неверно?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 20.10.2016, 09:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да, по моему мнению, вы думаете верно.

А что Вас смущает?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.10.2016, 10:21   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

получается соль храниться в открытом виде, верно же?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 20.10.2016, 10:43   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
получается соль храниться в открытом виде, верно же?
нет.
Во-первых, она в открытом виде только для Вас.
внешний пользователь доступа к вашей БД не имеет.

Во-вторых, главная функция соли - это борьба с "радужными" таблицами.
если не слышали, что это, кратенько поясню.
хеш - это односторонняя функция, из пароля 1234 получить md5 81dc9bdb52d04dc20036dbd8313ed055 легко,
но получить из этого хеша исходную строку невозможно.
НО! Хитрые люди (а ля кулхацкеры) взяли и составили большую-пребольшую табличку
для всех возможных сочетаний символов определённой (достаточно небольшой) длины.
и вот в этой таблице есть хеш 81dc9bdb52d04dc20036dbd8313ed055
и по нему можно легко получить исходную строку 1234
Но, если вы к строке 1234 (которая злоумышленнику неизвестна) добавите известную ему соль
(ну, допустим, ту же J9d!0F), то получите исходную строку длиной 10 (длина пароля + длина соли)
и хэш от этой строки: fd3cd507d4cade1ac9f2c16a11ff1bd4
а вот вероятность того, что это хэш найдётся в радужной таблице намного меньше (чем случайнее и длинее соль, тем вероятность ближе к нулю)
Вот для этого соль и нужна.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.10.2016, 11:00   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вот вероятность того, что это хэш найдётся в радужной таблице намного меньше
Найдется где? Придется ж новую таблицу генерировать для каждой соли
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.10.2016, 11:34   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Найдется где? Придется ж новую таблицу генерировать для каждой соли
не надо.
Радужная таблица уже сгенерирована для всех вариантов символов, скажем, длиной 8 символов.
если Вы к паролю длиной 4 прибавите соль длиной 4, то получите строку длиной 8, которая априори ЕСТЬ в исходной радужной таблице.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где купить соль большими кусками HellMercenariess Свободное общение 20 15.11.2009 16:40