obfuscated2
MTProto transportining obfuskatsiyasi
Oqim tasodifiy baytlarga oʻxshab koʻrinadigan, lekin ulanish boshlanishi va paketlar ritmi taniladigan boʻlib qoladigan rejim.
Nega kerak
Obfuskatsiyasiz MTProto ulanishi qisqa sarlavha bilan boshlanadi va uni shu sarlavhadan tanish oson. Obfuskatsiya butun oqimni transport ustidan shifrlaydi, shunda protokolning ochiq belgilari qolmaydi. Telegram hujjatida bu mexanizm «transport obfuscation» deb ataladi, proksi haqidagi suhbatlarda esa uni odatda obfuscated2 deyishadi. Oʻsha hujjatga koʻra, u WebSocket transporti uchun majburiy va provayderlar bloklarini aylanib oʻtish uchun qoʻllanadi.
Boshlangʻich paket qanday tuzilgan
Mijoz tasodifiy 64 bayt yuboradi. Ular boshqa protokol sarlavhalariga mos tushib qolmasligi uchun cheklovlar bor: birinchi bayt 0xef boʻlishi mumkin emas, dastlabki toʻrt bayt 0xdddddddd, 0xeeeeeeee yoki HTTP-soʻrov boshlanishi (POST, GET, HEAD) boʻlishi mumkin emas. 56-siljishda transport identifikatori, proksida esa 60-siljishda maʼlumotlar markazi raqami turadi.
Shifrlash kalitlari ham shu 64 baytdan hosil qilinadi: 8–40-baytlar — kalit, 40–56-baytlar — initsializatsiya vektori, teskari yoʻnalish uchun esa ayni shu maydonlar teskari aylantirilgan paketdan olinadi. Keyin oqim CTR rejimidagi AES-256 algoritmi bilan shifrlanadi; shifr holati ulanish davomida saqlanadi.
Secret ning roli
Proksi uchun har bir kalit qoʻshimcha ravishda secret bilan birga xeshlanadi: SHA256(kalit + secret). Shuning uchun proksi faqat secret ni biladiganlarni qabul qiladi, secret ning oʻzi esa tarmoq orqali uzatilmaydi.
Nimani yashiradi, nimani yashirmaydi
Obfuskatsiya oqim mazmunini va birinchi baytlardagi protokol belgilarini yopadi. Qolgani koʻrinib turadi:
- proksi serverining IP-manzili va porti;
- trafik hajmi, paketlar oʻlchami va ritmi;
- shu manzil bilan uzoq ulanish oʻrnatilganining oʻzi.
Boshqa rejimlar yonida
Uch rejim aniqlashning turli usullariga javob beradi va bir-birini toʻldiradi:
- obfuscated2 — butun oqimni shifrlaydi, protokolni birinchi baytlarda yashiradi;
- dd (padding) — paketlarga 0 dan 15 gacha tasodifiy bayt qoʻshadi, shunda oʻlchamlar proksini fosh qilmaydi;
- ee (FakeTLS) — ulanishni haqiqiy sayt bilan TLS almashinuvi kabi boshlaydi.
Zaif joyi
Obfuskatsiya mazmunni yashiradi, ulanish shaklini emas. Ulanish boshlanishi har doim 64 ta «tasodifiy» bayt, paketlar oʻlchami va ritmi esa avvalgicha qoladi. Shuning uchun DPI tizimlari bunday trafikni statistika boʻyicha ajratishi mumkin, proksi ishlab chiqishda esa padding (dd) va FakeTLS (ee) paydo boʻlgan.