SHA-2 за съхранение на пароли в MySQL база данни?

Имам няколко въпроса относно съхраняването/извличането на пароли с MySQL / Visual Studio 2010 (VSTO Visual Basic). Дано са прави напред!

SHA-2 ВЪПРОС

Създавам таблица с помощта на MySQL (чрез интерфейса PHPMyAdmin), за да съхранявам само две колони: потребителско име и парола. След като прочетох SO и куп други ресурси, изглежда, че съхраняването на паролата с помощта на SHA-2 криптиране и осоляване е жизнеспособна опция. Дали това е правилно?

ВЪПРОС ЗА VISUAL STUDIO 2010

Създавам VSTO проект във Visual Studio 2010 и ще имам достъп до данните в таблицата с помощта на Visual Basic - как мога да кодирам въведена от потребителя парола с алгоритъма SHA-2? Изглежда не мога да намеря "текущи" ръководства за този процес. Предполагам, че трябва да изтегля/инсталирам разширение, което може да обработва алгоритъма SHA-2 във VS2010. Процесът тук е, че имам „система за влизане“, изградена в Excel, но искам да проверя комбинацията потребителско име/парола, като я сравня с вече съществуващите данни в MySQL таблицата.

СОЛЕН ВЪПРОС

Освен това Salting е СИЛНО препоръчително практически навсякъде, където чета, така че реших да използвам произволен низ като 's@w0s9w%$x" или нещо подобно и очевидно съхранявам това/използвам го всеки път, когато трябва да кодирам + съпоставям парола с база данни. Това достатъчно сигурно ли е? Как бихте използвали различна солна дума за всеки потребител, но да следите това? Бихте ли просто запазили комбинацията потребителско име/солна дума в друга таблица и да я извлечете по-късно?

РЕДАКТИРАНЕ: Добавена е още информация!


person Chronix3    schedule 20.06.2013    source източник


Отговори (1)


Не се опитвайте да създадете своя собствена схема за хеширане на пароли. Вместо това използвайте добре познат. Обикновено има три опции: Bcrypt, Scrypt и PBKDF2. Те са проектирани от професионалисти по сигурността и съществуват от дълго време и не са разбивани. Реализациите са налични за много езици.

Що се отнася до въпроса за осоляването, имате правилна основна идея. Обикновено солта се съхранява с паролата в базата данни. Солта не се смята за тайна, но трябва да е уникална за всеки потребител. Хешовете на Bcrypt вече съдържат солта в себе си, така че не е нужно да се притеснявате за това.

Свързан отговор в security.se: https://security.stackexchange.com/a/6415/20774

Хубава статия по темата за хеширането на пароли: http://crackstation.net/hashing-security.htm

person 1615903    schedule 20.06.2013
comment
Предложените алгоритми са добър избор, защото са бавни (има фактор на разходите). Еднократно преминаване на SHA-* е твърде бързо и следователно може да бъде грубо форсирано твърде лесно. - person martinstoeckli; 20.06.2013