Double Ratchet

Double Ratchet (o‘zbekcha: ikki tomonlama ratchet algoritmi) — himoyalangan xabar almashish tizimlarida sessiya kalitlarini bosqichma-bosqich yangilash uchun mo‘ljallangan kriptografik algoritm.

Algoritm ikki tomon o‘rtasida avvaldan hosil qilingan umumiy maxfiy kalit asosida ishlaydi. U har bir yuborilgan yoki qabul qilingan xabar uchun yangi xabar kalitini hosil qiladi hamda muloqot davomida Diffie–Hellman kalitlarini yangilab boradi.[1]

Double Ratchet odatda dastlabki umumiy maxfiy kalitni hosil qiluvchi boshqa kalitlarni kelishish protokoli bilan birga qo‘llaniladi. Bunday protokollarga X3DH yoki PQXDH misol bo‘la oladi.[2][3]

Tarixi

Double Ratchet algoritmi Trevor Perrin va Moxie Marlinspike tomonidan ishlab chiqilgan. Rasmiy spetsifikatsiyada Diffie–Hellman ratchet konsepsiyasining ayrim g‘oyalari OTR protokoliga borib taqalishi qayd etilgan.[1]

“Ratchet” atamasi kriptografik kalitlarni faqat oldinga yo‘nalishda yangilab borish tamoyilini anglatadi. Ushbu yondashuvda keyingi kalitlar hosil qilinadi, avvalgi kalitlar esa amalda qayta tiklanmasligi yoki ulardan oldingi xabarlarni ochish uchun foydalanilmasligi kerak.

Maqsadi

Double Ratchet algoritmining asosiy maqsadi xabar almashish sessiyasida kalitlarni muntazam yangilab borishdan iborat.

Algoritm quyidagi vazifalarni bajarishga mo‘ljallangan:

har bir xabar uchun alohida shifrlash kalitini hosil qilish; avvalgi xabar kalitlarining keyingi kalitlardan hosil qilinishining oldini olish; yangi Diffie–Hellman qiymatlari asosida sessiya kalitlarini yangilash; foydalanuvchilardan birining joriy kalitlari oshkor bo‘lgan taqdirda, keyingi muloqotda himoyani tiklash imkoniyatini yaratish; kechikib kelgan yoki tartibsiz yetkazilgan xabarlarni qayta ishlash.

Double Ratchet mustaqil xabar almashish tizimi emas. U odatda foydalanuvchilarni aniqlash, dastlabki sessiyani yaratish, xabarlarni yetkazib berish va fayllarni uzatish mexanizmlaridan iborat kattaroq kriptografik tizimning tarkibiy qismi sifatida qo‘llaniladi.[1]

Asosiy tamoyili

Double Ratchet ikki turdagi kalitlarni yangilash mexanizmini birlashtiradi:

simmetrik kalitli ratchet; Diffie–Hellman ratchet.

Ushbu ikki mexanizm birgalikda ishlagani uchun algoritm “Double Ratchet” deb ataladi.[1]

Simmetrik kalitli ratchet

Simmetrik kalitli ratchet xabar yuborilgan yoki qabul qilingan har bir safar kalit hosil qilish zanjirini yangilaydi.

Har bir yo‘nalish uchun alohida kalitlar zanjiri mavjud bo‘ladi:

yuborish zanjiri; qabul qilish zanjiri.

Yuboruvchi yangi xabar yuborishdan oldin yuborish zanjiridan yangi xabar kalitini hosil qiladi. Qabul qiluvchi esa kelgan xabarni ochish uchun qabul qilish zanjiridan mos xabar kalitini hosil qiladi.

Har bir xabar uchun alohida kalitdan foydalanish xabar kalitlarining bir-biridan ajratilganligini ta’minlashga yordam beradi. Eski xabar kaliti shifrlash yoki ochish jarayonidan keyin o‘chirib tashlanishi mumkin.[1]

Diffie–Hellman ratchet

Diffie–Hellman ratchet muloqot davomida yangi Diffie–Hellman kalit juftlarini yaratish orqali sessiya kalitlarini yangilaydi.

Har bir tomon joriy ratchet kalit juftiga ega bo‘ladi. Yuborilgan xabar sarlavhasida odatda yuboruvchining joriy ratchet ochiq kaliti ko‘rsatiladi.

Tomonlardan biri boshqa tomondan yangi ratchet ochiq kalitini olganda, u yangi Diffie–Hellman hisoblashini bajaradi. Hosil qilingan qiymat asosiy kalitlar zanjiriga kiritiladi va undan yangi yuborish hamda qabul qilish zanjirlari uchun kalitlar hosil qilinadi.[1]

Diffie–Hellman ratchetning maqsadi faqat bitta kalitlar zanjiriga bog‘lanib qolmaslikdir. Agar tajovuzkor ma’lum bir vaqtda sessiyaning ayrim kalitlarini qo‘lga kiritsa, keyinchalik yaratilgan yangi Diffie–Hellman qiymati unga ma’lum bo‘lmasa, kelajakdagi xabar kalitlarini hisoblash imkoniyati kamayadi.[1]

Asosiy kalitlar zanjiri

Double Ratchetda asosiy kalitlar zanjiri mavjud bo‘ladi. Ushbu zanjir Diffie–Hellman hisoblashidan olingan yangi qiymatlarni qabul qiladi.

Asosiy kalitlar zanjiri natijasida yangi yuborish va qabul qilish zanjirlari uchun kalitlar hosil qilinadi. Bu mexanizm simmetrik kalitli ratchetning oldingi xabarlar uchun himoyasini Diffie–Hellman ratchetning keyingi muloqot uchun himoyasi bilan birlashtiradi.[1]

Ishlash jarayoni

Double Ratchet sessiyasi odatda dastlabki umumiy maxfiy kalit va qabul qiluvchining ratchet ochiq kaliti bilan ishga tushiriladi.

Sessiya davomida quyidagi jarayonlar bajariladi:

yuboruvchi yuborish zanjiridan yangi xabar kalitini hosil qiladi; xabar ushbu kalit yordamida shifrlanadi; yuboruvchi xabar sarlavhasiga ratchet ochiq kaliti va xabar tartib raqamiga oid ma’lumotlarni kiritadi; qabul qiluvchi xabar sarlavhasini tekshiradi; agar yangi ratchet ochiq kaliti aniqlansa, Diffie–Hellman ratchet bosqichi bajariladi; qabul qiluvchi qabul qilish zanjiridan mos xabar kalitini hosil qiladi; xabar ochiladi va sessiya holati yangilanadi.[1]

Xabar sarlavhasida odatda quyidagi texnik ma’lumotlar bo‘ladi:

yuboruvchining joriy ratchet ochiq kaliti; oldingi yuborish zanjirining uzunligi; joriy yuborish zanjiridagi xabar tartib raqami.

Bu ma’lumotlar qabul qiluvchiga qaysi kalitlar zanjiridan foydalanish kerakligini aniqlashga yordam beradi.[1]

Tartibsiz yetkazilgan xabarlar

Tarmoqlarda xabarlar kechikib kelishi, ayrim xabarlar vaqtincha yo‘qolishi yoki xabarlar tartibsiz yetkazilishi mumkin.

Double Ratchet bunday holatlarni qayta ishlash uchun kechiktirilgan xabar kalitlarini vaqtincha saqlash imkoniyatini nazarda tutadi. Agar qabul qiluvchi keyingi tartib raqamli xabarni olsa, u o‘tkazib yuborilgan xabarlar uchun kalitlarni hisoblab, keyinchalik foydalanish uchun saqlashi mumkin.

Kechiktirilgan xabar yetib kelganda, unga mos saqlangan xabar kaliti ishlatiladi. Xabar muvaffaqiyatli ochilgandan so‘ng ushbu kalit o‘chiriladi.[1]

Kechiktirilgan xabar kalitlarini haddan tashqari ko‘p saqlash xotira sarfi va xizmat ko‘rsatishni rad etish hujumlari xavfini oshirishi mumkin. Shu sababli spetsifikatsiyada bunday kalitlar soni uchun oqilona cheklov belgilash hamda foydalanilmay qolgan kalitlarni vaqt o‘tishi bilan o‘chirish tavsiya etiladi.[1]

Sarlavhani shifrlash

Double Ratchet algoritmining sarlavhani shifrlashga mo‘ljallangan varianti ham mavjud.

Oddiy variantda xabar sarlavhasi ratchet ochiq kaliti va xabarlarning tartib raqamlariga oid ma’lumotlarni o‘z ichiga oladi. Ayrim holatlarda bu ma’lumotlar tashqi kuzatuvchiga qaysi xabarlar bitta sessiyaga tegishli ekanini yoki ularning ketma-ketligini taxmin qilish imkonini berishi mumkin.

Sarlavhani shifrlash variantida xabar sarlavhasi alohida simmetrik sarlavha kalitlari yordamida shifrlanadi. Bu mexanizm kuzatuvchining xabarlar sessiyasi va tartibi haqidagi ma’lumotlarni aniqlashini cheklashga xizmat qiladi.[1]

Xavfsizlik xususiyatlari

Oldinga yo‘naltirilgan maxfiylik

Double Ratchet oldinga yo‘naltirilgan maxfiylik xususiyatini ta’minlashga mo‘ljallangan.

Ushbu xususiyatga ko‘ra, tajovuzkor ma’lum vaqt nuqtasida sessiyaning joriy kalitini qo‘lga kiritsa, avvalgi xabarlar kalitlarini keyingi kalitlar asosida hisoblash imkoniyati cheklanadi.

Bu xususiyat xabar kalitlarining muntazam yangilanishi va oldingi kalitlarning o‘chirib tashlanishi bilan bog‘liq.[1]

Buzilishdan keyingi tiklanish

Double Ratchet protokolida buzilishdan keyingi tiklanish xususiyati ham mavjud.

Agar tajovuzkor ma’lum bir vaqtda yuborish yoki qabul qilish kalitlari zanjiriga ega bo‘lib qolsa, u kelajakdagi xabarlarni ochishga urinishi mumkin. Biroq tomonlar yangi Diffie–Hellman kalitlari bilan almashgandan so‘ng, yangi maxfiy qiymatlar asosida yangilangan kalitlar zanjiri hosil qilinadi.

Agar yangi Diffie–Hellman qiymati tajovuzkorga ma’lum bo‘lmasa, keyingi xabarlar uchun himoya darajasi qayta tiklanishi mumkin.[1]

Xabar kalitlarining ajratilganligi

Double Ratchetda har bir xabar uchun alohida kalit hosil qilinadi. Shu sababli bitta xabar kalitining oshkor bo‘lishi boshqa xabarlar kalitlarini avtomatik ravishda oshkor qilmasligi kerak.

Ushbu yondashuv xabarlar xavfsizligini sessiya darajasida emas, balki alohida xabarlar darajasida ajratishga yordam beradi.[1]

Cheklovlari va xavflar

Double Ratchet algoritmi xavfsizlik tizimining faqat bir qismini tashkil etadi. Uning himoya darajasi dastlabki kalitlarni kelishish protokoli, foydalanuvchi identifikatsiyasi, qurilma xavfsizligi va dasturiy amalga oshirish sifatiga ham bog‘liq.

Algoritm bilan bog‘liq ayrim cheklovlar quyidagilardan iborat:

u dastlabki umumiy maxfiy kalitni mustaqil yaratmaydi; foydalanuvchi identifikatsiya kalitlarini ishonchli tekshirish alohida mexanizmlarni talab qiladi; qurilmadagi sessiya holati va yopiq kalitlar himoyalangan saqlanishi kerak; xabarlar sarlavhasi standart variantda ayrim texnik metadata ma’lumotlarini oshkor qilishi mumkin; xabar kalitlari yoki sessiya holatining noto‘g‘ri zaxiralangan nusxalari xavfsizlikka ta’sir qilishi mumkin; kechiktirilgan xabar kalitlarini haddan tashqari ko‘p saqlash xotira sarfi va xizmat ko‘rsatishni rad etish xavfini oshirishi mumkin.[1]

Qo‘llanilishi

Double Ratchet asinxron himoyalangan xabar almashish tizimlarida qo‘llaniladi.

U odatda quyidagi tarkibiy qismlar bilan birga ishlatiladi:

dastlabki kalitlarni kelishish protokoli; foydalanuvchilar identifikatsiyasi; xabarlarni autentifikatsiyalangan shifrlash mexanizmi; xabarlarni yetkazib berish serveri; sessiyalarni boshqarish mexanizmi; qurilmalar bo‘yicha alohida sessiyalarni yuritish tizimi.

Signal spetsifikatsiyalarida X3DH kabi asinxron kalitlarni kelishish protokollari orqali yaratilgan sessiyalarni Double Ratchet yordamida yuritish yondashuvi tavsiflangan.[2][4]

Shuningdek qarang

X3DH PQXDH Diffie–Hellman kalit almashinuvi Elliptik egri chiziqli kriptografiya HKDF Signal protokoli Uchdan uchgacha shifrlash Kalitlarni kelishish protokoli

Manbalar

  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 1,13 1,14 1,15 1,16 The Double Ratchet Algorithm. Signal. Qaraldi: 23-iyun 2026-yil.
  2. 2,0 2,1 The X3DH Key Agreement Protocol. Signal. Qaraldi: 23-iyun 2026-yil.
  3. The PQXDH Key Agreement Protocol. Signal. Qaraldi: 23-iyun 2026-yil.
  4. The Sesame Algorithm. Signal. Qaraldi: 23-iyun 2026-yil.

Tashqi havolalar

Double Ratchet rasmiy spetsifikatsiyasi X3DH rasmiy spetsifikatsiyasi Sesame algoritmi spetsifikatsiyasi

Turkum protokollar Turkum kalitli kriptografiya Turkum xavfsizligi Turkum boshqarish Turkum xabar almashish

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.