tls-auth-ի խափանումը սովորաբար ներկայացվում է որպես ձեռքսեղմման խնդիր, թեև երբեք այդպիսին չի եղել։ HMAC-ը ստուգվում է կառավարման փաթեթի վրա մինչև TLS-ի ցանկացած մշակում, ուստի անհամապատասխան բանալին կամ ուղղությունը առաջացնում է խափանում, որը նման է վկայագրի խնդրի և որոշվում է երկու շերտ ավելի վաղ։ Ծրարը որպես առանձին օբյեկտ դիտարկելը կարճացնում է ախտորոշումը՝ կարդացե՛ք դաշտերը, հաստատե՛ք, որ ստուգումը վաղ է աշխատում, ապա համեմատե՛ք այն երեք բաները, որոնց պետք է համաձայնեն երկու կողմերը։

Կարդացե՛ք ծրարը այն հերթականությամբ, որով այն կառուցվում է

Կառավարման փաթեթը կրում է նստաշրջանի նույնացուցիչ, ընտրովի tls-auth HMAC, կրկնման և հաստատման տեղեկություն, և հուսալի հաղորդագրության նույնացուցիչ, իսկ դրանից հետո գալիս է հաղորդագրության տիպի բեռը։ Երբ հաղորդագրությունը ձեռքսեղմման հաղորդագրություն է, բեռը պատահաբար TLS գաղտնագրված տեքստ է։ Սա է ամբողջ կապը՝ TLS նյութը ճամփորդում է հաղորդագրության ներսում, որը ծրարն արդեն պաշտպանում է։ Տեսե՛ք OpenVPN ցանցային արձանագրության տեղեկագիրքը որը թվարկում է կառավարման ալիքի դաշտերը այդ հերթականությամբ։

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

Պահե՛ք այս խմբավորումը որպես հասկացություն։ Սա բայթերի հերթականության դիագրամ չէ և բավարար չէ պիտակը հաշվարկելու համար, քանի որ HMAC մտնող դաշտերը կախված են իրականացումից, տարբերակից և ռեժիմից։

Ցույց տվե՛ք, որ ստուգումը աշխատում է ձեռքսեղմումից առաջ

Ընդհանուր բանալին ունեցող ընդունիչը կարող է ստուգել HMAC-ը և անմիջապես դեն նետել կեղծ փաթեթը՝ առանց ձեռքսեղմման վիճակ հատկացնելու կամ հանրային բանալու աշխատանք կատարելու։ Պաշտպանությունը ծածկում է նաև սկզբնական ձեռքսեղմման փաթեթները, և հենց դրա համար է, որ սխալ բանալին երևում է որպես ձախողված կապակցում, այլ ոչ թե ուշ նույնականացման սխալ։

Բարձրացրե՛ք դեմոնի մանրամասնությունը և դիտե՛ք կառավարման ալիքը, ոչ թե tun սարքը։

openvpn --config /etc/openvpn/server.conf --verb 6

Այն, ինչ փնտրում եք, կառավարման ալիքի HMAC ստուգման խափանումն է, որը հաղորդվում է փաթեթի մակարդակում՝ մինչև ցանկացած TLS զգուշացում։ Մատյանում TLS զգուշացումը նշանակում է, որ ծրարը ընդունվել է, և խափանումը տեղափոխվել է ներս, ինչը այլ հետաքննություն է՝ այլ լուծմամբ։

Ուղղության մշակումը նույնպես այստեղ է։ Երբ ստատիկ բանալու ֆայլը օգտագործվում է tls-auth-ի հետ, երկու կողմերը վերցնում են հակառակ բանալու ուղղություններ, և արձանագրությունն օգտագործում է այդ բաժանումը, որպեսզի որսված փաթեթը չկարողանա հետ արտացոլվել իր ուղարկողին։ Ուղղությունը շրջելը բանալին պահում է նույնը և այնուամենայնիվ ձախողում է յուրաքանչյուր փաթեթ։ Փոխե՛ք մեկ կողմ միաժամանակ, ապա վերագործարկե՛ք երկու դեմոնները, որպեսզի զույգը միասին բեռնվի։

Համաձայնեցրե՛ք բանալին, ուղղությունը և digest-ը երկու կողմերում

Երեք արժեք պետք է համընկնեն, և դրանցից միայն մեկն է ֆայլը։ Ստատիկ բանալու բովանդակությունը պետք է նույնը լինի երկու կողմերում, ուղղությունը պետք է հակառակ լինի, և HMAC-ի համար օգտագործվող digest-ը պետք է համընկնի։ Ստուգե՛ք կազմաձևը նախքան բանալու նյութին դիպչելը, քանի որ մեկ շրջված ուղղությունը բացատրում է ավելի շատ խափանումներ, քան վնասված ֆայլը։

grep -E 'tls-auth|tls-crypt|key-direction|auth ' /etc/openvpn/server.conf

Ստեղծե՛ք ընդհանուր գաղտնիքը գործիքով, ոչ թե խմբագրիչով, և թույլտվությունները պահե՛ք խիստ։

openvpn --genkey secret /etc/openvpn/ta.key
chmod 600 /etc/openvpn/ta.key

Ավելի հին թողարկումներն ընդունում էին բանալիների ստեղծման մի փոքր այլ տարբերակների հերթականություն, և այդ թողարկումների համար գրված պրոֆիլները դեռ շրջանառվում են։ Ստեղծված ֆայլը երկու դեպքում էլ նույն տիպի օբյեկտ է, ուստի ստուգումը այն է, թե արդյոք երկու կողմերը պահում են նույնական բայթեր, և ոչ թե, թե որ ուղղագրությունն է ստեղծել դրանք։

Մի՛ շփոթեք tls-auth-ը tls-crypt-ի հետ։ Երկուսն էլ պաշտպանում են կառավարման ալիքը, բայց tls-crypt-ը նաև գաղտնագրում է այն և թաքցնում ձեռքսեղմումը դիտորդներից, և փոխարինում է ուղղությունների բաժանումը իր սեփական բանալու մշակմամբ։ Մեկն օգտագործող պրոֆիլը չի համագործակցի մյուսի համար կազմաձևված գործընկերոջ հետ, և digest-ի ոչ մի կարգավորում այդ բացը չի փակում։

Վերարտադրե՛ք պիտակը միայն իրական ձևաչափից

Բայթով ճշգրիտ վերարտադրումը VPN աշխատեցնելուց առանձին խնդիր է, և այն աշխատում է միայն իրական մուտքերով՝ այն իրականացումը և տարբերակը, որոնք կառուցել են փաթեթը, ընտրված digest-ը, ուղղությունը և փաստացի բայթերը, ներառյալ նստաշրջանի նույնացուցիչը և հաստատումների զանգվածը։ Դաշտերի ցանկի տեքստային ներկայացումը այդ բայթերը չեն։

Պիտակի երկարությունը բխում է digest-ից, ուստի ֆիքսված երկարության ենթադրությունը կոտրվում է այն պահին, երբ ինչ-որ մեկը փոխում է այն։ Հեշե՛ք փաթեթը այնպես, ինչպես անում է իրականացումը, ոչ թե այնպես, ինչպես ներկայացնում է բլոգային գրառման աղյուսակը, և համեմատե՛ք նույն գործընկերոջից վերցված գրառման հետ, այլ ոչ թե ձեռքով հանգած սպասելիքի։

Պահե՛ք այս վարժությունը արտադրական պրոֆիլներից հեռու։ Պիտակի վերարտադրման մեջ ոչինչ չի ասում, թե արդյոք տեղաբաշխումը պետք է միացնի պաշտպանությունը։

Հետ վերցրե՛ք անհամապատասխանությունը առանց պաշտպանությունը հեռացնելու

Գայթակղիչ փորձությունը tls-auth-ը ջնջելն է, կապակցման հաջողությունը տեսնելը և եզրակացնելը, որ բանալին սխալ էր։ Այդ պատասխանը ձեզ արժենում է պաշտպանությունը և ոչինչ չի սովորեցնում այն մասին, թե երեք արժեքներից որն էր անհամապատասխան։ Փոխարենը վերցրե՛ք սերվերի կողմից հաստատված համապատասխան կազմաձևը և համեմատե՛ք դրա հետ։

Պատրաստե՛ք փոփոխությունը այնպես, որ այն դարձելի լինի։ Պահե՛ք նախորդ սերվերի կազմաձևը և բանալու ֆայլը, կիրառե՛ք ուղղված զույգը, ստուգե՛ք, որ հաճախորդը ավարտում է ձեռքսեղմումը, և միայն դրանից հետո հեռացրե՛ք պահուստը։ Եթե փոփոխությունից հետո հաճախորդները ձախողվում են, վերականգնե՛ք նախորդ ֆայլերը, այլ ոչ թե ընդհատման ընթացքում հորինե՛ք երրորդ տարբերակ։ Վերականգնումը պետք է լինի մեկ հրահանգ, որը դուք արդեն գիտեք սկսելուց առաջ։

Վերջապես, հիշե՛ք, թե ինչ է նշանակում անցած ստուգումը։ Այն ապացուցում է, որ գործընկերը պահում է ընդհանուր բանալին, ոչ թե այն, որ նրա վկայագիրը կամ հաշիվը լիազորված է, և այն ոչինչ չի ասում բանակցված տվյալների ալիքի գաղտնագրի մասին։ Լիազորումը և տվյալների պաշտպանությունը հաստատվում են ավելի ուշ, ուստի ծրարի մաքուր ստուգումը մեկնարկային կետ է, ոչ թե դատավճիռ։

Առնչվող հոդվածներ