Bosh sahifa Wiki Argon2

Argon2

Argon2 — parollarni xeshlash va paroldan kriptografik kalit hosil qilish uchun mo‘ljallangan memory-hard funksiya. U 2015-yildagi Password Hashing Competition g‘olibi bo‘lgan va RFC 9106da tavsiflangan. Argon2 hisoblash va xotira xarajatlarini alohida sozlaydi, shu orqali hujumchining GPU yoki maxsus apparatda juda ko‘p taxminni parallel tekshirishini qimmatlashtiradi. Parol bazasida odatda Argon2id varianti ishlatiladi.

Variantlari

Argon2d xotiraga murojaat tartibini parolga bog‘liq qiladi. Bu GPUga qarshi kuchliroq xususiyat berishi mumkin, ammo side-channel kuzatuviga sezgirroq. Argon2i ma’lumotdan mustaqil murojaat tartibini ishlatib, side-channelga qarshi yo‘naltirilgan, biroq ayrim time-memory trade-off hujumlariga nisbatan ko‘proq pass talab qiladi. Argon2id dastlab Argon2i, keyin Argon2dga o‘xshash ishlashni birlashtiradi va password hashing uchun muvozanatli variant hisoblanadi.

Parametrlar

Asosiy parametrlar quyidagilar:

  • m — ajratiladigan xotira miqdori;
  • t — xotira ustidan o‘tishlar yoki vaqt xarajati;
  • p — parallelism darajasi;
  • salt — har parol uchun noyob tasodifiy qiymat;
  • output length — olinadigan hash uzunligi.

Parametrlar tayyor serverda benchmark qilinadi. Xotira shunday tanlanadiki, normal login serverni barqaror ushlab tursin, bitta taxmin esa hujumchi uchun sezilarli xarajatli bo‘lsin. Parallelism qiymatini oshirish har doim hujumga qarshi chiziqli kuch bermaydi; u implementatsiya va mavjud yadrolarga bog‘liq. Juda katta resurs sozlamasi ko‘p parallel login orqali xizmatni rad ettirishga yordam berishi mumkin.

Kodlangan hash

Argon2 kutubxonalari variant, versiya, parametr, salt va hashni bitta PHC satrida saqlaydi:

$argon2id$v=19$m=65536,t=3,p=1$...$...

Salt secret emas va satr ichida saqlanadi. Login paytida kutubxona parametrlarni satrdan o‘qib, kiritilgan parolni qayta hisoblaydi. Tayyor verify funksiyasi format parsing va xavfsiz solishtirishni bajaradi. Ilova algoritmning ichki qismini o‘zi implementatsiya qilmaydi.

Joriy siyosat o‘zgarsa, muvaffaqiyatli tekshiruvdan keyin needs_rehash orqali hash yangi parametr bilan qayta yaratiladi. Bazadagi hashni plaintextsiz kuchaytirish mumkin emas; migratsiya foydalanuvchi keyingi login qilganda bosqichma-bosqich amalga oshadi. Eski bcrypt yoki PBKDF2 yozuvi algoritm prefiksi orqali aniqlanib, muvaffaqiyatli login paytida Argon2idga o‘tkazilishi mumkin.

Salt, pepper va encoding

Har hisob uchun kamida 128 bit tasodifiy salt amaliy jihatdan collisionni yo‘q darajaga tushiradi va bir xil parollar hashini ajratadi. Pepper ixtiyoriy umumiy sir bo‘lib, bazadan alohida key management tizimida saqlanadi. U bazaning yolg‘iz sizishiga qarshi qo‘shimcha to‘siq beradi, ammo pepper rotation barcha parollarni qayta xeshlash yoki versiyali tekshiruvni talab qiladi.

Parol byte satriga aniq encoding, odatda UTF-8 bilan aylantiriladi. Unicode normalization siyosatini keyinchalik o‘zgartirish foydalanuvchi parolini tanimaslikka olib kelishi mumkin. Parolni jimgina qisqartirish o‘rniga kutubxona va interfeys qo‘llaydigan oqilona maksimal byte uzunligi hujjatlashtiriladi.

Xavfsizlik chegarasi

Argon2 zaif yoki qayta ishlatilgan parolni kuchli parolga aylantirmaydi; u offline taxminlarni sekinlashtiradi. Online login hujumi rate limit va MFA bilan boshqariladi. Server kompromis bo‘lib, parol kiritilayotgan jarayon nazoratga olinsa, hashing algoritmi plaintextni o‘g‘irlashni to‘xtata olmaydi. Shu sababli Argon2 xavfsiz saqlash, TLS, secret boshqaruvi va monitoring bilan bir qatlam sifatida ishlaydi.

Argon2 versiyasi PHC satrida qayd etiladi; v=19 standartdagi 0x13 versiyani anglatadi. Kutubxona yangilanganda algoritm versiyasi va parametrlar avtomatik almashtirib yuborilmaydi. Eski hashlar tekshiriladi, keyin siyosat talab qilsa muvaffaqiyatli login jarayonida yangi formatga ko‘chiriladi.

Bog‘liq tushunchalar

Password hashing, Argon2id, Salt, Memory-hard function, bcrypt, scrypt, Key derivation function