iman Messenger xavfsizlik oq kitobi: protokol, tahdid modeli va cheklovlar
- Nashr etuvchi:
- iman
- Chop etilgan:
- Yangilangan:
Qisqacha
Qisqa javob: iman Messenger’da faqat maxfiy chatlar (birma-bir, veb-ilova va Android ilovasida) uchdan uchgacha shifrlangan. Ular tayyor libsignal asosidagi kutubxonalar orqali Signal protokolidan (X3DH kalit kelishuvi va Double Ratchet) foydalanadi. Oddiy chatlar, guruhlar, kanallar va ko‘pchilik qo‘ng‘iroqlar uzatishda va bizning serverlarda saqlashda shifrlanadi, lekin iman ularni texnik jihatdan o‘qiy oladi. Mustaqil xavfsizlik auditi hozircha e’lon qilinmagan.
- Uchdan uchgacha shifrlangan: birma-bir maxfiy chatlardagi xabarlar va fayllar. Server faqat shifrlangan matnni saqlaydi va uzatadi.
- Uchdan uchgacha shifrlanmagan: oddiy chatlar, guruhlar, kanallar va maxfiy chatdan tashqaridagi qo‘ng‘iroqlar. Maxfiy chatdagi qo‘ng‘iroqlar faqat ikkala tomon kelishgan taqdirdagina kadrma-kadr shifrlanadi.
- Kalitlar almashtirilmaganini tekshirishingiz mumkin: 60 xonali xavfsizlik raqamini suhbatdosh bilan solishtiring.
- Server hamon metama’lumotlarni ko‘radi: kim kim bilan, qachon yozishgani, xabar hajmi va IP-manzillar.
- Holat: mustaqil audit va pullik bug bounty hozircha yo‘q. Xabarlar quyidagi aloqa manziliga qabul qilinadi.
Qamrov: nima uchdan uchgacha shifrlangan va nima yo‘q
| Nima | Uchdan uchgacha shifrlanganmi? | Nima himoya qiladi |
|---|---|---|
| Birma-bir maxfiy chatdagi xabarlar | Ha | Ikki qurilma o‘rtasidagi Signal protokoli sessiyalari. Server faqat shifrlangan matnni saqlaydi va uzatadi, maxfiy chatlarda ochiq matnni rad etadi. |
| Maxfiy chatdagi fayl va media | Ha | Yuboruvchining qurilmasida shifrlanadi. Media kaliti uchdan uchgacha shifrlangan xabar ichida uzatiladi, server esa maxfiy chatlarda faqat noma’lum shifrlangan fayllarni qabul qiladi. |
| Oddiy birma-bir chatlar | Yo‘q | Uzatishda TLS va saqlashda iman serveri tomonidagi kalit bilan shifrlash. iman ularni texnik jihatdan o‘qiy oladi. |
| Guruhlar va kanallar | Yo‘q | Oddiy chatlar kabi. Guruhlar va kanallar bulutli chatlar; guruh yuboruvchi kalitlari ishlatilmaydi. |
| Maxfiy chatdagi birma-bir qo‘ng‘iroqlar | Faqat kelishilganda | Ikkala mijoz qo‘llab-quvvatlasa va qo‘ng‘iroq kaliti almashilgan bo‘lsa, DTLS-SRTP ustida kadr darajasidagi shifrlash. Aks holda qo‘ng‘iroq faqat transport darajasida himoyalangan deb belgilanadi. “Qo‘ng‘iroqlar” bo‘limiga qarang. |
| Boshqa barcha qo‘ng‘iroqlar | Yo‘q | Tugunlar o‘rtasida DTLS-SRTP. Relay va media-server operatorlari mediadan chetlatilmagan. |
| Push-bildirishnomalar | Taalluqli emas | “Push-bildirishnomalar” bo‘limiga qarang. |
Serverga kontentni o‘qish kerak bo‘ladigan imkoniyatlar, masalan so‘rovnomalar va jonli joylashuv, maxfiy chatlarda mavjud emas. Maxfiy chatlar veb-ilova va Android ilovasida bor. Bu hujjat boshqa mijozlar haqida hech narsa da’vo qilmaydi.
Protokol va primitivlar
- Kalit kelishuvi: X3DH (Extended Triple Diffie-Hellman). Har bir qurilmada identifikatsiya kaliti, imzolangan prekey, bir martalik prekeylar to‘plami va zaxira (last-resort) prekey bor.
- Xabarlarni shifrlash: Double Ratchet, u xabar kalitlari uchun oldinga maxfiylikni va kompromatsiyadan keyin himoyani tiklashni ta’minlaydi.
- Amalga oshirish: veb-ilova ochiq @privacyresearch/libsignal-protocol-typescript kutubxonasidan foydalanadi, bu jamoaning TypeScript porti. Android signal-protocol-java 2.8.1 (org.whispersystems) dan foydalanadi. iman xabar mazmuni uchun o‘z shifrini yozmaydi. Primitivlar shu kutubxonalar hujjatlaridagi kabi (Curve25519 va XEdDSA, xabar matnlari uchun HMAC-SHA256 bilan AES-CBC).
- Tarmoqdagi format: maxfiy chatlarda server faqat signal-v1 (bitta qurilma) va signal-v1-md (qabul qiluvchining har bir qurilmasi uchun bittadan konvert) algoritm belgilarini qabul qiladi. U yerda ochiq matn, GIF va stiker havolalari hamda so‘rovnomalar rad etiladi.
- Prekey gigienasi: imzolangan prekey taxminan haftada bir almashtiriladi, eskisining yopiq qismi kech kelgan birinchi xabarlar hali ochilishi uchun 14 kun saqlanadi va keyin o‘chiriladi. Server zaxira kam ekanini bildirganda bir martalik prekeylar to‘ldiriladi.
- Kalit ro‘yxatdan o‘tkazishda egalik isboti: yangi qurilma yoki almashtirilgan identifikatsiya kaliti identifikatsiya yopiq kaliti egaligini isbotlashi shart (qat’iy kontekst qatori ustidan XEdDSA imzosi, 5 daqiqa ichidagi vaqt tamg‘asi va bir martalik nonce). Bu boshqa akkauntning nusxalangan ochiq to‘plamni ro‘yxatdan o‘tkazishiga yo‘l qo‘ymaydi. Server buni o‘z sozlamasidagi majburiylik sanasi kelgach talab qiladi.
Tahdid modeli
Maxfiy chatlar xabar va fayl mazmunini quyidagilardan himoya qilish uchun mo‘ljallangan:
- tarmoqni kuzatayotgan har qanday kishidan (TLS va uchdan uchgacha shifrlash);
- iman ma’lumotlar bazasi nusxasini yoki server zaxira nusxasini qo‘lga kiritgan kishidan;
- xabarlarni faqat saqlab va uzatib turadigan iman serveridan, suhbatdoshingizning xavfsizlik raqamini tekshirgan bo‘lsangiz.
Ular quyidagilardan himoya qilmaydi:
- buzilgan, qulfi ochiq yoki zararli dastur yuqqan qurilmadan, shuningdek ikkinchi ishtirokchi olgan ekran surati yoki nusxadan;
- xavfsizlik raqamini tekshirmasdan oldin kalitlarni almashtiradigan zararkunanda serverdan (birinchi foydalanishdagi ishonch);
- o‘zgartirilgan mijoz kodidan: veb-ilova har gal ochilganda iman serveridan yuklanadi, shuning uchun buzilgan server o‘zgartirilgan JavaScript berishi mumkin;
- trafik tahlili va metama’lumotlardan (“Metama’lumotlar” bo‘limiga qarang);
- bulutli chatlarda saqlanadigan har qanday narsa bo‘yicha operatorga huquqiy yoki boshqa tazyiqdan.
Kalitlarni tekshirish: xavfsizlik raqamlari va qo‘ng‘iroq kodlari
- Xavfsizlik raqami: Signal’ning 60 xonali raqamli barmoq izi (2-versiya), u qurilmangizda ikkala identifikatsiya kaliti va ikkala foydalanuvchi identifikatori asosida hisoblanadi (SHA-512, 5 200 iteratsiya). Uni server hisoblamaydi, shuning uchun server uni soxtalashtira olmaydi. Ikkala tomon bir xil raqamni ko‘radi.
- Birinchi foydalanishdagi ishonch, har bir qurilma uchun alohida: suhbatdosh qurilmasining birinchi ko‘rilgan kaliti qabul qilinadi. Suhbatdoshning yangi qurilmasi bildirishnoma sifatida ko‘rsatiladi. Agar suhbatdoshni tekshirgan bo‘lsangiz, siz tekshirmagan yangi qurilma tekshirmaguningizcha yuborishni bloklaydi. O‘zgargan identifikatsiya kaliti ekranga chiqariladi va ilova uni tekshirishni so‘raydi.
- Bir nechta qurilma: har bir qurilmaning o‘z xavfsizlik raqami bor. Bir nechta kalit uchun umumiy qiymat imanning o‘z kengaytmasi (kalit dayjestlari XOR bilan birlashtirilgan) va uning etalon test vektori yo‘q.
- Qo‘ng‘iroq kodi: qo‘ng‘iroqning ikki chekka nuqtasidagi DTLS barmoq izlaridan olingan 6 xonali kod (iman-dtls-sha256-6d-v1 algoritmi). Bu million holatdan birini tekshirish, majburiyat (commitment) bosqichi yo‘q, ZRTP emas va Signal kanalidan keladigan kadr shifrlash kaliti haqida hech narsa demaydi.
- Kalit shaffofligi jurnali yo‘q. Tekshirish qo‘lda bajariladi.
Metama’lumotlar
Maxfiy chatlarda ham server akkaunt identifikatorlarini, xabar qaysi suhbatga tegishli ekanini, a’zolikni, vaqtni, xabar va fayl hajmini, IP-manzillarni hamda qurilma va push ro‘yxatga olish ma’lumotlarini qayta ishlashi shart. Uchdan uchgacha shifrlash mazmunni himoya qiladi, bu ma’lumotlarni emas. “Oxirgi marta onlayn” kabi maxfiylik sozlamalari boshqa foydalanuvchilar nimani ko‘rishini belgilaydi, server nimani ko‘rishini emas.
Oddiy chatlar, guruhlar va kanallar mazmuni serverda saqlashda shifrlangan holda turadi (“Qurilmalarda saqlash, zaxira nusxalar va akkauntni tiklash” bo‘limiga qarang).
Sealed sender: holat va cheklovlar
- Nima qiladi: maxfiy chatlarda muhrlangan xabar yuboruvchi shaxsisiz saqlanadi. Xabar yozuvida, suhbatning oxirgi xabar yuboruvchisida, sinxronlash jurnalida, qayta yetkazish navbatida va qabul qiluvchiga jo‘natiladigan ma’lumotda yuboruvchi identifikatori bo‘lmaydi. Haqiqiy yuboruvchi baribir muallif isboti (author proof) ko‘rsatib, xabarni hamma uchun o‘chira oladi; server uni faqat xesh sifatida saqlaydi.
- Qanday yetkaziladi: suhbatdosh kaliti imkon bersa, veb-ilova xabarni token o‘rniga suhbatga xos ruxsat (capability) bilan autentifikatsiyasiz yetkazish nuqtasi orqali yuboradi. Agar bu yo‘l ishlamasa, veb-ilova xabarni jimgina autentifikatsiya bilan qayta yubormaydi; bunday qayta urinishni har bir xabar uchun o‘zingiz tanlashingiz mumkin.
- Nima qilmaydi: bu tarmoq anonimligi emas va yuboruvchini operatordan yashirmaydi. Yuboruvchi shundan oldin autentifikatsiyalangan kalit so‘rovlarini yuborgan, IP-manzil va vaqt ko‘rinadi, ikki kishilik chatda esa yuboruvchi chiqarib tashlash usuli bilan ikkinchi a’zo bo‘lib chiqadi.
- Tekshiruv doirasi: biz bu xatti-harakatni veb-mijoz va server kodida tekshirdik. Android’da bir xil ishlashi bu yerda da’vo qilinmaydi.
Push-bildirishnomalar
- Maxfiy chatlar: bildirishnoma matni qat’iy umumiy jumla (“You have a new message”). Chat va yuboruvchi identifikatorlari push platforma provayderiga berilishidan oldin olib tashlanadi, bildirishnoma oqimi identifikatori o‘rnatilmaydi.
- Oddiy chatlar, guruhlar va kanallar: bildirishnomada yuboruvchi ismi va matn parchasi bo‘lishi mumkin. Ular Google va Apple push xizmatlari orqali o‘tadi.
- Bizning serverlarimizda kutilayotgan push matni saqlashda shifrlangan va push yetkazilgach tozalanadi.
Qo‘ng‘iroqlar
- Har bir qo‘ng‘iroq DTLS-SRTP bilan WebRTC’dan foydalanadi. Birma-bir qo‘ng‘iroqlar to‘g‘ridan-to‘g‘ri yoki relay orqali o‘tishi mumkin; media-server (SFU) orqali o‘tadigan qo‘ng‘iroqlar o‘sha yerda ochiladi, shuning uchun ular faqat transport darajasida himoyalangan, uchdan uchgacha emas.
- Maxfiy birma-bir qo‘ng‘iroqlar kadr darajasidagi uchdan uchgacha shifrlashni qo‘shishi mumkin: Insertable Streams orqali har bir media kadri uchun AES-256-GCM, oqim kalitlari ikki mijoz Signal bilan shifrlangan xabar ichida almashadigan qo‘ng‘iroq sirdan HKDF-SHA256 bilan olinadi. Serverda bu kalit yo‘q.
- Halol belgilash: server kadr shifrlashni faqat chat maxfiy bo‘lsa va barcha tomonlar qo‘llab-quvvatlashni e’lon qilgan bo‘lsa bildiradi. Mijoz uchdan uchgacha belgisini faqat o‘z shifri ishlayotgan va qo‘ng‘iroq kaliti kelgan bo‘lsa ko‘rsatadi. Qolgan hollarda qo‘ng‘iroq faqat transport darajasida himoyalangan deb belgilanadi.
- Holat: veb-ilova buni amalga oshiradi. Android’da kadr shifrlash yo‘li sukut bo‘yicha o‘chiq yig‘ish bayrog‘i (SECRET_CALL_FRAME_E2EE) ortida turadi, shuning uchun u yoqilmagan yig‘ishda Android qo‘ng‘iroqlari transport darajasida himoyalangan.
- Oddiy va guruh qo‘ng‘iroqlari uchun uchdan uchgacha shifrlash da’vo qilinmaydi.
Qurilmalarda saqlash, zaxira nusxalar va akkauntni tiklash
- Veb-qurilmada: brauzer IndexedDB’idagi Signal kalitlari, sessiyalar va ochilgan xabar ma’lumotlari eksport qilib bo‘lmaydigan WebCrypto kaliti ostida AES-256-GCM bilan himoyalangan. Ixtiyoriy PIN kalitlarni PBKDF2-HMAC-SHA256 (sukut bo‘yicha 600 000 iteratsiya) bilan o‘raydi. Cheklov: ilova qulfdan chiqarilganda o‘sha origin’da ishlayotgan kod kalitdan foydalana oladi, buzilgan qurilma esa bu himoyani yengib o‘tadi.
- Maxfiy chatlarning zaxira nusxasi yo‘q: server zaxirasi ham, kalitlarni saqlab turish ham yo‘q. Maxfiy chatlar faqat yaratilgan qurilmalarda mavjud. Hammasini yo‘qotsangiz, tarix yo‘qoladi. Shu raqam bilan qayta ro‘yxatdan o‘tish bulutli chatlarni qaytaradi, maxfiylarni emas.
- Serverdagi bulutli chatlar: xabar matni va ilovalar server tomonidagi kalitlar to‘plami ostida autentifikatsiyalangan shifrlash bilan saqlashda shifrlangan. Bu o‘g‘irlangan disk yoki baza nusxasidan himoya qiladi, kalitlarga ega operatordan emas.
Bir nechta qurilma
- Har bir qurilmaning o‘z identifikatsiya kaliti va Signal qurilma identifikatori bor. Yuboruvchi qabul qiluvchining har bir qurilmasi uchun alohida shifrlaydi (signal-v1-md konverti).
- Sozlamalarda maxfiy chatlaringizni o‘qiy oladigan qurilmalar ro‘yxati ko‘rsatiladi. Birini olib tashlash unga xabarlar kelishini to‘xtatadi va sessiyalarini yakunlaydi.
- Maxfiy chat tarixi yangi qurilmaga ko‘chirilmaydi.
- Tekshirilgan suhbatdosh siz tekshirmagan qurilma qo‘shsa, shu qurilmaning xavfsizlik raqamini solishtirmaguningizcha yuborish bloklanadi.
Yo‘qoladigan xabarlar
Maxfiy chatda chat taymerini ikkala ishtirokchidan istalgan biri o‘rnatishi mumkin. Muddati o‘tgan xabarlar serverdan davriy tozalash bilan jismonan o‘chiriladi. Taymer ikkinchi kishi qurilmasini nusxa, ekran surati yoki uzatilgan xabarni o‘chirishga majburlay olmaydi.
Ma’lum cheklovlar va kamchiliklar
- Guruhlar, kanallar va oddiy chatlar uchdan uchgacha shifrlanmagan.
- Maxfiy chatlar faqat birma-bir va faqat veb hamda Android ilovalarida mavjud.
- Xavfsizlik raqamini tekshirmaguningizcha zararkunanda server kalitlarni almashtirishi mumkin. Kalit shaffofligi jurnali yo‘q.
- Sealed sender tarmoq anonimligi emas.
- Veb-ilova har yuklanishda server bergan kodga ishonadi.
- Qo‘ng‘iroqlar: uchdan uchgacha faqat kelishilgan maxfiy birma-bir qo‘ng‘iroqlarda; Android’da yo‘l sukut bo‘yicha o‘chiq; qo‘ng‘iroq kodi kichik tekshiruv.
- Ko‘p qurilmali xavfsizlik raqami etalon vektorlarsiz maxsus kengaytma.
- Xabar hajmi, vaqti va ijtimoiy graf serverga ko‘rinadi.
- Kriptografiya uchinchi tomon kutubxonalariga tayanadi, ularning auditlarini biz nazorat qilmaymiz va iman ulardan qanday foydalanishi bo‘yicha mustaqil audit e’lon qilmaganmiz.
Audit, sinov va bug bounty holati
- Mustaqil uchinchi tomon xavfsizlik auditi: 2026-10-08 holatiga e’lon qilinmagan.
- Kriptografik dizaynning tashqi ekspertizasi: e’lon qilinmagan.
- Ichki ish: avtomatik testlar xavfsizlik raqami, kalitga ishonch, prekeylar va sealed sender’ni qamrab oladi, messenger 2026-10-03 kuni ichki ko‘rikdan o‘tgan. Ichki ko‘rik mustaqil audit emas; ushbu hujjatdagi da’volarni kompaniyaning o‘z bayonoti deb hisoblang.
- Bug bounty: hozir pullik dastur yo‘q.
- Bulardan biri o‘zgarsa, shu bo‘lim va o‘zgarishlar tarixi yangilanadi.
Mas’uliyatli oshkor qilish
Zaiflik topsangiz, quyidagi xavfsizlik aloqasiga yozing: nimani topganingiz, qanday takrorlash va qaysi platformaga tegishli ekanini ko‘rsating. Iltimos, boshqa odamlarning ma’lumotlariga kirmang, xizmat ishini buzmang va biz javob berishga ulgurmaguncha muammoni oshkor qilmang. Biz mukofot taklif qilmaymiz va javob muddati bo‘yicha majburiyatni hali e’lon qilmaymiz. Mashina o‘qiy oladigan aloqa /.well-known/security.txt faylida.
Xavfsizlik bo‘yicha aloqa: privacy@iman.tj
iman maxfiy chatida suhbatdoshning xavfsizlik raqamini qanday tekshirish
Maxfiy chatingiz shifrlash kalitlari almashtirilmaganiga ishonch hosil qilish uchun 60 xonali xavfsizlik raqamini suhbatdosh bilan solishtiring.
1. Maxfiy chatni oching
Veb-ilova yoki Android ilovasida suhbatdosh bilan maxfiy chat boshlang yoki oching. Uchdan uchgacha shifrlanganlari aynan maxfiy chatlar.
2. Xavfsizlik raqamini oching
Chatning xavfsizlik ma’lumotlarini oching va xavfsizlik raqamini ko‘rish uchun “Tekshirish” (Verify) ni tanlang: beshtalik guruhlardagi 60 raqam.
3. Alohida kanal orqali solishtiring
Raqamni suhbatdosh ekranidagi bilan yuzma-yuz yoki ovozini taniydigan qo‘ng‘iroqda solishtiring. Solishtirish uchun shu chatning o‘zidan foydalanmang.
4. Faqat mos kelsa tasdiqlang
Raqamlar bir xil bo‘lsa, suhbatdoshni tekshirilgan deb belgilang. Farq qilsa, tasdiqlamang: har bir qurilmaning o‘z raqami bor, shuning uchun suhbatdosh foydalanayotgan qurilma raqamini solishtirayotganingizni tekshiring, doimiy nomuvofiqlikni esa mumkin bo‘lgan tutib olish deb hisoblang.
5. O‘zgarish haqidagi xabardan keyin qayta tekshiring
Agar iman xavfsizlik raqami o‘zgarganini yoki suhbatdosh yangi qurilma ro‘yxatdan o‘tkazganini ko‘rsatsa, muhim narsa yuborishdan oldin yana solishtiring.
6. Xohlasangiz qo‘ng‘iroq kodini tekshiring
Qo‘ng‘iroq paytida 6 xonali qo‘ng‘iroq kodini suhbatdosh bilan xuddi shunday solishtiring. U qo‘ng‘iroq ulanishini tekshiradi, xabar kalitlarini emas.
Savol va javoblar
- iman Messenger uchdan uchgacha shifrlanganmi?
- Faqat maxfiy chatlar: bular veb va Android ilovalaridagi birma-bir chatlar, Signal protokolida. Oddiy chatlar, guruhlar, kanallar va ko‘pchilik qo‘ng‘iroqlar uzatishda va serverda saqlashda shifrlanadi, lekin uchdan uchgacha shifrlanmagan.
- iman mening oddiy chatlarimni o‘qiy oladimi?
- Texnik jihatdan ha. Oddiy chatlar, guruhlar va kanallar serverda saqlashda shifrlangan holda turadi, kalit esa server tomonida. iman o‘qiy olmasligi kerak bo‘lgan suhbatlar uchun maxfiy chatdan foydalaning.
- iman maxfiy chatlarda qaysi shifrlash protokolidan foydalanadi?
- Signal protokoli: X3DH kalit kelishuvi va Double Ratchet, ular maxsus shifrlar bilan emas, tayyor libsignal asosidagi kutubxonalar bilan amalga oshirilgan.
- Guruh chatlari uchdan uchgacha shifrlanganmi?
- Yo‘q. Guruhlar va kanallar bulutli chatlar va guruh yuboruvchi kalitlaridan foydalanmaydi.
- Bildirishnomalar xabar mazmunini oshkor qiladimi?
- Maxfiy chatlarda bildirishnoma chat va yuboruvchi identifikatorlarisiz umumiy jumla. Boshqa chatlarda unda yuboruvchi ismi va matn parchasi bo‘lishi mumkin, ular Google yoki Apple push xizmatlari orqali o‘tadi.
- iman mustaqil auditdan o‘tganmi?
- Hozircha yo‘q. Mustaqil audit e’lon qilinmagan va pullik bug bounty yo‘q. Messenger faqat ichki tekshiruvdan o‘tgan.
- Zaiflik haqida qanday xabar beraman?
- Ushbu sahifadagi xavfsizlik aloqasiga yoki /.well-known/security.txt dagi manzilga yozing. Takrorlash qadamlari va tegishli platformani ko‘rsating.
O‘zgarishlar tarixi
- : Birinchi nashr. Hujjat iman mijoz va server kodining shu sanadagi xatti-harakatini tasvirlaydi.
- : Ushbu hujjat yozilgan koddagi ichki ko‘rik tuzatishlari: kalit ro‘yxatdan o‘tkazishda egalik isboti, qabul qiluvchi siri va yuboruvchi hisob ma’lumotlarini ajratadigan sealed-yetkazish ruxsati (capability), sealed yuborishdan autentifikatsiyalangan yuborishga jimgina o‘tmaslik va tekshirilgan suhbatdoshning tekshirilmagan yangi qurilmasiga yuborishni bloklaydigan har bir qurilma uchun birinchi foydalanishdagi ishonch.
- : Messenger’ning ichki xavfsizlik ko‘rigi yakunlandi. Bu mustaqil audit emas.
“Xavfsizlik” bo‘limiga qaytishiman MessengerMaxfiylik imkoniyatlari