Hashing — bu nədir, kriptoqrafik alqoritmlər və tətbiqi

Müəllif: IT Sectr Dərc olunub: 2026-04-02 Oxuma vaxtı: 8 dəq

Hashing — ixtiyari ölçülü məlumatları sabit uzunluqlu sətrə çevirmə prosesidir, məlumat bütövlüyünü yoxlamaq və şifrələri təhlükəsiz saxlamaq üçün istifadə olunur. Open Web Application Security Project (OWASP, 2025) məlumatlarına görə, heş funksiyalarının düzgün istifadəsi etimad məlumatlarının sızması ilə bağlı zəifliklərin 70%-ə qədərinin qarşısını alır. Kriptoqrafik heşlər rəqəmsal imzaların, blokçeyn texnologiyalarının və versiya nəzarətinin əsasını təşkil edir.

Əsas məqamlarlar

  • Heş funksiyası giriş məlumatlarını sabit uzunluqlu sətrə — digestə çevirir.
  • Kriptoqrafik heşlər geri döndürülməzlik xüsusiyyətinə malikdir: heş əsasında orijinal məlumatları bərpa etmək mümkün deyil.
  • SHA-256 — müasir sistemlər üçün NIST tərəfindən tövsiyə olunan kriptoqrafik heşləmə standartı.
  • Duz — göy qurşağı cədvəllərindən qorunmaq üçün şifrəyə heşləmədən əvvəl əlavə edilən təsadüfi məlumatlar.
  • Hashing mobil tətbiqlərdə şifrələrin saxlanması və məlumat bütövlüyünün yoxlanması üçün geniş istifadə olunur.

Hashing nədir?

Hashing — ixtiyari giriş məlumatları dəstini digest və ya heş dəyəri adlanan sabit uzunluqlu bit sətrinə çevirən heş funksiyasının hesablanması prosesidir. Şifrələmədən fərqli olaraq, hashing birtərəfli prosesdir: heş əsasında orijinal məlumatları bərpa etmək mümkün deyil.

Heş funksiyalarının əsas xüsusiyyətləri

Kriptoqrafik heş funksiyaları dörd məcburi xüsusiyyətə malikdir: determinizm (eyni giriş həmişə eyni heşi verir), geri döndürülməzlik (hesablama baxımından heş əsasında girişi bərpa etmək mümkün deyil), uçqun effekti (girişdəki bir bitin dəyişməsi heşin bitlərinin təxminən yarısını dəyişir) və kolliziyaya davamlılıq (hesablama baxımından eyni heşi verən iki fərqli giriş tapmaq mümkün deyil).

Hashing ilə şifrələmə arasındakı fərq

Hashing ilə şifrələmə arasındakı fərqi başa düşmək vacibdir. Şifrələmə ikitərəfli prosesdir: şifrələnmiş məlumatlar açar köməyilə deşifrə edilə bilər. Hashing birtərəfli prosesdir: çevrilmədən sonra məlumatları bərpa etmək mümkün deyil. Bu xüsusiyyət hashing-i şifrələrin saxlanması üçün ideal edir: sistem yalnız heşi saxlayır və hətta məlumat bazası sızdıqda belə şifrələr qorunmuş qalır.

Kriptoqrafik və qeyri-kriptoqrafik heş funksiyaları

Bütün heş funksiyaları təhlükəsizlik tapşırıqları üçün eyni dərəcədə yararlı deyil. Kriptoqrafik və qeyri-kriptoqrafik kateqoriyalara bölgü mobil inkişafda müəyyən tapşırıq üçün alqoritm seçərkən kritik əhəmiyyət kəsb edir.

Kriptoqrafik heş funksiyaları

Bu funksiyalar qəsdən yavaş və mürəkkəbdir ki, brute-force hücumlarını çətinləşdirsin. Onlar kolliziyalara və preimage hücumlarına davamlı olmalıdır. SHA-2 ailəsi (SHA-224, SHA-256, SHA-384, SHA-512) NIST tərəfindən sertifikatlaşdırılıb və dövlət sistemlərində istifadə üçün tövsiyə olunur. Şifrələrin heşlənməsi üçün əlavə olaraq bcrypt, scrypt və Argon2 alqoritmləri konfiqurasiya oluna bilən mürəkkəbliklə tətbiq olunur.

Qeyri-kriptoqrafik heş funksiyaları

Bu funksiyalar təhlükəsizlik üçün deyil, sürət üçün optimallaşdırılıb. Nümunələr: CityHash, MurmurHash, xxHash. Onlar heş cədvəllərində, məlumat deduplikasiyasında və qeyri-kritik məlumatların bütövlüyünü sürətli yoxlamaq üçün nəzarət məbləğlərində istifadə olunur. Onları heç vaxt şifrələrin saxlanması və ya rəqəmsal imzaların yoxlanması üçün istifadə etməmək vacibdir — yüksək sürət onları brute-force hücumlarına qarşı həssas edir.

NövNümunələrTətbiq sahəsi
KriptoqrafikSHA-256, SHA-3, bcryptŞifrələr, imzalar, TLS
Qeyri-kriptoqrafikMurmurHash, xxHashHeş cədvəlləri, keşlər
Parol KDFbcrypt, scrypt, Argon2Şifrələrin saxlanması

Müasir mobil inkişafda istifadə olunan ən geniş yayılmış heşləmə alqoritmlərini nəzərdən keçirək. Onların hər birinin öz güclü və zəif tərəfləri var.

SHA-256

SHA-256 — FIPS 180-4 standartı çərçivəsində NIST tərəfindən tövsiyə olunan müasir kriptoqrafiyanın rəmzidir. Alqoritm 256-bitlik digest yaradır və TLS protokollarının, blokçeyn şəbəkələrinin və versiya nəzarət sistemlərinin əsas tərkib hissəsidir. NCC Group (2025) hesabatına görə, SHA-256 TLS sertifikatlarının 96%-də certificate transparency imzalamaq üçün istifadə olunur.

SHA-3 — SHA-2-nin davamçısı

SHA-3 — NIST tərəfindən 2015-ci ildə FIPS 202 kimi standartlaşdırılmış ən yeni heş funksiyaları ailəsidir. Merkle–Damgård strukturuna əsaslanan SHA-2-dən fərqli olaraq, SHA-3 Keccak süngər funksiyası ilə fərqli bir konstruksiyaya əsaslanır. Bu, SHA-3-ü gələcəkdə SHA-2-yə qarşı yarana biləcək hücumlara davamlı edir. Mobil tərtibatçılar üçün SHA-3 standart kriptoqrafik kitabxanalar vasitəsilə Android 7.0 və iOS 13-dən etibarən mövcuddur.

kotlin
import java.security.MessageDigest

fun hashWithSHA256(input: String): String {
    val digest = MessageDigest.getInstance("SHA-256")
    val hashBytes = digest.digest(input.toByteArray())
    return hashBytes.joinToString("") { String.format("%02x", it) }
}

Şifrələr üçün bcrypt

Şifrələrin saxlanması üçün ümumi kriptoqrafik heşlər kifayət deyil — onlar çox sürətlidir. bcrypt xüsusilə şifrələrin heşlənməsi üçün hazırlanmışdır: o, duz və hesablama vaxtını tənzimləyən xərc parametrini ehtiva edir. Xərci 2 dəfə artırmaq heşləmə vaxtını iki qat artırır və brute-force hücumlarını hətta güclü avadanlıqda belə səmərəsiz edir.

kotlin
import at.favre.lib.crypto.bcrypt.BCrypt

fun hashPassword(password: String): String {
    return BCrypt.create()
        .hashToString(BCrypt.MIN_COST, password.toCharArray())
}

fun verifyPassword(password: String, hash: String): Boolean {
    val result = BCrypt.verifyer().verify(password.toCharArray(), hash)
    return result.verified
}

Argon2 — müasir standart

Argon2 — Password Hashing Competition (2015) qalibi, OWASP tərəfindən şifrələrin heşlənməsi üçün ən yaxın seçim kimi tövsiyə olunur. Argon2id — yan kanal hücumlarına və time-memory trade-off hücumlarına davamlı variantdır. bcrypt-dən fərqli olaraq, Argon2 icra müddətini, yaddaş istifadəsini və paralellik dərəcəsini ayrıca konfiqurasiya etməyə imkan verir ki, bu da müxtəlif hücum növlərinə qarşı çevik qoruma təmin edir.

Hashing-in mobil tətbiqlərdə tətbiqi

Hashing mobil inkişafda istifadəçi autentifikasiyasından tutmuş yüklənən faylların bütövlüyünün yoxlanmasına qədər bir çox praktiki tapşırığı həll edir. Əsas istifadə ssenarilərinə baxaq.

Şifrələrin saxlanması

Əsas ssenari — şifrələrin təhlükəsiz saxlanması server tərəfində. Qeydiyyat zamanı tətbiq şifrəni serverə göndərir, orada duz ilə bcrypt və ya Argon2 alqoritmi ilə heşlənir və məlumat bazasında saxlanılır. Giriş zamanı server daxil edilən şifrəni heşləyir və saxlanılan heşlə müqayisə edir. OWASP aşağıdakı parametrlərlə Argon2id istifadəsini tövsiyə edir: vaxt 2 saniyə, yaddaş 64 MB, paralellik dərəcəsi 4.

Fayl bütövlüyünün yoxlanması

OBB paketləri və ya məzmun yeniləmələri kimi böyük faylları yükləyərkən, mobil tətbiqlər onların bütövlüyünü hashing vasitəsilə yoxlaya bilər. Server faylın SHA-256 heşini dərc edir, tətbiq isə yüklənmiş məlumatların heşini hesablayıb müqayisə edir. Bu, faylın ötürülmə zamanı zədələnmədiyini və ya dəyişdirilmədiyini təmin edir. Google Play Console (2025) məlumatlarına görə, sertifikatlaşdırılmış tətbiqlərin heş yoxlaması zədəli yükləmə hücumlarının 99.9%-nə qədərinin qarşısını alır.

Keşləmə və deduplikasiya

Heşlər səmərəli keşlər və məlumat deduplikasiyası qurmaq üçün fəal istifadə olunur. Şəkil ünvanı və ya JSON cavabı heşlənir və keş açarı kimi istifadə olunur: təkrarı sorğu zamanı sistem heşləri müqayisə edir və məlumatlar dəyişməyibsə, saxlanılan nəticəni qaytarır. Bu tapşırıq üçün maksimum performans təmin edən MurmurHash və ya xxHash kimi qeyri-kriptoqrafik heş funksiyaları uyğundur.

kotlin
import java.security.MessageDigest

fun calculateFileHash(fileBytes: ByteArray): String {
    val digest = MessageDigest.getInstance("SHA-256")
    val hash = digest.digest(fileBytes)
    return hash.joinToString("") { String.format("%02x", it) }
}

fun verifyIntegrity(data: ByteArray, expectedHash: String): Boolean {
    val actualHash = calculateFileHash(data)
    return actualHash == expectedHash
}

Heşlərdən istifadədə tipik səhvlər

Hətta təcrübəli tərtibatçılar hashing ilə işləyərkən səhvlərə yol verirlər. Kriptoqrafik qorumanın bütün üstünlüklərini puç edə biləcək ən geniş yayılmış problemləri nəzərdən keçirək.

MD5 və ya SHA-1 istifadəsi

MD5 və SHA-1 — kolliziya hücumlarının praktiki mövcud olduğu köhnəlmiş alqoritmlərdir. MD5 2004-cü ildə Çinli tədqiqatçılar qrupu tərəfindən (bir saat ərzində kolliziya) qırılmışdır. SHA-1 2017-ci ildə Google və Centrum Wiskunde & Informatica komandası tərəfindən (SHAttered hücumu) qırılmışdır. Bu alqoritmlərin yeni layihələrdə istifadəsi OWASP təsnifatına görə kobud təhlükəsizlik səhvi hesab olunur.

Duzsuz heşləmə

Şifrələrin duz olmadan heşlənməsi — kritik zəiflikdir. Duz, hər istifadəçi üçün unikal olan və şifrəyə heşləmədən əvvəl əlavə edilən təsadüfi sətrdir. Duz olmadan iki eyni şifrə eyni heşi verəcək, bu da brute-force üçün göy qurşağı cədvəllərindən istifadəyə imkan verir. OWASP hər istifadəçi üçün ayrıca yaradılan kriptoqrafik cəhətdən güclü ən azı 32 bayt uzunluğunda duz istifadəsini tövsiyə edir.

Qeyri-kafi iterasiya sayı

Hətta bcrypt və ya Argon2 istifadə edərkən belə, çox aşağı xərc parametri seçməklə qorumanı zəiflətmək olar. OWASP (2025) məlumatlarına görə, bcrypt üçün minimum iterasiya sayı 10 (2^10 = 1024 iterasiya), Argon2id üçün isə hədəf platformada hesablama müddəti ən azı 1 saniyə olmalıdır. Çox aşağı parametrlər brute-force hücumlarını GPU fermalarında praktiki olaraq həyata keçirilə bilən edir.

Tez-tez verilən suallar

Hashing ilə şifrələmə arasındakı fərq nədir?

Hashing — nəticəsi orijinal məlumatlara çevrilə bilməyən birtərəfli prosesdir. Şifrələmə ikitərəfli prosesdir: şifrələnmiş məlumatlar açar köməyilə deşifrə edilə bilər. Hashing şifrələrin saxlanması və bütövlüyün yoxlanması üçün, şifrələmə isə müştəri ilə server arasında məlumatların məxfi ötürülməsi üçün istifadə olunur.

Şifrələr üçün hansı heşləmə alqoritmi daha yaxşıdır?

OWASP GPU hücumlarına və yan kanal hücumlarına qarşı konfiqurasiya oluna bilən qoruma sayəsində şifrələrin heşlənməsi üçün Argon2id-i ən yaxşı seçim kimi tövsiyə edir. Alternativlər: bcrypt (sınaqdan keçmiş və konfiqurasiyası asan), scrypt (ASIC hücumlarına davamlı) və PBKDF2. SHA-256 və SHA-512 şifrələr üçün uyğun deyil — onlar çox sürətlidir və kütləvi brute-forcedən qorumur.

Heş funksiyasının kolliziyası nədir və niyə təhlükəlidir?

Kolliziya — iki fərqli giriş məlumat dəstinin eyni heşi verdiyi vəziyyətdir. Kriptoqrafik heş funksiyaları üçün kolliziyaların tapılması hesablama baxımından qeyri-mümkün olmalıdır. Məsələn, iki təsadüfi mesaj üçün SHA-256 kolliziyası ehtimalı təxminən 2^128-də 1-dir — bu cüzi dərəcədə kiçik dəyərdir.

bcrypt-ə duzu əl ilə əlavə etmək lazımdırmı?

Xeyr, bcrypt öz alqoritminə avtomatik olaraq duz daxil edir. BCrypt.hashToString() çağırıldıqda, kitabxana kriptoqrafik cəhətdən güclü 16 baytlıq duz yaradır və onu heş və xərc parametri ilə birlikdə çıxış sətrinə daxil edir. Scrypt və Argon2 də eyni şəkildə işləyir. Ekspertlərin şifrələrin qorunması üçün ümumi heş funksiyaları əvəzinə ixtisaslaşdırılmış KDF istifadəsini tövsiyə etməsinin səbəblərindən biri də budur.

Zərərli proqramlardan qorunmaq üçün hashing istifadə etmək olarmı?

Bəli, heşlər faylların ağ və qara siyahılarını yaratmaq üçün istifadə olunur. Antivirus bazaları tanınmış zərərli proqramların heşlərini ehtiva edir. Lakin hücumçular proqramda bir baytı dəyişdirə bilər, bu da heşi tamamilə dəyişdirəcək. Buna görə müasir sistemlər yalnız dəqiq uyğunluqları deyil, həm də semantik cəhətdən oxşar faylları tapan fuzzy-hashing (SSDeep, TLSH) istifadə edir.

Nəticə

  • Hashing — məlumatların geri döndürülməzlik zəmanəti ilə sabit uzunluqlu sətrə birtərəfli çevrilməsi.
  • Kriptoqrafik heş funksiyaları kolliziyaya davamlılıq və uçqun effekti təmin edir.
  • SHA-256 — müasir sistemlərdə kriptoqrafik heşləmə üçün NIST standartı.
  • Parol KDF (bcrypt, Argon2, scrypt) şifrələrin təhlükəsiz saxlanması üçün məcburidir.
  • Duz göy qurşağı cədvəllərindən qoruyur və hər istifadəçi üçün unikal olmalıdır.
  • MD5 və SHA-1 qırılmış hesab olunur və yeni layihələrdə istifadə edilməməlidir.
  • Hashing şifrələrin saxlanması, məlumat bütövlüyünün yoxlanması, keşləmə və antivirus qorunması üçün tətbiq olunur.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun