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

რას შეიცავს პროფილი სინამდვილეში

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

ObjectWhere it livesWhat can open itWhat a leak costs
Server wrapping keyaccepting servers onlythe unwrap step inside the serverevery wrapped copy issued to that group becomes readable
Wrapped client keyinside the client profilethe server wrapping keyit names a client and exposes its metadata, but not the key inside
Client control keyinside the client profile, usable as-isthe client that owns itsomeone can open handshakes as that client until the server refuses the key

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

რატომ არ არის შეფუთული ასლი მთელი ამბავი

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

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

სად ზის შემოწმების კაუჭი ხელის ჩამორთმევაში

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

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

tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.sh

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

ანგარიში, სერტიფიკატი და საკონტროლო გასაღები ცალ-ცალკე გადის

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

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

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

პროფილის გამოცემა და გაწვევა

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

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

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

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