Բառարան

SNI

Server Name Indication՝ «սերվերի անվան նշում»

Կայքի անունը, որը հաճախորդը բացահայտ նշում է պաշտպանված կապի սկզբում՝ դեռ մինչև գաղտնագրումը։

Ինչ է դա

SNI-ն TLS արձանագրության ընդլայնում է։ Ամենաառաջին հաղորդագրությունում (ClientHello) հաճախորդը նշում է այն կայքի անունը, որին միանում է։ Դա պետք է, որպեսզի մեկ IP հասցեով սպասարկվեն բազմաթիվ HTTPS կայքեր, և սերվերն անմիջապես իմանա, թե որ վկայականը ցույց տա։ Ընդլայնումը նկարագրված է RFC 6066-ում, դրա առաջին խմբագրությունը լույս է տեսել 2003 թվականին։

Ինչու է սա կարևոր ֆիլտրման համար

ClientHello-ն ուղարկվում է մինչև գաղտնագրման միանալը, և սկզբնական սխեմայում կայքի անունը փոխանցվում է բաց տեքստով։ Ուստի ճանապարհին գտնվող դիտորդը՝ օպերատորը կամ DPI սարքավորումը, տեսնում է, թե որ տիրույթին է ուղղված կապը, թեև բովանդակությունը չի տեսնում։ «Անվամբ» արգելափակումը հենց դրա վրա է կառուցված։

Encrypted SNI և Encrypted Client Hello ընդլայնումները փակում են այդ դաշտը, բայց աշխատում են միայն TLS 1.3-ի հետ և պահանջում են աջակցություն երկու կողմից։ Վիքիպեդիայի տվյալներով՝ ռուսաստանյան մատակարարները սկսել են արգելափակել ESNI-ը 2020 թվականի հոկտեմբերին։

SNI-ն պրոքսիի secret-ում

FakeTLS ռեժիմում պրոքսիի հաճախորդը ClientHello-ում նշում է տիրույթ՝ այն, որը secret-ում ներդրված է բանալուց անմիջապես հետո։ Ֆիլտրի համար դա երևում է որպես այդ կայք այցելություն։ Տիրույթը secret-ում գրված է տասնվեցական թվանշաններով՝

ee473ce5d4958eb5f968c87680a23854a0676f6f676c652e636f6d

Ինչպես կարդալ տիրույթը

Ընդգծված մասը google.com տողի բայթերն են hex տեսքով։ Դրանք կարելի է վերծանել մեկ հրամանով՝

echo 676f6f676c652e636f6d | xxd -r -p

Ինչպես ստուգել SNI-ն ինքնուրույն

Տեսնել, թե սերվերն ինչ է պատասխանում SNI-ում նշված կոնկրետ անվանը, կարելի է OpenSSL ծրագրով. -servername պարամետրը սահմանում է այն անունը, որը հաճախորդը կնշի ClientHello-ում։

openssl s_client -connect IP-ՀԱՍՑԵ:443 -servername տիրույթ

Եթե տիրույթը դադարել է բացվել

Քողարկման տիրույթը պետք է մնա հավանական. եթե կայքը վերացել է, օպերատորի մոտ արգելափակված է կամ վկայականի ժամկետն անցել է, դրա հետ կապը դադարում է բնական թվալ։ Այդ դեպքում ընտրում են այլ տիրույթ, ստեղծում են նոր secret և վերաթողարկում հղումները։

Ինչպիսի տիրույթ է պիտանի

Տիրույթը պետք է սովորական կայք լինի, որը ձեր ցանցում արգելափակված չէ։ mtg-ի README-ում առանձին զգուշացնում են. մատակարարները կարող են նկատել անհամապատասխանությունը, օրինակ՝ google.com՝ այնպիսի IP հասցեի վրա, որը Google-ին չի պատկանում, ուստի տիրույթը լավ է կապել սերվերի հասցեի հետ։ telemt-ում տիրույթի փոփոխությունը բոլոր տրված հղումները դարձնում է անաշխատունակ, և դրանք պետք կլինի վերաթողարկել։

Աղբյուրներ

  1. Server Name Indication — Վիքիպեդիա
  2. RFC 6066, բաժին 3՝ Server Name Indication
  3. mtg: նախագծի README
  4. telemt: FAQ