ერთი ხაზი, რომელიც ამბობს „ბოლო ხელის ჩამორთმევა, ორი წუთის წინ“, გამოიყურება როგორც უწყვეტი აქტივობის მტკიცებულება და ამაზე სუსტია. ის აღნიშნავს ერთი პირისპირისთვის ბოლო დასრულებულ გასაღების გაცვლას, რომელიც ხდება გასაღების განახლების ფიქსირებული ტაიმერით, სანამ ტრაფიკი მიედინება, და ჩერდება, როცა პირისპირი დუმდება. თუ ეს დრო ადამიანს რამეს უკავშირებს, დამოკიდებულია გვერდით შენახულ იდენტიფიკატორებზე და ორივე სისტემის საათებზე. აქ მოცემულია, როგორ იქცევა ჩანაწერი ორ ყველაზე გავრცელებულ სტეკში და სად ცდება მისი კითხვა.

ორი ჩანაწერი, ორი განსხვავებული მნიშვნელობა

WireGuard ინახავს ერთ ხელის ჩამორთმევის დროის ნიშას თითო პირისპირისთვის, რომელიც იცვლება ყოველ გასაღების განახლებაზე, პლუს ბაიტების მთვლელები თითოეულ მიმართულებით. OpenVPN ჩვეულებრივ იწერს სესიის დაწყებას, კავშირის გაწყვეტას და ყველაფერს, რასაც კონფიგურირებული დეტალობა ამატებს, რაც ჩანაწერის ერთეულს სესიად აქცევს და არა გასაღების გაცვლად.

ეს განსხვავება წყვეტს, რას ნიშნავს არყოფნა:

QuestionWireGuard handshakeOpenVPN session log
Did the peer send recently?Strong hint within the rekey windowNot answered by start time alone
Did the peer stop?Weak, because idle peers also stop rekeyingOnly if a disconnect was written
What was visited?NothingNothing

რატომ არ არის ხელის ჩამორთმევა უწყვეტი გამოყენება

WireGuard გასაღებებს აახლებს დაახლოებით ყოველ ორ წუთში, სანამ დასაცავი მონაცემები არსებობს, და უმოქმედო პირისპირი უბრალოდ ჩერდება. ამიტომ მოძველებული ხელის ჩამორთმევა შეიძლება ნიშნავდეს, რომ ლეპტოპს სძინავს, მომხმარებელმა მუშაობა შეწყვიტა, ან ქსელმა ჩამოაგდო პაკეტები, რომლებიც შემდეგ გაცვლას გამოიწვევდა. დროის ნიშა აქტივობის ქვედა ზღვარია, არა ყურადღების თვალყურის მდევნელი.

საპირისპირო შეცდომაც ისეთივე მარტივია. მუდმივი keepalive ტრაფიკი თბილად ინახავს გვირაბს უმოქმედო მოწყობილობაზე, ამიტომ ახლო ხელის ჩამორთმევა შეიძლება გამოჩნდეს მანქანაზე, რომელსაც ერთი საათი არავინ შეხებია. ბაიტების მთვლელები აქ გვეხმარება, რადგან ისინი განასხვავებენ ნამდვილ მონაცემებს გამომგზავნ პირისპირს მხოლოდ keepalive-ის გამცვლელისგან და გვეუბნებიან, რომელმა მიმართულებამ გადაიტანა მოცულობა. ამათგან არცერთი არ ამჟღავნებს დანიშნულების ადგილს, გვერდს ან მოთხოვნას.

იდენტიფიკატორები მოგზაურობენ დროის ნიშასთან ერთად

დრო ანგარიშის, საჯარო გასაღების ან წყაროს მისამართის გარეშე ობოლია. დააწყვილეთ დროის ნიშა პირისპირის იდენტობასთან და დაკვირვება ხდება დასაკავშირებელი: საჯარო გასაღები რჩება მისამართების ცვლილებისას, ხოლო წყაროს მისამართი შეიძლება გაიზიაროს ბევრმა აბონენტმა ოპერატორის მისამართების თარგმანის მიღმა.

ეს ასიმეტრია არის ის, რასაც კონფიდენციალურობის დისკუსიების უმეტესობა გამოტოვებს. მისამართი ანონიმურად გამოიყურება, რადგან გაზიარებულია, და გასაღები ტექნიკურად გამოიყურება, რადგან გრძელია, მაგრამ სტაბილური იდენტიფიკატორი გასაღებია. ერთი ველის შენარჩუნება და მეორის გადაგდება ცვლის კორელაციის რისკს, ხილული სიზუსტის შეცვლის გარეშე.

თავად კორელაცია არის დოკუმენტირებული საზრუნავი. კავშირის დროის დაკავშირება პროვაიდერის შესვლის მოვლენასთან, მხარდაჭერის ბილეთთან ან გადახდის ჩანაწერთან შეიძლება იდენტობა აქტივობას დაუკავშიროს მაშინაც, როცა დანიშნულების ადგილი არასდროს ჩაწერილა, და ამიტომ წყვილებას ფორმატირებაზე მეტი მნიშვნელობა აქვს.

სისტემათაშორისი კორელაცია საათების ზრუნვას მოითხოვს

ორი სისტემა, რომლებიც ერთსა და იმავე მომენტს აცნობენ, იშვიათად თანხმდებიან წამამდე. ერთმა შეიძლება თავის გამოსავალში დროის ზონის ცვლა გამოიყენოს, მეორემ შეიძლება იმუშაოს რამდენიმე წამით არასწორ საათზე, და ვირტუალური მანქანა შეიძლება გადაიხაროს შეჩერების შემდეგ.

სანამ დაასკვნით, რომ ორი მოვლენა ერთად მოხდა, ორივე გადაიყვანეთ ერთ ზონაში და შეამოწმეთ ცვლა ნედლ ჩანაწერში და არა ჩვენებაში. თუ გაზომილი სხვაობა სავარაუდო გადახრაზე ნაკლებია, წესრიგი საერთოდ არ გაქვთ.

პრაქტიკული წესია შეინარჩუნოთ ის სიზუსტე, რაც ხარვეზების აღმოფხვრის ამოცანას სჭირდება და მეტი არა. საათში სესიების რაოდენობა პასუხობს ხელმისაწვდომობის კითხვას ანგარიშის მიხედვით ისტორიის შენახვის გარეშე, და აგრეგატი შეიძლება შენახულ იქნას გაცილებით დიდხანს, ვიდრე ნედლი სტრიქონები, საიდანაც ის წარმოიშვა.

წაიკითხეთ ჩანაწერი ბრძანებებით, არა წარმოსახვით

დაბეჭდეთ ველები, რომლებზეც აპირებთ მსჯელობას, იმ ერთეულებში, რომლებსაც ინსტრუმენტი ინახავს და არა იმაში, რასაც დაფა აჩვენებს.

ეს ორი ხაზი აჩვენებს ხელის ჩამორთმევის ასაკს და ბაიტების მთვლელებს თითოეული WireGuard პირისპირისთვის, შემდეგ იგივე სახის მასალას OpenVPN-ის სტატუსის ფაილიდან:

wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.status

შეადარეთ ასაკი გასაღების განახლების ინტერვალს სანამ დასკვნას გააკეთებთ, და მთვლელები მასთან ერთად წაიკითხეთ. ახლო ხელის ჩამორთმევის და თითქმის ნულოვანი გადაცემის მქონე პირისპირი keepalive-ს ცვლის, მაშინ როცა მოძველებული ხელის ჩამორთმევის და დიდი მთვლელების მქონე პირისპირი დაკავებული იყო, სანამ არ შეწყვიტა. არც ერთი ხაზი არ ამბობს, რა გაკეთდა, და ამის პირდაპირ თქმა უფრო ზუსტია, ვიდრე მინიშნება, რომ დროის ნიშა ვიზიტს ამტკიცებს.

დაკავშირებული სტატიები