Բառարան

obfuscated2

MTProto տրանսպորտի օբֆուսկացիա

Ռեժիմ, որում հոսքը երևում է որպես պատահական բայթեր, բայց կապի սկիզբը և փաթեթների ռիթմը մնում են ճանաչելի։

Ինչու է պետք

Առանց օբֆուսկացիայի MTProto կապը սկսվում է կարճ վերնագրով, որով այն հեշտ է ճանաչել։ Օբֆուսկացիան տրանսպորտի վրայից գաղտնագրում է ամբողջ հոսքը, այնպես որ արձանագրության բաց հատկանիշներ չեն մնում։ Telegram-ի փաստաթղթերում մեխանիզմը կոչվում է «transport obfuscation», իսկ պրոքսիների մասին խոսակցություններում այն սովորաբար անվանում են obfuscated2։ Նույն փաստաթղթերի համաձայն՝ այն պարտադիր է WebSocket տրանսպորտի համար և կիրառվում է մատակարարների արգելափակումները շրջանցելու համար։

Ինչպես է կառուցված սկզբնական փաթեթը

Հաճախորդն ուղարկում է պատահական 64 բայթ։ Դրանց վրա սահմանափակումներ կան, որպեսզի չհամընկնեն այլ արձանագրությունների վերնագրերի հետ. առաջին բայթը չի կարող լինել 0xef, առաջին չորս բայթը չի կարող լինել 0xdddddddd, 0xeeeeeeee կամ HTTP հարցման սկիզբ (POST, GET, HEAD)։ 56 տեղաշարժով գտնվում է տրանսպորտի նույնացուցիչը, իսկ պրոքսիի դեպքում 60 տեղաշարժով՝ տվյալների կենտրոնի համարը։

Այս նույն 64 բայթից ածանցվում են գաղտնագրման բանալիները. 8–40 բայթը բանալին է, 40–56 բայթը՝ սկզբնական վեկտորը, իսկ հակառակ ուղղության համար վերցնում են նույն դաշտերը շրջված փաթեթից։ Հետո հոսքը գաղտնագրվում է AES-256 ալգորիթմով CTR ռեժիմում. գաղտնագրի վիճակը պահպանվում է կապի ողջ ընթացքում։

Secret-ի դերը

Պրոքսիի համար յուրաքանչյուր բանալի լրացուցիչ հեշավորվում է secret-ի հետ միասին՝ SHA256(բանալի + secret)։ Ուստի պրոքսին ընդունում է միայն նրանց, ովքեր գիտեն secret-ը, իսկ հենց secret-ը ցանցով չի փոխանցվում։

Ինչ է թաքցնում և ինչ՝ ոչ

Օբֆուսկացիան փակում է հոսքի բովանդակությունը և արձանագրության հատկանիշները առաջին բայթերում։ Մնացածը մնում է տեսանելի՝

  • պրոքսի սերվերի IP հասցեն և պորտը;
  • տրաֆիկի ծավալը, փաթեթների չափերն ու ռիթմը;
  • այս հասցեի հետ երկարատև կապ հաստատված լինելու փաստը։

Մյուս ռեժիմների կողքին

Երեք ռեժիմները պատասխանում են ճանաչման տարբեր եղանակների և լրացնում են միմյանց՝

  • obfuscated2՝ գաղտնագրում է ամբողջ հոսքը, թաքցնում է արձանագրությունը առաջին բայթերում;
  • dd (padding)՝ փաթեթներին ավելացնում է 0-ից 15 պատահական բայթ, որպեսզի չափերը չմատնեն պրոքսիին;
  • ee (FakeTLS)՝ կապը սկսում է որպես իրական կայքի հետ TLS փոխանակում։

Թույլ կողմը

Օբֆուսկացիան թաքցնում է բովանդակությունը, բայց ոչ կապի տեսքը։ Կապի սկիզբը միշտ 64 «պատահական» բայթ է, իսկ փաթեթների չափերն ու ռիթմը մնում են նույնը։ Ուստի DPI համակարգերը կարող են այդպիսի տրաֆիկը տարբերել վիճակագրությամբ, և պրոքսիների մշակման մեջ հայտնվեցին padding-ը (dd) և FakeTLS-ը (ee)։

Աղբյուրներ

  1. Telegram: MTProto transports