Bcrypt nima?
Bcrypt — bu Niels Provos va David Mazières tomonidan ishlab chiqilgan, Blowfish shifriga asoslangan parol heshlash funksiyasi. MD5 yoki SHA-256 kabi tez digestlardan farqli o'laroq, bcrypt ataylab sekin va hisoblash jihatidan qimmat — bu o'g'irlangan parol heshlariga qarshi brute-force hujumlarini amaliy bo'lmaydigan qiladi. Bcrypt har bir parol uchun avtomatik ravishda tasodifiy tuz yaratadi, shuning uchun bir xil parollar turli xil heshlarni hosil qiladi.
Bcrypt qanday ishlaydi?
Bcrypt algoritmi to'liq brauzeringizda ishlaydi. Mana bosqichma-bosqich nima sodir bo'ladi:
- Parolingiz UTF-8 baytlari sifatida kodlanadi va bcrypt kalit jadvaliga (key schedule) yuboriladi, u Blowfish shifrining 4,184-baytli P-massivi va S-qutilarini parol va tuz yordamida ishga tushiradi.
- Tasodifiy 128-bitli tuz yaratiladi. Tuz kalit jadvaliga aralashtiriladi, shuning uchun har bir noyob tuz bir xil parol uchun ham butunlay boshqa hesh hosil qiladi.
- Kalit jadvali 2^cost davr uchun takrorlanadi (masalan, cost 10 uchun 2^10 = 1,024 takrorlash). Har bir takrorlash tuz va P-massiv yozuvlarini qayta shifrlaydi, xarajat oshishi bilan hisoblashni mutanosib ravishda sekinlashtiradi.
- Yakuniy natija
$2b$<cost>$<salt><hash>formatidagi 60 belgili qator, bunda cost nol bilan to'ldirilgan (masalan, 10), salt 22 Base64 belgisi va hash 31 Base64 belgisidir. - Tasdiqlash uchun xuddi shu algoritm nomzod parol va saqlangan heshdan olingan tuz bilan qayta ishga tushiriladi. Agar olingan hesh saqlangan heshga mos kelsa, parol to'g'ri.
Qaysi xarajat omilidan foydalanishim kerak?
Xarajat omili takrorlash sonining logarifmidir — cost 10 2^10 = 1,024 davr, cost 12 esa 4,096 davrni bildiradi. Xavfsizlik ehtiyojlaringiz va qurilmangizga qarab tanlang:
- Xarajat 4-6 (16-64 davr) — faqat ishlab chiqish va sinov uchun. Ishlab chiqarish uchun juda tez; minimal himoya beradi.
- Xarajat 8 (256 davr) — muhim bo'lmagan ilovalar uchun minimal daraja. Zamonaviy qurilmalarda taxminan 6ms.
- Xarajat 10 (1,024 davr) — joriy tavsiya etilgan asosiy daraja. Taxminan 25ms oladi. Ko'pchilik veb-ilovalar uchun yaxshi.
- Xarajat 12 (4,096 davr) — boshqaruv portallari, moliyaviy tizimlar va yuqori xavfsizlik ilovalari uchun tavsiya etiladi. Taxminan 100ms oladi.
- Xarajat 14 (16,384 davr) — yuqori xavfsizlik. Taxminan 400ms oladi. Asosiy parollar, shifrlash kalitlari yoki kirish kechikishi qabul qilinadigan hollarda foydalaning.
Nega ushbu bcrypt generatoridan foydalanish kerak?
- Maxfiyligingiz himoyalangan — har bir parol brauzeringizda mahalliy ravishda heshlanadi va hech qanday ma'lumot qurilmangizni tark etmaydi.
- Ikkala rejimni yonma-yon olasiz: sahifani almashtirmasdan yangi heshlarni yarating yoki mavjudlarini tasdiqlang.
- Xarajat omili 4 (tez) dan 15 (juda sekin) gacha sozlanishi mumkin, shuning uchun ilovangizning xavfsizlik ehtiyojlariga moslasha olasiz.
- Heshlar har bir asosiy til va framework bilan ishlaydigan standart
$2b$formatidan foydalanadi.
Bcryptning keng tarqalgan ilovalari qanday?
Bcrypt sanoat bo'ylab parol saqlash va tasdiqlash uchun keng qo'llaniladi:
- Veb-ilova foydalanuvchi autentifikatsiyasi — foydalanuvchi parol heshlarini ma'lumotlar bazasida saqlash, shunda ochiq matnli parollar hech qachon saqlanmaydi.
- API kalit heshlash — API sirlarini saqlashdan oldin heshlash, shunda ma'lumotlar bazasi buzilishi amaldagi hisob ma'lumotlarini oqizmaydi.
- Migratsiya auditi — eski tizimdagi eski parol heshlari autentifikatsiya qatlamini yangilashdan keyin ham foydalanuvchilarni tasdiqlay olishini tekshirish.
Bcrypt hesh qanday ko'rinishga ega?
hunter2 parolini 10 xarajat omili bilan heshlash $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy kabi qator hosil qiladi. Format quyidagicha: $2b$ (algoritm versiyasi), 10 (xarajat omili), $, keyin 22 belgili tuz va 31 belgili hesh, barchasi Base64 kodlangan. Bir xil parol bilan har bir ishga tushirish tasodifiy tuz tufayli boshqa hesh hosil qiladi.
Ushbu bcrypt generatori to'liq brauzeringizda sof JavaScript yordamida ishlaydi. Parollarni saqlashdan oldin heshlang, mavjud heshlarni tasdiqlang va xarajat omilini xavfsizlik talablaringizga moslang — barchasi serverga bir bayt yubormasdan.