Hash — ma’lumotni belgilangan uzunlikdagi qiymatga aylantiradigan algoritmik natija. Hash funksiyasi matn, fayl, parol, token yoki boshqa turdagi ma’lumotdan hash qiymat hosil qiladi.
Hash dasturlash, kriptografiya, parol saqlash, fayl yaxlitligini tekshirish, database indekslash, cache, blockchain va xavfsizlik tizimlarida keng qo‘llanadi.
Vazifasi
Hash ma’lumotni qisqa va tekshiriladigan qiymatga aylantirish uchun ishlatiladi.
Hash quyidagi vazifalarni bajaradi:
- fayl yoki ma’lumot yaxlitligini tekshirish;
- parolni ochiq holda saqlamaslik;
- token yoki signature jarayonlarida ishlash;
- database va cache ichida tez qidirish;
- ma’lumotni noyob identifikatorga aylantirish;
- checksum yaratish;
- digital signature tizimlarida ishlash;
- blockchain bloklarini bog‘lash;
- duplicate ma’lumotlarni aniqlash.
Masalan, parol database’da oddiy matn holida emas, hash qiymati sifatida saqlanishi mumkin.
Hash qanday ishlaydi?
Hash funksiyasi kiruvchi ma’lumotni olib, undan belgilangan uzunlikdagi hash qiymat hosil qiladi. Kiruvchi ma’lumot ozgina o‘zgarsa ham, hash qiymat butunlay boshqacha ko‘rinishi mumkin.
Oddiy jarayon:
- ma’lumot hash funksiyasiga beriladi;
- algoritm ma’lumotni qayta ishlaydi;
- hash qiymat hosil bo‘ladi;
- keyinchalik shu ma’lumot qayta hash qilinadi;
- yangi hash eski hash bilan solishtiriladi;
- hashlar mos bo‘lsa, ma’lumot o‘zgarmagan deb hisoblanadi.
Hash funksiyasi odatda bir tomonlama ishlaydi, ya’ni hash qiymatdan asl ma’lumotni qayta tiklash amaliy jihatdan mumkin emas.
Hash function
Hash function — kiruvchi ma’lumotdan hash qiymat hosil qiladigan algoritm. Hash funksiyasi turiga qarab xavfsizlik, tezlik va natija uzunligi farq qiladi.
Hash function misollari:
Kriptografik hash funksiyalar xavfsizlik tizimlarida, oddiy hash funksiyalar esa data structure va indekslashda ishlatilishi mumkin.
Hash value
Hash value — hash funksiyasi natijasida hosil bo‘lgan qiymat. U ko‘pincha hexadecimal formatda ko‘rsatiladi.
Misol:
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c
Hash value quyidagilar uchun ishlatiladi:
- ma’lumotni solishtirish;
- fayl o‘zgarganini tekshirish;
- parolni tekshirish;
- signature yaratish;
- cache key sifatida ishlatish.
Hash value asl ma’lumotning qisqa matematik ifodasi hisoblanadi.
Input
Input — hash funksiyasiga beriladigan ma’lumot. Input istalgan uzunlikda bo‘lishi mumkin.
Input misollari:
Hash funksiyasi input uzunligidan qat’i nazar, belgilangan uzunlikdagi output yaratadi.
Output
Output — hash funksiyasi qaytaradigan natija. Output odatda doimiy uzunlikda bo‘ladi.
Masalan:
Input juda uzun bo‘lsa ham, output belgilangan uzunlikda qoladi.
Deterministic xususiyat
Hash funksiyasi deterministic bo‘ladi. Bu bir xil input har doim bir xil hash natija berishini bildiradi.
Masalan:
hello
shu qiymat bir xil algoritm bilan har safar bir xil hash beradi.
Bu xususiyat hashlarni solishtirish, parol tekshirish va fayl yaxlitligini aniqlashda muhim.
One-way function
Hash ko‘pincha bir tomonlama funksiya sifatida ishlaydi. Bu hash qiymatdan asl inputni qayta tiklash amaliy jihatdan mumkin emasligini bildiradi.
One-way xususiyat quyidagilarda muhim:
- parol saqlash;
- token xavfsizligi;
- digital signature;
- blockchain;
- checksum;
- ma’lumot yaxlitligini tekshirish.
Masalan, parol hashidan asl parolni olish emas, kiritilgan parol hashini saqlangan hash bilan solishtirish ishlatiladi.
Collision
Collision — ikki xil input bir xil hash qiymat hosil qiladigan holat. Nazariy jihatdan har qanday cheklangan uzunlikdagi hash output uchun collision bo‘lishi mumkin.
Collision quyidagi joylarda muhim:
- cryptographic security;
- digital signature;
- fayl yaxlitligi;
- certificate tizimlari;
- blockchain;
- password hashing.
Kuchli hash funksiyalarda collision topish amaliy jihatdan juda qiyin bo‘lishi kerak.
Collision resistance
Collision resistance — hash funksiyasida ikki xil input uchun bir xil hash topish qiyin bo‘lishi xususiyati.
Collision resistance quyidagilar uchun kerak:
- digital signature xavfsizligi;
- certificate tekshiruvi;
- blockchain bloklari;
- fayl verifikatsiyasi;
- software release checksumlari.
Kriptografik hash funksiyalarda collision resistance muhim xavfsizlik xususiyatidir.
Preimage resistance
Preimage resistance — berilgan hash qiymatdan unga mos inputni topish qiyin bo‘lishi xususiyati.
Masalan, hash qiymat ma’lum bo‘lsa ham, asl parol yoki matnni topish qiyin bo‘lishi kerak.
Preimage resistance quyidagilarda muhim:
- parol hash qilish;
- token xavfsizligi;
- cryptographic proof;
- blockchain mining;
- maxfiy ma’lumotlarni himoyalash.
Second preimage resistance
Second preimage resistance — ma’lum input va uning hash qiymati bor bo‘lganda, shu hashni beradigan boshqa inputni topish qiyin bo‘lishi xususiyati.
Bu xususiyat quyidagilarda muhim:
- fayl yaxlitligi;
- digital signature;
- certificate xavfsizligi;
- software package verifikatsiyasi;
- blockchain.
Agar second preimage topish oson bo‘lsa, mavjud ma’lumotni boshqa zararli ma’lumot bilan almashtirish xavfi paydo bo‘ladi.
MD5
MD5 — eski hash algoritmlardan biri. U 128 bitli hash qiymat yaratadi.
MD5 quyidagilarda tarixan ishlatilgan:
- fayl checksum;
- eski database tizimlari;
- eski API signaturelar;
- legacy tizimlar;
- oddiy duplicate tekshirish.
MD5 kriptografik xavfsizlik uchun zaif hisoblanadi, chunki unda collision muammolari mavjud.
SHA-1
SHA-1 — Secure Hash Algorithm oilasiga kiruvchi eski hash algoritm. U 160 bitli hash qiymat yaratadi.
SHA-1 quyidagilarda uchragan:
- eski certificate tizimlari;
- Git obyekt ID’lari;
- legacy security tizimlari;
- eski digital signature jarayonlari.
SHA-1 zamonaviy kriptografik xavfsizlik uchun zaif deb qaraladi, chunki collision hujumlari amaliy ko‘rsatib berilgan.
SHA-256
SHA-256 — SHA-2 oilasiga kiruvchi kriptografik hash algoritm. U 256 bitli hash qiymat hosil qiladi.
SHA-256 quyidagilarda keng ishlatiladi:
- fayl yaxlitligini tekshirish;
- blockchain;
- digital signature;
- HMAC-SHA256;
- certificate tizimlari;
- API xavfsizligi;
- password hashing jarayonlarida yordamchi element.
SHA-256 zamonaviy tizimlarda keng qo‘llanadigan hash algoritmlardan biridir.
SHA-512
SHA-512 — SHA-2 oilasining 512 bitli hash qiymat yaratadigan algoritmi.
SHA-512 quyidagilarda ishlatilishi mumkin:
- kuchliroq hash talab qilingan tizimlar;
- HMAC-SHA512;
- kriptografik protokollar;
- fayl yaxlitligi;
- enterprise security tizimlari.
SHA-512 output uzunligi SHA-256’dan kattaroq bo‘ladi.
SHA-3
SHA-3 — SHA oilasining yangi avlod hash algoritmlaridan biri. U Keccak algoritmik dizayniga asoslangan.
SHA-3 quyidagi joylarda ishlatilishi mumkin:
- kriptografik tizimlar;
- maxsus xavfsizlik protokollari;
- blockchain;
- research va security-oriented loyihalar;
- hash-based mexanizmlar.
SHA-3 SHA-2’dan boshqa ichki dizaynga ega.
Checksum
Checksum — ma’lumot yoki fayl o‘zgarmaganini tekshirish uchun ishlatiladigan qiymat. Hash checksum sifatida ishlatilishi mumkin.
Checksum quyidagilarda qo‘llanadi:
- fayl yuklab olingandan keyin tekshirish;
- arxiv yaxlitligini aniqlash;
- network orqali uzatilgan ma’lumotni tekshirish;
- backup fayllarini solishtirish;
- software release verifikatsiyasi.
Masalan, yuklab olingan ISO faylning SHA-256 checksum qiymati rasmiy sayt bergan qiymat bilan solishtirilishi mumkin.
Password hashing
Password hashing — foydalanuvchi parolini database’da ochiq matn ko‘rinishida emas, hash ko‘rinishida saqlash jarayoni.
Password hashing jarayonida:
- foydalanuvchi parol kiritadi;
- backend parolni hash qiladi;
- hash database’da saqlanadi;
- login paytida kiritilgan parol qayta hash qilinadi;
- hashlar solishtiriladi;
- mos bo‘lsa, authentication muvaffaqiyatli bo‘ladi.
Parol hash qilish uchun maxsus algoritmlar ishlatiladi.
Salt
Salt — password hashing jarayonida parolga qo‘shiladigan tasodifiy qiymat. Salt bir xil parollar uchun har xil hash hosil bo‘lishiga yordam beradi.
Salt quyidagilar uchun ishlatiladi:
- bir xil parollar hashini farqlash;
- rainbow table hujumlarini qiyinlashtirish;
- har bir foydalanuvchi parolini alohida himoyalash;
- password hashing xavfsizligini oshirish.
Masalan, ikki foydalanuvchi bir xil parol ishlatsa ham, salt sababli ularning hash qiymatlari farqli bo‘lishi mumkin.
Pepper
Pepper — password hashing jarayonida ishlatiladigan qo‘shimcha maxfiy qiymat. Salt odatda database’da saqlansa, pepper alohida maxfiy konfiguratsiyada saqlanishi mumkin.
Pepper quyidagilar bilan bog‘liq:
- parol hashlarini qo‘shimcha himoyalash;
- secret keyga o‘xshash maxfiy qiymat;
- application configuration;
- secret manager;
- database leak xavfini kamaytirish.
Pepper password hashing tizimlarida qo‘shimcha himoya qatlamidir.
bcrypt
bcrypt — parollarni hash qilish uchun ishlatiladigan maxsus algoritm. U sekin ishlashga mo‘ljallangan bo‘lib, brute force hujumlarini qiyinlashtiradi.
bcrypt xususiyatlari:
- salt bilan ishlaydi;
- cost factor mavjud;
- parol hashing uchun mo‘ljallangan;
- oddiy SHA hashdan farq qiladi;
- authentication tizimlarida keng ishlatiladi.
bcrypt foydalanuvchi parollarini saqlashda ko‘p ishlatiladigan algoritmlardan biridir.
Argon2
Argon2 — zamonaviy password hashing algoritmi. U xotira va vaqt sarfini boshqarish imkoniga ega.
Argon2 xususiyatlari:
- memory-hard algoritm;
- parol hashing uchun mo‘ljallangan;
- salt bilan ishlaydi;
- time cost va memory cost parametrlariga ega;
- zamonaviy authentication tizimlarida ishlatiladi.
Argon2 password hashing uchun kuchli algoritmlardan biri hisoblanadi.
PBKDF2
PBKDF2 — Password-Based Key Derivation Function 2. U paroldan kriptografik kalit yoki hashga o‘xshash qiymat hosil qilish uchun ishlatiladi.
PBKDF2 xususiyatlari:
- ko‘p iteratsiya ishlatadi;
- salt bilan ishlaydi;
- paroldan key derivation qiladi;
- legacy va enterprise tizimlarda uchraydi;
- authentication tizimlarida ishlatilishi mumkin.
PBKDF2 parolni oddiy hash qilishdan ko‘ra sekinroq va xavfsizroq ishlashga mo‘ljallangan.
Hash va encryption farqi
Hash va encryption turli vazifani bajaradi.
- Hash ma’lumotdan bir tomonlama qiymat yaratadi;
- Encryption ma’lumotni shifrlaydi va keyin decrypt qilish mumkin;
- hashdan asl ma’lumotni qaytarib bo‘lmaydi;
- encryptionda kalit bilan asl ma’lumot tiklanadi;
- hash yaxlitlik va tekshiruv uchun ishlatiladi;
- encryption maxfiylik uchun ishlatiladi.
Masalan, parollar hash qilinadi, maxfiy xabarlar esa encryption orqali shifrlanadi.
Hash va encoding farqi
Hash va encoding ham farqli tushunchalardir.
- Hash bir tomonlama algoritmik qiymat yaratadi;
- Encoding ma’lumot formatini o‘zgartiradi;
- encoding qaytariladigan jarayon;
- hash qaytarib bo‘lmaydigan jarayon;
- Base64 encoding hisoblanadi;
- SHA-256 hash hisoblanadi.
Masalan, Base64 qilingan matnni qayta ochish mumkin, lekin SHA-256 hashdan asl matnni chiqarib bo‘lmaydi.
Hash va HMAC farqi
Hash va HMAC bir-biriga bog‘liq, lekin farqli ishlaydi.
- Hash faqat ma’lumot asosida qiymat yaratadi;
- HMAC ma’lumot va secret key asosida signature yaratadi;
- hashni har kim hisoblay oladi;
- HMAC uchun maxfiy kalit kerak;
- hash yaxlitlikni ko‘rsatadi;
- HMAC haqiqiylik va yaxlitlikni birga tekshiradi.
Masalan, fayl checksum uchun oddiy hash yetarli bo‘lishi mumkin, webhook tekshiruvida esa HMAC ishlatiladi.
Hash table
Hash table — key-value ma’lumotlarni tez saqlash va topish uchun hash funksiyasidan foydalanadigan data structure.
Hash table quyidagilarda ishlatiladi:
Hash table’da key hash qilinadi va shu hash orqali qiymat tez topiladi.
Hash map
Hash map — key-value juftliklarini saqlaydigan hash table asosidagi data structure.
Hash map misollari:
- JavaScript
Map; - Python
dict; - Java
HashMap; - Go
map; - C++
unordered_map.
Hash map dasturlashda tezkor qidirish va saqlash uchun ishlatiladi.
Hash collision data structure’da
Hash table ichida collision ikki key bir xil bucketga tushganda yuz beradi. Bu kriptografik collisiondan farqli ravishda data structure ichidagi texnik holat hisoblanadi.
Collision hal qilish usullari:
- chaining;
- open addressing;
- probing;
- rehashing;
- bucket list.
Hash table implementatsiyalari collisionlarni boshqarish mexanizmlariga ega bo‘ladi.
Cache key
Hash cache tizimlarida key yaratish uchun ishlatilishi mumkin. Murakkab request yoki query hash qilinib, qisqa cache key hosil qilinadi.
Cache key quyidagilarda ishlatiladi:
- API response cache;
- database query cache;
- template cache;
- image processing cache;
- CDN cache;
- Redis cache.
Masalan, uzun URL va query parametrlar hash qilinib, Redis key sifatida ishlatilishi mumkin.
File hash
File hash — fayl tarkibidan hisoblangan hash qiymat. File hash fayl o‘zgargan yoki o‘zgarmaganini tekshirish uchun ishlatiladi.
File hash quyidagilarda qo‘llanadi:
- software download tekshiruvi;
- backup solishtirish;
- malware analysis;
- duplicate file detection;
- digital forensics;
- package managerlar;
- CI/CD artifact verifikatsiyasi.
Fayldagi bitta bayt o‘zgarsa ham, hash qiymat o‘zgaradi.
Git va hash
Git obyektlarni aniqlash uchun hash qiymatlardan foydalanadi. Commit, tree va blob obyektlari hash orqali identifikatsiya qilinadi.
Git’da hash quyidagilar uchun ishlatiladi:
- commit ID;
- obyekt identifikatori;
- repository tarixini bog‘lash;
- o‘zgarishlarni aniqlash;
- content-addressable storage;
- branch va taglar bilan bog‘lanish.
Masalan, commit ID Git obyektining hash qiymati hisoblanadi.
Blockchain va hash
Blockchain tizimlarida hash bloklarni bog‘lash va ma’lumot yaxlitligini saqlash uchun ishlatiladi.
Blockchain’da hash quyidagilar uchun ishlatiladi:
- blok identifikatori;
- oldingi blok hashini saqlash;
- transaction ma’lumotlarini bog‘lash;
- mining jarayoni;
- Merkle tree;
- data tamperingni aniqlash.
Agar blokdagi ma’lumot o‘zgarsa, uning hashi ham o‘zgaradi va keyingi bloklar bilan bog‘lanish buziladi.
Merkle tree
Merkle tree — hashlar daraxti asosida ma’lumotlar to‘plamini tekshirish uchun ishlatiladigan data structure.
Merkle tree quyidagilarda ishlatiladi:
- blockchain;
- distributed storage;
- file synchronization;
- version control;
- data verification.
Merkle tree ko‘p ma’lumot ichida muayyan element o‘zgarganini samarali tekshirishga yordam beradi.
Hash va digital signature
Digital signature jarayonida ko‘pincha avval ma’lumotning hashi olinadi, keyin shu hash private key bilan imzolanadi.
Jarayon:
- ma’lumot hash qilinadi;
- hash private key bilan imzolanadi;
- signature hosil bo‘ladi;
- qabul qiluvchi public key orqali signature’ni tekshiradi;
- ma’lumot hashi bilan solishtiriladi.
Bu usul katta ma’lumotni to‘liq imzolash o‘rniga uning hashini imzolashga asoslanadi.
Hash va API
API tizimlarida hash turli vazifalarda ishlatiladi.
API’da hash quyidagilarda uchraydi:
- request body checksum;
- signature yaratish;
- cache key;
- idempotency key;
- token verification;
- webhook payload tekshirish;
- fayl upload tekshirish.
Masalan, fayl upload qilinganda backend uning hashini hisoblab, duplicate fayl bor yoki yo‘qligini aniqlashi mumkin.
Hash va security
Hash security tizimlarining asosiy tushunchalaridan biridir. U ma’lumotni tekshirish, parol saqlash va signature jarayonlarida ishlatiladi.
Security’da hash quyidagilar bilan bog‘liq:
- password hashing;
- HMAC;
- digital signature;
- certificate;
- checksum;
- blockchain;
- token security;
- integrity check.
Hash to‘g‘ri algoritm va to‘g‘ri parametrlar bilan ishlatilganda xavfsizlik tizimlariga asos bo‘ladi.
Rainbow table
Rainbow table — oldindan hisoblangan hashlar va ularning asl qiymatlari ro‘yxati. Bu parol hashlarini topishga qaratilgan hujumlarda ishlatilishi mumkin.
Rainbow table quyidagilar bilan bog‘liq:
- zaif parollar;
- saltsiz hashlar;
- eski MD5 yoki SHA-1 password hashlar;
- password cracking;
- credential leak.
Salt ishlatilganda rainbow table hujumlari ancha qiyinlashadi.
Brute force
Brute force — hashga mos keladigan inputni ko‘p urinishlar orqali topishga urinish.
Password hashga brute force qilishda:
- ehtimoliy parollar olinadi;
- har biri hash qilinadi;
- saqlangan hash bilan solishtiriladi;
- mos kelgan parol topiladi.
bcrypt, Argon2 va PBKDF2 kabi algoritmlar brute force urinishlarini sekinlashtirish uchun ishlatiladi.
Dasturlashdagi o‘rni
Hash dasturlash va xavfsizlikda ma’lumotni tekshirish, solishtirish, indekslash va himoyalash uchun ishlatiladigan muhim tushunchadir. U oddiy data structurelardan tortib kriptografik protokollargacha turli joylarda qo‘llanadi.
Hash quyidagi loyihalarda uchraydi:
- authentication tizimlari;
- password storage;
- REST API;
- webhook security;
- cache tizimlari;
- database indekslash;
- Git repository;
- blockchain;
- CI/CD artifact verification;
- fayl upload tizimlari.
Hash ma’lumotdan belgilangan uzunlikdagi tekshiruv qiymatini hosil qilib, uni solishtirish va yaxlitligini aniqlash uchun ishlatiladi.
Bog‘liq tushunchalar
SHA-256, SHA-512, MD5, HMAC, Password hashing, Salt, bcrypt, Argon2, Checksum, Git, Blockchain, Security