Bosh sahifa Wiki SHA-1

SHA-1

SHA-1 — Secure Hash Algorithm 1 nomli, istalgan uzunlikdagi ma’lumotdan 160 bitlik digest hisoblaydigan kriptografik hash funksiyasi. U 1995-yilda AQShning NIST tashkiloti tomonidan standart sifatida e’lon qilingan va uzoq vaqt sertifikat, raqamli imzo, Git obyektlari hamda fayl yaxlitligini tekshirishda ishlatilgan. SHA-1 uchun amaliy collision hujumlari mavjudligi sababli yangi xavfsizlik protokollarida u ishonchli hash hisoblanmaydi.

Hisoblash tuzilishi

SHA-1 kirishni 512 bitlik bloklarga ajratadi. Xabarga avval 1 biti, keyin kerakli nol bitlar va yakunda asl uzunlikning 64 bitlik ifodasi qo‘shiladi. Ichki holat beshta 32 bitlik so‘zdan, ya’ni jami 160 bitdan iborat. Har blok 80 bosqich davomida mantiqiy funksiyalar, modulli qo‘shish va bit aylantirishlar bilan holatni yangilaydi. Yakuniy digest ko‘pincha 40 ta hexadecimal belgi ko‘rinishida yoziladi.

SHA1("abc") = a9993e364706816aba3e25717850c26c9cd0d89d

Digestdan asl xabarni bevosita qayta tiklash amali yo‘q. Biroq bu xususiyat collisionga chidamlilik bilan bir xil emas. Preimage hujumida berilgan digestga mos xabar, second-preimage hujumida esa mavjud xabardan farqli, shu digestli ikkinchi xabar qidiriladi. Collision hujumida hujumchi o‘zi tanlagan ikki turli xabar uchun bir xil digest topadi.

Collision zaifligi

Ideal 160 bitlik hash uchun umumiy collision birthday bound sabab taxminan 2^80 ish talab qiladi. SHA-1 tuzilmasidagi kriptotahlil bundan tezroq hujumlarni yaratdi. 2017-yilda SHAttered tajribasi ikki turli PDF fayl uchun bir xil SHA-1 digestni amalda namoyish etdi. Keyingi chosen-prefix usullari hujumchiga tanlangan turli prefikslarni collisionga olib kelishni yanada amaliy qildi.

Collision raqamli imzo tizimida xavfli: imzolanuvchi zararsiz hujjat hashini tasdiqlaydi, ayni hashga ega zararli hujjat esa o‘sha signature bilan mos kelishi mumkin. Shu sababli SHA-1 asosidagi yangi sertifikat va code-signing imzolari bekor qilingan. Oddiy fayl yuklash sahifasida SHA-1 ko‘rsatilishi ham zararli almashtirishga qarshi mustaqil autentiklik bermaydi.

Meros tizimlaridagi holati

Git tarixan obyekt nomini obyekt turi, uzunligi va mazmunining SHA-1 hashi bilan belgilagan. Gitning xavfsizligi faqat “tasodifiy collision bo‘lmaydi” degan fikrga tayanmasligi uchun collision aniqlash va SHA-256 repository formatiga o‘tish ishlari mavjud. SHA-1 commit identifikatorini ko‘rish uning muallif tomonidan imzolanganini anglatmaydi; commit signature alohida mexanizmdir.

TLS, X.509 va paket distributsiyasida SHA-256 yoki kuchliroq oilalar qo‘llanadi. Eski protokol bilan moslik uchun SHA-1 qiymatini hisoblash mumkin, ammo u xavfsizlik qarorining yagona dalili bo‘lmaydi. Migratsiyada ma’lumot formati, sertifikat zanjiri, client qo‘llovi va imzo algoritmi birgalikda yangilanadi.

Parol va MAC

Oddiy SHA-1 parol saqlash uchun juda tez. Salt qo‘shish bir xil parollarni ajratadi, lekin GPU orqali ko‘p taxminni tez tekshirishni to‘xtatmaydi. Parollar Argon2id, scrypt, bcrypt yoki mos parametrli PBKDF2 bilan saqlanadi. Autentifikatsiya kodi kerak bo‘lsa, SHA1(secret || message) kabi maxsus konstruktsiya o‘rniga HMAC ishlatiladi.

HMAC-SHA-1 collision hujumidan oddiy signature sxemasidek foydalanmaydi va ayrim meros protokollarda saqlanib qolgan. Shunga qaramay, yangi dizayn algoritm mosligi va uzoq muddatli xavfsizlik uchun HMAC-SHA-256 kabi variantni tanlaydi. Algoritm nomi ma’lumot bilan versiyalanadi, aks holda keyingi migratsiya qiyinlashadi.

SHA-1 digestini faqat uzunroq formatga encode qilish yoki ikki marta SHA-1 hisoblash uning ma’lum strukturaviy zaifligini zamonaviy hash darajasiga ko‘tarmaydi. Migratsiya haqiqiy SHA-256 yoki tegishli standart algoritmga o‘tishni talab qiladi.

Bog‘liq tushunchalar

Hash function, SHA-256, Collision attack, Digital signature, HMAC, Git object, Birthday attack