TLS საკონტროლო არხის შიგნით მოძრაობს და არა მთელ გვირაბში
მხარეები საკუთარ პაკეტებს ცვლიან და TLS საკონტროლო გაცვლის შიგნით მუშაობს. HTTPS-ის გაგება რომ შეუძლია პროქსის, წარმოდგენა არ აქვს, რა არის ეს ტრაფიკი.
VPN-ის აღწერაში სიტყვა TLS-ის დანახვა და დასკვნა, რომ ვებპროქსი ამ ტრაფიკს გაიგებს, გავრცელებული მოკლე გზაა. ამ პროტოკოლის შიგნით მხარეები საკუთარ პაკეტებს ცვლიან და TLS ამ გაცვლის შიგნით ერთი არხის ნაწილად მუშაობს. ის დატვირთვა, რაც მომხმარებლისთვის მთავარია, სხვა შეტყობინების ფორმატში მოძრაობს და ამიტომ ეს ორი არასდროს ემთხვევა ჩვეულებრივ HTTPS სესიას.
კონვერტი პირველი მოდის
ყოველი გვირაბის პაკეტი იწყება პროტოკოლის საკუთარი თავსართით: შეტყობინების ტიპი, გასაღების იდენტიფიკატორი და ბაიტური ნაკადის ტრანსპორტზე სიგრძის წინსართი, რომელიც აღნიშნავს, სად მთავრდება პაკეტი. მკითხველი, რომელიც ამ კონვერტს არ აანალიზებს, ვერ გაიგებს, სად იწყება შემდეგი ველი.
outer transport (UDP datagram or TCP stream)
-> OpenVPN header (opcode, key id, length where needed)
-> control message (reliability wrapper, TLS exchange)
-> data message (protected inner packet)
ეს ესკიზი რუკაა და არა ბაიტური ცხრილი, რადგან ზუსტი ველები შეტყობინების ტიპზეა დამოკიდებული, თუმცა პირველი ოქტეტი ყოველთვის ერთად აფუთავს ოპერაციის კოდს და გასაღების იდენტიფიკატორს. შეტყობინების ტიპის პორტის ნომრიდან გამოცნობა ის გზაა, რომლითაც დეკოდერები საბოლოოდ არასწორად ასახელებენ იმას, რასაც ხედავენ. დიაგნოსტიკისთვის რიგითობაა მთავარი: ტრანსპორტი, შემდეგ პროტოკოლის კონვერტი, შემდეგ ორი სახის სამუშაოდან ერთი. წაიკითხეთ კონვერტი, სანამ აზრს შეიქმნით იმაზე, რაც შემდეგ მოდის. არასწორი ადგილიდან დაწყებული დეკოდერი თავდაჯერებულ სისულელეს წარმოქმნის.
სანდოობის ფენა პროტოკოლს ეკუთვნის
საკონტროლო შეტყობინებებს სჭირდება მოწესრიგებული, დადასტურებული მიწოდება და პროტოკოლი ამას თავად უზრუნველყოფს დადასტურებებითა და ხელახალი გაგზავნებით. დადასტურება შეიძლება მოვიდეს როგორც ცალკე შეტყობინება ან იმოგზაუროს სხვა საკონტროლო შეტყობინებასთან ერთად, რაც კვალს არასწორად აჩვენებს ყველასთვის, ვინც ერთ სუფთა გაცვლას ელოდება.
უპირატესობა ისაა, რომ TLS-ის ხელის ჩამორთმევა სანდო გადამტანს იღებს მაშინაც, როცა გარე ტრანსპორტი UDP-ია. ფასი ისაა, რომ ერთი დატაგრამა შეიძლება მხოლოდ ამ საუბრის ნაწილს შეიცავდეს, ამიტომ მასზე დამოუკიდებელ TLS ჩანაწერად მოქცევა სისულელეს წარმოქმნის. ხელახალი აწყობა პროტოკოლის დონეზე უნდა მოხდეს. ამიტომ დაჭერილი პაკეტი იშვიათად გავს ხელის ჩამორთმევის სრულ ნაბიჯს.
გარე ტრანსპორტის TCP-ზე გადართვა ამ ფენას არ აცილებს. სანდო ტრანსპორტი ნიშნავს ნაკლებ ხელახალ გაგზავნას პროტოკოლის დონეზე და არა იმას, რომ ჩარჩო ქრება ან ტრაფიკი HTTP ხდება.
მონაცემთა პაკეტები სხვა ფორმატს იყენებენ
როცა სესია არსებობს, სასარგებლო დატვირთვა მოდის როგორც მონაცემთა შეტყობინებები, რომლებიც შიდა IP პაკეტებს ან Ethernet ჩარჩოებს ატარებენ. ისინი დაცულია საკუთარი გასაღებებითა და საკუთარი დამუშავებით და არ არიან TLS აპლიკაციის ჩანაწერები იმ აზრით, რომელსაც TLS ბიბლიოთეკა მიიღებდა.
ეს განცალკევება კონფიგურაციაში ჩანს: საკონტროლო არხსა და მონაცემთა არხს ცალკეული შიფრის პარამეტრები აქვთ, ამიტომ ერთის დამამტკიცებელი ლოგის სტრიქონი მეორეზე არაფერს ამბობს. ძლიერი საკონტროლო შიფრის ძლიერი მონაცემთა შიფრის მტკიცებულებად წაკითხვა ხშირი საანგარიშო შეცდომაა.
დაკავშირებული არასწორი წარმოდგენაც გარეთ დატოვეთ განმარტებიდან. TLS არ არის საჯარო გასაღების არხი, რომელიც სიმეტრიული მონაცემთა არხის გვერდით ზის, რადგან TLS თავად იცავს თავის ჩანაწერებს სიმეტრიულად, გასაღებების დადგენის შემდეგ. ნამდვილი განსხვავება როლი და პაკეტის ფორმატია და არა ის, თუ რა ტიპის კრიპტოგრაფიას იყენებს თითოეული მხარე.
რატომ ვერ დაეხმარება HTTPS პროქსი
TLS-ის დამამთავრებელი პროქსი ელოდება TLS ჩანაწერების ნაკადს და შემდეგ მის შიგნით აპლიკაციის პროტოკოლს. ამ პროტოკოლის საკონტროლო არხი იტვირთება საკუთარი ჩარჩოს შიგნით, გარშემო სანდოობის ფენით, ამიტომ დამამთავრებელი პროქსი ამ ჩარჩოს დაზიანებულ შეტანად კითხულობს.
გამჭვირვალე გადამცემი, რომელიც ბაიტებს ან დატაგრამებს ინტერპრეტაციის გარეშე გაატარებს, შეიძლება მუშაობდეს, იმ პირობით, რომ ნაკადს ხელახლა არ წერს ან ხელახლა არ აწყობს. კითხვა, რომელიც ნებისმიერ შუამავალს უნდა დაუსვათ, არის ის, გადასცემს თუ არა ის ნამდვილ ტრანსპორტსა და ჩარჩოს და არა ის, მხარს უჭერს თუ არა სადმე TLS-ს. ჰკითხეთ ეს, სანამ პროქსის წესებზე საღამოს დახარჯავთ. აქ უმეტესი წარუმატებლობა არქიტექტურულია და არა დაკარგული პარამეტრი.
კვალის სწორად წაკითხვა
ელოდეთ ჯერ საკონტროლო გაცვლას, შემდეგ გაცილებით მეტ მონაცემთა შეტყობინებას, ორივე ერთ ტრანსპორტს იზიარებს. თუ საკონტროლო ფაზა სრულდება და მონაცემთა ფაზა ჩერდება, ხარვეზი ეხება გასაღებებს, მარშრუტიზაციას ან მონაცემთა გზის ფილტრაციას და არა ხელის ჩამორთმევას. დაიჭირეთ რამდენიმე მონაცემთა შეტყობინება და შეამოწმეთ, საერთოდ ტოვებენ თუ არა კლიენტს. ეს ერთი დაკვირვება ძიებას შუაზე ყოფს.
გასაღების მეთოდების ისტორიული აღწერები პროტოკოლის დოკუმენტაციაში არ ნიშნავს, რომ მოცემული გამოშვება კვლავ უჭერს მხარს ყველა ძველ ფორმატს. შეამოწმეთ თქვენი გაშვებული ვერსია, სანამ მოლოდინს ააგებთ აბზაცზე, რომელიც აღწერს, როგორ მუშაობდა საქმეები ადრე.