Password hashing — foydalanuvchi parolini ochiq matn ko‘rinishida emas, maxsus hash qiymat ko‘rinishida saqlash usuli. Bu usul authentication tizimlarida foydalanuvchi parolini tekshirish va database ichida parolni bevosita ko‘rinmas holatda saqlash uchun ishlatiladi.
Password hashing oddiy hash tushunchasiga yaqin bo‘lsa ham, parollar uchun maxsus ishlab chiqilgan algoritmlar bilan ishlashi kerak. Chunki parollar ko‘pincha qisqa, inson tomonidan tanlanadigan va taxmin qilish mumkin bo‘lgan qiymatlar bo‘ladi.
Vazifasi
Password hashing parolni database’da ochiq saqlamaslik uchun ishlatiladi. Foydalanuvchi parol kiritganda tizim parolning o‘zini emas, uning hash qiymatini tekshiradi.
Password hashing quyidagi vazifalarni bajaradi:
- foydalanuvchi parolini database’da ochiq saqlamaslik;
- login vaqtida parolni tekshirish;
- database leak bo‘lganda parollarni bevosita ko‘rinmas qilish;
- bir xil parollarni turli hash qiymatlarga aylantirish;
- brute force hujumlarini qiyinlashtirish;
- authentication tizimining xavfsizlik qatlamini yaratish.
Masalan, foydalanuvchi paroli 123456 bo‘lsa, database’da aynan 123456 emas, balki shu paroldan hosil qilingan hash qiymat saqlanadi.
Password hashing qanday ishlaydi?
Password hashing jarayoni foydalanuvchi ro‘yxatdan o‘tayotganda va tizimga kirayotganda ishlaydi.
Ro‘yxatdan o‘tish jarayoni:
- foydalanuvchi parol kiritadi;
- tizim parol uchun salt yaratadi;
- parol va salt hashing algoritmiga beriladi;
- hash qiymat hosil bo‘ladi;
- database’da parolning o‘zi emas, hash qiymat saqlanadi.
Login jarayoni:
- foydalanuvchi parol kiritadi;
- tizim shu parolni saqlangan salt bilan qayta hash qiladi;
- yangi hash database’dagi hash bilan solishtiriladi;
- hashlar mos bo‘lsa, parol to‘g‘ri deb hisoblanadi;
- hashlar mos bo‘lmasa, login rad etiladi.
Bu jarayonda tizim parolning asl qiymatini qayta tiklamaydi.
Hash
Hash — ma’lumotdan belgilangan uzunlikdagi qiymat hosil qiluvchi algoritmik natija. Password hashingda hash parolni tekshirish uchun ishlatiladi.
Oddiy hash funksiyalar:
Bular umumiy hash algoritmlari hisoblanadi. Parol saqlashda esa maxsus password hashing algoritmlari ishlatiladi.
Password hashing algoritmlari
Password hashing uchun maxsus algoritmlar parolni hisoblashni ataylab sekinlashtiradi. Bu ko‘p sonli parollarni tezda taxmin qilishni qiyinlashtiradi.
Keng ishlatiladigan password hashing algoritmlari:
Bu algoritmlar oddiy SHA-256 yoki SHA-512’dan farqli ravishda parol saqlash uchun mo‘ljallangan.
bcrypt
bcrypt — parollarni hash qilish uchun ishlatiladigan password hashing algoritmi. U salt bilan ishlaydi va cost factor orqali hisoblash murakkabligini oshiradi.
bcrypt xususiyatlari:
- har bir parol uchun salt ishlatadi;
- sekin hisoblanadi;
- brute force hujumlarini qiyinlashtiradi;
- cost factor orqali sozlanadi;
- ko‘p web ilovalarda ishlatiladi.
bcrypt hash qiymatida odatda algoritm versiyasi, cost qiymati, salt va hash natija birga saqlanadi.
Argon2
Argon2 — zamonaviy password hashing algoritmi. U vaqt va xotira sarfini boshqarish imkoniga ega.
Argon2 asosiy turlari:
- Argon2d;
- Argon2i;
- Argon2id.
Argon2id ko‘p tizimlarda parol hashing uchun mos variant sifatida ishlatiladi. Argon2 memory-hard algoritm hisoblanadi, ya’ni u faqat protsessor vaqtini emas, xotira resursini ham talab qiladi.
PBKDF2
PBKDF2 — Password-Based Key Derivation Function 2. U paroldan kriptografik kalit yoki hashga o‘xshash qiymat hosil qilish uchun ishlatiladi.
PBKDF2 xususiyatlari:
- salt bilan ishlaydi;
- ko‘p iteratsiya bajaradi;
- enterprise va eski tizimlarda uchraydi;
- parol asosida key derivation qilish uchun ishlatiladi.
PBKDF2 password hashing tizimlarida ko‘p yillardan beri ishlatiladigan algoritmlardan biridir.
scrypt
scrypt — password hashing va key derivation uchun ishlatiladigan memory-hard algoritm. U hisoblash bilan birga xotira sarfini ham oshiradi.
scrypt quyidagilar uchun ishlatiladi:
- parol hashing;
- key derivation;
- brute force hujumlarini qiyinlashtirish;
- xotira talab qiladigan security jarayonlar.
Memory-hard algoritmlar maxsus qurilmalar yordamida parollarni tez taxmin qilishni qiyinlashtirishga xizmat qiladi.
Salt
Salt — har bir parolga qo‘shiladigan tasodifiy qiymat. Salt bir xil parollar uchun ham turli hash qiymatlar hosil bo‘lishini ta’minlaydi.
Masalan, ikki foydalanuvchi bir xil parol tanlasa ham, ularning salt qiymatlari farqli bo‘lsa, hash qiymatlari ham farqli bo‘ladi.
Salt quyidagilar uchun kerak:
- bir xil parollarni farqli ko‘rsatish;
- rainbow table hujumlarini qiyinlashtirish;
- har bir foydalanuvchi parolini alohida himoyalash;
- password hashing jarayonini kuchaytirish.
Salt maxfiy bo‘lishi shart emas, lekin har bir parol uchun noyob bo‘lishi kerak.
Pepper
Pepper — password hashing jarayonida ishlatiladigan qo‘shimcha maxfiy qiymat. Salt odatda database’da saqlansa, pepper alohida konfiguratsiya yoki secret manager ichida saqlanishi mumkin.
Pepper quyidagilar bilan bog‘liq:
- application secret;
- qo‘shimcha himoya qatlami;
- database leak xavfini kamaytirish;
- maxfiy konfiguratsiya;
- secret rotation.
Pepper har bir foydalanuvchi uchun alohida bo‘lishi shart emas. U ko‘pincha butun tizim uchun umumiy maxfiy qiymat sifatida ishlatiladi.
Cost factor
Cost factor — password hashing algoritmining qanchalik sekin ishlashini belgilaydigan parametr. Cost qiymati oshsa, hash hisoblash ko‘proq vaqt talab qiladi.
Cost factor quyidagilarga ta’sir qiladi:
- login vaqtida hash tekshirish tezligi;
- brute force hujumining qiyinligi;
- server resurs sarfi;
- algoritm xavfsizlik darajasi.
bcrypt’da cost factor muhim parametr hisoblanadi.
Iteration
Iteration — hashing yoki key derivation jarayonida algoritm necha marta takrorlanishini bildiradi. PBKDF2 kabi algoritmlarda iteration soni xavfsizlik darajasiga ta’sir qiladi.
Iteration ko‘paygan sari:
- hash hisoblash sekinlashadi;
- brute force qiyinlashadi;
- serverga tushadigan yuk ortadi;
- parol tekshirish ko‘proq vaqt oladi.
Iteration parol hashingni oddiy hashdan farqlantiradigan omillardan biridir.
Rainbow table
Rainbow table — oldindan hisoblab qo‘yilgan parollar va ularning hash qiymatlari ro‘yxati. Salt ishlatilmagan yoki noto‘g‘ri ishlatilgan tizimlar rainbow table hujumlariga ko‘proq zaif bo‘ladi.
Rainbow table quyidagilar bilan bog‘liq:
Salt ishlatilganda bir xil parol turli hash qiymatlarga ega bo‘ladi va rainbow table samarasi kamayadi.
Brute force
Brute force — parolni ko‘p urinishlar orqali topishga qaratilgan hujum turi. Hujumchi ehtimoliy parollarni hash qilib, database’dagi hash bilan solishtiradi.
Brute force jarayonida:
- ehtimoliy parollar ro‘yxati olinadi;
- har bir parol hash qilinadi;
- hosil bo‘lgan hash saqlangan hash bilan solishtiriladi;
- mos kelgan qiymat topilsa, parol aniqlanadi.
bcrypt, Argon2, PBKDF2 va scrypt kabi algoritmlar bunday urinishlarni sekinlashtirish uchun ishlatiladi.
Oddiy hash bilan farqi
Password hashing oddiy hash qilishdan farq qiladi. SHA-256 kabi algoritmlar juda tez ishlaydi. Bu fayl yaxlitligini tekshirishda foydali, lekin parollarni himoyalashda muammo bo‘lishi mumkin.
Farqlar:
- oddiy hash tez ishlaydi;
- password hashing sekin ishlashga mo‘ljallangan;
- password hashing salt bilan ishlaydi;
- bcrypt va Argon2 cost parametrlariga ega;
- password hashing brute forcega qarshi kuchliroq;
- oddiy hash password storage uchun yetarli emas.
Masalan, parolni faqat SHA-256 bilan hash qilib saqlash password hashingning to‘liq xavfsiz modeli hisoblanmaydi.
Database’da saqlanishi
Password hashing natijasi database’da saqlanadi. Odatda bitta maydonda algoritm turi, parametrlar, salt va hash natija birga bo‘lishi mumkin.
Saqlanadigan ma’lumotlar:
Parolning asl matni database’da saqlanmaydi.
Authenticationdagi o‘rni
Password hashing authentication tizimining asosiy qismlaridan biridir. Foydalanuvchi login qilganda tizim kiritilgan parolni database’dagi hash orqali tekshiradi.
Authentication jarayonida password hashing:
- parolni bevosita saqlamaslikni ta’minlaydi;
- login tekshiruvini bajaradi;
- database leak holatida xavfni kamaytiradi;
- foydalanuvchi parolini qayta tiklamasdan tekshiradi.
Password hashing parol asosidagi login tizimlarida asosiy xavfsizlik mexanizmlaridan biri hisoblanadi.
Dasturlashdagi o‘rni
Password hashing web ilovalar, mobile ilovalar, admin panellar, SaaS tizimlar va API authentication jarayonlarida ishlatiladi. U foydalanuvchi parollarini database’da ochiq matn ko‘rinishida saqlamaslik uchun kerak.
Password hashing quyidagi tizimlarda uchraydi:
- login va register tizimlari;
- admin panel;
- internet do‘konlar;
- SaaS platformalar;
- banking ilovalari;
- forum va community saytlar;
- API authentication;
- enterprise tizimlar.
Password hashing foydalanuvchi parolini bevosita emas, maxsus algoritm orqali hosil qilingan hash qiymat bilan saqlash va tekshirish usulidir.
Bog‘liq tushunchalar
Hash, Salt, Pepper, bcrypt, Argon2, PBKDF2, scrypt, Authentication, Brute force, Rainbow table, Database, Security