Bosh sahifa Wiki PBKDF2

PBKDF2

PBKDF2 — Password-Based Key Derivation Function 2 nomli, paroldan kriptografik kalit yoki saqlanadigan tekshiruv qiymati hosil qiluvchi standart funksiya. U PKCS #5 va RFC 8018da tavsiflangan. PBKDF2 pseudorandom function, odatda HMAC, tasodifiy salt va ko‘p iteratsiya yordamida har bir parol taxminini qimmatlashtiradi. U oddiy SHA-256ga qaraganda offline brute-force hujumini sekinlashtiradi, ammo memory-hard emas.

Kirish parametrlari

PBKDF2 quyidagi asosiy qiymatlarni oladi:

  • parol — byte satrga aniq encoding bilan aylantiriladi;
  • salt — har yozuv uchun noyob tasodifiy qiymat;
  • iteration count — PRF necha marta bajarilishini belgilaydi;
  • PRF — masalan, HMAC-SHA-256;
  • derived key length — kerakli chiqish uzunligi.

Natija bir yoki bir nechta blokdan tuziladi. Har blokda HMAC natijalari ketma-ket hisoblanib, XOR orqali birlashtiriladi. Iteratsiyalar o‘zaro ketma-ket bog‘liq bo‘lgani sabab bitta parol taxminini to‘liq bajarish vaqt oladi. Biroq turli parol taxminlari GPU va maxsus apparatda parallel tekshirilishi mumkin.

Salt va iteratsiya

Salt secret emas. U bir xil parol ishlatgan ikki foydalanuvchining derived keyi turlicha bo‘lishini ta’minlaydi va oldindan hisoblangan rainbow table’ni har salt uchun qayta qurishga majbur qiladi. Amalda kamida 128 bitlik kriptografik tasodifiy salt ishlatiladi va hash yozuvi bilan birga saqlanadi.

Iteration count ishlab chiqarish serverida benchmark qilinadi. Maqsad normal login uchun qabul qilinadigan, ammo ommaviy taxmin uchun qimmat vaqtni tanlashdir. Juda past qiymat hujumchini yetarli sekinlashtirmaydi; juda yuqori qiymat login flood orqali server resursini tugatishi mumkin. Parametr vaqt o‘tishi bilan oshiriladi va muvaffaqiyatli login paytida eski yozuv qayta xeshlanadi.

Parol saqlash formati

Bazadagi yozuv algoritm, PRF, iteratsiya, salt va derived keyni o‘z ichiga oladi. Faqat hash byte’larini saqlab, parametrlarni konfiguratsiyada yashirish keyingi migratsiyani qiyinlashtiradi. Masalan, mantiqiy format quyidagicha bo‘lishi mumkin:

pbkdf2-sha256$600000$BASE64_SALT$BASE64_DERIVED_KEY

Login paytida server yozuvdan parametrlarni o‘qiydi, kiritilgan parolni qayta hisoblaydi va natijani constant-time usulda solishtiradi. Parolni qayta tiklash mumkin emas; unutgan foydalanuvchi reset jarayonidan o‘tadi. Pepper qo‘llansa, u salt emas va bazadan alohida secret managerda saqlanadi.

Kalit hosil qilish

PBKDF2 disk yoki fayl shifrlashda foydalanuvchi parolidan AES kaliti olish uchun ham qo‘llanadi. Derived keyni to‘g‘ridan-to‘g‘ri bir nechta maqsadda ishlatish o‘rniga, kerakli uzunlik olinadi yoki key separation uchun key schedule qo‘llanadi. Salt ciphertext sarlavhasida ochiq saqlanishi mumkin, lekin iteration va PRF ham decryption uchun kerak.

Parol noto‘g‘ri bo‘lsa, oddiy decryption tasodifiy plaintext chiqarishi mumkin. Shu sababli AEAD tagi yoki alohida autentifikatsiya qiymati kalit to‘g‘riligini va ciphertext yaxlitligini tekshiradi. Faqat “matn o‘qiladimi” deb baholash ishonchli emas.

Memory-hard funksiyalar bilan taqqoslash

Argon2id va scrypt katta xotira talabini sozlash imkoniga ega. Xotira bandwidthi va maydoni parallel hujum apparati xarajatini oshiradi. Yangi password hashing tizimida ko‘pincha Argon2id tanlanadi. PBKDF2 esa FIPS profiliga moslik, mavjud standart yoki eski platforma talabi sabab keng qo‘llanadi. To‘g‘ri PRF va zamonaviy iteratsiya bilan u oddiy tez hashdan ancha kuchli, ammo parametr muntazam qayta baholanadi.

Bog‘liq tushunchalar

Key derivation function, HMAC, Salt, Iteration count, Password hashing, Argon2, scrypt