На роботі у нас є дві конкуруючі теорії солей. Продукти, над якими я працюю, використовують щось, наприклад, ім’я користувача або номер телефону для соління хешу. По суті, це щось, що відрізняється для кожного користувача, але воно нам доступне. Інший продукт випадковим чином генерує сіль для кожного користувача та змінюється щоразу, коли користувач змінює пароль. Потім сіль шифрується в базі даних.
Моє запитання, чи дійсно потрібен другий підхід? Я можу зрозуміти з чисто теоретичної точки зору, що це більш безпечно, ніж перший підхід, але що з точки зору практичності. Зараз для аутентифікації користувача сіль потрібно розшифрувати та застосувати до інформації для входу.
Після роздумів про це я просто не бачу справжнього підвищення безпеки від такого підходу. Зміна солі з акаунта на рахунок, все ще робить надзвичайно важким для когось спробу жорстокого застосування алгоритму хешування, навіть якщо зловмисник знав, як швидко визначити, що це за кожен рахунок. Це відбувається з припущенням, що паролі достатньо надійні. (Очевидно, що знайти правильний хеш для набору паролів, де вони всі дві цифри, значно простіше, ніж знайти правильний хеш паролів, який становить 8 цифр). Чи я неправильна у своїй логіці, чи є щось, чого мені не вистачає?
РЕДАКЦІЯ: Гаразд, ось ось причина, чому я думаю, що насправді суперечить шифрувати сіль. (леме знаю, чи я на правильному шляху).
Для наступного пояснення ми припустимо, що паролі завжди мають 8 символів, а сіль - 5, а всі паролі складаються з малих літер (це просто полегшує математику).
Наявність різної солі для кожного запису означає, що я не можу використовувати ту саму таблицю веселки (насправді технічно я міг би, якби мав достатній розмір, але давайте ігнорувати це на даний момент). Це справжній ключ до солі від того, що я розумію, тому що для того, щоб зламати кожен рахунок, я повинен винаходити колесо, так би мовити для кожного. Тепер, якщо я знаю, як застосувати правильну сіль до пароля, щоб генерувати хеш, я б це зробив, оскільки сіль насправді просто збільшує довжину / складність хеш-фрази. Таким чином, я б скоротив кількість можливих комбінацій, які мені потрібно створити, щоб "знати", у мене є пароль + сіль від 13 ^ 26 до 8 ^ 26, тому що я знаю, що таке сіль. Тепер це полегшує, але все-таки дуже важко.
Тож на шифрування солі. Якщо я знаю, що сіль зашифрована, я б не спробував розшифрувати (якщо припустити, що знаю, що у неї достатній рівень шифрування) її спершу. Я б ігнорував це. Замість того, щоб намагатися розібрати, як розшифрувати, повернувшись до попереднього прикладу, я просто створив би більшу таблицю веселки, що містить усі клавіші для 13 ^ 26. Незнання солі, безумовно, сповільнить мене, але я не думаю, що це додасть монументальної задачі спершу спробувати зламати шифрування солі. Тому я не думаю, що цього варто. Думки?
Ось посилання, що описує, як довго триматимуться паролі під жорстокою атакою: http://www.lockdown.co.uk/?pg=combi