/ / Як кожна система чи сервер отримує різну хеш-функцію для зберігання паролів - безпека, шифрування, хеш, паролі

Як кожна система або сервер отримують іншу хеш-функцію для зберігання паролів - безпека, шифрування, хеш, паролі

наскільки я розумію, паролі користувачів повинні зберігатисяяк хеші замість зашифрованого, тому що зловмисник не може вивести пароль із свого хешу, тоді як він може вивести пароль із його шифрування, якщо отримає доступ до ключа шифрування.

Тепер, очевидно, кожна система повинна використовувати іншухеш-функція для хешування її ключів. Моє запитання: як вони створюють ці різні хеш-функції? Вони використовують стандартну функцію хешування та обробляють її великим ключем? Якщо так, чи не зможе зловмисник вивести паролі, якщо він отримав доступ до цього ключа, зробивши його таким же, як шифрування?

Відповіді:

1 для відповіді № 1

Криптографічні хеш-функції завжди відсутніоборотні, це їх призначення. Навіть відсторонені "небезпечні" функції, такі як MD5 та SHA1, не є оборотними, і їм не потрібен ключ. Проблема полягає в тому, що ви можете занадто швидко знайти можливі відповідні паролі за допомогою грубої форсування (більше ніж 10 гіга MD5 / сек)

"Великий ключ", який ви згадали, - це, мабуть, сіль. Ви генеруєте випадкову сіль і використовуєте цю сіль для розрахунку. Безпечно зберігати цю сіль разом із хешем, оскільки її мета - запобігти зловмиснику будувати одну єдину райдужну таблицю та знаходити збіги для всіх паролів одразу. Натомість він повинен створити столик з веселки для кожної солі окремо, що робить ці столи нездійсненними.

Проблема зі швидкістю ви можете подолати лишез ітераціями хеш-функції. Коефіцієнт витрат визначає, скільки разів обчислюється хеш. Рекомендовані алгоритми - BCrypt, PBKDF2 та SCrypt.


0 для відповіді № 2

Тепер, очевидно, кожна система повинна використовувати іншу функцію хешування для хешування своїх ключів

Ні, вони не "т.

Якщо ваш пароль s3cr3t, тоді воно буде мати таке ж хеш-значення в базі даних багатьох серверів, на жаль, це A4D80EAC9AB26A4A2DA04125BC2C096A

Спосіб зробити цю смоктання менше - це генерувати випадковий код за паролем, який називається сіль, так що хеш s3cr3t на сервері 1, ймовірно, буде іншим, ніж хеш s3cr3t на сервері2: hashFunction("s3cr3t" + "perUserSalt")

Використовуйте bcrypt, scrypt або PBKDF2 лише для зберігання паролів.