Bosh sahifa Wiki Nonce

Nonce

Nonce — “number used once” iborasidan kelib chiqqan, kriptografik yoki xavfsizlik protokolida ma’lum doirada bir marta ishlatilishi kerak bo‘lgan qiymat. Nonce har doim maxfiy bo‘lishi shart emas. Uning asosiy xususiyati takrorlanmaslik, ayrim protokollarda esa oldindan topib bo‘lmaslikdir. Challenge-response, authenticated encryption, CSP va blockchain kabi tizimlarda nonce turli vazifani bajaradi; talablar kontekstga qarab farqlanadi.

Challenge nonce

Server autentifikatsiya so‘rovida yangi tasodifiy challenge yuboradi. Client uni private key yoki shared secret bilan bog‘langan amal orqali tasdiqlaydi. Server ayni nonce’ni kutayotgan sessiya bilan solishtiradi va ishlatilgach bekor qiladi. Hujumchi eski haqiqiy javobni qayta yuborsa, yangi challengega mos kelmaydi va replay rad etiladi.

Nonce yetarli entropiyali bo‘lishi kerak. Vaqt tamg‘asi yoki ketma-ket ID tashqaridan taxmin qilinsa, hujumchi oldindan javob tayyorlashga urinishi mumkin. Server kriptografik random generator ishlatadi, expiry va bir martalik holatni saqlaydi. Bir nechta server nusxasi nonce store yoki imzolangan state orqali replay holatini muvofiqlashtiradi.

AEAD va shifrlash

AES-GCM va ChaCha20-Poly1305 kabi AEAD algoritmlarida nonce ayni kalit bilan takrorlanmasligi kerak. Nonce secret emas va ciphertext bilan birga saqlanishi mumkin. AES-GCMda key–nonce juftligini qayta ishlatish plaintextlar orasidagi munosabatni ochishi va authentication key haqida ma’lumot berib, soxta tag yaratishga olib kelishi mumkin.

Nonce tasodifiy, counterga asoslangan yoki protokol sequence numberidan tuzilishi mumkin. Tasodifiy nonce uchun collision ehtimoli uzunlik va xabarlar soniga bog‘liq; katta hajmda birthday bound hisobga olinadi. Counter nonce restartdan keyin ortga qaytmasligi va parallel writerlar orasida bo‘linishi kerak. Distributed tizimda node ID va counter kombinatsiyasi ishlatilishi mumkin, ammo bitlar taqsimoti va overflow aniq belgilanadi.

CSP nonce

Content Security Policy’da nonce server tasdiqlagan inline script yoki style elementini belgilaydi. Har HTML javob uchun yangi tasodifiy qiymat yaratiladi, CSP header va teg atributiga bir xil qiymat qo‘yiladi:

Content-Security-Policy: script-src 'nonce-bXkt...'

Nonce attacker kiritgan HTML ichiga nusxalanmasligi kerak. DOMni serializatsiya qilish yoki nonce’ni data atributida oshkor qilish XSSga undan foydalanish imkonini beradi. Javob cache qilinsa, bir nonce ko‘p foydalanuvchiga takror tarqalmasligi uchun cache va header generatsiyasi moslashtiriladi.

OAuth va OpenID Connect

OpenID Connect nonce qiymati client boshlagan authentication request bilan qaytgan ID tokenni bog‘laydi. Client tasodifiy nonce’ni sessiyada saqlaydi, authorization so‘roviga qo‘shadi va ID tokendagi claimni tekshiradi. Bu eski ID tokenni boshqa login oqimida replay qilishni cheklaydi. OAuth state esa asosan authorization response’ni client sessiyasi bilan korrelatsiya qilish va CSRFdan himoya qilish vazifasiga ega; ikki qiymatning semantikasi bir xil emas.

Blockchain nonce

Proof-of-Work blockchain’da miner block header hashini qiyinlik shartiga moslashtirish uchun nonce maydonini o‘zgartiradi. Bu yerda “bir marta ishlatilish” talabi autentifikatsiya protokolidagidek emas; nonce qidiruv maydonining bir qismidir. Maydon tugasa, miner coinbase yoki boshqa header qismini o‘zgartirib yangi qidiruv maydoni oladi.

Account-based blockchain’da transaction nonce hisob yuborgan tranzaksiyalar ketma-ketligini belgilashi va replayni oldini olishi mumkin. Bir xil hisobdan parallel tranzaksiyalar nonce tartibiga bog‘liq. Turli tizimlardagi nonce nomi o‘xshash bo‘lsa ham, randomlik, maxfiylik va noyoblik talablarini protokol hujjati belgilaydi.

Bog‘liq tushunchalar

Replay attack, Initialization vector, AES-GCM, CSP, OpenID Connect, Counter, Proof of Work