obfuscated2
MTProto nəqliyyatının obfuskasiyası
Axının təsadüfi baytlara bənzədiyi, amma bağlantının başlanğıcı və paketlərin ritmi tanınan qaldığı rejim.
Nə üçün lazımdır
Obfuskasiya olmadan MTProto bağlantısı qısa başlıqla başlayır və onu asanlıqla tanımaq olur. Obfuskasiya bütün axını nəqliyyat üzərindən şifrələyir, belə ki protokolun açıq əlamətləri qalmır. Telegram sənədlərində mexanizm «transport obfuscation» adlanır, proksi söhbətlərində isə adətən obfuscated2 deyirlər. Həmin sənədə görə, o, WebSocket nəqliyyatı üçün məcburidir və provayder bloklarını keçmək üçün tətbiq olunur.
İlk paket necə qurulub
Klient təsadüfi 64 bayt göndərir. Onlar başqa protokolların başlıqları ilə üst-üstə düşməsin deyə məhdudiyyətlər var: birinci bayt 0xef ola bilməz, ilk dörd bayt 0xdddddddd, 0xeeeeeeee və ya HTTP sorğusunun başlanğıcı (POST, GET, HEAD) ola bilməz. 56 ofsetində nəqliyyat identifikatoru, proksidə isə 60 ofsetində data mərkəzinin nömrəsi durur.
Şifrələmə açarları da həmin 64 baytdan çıxarılır: 8–40 baytlar — açar, 40–56 baytlar — başlanğıc vektoru, əks istiqamət üçün isə çevrilmiş paketdən eyni sahələr götürülür. Sonra axın AES-256 alqoritmi ilə CTR rejimində şifrələnir; şifrənin vəziyyəti bütün bağlantı boyu saxlanılır.
Secret-in rolu
Proksi üçün hər açar əlavə olaraq secret ilə birlikdə hash edilir: SHA256(açar + secret). Ona görə proksi yalnız secret-i bilənləri qəbul edir, secret-in özü isə şəbəkə ilə ötürülmür.
Nəyi gizlədir, nəyi yox
Obfuskasiya axının məzmununu və ilk baytlardakı protokol əlamətlərini bağlayır. Qalanı görünən qalır:
- proksi serverinin IP ünvanı və portu;
- trafikin həcmi, paketlərin ölçüləri və ritmi;
- bu ünvanla uzunmüddətli bağlantı qurulmasının özü.
Digər rejimlərlə yanaşı
Üç rejim tanımanın müxtəlif üsullarına cavab verir və bir-birini tamamlayır:
- obfuscated2 — bütün axını şifrələyir, protokolu ilk baytlarda gizlədir;
- dd (padding) — ölçülər proksini ələ verməsin deyə paketlərə 0-dan 15-ə qədər təsadüfi bayt əlavə edir;
- ee (FakeTLS) — bağlantını həqiqi saytla TLS mübadiləsi kimi başlayır.
Zəif yer
Obfuskasiya məzmunu gizlədir, bağlantının formasını yox. Bağlantının başlanğıcı həmişə 64 «təsadüfi» baytdır, paketlərin ölçüləri və ritmi isə əvvəlki kimi qalır. Ona görə DPI sistemləri belə trafiki statistikaya görə ayıra bilər, proksilərin işlənməsində isə padding (dd) və FakeTLS (ee) meydana çıxıb.