Bosh sahifa Wiki Salt

Salt

Saltpassword hashing jarayonida parolga qo‘shiladigan tasodifiy qiymat. Salt bir xil parollar uchun ham turli hash qiymatlar hosil bo‘lishini ta’minlaydi. Bu authentication tizimlarida foydalanuvchi parollarini xavfsizroq saqlash uchun ishlatiladi.

Salt parolni shifrlamaydi va maxfiy kalit hisoblanmaydi. Uning asosiy vazifasi — har bir foydalanuvchi parolining hash natijasini noyob qilish.

Vazifasi

Salt password hashing xavfsizligini oshirish uchun ishlatiladi.

Salt quyidagi vazifalarni bajaradi:

  • bir xil parollar uchun turli hash qiymatlar yaratish;
  • rainbow table hujumlarini qiyinlashtirish;
  • har bir foydalanuvchi parolini alohida himoyalash;
  • parol hashlarini bir-biridan farqlash;
  • credential leak holatida parollarni topishni murakkablashtirish;
  • password hashing algoritmlarining to‘g‘ri ishlashini ta’minlash.

Masalan, Farrukh va Sherkulov bir xil parol tanlasa ham, har biri uchun alohida salt ishlatilsa, database’dagi hash qiymatlar bir xil bo‘lmaydi.

Salt qanday ishlaydi?

Salt foydalanuvchi paroliga qo‘shiladi va keyin umumiy qiymat password hashing algoritmiga beriladi.

Oddiy jarayon:

  • foydalanuvchi parol yaratadi;
  • tizim tasodifiy salt hosil qiladi;
  • parol va salt birga hashing algoritmiga beriladi;
  • hash qiymat hosil bo‘ladi;
  • database’da salt va hash saqlanadi;
  • login vaqtida shu salt bilan parol qayta tekshiriladi.

Salt ishlatilganda tizim faqat parolni emas, parol + salt kombinatsiyasini hash qiladi.

Salt nima uchun kerak?

Agar salt ishlatilmasa, bir xil parol har doim bir xil hash qiymat beradi. Bu database ichida qaysi foydalanuvchilar bir xil parol ishlatayotganini bilishga imkon beradi.

Salt ishlatilganda:

  • 123456 paroli har bir foydalanuvchida boshqa hash beradi;
  • bir xil parollar database’da bir xil ko‘rinmaydi;
  • oldindan tayyorlangan hash ro‘yxatlaridan foydalanish qiyinlashadi;
  • parol hashlarini ommaviy solishtirish murakkablashadi.

Salt password hashingning muhim qismi hisoblanadi.

Salt maxfiy bo‘ladimi?

Salt maxfiy bo‘lishi shart emas. U odatda hash bilan birga database’da saqlanadi.

Salt haqida asosiy faktlar:

  • salt maxfiy kalit emas;
  • salt har bir parol uchun noyob bo‘lishi kerak;
  • salt tasodifiy yaratilishi kerak;
  • salt qayta ishlatilmasligi kerak;
  • salt hash qiymatni tekshirish uchun kerak bo‘ladi.

Salt maxfiy bo‘lmasa ham, parol hashlarini himoyalashda muhim rol o‘ynaydi.

Salt va hash

Hash paroldan hosil qilingan tekshiruv qiymati bo‘lsa, salt shu hashni noyob qilish uchun ishlatiladigan qo‘shimcha qiymatdir.

Jarayon:

  • parol olinadi;
  • salt qo‘shiladi;
  • password hashing algoritmi ishlaydi;
  • hash qiymat hosil bo‘ladi.

Masalan, password123 paroli turli saltlar bilan turli hash qiymatlar beradi.

Salt va password hashing

Salt password hashing algoritmlarida asosiy elementlardan biridir. bcrypt, Argon2, PBKDF2 va scrypt kabi algoritmlar salt bilan ishlaydi.

Salt ishlatiladigan algoritmlar:

Bu algoritmlar parolni oddiy hash qilishdan farqli ravishda salt, cost, iteration yoki memory parametrlar bilan ishlaydi.

Noyob salt

Har bir foydalanuvchi paroli uchun alohida salt yaratilishi kerak. Bitta saltni barcha foydalanuvchilar uchun ishlatish noto‘g‘ri model hisoblanadi.

Noyob salt quyidagilarni ta’minlaydi:

  • bir xil parollar turlicha hash bo‘ladi;
  • foydalanuvchilar hash orqali guruhlanmaydi;
  • har bir parol alohida tekshiriladi;
  • rainbow table hujumi murakkablashadi.

Saltning noyob bo‘lishi uning asosiy talablaridan biridir.

Tasodifiy salt

Salt oldindan taxmin qilib bo‘lmaydigan tasodifiy qiymat bo‘lishi kerak. Oddiy ketma-ket son, foydalanuvchi ID yoki email manzil salt sifatida yaxshi tanlov emas.

Tasodifiy salt uchun odatda cryptographic random generator ishlatiladi.

Salt quyidagi ko‘rinishlarda bo‘lishi mumkin:

  • random bytes;
  • hexadecimal qiymat;
  • Base64 qiymat;
  • password hashing algoritmi ichida yaratilgan qiymat.

Salt uzunligi

Salt yetarlicha uzun bo‘lishi kerak. Amaliy tizimlarda salt odatda kamida 16 bayt yoki undan ko‘proq tasodifiy qiymat sifatida ishlatiladi.

Salt uzunligi quyidagilarga ta’sir qiladi:

  • salt takrorlanish ehtimoli;
  • hash qiymatlarning noyobligi;
  • password hashing xavfsizligi;
  • collision ehtimoli.

Salt parol kabi eslab qolinmaydi, shuning uchun uni uzunroq tasodifiy qiymat sifatida yaratish mumkin.

Database’da saqlanishi

Salt odatda password hash bilan birga database’da saqlanadi. Chunki login vaqtida foydalanuvchi kiritgan parolni aynan shu salt bilan qayta hash qilish kerak bo‘ladi.

Database’da quyidagilar saqlanishi mumkin:

bcrypt va Argon2 kabi algoritmlarda salt ko‘pincha hash string ichida birga saqlanadi.

Rainbow table

Rainbow table — oldindan hisoblangan parollar va ularning hash qiymatlari ro‘yxati. Salt ishlatilmaganda bunday jadval orqali ko‘p parollarni tezroq topish mumkin.

Salt rainbow table hujumini qiyinlashtiradi, chunki:

  • bir xil parol har bir salt bilan boshqa hash beradi;
  • hujumchi har bir salt uchun alohida hisoblash qilishi kerak bo‘ladi;
  • oldindan tayyorlangan umumiy hash jadvali kamroq foyda beradi.

Salt aynan shu sababli password hashingda muhim hisoblanadi.

Brute force bilan bog‘liqligi

Salt brute force hujumini butunlay to‘xtatmaydi, lekin uni har bir foydalanuvchi paroli uchun alohida bajarishga majbur qiladi.

Brute force jarayonida:

  • hujumchi taxminiy parolni oladi;
  • shu foydalanuvchining salti bilan hash qiladi;
  • database’dagi hash bilan solishtiradi;
  • mos kelmasa, boshqa parolni sinaydi.

Salt ishlatilganda bitta hisoblangan hashni barcha foydalanuvchilarga nisbatan ishlatib bo‘lmaydi.

Salt va pepper farqi

Salt va pepper password hashingda ishlatiladigan ikki xil tushunchadir.

Farqlar:

  • Salt odatda database’da hash bilan birga saqlanadi;
  • Pepper maxfiy qiymat bo‘lib, database’dan alohida saqlanadi;
  • salt har bir parol uchun alohida bo‘ladi;
  • pepper butun tizim uchun umumiy bo‘lishi mumkin;
  • salt maxfiy bo‘lishi shart emas;
  • pepper maxfiy bo‘lishi kerak.

Salt hashlarni noyob qiladi, pepper esa qo‘shimcha maxfiy qatlam beradi.

Salt va encryption farqi

Salt encryption emas. U ma’lumotni shifrlamaydi va parolni qayta tiklash imkonini bermaydi.

Farqlar:

  • encryption ma’lumotni shifrlaydi va keyin decrypt qilish mumkin;
  • salt parolga qo‘shilib hash jarayonida ishlatiladi;
  • salt maxfiy kalit emas;
  • salt parolni yashirmaydi;
  • salt hash natijani noyob qiladi.

Salt faqat password hashing jarayonining bir qismi hisoblanadi.

Salt ishlatiladigan joylar

Salt asosan parol va maxfiy credentiallarni hash qilishda ishlatiladi.

Salt quyidagi tizimlarda uchraydi:

Har bir foydalanuvchi paroli alohida salt bilan hash qilinadi.

Dasturlashdagi o‘rni

Salt password hashing jarayonida parollarni database’da xavfsizroq saqlash uchun ishlatiladigan asosiy tushunchalardan biridir. U parol hashlarini noyob qiladi va bir xil parollarni bir xil hash ko‘rinishida saqlanishining oldini oladi.

Salt foydalanuvchi parolini maxfiy qilmaydi, lekin password hashing algoritmlari bilan birga ishlaganda authentication tizimining xavfsizligini oshiradi.

Bog‘liq tushunchalar

Password hashing, Hash, Pepper, bcrypt, Argon2, PBKDF2, scrypt, Rainbow table, Brute force, Authentication, Database, Security