OpenSSL-ն արդեն տեղադրված է, հոսթն ունի էնտրոպիա, և դրանով բանալի ստեղծելը թվում է ակնհայտ կարճուղի։ Ելքը կլինի պատահական ու գաղտնի և լիովին անօգտագործելի, և ձախողումը կգա որպես կառավարման ուղու սխալ, այլ ոչ թե ինչ-որ բան, որը նշում է բանալու ձևաչափը։ Այդ մոլորեցումը թանկ մասն է, որովհետև մարդկանց ուղարկում է ստուգելու իրենց ծածկագրերը։ Այն, ինչ VPN-ը կարդում է, ֆայլի որոշակի կառուցվածք է, ոչ թե կամայական բայթերի բլոկ, և հատկության տարբերակներից մեկն ընդհանրապես հնարավոր չէ արտադրել սերվերից դուրս։

Ինչ պետք է իրականում լինի սկավառակի վրա գտնվող ֆայլը

OpenVPN-ի ստատիկ բանալու ֆայլը տեքստ է։ Այն սկսվում է մեկնաբանության տողով, որը հայտարարում է, թե ինչ է այն, կրում է hex տվյալներ ֆիքսված լայնության տողերում և ընդհանուր առմամբ պարունակում է 256 բայթ բանալու նյութ։ OpenVPN-ն այն կարդում է որպես կառավարման ուղու ընդհանուր գաղտնիք, ոչ որպես վկայագիր, ոչ որպես գաղտնաբառ և ոչ որպես մի բան, որը TLS գրադարանը կճանաչեր։

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

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

Մեկը ստեղծելու աջակցվող եղանակը

Ստեղծեք պարզ ստատիկ բանալին այն գործիքով, որը կօգտագործի այն, ապա հղում արեք դրան երկու ծայրերից՝

openvpn --genkey secret /etc/openvpn/tc-shared.key
tls-crypt /etc/openvpn/tc-shared.key

Ընտրանքի ուղղագրությունը փոխվել է ժամանակի ընթացքում. 2.4 դարաշրջանի ավելի հին տեղադրումները օգտագործում էին ֆայլի անունից առաջ առանձին դրոշակով ձև, մինչդեռ ընթացիկ կառուցումներն ընդունում են ավելի կարճը։ Ամեն դեպքում արդյունք ֆայլը նույն տեսակի օբյեկտն է, ուստի ստուգումն այն է, թե արդյոք երկու զույգերն էլ ունեն նույնական բայթեր։

Երկրորդ սերունդը ավելացնում է կառուցվածք, որը ոչ մի արտաքին գեներատոր չի կարող հորինել։ Սերվերի բանալին ստեղծվում է մեկ անգամ, և յուրաքանչյուր հաճախորդ ստանում է դրանից ածանցված փաթաթված բանալի՝

openvpn --genkey tls-crypt-v2-server /etc/openvpn/tc-v2-server.key
openvpn --genkey tls-crypt-v2-client /etc/openvpn/laptop1.key --tls-crypt-v2 /etc/openvpn/tc-v2-server.key

Այն, ինչ հաճախորդը ստանում է, սերվերի սեփական բանալու պատճենը չէ։ Դա փաթաթված օբյեկտ է, որը կրում է մետատվյալներ, որոնք միայն սերվերը կարող է բացել, և հենց այդ փաթաթումն է պատճառը, որ մեկ սարքի ֆայլը կարելի է չեղարկել առանց որևէ այլ սարքի դիպչելու։ Պահեք սերվերի բանալին սերվերի վրա և վերաբերվեք դրան որպես այդ սարքային վստահության արմատ։

Որտեղ են կոտրվում ձեռքով պատրաստված բայթերը

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

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

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

Պտտում առանց բոլորին դուրս փակելու

Մեկ ընդհանուր գաղտնիքի պտտումը համակարգման վարժություն է, ոչ թե տեխնիկական։ Յուրաքանչյուր հաճախորդ պետք է ձեռքի տակ ունենա փոխարինող ֆայլը մինչև սերվերը հետ կվերցնի նախորդը, և ցանկացած մեքենա, որը դեռ պահում է հին արժեքը, ձախողվում է այն պահին, երբ դա տեղի է ունենում։ Մի սկսեք այդ պտտումը աշխատանքային օրվա կեսին։

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

Ֆայլի թույլտվությունները նույն զրույցի մասն են։ Բանալին պետք է ընթեռնելի լինի միայն ծառայությունը վարող հաշվի համար, և այն չպետք է ապրի նույն պահոցում, ինչ պաշտպանվող պրոֆիլները։ OpenVPN 2.6-ի տեղեկատուն փաստաթղթավորում է ստեղծման ձևերն ու բանալու նյութի բաժինները, ինչը ավելի լավ աղբյուր է, քան ֆորումի գրառումից պատճենված հրահանգը։

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