powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Хранение хэша паролей пользователей
12 сообщений из 12, страница 1 из 1
Хранение хэша паролей пользователей
    #38186632
Ivan.Net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.Какой лучше всего хэш алгоритм применять для хранения паролей, SHA2 ?(если мощности сервера хватает, так скажем )
2.Возможно ли взломать хэш на прямую(или это туфта,что кто-там мол прогу написал для взлома MD5 того же и т.е. если засалить хэш то можно не париться что напрямую ламанут)?
или тут один вариант только прогонять через хэшфункцию можно подобрать?
3.если переоприделять метод -
public new (?) GetHashCode()
то что он должен в идеале возращать (string) или (byte[] ) ?
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186664
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sha-1 вполне достаточно. В его пользу еще и то, что MS SQL поддерживает на стороне сервера нативно
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186666
Ivan.Net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79sha-1 вполне достаточно. В его пользу еще и то, что MS SQL поддерживает на стороне сервера нативно
а по варианту 2 ответ имееться?
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186677
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант 2 - это sha-2? ИМХО избыточно.
MD5 - действительно взломан. Про остальные - не слышал.
Идеал у каждого свой, поэтому что возвращать - каждый сам решает для себя. По мне - byte[]
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186681
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan.Net,

1. Для паролей рекомендуется использовать специализированные алгоритмы. Например PBKDF2 или bcrypt. SHA2 тоже неплохой выбор. Для усложнения brute force вломов можно выполнять большое кол-во (1000!) итераций хеширования: hash := SHA2(salt+SHA2(salt+SHA2(salt+pass)))

2. Прямой перебор вполне возможен. Так, например, с помощью современных GPU можно генерировать 4.7 миллиарда хешей ( Our password hashing has no clothes ). К сожалению пользователи нередко используют очень простые пароли и их подбирают с помощью заранее подготовленных словарей хешей. Что касается защиты, то нужно обязательно использовать сложный алгоритм хеширования и использовать salt.

3. GetHashCode() всегда возвращает int и предназначен совсем для другой цели - упорядочивание элементов в коллекции и ускорение их поиска в них.

Советую прочитать серию статей по пароли Троя Ханта - http://www.troyhunt.com/search/label/Passwords
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186690
Ivan.Net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79вариант 2 - это sha-2? ИМХО избыточно.
MD5 - действительно взломан. Про остальные - не слышал.
Идеал у каждого свой, поэтому что возвращать - каждый сам решает для себя. По мне - byte[]
Т.Е. есть выведеная мат формула в которую можно подставить хэш и получить password?
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186698
Ivan.Net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazileIvan.Net,

1. Для паролей рекомендуется использовать специализированные алгоритмы. Например PBKDF2 или bcrypt. SHA2 тоже неплохой выбор. Для усложнения brute force вломов можно выполнять большое кол-во (1000!) итераций хеширования: hash := SHA2(salt+SHA2(salt+SHA2(salt+pass)))

2. Прямой перебор вполне возможен. Так, например, с помощью современных GPU можно генерировать 4.7 миллиарда хешей ( Our password hashing has no clothes ). К сожалению пользователи нередко используют очень простые пароли и их подбирают с помощью заранее подготовленных словарей хешей. Что касается защиты, то нужно обязательно использовать сложный алгоритм хеширования и использовать salt.

3. GetHashCode() всегда возвращает int и предназначен совсем для другой цели - упорядочивание элементов в коллекции и ускорение их поиска в них.

Советую прочитать серию статей по пароли Троя Ханта - http://www.troyhunt.com/search/label/Passwords

1.Какое максимальное время должна по хорошему занимать функция вообще getHashCode()
2.И стоит ли вообще писать public new string GetHashCode() или это не правильно и надо называть по другому
3.Если учесть такую вещь ещё(для усиления безопасности), что система будет работать постоянно и потом появяться
хэш-алгоритмы лучше (или просто захочеться усилить),
т.е. оставить возможность подгрузить другую сборку с каким-то определённым названием класса который
наследует например SHA512Managed(или другой алгоритм)
сделать через позднее связывание
3.1.Для новых пользователей будет GetHashCode вызываться с только что подгруженой dll - ки
3.2.А как решить проблему для старых пользователей?(чтобы сначала хэши в бд прогнать через новую функцию, а
потом и при входе стать прогонять через новую функцию)
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186835
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan.Net1.Какое максимальное время должна по хорошему занимать функция вообще getHashCode()

2.И стоит ли вообще писать public new string GetHashCode() или это не правильно и надо называть по другому

3.Если учесть такую вещь ещё(для усиления безопасности), что система будет работать постоянно и потом появяться
хэш-алгоритмы лучше (или просто захочеться усилить),
т.е. оставить возможность подгрузить другую сборку с каким-то определённым названием класса который
наследует например SHA512Managed(или другой алгоритм)
сделать через позднее связывание
3.1.Для новых пользователей будет GetHashCode вызываться с только что подгруженой dll - ки
3.2.А как решить проблему для старых пользователей?(чтобы сначала хэши в бд прогнать через новую функцию, а
потом и при входе стать прогонять через новую функцию)


1) Кто, кроме вас, об этом может знать?
2) Не трогайте этот метод. Используйте другой.
3) Для того, чтобы не зависеть от конкретной реализации, есть масса технологий (см DI, IoC, ServiceLocator, etc). Для начала, опишите интерфейс и все свои классы с разными хэшами наследуйте от него.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public interface IHashable
{
    byte[] GetHash(byte[] buffer);
}

class MD5Hash: IHashable 
{
    public byte[] GetHash(byte[] buffer) { ... }
}

class SHA1Hash: IHashable 
{
    public byte[] GetHash(byte[] buffer) { ... }
}



а далее в зависимости от пользователя можно использовать различные реализации

Код: c#
1.
2.
3.
4.
5.
IHashable hashEngine = null;
if (OldUser(user))
    hashEngine = new MD5Hash();
else
    hashEngine = new SHA1Hash();
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186899
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan.NetТ.Е. есть выведеная мат формула в которую можно подставить хэш и получить password?
Нет. Криптографический хеш это однонаправленная операция. С математической точки зрения это функция отображающая бесконечное множество значений в конечное. То есть одному значению хеша соответствует "несколько" паролей. Отсюда понятно что невозможно по хешу пароля востановить пароль. Зато можно подобрать другое значения пароля с таким же хешем. Это называется коллизия.

Ivan.Net1.Какое максимальное время должна по хорошему занимать функция вообще getHashCode()
Максимальное ты сам определяешь исходя из системных требований приложения. Главное чтобы это не мешало пользователю приложения, но сильно замедляло процесс подбора потенциальному взломщику.

Ivan.Net2.И стоит ли вообще писать public new string GetHashCode() или это не правильно и надо называть по другому
Ни в коем случае так не делай.

Ivan.Net3.Если учесть такую вещь ещё(для усиления безопасности)
Зависит от приложения. Можно сделать как посоветовал Arm79. Также можно обеспечить одновременное обновление приложения и БД. Или в в новой версии явно поддерживать два вида хешей и как только всё перейдут на новую версию убрать эту поддержку. Всё зависит от того какое у тебя приложение.
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186909
Ivan.Net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazileIvan.NetТ.Е. есть выведеная мат формула в которую можно подставить хэш и получить password?
Нет. Криптографический хеш это однонаправленная операция. С математической точки зрения это функция отображающая бесконечное множество значений в конечное. То есть одному значению хеша соответствует "несколько" паролей. Отсюда понятно что невозможно по хешу пароля востановить пароль. Зато можно подобрать другое значения пароля с таким же хешем. Это называется коллизия.

Ivan.Net1.Какое максимальное время должна по хорошему занимать функция вообще getHashCode()
Максимальное ты сам определяешь исходя из системных требований приложения. Главное чтобы это не мешало пользователю приложения, но сильно замедляло процесс подбора потенциальному взломщику.

Ivan.Net2.И стоит ли вообще писать public new string GetHashCode() или это не правильно и надо называть по другому
Ни в коем случае так не делай.

Ivan.Net3.Если учесть такую вещь ещё(для усиления безопасности)
Зависит от приложения. Можно сделать как посоветовал Arm79. Также можно обеспечить одновременное обновление приложения и БД. Или в в новой версии явно поддерживать два вида хешей и как только всё перейдут на новую версию убрать эту поддержку. Всё зависит от того какое у тебя приложение.



Т.е после вычисления хэша, нужно сходить в базу и спросить есть ли такой хэш?(для исключения коллизии)
И если придёт ответ что да есть(маловероятно конечно), то выдать message что пароль не подходит?
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186912
Ivan.Net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,
Ivan.NetТ.Е. есть выведеная мат формула в которую можно подставить хэш и получить password?

Я имел ввиду как понять что MD5 алгоритм взломали?Что конкретно сделали для взлома? как писал Arm79.
Arm79MD5 - действительно взломан. Про остальные - не слышал.
...
Рейтинг: 0 / 0
Хранение хэша паролей пользователей
    #38186920
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan.NetЯ имел ввиду как понять что MD5 алгоритм взломали? Что конкретно сделали для взлома
Придумали алгоритм быстрого поиска коллизий.
http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Хранение хэша паролей пользователей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]