Правилно хеширане на паролата
Хакерските крекери станаха изключително ефективни в наши дни, дотолкова, че повечето пароли могат да бъдат взломени за малко време. Дори дългите пароли, подложени на еднократно хеширане, вече не са сигурни.
1. Въведение
Очевидно трябваше да напишем тази статия, защото безбройните услуги, на които се доверяваме с нашите пароли, се отнасят с тях безотговорно. Хакерските крекери станаха изключително ефективни в наши дни, дотолкова, че повечето пароли могат да бъдат взломени за малко време. Дори дългите пароли, които са били хеширани веднъж, вече не са сигурни. Първо ще разгледаме текущото състояние на нещата, след това защо вашата услуга не трябва да е лесна по този въпрос и след това различни начини, по които можете да подобрите съхранението на паролата си.
1.1 Текуща позиция
Както се вижда от скорошни изхвърляния на различни бази данни с пароли, повечето уебсайтове не съхраняват правилно паролите на своите потребители. Съхранението на пароли в ясен текст или с един-единствен алгоритъм за хеширане без сол изглежда съвсем традиционно. Това е безотговорно. Ако наистина искате да си спестите милисекунди изчислително време вместо нормалната защита на вашите потребители, тогава аз лично и открито ще се изкажа срещу вашата услуга.
1.2 Морален ангажимент
Ако съхранявате чужди пароли по някакъв начин, вие носите отговорност за тях. Всеки път, когато някой проникне в базата данни и изложи пароли с ясен текст или слаби хешове, всички засегнати потребители трябва не само да променят паролите си за всяка услуга, за която е използвана разкритата парола, но и да се чудят дали искат да продължат. . Ако не защитите паролите правилно, в даден момент ще почувствате последиците от това. Отделете време, за да генерирате и съхранявате правилно хешове за пароли и ентропия.
2 Подходящи техники за хеширане
Просто хеширане на паролата не е достатъчно. Трябва да го направите правилно. Ето някои методи и насоки.
2.1 Солта е полезна за вас
Солта хеш е метафорично подобна на годна за консумация сол. Също така подправяте хеша си с него. Единствената разлика е, че искаме нещо повече, когато използваме солта в хеша. Солите за пароли са вид ентропия, която прави различни хешове, изчислени с помощта на един и същ алгоритъм от един и същ текст. Това става чрез хеширане на солта заедно с обикновения текст. Само солта не е достатъчна, за да се запази хешът, но с него хешът е по-добър, отколкото без него.
Солта също се използва за увеличаване на сложността във времето на атаките на речника и дъгата. Сега нападателят не само трябва да генерира таблици с потенциални пароли, той трябва да ги генерира с различни стойности на солта. Ето защо е важно да се използва уникална сол (за предпочитане произволен набор от байтове) за всеки хеш: не само за да се гарантира, че потребителските пароли не се сблъскват, ако са еднакви, но и за увеличаване на изчислителната сложност и размер на речник или груба сила. Не повтаряйте солта.
2.2 Функции за получаване на ключове
Любопитното е, че най-добрите функции за хеширане на пароли първоначално са били предназначени да генерират ключове за криптиране от стойности, които не отговарят на ролята на ключ. Тези функции обработват криптографски входните данни и връщат набор от байтове, които могат да се използват като ключ за криптиране. Те също са еднопосочни функции за криптиране, които правят повече обработка, отколкото алгоритмите за хеширане и могат лесно да бъдат конфигурирани за по-голяма сигурност.
2.2.1 PBKDF2
PBKDF2 (Функция за извеждане на ключове, базирана на парола, или Функция за извеждане на ключ, базирана на парола 2) е ключова функция за деривация, разработена от RSA Laboratories, която се използва за извличане на силни ключове, базирани на хеш. Той работи, като прилага псевдослучайна хеш функция (като SHA-256, SHA-512 и т.н.) към низ, в този случай парола, заедно със сол и повтаря този процес много пъти. Този процес може да бъде обобщен от следната диаграма: