0x თუ 0s? PSK ფორმატის გაშიფვრა ipsec.secrets-ში
ერთი და იგივე საერთო საიდუმლო შეიძლება დაიწეროს როგორც ბრჭყალებში ჩასმული ლიტერალი, როგორც თექვსმეტობითი 0x-ის შემდეგ, ან როგორც Base64 0s-ის შემდეგ. არასწორი პრეფიქსი ავთენტიფიკაციას ამარცხებს, არა მოლაპარაკებას.
ერთი კლიენტი საერთო გასაღებით ავთენტიფიცირდება, მეორე კი უარყოფს მას, თუმცა ჩასმული სიმბოლოები ორივე მხარეს ერთნაირად გამოიყურება. სავარაუდოდ ეს იგივე სიმბოლოებია; განსხვავება იმაშია, თუ რომელ გაშიფვრის წესს იყენებს ფაილი მათზე. ბრჭყალებში ჩასმული სტრიქონი ლიტერალურად მიიღება, 0x-ით დაწყებული ტოკენი იკითხება როგორც თექვსმეტობითი, ხოლო 0s-ით დაწყებული ტოკენი — როგორც Base64. ამ სამი ჩანაწერიდან მხოლოდ ერთი ნიშნავს იმას, რაც გულისხმობდით, ამიტომ შესწორება ჩვეულებრივ გარდაქმნაა და არა უკეთესი პაროლი.
სიმპტომი კოდირებაზე მიუთითებს და არა შიფრებზე
როცა ორი ბოლო სხვადასხვა ბაიტს ინახავს, მოლაპარაკება მაინც წარმატებით მთავრდება, ხოლო დამტკიცება შემდეგ ჩავარდება. მაშინ ჟურნალი ალგორითმის შეუსაბამობის ნაცვლად მთლიანობის ან HMAC-ის ჩავარდნას აფიქსირებს, რადგან წინადადება არჩეულია და ავთენტიფიკაციის ნაბიჯი არ დაემთხვა. ის ხაზი არასოდეს იხსენიებს საიდუმლოს ფორმას.
ეტაპია მინიშნება. არჩეული წინადადების შემდეგ მოსული ჩავარდნა ნიშნავს, რომ ორივე მხარე ყველაფერზე შეთანხმდა გასაღების მასალის გარდა, ხოლო «წინადადება არ არჩეულა» პოლიტიკას ან შიფრების კრებულებს ეხება. მთლიანობის შემოწმება, რომელიც ჩავარდება მაშინ, როცა პაროლი სწორად გამოიყურება, კოდირების შეუსაბამობის ხილული სახეა.
ერთი საიდუმლო, სამი გზა, რომლითაც ფაილს შეუძლია მისი წაკითხვა
ოთხბაიტიანი key1 მნიშვნელობისთვის თექვსმეტობითი და Base64 იგივე ბაიტების ორი გადაკოდირებაა და მხოლოდ წამყვანი სიმბოლოები ეუბნებიან გამყოფს, რომელი უჭირავს. swanctl-ის სერტიფიკატები იმავე კონვენციას მიჰყვებიან, ამიტომ ორ ინტერფეისს შორის გადატანილი მნიშვნელობა მნიშვნელობას მხოლოდ მაშინ ინარჩუნებს, როცა მისი პრეფიქსი მასთან ერთად მოძრაობს.
10.20.0.5 %any : PSK "key1"
10.20.0.5 %any : PSK 0x6b657931
10.20.0.5 %any : PSK 0sa2V5MQ==
ამ ბლოკში ორი დეტალი ყველაზე მეტ დროს ჭამს. თექვსმეტობითი ციფრები ორივე რეგისტრს იღებს, ამიტომ 0x6b657931 და 0x6B657931 ერთი და იგივე მნიშვნელობაა, თუმცა კენტი რაოდენობის სიმბოლოები უარყოფის ნაცვლად ჩუმად არასწორად იკითხება, რაც ჭრილის შემდეგ ყოველ ბაიტს ცვლის. Base64-ის შევსება მნიშვნელობის ნაწილია, ამიტომ ბოლო = ნიშნების გარეშე ჩასმული სტრიქონი ხმამაღლა ჩავარდნის ნაცვლად სხვა ბაიტებად იშიფრება.
პროფილი, რომელმაც მნიშვნელობა ერთხელ გაშიფრა, უკვე გარდაქმნა იგი, ამიტომ ხელახალი გაშიფვრა სხვა ბაიტებს და არასწორ პაროლს მსგავს ავთენტიფიკაციის ჩავარდნას იძლევა. ბრჭყალები უსაფრთხო მიმართულებაა ყველა გაურკვეველი რამისთვის, რადგან შიგთავსი ლიტერალურია მაშინაც, როცა კოდირების ნიშნით იწყება.
საიდან მოდის Base64 ტექსტი
პროფილის ექსპორტი და მომწოდებლის პორტალები ხშირად გასაღებს უკვე კოდირებულს გადმოსცემენ, ჩვეულებრივ მონაცემთა ველში, რომელიც არასოდეს ყოფილა ხელით აკრეფისთვის განკუთვნილი. ან გახსენით ის მნიშვნელობა და გაშიფრული ტექსტი ბრჭყალებში შეინახეთ, ან დატოვეთ კოდირებული ნიშნით წინ. ორივეს ნახევრის გაკეთებაა ის, რაც ამტვრევს. ორივე გზა მხოლოდ მაშინ მუშაობს, როცა მთელი მნიშვნელობა კოპირებას გადაურჩება.
ორივე მიმართულება თითო ბრძანებაა და ღირს მათი ბილეთში შენახვა როგორც ზუსტი ოპერაცია, რომელმაც შენახული მნიშვნელობა შექმნა. გაუშვით ისინი ამ თანმიმდევრობით:
printf '%s' 'a2V5MQ==' | base64 -d
printf '%s' 'key1' | base64
კოდირებული ტექსტის ჩვეულებრივივით ჩასმა ძვირი შეცდომაა. ფაილი სიმბოლოებს ზუსტად ისე ჰეშავს, როგორც დაწერილია, წარმოებული გასაღები დაახლოებით მესამედით გრძელი გამოდის, ვიდრე პარტნიორის მიერ გამოთვლილი, და ყოველი ცდა ერთნაირად ჩავარდება გაფრთხილების გარეშე, რადგან გამყოფი მისთვის მიცემულ წესს მიჰყვა.
დაადასტურეთ, რომელ ბაიტებს იყენებს სინამდვილეში თითოეული პარტნიორი
ჯერ წაიკითხეთ დემონის ხედვა კავშირზე, შემდეგ ავთენტიფიკაციის შედეგი, ნაცვლად იმისა, რომ შეცდომის სტრიქონიდან მიზეზი გამოიცნოთ. შენახული სიგრძის შედარება სწრაფი საღი აზრის შემოწმებაა, რადგან კოდირებული ტექსტი უფრო გრძელია, ვიდრე ბაიტები, რომლებსაც წარმოადგენს. შემდეგ დაადასტურეთ, რომელი იდენტობის ხაზი დაემთხვა, რადგან არასწორი პარტნიორის ქვეშ შენახული სწორი საიდუმლო ზუსტად ისე ჩავარდება, როგორც არასწორი. ხაზების რიგი წყვეტს ამას: პირველი დამთხვევა იმარჯვებს, ამიტომ ზემოთ მდებარე ფართო %any ხაზი ჩუმად ცვლის ზუსტად იმ კონკრეტულ ხაზს, რომელიც ახლახან შეასწორეთ.
თავიდან ჩატვირთეთ და არა გადატვირთეთ, როცა ფაილი სწორია. ipsec rereadsecrets აახლებს IKE დემონის ასლს, ხოლო swanctl-ის კონფიგურაცია სერტიფიკატებს საკუთარი ბრძანებით ტვირთავს. გადატვირთვა ყოველ დამყარებულ ასოციაციას აგდებს და ანადგურებს იმ შედარებას, რომლის გაკეთებასაც ცდილობდით.
არც ერთი ეს შემოწმება საიდუმლოს გამჟღავნებას არ მოითხოვს. სიგრძე, იდენტობის ამომრჩევი და ხაზის პოზიცია ხსნის ამ ტიპის ჩავარდნების უმეტესობას მანამ, სანამ ვინმეს თექვსმეტობითი დამპი დასჭირდება.
შეცვალეთ ფაილი შედეგის დამალვის გარეშე
შეზღუდეთ ფაილი დემონის ანგარიშით და ცოცხალი საიდუმლოებები მოშორებით შეინახეთ ბილეთებისგან, ჩატისგან და ეკრანის სურათებისგან, რადგან ჩასმული გასაღები გაჟონვაა და არა დიაგნოსტიკა. ის ასევე უფრო დიდხანს ცოცხლობს, ვიდრე ინციდენტი, რომელმაც ის შექმნა.
გამოსცადეთ კლიენტიდან, რომლის კონფიგურაციასაც თქვენ აკონტროლებთ, დაადასტურეთ, რომ ავთენტიფიკაცია წარმატებით მთავრდება, შემდეგ დაადასტურეთ, რომ გვირაბი ტრაფიკს გადაიტანს. გადატვირთვა, რომელიც ხელის ჩამორთმევას ასწორებს, მაშინ როცა მარშრუტიზაცია გატეხილი რჩება, სხვა პრობლემაა და ის თვალსაჩინო ხდება მაშინვე, როგორც კი საიდუმლო მოძრაობას წყვეტს.