WireGuard VPN-ի հեղինակ Ջեյսոն Ա. Դոնենֆելդը թողարկել է Windows 1.0-ի համար նախատեսված WireGuard հաճախորդային ծրագրաշարի առաջին խոշոր թողարկումը, ինչպես նաև WireGuardNT 1.0 դրայվերները՝ պորտով։ VPN WireGuard Windows 10 և 11 միջուկի համար, որը աջակցում է AMD64, x86 և ARM64 ճարտարապետությունները: Windows միջուկի բաղադրիչի կոդը լիցենզավորված է GPLv2 լիցենզիայով, իսկ հաճախորդի ծրագրակազմը՝ MIT լիցենզիայով:
Պորտը հիմնված է Linux միջուկի համար նախատեսված հիմնական WireGuard իրականացման կոդային բազայի վրա, որը փոխակերպվել է Windows միջուկի էնթիթների և NDIS ցանցային կույտի օգտագործման համար: Համեմատած wireguard-go իրականացման հետ, որը գործում է օգտատիրոջ տարածքում և օգտագործում է Wintun ցանցային ինտերֆեյսը, WireGuardNT-ն առաջարկում է զգալի կատարողականի բարելավումներ՝ վերացնելով համատեքստային անջատիչները և պատճենելով փաթեթի պարունակությունը միջուկից օգտատիրոջ տարածք: Linux-ի, OpenBSD-ի և FreeBSD-ի իրականացումների նման, WireGuardNT-ում արձանագրությունների մշակման ողջ տրամաբանությունը գործում է անմիջապես ցանցային կույտի մակարդակում:
1.0 տարբերակը նշվեց որպես կարևորագույն նվաճում՝ նշելով մի շարք խնդիրների լուծումը և նախատեսված առաջադրանքների կատարումը, ինչպիսիք են՝ NdisWdfGetAdapterContextFromAdapterHandle() ֆունկցիայի օգտագործումը՝ դրայվերի վիճակի պակաս անվտանգ պահպանման փոխարեն Reserved դաշտում և չփաստաթղթավորված շեղումների օգտագործումը, MTU (Maximum Transmission Unit) չափի ճիշտ և արագ հետևումը համակարգային զանգերի խափանման միջոցով, C23 ստանդարտի օգտագործումը կոդում։
Հիշեցնենք, որ VPN WireGuard-ն իրականացվում է գաղտնագրման ժամանակակից մեթոդների հիման վրա, ապահովում է շատ բարձր կատարողականություն, հեշտ է օգտագործել, զերծ է բարդություններից և իրեն լավ է դրսևորել մեծ թվով տրաֆիկ մշակող մի շարք խոշոր իրականացումներում: Նախագիծը զարգանում է 2015 թվականից և անցել է աուդիտ և կիրառվող գաղտնագրման մեթոդների պաշտոնական ստուգում: WireGuard-ն օգտագործում է բանալիների վրա հիմնված գաղտնագրման երթուղղման հայեցակարգը, որը ներառում է մասնավոր բանալի կապակցում յուրաքանչյուր ցանցային ինտերֆեյսի հետ և օգտագործում հանրային բանալիներ կապելու համար:
Հանրային բանալիների փոխանակումը կապ հաստատելու համար նման է SSH-ին: Բանալիների շուրջ բանակցելու և օգտատիրոջ տարածքում առանձին դեմոն գործարկելու առանց կապվելու համար օգտագործվում է Noise Protocol Framework-ի Noise_IK մեխանիզմը, նման SSH-ում authorized_keys-ների պահպանմանը: Տվյալների փոխանցումը կատարվում է UDP փաթեթներում ինկապսուլյացիայի միջոցով: Փոփոխությունը աջակցվում է: IP հասցեներ VPN սերվերներ (ռոումինգ) առանց կապի ընդհատման՝ հաճախորդի ավտոմատ վերակազմակերպմամբ։
Գաղտնագրումն օգտագործում է ChaCha20 հոսքի ծածկագիրը և Poly1305 հաղորդագրությունների նույնականացման ալգորիթմը (MAC), որը մշակվել է Դանիել Ջ. Բերնշտեյնի, Տանյա Լանգի և Պիտեր Շվաբեի կողմից: ChaCha20-ը և Poly1305-ը տեղակայված են որպես AES-256-CTR-ի և HMAC-ի ավելի արագ և անվտանգ անալոգներ, որոնց ծրագրային ներդրումը թույլ է տալիս հասնել ֆիքսված կատարման ժամանակ՝ առանց հատուկ ապարատային աջակցության օգտագործման: Համատեղ գաղտնի բանալին ստեղծելու համար Elliptic Curve Diffie-Hellman արձանագրությունն օգտագործվում է Curve25519 իրականացման մեջ, որը նույնպես առաջարկվել է Դանիել Բերնշտեյնի կողմից: Հեշինգի համար օգտագործվում է BLAKE2s (RFC7693) ալգորիթմը:
Source: opennet.ru
